LyoKICogZGRyLmMKICoKICogQ29weXJpZ2h0KGMpIDIwMTYgWlhJQyBJbmMuICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICovCiAKI2luY2x1ZGUgPGNvbW1vbi5oPgojaW5jbHVkZSA8YXNtL2lvLmg+CiNpbmNsdWRlIDxib2FyZC5oPgojaW5jbHVkZSA8ZGRyLmg+CiNpbmNsdWRlIDxhc20vYXJjaC90b3BfY2xvY2suaD4KCiNkZWZpbmUgX0REUl9CWVBBU1NfTU9ERQkxCS8vMS8vMTogMzEybTsgMDo0MDBtCiNpZiAhX0REUl9CWVBBU1NfTU9ERQojZGVmaW5lIF9ERFJfRFNfNDhvbQojZW5kaWYKCiNkZWZpbmUgX0REUjMyTV9CWVBBU1NfTU9ERQkwCS8vMS8vMTogMzEybTsgMDo0MDBtCiNpZiAhX0REUjMyTV9CWVBBU1NfTU9ERQovLyNkZWZpbmUgX0REUjMyTV9EU180OG9tICAgLy8tNDBkdSA0OG9obSBoYXMgcHJvYmxlbSxtb2RpZnkgdG8gNjBvaG0KI2VuZGlmCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBSb3V0aW5lOiBuc2RlbGF5CiAqIERlc2NyaXB0aW9uOiBDb25maWd1cmUgRERSCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnZvaWQgbnNkZWxheSh2b2xhdGlsZSBpbnQgY291bnQpCnsKICAgIHZvbGF0aWxlIGludCBjbnQgPSAwOwoKCXdoaWxlKGNudDxjb3VudCkKCXsKCQljbnQrKzsKCX0KCXJldHVybjsKfQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBSb3V0aW5lOiBkZHJfaW5pdAogKiBEZXNjcmlwdGlvbjogQ29uZmlndXJlIEREUgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNpZmRlZiBERFJfRkZDCnN0YXRpYyBVSU5UMzIgZ19QaHlSZWdbRERSX0NMS0VORF1bNF09ezB9Oy8vZ19QaHlSZWdbTl1bMF1+UEhZX1BIWVJFR05bTl1bM1231rHwtOa0olBIWVJFR0ZCfkZFCgp2b2lkIHBvd19EZHJDbGtDb25maWcoVF96RHJ2UG93X0REUkNMSyBjbG9ja192YWx1ZSkKewoJVUlOVDMyICByZGF0YTsKCQoJaWYoY2xvY2tfdmFsdWU+PUREUl9DTEtFTkQpCgkJcmV0dXJuOwoKCXJkYXRhID0gX19SRUcoTU9EX0NMS19TRUwpJjB4ZmZmZmZmZmM7CiAgICBzd2l0Y2ggKGNsb2NrX3ZhbHVlKQogICAgewogICAgICAgLy9ERFIgdG9wIGNsb2NrIHNlbGVjdCwgYml0MC0xLCAwPTE1NiwgMT0yMDAsIDI9MTA0LCAzPTc4CgljYXNlIEREUl8xNTZNOgoJewoJCV9fUkVHKE1PRF9DTEtfU0VMKSA9IHJkYXRhfDM7CgkJYnJlYWs7CiAgICAgICAgfQogICAgICAgIGNhc2UgRERSXzIwOE06CiAgICAgICAgewoJCV9fUkVHKE1PRF9DTEtfU0VMKSA9IHJkYXRhfDI7CgkJYnJlYWs7CiAgICAgICAgfQoJIGNhc2UgRERSXzMxMk06CiAgICAgICAgewoJCV9fUkVHKE1PRF9DTEtfU0VMKSA9IHJkYXRhfDA7CgkJYnJlYWs7CiAgICAgICAgfQoJIGNhc2UgRERSXzQwME06CiAgICAgICAgewoJCV9fUkVHKE1PRF9DTEtfU0VMKSA9IHJkYXRhfDE7CgkJYnJlYWs7CiAgICAgICAgfQogICAgICAgIGRlZmF1bHQ6CgkJCWJyZWFrOwogICAgfQoKfQoKdm9pZCBwb3dfRGRyRnJlcURpdkZhY3RvckNvbmZpZyhUX3pEcnZQb3dfRERSQ0xLIGNsb2NrX3ZhbHVlKQp7CiAgIGlmKGNsb2NrX3ZhbHVlPj1ERFJfQ0xLRU5EKQoJcmV0dXJuOwoKICAgLy9wb3dfRGRyUGxsUG93ZXJkb3duKCk7CgogICBfX1JFRyhERFJfUEhZX0JBU0UrMHgzYjApID0wOwogICBfX1JFRyhERFJfUEhZX0JBU0UrMHgzYjQpICY9IH4weDE7Ly9mYmRpdls4XT0wCiAgIF9fUkVHKEREUl9QSFlfQkFTRSsweDNiOCkgPTA7CgogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgIAkgRmNsazR4ID0gRnJlZiChwSBOIKHCIE0gocIgUAoJIDB4MDEzMDQzYjA6Yml0N34wLS1mYmRpdls3OjBdCgkgMHgwMTMwNDNiNDpiaXQ0LS1QTEwgY2xvY2sgb3V0IGVuYWJsZSwKCQkJCWJpdDEtLVBMTCBwb3dlciBkb3duIGVuYWJsZQoJCQkJYml0MC0tZmJkaXZbOF0KICAgICAgICAweDAxMzA0M2I4OmJpdDd+NS0tcG9zdGRpdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0NH4wLS1wcmVkaXYgCiAgICAgICAgTj1mYmRpdls4OjBdCiAgIAkgTT1wcmVkaXZbNDowXQogICAJIFA9Ml5wb3N0ZGl2WzI6MF07CiAgIAkgCiAgICAgICAgIGZyZWYgICAgICAgICAgICAgICAgICAgICAgICAgIE4gICAgICAgICBNICAgICAgICAgUAogICAgICAgICAxMH4yMG0gICAgICAgICAgICAgICAgICAgNjQgICAgICAgIDEgICAgICAgICAxNgogICAgICAgICAyMX41ME0gICAgICAgICAgICAgICAgICAgIDMyICAgICAgICAxICAgICAgICAgOAogICAgICAgICA1MX4xMDBNICAgICAgICAgICAgICAgICAgMzIgICAgICAgIDIgICAgICAgICA0CiAgICAgICAgIDEwMX4yMDBNICAgICAgICAgICAgICAgIDE2ICAgICAgICAgMiAgICAgICAgIDIKICAgICAgICAgMjAxfjQwME0gICAgICAgICAgICAgICAgMTYgICAgICAgICA0ICAgICAgICAgMSAKICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglzd2l0Y2ggKGNsb2NrX3ZhbHVlKQoJewoJCWNhc2UgRERSXzE1Nk06Ly9GcmVmPTc4bQoJCXsKCQkJX19SRUcoRERSX1BIWV9CQVNFKzB4M2IwKSA9MzIgOy8vTj1mYmRpdls3OjBdPTMyCgkJCV9fUkVHKEREUl9QSFlfQkFTRSsweDNiOCkgPSgyPDw1KXwoMjw8MCkgOy8vcG9zdGRpdj0yOyBNPXByZWRpdj0yCQoJCQlicmVhazsKCQl9CgkJY2FzZSBERFJfMjA4TTovLy8vRnJlZj0xMDRtCgkJewoJCQlfX1JFRyhERFJfUEhZX0JBU0UrMHgzYjApID0xNiA7Ly9OPWZiZGl2Wzc6MF09MTYKCQkJX19SRUcoRERSX1BIWV9CQVNFKzB4M2I4KSA9KDE8PDUpfCgyPDwwKSA7Ly9wb3N0ZGl2PTE7IE09cHJlZGl2PTIJCgkJCWJyZWFrOwoJCX0KCQljYXNlIEREUl8zMTJNOi8vRnJlZj0xNTZtCgkJewoJCQlfX1JFRyhERFJfUEhZX0JBU0UrMHgzYjApID0xNiA7Ly9OPWZiZGl2Wzc6MF09MTYKCQkJX19SRUcoRERSX1BIWV9CQVNFKzB4M2I4KSA9KDE8PDUpfCgyPDwwKSA7Ly9wb3N0ZGl2PTE7IE09cHJlZGl2PTIJCQkJCgkJCWJyZWFrOwoJCX0KCQljYXNlIEREUl80MDBNOi8vRnJlZj0yMDBtCgkJewoJCQlfX1JFRyhERFJfUEhZX0JBU0UrMHgzYjApID0xNiA7Ly9OPWZiZGl2Wzc6MF09MTYKCQkJX19SRUcoRERSX1BIWV9CQVNFKzB4M2I4KSA9KDE8PDUpfCgyPDwwKSA7Ly9wb3N0ZGl2PTA7IE09cHJlZGl2PTQJCQkJCgkJCWJyZWFrOwoJCX0KCQlkZWZhdWx0OgoJCQlicmVhazsKCX0KCgkvL3Bvd19EZHJQbGxQb3dlcm9uKCk7Cgp9CgoKdm9pZCBwb3dfRGRyUGxsRGxsTG9jayh2b2lkKQp7CgoJLy/KucTcwcsweDAwMTQ2MDAwKzB4NGMqNLXEYml0N6Os1PK9+MjtvP7X1Mui0MK683BsbLvhcG93ZXJkb3duo6xsb2Nr0MW6xcO709DBywoJLy/Ny7P219TLotDCuvPTsrz+u+HX1LavtKW3onBsbCBsb2Nro6zI7bz+1rvQ6NKqtchsb2Nr0MW6xQogICAgLy93YWl0IHBoeSBwbGwgbG9jawogICAgd2hpbGUoKF9fUkVHKEREUl9QSFlfQkFTRSArIDB4M2UwKSYweDEpIT0weDEpOwogICAgLy9zdGFydCAgZGxsIGluaXQgLM/CvbXR2LSlt6IKICAgCV9fUkVHKEREUl9QSFlfQkFTRSArIDB4MTdjKSAgPSAweDJhOyAKCV9fUkVHKEREUl9QSFlfQkFTRSArIDB4MTdjKSAgPSAweGE7Cgluc2RlbGF5KDIpOwoJLy93YWl0IHBoeSBkbGwgbG9jayxwaHkgaW5pdCBkb25lLAoJd2hpbGUoKF9fUkVHKEREUl9QSFlfQkFTRSArIDB4M2UwKSYweDMpIT0weDMpOwp9Cgp2b2lkIHBvd19EZHJUcmFpbmluZyhUX3pEcnZQb3dfRERSQ0xLIGNsb2NrX3ZhbHVlKQp7CQoJLy9waHkgRFFTIGdhdGUgdHJhaW5pbmcgc3RhcnQKCV9fUkVHKEREUl9QSFlfQkFTRSsweDAyKjQpPTB4MTs7Cgluc2RlbGF5KDEpOwoJLy/Rrbu3vOyy4nRyYWluaW5nIG92ZXIKCXdoaWxlKCAoX19SRUcoRERSX1BIWV9CQVNFKyAweGZmKjQpJjB4ZikgIT0gMHhmKTsKCQoJZ19QaHlSZWdbY2xvY2tfdmFsdWVdWzBdPV9fUkVHKEREUl9QSFlfQkFTRSsweGZiKjQpOwoJZ19QaHlSZWdbY2xvY2tfdmFsdWVdWzFdPV9fUkVHKEREUl9QSFlfQkFTRSsweGZjKjQpOwoJZ19QaHlSZWdbY2xvY2tfdmFsdWVdWzJdPV9fUkVHKEREUl9QSFlfQkFTRSsweGZkKjQpOwkKCWdfUGh5UmVnW2Nsb2NrX3ZhbHVlXVszXT1fX1JFRyhERFJfUEhZX0JBU0UrMHhmZSo0KTsKCQkKCS8vcGh5IERRUyBnYXRlIHRyYWluaW5nIHN0b3AKCV9fUkVHKEREUl9QSFlfQkFTRSsweDAyKjQpPTB4MDsKfQoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogRnVuY3Rpb246cG93X0RkckNoYW5nZUNsawoqIERlc2NyaXB0aW9uOgoqIFBhcmFtZXRlcnM6CiogICBJbnB1dDoKKgoqICAgT3V0cHV0OgoqCiogUmV0dXJuczoKKgoqCiogT3RoZXJzOgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8Kdm9pZCAgcG93X0RkckNoYW5nZUNsayhUX3pEcnZQb3dfRERSQ0xLIGNsb2NrX3ZhbHVlKQp7CgoJLyogUFdSQ1RMWzVdLnNlbGZyZWZfc3c9MSwgyrm/2NbGxve9+MjryO28/tfUy6LQwsSjyr0qLwoJX19SRUcoQ1JUTF9QV1JDVEwpIHw9ICgxPDxTRUxGUkVGX1NXKTsgICAKCgkvKtGtu7e87LLi1rG1vVNUQVRbMjowXT09MydiMDExx9JTVEFUWzU6NF09PTInYjEwo6xERFK0ptPayO28/tfUy6LQwte0zKwqLwoJd2hpbGUoIChfX1JFRyhDVFJMX1NUQVQpICYgMHgzNyApICE9MHgyMyk7IAkKCQoJLy/F5NbDz7XNs0NSTb340NDKsdbTx9C7uwoJcG93X0RkckNsa0NvbmZpZyhjbG9ja192YWx1ZSk7CgoJLy+4+b7dxrXCysXk1sNQSFkgUExMxL+x6sa1teO1xLfWxrXPtcr9Cglwb3dfRGRyRnJlcURpdkZhY3RvckNvbmZpZyhjbG9ja192YWx1ZSk7CgoJCgkvL9a7udjKsdbTL8fQxrWyu7bPteejrL34yOvI7bz+19TLotDCo6xwaHm9+Mnuy6/D36OscGxsu+G52LHVo6wKCS8vzcuz9sqxu+HX1LavtPK/qsbavOSyu9PDttRwbGy9+NDQv6q52CzSqrXIcGxsL2RsbCBsb2NrLAoJcG93X0RkclBsbERsbExvY2soKTsKCQoJLy/Jz7Xns/XKvLuvvfjQ0MfQxrV0cmFpbmluZ9G1wbfKsaOsCgkvL9TyxeTWw7zEtObG91BIWVJFRzAyWzBdPTGjrOKnt6JkcXMgZ2F0ZSB0cmFpbmluZ6GjCgkvL8i7uvPRrbu3tsHIoVBIWVJFR0ZGo6zWsbW9Yml0WzM6MF3OqjB4ZqOsdHJhaW5pbme5/bPMzeqzyaOsCgkvL7zHwry8xLTmxvdQSFlSRUdGQn5GRbXE1rUKCQoJLyogUFdSQ1RMWzVdLnNlbGZyZWZfc3c9MCwgyrm/2NbGxvfNy7P2yO28/tfUy6LQwsSjyr0qLwogICAgX19SRUcoQ1JUTF9QV1JDVEwpICY9IH4oMTw8U0VMRlJFRl9TVyk7IAoKCS8qICDRrbu3vOyy4taxtb1TVEFUWzI6MF09PTMnYjAwMcfSU1RBVFs1OjRdPT0yJ2IwMKOsRERSzcuz9sjtvP7X1Mui0MKjrLSm09pub3JtYWzXtMysKi8KICAgIHdoaWxlKCAoX19SRUcoQ1RSTF9TVEFUKSAmIDB4MzcgKSAhPTB4MSk7IAoJLyp0cmFuaW5nKi8KCXBvd19EZHJUcmFpbmluZyhjbG9ja192YWx1ZSk7CgkKCn0KCgp2b2lkIHNhdmVfZGRyX3RyYWluaW5nKFVJTlQzMiBjb3VudCwgVF96RHJ2UG93X0REUkNMSyBjbG9ja192YWx1ZSkKewoJX19SRUcoRERSX0ZGQ19BRERSX0JBU0UrMHg3MCpjb3VudCsweDU0KSA9IGdfUGh5UmVnW2Nsb2NrX3ZhbHVlXVswXTsKCV9fUkVHKEREUl9GRkNfQUREUl9CQVNFKzB4NzAqY291bnQrMHg1OCkgPSBnX1BoeVJlZ1tjbG9ja192YWx1ZV1bMV07CglfX1JFRyhERFJfRkZDX0FERFJfQkFTRSsweDcwKmNvdW50KzB4NWMpID0gZ19QaHlSZWdbY2xvY2tfdmFsdWVdWzJdOwoJX19SRUcoRERSX0ZGQ19BRERSX0JBU0UrMHg3MCpjb3VudCsweDYwKSA9IGdfUGh5UmVnW2Nsb2NrX3ZhbHVlXVszXTsKCn0KCnZvaWQgZGRyX2ZmY19pbml0KHZvaWQpCnsKCVVJTlQzMiBjb3VudDsKCV9fUkVHKFNURF9DUk1fUkVHX0JBU0UgKyAweDEwMCkgfD0gKDB4ZiA8PCAyNCk7IC8vcmVsZWFzZSBkZHIgZmZjIHdvcmsgYW5kIGFwYgoJZm9yKGNvdW50ID0gMDsgY291bnQgPD0gMzsgY291bnQrKykKCXsgICAgICAgCgkgICAgcG93X0RkckNoYW5nZUNsayhjb3VudCk7CgkJc2F2ZV9kZHJfdHJhaW5pbmcoY291bnQsY291bnQpOwoJfQogICAgcG93X0RkckNoYW5nZUNsayhERFJfMzEyTSk7Cn0KI2VuZGlmCgojZGVmaW5lIEFCU2FfYihhLGIpICAgICgoKGEpID4gKGIpKSA/IChhLWIpIDogKGItYSkpCgppbnQgZGRyX2Nsa19pbml0KGludCBmbGFnKQp7CgkvL0REUiB0b3AgY2xvY2sgc2VsZWN0IHRvcCBjbGsgMTU2TSwgYml0MC0xLCAwPTE1NiwgMT0yMDAsIDI9MTA0LCAzPTc4CgkvLyAwOiB0b3AgY2xrPTE1Nk0sICAgICAgZGRyIHVzZSBtaXNzaW9uIG1vZGUgLCBkcmFtIGlvIGNsaz0zMTJNCgkvLyAxOiB0b3AgY2xrPTIwME0sICAgICBkZHIgdXNlIG1pc3Npb24gbW9kZSAsIGRyYW0gaW8gY2xrPTQwME0KCS8vIDI6IHRvcCBjbGs9MTA0TSwgICAgIGRkciB1c2UgbWlzc2lvbiBtb2RlICwgZHJhbSBpbyBjbGs9MjA4TQoJLy8gMzogdG9wIGNsaz03OE0sICAgICBkZHIgdXNlIG1pc3Npb24gbW9kZSAsIGRyYW0gaW8gY2xrPTE1Nk0KCWlmKGZsYWcgPT0gQ0hJUF9ERFJfSVNfMzJNKQoJewoJCSNpZiBfRERSMzJNX0JZUEFTU19NT0RFCgkJX19SRUcoIDB4MDEzMDYwNTAgKSA9IDB4MDAwMDAwMDAgIDsgLy+31sa1yejWw6OsttTTptDo0qrQ3rjEwvAKCQkjZWxzZQoJCV9fUkVHKCAweDAxMzA2MDUwICkgPSAweDAwMDAwMDAxICA7IC8vt9bGtcno1sOjrLbU06bQ6NKq0N64xMLwCQoJCSNlbmRpZgoJfQoJZWxzZQoJewoJCSNpZiBfRERSX0JZUEFTU19NT0RFCgkJX19SRUcoIDB4MDEzMDYwNTAgKSA9IDB4MDAwMDAwMDAgIDsgLy+31sa1yejWw6OsttTTptDo0qrQ3rjEwvAKCQkjZWxzZQoJCV9fUkVHKCAweDAxMzA2MDUwICkgPSAweDAwMDAwMDAxICA7IC8vt9bGtcno1sOjrLbU06bQ6NKq0N64xMLwCQoJCSNlbmRpZgoJfQoJCiAgICByZXR1cm4gMDsKCQp9CgppbnQgZGRyX3BoeV9pbml0KGludCBmbGFnKQp7CglpZihmbGFnID09IENISVBfRERSX0lTXzMyTSkKCXsKCQlfX1JFRyggMHgwMDE1NDAwMCApID0gMHgwMDAwMDAzZiAgOyAvL1ZBTFVFX1BIWVJFRzAwICAgIDB4MDAwMDAwM2YoMTZiaXQgZGRyKQlkZWZhdWx0OiAweDAwMDAwMGZmKDMyYml0IGRkcikKCX0KCQoJX19SRUcoIDB4MDAxNTQwMDQgKSA9IDB4MDAwMDAwMDcgIDsgLy9WQUxVRV9QSFlSRUcwMSAgIC8gUmVzZXJ2ZWQ6Ulc6Mjo2Oj0weDEsIFBIWV9NT0RFOlJXOjA6Mjo9MHgyKExQRERSMjoweDMsTFBERFIzOjB4MikKCV9fUkVHKCAweDAwMTU0MDJjICkgPSAweDAwMDAwMDgwICA7IC8vVkFMVUVfUEhZUkVHMEIgICAvIFJMOlJXOjQ6NDo9MHg4CglfX1JFRyggMHgwMDE1NDAzMCApID0gMHgwMDAwMDAwNCAgOyAvL1ZBTFVFX1BIWVJFRzBDICAgLyBXTDpSVzowOjQ6PTB4NAoKCV9fUkVHKCAweDAwMTU0M2IwICkgPSAweDAwMDAwMDEwICA7IC8vVkFMVUVfUEhZUkVHRUMgICAvIGZiZGl2Wzc6MF09MHgxMAoJX19SRUcoIDB4MDAxNTQzYjQgKSA9IDB4MDAwMDAwMWEgIDsgLy9WQUxVRV9QSFlSRUdFRCAgIC8gUExMQ0xLT1VURU46Ulc6NDoxOj0weDEsUmVzZXJ2ZWQ6Ulc6MjoyOj0weDIsIHBsbHBkOlJXOjE6MTo9MHgxLCBmYmRpdls4XTpSVzowOjE6PTB4MAoJX19SRUcoIDB4MDAxNTQzYjggKSA9IDB4MDAwMDAwMjIgIDsgLy9WQUxVRV9QSFlSRUdFRSAgIC8gcHJlZGl2WzQ6MF06Ulc6MDo1Oj0weDIscG9zdGRpdlsyOjBdOlJXOjU6Mzo9MHgxCgkKCWlmKGZsYWcgPT0gQ0hJUF9ERFJfSVNfMzJNKQoJewoJCSNpZm5kZWYgX0REUjMyTV9EU180OG9tIC8vNjBvaG0KCQlfX1JFRyggMHgwMDE1NDA0NCApPSAweDAwMDAwMDA4OyAgLy9WQUxVRV9QSFlSRUcxMSAgIC8gQ01EIGRyaXZlIHN0cmVuZ3RoOiBjbWRfbnJjb21wWzQ6MF06Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MDU4ICk9IDB4MDAwMDAwMDg7ICAvL1ZBTFVFX1BIWVJFRzE2ICAgLyBDSyAgZHJpdmUgc3RyZW5ndGg6IGNrX25yY29tcCBbNDowXTpSVzowOjU6PTB4YQoJCV9fUkVHKDB4MDAxNTQwNjQgKT0gMHgwMDAwMDAwODsgIC8vVkFMVUVfUEhZUkVHMTkgICAvIENLICBwdWxsX3VwICAgZHJpdmUgc3RyZW5ndGgoRFMpOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDA2OCApPSAweDAwMDAwMDA4OyAgLy9WQUxVRV9QSFlSRUcxQSAgIC8gQ01EIHB1bGxfdXAgICBkcml2ZSBzdHJlbmd0aChEUyk6Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MDgwICk9IDB4MDAwMDAwMDg7ICAvL1ZBTFVFX1BIWVJFRzIwICAgLyBBX0RRMH5BX0RRNyBwdWxsX2Rvd24gRFMgOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDA4NCApPSAweDAwMDAwMDA0OyAgLy9WQUxVRV9QSFlSRUcyMSAgIC8gQV9EUTB+QV9EUTcgcHVsbF9kb3duIE9EVDpSVzowOjU6PTB4YQoJCV9fUkVHKDB4MDAxNTQwYjggKT0gMHgwMDAwMDA4ODsgIC8vVkFMVUVfUEhZUkVHMkUgICAvIEFfRFEwfkFfRFE3IHB1bGxfdXAgICBEUyA6Ulc6MDo1Oj0weGEsIGZhbGxpbmcgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRygweDAwMTU0MGJjICk9IDB4MDAwMDAwODQ7ICAvL1ZBTFVFX1BIWVJFRzJGICAgLyBBX0RRMH5BX0RRNyBwdWxsX3VwICAgT0RUOlJXOjA6NTo9MHhhLCByaXNpbmcgIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoMHgwMDE1NDBjMCApPSAweDAwMDAwMDg4OyAgLy9WQUxVRV9QSFlSRUczMCAgIC8gQV9EUTh+QV9EUTE1IHB1bGxfZG93biBEUyA6Ulc6MDo1Oj0weGEsIGZhbGxpbmcgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRygweDAwMTU0MGM0ICk9IDB4MDAwMDAwODQ7ICAvL1ZBTFVFX1BIWVJFRzMxICAgLyBBX0RROH5BX0RRMTUgcHVsbF9kb3duIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKDB4MDAxNTQwZjggKT0gMHgwMDAwMDAwODsgIC8vVkFMVUVfUEhZUkVHM0UgICAvIEFfRFE4fkFfRFExNSBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDBmYyApPSAweDAwMDAwMDA0OyAgLy9WQUxVRV9QSFlSRUczRiAgIC8gQV9EUTh+QV9EUTE1IHB1bGxfdXAgICBPRFQ6Ulc6MDo1Oj0weGEKCgkJX19SRUcoMHgwMDE1NDEwMCApPSAweDAwMDAwMDA4OyAgLy9WQUxVRV9QSFlSRUc0MCAgIC8gQl9EUTB+Ql9EUTcgcHVsbF9kb3duIERTIDpSVzowOjU6PTB4YQoJCV9fUkVHKDB4MDAxNTQxMDQgKT0gMHgwMDAwMDAwNDsgIC8vVkFMVUVfUEhZUkVHNDEgICAvIEJfRFEwfkJfRFE3IHB1bGxfZG93biBPRFQ6Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MTM4ICk9IDB4MDAwMDAwODg7ICAvL1ZBTFVFX1BIWVJFRzRFICAgLyBCX0RRMH5CX0RRNyBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhLCBmYWxsaW5nIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoMHgwMDE1NDEzYyApPSAweDAwMDAwMDg0OyAgLy9WQUxVRV9QSFlSRUc0RiAgIC8gQl9EUTB+Ql9EUTcgcHVsbF91cCAgIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoKCQlfX1JFRygweDAwMTU0MTQwICk9IDB4MDAwMDAwODg7ICAvL1ZBTFVFX1BIWVJFRzUwICAgLyBCX0RROH5CX0RRMTUgcHVsbF9kb3duIERTIDpSVzowOjU6PTB4YSwgZmFsbGluZyBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKDB4MDAxNTQxNDQgKT0gMHgwMDAwMDA4NDsgIC8vVkFMVUVfUEhZUkVHNTEgICAvIEJfRFE4fkJfRFExNSBwdWxsX2Rvd24gT0RUOlJXOjA6NTo9MHhhLCByaXNpbmcgIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoMHgwMDE1NDE3OCApPSAweDAwMDAwMDA4OyAgLy9WQUxVRV9QSFlSRUc1RSAgIC8gQl9EUTh+Ql9EUTE1IHB1bGxfdXAgICBEUyA6Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MTdjICk9IDB4MDAwMDAwMjQ7ICAvL1ZBTFVFX1BIWVJFRzVGICAgLyBCX0RROH5CX0RRMTUgcHVsbF91cCAgIE9EVDpSVzowOjU6PTB4YSAgCQoJCSNlbHNlIC8vNDhvbSAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJLy9Ecml2ZSBzdHJlbmd0aChkZWZ1YWx0KSBPRFQgtcjQpzQ4b20gICAgIAoJCV9fUkVHKCAweDAwMTU0MDQ0ICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHMTEgICAvIENNRCBkcml2ZSBzdHJlbmd0aDogY21kX3ByY29tcFszOjBdOlJXOjQ6NDo9MHhhLGNtZF9ucmNvbXBbMzowXTpSVzowOjQ6PTB4YQoJCV9fUkVHKCAweDAwMTU0MDU4ICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHMTYgICAvIENLICBkcml2ZSBzdHJlbmd0aDogY2tfcHJjb21wIFszOjBdOlJXOjQ6NDo9MHhhLGNrX25yY29tcCBbMzowXTpSVzowOjQ6PTB4YQoJCV9fUkVHKCAweDAwMTU0MDY0ICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHMTkgICAvIENLICBwdWxsX3VwICAgZHJpdmUgc3RyZW5ndGgoRFMpOlJXOjA6NTo9MHhhCgkJX19SRUcoIDB4MDAxNTQwNjggKSA9IDB4MDAwMDAwMGEgIDsgLy9WQUxVRV9QSFlSRUcxQSAgIC8gQ01EIHB1bGxfdXAgICBkcml2ZSBzdHJlbmd0aChEUyk6Ulc6MDo1Oj0weGEKCQlfX1JFRyggMHgwMDE1NDA4MCApID0gMHgwMDAwMDAwYSAgOyAvL1ZBTFVFX1BIWVJFRzIwICAgLyBBX0RRMH5BX0RRNyBwdWxsX2Rvd24gRFMgOlJXOjA6NTo9MHhhCgkJX19SRUcoIDB4MDAxNTQwODQgKSA9IDB4MDAwMDAwMDUgIDsgLy9WQUxVRV9QSFlSRUcyMSAgIC8gQV9EUTB+QV9EUTcgcHVsbF9kb3duIE9EVDpSVzowOjU6PTB4YQoJCV9fUkVHKCAweDAwMTU0MGI4ICkgPSAweDAwMDAwMDhhICA7IC8vVkFMVUVfUEhZUkVHMkUgICAvIEFfRFEwfkFfRFE3IHB1bGxfdXAgICBEUyA6Ulc6MDo1Oj0weGEsIGZhbGxpbmcgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRyggMHgwMDE1NDBiYyApID0gMHgwMDAwMDA4NSAgOyAvL1ZBTFVFX1BIWVJFRzJGICAgLyBBX0RRMH5BX0RRNyBwdWxsX3VwICAgT0RUOlJXOjA6NTo9MHhhLCByaXNpbmcgIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoIDB4MDAxNTQwYzAgKSA9IDB4MDAwMDAwOGEgIDsgLy9WQUxVRV9QSFlSRUczMCAgIC8gQV9EUTh+QV9EUTE1IHB1bGxfZG93biBEUyA6Ulc6MDo1Oj0weGEsIGZhbGxpbmcgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRyggMHgwMDE1NDBjNCApID0gMHgwMDAwMDA4NSAgOyAvL1ZBTFVFX1BIWVJFRzMxICAgLyBBX0RROH5BX0RRMTUgcHVsbF9kb3duIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKCAweDAwMTU0MGY4ICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHM0UgICAvIEFfRFE4fkFfRFExNSBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhCgkJX19SRUcoIDB4MDAxNTQwZmMgKSA9IDB4MDAwMDAwMDUgIDsgLy9WQUxVRV9QSFlSRUczRiAgIC8gQV9EUTh+QV9EUTE1IHB1bGxfdXAgICBPRFQ6Ulc6MDo1Oj0weGEKCgkJX19SRUcoIDB4MDAxNTQxMDAgKSA9IDB4MDAwMDAwMGEgIDsgLy9WQUxVRV9QSFlSRUc0MCAgIC8gQl9EUTB+Ql9EUTcgcHVsbF9kb3duIERTIDpSVzowOjU6PTB4YQoJCV9fUkVHKCAweDAwMTU0MTA0ICkgPSAweDAwMDAwMDA1ICA7IC8vVkFMVUVfUEhZUkVHNDEgICAvIEJfRFEwfkJfRFE3IHB1bGxfZG93biBPRFQ6Ulc6MDo1Oj0weGEKCQlfX1JFRyggMHgwMDE1NDEzOCApID0gMHgwMDAwMDA4YSAgOyAvL1ZBTFVFX1BIWVJFRzRFICAgLyBCX0RRMH5CX0RRNyBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhLCBmYWxsaW5nIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoIDB4MDAxNTQxM2MgKSA9IDB4MDAwMDAwODUgIDsgLy9WQUxVRV9QSFlSRUc0RiAgIC8gQl9EUTB+Ql9EUTcgcHVsbF91cCAgIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoKCQlfX1JFRyggMHgwMDE1NDE0MCApID0gMHgwMDAwMDA4YSAgOyAvL1ZBTFVFX1BIWVJFRzUwICAgLyBCX0RROH5CX0RRMTUgcHVsbF9kb3duIERTIDpSVzowOjU6PTB4YSwgZmFsbGluZyBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKCAweDAwMTU0MTQ0ICkgPSAweDAwMDAwMDg1ICA7IC8vVkFMVUVfUEhZUkVHNTEgICAvIEJfRFE4fkJfRFExNSBwdWxsX2Rvd24gT0RUOlJXOjA6NTo9MHhhLCByaXNpbmcgIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoIDB4MDAxNTQxNzggKSA9IDB4MDAwMDAwMGEgIDsgLy9WQUxVRV9QSFlSRUc1RSAgIC8gQl9EUTh+Ql9EUTE1IHB1bGxfdXAgICBEUyA6Ulc6MDo1Oj0weGEKCQlfX1JFRyggMHgwMDE1NDE3YyApID0gMHgwMDAwMDAyNSAgOyAvL1ZBTFVFX1BIWVJFRzVGICAgLyBCX0RROH5CX0RRMTUgcHVsbF91cCAgIE9EVDpSVzowOjU6PTB4YSAgCgkJI2VuZGlmCiAKCX0KCWVsc2UKCXsKCQkjaWZuZGVmIF9ERFJfRFNfNDhvbSAvLzYwb2htCgkJX19SRUcoIDB4MDAxNTQwNDQgKT0gMHgwMDAwMDAwODsgIC8vVkFMVUVfUEhZUkVHMTEgICAvIENNRCBkcml2ZSBzdHJlbmd0aDogY21kX25yY29tcFs0OjBdOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDA1OCApPSAweDAwMDAwMDA4OyAgLy9WQUxVRV9QSFlSRUcxNiAgIC8gQ0sgIGRyaXZlIHN0cmVuZ3RoOiBja19ucmNvbXAgWzQ6MF06Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MDY0ICk9IDB4MDAwMDAwMDg7ICAvL1ZBTFVFX1BIWVJFRzE5ICAgLyBDSyAgcHVsbF91cCAgIGRyaXZlIHN0cmVuZ3RoKERTKTpSVzowOjU6PTB4YQoJCV9fUkVHKDB4MDAxNTQwNjggKT0gMHgwMDAwMDAwODsgIC8vVkFMVUVfUEhZUkVHMUEgICAvIENNRCBwdWxsX3VwICAgZHJpdmUgc3RyZW5ndGgoRFMpOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDA4MCApPSAweDAwMDAwMDA4OyAgLy9WQUxVRV9QSFlSRUcyMCAgIC8gQV9EUTB+QV9EUTcgcHVsbF9kb3duIERTIDpSVzowOjU6PTB4YQoJCV9fUkVHKDB4MDAxNTQwODQgKT0gMHgwMDAwMDAwNDsgIC8vVkFMVUVfUEhZUkVHMjEgICAvIEFfRFEwfkFfRFE3IHB1bGxfZG93biBPRFQ6Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MGI4ICk9IDB4MDAwMDAwODg7ICAvL1ZBTFVFX1BIWVJFRzJFICAgLyBBX0RRMH5BX0RRNyBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhLCBmYWxsaW5nIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoMHgwMDE1NDBiYyApPSAweDAwMDAwMDg0OyAgLy9WQUxVRV9QSFlSRUcyRiAgIC8gQV9EUTB+QV9EUTcgcHVsbF91cCAgIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKDB4MDAxNTQwYzAgKT0gMHgwMDAwMDA4ODsgIC8vVkFMVUVfUEhZUkVHMzAgICAvIEFfRFE4fkFfRFExNSBwdWxsX2Rvd24gRFMgOlJXOjA6NTo9MHhhLCBmYWxsaW5nIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoMHgwMDE1NDBjNCApPSAweDAwMDAwMDg0OyAgLy9WQUxVRV9QSFlSRUczMSAgIC8gQV9EUTh+QV9EUTE1IHB1bGxfZG93biBPRFQ6Ulc6MDo1Oj0weGEsIHJpc2luZyAgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRygweDAwMTU0MGY4ICk9IDB4MDAwMDAwMDg7ICAvL1ZBTFVFX1BIWVJFRzNFICAgLyBBX0RROH5BX0RRMTUgcHVsbF91cCAgIERTIDpSVzowOjU6PTB4YQoJCV9fUkVHKDB4MDAxNTQwZmMgKT0gMHgwMDAwMDAwNDsgIC8vVkFMVUVfUEhZUkVHM0YgICAvIEFfRFE4fkFfRFExNSBwdWxsX3VwICAgT0RUOlJXOjA6NTo9MHhhCgoJCV9fUkVHKDB4MDAxNTQxMDAgKT0gMHgwMDAwMDAwODsgIC8vVkFMVUVfUEhZUkVHNDAgICAvIEJfRFEwfkJfRFE3IHB1bGxfZG93biBEUyA6Ulc6MDo1Oj0weGEKCQlfX1JFRygweDAwMTU0MTA0ICk9IDB4MDAwMDAwMDQ7ICAvL1ZBTFVFX1BIWVJFRzQxICAgLyBCX0RRMH5CX0RRNyBwdWxsX2Rvd24gT0RUOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDEzOCApPSAweDAwMDAwMDg4OyAgLy9WQUxVRV9QSFlSRUc0RSAgIC8gQl9EUTB+Ql9EUTcgcHVsbF91cCAgIERTIDpSVzowOjU6PTB4YSwgZmFsbGluZyBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKDB4MDAxNTQxM2MgKT0gMHgwMDAwMDA4NDsgIC8vVkFMVUVfUEhZUkVHNEYgICAvIEJfRFEwfkJfRFE3IHB1bGxfdXAgICBPRFQ6Ulc6MDo1Oj0weGEsIHJpc2luZyAgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCgkJX19SRUcoMHgwMDE1NDE0MCApPSAweDAwMDAwMDg4OyAgLy9WQUxVRV9QSFlSRUc1MCAgIC8gQl9EUTh+Ql9EUTE1IHB1bGxfZG93biBEUyA6Ulc6MDo1Oj0weGEsIGZhbGxpbmcgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRygweDAwMTU0MTQ0ICk9IDB4MDAwMDAwODQ7ICAvL1ZBTFVFX1BIWVJFRzUxICAgLyBCX0RROH5CX0RRMTUgcHVsbF9kb3duIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKDB4MDAxNTQxNzggKT0gMHgwMDAwMDAwODsgIC8vVkFMVUVfUEhZUkVHNUUgICAvIEJfRFE4fkJfRFExNSBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhCgkJX19SRUcoMHgwMDE1NDE3YyApPSAweDAwMDAwMDI0OyAgLy9WQUxVRV9QSFlSRUc1RiAgIC8gQl9EUTh+Ql9EUTE1IHB1bGxfdXAgICBPRFQ6Ulc6MDo1Oj0weGEgIAkKCQkjZWxzZSAvLzQ4b20gICAgICAgICAgICAgICAgICAgICAgICAgIAoJCS8vRHJpdmUgc3RyZW5ndGgoZGVmdWFsdCkgT0RUILXI0Kc0OG9tICAgICAKCQlfX1JFRyggMHgwMDE1NDA0NCApID0gMHgwMDAwMDAwYSAgOyAvL1ZBTFVFX1BIWVJFRzExICAgLyBDTUQgZHJpdmUgc3RyZW5ndGg6IGNtZF9wcmNvbXBbMzowXTpSVzo0OjQ6PTB4YSxjbWRfbnJjb21wWzM6MF06Ulc6MDo0Oj0weGEKCQlfX1JFRyggMHgwMDE1NDA1OCApID0gMHgwMDAwMDAwYSAgOyAvL1ZBTFVFX1BIWVJFRzE2ICAgLyBDSyAgZHJpdmUgc3RyZW5ndGg6IGNrX3ByY29tcCBbMzowXTpSVzo0OjQ6PTB4YSxja19ucmNvbXAgWzM6MF06Ulc6MDo0Oj0weGEKCQlfX1JFRyggMHgwMDE1NDA2NCApID0gMHgwMDAwMDAwYSAgOyAvL1ZBTFVFX1BIWVJFRzE5ICAgLyBDSyAgcHVsbF91cCAgIGRyaXZlIHN0cmVuZ3RoKERTKTpSVzowOjU6PTB4YQoJCV9fUkVHKCAweDAwMTU0MDY4ICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHMUEgICAvIENNRCBwdWxsX3VwICAgZHJpdmUgc3RyZW5ndGgoRFMpOlJXOjA6NTo9MHhhCgkJX19SRUcoIDB4MDAxNTQwODAgKSA9IDB4MDAwMDAwMGEgIDsgLy9WQUxVRV9QSFlSRUcyMCAgIC8gQV9EUTB+QV9EUTcgcHVsbF9kb3duIERTIDpSVzowOjU6PTB4YQoJCV9fUkVHKCAweDAwMTU0MDg0ICkgPSAweDAwMDAwMDA1ICA7IC8vVkFMVUVfUEhZUkVHMjEgICAvIEFfRFEwfkFfRFE3IHB1bGxfZG93biBPRFQ6Ulc6MDo1Oj0weGEKCQlfX1JFRyggMHgwMDE1NDBiOCApID0gMHgwMDAwMDA4YSAgOyAvL1ZBTFVFX1BIWVJFRzJFICAgLyBBX0RRMH5BX0RRNyBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhLCBmYWxsaW5nIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoIDB4MDAxNTQwYmMgKSA9IDB4MDAwMDAwODUgIDsgLy9WQUxVRV9QSFlSRUcyRiAgIC8gQV9EUTB+QV9EUTcgcHVsbF91cCAgIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKCAweDAwMTU0MGMwICkgPSAweDAwMDAwMDhhICA7IC8vVkFMVUVfUEhZUkVHMzAgICAvIEFfRFE4fkFfRFExNSBwdWxsX2Rvd24gRFMgOlJXOjA6NTo9MHhhLCBmYWxsaW5nIGVkZ2Ugc2xldyByYXRlOlJXOjU6Mzo9MHg0CgkJX19SRUcoIDB4MDAxNTQwYzQgKSA9IDB4MDAwMDAwODUgIDsgLy9WQUxVRV9QSFlSRUczMSAgIC8gQV9EUTh+QV9EUTE1IHB1bGxfZG93biBPRFQ6Ulc6MDo1Oj0weGEsIHJpc2luZyAgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRyggMHgwMDE1NDBmOCApID0gMHgwMDAwMDAwYSAgOyAvL1ZBTFVFX1BIWVJFRzNFICAgLyBBX0RROH5BX0RRMTUgcHVsbF91cCAgIERTIDpSVzowOjU6PTB4YQoJCV9fUkVHKCAweDAwMTU0MGZjICkgPSAweDAwMDAwMDA1ICA7IC8vVkFMVUVfUEhZUkVHM0YgICAvIEFfRFE4fkFfRFExNSBwdWxsX3VwICAgT0RUOlJXOjA6NTo9MHhhCgoJCV9fUkVHKCAweDAwMTU0MTAwICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHNDAgICAvIEJfRFEwfkJfRFE3IHB1bGxfZG93biBEUyA6Ulc6MDo1Oj0weGEKCQlfX1JFRyggMHgwMDE1NDEwNCApID0gMHgwMDAwMDAwNSAgOyAvL1ZBTFVFX1BIWVJFRzQxICAgLyBCX0RRMH5CX0RRNyBwdWxsX2Rvd24gT0RUOlJXOjA6NTo9MHhhCgkJX19SRUcoIDB4MDAxNTQxMzggKSA9IDB4MDAwMDAwOGEgIDsgLy9WQUxVRV9QSFlSRUc0RSAgIC8gQl9EUTB+Ql9EUTcgcHVsbF91cCAgIERTIDpSVzowOjU6PTB4YSwgZmFsbGluZyBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKCAweDAwMTU0MTNjICkgPSAweDAwMDAwMDg1ICA7IC8vVkFMVUVfUEhZUkVHNEYgICAvIEJfRFEwfkJfRFE3IHB1bGxfdXAgICBPRFQ6Ulc6MDo1Oj0weGEsIHJpc2luZyAgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCgkJX19SRUcoIDB4MDAxNTQxNDAgKSA9IDB4MDAwMDAwOGEgIDsgLy9WQUxVRV9QSFlSRUc1MCAgIC8gQl9EUTh+Ql9EUTE1IHB1bGxfZG93biBEUyA6Ulc6MDo1Oj0weGEsIGZhbGxpbmcgZWRnZSBzbGV3IHJhdGU6Ulc6NTozOj0weDQKCQlfX1JFRyggMHgwMDE1NDE0NCApID0gMHgwMDAwMDA4NSAgOyAvL1ZBTFVFX1BIWVJFRzUxICAgLyBCX0RROH5CX0RRMTUgcHVsbF9kb3duIE9EVDpSVzowOjU6PTB4YSwgcmlzaW5nICBlZGdlIHNsZXcgcmF0ZTpSVzo1OjM6PTB4NAoJCV9fUkVHKCAweDAwMTU0MTc4ICkgPSAweDAwMDAwMDBhICA7IC8vVkFMVUVfUEhZUkVHNUUgICAvIEJfRFE4fkJfRFExNSBwdWxsX3VwICAgRFMgOlJXOjA6NTo9MHhhCgkJX19SRUcoIDB4MDAxNTQxN2MgKSA9IDB4MDAwMDAwMjUgIDsgLy9WQUxVRV9QSFlSRUc1RiAgIC8gQl9EUTh+Ql9EUTE1IHB1bGxfdXAgICBPRFQ6Ulc6MDo1Oj0weGEgIAoJCSNlbmRpZgoJfQoKICAgIHJldHVybiAwOwoJCn0KCmludCBkZHJfY3RybF9pbml0KGludCBmbGFnKQp7CgkKCWlmKGZsYWcgPT0gQ0hJUF9ERFJfSVNfMzJNKQoJewoJCV9fUkVHKCAweDAwMTUwMDAwICkgPSAweDAxMDQxMDA0OyAgLy8gMHgwMTA0MTAwNCgxNmJpdCkgICA7IC8vVkFMVUVfTVNUUiAgICAgICAgLyBkZXZpY2VfY29uZmlnOlJXOjMwOjI6PTB4MCBmcmVxdWVuY3lfbW9kZTpSVzoyOToxOj0weDAgYWN0aXZlX3JhbmtzOlJXOjI0OjQ6PTB4MyBidXJzdF9yZHdyOlJXOjE2OjQ6PTB4NCBkbGxfb2ZmX21vZGU6Ulc6MTU6MTo9MHgwIGRhdGFfYnVzX3dpZHRoOlJXOjEyOjI6PTB4MCBnZWFyZG93bl9tb2RlOlJXOjExOjE6PTB4MCBlbl8ydF90aW1pbmdfbW9kZTpSVzoxMDoxOj0weDAgYnVyc3RjaG9wOlJXOjk6MTo9MHgwIGJ1cnN0X21vZGU6Ulc6ODoxOj0weDAgbHBkZHI0OlJXOjU6MTo9MHgwIGRkcjQ6Ulc6NDoxOj0weDAgbHBkZHIzOlJXOjM6MTo9MHgwIGxwZGRyMjpSVzoyOjE6PTB4MSBtb2JpbGU6Ulc6MToxOj0weDAgZGRyMzpSVzowOjE6PTB4MAoJfQoJZWxzZQoJewoJCV9fUkVHKCAweDAwMTUwMDAwICkgPSAweDAxMDQwMDA0OyAvLyAweDAxMDQwMDA0KDMyYml0KSAKCX0KCQoJX19SRUcoIDB4MDAxNTAwMTAgKSA9IDB4MDAwMDAwMzAgICAgIDsgLy9WQUxVRV9NUkNUUkwwICAgICAvIG1yX3dyOlJXOjMxOjE6PTB4MCBtcl9hZGRyOlJXOjEyOjQ6PTB4MCBtcl9yYW5rOlJXOjQ6NDo9MHgzIHN3X2luaXRfaW50OlJXOjM6MTo9MHgwIHBkYV9lbjpSVzoyOjE6PTB4MCBtcHJfZW46Ulc6MToxOj0weDAgbXJfdHlwZTpSVzowOjE6PTB4MAoJX19SRUcoIDB4MDAxNTAwMTQgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9NUkNUUkwxICAgICAvbXJfZGF0YTpSVzowOjE2Oj0weDAKCV9fUkVHKCAweDAwMTUwMDIwICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfREVSQVRFRU4gICAgL3JjX2RlcmF0ZV92YWx1ZTpSVzo4OjI6PTB4MCBkZXJhdGVfYnl0ZTpSVzo0OjQ6PTB4MCBkZXJhdGVfdmFsdWU6Ulc6MToxOj0weDAgZGVyYXRlX2VuYWJsZTpSVzowOjE6PTB4MAoJX19SRUcoIDB4MDAxNTAwMjQgKSA9IDB4MDA4MDAwMDAgICAgIDsgLy9WQUxVRV9ERVJBVEVJTlQgICAvbXI0X3JlYWRfaW50ZXJ2YWw6Ulc6MDozMjo9MHg4MDAwMDAKCglfX1JFRyggMHgwMDE1MDAzMCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1BXUkNUTCAgICAgIC8gc3RheV9pbl9zZWxmcmVmOlJXOjY6MTo9MHgwIHNlbGZyZWZfc3c6Ulc6NToxOj0weDAgbXBzbV9lbjpSVzo0OjE6PTB4MCBlbl9kZmlfZHJhbV9jbGtfZGlzYWJsZTpSVzozOjE6PTB4MCBkZWVwcG93ZXJkb3duX2VuOlJXOjI6MTo9MHgwIHBvd2VyZG93bl9lbjpSVzoxOjE6PTB4MSBzZWxmcmVmX2VuOlJXOjA6MTo9MHgxCglfX1JFRyggMHgwMDE1MDAzNCApID0gMHgwMDA1MjAwMiAgICAgOyAvL1ZBTFVFX1BXUlRNRyAgICAgIC8gc2VsZnJlZl90b194MzI6Ulc6MTY6ODo9MHg1IGRlZXBwb3dlcmRvd25fdG9feDEwMjQ6Ulc6ODo4Oj0weDIwIHBvd2VyZG93bl90b194MzI6Ulc6MDo1Oj0weDIKCV9fUkVHKCAweDAwMTUwMDM4ICkgPSAweDAwMDQwMDAzICAgICA7IC8vVkFMVUVfSFdMUENUTCAgICAgLyBod19scF9pZGxlX3gzMjpSVzoxNjoxMjo9MHg0IGh3X2xwX2V4aXRfaWRsZV9lbjpSVzoxOjE6PTB4MSBod19scF9lbjpSVzowOjE6PTB4MQoJX19SRUcoIDB4MDAxNTAwNTAgKSA9IDB4MDAyMTAwMDAgICAgIDsgLy9WQUxVRV9SRlNIQ1RMMCAgICAvIHJlZnJlc2hfbWFyZ2luOlJXOjIwOjQ6PTB4MiByZWZyZXNoX3RvX3gzMjpSVzoxMjo1Oj0weDEwIHJlZnJlc2hfYnVyc3Q6Ulc6NDo1Oj0weDAgcGVyX2JhbmtfcmVmcmVzaDpSVzoyOjE6PTB4MAoJX19SRUcoIDB4MDAxNTAwNTQgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9SRlNIQ1RMMSAgICAvIHJlZnJlc2hfdGltZXIxX3N0YXJ0X3ZhbHVlX3gzMjpSVzoxNjoxMjo9MHgwIHJlZnJlc2hfdGltZXIwX3N0YXJ0X3ZhbHVlX3gzMjpSVzowOjEyOj0weDAKCV9fUkVHKCAweDAwMTUwMDU4ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfUkZTSENUTDIgICAgLyByZWZyZXNoX3RpbWVyM19zdGFydF92YWx1ZV94MzI6Ulc6MTY6MTI6PTB4MCByZWZyZXNoX3RpbWVyMl9zdGFydF92YWx1ZV94MzI6Ulc6MDoxMjo9MHgwCglfX1JFRyggMHgwMDE1MDA2MCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1JGU0hDVEwzICAgIC8gcmVmcmVzaF9tb2RlOlJXOjQ6Mzo9MHgwIHJlZnJlc2hfdXBkYXRlX2xldmVsOlJXOjE6MTo9MHgwIGRpc19hdXRvX3JlZnJlc2g6Ulc6MDoxOj0weDAKCQoJaWYoZmxhZyA9PSBDSElQX0REUl9JU18zMk0pCgl7CgkJI2lmIF9ERFIzMk1fQllQQVNTX01PREUKCQlfX1JFRyggMHgwMDE1MDA2NCApID0gMHgwMDI2MDAxNCAgICAgOyAvL1ZBTFVFX1JGU0hUTUcgICAgIC8gdF9yZmNfbm9tX3gzMih0cmVmaSk6Ulc6MTY6MTI6PTB4MjYgbHBkZHIzX3RyZWZid19lbjpSVzoxNToxOj0weDAgdF9yZmNfbWluOlJXOjA6OTo9MHgxNAoJCV9fUkVHKCAweDAwMTUwMGQwICkgPSAweDAwMWYwMDAxICAgICA7IC8vVkFMVUVfSU5JVDAgICAgICAgLyBza2lwX2RyYW1faW5pdDpSVzozMToyOj0weDAgcG9zdF9ja2VfeDEwMjQ6Ulc6MTY6MTA6PTB4MWYgcHJlX2NrZV94MTAyNDpSVzowOjExOj0weDEKCQlfX1JFRyggMHgwMDE1MDBkNCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX0lOSVQxICAgICAgIC8gZHJhbV9yc3RuX3gxMDI0OlJXOjE2Ojg6PTB4MCBmaW5hbF93YWl0X3gzMjpSVzo4Ojc6PTB4MCBwcmVfb2NkX3gzMjpSVzowOjQ6PTB4MAoJCV9fUkVHKCAweDAwMTUwMGQ4ICkgPSAweDAwMDAwNDA1ICAgICA7IC8vVkFMVUVfSU5JVDIgICAgICAgLyBpZGxlX2FmdGVyX3Jlc2V0X3gzMjpSVzo4Ojg6PTB4NCBtaW5fc3RhYmxlX2Nsb2NrX3gxOlJXOjA6NDo9MHg1CgkJLy9NUjI9UkwvV0yjrDGjulJMMy9XTDGjrDKjulJMNC9XTDKjrDOjulJMOjUvV0wyo6w0o7pSTDYvV0wzOqOsNaO6Ukw3L1dMNKOsNqO6Ukw4L1dMNAoJCV9fUkVHKCAweDAwMTUwMGRjICkgPSAweDAwNjMwMDA2ICAgICA7IC8vVkFMVUVfSU5JVDMgICAgICAgLyBtcjpSVzoxNjoxNjo9MHg2MyBlbXI6Ulc6MDoxNjo9MHg2CgkJLy9iaXQxNi0zMaOsTFBERFIyIE1SMyB2YWx1ZaOsxve8/kRTxKzIz8rHNDBvaG2jrKOoMT0zNC4zo6wyPTQwLDM9NDgsND02MCw2PTgwo6kKCQkjaWZuZGVmIF9ERFIzMk1fRFNfNDhvbSAvLzYwb2htCgkJX19SRUcoIDB4MDAxNTAwZTAgKSA9IDB4MDAwNDAwMDAgICAgIDsgLy9WQUxVRV9JTklUNCAgICAgICAvIGVtcjI6Ulc6MTY6MTY6PTB4MiBlbXIzOlJXOjA6MTY6PTB4MAoJCSNlbHNlIC8vNDhvaG0KCQlfX1JFRyggMHgwMDE1MDBlMCApID0gMHgwMDAzMDAwMCAgICAgOyAvL1ZBTFVFX0lOSVQ0ICAgICAgIC8gZW1yMjpSVzoxNjoxNjo9MHgyIGVtcjM6Ulc6MDoxNjo9MHgwCgkJI2VuZGlmCgkJX19SRUcoIDB4MDAxNTAwZTQgKSA9IDB4MDAwNTAwMDIgICAgIDsgLy9WQUxVRV9JTklUNSAgICAgICAvIGRldl96cWluaXRfeDMyOlJXOjE2Ojg6PTB4NSBtYXhfYXV0b19pbml0X3gxMDI0OlJXOjA6MTA6PTB4MgoJCV9fUkVHKCAweDAwMTUwMGY0ICkgPSAweDAwMDAwNjZmICAgICA7IC8vVkFMVUVfUkFOS0NUTCAgICAgLyBkaWZmX3Jhbmtfd3JfZ2FwOlJXOjg6NDo9MHg2IGRpZmZfcmFua19yZF9nYXA6Ulc6NDo0Oj0weDYgbWF4X3JhbmtfcmQ6Ulc6MDo0Oj0weGYKCQlfX1JFRyggMHgwMDE1MDEwMCApID0gMHgwNjA4MGEwNyAgICAgOyAvL1ZBTFVFX0RSQU1UTUcwICAgIC8gd3IycHJlOlJXOjI0OjY6PTB4NiB0X2ZhdzpSVzoxNjo2Oj0weDggdF9yYXNfbWF4OlJXOjg6Nzo9MHhhIHRfcmFzX21pbjpSVzowOjY6PTB4NwoJCV9fUkVHKCAweDAwMTUwMTA0ICkgPSAweDAwMDIwMjBhICAgICA7IC8vVkFMVUVfRFJBTVRNRzEgICAgLyB0X3hwOlJXOjE2OjU6PTB4MiByZDJwcmU6Ulc6ODo1Oj0weDIgdF9yYzpSVzowOjY6PTB4OQoJCS8vUkw9Yml0MTYtMjGjrDGjulJMPTKjrDKjulJMPTSjrDOjulJMPTajrDSjulI9OKOsV0w9Yml0MjQtMjmjrDGjuldMPTKjrDKjuldMPTQKCQkvL9XiwO+1vNbCTVIytcTF5NbDo6gweDAxMjE2MGRjo6myu8Tc0aHU8bqs09DG5sr9tcTWtT8KCQlfX1JFRyggMHgwMDE1MDEwOCApID0gMHgwMjA0MDYwNiAgICAgOyAvL1ZBTFVFX0RSQU1UTUcyICAgIC8gd3JpdGVfbGF0ZW5jeTpSVzoyNDo2Oj0weDIgcmVhZF9sYXRlbmN5OlJXOjE2OjY6PTB4NCByZDJ3cjpSVzo4OjY6PTB4NiB3cjJyZDpSVzowOjY6PTB4NgoJCV9fUkVHKCAweDAwMTUwMTBjICkgPSAweDAwNTAxMDAwICAgICA7IC8vVkFMVUVfRFJBTVRNRzMgICAgLyB0X21ydzpSVzoyMDoxMDo9MHg1IHRfbXJkOlJXOjEyOjY6PTB4MSB0X21vZDpSVzowOjEwOj0weDAKCQlfX1JFRyggMHgwMDE1MDExMCApID0gMHgwMzAxMDIwNCAgICAgOyAvL1ZBTFVFX0RSQU1UTUc0ICAgIC8gdF9yY2Q6Ulc6MjQ6NTo9MHgzIHRfY2NkOlJXOjE2OjQ6PTB4MSB0X3JyZDpSVzo4OjQ6PTB4MiB0X3JwOlJXOjA6NTo9MHg0CgkJX19SRUcoIDB4MDAxNTAxMTQgKSA9IDB4MDEwMTAzMDMgICAgIDsgLy9WQUxVRV9EUkFNVE1HNSAgICAvIHRfY2tzcng6Ulc6MjQ6NDo9MHgxIHRfY2tzcmU6Ulc6MTY6NDo9MHgxIHRfY2tlc3I6Ulc6ODo2Oj0weDMgdF9ja2U6Ulc6MDo0Oj0weDMKCQlfX1JFRyggMHgwMDE1MDExOCApID0gMHgwMjAyMDAwMyAgICAgOyAvL1ZBTFVFX0RSQU1UTUc2ICAgIC8gdF9ja2RwZGU6Ulc6MjQ6NDo9MHgyIHRfY2tkcGR4OlJXOjE2OjQ6PTB4MiB0X2NrY3N4OlJXOjA6NDo9MHgzCgkJX19SRUcoIDB4MDAxNTAxMWMgKSA9IDB4MDAwMDAyMDIgICAgIDsgLy9WQUxVRV9EUkFNVE1HNyAgICAvIHRfY2twZGU6Ulc6ODo0Oj0weDIgdF9ja3BkeDpSVzowOjQ6PTB4MgoJCV9fUkVHKCAweDAwMTUwMTM4ICkgPSAweDAwMDAwMDE2ICAgICA7IC8vVkFMVUVfRFJBTVRNRzE0ICAgLyB0X3hzcjpSVzowOjEyOj0weDE2CgkJLy9iaXQzMD0xIERpc2FibGUgaXNzdWluZyBvZiBaUUNML01QQyhaUSBjYWxpYnJhdGlvbikgY29tbWFuZCBhdCBTZWxmLVJlZnJlc2gvU1ItUG93ZXJkb3duIGV4aXQgo6w3NTIw1+6/qsq8xeTWw86qMKOstbzWwtfUtq/X1Mui0MK5psTczcuz9sqx0dPKsbrctPOjrHNkaW+2wcr9vt2z9rTtCgkJX19SRUcoIDB4MDAxNTAxODAgKSA9IDB4NDAzOTAwMGYgICAgIDsgLy9WQUxVRV9aUUNUTDAgICAgICAvIGRpc19hdXRvX3pxOlJXOjMxOjE6PTB4MCBkaXNfc3J4X3pxY2w6Ulc6MzA6MTo9MHgxIHpxX3Jlc2lzdG9yX3NoYXJlZDpSVzoyOToxOj0weDAgZGlzX21wc214X3pxY2w6Ulc6Mjg6MTo9MHgwIHRfenFfbG9uZ19ub3A6Ulc6MTY6MTA6PTB4MzkgdF96cV9zaG9ydF9ub3A6Ulc6MDoxMDo9MHhmCgkJX19SRUcoIDB4MDAxNTAxODQgKSA9IDB4MDA4MDAxMDAgICAgIDsgLy9WQUxVRV9aUUNUTDEgICAgICAvIHRfenFfcmVzZXRfbm9wOlJXOjIwOjEwOj0weDggdF96cV9zaG9ydF9pbnRlcnZhbF94MTAyNDpSVzowOjIwOj0weDEwMAoKCQkjZWxzZQoJCV9fUkVHKCAweDAwMTUwMDY0ICkgPSAweDAwMzAwMDFhICAgICA7IC8vVkFMVUVfUkZTSFRNRyAgICAgLyB0X3JmY19ub21feDMyKHRyZWZpKTpSVzoxNjoxMjo9MHgyNiBscGRkcjNfdHJlZmJ3X2VuOlJXOjE1OjE6PTB4MCB0X3JmY19taW46Ulc6MDo5Oj0weDE0CgkJX19SRUcoIDB4MDAxNTAwZDAgKSA9IDB4MDAyODAwMDEgICAgIDsgLy9WQUxVRV9JTklUMCAgICAgICAvIHNraXBfZHJhbV9pbml0OlJXOjMxOjI6PTB4MCBwb3N0X2NrZV94MTAyNDpSVzoxNjoxMDo9MHgxZiBwcmVfY2tlX3gxMDI0OlJXOjA6MTE6PTB4MQoJCV9fUkVHKCAweDAwMTUwMGQ0ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfSU5JVDEgICAgICAgLyBkcmFtX3JzdG5feDEwMjQ6Ulc6MTY6ODo9MHgwIGZpbmFsX3dhaXRfeDMyOlJXOjg6Nzo9MHgwIHByZV9vY2RfeDMyOlJXOjA6NDo9MHgwCgkJX19SRUcoIDB4MDAxNTAwZDggKSA9IDB4MDAwMDA2MDUgICAgIDsgLy9WQUxVRV9JTklUMiAgICAgICAvIGlkbGVfYWZ0ZXJfcmVzZXRfeDMyOlJXOjg6ODo9MHg0IG1pbl9zdGFibGVfY2xvY2tfeDE6Ulc6MDo0Oj0weDUKCQkvL01SMj1STC9XTKOsMaO6UkwzL1dMMaOsMqO6Ukw0L1dMMqOsM6O6Ukw6NS9XTDKjrDSjulJMNi9XTDM6o6w1o7pSTDcvV0w0o6w2o7pSTDgvV0w0CgkJX19SRUcoIDB4MDAxNTAwZGMgKSA9IDB4MDA4MzAwMDYgICAgIDsgLy9WQUxVRV9JTklUMyAgICAgICAvIG1yOlJXOjE2OjE2Oj0weDYzIGVtcjpSVzowOjE2Oj0weDYKCQkvL2JpdDE2LTMxo6xMUEREUjIgTVIzIHZhbHVlo6zG97z+RFPErMjPysc0MG9obaOso6gxPTM0LjOjrDI9NDAsMz00OCw0PTYwLDY9ODCjqQoJCSNpZm5kZWYgX0REUjMyTV9EU180OG9tIC8vNjBvaG0KCQlfX1JFRyggMHgwMDE1MDBlMCApID0gMHgwMDA0MDAwMCAgICAgOyAvL1ZBTFVFX0lOSVQ0ICAgICAgIC8gZW1yMjpSVzoxNjoxNjo9MHgyIGVtcjM6Ulc6MDoxNjo9MHgwCgkJI2Vsc2UgLy80OG9obQoJCV9fUkVHKCAweDAwMTUwMGUwICkgPSAweDAwMDMwMDAwICAgICA7IC8vVkFMVUVfSU5JVDQgICAgICAgLyBlbXIyOlJXOjE2OjE2Oj0weDIgZW1yMzpSVzowOjE2Oj0weDAKCQkjZW5kaWYKCQlfX1JFRyggMHgwMDE1MDBlNCApID0gMHgwMDA3MDAwMiAgICAgOyAvL1ZBTFVFX0lOSVQ1ICAgICAgIC8gZGV2X3pxaW5pdF94MzI6Ulc6MTY6ODo9MHg1IG1heF9hdXRvX2luaXRfeDEwMjQ6Ulc6MDoxMDo9MHgyCgkJX19SRUcoIDB4MDAxNTAwZjQgKSA9IDB4MDAwMDA2NmYgICAgIDsgLy9WQUxVRV9SQU5LQ1RMICAgICAvIGRpZmZfcmFua193cl9nYXA6Ulc6ODo0Oj0weDYgZGlmZl9yYW5rX3JkX2dhcDpSVzo0OjQ6PTB4NiBtYXhfcmFua19yZDpSVzowOjQ6PTB4ZgoJCV9fUkVHKCAweDAwMTUwMTAwICkgPSAweDA3MGEwZDA4ICAgICA7IC8vVkFMVUVfRFJBTVRNRzAgICAgLyB3cjJwcmU6Ulc6MjQ6Njo9MHg2IHRfZmF3OlJXOjE2OjY6PTB4OCB0X3Jhc19tYXg6Ulc6ODo3Oj0weGEgdF9yYXNfbWluOlJXOjA6Njo9MHg3CgkJX19SRUcoIDB4MDAxNTAxMDQgKSA9IDB4MDAwMjAyMGQgICAgIDsgLy9WQUxVRV9EUkFNVE1HMSAgICAvIHRfeHA6Ulc6MTY6NTo9MHgyIHJkMnByZTpSVzo4OjU6PTB4MiB0X3JjOlJXOjA6Njo9MHg5CgkJLy9STD1iaXQxNi0yMaOsMaO6Ukw9MqOsMqO6Ukw9NKOsM6O6Ukw9NqOsNKO6Uj04o6xXTD1iaXQyNC0yOaOsMaO6V0w9MqOsMqO6V0w9NAoJCS8v1eLA77W81sJNUjK1xMXk1sOjqDB4MDEyMTYwZGOjqbK7xNzRodTxuqzT0Mbmyv21xNa1PwoJCV9fUkVHKCAweDAwMTUwMTA4ICkgPSAweDAyMDQwNjA3ICAgICA7IC8vVkFMVUVfRFJBTVRNRzIgICAgLyB3cml0ZV9sYXRlbmN5OlJXOjI0OjY6PTB4MiByZWFkX2xhdGVuY3k6Ulc6MTY6Njo9MHg0IHJkMndyOlJXOjg6Njo9MHg2IHdyMnJkOlJXOjA6Njo9MHg2CgkJX19SRUcoIDB4MDAxNTAxMGMgKSA9IDB4MDA1MDEwMDAgICAgIDsgLy9WQUxVRV9EUkFNVE1HMyAgICAvIHRfbXJ3OlJXOjIwOjEwOj0weDUgdF9tcmQ6Ulc6MTI6Njo9MHgxIHRfbW9kOlJXOjA6MTA6PTB4MAoJCV9fUkVHKCAweDAwMTUwMTEwICkgPSAweDA0MDEwMjA1ICAgICA7IC8vVkFMVUVfRFJBTVRNRzQgICAgLyB0X3JjZDpSVzoyNDo1Oj0weDMgdF9jY2Q6Ulc6MTY6NDo9MHgxIHRfcnJkOlJXOjg6NDo9MHgyIHRfcnA6Ulc6MDo1Oj0weDQKCQlfX1JFRyggMHgwMDE1MDExNCApID0gMHgwMTAxMDMwMyAgICAgOyAvL1ZBTFVFX0RSQU1UTUc1ICAgIC8gdF9ja3NyeDpSVzoyNDo0Oj0weDEgdF9ja3NyZTpSVzoxNjo0Oj0weDEgdF9ja2VzcjpSVzo4OjY6PTB4MyB0X2NrZTpSVzowOjQ6PTB4MwoJCV9fUkVHKCAweDAwMTUwMTE4ICkgPSAweDAyMDIwMDAzICAgICA7IC8vVkFMVUVfRFJBTVRNRzYgICAgLyB0X2NrZHBkZTpSVzoyNDo0Oj0weDIgdF9ja2RwZHg6Ulc6MTY6NDo9MHgyIHRfY2tjc3g6Ulc6MDo0Oj0weDMKCQlfX1JFRyggMHgwMDE1MDExYyApID0gMHgwMDAwMDIwMiAgICAgOyAvL1ZBTFVFX0RSQU1UTUc3ICAgIC8gdF9ja3BkZTpSVzo4OjQ6PTB4MiB0X2NrcGR4OlJXOjA6NDo9MHgyCgkJX19SRUcoIDB4MDAxNTAxMzggKSA9IDB4MDAwMDAwMWMgICAgIDsgLy9WQUxVRV9EUkFNVE1HMTQgICAvIHRfeHNyOlJXOjA6MTI6PTB4MTYKCQkvL2JpdDMwPTEgRGlzYWJsZSBpc3N1aW5nIG9mIFpRQ0wvTVBDKFpRIGNhbGlicmF0aW9uKSBjb21tYW5kIGF0IFNlbGYtUmVmcmVzaC9TUi1Qb3dlcmRvd24gZXhpdCCjrDc1MjDX7r+qyrzF5NbDzqowo6y1vNbC19S2r9fUy6LQwrmmxNzNy7P2yrHR08qxuty086Osc2Rpb7bByv2+3bP2tO0KCQlfX1JFRyggMHgwMDE1MDE4MCApID0gMHg0MDQ4MDAxMiAgICAgOyAvL1ZBTFVFX1pRQ1RMMCAgICAgIC8gZGlzX2F1dG9fenE6Ulc6MzE6MTo9MHgwIGRpc19zcnhfenFjbDpSVzozMDoxOj0weDEgenFfcmVzaXN0b3Jfc2hhcmVkOlJXOjI5OjE6PTB4MCBkaXNfbXBzbXhfenFjbDpSVzoyODoxOj0weDAgdF96cV9sb25nX25vcDpSVzoxNjoxMDo9MHgzOSB0X3pxX3Nob3J0X25vcDpSVzowOjEwOj0weGYKCQlfX1JFRyggMHgwMDE1MDE4NCApID0gMHgwMGEwMDEwMCAgICAgOyAvL1ZBTFVFX1pRQ1RMMSAgICAgIC8gdF96cV9yZXNldF9ub3A6Ulc6MjA6MTA6PTB4OCB0X3pxX3Nob3J0X2ludGVydmFsX3gxMDI0OlJXOjA6MjA6PTB4MTAwCgkJI2VuZGlmCgkJCgl9CgllbHNlCgl7CgkJI2lmIF9ERFJfQllQQVNTX01PREUKCQlpZihmbGFnID09IENISVBfRERSX0lTXzI1Nk0pCgkJCV9fUkVHKCAweDAwMTUwMDY0ICkgPSAweDAwMTMwMDE0ICAgICA7IC8vVkFMVUVfUkZTSFRNRyAgICAgLyB0X3JmY19ub21feDMyKHRyZWZpKTpSVzoxNjoxMjo9MHgxMyBscGRkcjNfdHJlZmJ3X2VuOlJXOjE1OjE6PTB4MCB0X3JmY19taW46Ulc6MDo5Oj0weDBhCgkJZWxzZQoJCQlfX1JFRyggMHgwMDE1MDA2NCApID0gMHgwMDI2MDAxNCAgICAgOyAvL1ZBTFVFX1JGU0hUTUcgICAgIC8gdF9yZmNfbm9tX3gzMih0cmVmaSk6Ulc6MTY6MTI6PTB4MjYgbHBkZHIzX3RyZWZid19lbjpSVzoxNToxOj0weDAgdF9yZmNfbWluOlJXOjA6OTo9MHgxNAoJCV9fUkVHKCAweDAwMTUwMGQwICkgPSAweDAwMWYwMDAxICAgICA7IC8vVkFMVUVfSU5JVDAgICAgICAgLyBza2lwX2RyYW1faW5pdDpSVzozMToyOj0weDAgcG9zdF9ja2VfeDEwMjQ6Ulc6MTY6MTA6PTB4MWYgcHJlX2NrZV94MTAyNDpSVzowOjExOj0weDEKCQlfX1JFRyggMHgwMDE1MDBkNCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX0lOSVQxICAgICAgIC8gZHJhbV9yc3RuX3gxMDI0OlJXOjE2Ojg6PTB4MCBmaW5hbF93YWl0X3gzMjpSVzo4Ojc6PTB4MCBwcmVfb2NkX3gzMjpSVzowOjQ6PTB4MAoJCV9fUkVHKCAweDAwMTUwMGQ4ICkgPSAweDAwMDAwNDA1ICAgICA7IC8vVkFMVUVfSU5JVDIgICAgICAgLyBpZGxlX2FmdGVyX3Jlc2V0X3gzMjpSVzo4Ojg6PTB4NCBtaW5fc3RhYmxlX2Nsb2NrX3gxOlJXOjA6NDo9MHg1CgkJLy9NUjI9UkwvV0yjrDGjulJMMy9XTDGjrDKjulJMNC9XTDKjrDOjulJMOjUvV0wyo6w0o7pSTDYvV0wzOqOsNaO6Ukw3L1dMNKOsNqO6Ukw4L1dMNAoJCV9fUkVHKCAweDAwMTUwMGRjICkgPSAweDAwNjMwMDA2ICAgICA7IC8vVkFMVUVfSU5JVDMgICAgICAgLyBtcjpSVzoxNjoxNjo9MHg2MyBlbXI6Ulc6MDoxNjo9MHg2CgkJLy9iaXQxNi0zMaOsTFBERFIyIE1SMyB2YWx1ZaOsxve8/kRTxKzIz8rHNDBvaG2jrKOoMT0zNC4zo6wyPTQwLDM9NDgsND02MCw2PTgwo6kKCQkjaWZuZGVmIF9ERFJfRFNfNDhvbSAvLzYwb2htCgkJX19SRUcoIDB4MDAxNTAwZTAgKSA9IDB4MDAwNDAwMDAgICAgIDsgLy9WQUxVRV9JTklUNCAgICAgICAvIGVtcjI6Ulc6MTY6MTY6PTB4MiBlbXIzOlJXOjA6MTY6PTB4MAoJCSNlbHNlIC8vNDhvaG0KCQlfX1JFRyggMHgwMDE1MDBlMCApID0gMHgwMDAzMDAwMCAgICAgOyAvL1ZBTFVFX0lOSVQ0ICAgICAgIC8gZW1yMjpSVzoxNjoxNjo9MHgyIGVtcjM6Ulc6MDoxNjo9MHgwCgkJI2VuZGlmCgkJX19SRUcoIDB4MDAxNTAwZTQgKSA9IDB4MDAwNTAwMDIgICAgIDsgLy9WQUxVRV9JTklUNSAgICAgICAvIGRldl96cWluaXRfeDMyOlJXOjE2Ojg6PTB4NSBtYXhfYXV0b19pbml0X3gxMDI0OlJXOjA6MTA6PTB4MgoJCV9fUkVHKCAweDAwMTUwMGY0ICkgPSAweDAwMDAwNjZmICAgICA7IC8vVkFMVUVfUkFOS0NUTCAgICAgLyBkaWZmX3Jhbmtfd3JfZ2FwOlJXOjg6NDo9MHg2IGRpZmZfcmFua19yZF9nYXA6Ulc6NDo0Oj0weDYgbWF4X3JhbmtfcmQ6Ulc6MDo0Oj0weGYKCQlfX1JFRyggMHgwMDE1MDEwMCApID0gMHgwNjA4MGEwNyAgICAgOyAvL1ZBTFVFX0RSQU1UTUcwICAgIC8gd3IycHJlOlJXOjI0OjY6PTB4NiB0X2ZhdzpSVzoxNjo2Oj0weDggdF9yYXNfbWF4OlJXOjg6Nzo9MHhhIHRfcmFzX21pbjpSVzowOjY6PTB4NwoJCV9fUkVHKCAweDAwMTUwMTA0ICkgPSAweDAwMDIwMjBhICAgICA7IC8vVkFMVUVfRFJBTVRNRzEgICAgLyB0X3hwOlJXOjE2OjU6PTB4MiByZDJwcmU6Ulc6ODo1Oj0weDIgdF9yYzpSVzowOjY6PTB4OQoJCS8vUkw9Yml0MTYtMjGjrDGjulJMPTKjrDKjulJMPTSjrDOjulJMPTajrDSjulI9OKOsV0w9Yml0MjQtMjmjrDGjuldMPTKjrDKjuldMPTQKCQkvL9XiwO+1vNbCTVIytcTF5NbDo6gweDAxMjE2MGRjo6myu8Tc0aHU8bqs09DG5sr9tcTWtT8KCQlfX1JFRyggMHgwMDE1MDEwOCApID0gMHgwMjA0MDYwNiAgICAgOyAvL1ZBTFVFX0RSQU1UTUcyICAgIC8gd3JpdGVfbGF0ZW5jeTpSVzoyNDo2Oj0weDIgcmVhZF9sYXRlbmN5OlJXOjE2OjY6PTB4NCByZDJ3cjpSVzo4OjY6PTB4NiB3cjJyZDpSVzowOjY6PTB4NgoJCV9fUkVHKCAweDAwMTUwMTBjICkgPSAweDAwNTAxMDAwICAgICA7IC8vVkFMVUVfRFJBTVRNRzMgICAgLyB0X21ydzpSVzoyMDoxMDo9MHg1IHRfbXJkOlJXOjEyOjY6PTB4MSB0X21vZDpSVzowOjEwOj0weDAKCQlfX1JFRyggMHgwMDE1MDExMCApID0gMHgwMzAxMDIwNCAgICAgOyAvL1ZBTFVFX0RSQU1UTUc0ICAgIC8gdF9yY2Q6Ulc6MjQ6NTo9MHgzIHRfY2NkOlJXOjE2OjQ6PTB4MSB0X3JyZDpSVzo4OjQ6PTB4MiB0X3JwOlJXOjA6NTo9MHg0CgkJX19SRUcoIDB4MDAxNTAxMTQgKSA9IDB4MDEwMTAzMDMgICAgIDsgLy9WQUxVRV9EUkFNVE1HNSAgICAvIHRfY2tzcng6Ulc6MjQ6NDo9MHgxIHRfY2tzcmU6Ulc6MTY6NDo9MHgxIHRfY2tlc3I6Ulc6ODo2Oj0weDMgdF9ja2U6Ulc6MDo0Oj0weDMKCQlfX1JFRyggMHgwMDE1MDExOCApID0gMHgwMjAyMDAwMyAgICAgOyAvL1ZBTFVFX0RSQU1UTUc2ICAgIC8gdF9ja2RwZGU6Ulc6MjQ6NDo9MHgyIHRfY2tkcGR4OlJXOjE2OjQ6PTB4MiB0X2NrY3N4OlJXOjA6NDo9MHgzCgkJX19SRUcoIDB4MDAxNTAxMWMgKSA9IDB4MDAwMDAyMDIgICAgIDsgLy9WQUxVRV9EUkFNVE1HNyAgICAvIHRfY2twZGU6Ulc6ODo0Oj0weDIgdF9ja3BkeDpSVzowOjQ6PTB4MgoJCV9fUkVHKCAweDAwMTUwMTM4ICkgPSAweDAwMDAwMDE2ICAgICA7IC8vVkFMVUVfRFJBTVRNRzE0ICAgLyB0X3hzcjpSVzowOjEyOj0weDE2CgkJLy9iaXQzMD0xIERpc2FibGUgaXNzdWluZyBvZiBaUUNML01QQyhaUSBjYWxpYnJhdGlvbikgY29tbWFuZCBhdCBTZWxmLVJlZnJlc2gvU1ItUG93ZXJkb3duIGV4aXQgo6w3NTIw1+6/qsq8xeTWw86qMKOstbzWwtfUtq/X1Mui0MK5psTczcuz9sqx0dPKsbrctPOjrHNkaW+2wcr9vt2z9rTtCgkJX19SRUcoIDB4MDAxNTAxODAgKSA9IDB4NDAzOTAwMGYgICAgIDsgLy9WQUxVRV9aUUNUTDAgICAgICAvIGRpc19hdXRvX3pxOlJXOjMxOjE6PTB4MCBkaXNfc3J4X3pxY2w6Ulc6MzA6MTo9MHgxIHpxX3Jlc2lzdG9yX3NoYXJlZDpSVzoyOToxOj0weDAgZGlzX21wc214X3pxY2w6Ulc6Mjg6MTo9MHgwIHRfenFfbG9uZ19ub3A6Ulc6MTY6MTA6PTB4MzkgdF96cV9zaG9ydF9ub3A6Ulc6MDoxMDo9MHhmCgkJX19SRUcoIDB4MDAxNTAxODQgKSA9IDB4MDA4MDAxMDAgICAgIDsgLy9WQUxVRV9aUUNUTDEgICAgICAvIHRfenFfcmVzZXRfbm9wOlJXOjIwOjEwOj0weDggdF96cV9zaG9ydF9pbnRlcnZhbF94MTAyNDpSVzowOjIwOj0weDEwMAoKCQkjZWxzZQoJCWlmKGZsYWcgPT0gQ0hJUF9ERFJfSVNfMjU2TSkKCQkJX19SRUcoIDB4MDAxNTAwNjQgKSA9IDB4MDAxODAwMWEgICAgIDsgLy9WQUxVRV9SRlNIVE1HICAgICAvIHRfcmZjX25vbV94MzIodHJlZmkpOlJXOjE2OjEyOj0weDE4IGxwZGRyM190cmVmYndfZW46Ulc6MTU6MTo9MHgwIHRfcmZjX21pbjpSVzowOjk6PTB4MGQKCQllbHNlCgkJCV9fUkVHKCAweDAwMTUwMDY0ICkgPSAweDAwMzAwMDFhICAgICA7IC8vVkFMVUVfUkZTSFRNRyAgICAgLyB0X3JmY19ub21feDMyKHRyZWZpKTpSVzoxNjoxMjo9MHgyNiBscGRkcjNfdHJlZmJ3X2VuOlJXOjE1OjE6PTB4MCB0X3JmY19taW46Ulc6MDo5Oj0weDE0CgkJX19SRUcoIDB4MDAxNTAwZDAgKSA9IDB4MDAyODAwMDEgICAgIDsgLy9WQUxVRV9JTklUMCAgICAgICAvIHNraXBfZHJhbV9pbml0OlJXOjMxOjI6PTB4MCBwb3N0X2NrZV94MTAyNDpSVzoxNjoxMDo9MHgxZiBwcmVfY2tlX3gxMDI0OlJXOjA6MTE6PTB4MQoJCV9fUkVHKCAweDAwMTUwMGQ0ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfSU5JVDEgICAgICAgLyBkcmFtX3JzdG5feDEwMjQ6Ulc6MTY6ODo9MHgwIGZpbmFsX3dhaXRfeDMyOlJXOjg6Nzo9MHgwIHByZV9vY2RfeDMyOlJXOjA6NDo9MHgwCgkJX19SRUcoIDB4MDAxNTAwZDggKSA9IDB4MDAwMDA2MDUgICAgIDsgLy9WQUxVRV9JTklUMiAgICAgICAvIGlkbGVfYWZ0ZXJfcmVzZXRfeDMyOlJXOjg6ODo9MHg0IG1pbl9zdGFibGVfY2xvY2tfeDE6Ulc6MDo0Oj0weDUKCQkvL01SMj1STC9XTKOsMaO6UkwzL1dMMaOsMqO6Ukw0L1dMMqOsM6O6Ukw6NS9XTDKjrDSjulJMNi9XTDM6o6w1o7pSTDcvV0w0o6w2o7pSTDgvV0w0CgkJX19SRUcoIDB4MDAxNTAwZGMgKSA9IDB4MDA4MzAwMDYgICAgIDsgLy9WQUxVRV9JTklUMyAgICAgICAvIG1yOlJXOjE2OjE2Oj0weDYzIGVtcjpSVzowOjE2Oj0weDYKCQkvL2JpdDE2LTMxo6xMUEREUjIgTVIzIHZhbHVlo6zG97z+RFPErMjPysc0MG9obaOso6gxPTM0LjOjrDI9NDAsMz00OCw0PTYwLDY9ODCjqQoJCSNpZm5kZWYgX0REUl9EU180OG9tIC8vNjBvaG0KCQlfX1JFRyggMHgwMDE1MDBlMCApID0gMHgwMDA0MDAwMCAgICAgOyAvL1ZBTFVFX0lOSVQ0ICAgICAgIC8gZW1yMjpSVzoxNjoxNjo9MHgyIGVtcjM6Ulc6MDoxNjo9MHgwCgkJI2Vsc2UgLy80OG9obQoJCV9fUkVHKCAweDAwMTUwMGUwICkgPSAweDAwMDMwMDAwICAgICA7IC8vVkFMVUVfSU5JVDQgICAgICAgLyBlbXIyOlJXOjE2OjE2Oj0weDIgZW1yMzpSVzowOjE2Oj0weDAKCQkjZW5kaWYKCQlfX1JFRyggMHgwMDE1MDBlNCApID0gMHgwMDA3MDAwMiAgICAgOyAvL1ZBTFVFX0lOSVQ1ICAgICAgIC8gZGV2X3pxaW5pdF94MzI6Ulc6MTY6ODo9MHg1IG1heF9hdXRvX2luaXRfeDEwMjQ6Ulc6MDoxMDo9MHgyCgkJX19SRUcoIDB4MDAxNTAwZjQgKSA9IDB4MDAwMDA2NmYgICAgIDsgLy9WQUxVRV9SQU5LQ1RMICAgICAvIGRpZmZfcmFua193cl9nYXA6Ulc6ODo0Oj0weDYgZGlmZl9yYW5rX3JkX2dhcDpSVzo0OjQ6PTB4NiBtYXhfcmFua19yZDpSVzowOjQ6PTB4ZgoJCV9fUkVHKCAweDAwMTUwMTAwICkgPSAweDA3MGEwZDA4ICAgICA7IC8vVkFMVUVfRFJBTVRNRzAgICAgLyB3cjJwcmU6Ulc6MjQ6Njo9MHg2IHRfZmF3OlJXOjE2OjY6PTB4OCB0X3Jhc19tYXg6Ulc6ODo3Oj0weGEgdF9yYXNfbWluOlJXOjA6Njo9MHg3CgkJX19SRUcoIDB4MDAxNTAxMDQgKSA9IDB4MDAwMjAyMGQgICAgIDsgLy9WQUxVRV9EUkFNVE1HMSAgICAvIHRfeHA6Ulc6MTY6NTo9MHgyIHJkMnByZTpSVzo4OjU6PTB4MiB0X3JjOlJXOjA6Njo9MHg5CgkJLy9STD1iaXQxNi0yMaOsMaO6Ukw9MqOsMqO6Ukw9NKOsM6O6Ukw9NqOsNKO6Uj04o6xXTD1iaXQyNC0yOaOsMaO6V0w9MqOsMqO6V0w9NAoJCS8v1eLA77W81sJNUjK1xMXk1sOjqDB4MDEyMTYwZGOjqbK7xNzRodTxuqzT0Mbmyv21xNa1PwoJCV9fUkVHKCAweDAwMTUwMTA4ICkgPSAweDAyMDQwNjA3ICAgICA7IC8vVkFMVUVfRFJBTVRNRzIgICAgLyB3cml0ZV9sYXRlbmN5OlJXOjI0OjY6PTB4MiByZWFkX2xhdGVuY3k6Ulc6MTY6Njo9MHg0IHJkMndyOlJXOjg6Njo9MHg2IHdyMnJkOlJXOjA6Njo9MHg2CgkJX19SRUcoIDB4MDAxNTAxMGMgKSA9IDB4MDA1MDEwMDAgICAgIDsgLy9WQUxVRV9EUkFNVE1HMyAgICAvIHRfbXJ3OlJXOjIwOjEwOj0weDUgdF9tcmQ6Ulc6MTI6Njo9MHgxIHRfbW9kOlJXOjA6MTA6PTB4MAoJCV9fUkVHKCAweDAwMTUwMTEwICkgPSAweDA0MDEwMjA1ICAgICA7IC8vVkFMVUVfRFJBTVRNRzQgICAgLyB0X3JjZDpSVzoyNDo1Oj0weDMgdF9jY2Q6Ulc6MTY6NDo9MHgxIHRfcnJkOlJXOjg6NDo9MHgyIHRfcnA6Ulc6MDo1Oj0weDQKCQlfX1JFRyggMHgwMDE1MDExNCApID0gMHgwMTAxMDMwMyAgICAgOyAvL1ZBTFVFX0RSQU1UTUc1ICAgIC8gdF9ja3NyeDpSVzoyNDo0Oj0weDEgdF9ja3NyZTpSVzoxNjo0Oj0weDEgdF9ja2VzcjpSVzo4OjY6PTB4MyB0X2NrZTpSVzowOjQ6PTB4MwoJCV9fUkVHKCAweDAwMTUwMTE4ICkgPSAweDAyMDIwMDAzICAgICA7IC8vVkFMVUVfRFJBTVRNRzYgICAgLyB0X2NrZHBkZTpSVzoyNDo0Oj0weDIgdF9ja2RwZHg6Ulc6MTY6NDo9MHgyIHRfY2tjc3g6Ulc6MDo0Oj0weDMKCQlfX1JFRyggMHgwMDE1MDExYyApID0gMHgwMDAwMDIwMiAgICAgOyAvL1ZBTFVFX0RSQU1UTUc3ICAgIC8gdF9ja3BkZTpSVzo4OjQ6PTB4MiB0X2NrcGR4OlJXOjA6NDo9MHgyCgkJX19SRUcoIDB4MDAxNTAxMzggKSA9IDB4MDAwMDAwMWMgICAgIDsgLy9WQUxVRV9EUkFNVE1HMTQgICAvIHRfeHNyOlJXOjA6MTI6PTB4MTYKCQkvL2JpdDMwPTEgRGlzYWJsZSBpc3N1aW5nIG9mIFpRQ0wvTVBDKFpRIGNhbGlicmF0aW9uKSBjb21tYW5kIGF0IFNlbGYtUmVmcmVzaC9TUi1Qb3dlcmRvd24gZXhpdCCjrDc1MjDX7r+qyrzF5NbDzqowo6y1vNbC19S2r9fUy6LQwrmmxNzNy7P2yrHR08qxuty086Osc2Rpb7bByv2+3bP2tO0KCQlfX1JFRyggMHgwMDE1MDE4MCApID0gMHg0MDQ4MDAxMiAgICAgOyAvL1ZBTFVFX1pRQ1RMMCAgICAgIC8gZGlzX2F1dG9fenE6Ulc6MzE6MTo9MHgwIGRpc19zcnhfenFjbDpSVzozMDoxOj0weDEgenFfcmVzaXN0b3Jfc2hhcmVkOlJXOjI5OjE6PTB4MCBkaXNfbXBzbXhfenFjbDpSVzoyODoxOj0weDAgdF96cV9sb25nX25vcDpSVzoxNjoxMDo9MHgzOSB0X3pxX3Nob3J0X25vcDpSVzowOjEwOj0weGYKCQlfX1JFRyggMHgwMDE1MDE4NCApID0gMHgwMGEwMDEwMCAgICAgOyAvL1ZBTFVFX1pRQ1RMMSAgICAgIC8gdF96cV9yZXNldF9ub3A6Ulc6MjA6MTA6PTB4OCB0X3pxX3Nob3J0X2ludGVydmFsX3gxMDI0OlJXOjA6MjA6PTB4MTAwCgkJI2VuZGlmCgl9CQoKCV9fUkVHKCAweDAwMTUwMTg4ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfWlFDVEwyICAgICAgLyB6cV9yZXNldDpSVzowOjE6PTB4MAoJLy9kZmlfdF9yZGRhdGFfZW49MyzWrsewNzUyMMnPyeizyTK74bW81sK2wW1ytsG07QoJX19SRUcoIDB4MDAxNTAxOTAgKSA9IDB4MDQwMzAwMDEgICAgIDsgLy9WQUxVRV9ERklUTUcwICAgICAvIGRmaV90X2N0cmxfZGVsYXk6Ulc6MjQ6NTo9MHg0IGRmaV9yZGRhdGFfdXNlX3NkcjpSVzoyMzoxOj0weDAgZGZpX3RfcmRkYXRhX2VuOlJXOjE2OjY6PTB4MyBkZmlfd3JkYXRhX3VzZV9zZHI6Ulc6MTU6MTo9MHgwIGRmaV90cGh5X3dyZGF0YTpSVzo4OjY6PTB4MCBkZmlfdHBoeV93cmxhdDpSVzowOjY6PTB4MQoJX19SRUcoIDB4MDAxNTAxOTQgKSA9IDB4MDAwMjA0MDQgICAgIDsgLy9WQUxVRV9ERklUTUcxICAgICAvIGRmaV90X2NtZF9sYXQ6Ulc6Mjg6NDo9MHgwIGRmaV90X3BhcmluX2xhdDpSVzoyNDoyOj0weDAgZGZpX3Rfd3JkYXRhX2RlbGF5OlJXOjE2OjU6PTB4MiBkZmlfdF9kcmFtX2Nsa19kaXNhYmxlOlJXOjg6NDo9MHg0IGRmaV90X2RyYW1fY2xrX2VuYWJsZTpSVzowOjQ6PTB4NAoJX19SRUcoIDB4MDAxNTAxOTggKSA9IDB4MDkwMDExMTEgICAgIDsgLy9WQUxVRV9ERklMUENGRzAgICAvIGRmaV90bHBfcmVzcDpSVzoyNDo0Oj0weDkgZGZpX2xwX3dha2V1cF9kcGQ6Ulc6MjA6NDo9MHgwIGRmaV9scF9lbl9kcGQ6Ulc6MTY6MTo9MHgwIGRmaV9scF93YWtldXBfc3I6Ulc6MTI6NDo9MHgxIGRmaV9scF9lbl9zcjpSVzo4OjE6PTB4MSBkZmlfbHBfd2FrZXVwX3BkOlJXOjQ6NDo9MHgxIGRmaV9scF9lbl9wZDpSVzowOjE6PTB4MQoJX19SRUcoIDB4MDAxNTAxYTAgKSA9IDB4ODA0MDAwMDMgICAgIDsgLy9WQUxVRV9ERklVUEQwICAgICAvIGRpc19hdXRvX2N0cmx1cGQ6Ulc6MzE6MTo9MHgxIGRmaV90X2N0cmx1cF9tYXg6Ulc6MTY6MTA6PTB4NDAgZGZpX3RfY3RybHVwX21pbjpSVzowOjEwOj0weDMKCV9fUkVHKCAweDAwMTUwMWE0ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfREZJVVBEMSAgICAgLyBkZmlfdF9jdHJsdXBkX2ludGVydmFsX21pbl94MTAyNDpSVzoxNjo4Oj0weDAgZGZpX3RfY3RybHVwZF9pbnRlcnZhbF9tYXhfeDEwMjQ6Ulc6MDo4Oj0weDAKCV9fUkVHKCAweDAwMTUwMWE4ICkgPSAweDgwMTAwMDEwICAgICA7IC8vVkFMVUVfREZJVVBEMiAgICAgLyBkZmlfcGh5dXBkX2VuOlJXOjMxOjE6PTB4MSBkZmlfcGh5dXBkX3R5cGUxOlJXOjE2OjEyOj0weDEwIGRmaV9waHl1cGRfdHlwZTA6Ulc6MDoxMjo9MHgxMAoJX19SRUcoIDB4MDAxNTAxYjAgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9ERklNSVNDICAgICAvIGRmaV9kYXRhX2NzX3BvbGFyaXR5OlJXOjI6MTo9MHgwIHBoeV9kYmlfbW9kZTpSVzoxOjE6PTB4MCBkZmlfaW5pdF9jb21wbGV0ZV9lbjpSVzowOjE6PTB4MAoJX19SRUcoIDB4MDAxNTAyMDAgKSA9IDB4MDAwMDAwMWYgICAgIDsgLy9WQUxVRV9BRERSTUFQMCAgICAvIGFkZHJtYXBfZGNoX2JpdDA6Ulc6MTY6NTo9MHgwIGFkZHJtYXBfY3NfYml0MTpSVzo4OjU6PTB4MCBhZGRybWFwX2NzX2JpdDA6Ulc6MDo1Oj0weDFmCgoJaWYoZmxhZyA9PSBDSElQX0REUl9JU18zMk0pCgl7CgkJX19SRUcoIDB4MDAxNTAyMDQgKSA9IDB4MDAxZjA2MDYJIDsgLy9WQUxVRV9BRERSTUFQMSAgICAvIGFkZHJtYXBfYmFua19iMjpSVzoxNjo0Oj0weDcgYWRkcm1hcF9iYW5rX2IxOlJXOjg6NDo9MHg3IGFkZHJtYXBfYmFua19iMDpSVzowOjQ6PTB4NwoJCV9fUkVHKCAweDAwMTUwMjA4ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfQUREUk1BUDIgICAgLyBhZGRybWFwX2NvbF9iNTpSVzoyNDo0Oj0weDAgYWRkcm1hcF9jb2xfYjQ6Ulc6MTY6NDo9MHgwIGFkZHJtYXBfY29sX2IzOlJXOjg6NDo9MHgwIGFkZHJtYXBfY29sX2IyOlJXOjA6NDo9MHgwCgkJX19SRUcoIDB4MDAxNTAyMGMgKSA9IDB4MGYwZjAwMDAgICAgIDsgLy9WQUxVRV9BRERSTUFQMyAgICAvIGFkZHJtYXBfY29sX2I5OlJXOjI0OjQ6PTB4ZiBhZGRybWFwX2NvbF9iODpSVzoxNjo0Oj0weDAgYWRkcm1hcF9jb2xfYjc6Ulc6ODo0Oj0weDAgYWRkcm1hcF9jb2xfYjY6Ulc6MDo0Oj0weDAKCQlfX1JFRyggMHgwMDE1MDIxMCApID0gMHgwMDAwMGYwZiAgICAgOyAvL1ZBTFVFX0FERFJNQVA0ICAgIC8gYWRkcm1hcF9jb2xfYjExOlJXOjg6NDo9MHhmIGFkZHJtYXBfY29sX2IxMDpSVzowOjQ6PTB4ZgoKCX0KCWVsc2UgaWYoZmxhZyA9PSBDSElQX0REUl9JU182NE0pCgl7CQkKCQlfX1JFRyggMHgwMDE1MDIwNCApID0gMHgwMDFmMDcwNwkgOyAvL1ZBTFVFX0FERFJNQVAxICAgIC8gYWRkcm1hcF9iYW5rX2IyOlJXOjE2OjQ6PTB4NyBhZGRybWFwX2JhbmtfYjE6Ulc6ODo0Oj0weDcgYWRkcm1hcF9iYW5rX2IwOlJXOjA6NDo9MHg3CgkJX19SRUcoIDB4MDAxNTAyMDggKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9BRERSTUFQMiAgICAvIGFkZHJtYXBfY29sX2I1OlJXOjI0OjQ6PTB4MCBhZGRybWFwX2NvbF9iNDpSVzoxNjo0Oj0weDAgYWRkcm1hcF9jb2xfYjM6Ulc6ODo0Oj0weDAgYWRkcm1hcF9jb2xfYjI6Ulc6MDo0Oj0weDAKCQlfX1JFRyggMHgwMDE1MDIwYyApID0gMHgwZjAwMDAwMCAgICAgOyAvL1ZBTFVFX0FERFJNQVAzICAgIC8gYWRkcm1hcF9jb2xfYjk6Ulc6MjQ6NDo9MHhmIGFkZHJtYXBfY29sX2I4OlJXOjE2OjQ6PTB4MCBhZGRybWFwX2NvbF9iNzpSVzo4OjQ6PTB4MCBhZGRybWFwX2NvbF9iNjpSVzowOjQ6PTB4MAoJCV9fUkVHKCAweDAwMTUwMjEwICkgPSAweDAwMDAwZjBmICAgICA7IC8vVkFMVUVfQUREUk1BUDQgICAgLyBhZGRybWFwX2NvbF9iMTE6Ulc6ODo0Oj0weGYgYWRkcm1hcF9jb2xfYjEwOlJXOjA6NDo9MHhmCgkJCgl9CgllbHNlCgl7CQkKCQlfX1JFRyggMHgwMDE1MDIwNCApID0gMHgwMDA3MDcwNwkgOyAvL1ZBTFVFX0FERFJNQVAxICAgIC8gYWRkcm1hcF9iYW5rX2IyOlJXOjE2OjQ6PTB4NyBhZGRybWFwX2JhbmtfYjE6Ulc6ODo0Oj0weDcgYWRkcm1hcF9iYW5rX2IwOlJXOjA6NDo9MHg3CgkJX19SRUcoIDB4MDAxNTAyMDggKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9BRERSTUFQMiAgICAvIGFkZHJtYXBfY29sX2I1OlJXOjI0OjQ6PTB4MCBhZGRybWFwX2NvbF9iNDpSVzoxNjo0Oj0weDAgYWRkcm1hcF9jb2xfYjM6Ulc6ODo0Oj0weDAgYWRkcm1hcF9jb2xfYjI6Ulc6MDo0Oj0weDAKCQlfX1JFRyggMHgwMDE1MDIwYyApID0gMHgwZjAwMDAwMCAgICAgOyAvL1ZBTFVFX0FERFJNQVAzICAgIC8gYWRkcm1hcF9jb2xfYjk6Ulc6MjQ6NDo9MHhmIGFkZHJtYXBfY29sX2I4OlJXOjE2OjQ6PTB4MCBhZGRybWFwX2NvbF9iNzpSVzo4OjQ6PTB4MCBhZGRybWFwX2NvbF9iNjpSVzowOjQ6PTB4MAoJCV9fUkVHKCAweDAwMTUwMjEwICkgPSAweDAwMDAwZjBmICAgICA7IC8vVkFMVUVfQUREUk1BUDQgICAgLyBhZGRybWFwX2NvbF9iMTE6Ulc6ODo0Oj0weGYgYWRkcm1hcF9jb2xfYjEwOlJXOjA6NDo9MHhmCgkKCX0KCglpZihmbGFnID09IENISVBfRERSX0lTXzMyTSkKCXsKCQlfX1JFRyggMHgwMDE1MDIxNCApID0gMHgwNDA0MDQwNAkgOyAvL1ZBTFVFX0FERFJNQVA1ICAgIC8gYWRkcm1hcF9yb3dfYjExOlJXOjI0OjQ6PTB4NiBhZGRybWFwX3Jvd19iMl8xMDpSVzoxNjo0Oj0weDYgYWRkcm1hcF9yb3dfYjE6Ulc6ODo0Oj0weDYgYWRkcm1hcF9yb3dfYjA6Ulc6MDo0Oj0weDYKCQlfX1JFRyggMHgwMDE1MDIxOCApID0gMHgwZjBmMGYwNAkgOyAvL1ZBTFVFX0FERFJNQVA2ICAgIC8gYWRkcm1hcF9yb3dfYjE1OlJXOjI0OjQ6PTB4ZiBhZGRybWFwX3Jvd19iMTQ6Ulc6MTY6NDo9MHhmIGFkZHJtYXBfcm93X2IxMzpSVzo4OjQ6PTB4ZiBhZGRybWFwX3Jvd19iMTI6Ulc6MDo0Oj0weDYKCX0KCWVsc2UgaWYoZmxhZyA9PSBDSElQX0REUl9JU182NE0pCgl7CQoJCV9fUkVHKCAweDAwMTUwMjE0ICkgPSAweDA1MDUwNTA1CSA7IC8vVkFMVUVfQUREUk1BUDUgICAgLyBhZGRybWFwX3Jvd19iMTE6Ulc6MjQ6NDo9MHg2IGFkZHJtYXBfcm93X2IyXzEwOlJXOjE2OjQ6PTB4NiBhZGRybWFwX3Jvd19iMTpSVzo4OjQ6PTB4NiBhZGRybWFwX3Jvd19iMDpSVzowOjQ6PTB4NgoJCV9fUkVHKCAweDAwMTUwMjE4ICkgPSAweDBmMGYwZjA1CSA7IC8vVkFMVUVfQUREUk1BUDYgICAgLyBhZGRybWFwX3Jvd19iMTU6Ulc6MjQ6NDo9MHhmIGFkZHJtYXBfcm93X2IxNDpSVzoxNjo0Oj0weGYgYWRkcm1hcF9yb3dfYjEzOlJXOjg6NDo9MHhmIGFkZHJtYXBfcm93X2IxMjpSVzowOjQ6PTB4NgoJfQoKCWVsc2UgaWYoZmxhZyA9PSBDSElQX0REUl9JU18yNTZNKSAKCXsJCgkJX19SRUcoIDB4MDAxNTAyMTQgKSA9IDB4MDYwNjA2MDYJIDsgLy9WQUxVRV9BRERSTUFQNSAgICAvIGFkZHJtYXBfcm93X2IxMTpSVzoyNDo0Oj0weDYgYWRkcm1hcF9yb3dfYjJfMTA6Ulc6MTY6NDo9MHg2IGFkZHJtYXBfcm93X2IxOlJXOjg6NDo9MHg2IGFkZHJtYXBfcm93X2IwOlJXOjA6NDo9MHg2CgkJX19SRUcoIDB4MDAxNTAyMTggKSA9IDB4MGYwZjA2MDYJIDsgLy9WQUxVRV9BRERSTUFQNiAgICAvIGFkZHJtYXBfcm93X2IxNTpSVzoyNDo0Oj0weGYgYWRkcm1hcF9yb3dfYjE0OlJXOjE2OjQ6PTB4ZiBhZGRybWFwX3Jvd19iMTM6Ulc6ODo0Oj0weDYgYWRkcm1hcF9yb3dfYjEyOlJXOjA6NDo9MHg2Cgl9CgllbHNlCgl7CQoJCV9fUkVHKCAweDAwMTUwMjE0ICkgPSAweDA2MDYwNjA2CSA7IC8vVkFMVUVfQUREUk1BUDUgICAgLyBhZGRybWFwX3Jvd19iMTE6Ulc6MjQ6NDo9MHg2IGFkZHJtYXBfcm93X2IyXzEwOlJXOjE2OjQ6PTB4NiBhZGRybWFwX3Jvd19iMTpSVzo4OjQ6PTB4NiBhZGRybWFwX3Jvd19iMDpSVzowOjQ6PTB4NgoJCV9fUkVHKCAweDAwMTUwMjE4ICkgPSAweDBmMGYwZjA2CSA7IC8vVkFMVUVfQUREUk1BUDYgICAgLyBhZGRybWFwX3Jvd19iMTU6Ulc6MjQ6NDo9MHhmIGFkZHJtYXBfcm93X2IxNDpSVzoxNjo0Oj0weGYgYWRkcm1hcF9yb3dfYjEzOlJXOjg6NDo9MHhmIGFkZHJtYXBfcm93X2IxMjpSVzowOjQ6PTB4NgoJfQoJX19SRUcoIDB4MDAxNTAyNDAgKSA9IDB4MDQwMDA0MDAgICAgIDsgLy9WQUxVRV9PRFRDRkcgICAgICAvIHdyX29kdF9ob2xkOlJXOjI0OjQ6PTB4NCB3cl9vZHRfZGVsYXk6Ulc6MTY6NDo9MHgwIHJkX29kdF9ob2xkOlJXOjg6NDo9MHg0IHJkX29kdF9kZWxheTpSVzoyOjQ6PTB4MAoJX19SRUcoIDB4MDAxNTAyNDQgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9PRFRNQVAgICAgICAvIHJhbmszX3JkX29kdDpSVzoyODo0Oj0weDAgcmFuazNfd3Jfb2R0OlJXOjI0OjQ6PTB4MCByYW5rMl9yZF9vZHQ6Ulc6MjA6NDo9MHgwIHJhbmsyX3dyX29kdDpSVzoxNjo0Oj0weDAgcmFuazFfcmRfb2R0OlJXOjEyOjQ6PTB4MCByYW5rMV93cl9vZHQ6Ulc6ODo0Oj0weDAgcmFuazBfcmRfb2R0OlJXOjQ6NDo9MHgwIHJhbmswX3dyX29kdDpSVzowOjQ6PTB4MAoJX19SRUcoIDB4MDAxNTAyNTAgKSA9IDB4MDAwMDE4MDUgICAgIDsgLy9WQUxVRV9TQ0hFRCAgICAgICAvIHJkd3JfaWRsZV9nYXA6Ulc6MjQ6Nzo9MHgwIGdvMmNyaXRpY2FsX2h5c3RlcmVzaXM6Ulc6MTY6ODo9MHgwIGxwcl9udW1fZW50cmllczpSVzo4OjY6PTB4MTggcGFnZWNsb3NlOlJXOjI6MTo9MHgxIHByZWZlcl93cml0ZTpSVzoxOjE6PTB4MCBmb3JjZV9sb3dfcHJpX246Ulc6MDoxOj0weDEKCV9fUkVHKCAweDAwMTUwMjU0ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfU0NIRUQxICAgICAgLyBwYWdlY2xvc2VfdGltZXI6Ulc6MDo4Oj0weDAKCglfX1JFRyggMHgwMDE1MDMwMCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX0RCRzAgICAgICAgIC8gZGlzX2NvbGxpc2lvbl9wYWdlX29wdDpSVzo0OjE6PTB4MCBkaXNfYWN0X2J5cGFzczpSVzoyOjE6PTB4MCBkaXNfcmRfYnlwYXNzOlJXOjE6MTo9MHgwIGRpc193YzpSVzowOjE6PTB4MAoJX19SRUcoIDB4MDAxNTAzMDQgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9EQkcxICAgICAgICAvIGRpc19kcTpSVzoxOjE6PTB4MCBkaXNfaGlnOlJXOjA6MTo9MHgwCglfX1JFRyggMHgwMDE1MDMwYyApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX0RCR0NNRCAgICAgIC8gY3RybHVwZDpSV1NDOjU6MTo9MHgwIHpxX2NhbGliX3Nob3J0OlJXU0M6NDoxOj0weDAgcmFuazNfcmVmcmVzaDpSV1NDOjM6MTo9MHgwIHJhbmsyX3JlZnJlc2g6UldTQzoyOjE6PTB4MCByYW5rMV9yZWZyZXNoOlJXU0M6MToxOj0weDAgcmFuazBfcmVmcmVzaDpSV1NDOjA6MTo9MHgwCgoJX19SRUcoIDB4MDAxNTA0MDAgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9QQ0NGRyAgICAgICAvIGJsX2V4cF9tb2RlOlJXOjg6MTo9MHgwIHBhZ2VtYXRjaF9saW1pdDpSVzoxOjE6PTB4MCBnbzJjcml0aWNhbF9lbjpSVzowOjE6PTB4MAoKICAgIHJldHVybiAwOwoKfQoKaW50IGRkcl9wcmlvX2luaXQoaW50IGZsYWcpCnsKCS8vcG9ydCByZWFkIHN0YXRpYyBwcmlvcml0eSBiaXQwLTksIGJpdDAtNCB0aW1lb3V0LCBiaXQ1LTkgcHJpb3JpdHkKCV9fUkVHKCAweDAwMTUwNDA0ICkgPSAweDAwMDAxM2ZmICAgICA7IC8vVkFMVUVfUENGR1JfMCAgICAgLyByZHdyX29yZGVyZWRfZW46Ulc6MTY6MTo9MHgwIHJkX3BvcnRfcGFnZW1hdGNoX2VuOlJXOjE0OjE6PTB4MCByZF9wb3J0X3VyZ2VudF9lbjpSVzoxMzoxOj0weDAgcmRfcG9ydF9hZ2luZ19lbjpSVzoxMjoxOj0weDEgcmVhZF9yZW9yZGVyX2J5cGFzc19lbjpSVzoxMToxOj0weDAgcmRfcG9ydF9wcmlvcml0eTpSVzowOjEwOj0weDNmZgoJX19SRUcoIDB4MDAxNTA0YjQgKSA9IDB4MDAwMDEwMjAgICAgIDsgLy9WQUxVRV9QQ0ZHUl8xICAgICAvIHJkd3Jfb3JkZXJlZF9lbjpSVzoxNjoxOj0weDAgcmRfcG9ydF9wYWdlbWF0Y2hfZW46Ulc6MTQ6MTo9MHgwIHJkX3BvcnRfdXJnZW50X2VuOlJXOjEzOjE6PTB4MCByZF9wb3J0X2FnaW5nX2VuOlJXOjEyOjE6PTB4MSByZWFkX3Jlb3JkZXJfYnlwYXNzX2VuOlJXOjExOjE6PTB4MCByZF9wb3J0X3ByaW9yaXR5OlJXOjA6MTA6PTB4MjAKCV9fUkVHKCAweDAwMTUwNTY0ICkgPSAweDAwMDAxMDAwICAgICA7IC8vVkFMVUVfUENGR1JfMiAgICAgLyByZHdyX29yZGVyZWRfZW46Ulc6MTY6MTo9MHgwIHJkX3BvcnRfcGFnZW1hdGNoX2VuOlJXOjE0OjE6PTB4MCByZF9wb3J0X3VyZ2VudF9lbjpSVzoxMzoxOj0weDAgcmRfcG9ydF9hZ2luZ19lbjpSVzoxMjoxOj0weDEgcmVhZF9yZW9yZGVyX2J5cGFzc19lbjpSVzoxMToxOj0weDAgcmRfcG9ydF9wcmlvcml0eTpSVzowOjEwOj0weDAKCV9fUkVHKCAweDAwMTUwNjE0ICkgPSAweDAwMDAxMDA0ICAgICA7IC8vVkFMVUVfUENGR1JfMyAgICAgLyByZHdyX29yZGVyZWRfZW46Ulc6MTY6MTo9MHgwIHJkX3BvcnRfcGFnZW1hdGNoX2VuOlJXOjE0OjE6PTB4MCByZF9wb3J0X3VyZ2VudF9lbjpSVzoxMzoxOj0weDAgcmRfcG9ydF9hZ2luZ19lbjpSVzoxMjoxOj0weDEgcmVhZF9yZW9yZGVyX2J5cGFzc19lbjpSVzoxMToxOj0weDAgcmRfcG9ydF9wcmlvcml0eTpSVzowOjEwOj0weDQKCSAvL3BvcnQgd3JpdGUgc3RhdGljIHByaW9yaXR5IGJpdDAtOQoJX19SRUcoIDB4MDAxNTA0MDggKSA9IDB4MDAwMDEzZmYgICAgIDsgLy9WQUxVRV9QQ0ZHV18wICAgICAvIHdyX3BvcnRfcGFnZW1hdGNoX2VuOlJXOjE0OjE6PTB4MCB3cl9wb3J0X3VyZ2VudF9lbjpSVzoxMzoxOj0weDAgd3JfcG9ydF9hZ2luZ19lbjpSVzoxMjoxOj0weDEgd3JfcG9ydF9wcmlvcml0eTpSVzowOjEwOj0weDNmZgoJX19SRUcoIDB4MDAxNTA0YjggKSA9IDB4MDAwMDEwZmYgICAgIDsgLy9WQUxVRV9QQ0ZHV18xICAgICAvIHdyX3BvcnRfcGFnZW1hdGNoX2VuOlJXOjE0OjE6PTB4MCB3cl9wb3J0X3VyZ2VudF9lbjpSVzoxMzoxOj0weDAgd3JfcG9ydF9hZ2luZ19lbjpSVzoxMjoxOj0weDEgd3JfcG9ydF9wcmlvcml0eTpSVzowOjEwOj0weGZmCglfX1JFRyggMHgwMDE1MDU2OCApID0gMHgwMDAwMTAzZiAgICAgOyAvL1ZBTFVFX1BDRkdXXzIgICAgIC8gd3JfcG9ydF9wYWdlbWF0Y2hfZW46Ulc6MTQ6MTo9MHgwIHdyX3BvcnRfdXJnZW50X2VuOlJXOjEzOjE6PTB4MCB3cl9wb3J0X2FnaW5nX2VuOlJXOjEyOjE6PTB4MSB3cl9wb3J0X3ByaW9yaXR5OlJXOjA6MTA6PTB4M2YKCV9fUkVHKCAweDAwMTUwNjE4ICkgPSAweDAwMDAxMDVmICAgICA7IC8vVkFMVUVfUENGR1dfMyAgICAgLyB3cl9wb3J0X3BhZ2VtYXRjaF9lbjpSVzoxNDoxOj0weDAgd3JfcG9ydF91cmdlbnRfZW46Ulc6MTM6MTo9MHgwIHdyX3BvcnRfYWdpbmdfZW46Ulc6MTI6MTo9MHgxIHdyX3BvcnRfcHJpb3JpdHk6Ulc6MDoxMDo9MHg1ZgoJLy9wb3J0IHJlYWQgcmVnaW9uIHNldAoJX19SRUcoIDB4MDAxNTA0OTQgKSA9IDB4MDAyMDAwMGUgICAgIDsgLy9WQUxVRV9QQ0ZHUU9TMF8wICAvIHJxb3NfbWFwX3JlZ2lvbjI6Ulc6MjQ6Mjo9MHgwIHJxb3NfbWFwX3JlZ2lvbjE6Ulc6MjA6Mjo9MHgyIHJxb3NfbWFwX3JlZ2lvbjA6Ulc6MTY6Mjo9MHgwIHJxb3NfbWFwX2xldmVsMjpSVzo4OjQ6PTB4MCBycW9zX21hcF9sZXZlbDE6Ulc6MDo0Oj0weGUKCV9fUkVHKCAweDAwMTUwNTQ0ICkgPSAweDAwMjAwMDBlICAgICA7IC8vVkFMVUVfUENGR1FPUzBfMSAgLyBycW9zX21hcF9yZWdpb24yOlJXOjI0OjI6PTB4MCBycW9zX21hcF9yZWdpb24xOlJXOjIwOjI6PTB4MiBycW9zX21hcF9yZWdpb24wOlJXOjE2OjI6PTB4MCBycW9zX21hcF9sZXZlbDI6Ulc6ODo0Oj0weDAgcnFvc19tYXBfbGV2ZWwxOlJXOjA6NDo9MHhlCglfX1JFRyggMHgwMDE1MDVmNCApID0gMHgwMDIwMDAwZSAgICAgOyAvL1ZBTFVFX1BDRkdRT1MwXzIgIC8gcnFvc19tYXBfcmVnaW9uMjpSVzoyNDoyOj0weDAgcnFvc19tYXBfcmVnaW9uMTpSVzoyMDoyOj0weDIgcnFvc19tYXBfcmVnaW9uMDpSVzoxNjoyOj0weDAgcnFvc19tYXBfbGV2ZWwyOlJXOjg6NDo9MHgwIHJxb3NfbWFwX2xldmVsMTpSVzowOjQ6PTB4ZQoJX19SRUcoIDB4MDAxNTA2YTQgKSA9IDB4MDAyMDAwMGUgICAgIDsgLy9WQUxVRV9QQ0ZHUU9TMF8zICAvIHJxb3NfbWFwX3JlZ2lvbjI6Ulc6MjQ6Mjo9MHgwIHJxb3NfbWFwX3JlZ2lvbjE6Ulc6MjA6Mjo9MHgyIHJxb3NfbWFwX3JlZ2lvbjA6Ulc6MTY6Mjo9MHgwIHJxb3NfbWFwX2xldmVsMjpSVzo4OjQ6PTB4MCBycW9zX21hcF9sZXZlbDE6Ulc6MDo0Oj0weGUKCS8vcG9ydCB3cml0ZSByZWdpb24gc2V0CglfX1JFRyggMHgwMDE1MDQ5YyApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1BDRkdXUU9TMF8wIC8gd3Fvc19tYXBfcmVnaW9uMTpSVzoyMDoyOj0weDAgd3Fvc19tYXBfcmVnaW9uMDpSVzoxNjoyOj0weDAgd3Fvc19tYXBfbGV2ZWw6Ulc6MDo0Oj0weDAKCV9fUkVHKCAweDAwMTUwNTRjICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfUENGR1dRT1MwXzEgLyB3cW9zX21hcF9yZWdpb24xOlJXOjIwOjI6PTB4MCB3cW9zX21hcF9yZWdpb24wOlJXOjE2OjI6PTB4MCB3cW9zX21hcF9sZXZlbDpSVzowOjQ6PTB4MAoJX19SRUcoIDB4MDAxNTA1ZmMgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9QQ0ZHV1FPUzBfMiAvIHdxb3NfbWFwX3JlZ2lvbjE6Ulc6MjA6Mjo9MHgwIHdxb3NfbWFwX3JlZ2lvbjA6Ulc6MTY6Mjo9MHgwIHdxb3NfbWFwX2xldmVsOlJXOjA6NDo9MHgwCglfX1JFRyggMHgwMDE1MDZhYyApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1BDRkdXUU9TMF8zIC8gd3Fvc19tYXBfcmVnaW9uMTpSVzoyMDoyOj0weDAgd3Fvc19tYXBfcmVnaW9uMDpSVzoxNjoyOj0weDAgd3Fvc19tYXBfbGV2ZWw6Ulc6MDo0Oj0weDAKCS8vdnByIHRpbWVvdXQsIHJlZ2lvbjIgaXMgcmVkIHF1ZXVlCglfX1JFRyggMHgwMDE1MDQ5OCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1BDRkdRT1MxXzAgIC8gcnFvc19tYXBfdGltZW91dHI6Ulc6MTY6MTE6PTB4MCBycW9zX21hcF90aW1lb3V0YjpSVzowOjExOj0weDAKCV9fUkVHKCAweDAwMTUwNTQ4ICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfUENGR1FPUzFfMSAgLyBycW9zX21hcF90aW1lb3V0cjpSVzoxNjoxMTo9MHgwIHJxb3NfbWFwX3RpbWVvdXRiOlJXOjA6MTE6PTB4MAoJX19SRUcoIDB4MDAxNTA1ZjggKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9QQ0ZHUU9TMV8yICAvIHJxb3NfbWFwX3RpbWVvdXRyOlJXOjE2OjExOj0weDAgcnFvc19tYXBfdGltZW91dGI6Ulc6MDoxMTo9MHgwCglfX1JFRyggMHgwMDE1MDZhOCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1BDRkdRT1MxXzMgIC8gcnFvc19tYXBfdGltZW91dHI6Ulc6MTY6MTE6PTB4MCBycW9zX21hcF90aW1lb3V0YjpSVzowOjExOj0weDAKCS8vdnB3IHRpbWVvdXQKCV9fUkVHKCAweDAwMTUwNGEwICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfUENGR1dRT1MxXzAgLyB3cW9zX21hcF90aW1lb3V0OlJXOjA6MTE6PTB4MAoJX19SRUcoIDB4MDAxNTA1NTAgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9QQ0ZHV1FPUzFfMSAvIHdxb3NfbWFwX3RpbWVvdXQ6Ulc6MDoxMTo9MHgwCglfX1JFRyggMHgwMDE1MDYwMCApID0gMHgwMDAwMDAwMCAgICAgOyAvL1ZBTFVFX1BDRkdXUU9TMV8yIC8gd3Fvc19tYXBfdGltZW91dDpSVzowOjExOj0weDAKCV9fUkVHKCAweDAwMTUwNmIwICkgPSAweDAwMDAwMDAwICAgICA7IC8vVkFMVUVfUENGR1dRT1MxXzMgLyB3cW9zX21hcF90aW1lb3V0OlJXOjA6MTE6PTB4MAoJLy9pbiBDQU0gc2V0CglfX1JFRyggMHgwMDE1MDI1YyApID0gMHgwZjAwMDAwMSAgICAgOyAvL1ZBTFVFX1BFUkZIUFIxICAgIC8gaHByX3hhY3RfcnVuX2xlbmd0aDpSVzoyNDo4Oj0weGYgaHByX21heF9zdGFydmU6Ulc6MDoxNjo9MHgxCglfX1JFRyggMHgwMDE1MDI2NCApID0gMHgwZjAwMDA3ZiAgICAgOyAvL1ZBTFVFX1BFUkZMUFIxICAgIC8gbHByX3hhY3RfcnVuX2xlbmd0aDpSVzoyNDo4Oj0weGYgbHByX21heF9zdGFydmU6Ulc6MDoxNjo9MHg3ZgoJX19SRUcoIDB4MDAxNTAyNmMgKSA9IDB4MGYwMDAwN2YgICAgIDsgLy9WQUxVRV9QRVJGV1IxICAgICAvIHdfeGFjdF9ydW5fbGVuZ3RoOlJXOjI0Ojg6PTB4ZiB3X21heF9zdGFydmU6Ulc6MDoxNjo9MHg3ZgoJX19SRUcoIDB4MDAxNTAyNzQgKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9QRVJGVlBSMSAgICAvIHZwcl90aW1lb3V0X3JhbmdlOlJXOjA6MTE6PTB4MAoJX19SRUcoIDB4MDAxNTAyNzggKSA9IDB4MDAwMDAwMDAgICAgIDsgLy9WQUxVRV9QRVJGVlBXMSAgICAvIHZwd190aW1lb3V0X3JhbmdlOlJXOjA6MTE6PTB4MAoJLy9wb3J0IGV4dGVybiBzdGF0aWMgcHJpb3JpdHkJCgkvL19fUkVHKCAweDAwMTNkMDM0ICkgPSAweGYwZjAwMDAwIDsgLy9wb3J0MCwxIHJxb3M9MChMUFIpOyBwb3J0MiwzIHJxb3M9RihIUFIpICAgICAgIAoJCiAgICByZXR1cm4gMDsKCQp9CgppbnQgZGRyX2luaXQoaW50IGZsYWcpCnsJCglVSU5UMzIgZ19QaHlKWls2XT17MH07CgkKCS8vX19SRUcoIDB4MDEzMDYxMDAgKSA9IDB4ZmZmZmUwMDAgOyAvL2RkciBhbGwgcmVzZXQgZW5hYmxlICBiaXQ2LTEyPTAgICAKCV9fUkVHKCAweDAxMzA2MTAwICkgPSAweDBhZmZlMDAwIDsgLy9kZHIgYWxsIHJlc2V0IGVuYWJsZSAgYml0Ni0xMj0wIAoJbnNkZWxheSgyMDAwMDApOy8vMC4wMXMgCglfX1JFRyggMHgwMTMwNjEwMCApID0gMHgwYWZmZTQwMCA7IC8vcmVsZWFzZSBkZHIgYXBiKGJpdDEwKQoJbnNkZWxheSgyMDAwMDApOy8vMC4wMXMKCgkvL2RkciBjbGsgaW5pdAoJZGRyX2Nsa19pbml0KGZsYWcpOwoJCgkvL3BoeSByZWdpc3RlciBpbml0ICAKCWRkcl9waHlfaW5pdChmbGFnKTsKCgkvL2NvbnRyb2xsZXIgcmVnaXN0ZXIgaW5pdAoJZGRyX2N0cmxfaW5pdChmbGFnKTsKCgkvL2Rkcl9wcmlvcml0eV9jb25maWcKCWRkcl9wcmlvX2luaXQoZmxhZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCS8vd2FpdCBhbGwgcmVnaXN0ZXIgY29uZmlnZXIgZG9uZSBpbiBoYXJkd2FyZQoJbnNkZWxheSgyMDAwMDApOy8vMC4wMXMKCgoJLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJLy9jdHJvbGxlciBhbmQgaW5ubyBwaHkgcmVnaXN0ZXJzIGNvbmZpZ2VyIGRvbmUKCS8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCV9fUkVHKCAweDAxMzA2MTAwICkgPSAweDBhZmZmZmMwIDsgLy9yZWxlYXNlIGRkciBjdGwoYml0MTEpIGFuZCBheGlfc24gcmVzZXQoYml0Ni05KSAgYW5kIHBoeSByZXNldChiaXQxMikgIDsgLy/J6NbDz7XNs7zEtObG99a1Cgluc2RlbGF5KDIwMDAwMCk7Ly8wLjAxcwoKCgkvL3N3IGNvbmZpZyBkb25lCglfX1JFRyggMHgwMDE1MDMyMCApID0gMHgwMDAwMDAwMCA7IC8vU1dDVEwgICAgICA7IC8vIHN3X2RvbmU6Ulc6MDoxOj0weDAKCS8vY2hlY2sgcGh5IGF1dG8gaW5pdCBkb25lLCB3YWl0IDB4MDAxNTAzMjQgYml0MCA9MAoJbnNkZWxheSgyMDAwMDApOy8vMC4wMXMKCgoJLy9wb3dlciBvbiBQSFkgUExMIAoJX19SRUcoIDB4MDAxNTQzYjQgKSA9IDB4MDAwMDAwMTggOyAvL1BIWVJFR0VELFBMTENMS09VVEVOOlJXOjQ6MTo9MHgxLFJlc2VydmVkOlJXOjI6Mjo9MHgyLCBwbGxfcGRfZW46Ulc6MToxOj0weDAsIGZiZGl2WzhdOlJXOjA6MTo9MHgwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkvL3dhaXQgUEhZIFBMTCAgbG9jayxQSFlSRUdGOFswXVBsbCBsb2NrIGluZGljYXRlIHNpZ25hbAoKCW5zZGVsYXkoMjAwMDAwKTsvLzAuMDFzCgoKCS8vUEhZIERMTCBpbml0IHN0YXJ0LCBmYWxsIGVkZ2UgdHJpZ2dlcgoJaWYoZmxhZyA9PSBDSElQX0REUl9JU18zMk0pCQoJewoJCSNpZm5kZWYgX0REUjMyTV9EU180OG9tIC8vNjBvaG0KCQlfX1JFRyggMHgwMDE1NDE3YyApID0gMHgwMDAwMDAwNCA7IC8vUEhZUkVHNUYsICBQSFkgaW5pdCBzdGFydDo1OjE6PTB4MSAgIAoJCSNlbHNlIC8vNDhvaG0KCQlfX1JFRyggMHgwMDE1NDE3YyApID0gMHgwMDAwMDAwNSA7IC8vUEhZUkVHNUYsICBQSFkgaW5pdCBzdGFydDo1OjE6PTB4MSAgIAoJCSNlbmRpZgoJfQoJZWxzZQkKCXsKCQkjaWZuZGVmIF9ERFJfRFNfNDhvbSAvLzYwb2htCgkJX19SRUcoIDB4MDAxNTQxN2MgKSA9IDB4MDAwMDAwMDQgOyAvL1BIWVJFRzVGLCAgUEhZIGluaXQgc3RhcnQ6NToxOj0weDEgICAKCQkjZWxzZSAvLzQ4b2htCgkJX19SRUcoIDB4MDAxNTQxN2MgKSA9IDB4MDAwMDAwMDUgOyAvL1BIWVJFRzVGLCAgUEhZIGluaXQgc3RhcnQ6NToxOj0weDEgICAKCQkjZW5kaWYKCX0KCS8vd2FpdCBkbGwgbG9jaywgcGh5IGluaXQgZG9uZSwgUEhZUkVHRjhbMV1QaHkgaW5pdCBjb21wbGV0ZSBzaWduYWwKCW5zZGVsYXkoMjAwMDAwKTsvLzAuMDFzCgoKCS8vZW5hYmxlIGNvbnRyb2xsZXIgZGZpX2luaXRfY29tcGxldGVfZW4gdG8gc3RhcnQgc2RyYW0gaW5pdCwgdGhlbiB3aWxsIHNlbmQgZHJhbSBpbml0IGNtZAoJX19SRUcoIDB4MDAxNTAxYjAgKSA9IDB4MDAwMDAwMDEgOyAvL0RGSU1JU0MgICAgOyAvLyBwaHlfZGJpX21vZGU6Ulc6MToxOj0weDAgZGZpX2luaXRfY29tcGxldGVfZW46Ulc6MDoxOj0weDEJICAgIMrHt/HIpbX0o6y78tXfttTTptDeuMQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJLy9jaGVjayBjb250cm9sbGVyIHN0YXR1cyBpcyBzZHJhbSBpbml0IGRvbmUsd2FpdCAweDAwMTUwMDA0IGJpdDAtMiAhPTAKCW5zZGVsYXkoMjAwMDAwKTsvLzAuMDFzCgoJX19SRUcoIDB4MDAxNTAxYjAgKSA9IDB4MDAwMDAwMDAgOyAvL2RmaW1pc2NbMF0gcGh5X2RiaV9tb2RlOlJXOjE6MTo9MHgwIGRmaV9pbml0X2NvbXBsZXRlX2VuOlJXOjA6MTo9MHgwCgoJaWYoZmxhZyA9PSBDSElQX0REUl9JU18zMk0pCgl7CgkJZG8KCQl7CgkJCS8vcGh5IERRUyBnYXRlIHRyYWluaW5nIHN0YXJ0CgkJCV9fUkVHKCAweDAwMTU0MDA4ICkgPSAweDAwMDAwMDAxIDsgLy9QSFlSRUcwMixiaXQwOkRRUyBnYXRpbmcgY2FsaWJyYXRpb24gY29udHJvbD0xLCBiaXQxOkRRUyBnYXRpbmcgYnlwYXNzIG1vZGUgc2VsZWN0PTAKCQkJLy93YWl0IHRyYWluaW5nIGRvbmUKCQkJbnNkZWxheSgyMDAwMDApOy8vMC4wMXMKCgkJCS8vcGh5IERRUyBnYXRlIHRyYWluaW5nIHN0b3AKCQkJX19SRUcoIDB4MDAxNTQwMDggKSA9IDB4MDAwMDAwMDAgOyAvL1BIWVJFRzAyLGJpdDA6RFFTIGdhdGluZyBjYWxpYnJhdGlvbiBjb250cm9sPTAsIGJpdDE6RFFTIGdhdGluZyBieXBhc3MgbW9kZSBzZWxlY3Q9MAoKCQkJbnNkZWxheSgyMDAwMDApOy8vMC4wMXMKCQkJZ19QaHlKWlswXT1BQlNhX2IoX19SRUcoMHgwMDE1NDNlYyksX19SRUcoMHgwMDE1NDNmMCkpOwoKCQl9d2hpbGUoKGdfUGh5SlpbMF0+NCl8KF9fUkVHKDB4MDAxNTQzZWMpJjB4ODApKTsKCX0KCWVsc2UKCXsKCQlkbwoJCXsKCQkJLy9waHkgRFFTIGdhdGUgdHJhaW5pbmcgc3RhcnQKCQkJX19SRUcoIDB4MDAxNTQwMDggKSA9IDB4MDAwMDAwMDEgOyAvL1BIWVJFRzAyLGJpdDA6RFFTIGdhdGluZyBjYWxpYnJhdGlvbiBjb250cm9sPTEsIGJpdDE6RFFTIGdhdGluZyBieXBhc3MgbW9kZSBzZWxlY3Q9MAoJCQkvL3dhaXQgdHJhaW5pbmcgZG9uZQoJCQluc2RlbGF5KDIwMDAwMCk7Ly8wLjAxcwoKCQkJLy9waHkgRFFTIGdhdGUgdHJhaW5pbmcgc3RvcAoJCQlfX1JFRyggMHgwMDE1NDAwOCApID0gMHgwMDAwMDAwMCA7IC8vUEhZUkVHMDIsYml0MDpEUVMgZ2F0aW5nIGNhbGlicmF0aW9uIGNvbnRyb2w9MCwgYml0MTpEUVMgZ2F0aW5nIGJ5cGFzcyBtb2RlIHNlbGVjdD0wCgoJCQluc2RlbGF5KDIwMDAwMCk7Ly8wLjAxcwoJCQlnX1BoeUpaWzBdPUFCU2FfYihfX1JFRygweDAwMTU0M2VjKSxfX1JFRygweDAwMTU0M2YwKSk7CgkJCWdfUGh5SlpbMV09QUJTYV9iKF9fUkVHKDB4MDAxNTQzZWMpLF9fUkVHKDB4MDAxNTQzZjQpKTsKCQkJZ19QaHlKWlsyXT1BQlNhX2IoX19SRUcoMHgwMDE1NDNlYyksX19SRUcoMHgwMDE1NDNmOCkpOwoKCQkJZ19QaHlKWlszXT1BQlNhX2IoX19SRUcoMHgwMDE1NDNmMCksX19SRUcoMHgwMDE1NDNmNCkpOwoJCQlnX1BoeUpaWzRdPUFCU2FfYihfX1JFRygweDAwMTU0M2YwKSxfX1JFRygweDAwMTU0M2Y4KSk7CgoJCQlnX1BoeUpaWzVdPUFCU2FfYihfX1JFRygweDAwMTU0M2Y0KSxfX1JFRygweDAwMTU0M2Y4KSk7CgkJfXdoaWxlKChnX1BoeUpaWzBdPjQpfChnX1BoeUpaWzFdPjQpfChnX1BoeUpaWzJdPjQpfChnX1BoeUpaWzNdPjQpfChnX1BoeUpaWzRdPjQpfChnX1BoeUpaWzVdPjQpfChfX1JFRygweDAwMTU0M2VjKSYweDgwKSk7Cgl9CgoJLy9lbmFibGUgcG9ydF9uCglfX1JFRyggMHgwMDE1MDQ5MCApID0gMHgwMDAwMDAwMSAgICAgOyAvL1ZBTFVFX1BDVFJMXzAgICAgIC8gcG9ydF9lbjpSVzowOjE6PTB4MQoJX19SRUcoIDB4MDAxNTA1NDAgKSA9IDB4MDAwMDAwMDEgICAgIDsgLy9WQUxVRV9QQ1RSTF8xICAgICAvIHBvcnRfZW46Ulc6MDoxOj0weDEKCV9fUkVHKCAweDAwMTUwNWYwICkgPSAweDAwMDAwMDAxICAgICA7IC8vVkFMVUVfUENUUkxfMiAgICAgLyBwb3J0X2VuOlJXOjA6MTo9MHgxCglfX1JFRyggMHgwMDE1MDZhMCApID0gMHgwMDAwMDAwMSAgICAgOyAvL1ZBTFVFX1BDVFJMXzMgICAgIC8gcG9ydF9lbjpSVzowOjE6PTB4MQoKI2lmZGVmIEREUl9GRkMKCWRkcl9mZmNfaW5pdCgpOwojZW5kaWYJCiAgICByZXR1cm4gMDsKICAgIAp9CgoK