From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Rich Mattes To: git-commits@fedoraproject.org Subject: [rpms/pcl] f44: Update to 1.7.0 Date: Thu, 25 Jun 2026 05:49:14 GMT Message-ID: <178236655488.1.12212453573959732129.rpms-pcl-e83d2a1b533f@fedoraproject.org> List-ID: X-Git-Repo: rpms/pcl X-Git-Branch: f44 X-Git-Rev: e83d2a1b533fb5a74d960f4bd6ec57e989b69c24 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvcGNsCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBDb21t aXQgOiBlODNkMmExYjUzM2ZiNWE3NGQ5NjBmNGJkNmVjNTdlOTg5YjY5YzI0CiAgICAgICAgICAg IEF1dGhvciA6IFJpY2ggTWF0dGVzIDxyaWNobWF0dGVzQGdtYWlsLmNvbT4KICAgICAgICAgICAg RGF0ZSAgIDogMjAxMy0wOC0yMVQyMDo1NjowOS0wNDowMAogICAgICAgICAgICBTdGF0cyAgOiAr MTEwMC8tNDI4IGluIDggZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczovL3NyYy5m ZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL3BjbC9jL2U4M2QyYTFiNTMzZmI1YTc0ZDk2MGY0YmQ2ZWM1 N2U5ODliNjljMjQ/YnJhbmNoPWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBVcGRh dGUgdG8gMS43LjAKCi0gVXBkYXRlIHZ0ayA2IHBhdGNoIGZvciAxLjcuMAoKLS0tCmRpZmYgLS1n aXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCA3NmQwZmU2Li44ZjUyN2ZmIDEwMDY0 NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTYsMyArNiw0IEBACiAvUENM LTEuNC4wLVNvdXJjZS50YXIuYnoyCiAvUENMLTEuNS4xLVNvdXJjZS50YXIuYnoyCiAvUENMLTEu Ni4wLVNvdXJjZS50YXIuYnoyCisvcGNsLTEuNy4wLnRhci5negoKZGlmZiAtLWdpdCBhL1BDTC0x LjQuMC1Tb3VyY2UtZmVkb3JhLnBhdGNoIGIvUENMLTEuNC4wLVNvdXJjZS1mZWRvcmEucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNTVlOWUuLjAwMDAwMDAKLS0tIGEvUENM LTEuNC4wLVNvdXJjZS1mZWRvcmEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBA Ci1kaWZmIC11cCAuL1BDTC0xLjYuMC1Tb3VyY2UvY21ha2UvcGNsX3RhcmdldHMuY21ha2UuZmVk b3JhIC4vUENMLTEuNi4wLVNvdXJjZS9jbWFrZS9wY2xfdGFyZ2V0cy5jbWFrZQotLS0tIC4vUENM LTEuNi4wLVNvdXJjZS9jbWFrZS9wY2xfdGFyZ2V0cy5jbWFrZS5mZWRvcmEJMjAxMi0wNy0xNyAx OToxMTozMi4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL1BDTC0xLjYuMC1Tb3VyY2UvY21ha2UvcGNs X3RhcmdldHMuY21ha2UJMjAxMi0wOS0yNCAyMTo1MzozNC4wNjY5MjQyMjkgLTA0MDAKLUBAIC0x LDUgKzEsNyBAQAotIGluY2x1ZGUoJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlL3BjbF91dGls cy5jbWFrZSkKLSAKLStzZXQoUENMX1BLR0NPTkZJR19TVUZGSVggIi0ke1BDTF9NQUpPUl9WRVJT SU9OfS4ke1BDTF9NSU5PUl9WRVJTSU9OfSIgQ0FDSEUgU1RSSU5HICJTdWZmaXggdG8gYXBwZW5k IHRvIHBrZy1jb25maWcgZmlsZXMiKQotKwotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIEFk ZCBhbiBvcHRpb24gdG8gYnVpbGQgYSBzdWJzeXN0ZW0gb3Igbm90LgotICMgX3ZhciBUaGUgbmFt ZSBvZiB0aGUgdmFyaWFibGUgdG8gc3RvcmUgdGhlIG9wdGlvbiBpbi4KLUBAIC00MTIsMTQgKzQx NCwxNCBAQCBtYWNybyhQQ0xfTUFLRV9QS0dDT05GSUcgX25hbWUgX2NvbXBvbmVuCi0gICAgIExJ U1RfVE9fU1RSSU5HKF9leHRfZGVwc19zdHIgIiR7X2V4dF9kZXBzfSIpCi0gICAgIHNldChQS0df RVhURVJOQUxfREVQUyAke19leHRfZGVwc19zdHJ9KQotICAgICBmb3JlYWNoKF9kZXAgJHtfcGNs X2RlcHN9KQotLSAgICAgIHNldChQS0dfRVhURVJOQUxfREVQUyAiJHtQS0dfRVhURVJOQUxfREVQ U30gcGNsXyR7X2RlcH0tJHtQQ0xfTUFKT1JfVkVSU0lPTn0uJHtQQ0xfTUlOT1JfVkVSU0lPTn0i KQotKyAgICAgIHNldChQS0dfRVhURVJOQUxfREVQUyAiJHtQS0dfRVhURVJOQUxfREVQU30gcGNs XyR7X2RlcH0ke1BDTF9QS0dDT05GSUdfU1VGRklYfSIpCi0gICAgIGVuZGZvcmVhY2goX2RlcCkK LSAgICAgc2V0KFBLR19JTlRFUk5BTF9ERVBTICIiKQotICAgICBmb3JlYWNoKF9kZXAgJHtfaW50 X2RlcHN9KQotICAgICAgICAgc2V0KFBLR19JTlRFUk5BTF9ERVBTICIke1BLR19JTlRFUk5BTF9E RVBTfSAtbCR7X2RlcH0iKQotICAgICBlbmRmb3JlYWNoKF9kZXApCi0gCi0tICAgIHNldChfcGNf ZmlsZSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJHtfbmFtZX0tJHtQQ0xfTUFKT1JfVkVS U0lPTn0uJHtQQ0xfTUlOT1JfVkVSU0lPTn0ucGMpCi0rICAgIHNldChfcGNfZmlsZSAke0NNQUtF X0NVUlJFTlRfQklOQVJZX0RJUn0vJHtfbmFtZX0ke1BDTF9QS0dDT05GSUdfU1VGRklYfS5wYykK LSAgICAgY29uZmlndXJlX2ZpbGUoJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2NtYWtlL3BrZ2NvbmZp Zy5jbWFrZS5pbiAke19wY19maWxlfQotICAgICAgICAgQE9OTFkpCi0gICAgIGluc3RhbGwoRklM RVMgJHtfcGNfZmlsZX0gREVTVElOQVRJT04gJHtQS0dDRkdfSU5TVEFMTF9ESVJ9Ci1kaWZmIC11 cCAuL1BDTC0xLjYuMC1Tb3VyY2UvaW8vQ01ha2VMaXN0cy50eHQuZmVkb3JhIC4vUENMLTEuNi4w LVNvdXJjZS9pby9DTWFrZUxpc3RzLnR4dAotLS0tIC4vUENMLTEuNi4wLVNvdXJjZS9pby9DTWFr ZUxpc3RzLnR4dC5mZWRvcmEJMjAxMi0wNy0xNyAxOToxMTozMi4wMDAwMDAwMDAgLTA0MDAKLSsr KyAuL1BDTC0xLjYuMC1Tb3VyY2UvaW8vQ01ha2VMaXN0cy50eHQJMjAxMi0wOS0yNCAyMTo1Mzoz NC4wNjY5MjQyMjkgLTA0MDAKLUBAIC0xMzksOSArMTM5LDEwIEBAIGlmKGJ1aWxkKQotICAgICBl bmRpZihPUEVOTklfRk9VTkQpCi0gCi0gICAgIHNldChFWFRfREVQUyBlaWdlbjMpCi0tICAgIGlm KE9QRU5OSV9GT1VORCkKLS0gICAgICBsaXN0KEFQUEVORCBFWFRfREVQUyBvcGVubmktZGV2KQot LSAgICBlbmRpZihPUEVOTklfRk9VTkQpCi0rICAgICMgRGlzYWJsZSBvbiBGZWRvcmEsIHRoZXJl IGlzIG5vIHBrZy1jb25maWcgZmlsZQotKyAgICAjaWYoT1BFTk5JX0ZPVU5EKQotKyAgICAjICBs aXN0KEFQUEVORCBFWFRfREVQUyBvcGVubmktZGV2KQotKyAgICAjZW5kaWYoT1BFTk5JX0ZPVU5E KQotICAgICBQQ0xfTUFLRV9QS0dDT05GSUcoJHtMSUJfTkFNRX0gJHtTVUJTWVNfTkFNRX0gIiR7 U1VCU1lTX0RFU0N9IgotICAgICAgICIke1NVQlNZU19ERVBTfSIgIiR7RVhUX0RFUFN9IiAiIiAi IiAiIikKLSAKLWRpZmYgLXVwIC4vUENMLTEuNi4wLVNvdXJjZS9QQ0xDb25maWcuY21ha2UuaW4u ZmVkb3JhIC4vUENMLTEuNi4wLVNvdXJjZS9QQ0xDb25maWcuY21ha2UuaW4KLS0tLSAuL1BDTC0x LjYuMC1Tb3VyY2UvUENMQ29uZmlnLmNtYWtlLmluLmZlZG9yYQkyMDEyLTA3LTE3IDE5OjExOjMy LjAwMDAwMDAwMCAtMDQwMAotKysrIC4vUENMLTEuNi4wLVNvdXJjZS9QQ0xDb25maWcuY21ha2Uu aW4JMjAxMi0wOS0yNCAyMTo1Mzo1OC4yMzk4MzI2NTUgLTA0MDAKLUBAIC0zOTIsOSArMzkyLDEz IEBAIGlmKFdJTjMyKQotICMgUENMQ29uZmlnLmNtYWtlIGlzIGluc3RhbGxlZCB0byBQQ0xfUk9P VC9jbWFrZQotICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChQQ0xfUk9PVCAiJHtQQ0xfRElSfSIg UEFUSCkKLSBlbHNlKFdJTjMyKQotLSMgUENMQ29uZmlnLmNtYWtlIGlzIGluc3RhbGxlZCB0byBQ Q0xfUk9PVC9zaGFyZS9wY2wteC55Ci0rICAjIFBDTENvbmZpZy5jbWFrZSBpcyBpbnN0YWxsZWQg dG8gUENMX1JPT1Qvc2hhcmUvcGNsLXgueSBvciBQQ0xfUk9PVC9saWIke0xJQl9TVUZGSVh9L2Nt YWtlL3BjbAotICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChQQ0xfUk9PVCAiJHtQQ0xfRElSfSIg UEFUSCkKLSAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoUENMX1JPT1QgIiR7UENMX1JPT1R9IiBQ QVRIKQotKyAgaWYgKCR7UENMX0RJUn0gTUFUQ0hFUyAiLipsaWIuKiIpCi0rICAgICMgUENMQ29u ZmlnLmNtYWtlIGlzIGluc3RhbGxlZCB0byBQQ0xfUk9PVC9saWIke0xJQl9TVUZGSVh9L2NtYWtl L3BjbAotKyAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFBDTF9ST09UICIke1BDTF9ST09UfSIg UEFUSCkKLSsgIGVuZGlmKCkKLSBlbmRpZihXSU4zMikKLSAKLSAjIGNoZWNrIHdoZXRoZXIgUENM Q29uZmlnLmNtYWtlIGlzIGZvdW5kIGludG8gYSBQQ0wgaW5zdGFsbGF0aW9uIG9yIGluIGEgYnVp bGQgdHJlZQotQEAgLTU1OCw3ICs1NjIsNyBAQCBpZihOT1QgIiR7UENMX0xJQlJBUllfRElSU30i IFNUUkVRVUFMICIiCi0gZW5kaWYoTk9UICIke1BDTF9MSUJSQVJZX0RJUlN9IiBTVFJFUVVBTCAi IikKLSAKLSAjIFdlIG5lZWQgdG8gZXhwb3J0IG1hcmNoPW5hdGl2ZSBmb3IgdHV0b3JpYWxzIG9y IHVzZXIgY29kZQotLWxpc3QgKEFQUEVORCBQQ0xfREVGSU5JVElPTlMgIkBTU0VfRkxBR1NAIikK LSsjbGlzdCAoQVBQRU5EIFBDTF9ERUZJTklUSU9OUyAiQFNTRV9GTEFHU0AiKQotIAotIGlmKE5P VCAiJHtQQ0xfREVGSU5JVElPTlN9IiBTVFJFUVVBTCAiIikKLSAgIGxpc3QoUkVNT1ZFX0RVUExJ Q0FURVMgUENMX0RFRklOSVRJT05TKQotZGlmZiAtdXAgLi9QQ0wtMS42LjAtU291cmNlL3Zpc3Vh bGl6YXRpb24vQ01ha2VMaXN0cy50eHQuZmVkb3JhIC4vUENMLTEuNi4wLVNvdXJjZS92aXN1YWxp emF0aW9uL0NNYWtlTGlzdHMudHh0Ci0tLS0gLi9QQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRp b24vQ01ha2VMaXN0cy50eHQuZmVkb3JhCTIwMTItMDctMTcgMTk6MTE6MzIuMDAwMDAwMDAwIC0w NDAwCi0rKysgLi9QQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRpb24vQ01ha2VMaXN0cy50eHQJ MjAxMi0wOS0yNCAyMTo1MzozNC4wNjc5MjQyNjYgLTA0MDAKLUBAIC05OSw5ICs5OSw5IEBAIGlm KGJ1aWxkKQotICAgICBlbmRpZigpCi0gCi0gICAgIHNldChFWFRfREVQUyAiIikKLS0gICAgaWYo T1BFTk5JX0ZPVU5EKQotLSAgICAgIGxpc3QoQVBQRU5EIEVYVF9ERVBTIG9wZW5uaS1kZXYpCi0t ICAgIGVuZGlmKE9QRU5OSV9GT1VORCkKLSsgICAgI2lmKE9QRU5OSV9GT1VORCkKLSsgICAgIyAg bGlzdChBUFBFTkQgRVhUX0RFUFMgb3Blbm5pLWRldikKLSsgICAgI2VuZGlmKE9QRU5OSV9GT1VO RCkKLSAgICAgUENMX01BS0VfUEtHQ09ORklHKCR7TElCX05BTUV9ICR7U1VCU1lTX05BTUV9ICIk e1NVQlNZU19ERVNDfSIKLSAgICAgICAiJHtTVUJTWVNfREVQU30iICIke0VYVF9ERVBTfSIgIiIg IiIgIiIpCi0gCgpkaWZmIC0tZ2l0IGEvcGNsLTEuNi4wLWFybS5wYXRjaCBiL3BjbC0xLjYuMC1h cm0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMzBmZjguLjAwMDAwMDAK LS0tIGEvcGNsLTEuNi4wLWFybS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAK LWRpZmYgLXVwIC4vY29tbW9uL2luY2x1ZGUvc2Vuc29yX21zZ3MvUG9pbnRDbG91ZDIuaC5hcm0g Li9jb21tb24vaW5jbHVkZS9zZW5zb3JfbXNncy9Qb2ludENsb3VkMi5oCi0tLS0gLi9jb21tb24v aW5jbHVkZS9zZW5zb3JfbXNncy9Qb2ludENsb3VkMi5oLmFybQkyMDEyLTA3LTE3IDE5OjExOjMy LjAwMDAwMDAwMCAtMDQwMAotKysrIC4vY29tbW9uL2luY2x1ZGUvc2Vuc29yX21zZ3MvUG9pbnRD bG91ZDIuaAkyMDEzLTAzLTIyIDIyOjAxOjExLjgxNzY4NDY0MCAtMDQwMAotQEAgLTE1LDcgKzE1 LDcgQEAgbmFtZXNwYWNlIHNlbnNvcl9tc2dzCi0gIyAgZGVmaW5lIFBDTF9CSUdfRU5ESUFOCi0g I2VsaWYgKGRlZmluZWQoaTM4NikgfHwgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2kz ODYpIHx8IGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfWDg2XykgfHwgZGVmaW5lZChfX1RI V19JTlRFTF9fKSB8fCBkZWZpbmVkKF9fSTg2X18pIHx8IGRlZmluZWQoX19JTlRFTF9fKSkgXAot ICAgfHwgKGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKF9fYW1kNjQpIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfTV9YNjQpKSBcCi0t CXx8IChkZWZpbmVkKF9fQU5EUk9JRF9fKSkKLSsJfHwgKGRlZmluZWQoX19BTkRST0lEX18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZCAoX19hYXJjaDY0X18pKQotICMgIGRlZmluZSBQ Q0xfTElUVExFX0VORElBTgotICNlbHNlCi0gIyAgZXJyb3IKLWRpZmYgLXVwIC4vaW8vaW5jbHVk ZS9wY2wvaW8vcGx5L2J5dGVfb3JkZXIuaC5hcm0gLi9pby9pbmNsdWRlL3BjbC9pby9wbHkvYnl0 ZV9vcmRlci5oCi0tLS0gLi9pby9pbmNsdWRlL3BjbC9pby9wbHkvYnl0ZV9vcmRlci5oLmFybQky MDEyLTA3LTE3IDE5OjExOjMyLjAwMDAwMDAwMCAtMDQwMAotKysrIC4vaW8vaW5jbHVkZS9wY2wv aW8vcGx5L2J5dGVfb3JkZXIuaAkyMDEzLTAzLTIyIDIyOjAxOjExLjgxNzY4NDY0MCAtMDQwMAot QEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIHBjbAotICNpZiAoZGVmaW5lZCAoX19wb3dlcnBj KSB8fCBkZWZpbmVkIChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZCAoX19QT1dFUlBDX18pIHx8IGRl ZmluZWQgKF9fcHBjX18pIHx8IGRlZmluZWQgKF9NX1BQQykgfHwgZGVmaW5lZCAoX19BUkNIX1BQ QykpCi0gIyAgZGVmaW5lIFBMWV9CSUdfRU5ESUFOCi0gI2VsaWYgKGRlZmluZWQgKGkzODYpIHx8 IGRlZmluZWQgKF9faTM4Nl9fKSB8fCBkZWZpbmVkIChfX2kzODYpIHx8IGRlZmluZWQgKF9NX0lY ODYpIHx8IGRlZmluZWQgKF9YODZfKSB8fCBkZWZpbmVkIChfX1RIV19JTlRFTF9fKSB8fCBkZWZp bmVkIChfX0k4Nl9fKSB8fCBkZWZpbmVkIChfX0lOVEVMX18pKSBcCi0tICB8fCAoZGVmaW5lZCAo X19hbWQ2NF9fKSB8fCBkZWZpbmVkIChfX2FtZDY0KSB8fCBkZWZpbmVkIChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkIChfX3g4Nl82NCkgfHwgZGVmaW5lZCAoX01fWDY0KSB8fCBkZWZpbmVkIChBTkRS T0lEKSkKLSsgIHx8IChkZWZpbmVkIChfX2FtZDY0X18pIHx8IGRlZmluZWQgKF9fYW1kNjQpIHx8 IGRlZmluZWQgKF9feDg2XzY0X18pIHx8IGRlZmluZWQgKF9feDg2XzY0KSB8fCBkZWZpbmVkIChf TV9YNjQpIHx8IGRlZmluZWQgKEFORFJPSUQpIHx8IGRlZmluZWQgKF9fYXJtX18pIHx8IGRlZmlu ZWQgKF9fYWFyY2g2NF9fKSkKLSAjICBkZWZpbmUgUExZX0xJVFRMRV9FTkRJQU4KLSAjZWxzZQot ICMgIGVycm9yCgpkaWZmIC0tZ2l0IGEvcGNsLTEuNi4wLWJvb3N0MTUzLnBhdGNoIGIvcGNsLTEu Ni4wLWJvb3N0MTUzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzVlOTgz Li4wMDAwMDAwCi0tLSBhL3BjbC0xLjYuMC1ib29zdDE1My5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDExOCArMCwwIEBACi1kaWZmIC11cCAuL2lvL3NyYy9vbmlfZ3JhYmJlci5jcHAuYm9vc3Qx NTMgLi9pby9zcmMvb25pX2dyYWJiZXIuY3BwCi0tLS0gLi9pby9zcmMvb25pX2dyYWJiZXIuY3Bw LmJvb3N0MTUzCTIwMTMtMDItMTcgMTk6Mjc6MDYuMDM0MTcxODg4IC0wNTAwCi0rKysgLi9pby9z cmMvb25pX2dyYWJiZXIuY3BwCTIwMTMtMDItMTcgMTk6Mjc6NTkuMTcwMDA4NDcyIC0wNTAwCi1A QCAtMzY0LDcgKzM2NCw3IEBAIE9OSUdyYWJiZXI6OmNvbnZlcnRUb1hZWlBvaW50Q2xvdWQoY29u c3QKLSAgIGlmIChkZXB0aF9pbWFnZS0+Z2V0V2lkdGggKCkgIT0gZGVwdGhfd2lkdGhfIHx8IGRl cHRoX2ltYWdlLT5nZXRIZWlnaHQgKCkgIT0gZGVwdGhfaGVpZ2h0XykKLSAgIHsKLSAgICAgc3Rh dGljIHVuc2lnbmVkIGJ1ZmZlcl9zaXplID0gMDsKLS0gICAgc3RhdGljIGJvb3N0OjpzaGFyZWRf YXJyYXk8dW5zaWduZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlciAoMCk7Ci0rICAgIHN0YXRpYyBib29z dDo6c2hhcmVkX2FycmF5PHVuc2lnbmVkIHNob3J0PiBkZXB0aF9idWZmZXI7Ci0gCi0gICAgIGlm IChidWZmZXJfc2l6ZSA8IGRlcHRoX3dpZHRoXyAqIGRlcHRoX2hlaWdodF8pCi0gICAgIHsKLUBA IC00MDQsNyArNDA0LDcgQEAgcGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0I+OjpQdHIg TwotICAgICBjb25zdCBib29zdDo6c2hhcmVkX3B0cjxvcGVubmlfd3JhcHBlcjo6RGVwdGhJbWFn ZT4gJmRlcHRoX2ltYWdlKSBjb25zdAotIHsKLSAgIHN0YXRpYyB1bnNpZ25lZCByZ2JfYXJyYXlf c2l6ZSA9IDA7Ci0tICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25lZCBjaGFyPiBy Z2JfYXJyYXkoMCk7Ci0rICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25lZCBjaGFy PiByZ2JfYXJyYXk7Ci0gICBzdGF0aWMgdW5zaWduZWQgY2hhciogcmdiX2J1ZmZlciA9IDA7Ci0g Ci0gICBib29zdDo6c2hhcmVkX3B0cjxwY2w6OlBvaW50Q2xvdWQ8cGNsOjpQb2ludFhZWlJHQj4g PiBjbG91ZChuZXcgcGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0I+ICgpKTsKLUBAIC00 MjQsNyArNDI0LDcgQEAgcGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0I+OjpQdHIgTwot ICAgaWYgKGRlcHRoX2ltYWdlLT5nZXRXaWR0aCgpICE9IGRlcHRoX3dpZHRoXyB8fCBkZXB0aF9p bWFnZS0+Z2V0SGVpZ2h0KCkgIT0gZGVwdGhfaGVpZ2h0XykKLSAgIHsKLSAgICAgc3RhdGljIHVu c2lnbmVkIGJ1ZmZlcl9zaXplID0gMDsKLS0gICAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8 dW5zaWduZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcigwKTsKLSsgICAgc3RhdGljIGJvb3N0OjpzaGFy ZWRfYXJyYXk8dW5zaWduZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcjsKLSAKLSAgICAgaWYgKGJ1ZmZl cl9zaXplIDwgZGVwdGhfd2lkdGhfICogZGVwdGhfaGVpZ2h0XykKLSAgICAgewotQEAgLTQ4OCw3 ICs0ODgsNyBAQCBwY2w6OlBvaW50Q2xvdWQ8cGNsOjpQb2ludFhZWlJHQkE+OjpQdHIKLSAgICAg Y29uc3QgYm9vc3Q6OnNoYXJlZF9wdHI8b3Blbm5pX3dyYXBwZXI6OkRlcHRoSW1hZ2U+ICZkZXB0 aF9pbWFnZSkgY29uc3QKLSB7Ci0gICBzdGF0aWMgdW5zaWduZWQgcmdiX2FycmF5X3NpemUgPSAw OwotLSAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8dW5zaWduZWQgY2hhcj4gcmdiX2FycmF5 KDApOwotKyAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8dW5zaWduZWQgY2hhcj4gcmdiX2Fy cmF5OwotICAgc3RhdGljIHVuc2lnbmVkIGNoYXIqIHJnYl9idWZmZXIgPSAwOwotIAotICAgYm9v c3Q6OnNoYXJlZF9wdHI8cGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0JBPiA+IGNsb3Vk IChuZXcgcGNsOjpQb2ludENsb3VkPHBjbDo6UG9pbnRYWVpSR0JBPiAoKSk7Ci1AQCAtNTA4LDcg KzUwOCw3IEBAIHBjbDo6UG9pbnRDbG91ZDxwY2w6OlBvaW50WFlaUkdCQT46OlB0cgotICAgaWYg KGRlcHRoX2ltYWdlLT5nZXRXaWR0aCgpICE9IGRlcHRoX3dpZHRoXyB8fCBkZXB0aF9pbWFnZS0+ Z2V0SGVpZ2h0KCkgIT0gZGVwdGhfaGVpZ2h0XykKLSAgIHsKLSAgICAgc3RhdGljIHVuc2lnbmVk IGJ1ZmZlcl9zaXplID0gMDsKLS0gICAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8dW5zaWdu ZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcigwKTsKLSsgICAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJy YXk8dW5zaWduZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcjsKLSAKLSAgICAgaWYgKGJ1ZmZlcl9zaXpl IDwgZGVwdGhfd2lkdGhfICogZGVwdGhfaGVpZ2h0XykKLSAgICAgewotQEAgLTU4OSw4ICs1ODks OCBAQCBwY2w6OlBvaW50Q2xvdWQ8cGNsOjpQb2ludFhZWkk+OjpQdHIgT05JCi0gICBpZiAoZGVw dGhfaW1hZ2UtPmdldFdpZHRoKCkgIT0gZGVwdGhfd2lkdGhfIHx8IGRlcHRoX2ltYWdlLT5nZXRI ZWlnaHQoKSAhPSBkZXB0aF9oZWlnaHRfKQotICAgewotICAgICBzdGF0aWMgdW5zaWduZWQgYnVm ZmVyX3NpemUgPSAwOwotLSAgICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25lZCBz aG9ydD4gZGVwdGhfYnVmZmVyKDApOwotLSAgICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1 bnNpZ25lZCBzaG9ydD4gaXJfYnVmZmVyKDApOwotKyAgICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9h cnJheTx1bnNpZ25lZCBzaG9ydD4gZGVwdGhfYnVmZmVyOwotKyAgICBzdGF0aWMgYm9vc3Q6OnNo YXJlZF9hcnJheTx1bnNpZ25lZCBzaG9ydD4gaXJfYnVmZmVyOwotIAotICAgICBpZiAoYnVmZmVy X3NpemUgPCBkZXB0aF93aWR0aF8gKiBkZXB0aF9oZWlnaHRfKQotICAgICB7Ci1kaWZmIC11cCAu L2lvL3NyYy9vcGVubmlfZ3JhYmJlci5jcHAuYm9vc3QxNTMgLi9pby9zcmMvb3Blbm5pX2dyYWJi ZXIuY3BwCi0tLS0gLi9pby9zcmMvb3Blbm5pX2dyYWJiZXIuY3BwLmJvb3N0MTUzCTIwMTItMDct MTcgMTk6MTE6MzIuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9pby9zcmMvb3Blbm5pX2dyYWJiZXIu Y3BwCTIwMTMtMDItMTcgMTg6MTU6MjEuMDAyOTA5MjQ3IC0wNTAwCi1AQCAtNTczLDcgKzU3Myw3 IEBAIHBjbDo6T3Blbk5JR3JhYmJlcjo6Y29udmVydFRvWFlaUG9pbnRDbG8KLSAgIGlmIChkZXB0 aF9pbWFnZS0+Z2V0V2lkdGgoKSAhPSBkZXB0aF93aWR0aF8gfHwgZGVwdGhfaW1hZ2UtPmdldEhl aWdodCAoKSAhPSBkZXB0aF9oZWlnaHRfKQotICAgewotICAgICBzdGF0aWMgdW5zaWduZWQgYnVm ZmVyX3NpemUgPSAwOwotLSAgICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25lZCBz aG9ydD4gZGVwdGhfYnVmZmVyICgwKTsKLSsgICAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8 dW5zaWduZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcjsKLSAKLSAgICAgaWYgKGJ1ZmZlcl9zaXplIDwg ZGVwdGhfd2lkdGhfICogZGVwdGhfaGVpZ2h0XykKLSAgICAgewotQEAgLTYxOCw3ICs2MTgsNyBA QCBwY2w6Ok9wZW5OSUdyYWJiZXI6OmNvbnZlcnRUb1hZWlJHQlBvaW50Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29zdDo6c2hhcmVkX3B0 cjxvcGVubmlfd3JhcHBlcjo6RGVwdGhJbWFnZT4gJmRlcHRoX2ltYWdlKSBjb25zdAotIHsKLSAg IHN0YXRpYyB1bnNpZ25lZCByZ2JfYXJyYXlfc2l6ZSA9IDA7Ci0tICBzdGF0aWMgYm9vc3Q6OnNo YXJlZF9hcnJheTx1bnNpZ25lZCBjaGFyPiByZ2JfYXJyYXkgKDApOwotKyAgc3RhdGljIGJvb3N0 OjpzaGFyZWRfYXJyYXk8dW5zaWduZWQgY2hhcj4gcmdiX2FycmF5OwotICAgc3RhdGljIHVuc2ln bmVkIGNoYXIqIHJnYl9idWZmZXIgPSAwOwotIAotICAgYm9vc3Q6OnNoYXJlZF9wdHI8cGNsOjpQ b2ludENsb3VkPFBvaW50VD4gPiBjbG91ZCAobmV3IHBjbDo6UG9pbnRDbG91ZDxQb2ludFQ+KTsK LUBAIC02MzgsNyArNjM4LDcgQEAgcGNsOjpPcGVuTklHcmFiYmVyOjpjb252ZXJ0VG9YWVpSR0JQ b2ludAotICAgaWYgKGRlcHRoX2ltYWdlLT5nZXRXaWR0aCAoKSAhPSBkZXB0aF93aWR0aF8gfHwg ZGVwdGhfaW1hZ2UtPmdldEhlaWdodCgpICE9IGRlcHRoX2hlaWdodF8pCi0gICB7Ci0gICAgIHN0 YXRpYyB1bnNpZ25lZCBidWZmZXJfc2l6ZSA9IDA7Ci0tICAgIHN0YXRpYyBib29zdDo6c2hhcmVk X2FycmF5PHVuc2lnbmVkIHNob3J0PiBkZXB0aF9idWZmZXIgKDApOwotKyAgICBzdGF0aWMgYm9v c3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25lZCBzaG9ydD4gZGVwdGhfYnVmZmVyOwotIAotICAgICBp ZiAoYnVmZmVyX3NpemUgPCBkZXB0aF93aWR0aF8gKiBkZXB0aF9oZWlnaHRfKQotICAgICB7Ci1A QCAtNzM1LDcgKzczNSw3IEBAIHBjbDo6T3Blbk5JR3JhYmJlcjo6Y29udmVydFRvRWlnZW5Qb2lu dEMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Ym9vc3Q6OnNoYXJlZF9wdHI8b3Blbm5pX3dyYXBwZXI6OkRlcHRoSW1hZ2U+ICZkZXB0aF9pbWFn ZSkgY29uc3QKLSB7Ci0gICBzdGF0aWMgdW5zaWduZWQgcmdiX2FycmF5X3NpemUgPSAwOwotLSAg c3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8dW5zaWduZWQgY2hhcj4gcmdiX2FycmF5ICgwKTsK LSsgIHN0YXRpYyBib29zdDo6c2hhcmVkX2FycmF5PHVuc2lnbmVkIGNoYXI+IHJnYl9hcnJheTsK LSAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyKiByZ2JfYnVmZmVyID0gMDsKLSAKLSAgIGJvb3N0Ojpz aGFyZWRfcHRyPHBjbDo6UG9pbnRDbG91ZDxFaWdlbjo6TWF0cml4WGY+ID4gY2xvdWQgKG5ldyBw Y2w6OlBvaW50Q2xvdWQ8RWlnZW46Ok1hdHJpeFhmPik7Ci1AQCAtNzY1LDcgKzc2NSw3IEBAIHBj bDo6T3Blbk5JR3JhYmJlcjo6Y29udmVydFRvRWlnZW5Qb2ludEMKLSAgIGlmIChkZXB0aF9pbWFn ZS0+Z2V0V2lkdGggKCkgIT0gZGVwdGhfd2lkdGhfIHx8IGRlcHRoX2ltYWdlLT5nZXRIZWlnaHQo KSAhPSBkZXB0aF9oZWlnaHRfKQotICAgewotICAgICBzdGF0aWMgdW5zaWduZWQgYnVmZmVyX3Np emUgPSAwOwotLSAgICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25lZCBzaG9ydD4g ZGVwdGhfYnVmZmVyICgwKTsKLSsgICAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8dW5zaWdu ZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcjsKLSAKLSAgICAgaWYgKGJ1ZmZlcl9zaXplIDwgZGVwdGhf d2lkdGhfICogZGVwdGhfaGVpZ2h0XykKLSAgICAgewotQEAgLTg0Niw4ICs4NDYsOCBAQCBwY2w6 Ok9wZW5OSUdyYWJiZXI6OmNvbnZlcnRUb1hZWklQb2ludENsCi0gICBpZiAoZGVwdGhfaW1hZ2Ut PmdldFdpZHRoICgpICE9IGRlcHRoX3dpZHRoXyB8fCBkZXB0aF9pbWFnZS0+Z2V0SGVpZ2h0ICgp ICE9IGRlcHRoX2hlaWdodF8pCi0gICB7Ci0gICAgIHN0YXRpYyB1bnNpZ25lZCBidWZmZXJfc2l6 ZSA9IDA7Ci0tICAgIHN0YXRpYyBib29zdDo6c2hhcmVkX2FycmF5PHVuc2lnbmVkIHNob3J0PiBk ZXB0aF9idWZmZXIgKDApOwotLSAgICBzdGF0aWMgYm9vc3Q6OnNoYXJlZF9hcnJheTx1bnNpZ25l ZCBzaG9ydD4gaXJfYnVmZmVyICgwKTsKLSsgICAgc3RhdGljIGJvb3N0OjpzaGFyZWRfYXJyYXk8 dW5zaWduZWQgc2hvcnQ+IGRlcHRoX2J1ZmZlcjsKLSsgICAgc3RhdGljIGJvb3N0OjpzaGFyZWRf YXJyYXk8dW5zaWduZWQgc2hvcnQ+IGlyX2J1ZmZlcjsKLSAKLSAgICAgaWYgKGJ1ZmZlcl9zaXpl IDwgZGVwdGhfd2lkdGhfICogZGVwdGhfaGVpZ2h0XykKLSAgICAgewoKZGlmZiAtLWdpdCBhL3Bj bC0xLjcuMC1tZXRzbGliLnBhdGNoIGIvcGNsLTEuNy4wLW1ldHNsaWIucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyMDIzOAotLS0gL2Rldi9udWxsCisrKyBiL3Bj bC0xLjcuMC1tZXRzbGliLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK2RpZmYgLXVwIC4vQ01ha2VM aXN0cy50eHQubWV0c2xpYiAuL0NNYWtlTGlzdHMudHh0CistLS0gLi9DTWFrZUxpc3RzLnR4dC5t ZXRzbGliCTIwMTMtMDgtMjIgMDA6Mjc6NDYuODUyMTcxNDEwICswMDAwCisrKysgLi9DTWFrZUxp c3RzLnR4dAkyMDEzLTA4LTIyIDAwOjM0OjQ0LjA3NTg0NDAwOSArMDAwMAorQEAgLTE0LDYgKzE0 LDkgQEAgc3RyaW5nKFRPTE9XRVIgJHtQUk9KRUNUX05BTUV9IFBST0pFQ1RfTgorICMjIyAtLS1b IEZpbmQgdW5pdmVyc2FsIGRlcGVuZGVuY2llcworIHNldChDTUFLRV9NT0RVTEVfUEFUSCAiJHtD TUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9Nb2R1bGVzLyIgJHtDTUFLRV9NT0RVTEVfUEFUSH0pCisg CisrIyAtLS1bIEluY2x1ZGUgcGtnY29uZmlnCisraW5jbHVkZSAoRmluZFBrZ0NvbmZpZykKKysK KyAjIC0tLVsgUmVsZWFzZS9EZWJ1ZyBzcGVjaWZpYyBmbGFncworIGlmKENNQUtFX0JVSUxEX1RZ UEUgU1RSRVFVQUwgIlJlbGVhc2UiIE9SIENNQUtFX0JVSUxEX1RZUEUgU1RSRVFVQUwgIlJlbFdp dGhEZWJJbmZvIikKKyAgIGFkZF9kZWZpbml0aW9ucygiLURCT09TVF9ESVNBQkxFX0FTU0VSVFMg LURFSUdFTl9OT19ERUJVRyIpCitAQCAtMjYwLDYgKzI2MywxNCBAQCBpZiAoRlpBUElfRk9VTkQp CisgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke0ZaQVBJX0lOQ0xVREVfRElSfSkKKyBl bmRpZigpCisgCisrIyBtZXRzbGliCisraWYgKFBLR19DT05GSUdfRk9VTkQpCisrICBwa2dfY2hl Y2tfbW9kdWxlcyhNRVRTTElCIG1ldHNsaWIpCisrICBpZiAoTUVUU0xJQl9GT1VORCkKKysgICAg c2V0IChIQVZFX01FVFNMSUIgT04pCisrICBlbmRpZigpCisrZW5kaWYoKQorKworICMgTGliUE5H CisgZmluZF9wYWNrYWdlKFBORykKKyBpZiAoUE5HX0ZPVU5EKQorZGlmZiAtdXAgLi9yZWNvZ25p dGlvbi9DTWFrZUxpc3RzLnR4dC5tZXRzbGliIC4vcmVjb2duaXRpb24vQ01ha2VMaXN0cy50eHQK Ky0tLSAuL3JlY29nbml0aW9uL0NNYWtlTGlzdHMudHh0Lm1ldHNsaWIJMjAxMy0wOC0yMiAwMDoy NToyOS45MjczNDQ2ODIgKzAwMDAKKysrKyAuL3JlY29nbml0aW9uL0NNYWtlTGlzdHMudHh0CTIw MTMtMDgtMjIgMDA6MzY6MjcuODg1MDE5MzE3ICswMDAwCitAQCAtMTAyLDYgKzEwMiw5IEBAIGlm KGJ1aWxkKQorIAkJICAgIHNyYy9pbXBsaWNpdF9zaGFwZV9tb2RlbC5jcHAKKyAgICAgICAgICkK KyAgICAgICAgIAorKyAgICBpZiAoSEFWRV9NRVRTTElCKQorKyAgICBzZXQobWV0c2xpYl9pbmNz ICIiKQorKyAgICBlbHNlKCkKKyAgICAgc2V0KG1ldHNsaWJfaW5jcworICAgICAgICAgaW5jbHVk ZS9wY2wvJHtTVUJTWVNfTkFNRX0vM3JkcGFydHkvbWV0c2xpYi9hYnN0cmFjdC1zZWFyY2guaGgK KyAgICAgICAgIGluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9LzNyZHBhcnR5L21ldHNsaWIvbG9j YWwtc2VhcmNoLmhoCitAQCAtMTEzLDkgKzExNiwxNSBAQCBpZihidWlsZCkKKyAgICAgICAgIGlu Y2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9LzNyZHBhcnR5L21ldHNsaWIvdGFidS1zZWFyY2guaGgK KyAgICAgICAgIGluY2x1ZGUvcGNsLyR7U1VCU1lTX05BTUV9LzNyZHBhcnR5L21ldHNsaWIvdGVy bWluYXRpb24tY3JpdGVyaWEuaGgKKyAgICAgKQorKyAgICBlbmRpZigpCisgCisgICAgIHNldChM SUJfTkFNRSBwY2xfJHtTVUJTWVNfTkFNRX0pCisgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtD TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGUpCisrICAgIGlmIChIQVZFX01FVFNMSUIp CisrICAgICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke01FVFNMSUJfSU5DTFVERV9ESVJTfSkKKysg ICAgZWxzZSgpCisrICAgICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke0NNQUtFX0NVUlJFTlRfU09V UkNFX0RJUn0vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vM3JkcGFydHkvKQorKyAgICBlbmRpZigp CisgICAgIFBDTF9BRERfTElCUkFSWSgke0xJQl9OQU1FfSAke1NVQlNZU19OQU1FfSAke3NyY3N9 ICR7aW5jc30gJHtpbXBsX2luY3N9ICR7aHZfaW5jc30gJHtodl9pbXBsX2luY3N9ICR7Y2dfaW5j c30gJHtjZ19pbXBsX2luY3N9ICR7bWV0c2xpYl9pbmNzfSkKKyAgICAgdGFyZ2V0X2xpbmtfbGli cmFyaWVzKCR7TElCX05BTUV9IHBjbF9jb21tb24gcGNsX2tkdHJlZSBwY2xfb2N0cmVlIHBjbF9z ZWFyY2ggcGNsX2ZlYXR1cmVzIHBjbF9yZWdpc3RyYXRpb24gcGNsX3NhbXBsZV9jb25zZW5zdXMg cGNsX2ZpbHRlcnMgcGNsX2lvKQorICAgICBQQ0xfTUFLRV9QS0dDT05GSUcoJHtMSUJfTkFNRX0g JHtTVUJTWVNfTkFNRX0gIiR7U1VCU1lTX0RFU0N9IiAiJHtTVUJTWVNfREVQU30iICIiICIiICIi ICIiKQorZGlmZiAtdXAgLi9yZWNvZ25pdGlvbi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi9odi9o dl9nby5oLm1ldHNsaWIgLi9yZWNvZ25pdGlvbi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi9odi9o dl9nby5oCistLS0gLi9yZWNvZ25pdGlvbi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi9odi9odl9n by5oLm1ldHNsaWIJMjAxMy0wOC0yMiAwMDoyNTowMi4yMDQ3NzIzOTIgKzAwMDAKKysrKyAuL3Jl Y29nbml0aW9uL2luY2x1ZGUvcGNsL3JlY29nbml0aW9uL2h2L2h2X2dvLmgJMjAxMy0wOC0yMiAw MDoyNToxOS40NzIxMjg4NDYgKzAwMDAKK0BAIC0xMSw3ICsxMSw3IEBACisgI2luY2x1ZGUgPHBj bC9wY2xfbWFjcm9zLmg+CisgI2luY2x1ZGUgPHBjbC9yZWNvZ25pdGlvbi9odi9oeXBvdGhlc2Vz X3ZlcmlmaWNhdGlvbi5oPgorICNpbmNsdWRlIDxwY2wvY29tbW9uL2NvbW1vbi5oPgorLSNpbmNs dWRlICJwY2wvcmVjb2duaXRpb24vM3JkcGFydHkvbWV0c2xpYi9tZXRzLmhoIgorKyNpbmNsdWRl ICJtZXRzbGliL21ldHMuaGgiCisgI2luY2x1ZGUgPHBjbC9mZWF0dXJlcy9ub3JtYWxfM2QuaD4K KyAjaW5jbHVkZSA8Ym9vc3QvZ3JhcGgvZ3JhcGhfdHJhaXRzLmhwcD4KKyAjaW5jbHVkZSA8Ym9v c3QvZ3JhcGgvYWRqYWNlbmN5X2xpc3QuaHBwPgorZGlmZiAtdXAgLi9yZWNvZ25pdGlvbi9pbmNs dWRlL3BjbC9yZWNvZ25pdGlvbi9pbXBsL2h2L2h2X2dvLmhwcC5tZXRzbGliIC4vcmVjb2duaXRp b24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vaW1wbC9odi9odl9nby5ocHAKKy0tLSAuL3JlY29n bml0aW9uL2luY2x1ZGUvcGNsL3JlY29nbml0aW9uL2ltcGwvaHYvaHZfZ28uaHBwLm1ldHNsaWIJ MjAxMy0wOC0yMiAwMDo1MTo1Mi43NTkzMTMyMTkgKzAwMDAKKysrKyAuL3JlY29nbml0aW9uL2lu Y2x1ZGUvcGNsL3JlY29nbml0aW9uL2ltcGwvaHYvaHZfZ28uaHBwCTIwMTMtMDgtMjIgMDA6NTI6 MDcuNjU2NjIzNTIyICswMDAwCitAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgcGNsOjpHbG9iYWxI eXBvdGhlc2VzVmVyaWZpY2F0aW9uPE0KKyAgIG1ldHM6Om5vaW1wcm92ZV90ZXJtaW5hdGlvbl9j cml0ZXJpYSBub2ltcHJvdmUgKG1heF9pdGVyYXRpb25zXyk7CisgICBtZXRzOjpsaW5lYXJfY29v bGluZyBsaW5lYXJfY29vbGluZzsKKyAgIG1ldHM6OnNpbXVsYXRlZF9hbm5lYWxpbmc8bW92ZV9t YW5hZ2VyPiBzYSAobW9kZWwsIGJlc3RfcmVjb3JkZXIsIG5laWdoLCBub2ltcHJvdmUsIGxpbmVh cl9jb29saW5nLCBpbml0aWFsX3RlbXBfLCAxZS03LCAyKTsKKy0gIHNhLnNldEFwcGx5QW5kRXZh bHVhdGUodHJ1ZSk7CisrICAvL3NhLnNldEFwcGx5QW5kRXZhbHVhdGUodHJ1ZSk7CisgCisgICB7 CisgICAgIHBjbDo6U2NvcGVUaW1lIHQgKCJTQSBzZWFyY2guLi4iKTsKCmRpZmYgLS1naXQgYS9w Y2wtdnRrNi5wYXRjaCBiL3BjbC12dGs2LnBhdGNoCmluZGV4IDZmZDI5ZjMuLjMwY2EwYzIgMTAw NjQ0Ci0tLSBhL3BjbC12dGs2LnBhdGNoCisrKyBiL3BjbC12dGs2LnBhdGNoCkBAIC0xLDcgKzEs NyBAQAotZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9hcHBzL3NyYy9yZW5kZXJfdmlld3NfdGVz c2VsYXRlZF9zcGhlcmUuY3BwLnZ0azYgUENMLTEuNi4wLVNvdXJjZS9hcHBzL3NyYy9yZW5kZXJf dmlld3NfdGVzc2VsYXRlZF9zcGhlcmUuY3BwCi0tLS0gUENMLTEuNi4wLVNvdXJjZS9hcHBzL3Ny Yy9yZW5kZXJfdmlld3NfdGVzc2VsYXRlZF9zcGhlcmUuY3BwLnZ0azYJMjAxMy0wNy0xMiAyMTow NTowMS44MDI3NDE5MjAgLTA2MDAKLSsrKyBQQ0wtMS42LjAtU291cmNlL2FwcHMvc3JjL3JlbmRl cl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5jcHAJMjAxMy0wNy0xMiAyMTowNToxOC4zODY2NzQ5 NzAgLTA2MDAKLUBAIC01OCw3ICs1OCw3IEBAIHZvaWQgcGNsOjphcHBzOjpSZW5kZXJWaWV3c1Rl c3NlbGF0ZWRTcGgKK2RpZmYgLXVwIC4vYXBwcy9zcmMvcmVuZGVyX3ZpZXdzX3Rlc3NlbGF0ZWRf c3BoZXJlLmNwcC52dGs2IC4vYXBwcy9zcmMvcmVuZGVyX3ZpZXdzX3Rlc3NlbGF0ZWRfc3BoZXJl LmNwcAorLS0tIC4vYXBwcy9zcmMvcmVuZGVyX3ZpZXdzX3Rlc3NlbGF0ZWRfc3BoZXJlLmNwcC52 dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAwCisrKysgLi9hcHBzL3NyYy9y ZW5kZXJfdmlld3NfdGVzc2VsYXRlZF9zcGhlcmUuY3BwCTIwMTMtMDgtMjEgMDA6NDU6NTkuMDA5 ODQ0Nzc3ICswMDAwCitAQCAtNjEsNyArNjEsNyBAQCBwY2w6OmFwcHM6OlJlbmRlclZpZXdzVGVz c2VsYXRlZFNwaGVyZTo6CiAgCiAgICB2dGtTbWFydFBvaW50ZXI8dnRrVHJhbnNmb3JtRmlsdGVy PiB0cmFuc19maWx0ZXJfY2VudGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1RyYW5zZm9ybUZpbHRl cj46Ok5ldyAoKTsKICAgIHRyYW5zX2ZpbHRlcl9jZW50ZXItPlNldFRyYW5zZm9ybSAodHJhbnNf Y2VudGVyKTsKQEAgLTEwLDEwICsxMCwyNCBAQCBkaWZmIC11cCBQQ0wtMS42LjAtU291cmNlL2Fw cHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5jcHAudnRrNiBQQ0wtMQogICAg dHJhbnNfZmlsdGVyX2NlbnRlci0+VXBkYXRlICgpOwogIAogICAgdnRrU21hcnRQb2ludGVyPHZ0 a1BvbHlEYXRhTWFwcGVyPiBtYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBw ZXI+OjpOZXcgKCk7Ci1kaWZmIC11cCBQQ0wtMS42LjAtU291cmNlL2lvL3NyYy92dGtfbGliX2lv LmNwcC52dGs2IFBDTC0xLjYuMC1Tb3VyY2UvaW8vc3JjL3Z0a19saWJfaW8uY3BwCi0tLS0gUENM LTEuNi4wLVNvdXJjZS9pby9zcmMvdnRrX2xpYl9pby5jcHAudnRrNgkyMDEzLTA3LTEyIDE2OjIz OjUxLjYzNDk4OTk5NCAtMDYwMAotKysrIFBDTC0xLjYuMC1Tb3VyY2UvaW8vc3JjL3Z0a19saWJf aW8uY3BwCTIwMTMtMDctMTIgMjI6MDI6MjcuMzA0MDE4MTM2IC0wNjAwCi1AQCAtMTY4LDcgKzE2 OCw3IEBAIHBjbDo6aW86OnNhdmVQb2x5Z29uRmlsZVZUSyAoY29uc3Qgc3RkOjoKK2RpZmYgLXVw IC4vY29tbW9uL0NNYWtlTGlzdHMudHh0LnZ0azYgLi9jb21tb24vQ01ha2VMaXN0cy50eHQKK2Rp ZmYgLXVwIC4vaW8vQ01ha2VMaXN0cy50eHQudnRrNiAuL2lvL0NNYWtlTGlzdHMudHh0CistLS0g Li9pby9DTWFrZUxpc3RzLnR4dC52dGs2CTIwMTMtMDgtMjEgMDE6MDA6MDUuNTQyMTMwMjYyICsw MDAwCisrKysgLi9pby9DTWFrZUxpc3RzLnR4dAkyMDEzLTA4LTIxIDAxOjA4OjAzLjYzNjE3NDM0 MiArMDAwMAorQEAgLTk0LDcgKzk0LDggQEAgaWYoYnVpbGQpCisgICAgICAgICAgICAgc3JjL3Z0 a19saWJfaW8uY3BwCisgICAgICAgICAgICAgc3JjL3BuZ19pby5jcHAKKyAgICAgICAgICAgICkK Ky0gICAgICAgIHNldChWVEtfSU9fVEFSR0VUX0xJTktfTElCUkFSSUVTIHZ0a0NvbW1vbiB2dGtX aWRnZXRzIHZ0a0lPIHZ0a0ltYWdpbmcgdnRrSHlicmlkIHZ0a0dyYXBoaWNzIHZ0a1JlbmRlcmlu ZyB2dGtGaWx0ZXJpbmcgdnRrVm9sdW1lUmVuZGVyaW5nKQorKyAgICAgICAgc2V0KFZUS19JT19U QVJHRVRfTElOS19MSUJSQVJJRVMgdnRrQ29tbW9uQ29yZSB2dGtJT0NvcmUgdnRrSU9JbWFnZSB2 dGtJT0xlZ2FjeSB2dGtJT1BMWSB2dGtJbWFnaW5nQ29yZSkKKysgICAgICAgICNzZXQoVlRLX0lP X1RBUkdFVF9MSU5LX0xJQlJBUklFUyB2dGtDb21tb25Db3JlIHZ0a0ludGVyYWN0aW9uV2lkZ2V0 cyB2dGtJT0NvcmUgdnRrSW1hZ2luZyB2dGtIeWJyaWQgdnRrR3JhcGhpY3MgdnRrUmVuZGVyaW5n IHZ0a0ZpbHRlcmluZyB2dGtWb2x1bWVSZW5kZXJpbmcpCisgICAgICAgICAjIEluZGljYXRlcyB0 aGF0IHdlIGNhbiByZWx5IG9uIFZUSyB0byBiZSBwcmVzZW50CisgICAgICAgICBzZXQoVlRLX0RF RklORVMgLURQQ0xfQlVJTFRfV0lUSF9WVEspCisgICAgIGVuZGlmICgpCitkaWZmIC11cCAuL2lv L3NyYy92dGtfbGliX2lvLmNwcC52dGs2IC4vaW8vc3JjL3Z0a19saWJfaW8uY3BwCistLS0gLi9p by9zcmMvdnRrX2xpYl9pby5jcHAudnRrNgkyMDEzLTA3LTIzIDE3OjIxOjAyLjAwMDAwMDAwMCAr MDAwMAorKysrIC4vaW8vc3JjL3Z0a19saWJfaW8uY3BwCTIwMTMtMDgtMjEgMDA6NTY6MjguNDE4 NDg4MDMwICswMDAwCitAQCAtMTc4LDcgKzE3OCw3IEBAIHBjbDo6aW86OnNhdmVQb2x5Z29uRmls ZVZUSyAoY29uc3Qgc3RkOjoKICAgIHBjbDo6aW86Om1lc2gydnRrIChtZXNoLCBwb2x5X2RhdGEp OwogIAogICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhV3JpdGVyPiBwb2x5X3dyaXRlciA9 IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YVdyaXRlcj46Ok5ldyAoKTsKQEAgLTIyLDcgKzM2 LDcgQEAgZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9pby9zcmMvdnRrX2xpYl9pby5jcHAudnRr NiBQQ0wtMS42LjAtU291cmNlL2lvL3NyYy92dGsKICAgIHBvbHlfd3JpdGVyLT5TZXRGaWxlTmFt ZSAoZmlsZV9uYW1lLmNfc3RyICgpKTsKICAgIHBvbHlfd3JpdGVyLT5Xcml0ZSAoKTsKICAKLUBA IC0xODQsNyArMTg0LDcgQEAgcGNsOjppbzo6c2F2ZVBvbHlnb25GaWxlUExZIChjb25zdCBzdGQ6 OgorQEAgLTE5NCw3ICsxOTQsNyBAQCBwY2w6OmlvOjpzYXZlUG9seWdvbkZpbGVQTFkgKGNvbnN0 IHN0ZDo6CiAgICBwY2w6OmlvOjptZXNoMnZ0ayAobWVzaCwgcG9seV9kYXRhKTsKICAKICAgIHZ0 a1NtYXJ0UG9pbnRlcjx2dGtQTFlXcml0ZXI+IHBvbHlfd3JpdGVyID0gdnRrU21hcnRQb2ludGVy PHZ0a1BMWVdyaXRlcj46Ok5ldyAoKTsKQEAgLTMxLDE2ICs0NSwxOSBAQCBkaWZmIC11cCBQQ0wt MS42LjAtU291cmNlL2lvL3NyYy92dGtfbGliX2lvLmNwcC52dGs2IFBDTC0xLjYuMC1Tb3VyY2Uv aW8vc3JjL3Z0awogICAgcG9seV93cml0ZXItPlNldEZpbGVOYW1lIChmaWxlX25hbWUuY19zdHIg KCkpOwogIAlwb2x5X3dyaXRlci0+U2V0QXJyYXlOYW1lICgiQ29sb3JzIik7CiAgICBwb2x5X3dy aXRlci0+V3JpdGUgKCk7Ci1AQCAtMjAxLDcgKzIwMSw3IEBAIHBjbDo6aW86OnNhdmVQb2x5Z29u RmlsZVNUTCAoY29uc3Qgc3RkOjoKLSAgIHBjbDo6aW86Om1lc2gydnRrIChtZXNoLCBwb2x5X2Rh dGEpOworQEAgLTIwOSw5ICsyMDksOSBAQCBwY2w6OmlvOjpzYXZlUG9seWdvbkZpbGVTVEwgKGNv bnN0IHN0ZDo6CisgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGE+IHBvbHlfZGF0YSA9IHZ0 a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YT46Ok5ldyAoKTsKICAKKyAgIHBjbDo6aW86Om1lc2gy dnRrIChtZXNoLCBwb2x5X2RhdGEpOworLSAgcG9seV9kYXRhLT5VcGRhdGUgKCk7CisrICAKICAg IHZ0a1NtYXJ0UG9pbnRlcjx2dGtTVExXcml0ZXI+IHBvbHlfd3JpdGVyID0gdnRrU21hcnRQb2lu dGVyPHZ0a1NUTFdyaXRlcj46Ok5ldyAoKTsKIC0gIHBvbHlfd3JpdGVyLT5TZXRJbnB1dCAocG9s eV9kYXRhKTsKICsgIHBvbHlfd3JpdGVyLT5TZXRJbnB1dERhdGEgKHBvbHlfZGF0YSk7CiAgICBw b2x5X3dyaXRlci0+U2V0RmlsZU5hbWUgKGZpbGVfbmFtZS5jX3N0ciAoKSk7CiAgICBwb2x5X3dy aXRlci0+V3JpdGUgKCk7CiAgCi1AQCAtMzk5LDkgKzM5OSw3IEBAIHBjbDo6aW86OnNhdmVSYW5n ZUltYWdlUGxhbmFyRmlsZVBORyAoCitAQCAtNDgzLDkgKzQ4Myw3IEBAIHBjbDo6aW86OnNhdmVS YW5nZUltYWdlUGxhbmFyRmlsZVBORyAoCiAgewogICAgdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdl RGF0YT4gaW1hZ2UgPSB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VEYXRhPjo6TmV3KCk7CiAgICBp bWFnZS0+U2V0RGltZW5zaW9ucyhyYW5nZV9pbWFnZS53aWR0aCwgcmFuZ2VfaW1hZ2UuaGVpZ2h0 LCAxKTsKQEAgLTUxLDkgKzY4LDgyIEBAIGRpZmYgLXVwIFBDTC0xLjYuMC1Tb3VyY2UvaW8vc3Jj L3Z0a19saWJfaW8uY3BwLnZ0azYgUENMLTEuNi4wLVNvdXJjZS9pby9zcmMvdnRrCiAgCiAgICBp bnQqIGRpbXMgPSBpbWFnZS0+R2V0RGltZW5zaW9ucygpOwogIAotZGlmZiAtdXAgUENMLTEuNi4w LVNvdXJjZS9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ19sYXBs YWNpYW4uY3BwLnZ0azYgUENMLTEuNi4wLVNvdXJjZS9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5n L3Z0a19tZXNoX3Ntb290aGluZ19sYXBsYWNpYW4uY3BwCi0tLS0gUENMLTEuNi4wLVNvdXJjZS9z dXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ19sYXBsYWNpYW4uY3Bw LnZ0azYJMjAxMi0wNy0xNyAxNzoxMTozMi4wMDAwMDAwMDAgLTA2MDAKLSsrKyBQQ0wtMS42LjAt U291cmNlL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc21vb3RoaW5nX2xhcGxh Y2lhbi5jcHAJMjAxMy0wNy0xMiAyMDo1NDowOS40Mjc4MjQ2OTIgLTA2MDAKK0BAIC01MDQsNyAr NTAyLDcgQEAgcGNsOjppbzo6c2F2ZVJhbmdlSW1hZ2VQbGFuYXJGaWxlUE5HICgKKyAKKyAgIHZ0 a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZVNoaWZ0U2NhbGU+IHNoaWZ0U2NhbGVGaWx0ZXIgPSB2dGtT bWFydFBvaW50ZXI8dnRrSW1hZ2VTaGlmdFNjYWxlPjo6TmV3KCk7CisgICBzaGlmdFNjYWxlRmls dGVyLT5TZXRPdXRwdXRTY2FsYXJUeXBlVG9VbnNpZ25lZENoYXIoKTsKKy0gIHNoaWZ0U2NhbGVG aWx0ZXItPlNldElucHV0Q29ubmVjdGlvbihpbWFnZS0+R2V0UHJvZHVjZXJQb3J0KCkpOworKyAg c2hpZnRTY2FsZUZpbHRlci0+U2V0SW5wdXREYXRhKGltYWdlKTsKKyAgIHNoaWZ0U2NhbGVGaWx0 ZXItPlNldFNoaWZ0KC0xLjBmICogaW1hZ2UtPkdldFNjYWxhclJhbmdlKClbMF0pOyAvLyBicmlu Z3MgdGhlIGxvd2VyIGJvdW5kIHRvIDAKKyAgIHNoaWZ0U2NhbGVGaWx0ZXItPlNldFNjYWxlKG5l d1JhbmdlL29sZFJhbmdlKTsKKyAgIHNoaWZ0U2NhbGVGaWx0ZXItPlVwZGF0ZSgpOworZGlmZiAt dXAgLi9vdXRvZmNvcmUvaW5jbHVkZS9wY2wvb3V0b2Zjb3JlL3Zpc3VhbGl6YXRpb24vYXhlcy5o LnZ0azYgLi9vdXRvZmNvcmUvaW5jbHVkZS9wY2wvb3V0b2Zjb3JlL3Zpc3VhbGl6YXRpb24vYXhl cy5oCistLS0gLi9vdXRvZmNvcmUvaW5jbHVkZS9wY2wvb3V0b2Zjb3JlL3Zpc3VhbGl6YXRpb24v YXhlcy5oLnZ0azYJMjAxMy0wOC0yMSAwMzowMDo0MC42MTcxNjU4MDYgKzAwMDAKKysrKyAuL291 dG9mY29yZS9pbmNsdWRlL3BjbC9vdXRvZmNvcmUvdmlzdWFsaXphdGlvbi9heGVzLmgJMjAxMy0w OC0yMSAwMzowMToyNS43NDExMDYxOTYgKzAwMDAKK0BAIC00MiwxNyArNDIsMTcgQEAgcHVibGlj OgorICAgICBheGVzX2NvbG9ycy0+SW5zZXJ0TmV4dFZhbHVlICgxLjApOworIAorICAgICB2dGtT bWFydFBvaW50ZXI8dnRrUG9seURhdGE+IGF4ZXNfZGF0YSA9IGF4ZXNfLT5HZXRPdXRwdXQgKCk7 CistICAgIGF4ZXNfZGF0YS0+VXBkYXRlICgpOworKyAgICBheGVzXy0+VXBkYXRlICgpOworICAg ICBheGVzX2RhdGEtPkdldFBvaW50RGF0YSAoKS0+U2V0U2NhbGFycyAoYXhlc19jb2xvcnMpOwor IAorICAgICB2dGtTbWFydFBvaW50ZXI8dnRrVHViZUZpbHRlcj4gYXhlc190dWJlcyA9IHZ0a1Nt YXJ0UG9pbnRlcjx2dGtUdWJlRmlsdGVyPjo6TmV3ICgpOworLSAgICBheGVzX3R1YmVzLT5TZXRJ bnB1dCAoYXhlc19kYXRhKTsKKysgICAgYXhlc190dWJlcy0+U2V0SW5wdXREYXRhIChheGVzX2Rh dGEpOworICAgICBheGVzX3R1YmVzLT5TZXRSYWRpdXMgKGF4ZXNfLT5HZXRTY2FsZUZhY3RvciAo KSAvIDEwMC4wKTsKKyAgICAgYXhlc190dWJlcy0+U2V0TnVtYmVyT2ZTaWRlcyAoNik7CisgCisg ICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU1hcHBlcj4gYXhlc19tYXBwZXIgPSB2dGtT bWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7CisgICAgIGF4ZXNfbWFwcGVy LT5TZXRTY2FsYXJNb2RlVG9Vc2VQb2ludERhdGEgKCk7CistICAgIGF4ZXNfbWFwcGVyLT5TZXRJ bnB1dCAoYXhlc190dWJlcy0+R2V0T3V0cHV0ICgpKTsKKysgICAgYXhlc19tYXBwZXItPlNldElu cHV0RGF0YSAoYXhlc190dWJlcy0+R2V0T3V0cHV0ICgpKTsKKyAKKyAgICAgYXhlc19hY3Rvcl8g PSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcgKCk7CisgICAgIGF4ZXNfYWN0b3JfLT5H ZXRQcm9wZXJ0eSAoKS0+U2V0TGlnaHRpbmcgKGZhbHNlKTsKK2RpZmYgLXVwIC4vb3V0b2Zjb3Jl L3NyYy92aXN1YWxpemF0aW9uL291dG9mY29yZV9jbG91ZC5jcHAudnRrNiAuL291dG9mY29yZS9z cmMvdmlzdWFsaXphdGlvbi9vdXRvZmNvcmVfY2xvdWQuY3BwCistLS0gLi9vdXRvZmNvcmUvc3Jj L3Zpc3VhbGl6YXRpb24vb3V0b2Zjb3JlX2Nsb3VkLmNwcC52dGs2CTIwMTMtMDgtMjEgMDM6MDI6 MzUuODQ3NTc1NDIyICswMDAwCisrKysgLi9vdXRvZmNvcmUvc3JjL3Zpc3VhbGl6YXRpb24vb3V0 b2Zjb3JlX2Nsb3VkLmNwcAkyMDEzLTA4LTIxIDAzOjAyOjUwLjE4NTg3NTkxMiArMDAwMAorQEAg LTE1OSwxMCArMTU5LDEwIEBAIE91dG9mY29yZUNsb3VkOjp1cGRhdGVWb3hlbERhdGEgKCkKKyAg ICAgZG91YmxlIHkgPSB2b3hlbF9jZW50ZXJzW2ldLnk7CisgICAgIGRvdWJsZSB6ID0gdm94ZWxf Y2VudGVyc1tpXS56OworIAorLSAgICB2b3hlbF9kYXRhLT5BZGRJbnB1dCAoZ2V0VnRrQ3ViZSAo eCAtIHMsIHggKyBzLCB5IC0gcywgeSArIHMsIHogLSBzLCB6ICsgcykpOworKyAgICB2b3hlbF9k YXRhLT5BZGRJbnB1dERhdGEgKGdldFZ0a0N1YmUgKHggLSBzLCB4ICsgcywgeSAtIHMsIHkgKyBz LCB6IC0gcywgeiArIHMpKTsKKyAgIH0KKyAKKy0gIHZveGVsX21hcHBlci0+U2V0SW5wdXQgKHZv eGVsX2RhdGEtPkdldE91dHB1dCAoKSk7CisrICB2b3hlbF9tYXBwZXItPlNldElucHV0RGF0YSAo dm94ZWxfZGF0YS0+R2V0T3V0cHV0ICgpKTsKKyAKKyAgIHZveGVsX2FjdG9yXy0+U2V0TWFwcGVy ICh2b3hlbF9tYXBwZXIpOworICAgdm94ZWxfYWN0b3JfLT5HZXRQcm9wZXJ0eSAoKS0+U2V0UmVw cmVzZW50YXRpb25Ub1dpcmVmcmFtZSAoKTsKK2RpZmYgLXVwIC4vc3VyZmFjZS9DTWFrZUxpc3Rz LnR4dC52dGs2IC4vc3VyZmFjZS9DTWFrZUxpc3RzLnR4dAorLS0tIC4vc3VyZmFjZS9DTWFrZUxp c3RzLnR4dC52dGs2CTIwMTMtMDgtMjEgMTE6NDY6NTkuMjM5MjUwMTM3ICswMDAwCisrKysgLi9z dXJmYWNlL0NNYWtlTGlzdHMudHh0CTIwMTMtMDgtMjEgMTE6NTg6NTguMjQ1ODU1NTc4ICswMDAw CitAQCAtNDQsNyArNDQsNyBAQCBpZihidWlsZCkKKyAgICAgICAgICAgICBzcmMvdnRrX3Ntb290 aGluZy92dGtfbWVzaF9xdWFkcmljX2RlY2ltYXRpb24uY3BwCisgICAgICAgICAgICAgc3JjL3Z0 a19zbW9vdGhpbmcvdnRrX21lc2hfc21vb3RoaW5nX2xhcGxhY2lhbi5jcHAKKyAgICAgICAgICAg ICBzcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdfd2luZG93ZWRfc2luYy5jcHAp CistICAgICAgICBzZXQoVlRLX1NNT09USElOR19UQVJHRVRfTElOS19MSUJSQVJJRVMgdnRrQ29t bW9uIHZ0a1dpZGdldHMgdnRrR3JhcGhpY3MpCisrICAgICAgICBzZXQoVlRLX1NNT09USElOR19U QVJHRVRfTElOS19MSUJSQVJJRVMgdnRrQ29tbW9uQ29yZSB2dGtGaWx0ZXJzTW9kZWxpbmcpCisg ICAgIGVuZGlmKCkKKyAgICAgCisgICAgIFNFVChCVUlMRF9zdXJmYWNlX29uX251cmJzIDAgQ0FD SEUgQk9PTCAiRml0dGluZyBOVVJCUyB0byBwb2ludC1jbG91ZHMgdXNpbmcgb3Blbk5VUkJTIiAp CitkaWZmIC11cCAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfcXVhZHJpY19k ZWNpbWF0aW9uLmNwcC52dGs2IC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9x dWFkcmljX2RlY2ltYXRpb24uY3BwCistLS0gLi9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0 a19tZXNoX3F1YWRyaWNfZGVjaW1hdGlvbi5jcHAudnRrNgkyMDEzLTA4LTIxIDExOjQ0OjE3LjA3 NjA5MjYzNiArMDAwMAorKysrIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9x dWFkcmljX2RlY2ltYXRpb24uY3BwCTIwMTMtMDgtMjEgMTE6NDQ6MzEuOTY1MzgxNzI5ICswMDAw CitAQCAtNTksNyArNTksNyBAQCBwY2w6Ok1lc2hRdWFkcmljRGVjaW1hdGlvblZUSzo6cGVyZm9y bVByCisgICAvLyBBcHBseSB0aGUgVlRLIGFsZ29yaXRobQorICAgdnRrU21hcnRQb2ludGVyPHZ0 a1F1YWRyaWNEZWNpbWF0aW9uPiB2dGtfcXVhZHJpY19kZWNpbWF0aW9uX2ZpbHRlciA9IHZ0a1Nt YXJ0UG9pbnRlcjx2dGtRdWFkcmljRGVjaW1hdGlvbj46Ok5ldygpOworICAgdnRrX3F1YWRyaWNf ZGVjaW1hdGlvbl9maWx0ZXItPlNldFRhcmdldFJlZHVjdGlvbiAodGFyZ2V0X3JlZHVjdGlvbl9m YWN0b3JfKTsKKy0gIHZ0a19xdWFkcmljX2RlY2ltYXRpb25fZmlsdGVyLT5TZXRJbnB1dCAodnRr X3BvbHlnb25zXyk7CisrICB2dGtfcXVhZHJpY19kZWNpbWF0aW9uX2ZpbHRlci0+U2V0SW5wdXRE YXRhICh2dGtfcG9seWdvbnNfKTsKKyAgIHZ0a19xdWFkcmljX2RlY2ltYXRpb25fZmlsdGVyLT5V cGRhdGUgKCk7CisgCisgICB2dGtfcG9seWdvbnNfID0gdnRrX3F1YWRyaWNfZGVjaW1hdGlvbl9m aWx0ZXItPkdldE91dHB1dCAoKTsKK2RpZmYgLXVwIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGlu Zy92dGtfbWVzaF9zbW9vdGhpbmdfbGFwbGFjaWFuLmNwcC52dGs2IC4vc3VyZmFjZS9zcmMvdnRr X3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdfbGFwbGFjaWFuLmNwcAorLS0tIC4vc3VyZmFj ZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdfbGFwbGFjaWFuLmNwcC52dGs2 CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAwCisrKysgLi9zdXJmYWNlL3NyYy92 dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ19sYXBsYWNpYW4uY3BwCTIwMTMtMDgtMjEg MDA6NDU6NTkuMDA5ODQ0Nzc3ICswMDAwCiBAQCAtNTEsNyArNTEsNyBAQCBwY2w6Ok1lc2hTbW9v dGhpbmdMYXBsYWNpYW5WVEs6OnBlcmZvcm1QCiAgCiAgICAvLyBBcHBseSB0aGUgVlRLIGFsZ29y aXRobQpAQCAtNjMsOSArMTUzLDkgQEAgZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9zdXJmYWNl L3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ19sYXBsYWNpYW4KICAgIHZ0a19z bW9vdGhlci0+U2V0TnVtYmVyT2ZJdGVyYXRpb25zIChudW1faXRlcl8pOwogICAgaWYgKGNvbnZl cmdlbmNlXyAhPSAwLjBmKQogICAgICB2dGtfc21vb3RoZXItPlNldENvbnZlcmdlbmNlIChjb252 ZXJnZW5jZV8pOwotZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9zdXJmYWNlL3NyYy92dGtfc21v b3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ193aW5kb3dlZF9zaW5jLmNwcC52dGs2IFBDTC0xLjYu MC1Tb3VyY2Uvc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdfd2lu ZG93ZWRfc2luYy5jcHAKLS0tLSBQQ0wtMS42LjAtU291cmNlL3N1cmZhY2Uvc3JjL3Z0a19zbW9v dGhpbmcvdnRrX21lc2hfc21vb3RoaW5nX3dpbmRvd2VkX3NpbmMuY3BwLnZ0azYJMjAxMy0wNy0x MiAyMDo1NDozNy42NTA3NTExNDggLTA2MDAKLSsrKyBQQ0wtMS42LjAtU291cmNlL3N1cmZhY2Uv c3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc21vb3RoaW5nX3dpbmRvd2VkX3NpbmMuY3BwCTIw MTMtMDctMTIgMjA6NTQ6NDkuMTc0NzIyMTEzIC0wNjAwCitkaWZmIC11cCAuL3N1cmZhY2Uvc3Jj L3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc21vb3RoaW5nX3dpbmRvd2VkX3NpbmMuY3BwLnZ0azYg Li9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ193aW5kb3dlZF9z aW5jLmNwcAorLS0tIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhp bmdfd2luZG93ZWRfc2luYy5jcHAudnRrNgkyMDEzLTA3LTIzIDE3OjIxOjAyLjAwMDAwMDAwMCAr MDAwMAorKysrIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdf d2luZG93ZWRfc2luYy5jcHAJMjAxMy0wOC0yMSAwMDo0NTo1OS4wMDk4NDQ3NzcgKzAwMDAKIEBA IC01MSw3ICs1MSw3IEBAIHBjbDo6TWVzaFNtb290aGluZ1dpbmRvd2VkU2luY1ZUSzo6cGVyZm8K ICAKICAgIC8vIEFwcGx5IHRoZSBWVEsgYWxnb3JpdGhtCkBAIC03NSw5ICsxNjUsOSBAQCBkaWZm IC11cCBQQ0wtMS42LjAtU291cmNlL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hf c21vb3RoaW5nX3dpbmRvd2VkXwogICAgdnRrX3Ntb290aGVyLT5TZXROdW1iZXJPZkl0ZXJhdGlv bnMgKG51bV9pdGVyXyk7CiAgICB2dGtfc21vb3RoZXItPlNldFBhc3NCYW5kIChwYXNzX2JhbmRf KTsKICAgIHZ0a19zbW9vdGhlci0+U2V0Tm9ybWFsaXplQ29vcmRpbmF0ZXMgKG5vcm1hbGl6ZV9j b29yZGluYXRlc18pOwotZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9zdXJmYWNlL3NyYy92dGtf c21vb3RoaW5nL3Z0a19tZXNoX3N1YmRpdmlzaW9uLmNwcC52dGs2IFBDTC0xLjYuMC1Tb3VyY2Uv c3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zdWJkaXZpc2lvbi5jcHAKLS0tLSBQ Q0wtMS42LjAtU291cmNlL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc3ViZGl2 aXNpb24uY3BwLnZ0azYJMjAxMi0wNy0xNyAxNzoxMTozMi4wMDAwMDAwMDAgLTA2MDAKLSsrKyBQ Q0wtMS42LjAtU291cmNlL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc3ViZGl2 aXNpb24uY3BwCTIwMTMtMDctMTIgMjA6NTM6MzEuOTQ3OTE4OTA3IC0wNjAwCitkaWZmIC11cCAu L3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc3ViZGl2aXNpb24uY3BwLnZ0azYg Li9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3N1YmRpdmlzaW9uLmNwcAorLS0t IC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zdWJkaXZpc2lvbi5jcHAudnRr NgkyMDEzLTA3LTIzIDE3OjIxOjAyLjAwMDAwMDAwMCArMDAwMAorKysrIC4vc3VyZmFjZS9zcmMv dnRrX3Ntb290aGluZy92dGtfbWVzaF9zdWJkaXZpc2lvbi5jcHAJMjAxMy0wOC0yMSAwMDo0NTo1 OS4wMDk4NDQ3NzcgKzAwMDAKIEBAIC03OCw3ICs3OCw3IEBAIHBjbDo6TWVzaFN1YmRpdmlzaW9u VlRLOjpwZXJmb3JtUHJvY2Vzc2kKICAgICAgICBicmVhazsKICAgIH0KQEAgLTg3LDkgKzE3Nyw5 IEBAIGRpZmYgLXVwIFBDTC0xLjYuMC1Tb3VyY2Uvc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92 dGtfbWVzaF9zdWJkaXZpc2lvbi5jcHAudnRrCiAgICB2dGtfc3ViZGl2aXNpb25fZmlsdGVyLT5V cGRhdGUgKCk7CiAgCiAgICB2dGtfcG9seWdvbnNfID0gdnRrX3N1YmRpdmlzaW9uX2ZpbHRlci0+ R2V0T3V0cHV0ICgpOwotZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9zdXJmYWNlL3NyYy92dGtf c21vb3RoaW5nL3Z0a191dGlscy5jcHAudnRrNiBQQ0wtMS42LjAtU291cmNlL3N1cmZhY2Uvc3Jj L3Z0a19zbW9vdGhpbmcvdnRrX3V0aWxzLmNwcAotLS0tIFBDTC0xLjYuMC1Tb3VyY2Uvc3VyZmFj ZS9zcmMvdnRrX3Ntb290aGluZy92dGtfdXRpbHMuY3BwLnZ0azYJMjAxMi0wNy0xNyAxNzoxMToz Mi4wMDAwMDAwMDAgLTA2MDAKLSsrKyBQQ0wtMS42LjAtU291cmNlL3N1cmZhY2Uvc3JjL3Z0a19z bW9vdGhpbmcvdnRrX3V0aWxzLmNwcAkyMDEzLTA3LTEyIDIwOjUxOjU5LjEzMzE1NTIzNiAtMDYw MAorZGlmZiAtdXAgLi9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a191dGlscy5jcHAudnRr NiAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX3V0aWxzLmNwcAorLS0tIC4vc3VyZmFj ZS9zcmMvdnRrX3Ntb290aGluZy92dGtfdXRpbHMuY3BwLnZ0azYJMjAxMy0wNy0yMyAxNzoyMTow Mi4wMDAwMDAwMDAgKzAwMDAKKysrKyAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX3V0 aWxzLmNwcAkyMDEzLTA4LTIxIDAwOjQ1OjU5LjAwOTg0NDc3NyArMDAwMAogQEAgLTYzLDcgKzYz LDcgQEAgcGNsOjpWVEtVdGlsczo6Y29udmVydFRvVlRLIChjb25zdCBwY2w6OgogICAgbWVzaDJ2 dGsgKHRyaWFuZ2xlcywgdnRrX3BvbHlnb25zKTsKICAKQEAgLTk5LDEwICsxODksNzQgQEAgZGlm ZiAtdXAgUENMLTEuNi4wLVNvdXJjZS9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a191dGls cy5jcHAudnRrNiBQQ0wtMS42LjAKICAgIHZ0a190cmlhbmdsZXMtPlVwZGF0ZSgpOwogIAogICAg dHJpYW5nbGVzX291dF92dGsgPSB2dGtfdHJpYW5nbGVzLT5HZXRPdXRwdXQgKCk7Ci1kaWZmIC11 cCBQQ0wtMS42LjAtU291cmNlL3Rvb2xzL21lc2hfc2FtcGxpbmcuY3BwLnZ0azYgUENMLTEuNi4w LVNvdXJjZS90b29scy9tZXNoX3NhbXBsaW5nLmNwcAotLS0tIFBDTC0xLjYuMC1Tb3VyY2UvdG9v bHMvbWVzaF9zYW1wbGluZy5jcHAudnRrNgkyMDEyLTA3LTE3IDE3OjExOjMyLjAwMDAwMDAwMCAt MDYwMAotKysrIFBDTC0xLjYuMC1Tb3VyY2UvdG9vbHMvbWVzaF9zYW1wbGluZy5jcHAJMjAxMy0w Ny0xMiAyMDo1MDoxOC43MzMzODg0NzQgLTA2MDAKLUBAIC0yMDIsNyArMjAyLDcgQEAgbWFpbiAo aW50IGFyZ2MsIGNoYXIgKiphcmd2KQorZGlmZiAtdXAgLi90b29scy9DTWFrZUxpc3RzLnR4dC52 dGs2IC4vdG9vbHMvQ01ha2VMaXN0cy50eHQKKy0tLSAuL3Rvb2xzL0NNYWtlTGlzdHMudHh0LnZ0 azYJMjAxMy0wOC0yMSAxMjowMzoxOC44ODk1NzE0OTAgKzAwMDAKKysrKyAuL3Rvb2xzL0NNYWtl TGlzdHMudHh0CTIwMTMtMDgtMjEgMjE6NTI6MzEuOTc3ODE2NDQ1ICswMDAwCitAQCAtMTU3LDcg KzE1Nyw3IEBAIGlmIChidWlsZCkKKyAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMgKHBjbF9v cmdhbml6ZWRfcGNkX3RvX3BuZyBwY2xfY29tbW9uIHBjbF9pbykKKyAKKyAgICAgICBQQ0xfQURE X0VYRUNVVEFCTEUocGNsX3RpZmYycGNkICR7U1VCU1lTX05BTUV9IHRpZmYycGNkLmNwcCkKKy0g ICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX3RpZmYycGNkIHBjbF9jb21tb24gcGNsX2lv KQorKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdGlmZjJwY2QgcGNsX2NvbW1vbiBw Y2xfaW8gdnRrUmVuZGVyaW5nQ29yZSB2dGtSZW5kZXJpbmdPcGVuR0wgdnRrUmVuZGVyaW5nRnJl ZVR5cGUgdnRrUmVuZGVyaW5nRnJlZVR5cGVPcGVuR0wgdnRrUmVuZGVyaW5nVm9sdW1lIHZ0a1Jl bmRlcmluZ1ZvbHVtZU9wZW5HTCB2dGtGaWx0ZXJzU3RhdGlzdGljcyB2dGtGaWx0ZXJzU3RhdGlz dGljc0dudVIgdnRrSW50ZXJhY3Rpb25TdHlsZSB2dGtGaWx0ZXJzU3RhdGlzdGljcykKKyAgICAg ICAgICAgCisgICAgICAgUENMX0FERF9FWEVDVVRBQkxFKHBjbF9wbHkydnRrICR7U1VCU1lTX05B TUV9IHBseTJ2dGsuY3BwKQorICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfcGx5MnZ0 ayBwY2xfY29tbW9uIHBjbF9pbykKK0BAIC0xNzIsNyArMTcyLDcgQEAgaWYgKGJ1aWxkKQorICAg ICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfb2JqMnZ0ayBwY2xfY29tbW9uIHBjbF9pbykK KyAKKyAgICAgICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX3Z0azJwY2QgJHtTVUJTWVNfTkFNRX0g dnRrMnBjZC5jcHApCistICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF92dGsycGNkIHBj bF9jb21tb24gcGNsX2lvKQorKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdnRrMnBj ZCBwY2xfY29tbW9uIHBjbF9pbyB2dGtGaWx0ZXJzQ29yZSkKKyAKKyAgICAgICBpZihCVUlMRF92 aXN1YWxpemF0aW9uKQorICAgCitAQCAtMjA2LDEzICsyMDYsMTMgQEAgaWYgKGJ1aWxkKQorICAg ICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vY3RyZWVfdmlld2VyIHBjbF9jb21tb24g cGNsX2lvIHBjbF9vY3RyZWUgcGNsX3Zpc3VhbGl6YXRpb24gcGNsX2tkdHJlZSBwY2xfZmlsdGVy cykKKyAKKyAgICAgICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfbWVzaDJwY2QgJHtTVUJTWVNf TkFNRX0gbWVzaDJwY2QuY3BwKQorLSAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9t ZXNoMnBjZCBwY2xfY29tbW9uIHBjbF9pbyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfZmlsdGVycyB2 dGtDb21tb24pCisrICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX21lc2gycGNkIHBj bF9jb21tb24gcGNsX2lvIHBjbF92aXN1YWxpemF0aW9uIHBjbF9maWx0ZXJzIHZ0a0NvbW1vbkNv cmUpCisgICAgICAgICAKKyAgICAgICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfbWVzaF9zYW1w bGluZyAke1NVQlNZU19OQU1FfSBtZXNoX3NhbXBsaW5nLmNwcCkKKy0gICAgICAgIHRhcmdldF9s aW5rX2xpYnJhcmllcyhwY2xfbWVzaF9zYW1wbGluZyBwY2xfY29tbW9uIHBjbF9pbyBwY2xfdmlz dWFsaXphdGlvbiBwY2xfZmlsdGVycyB2dGtDb21tb24pCisrICAgICAgICB0YXJnZXRfbGlua19s aWJyYXJpZXMocGNsX21lc2hfc2FtcGxpbmcgcGNsX2NvbW1vbiBwY2xfaW8gcGNsX3Zpc3VhbGl6 YXRpb24gcGNsX2ZpbHRlcnMgdnRrQ29tbW9uQ29yZSkKKyAgICAgICAgIAorICAgICAgICAgUENM X0FERF9FWEVDVVRBQkxFKHBjbF92aXJ0dWFsX3NjYW5uZXIgJHtTVUJTWVNfTkFNRX0gdmlydHVh bF9zY2FubmVyLmNwcCkKKy0gICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdmlydHVh bF9zY2FubmVyIHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9u IHZ0a0NvbW1vbiB2dGtHcmFwaGljcykKKysgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhw Y2xfdmlydHVhbF9zY2FubmVyIHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1 YWxpemF0aW9uIHZ0a0NvbW1vbkNvcmUgdnRrUmVuZGVyaW5nQ29yZSkKKyAKKyAgICAgICAgIFBD TF9BRERfRVhFQ1VUQUJMRSAocGNsX3ZveGVsX2dyaWRfb2NjbHVzaW9uX2VzdGltYXRpb24gJHtT VUJTWVNfTkFNRX0gdm94ZWxfZ3JpZF9vY2NsdXNpb25fZXN0aW1hdGlvbi5jcHApCisgICAgICAg ICB0YXJnZXRfbGlua19saWJyYXJpZXMgKHBjbF92b3hlbF9ncmlkX29jY2x1c2lvbl9lc3RpbWF0 aW9uIHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9uKQorZGlm ZiAtdXAgLi90b29scy9tZXNoMnBjZC5jcHAudnRrNiAuL3Rvb2xzL21lc2gycGNkLmNwcAorLS0t IC4vdG9vbHMvbWVzaDJwY2QuY3BwLnZ0azYJMjAxMy0wOC0yMSAxMjowMjoyOC41MzM2NDA5MDkg KzAwMDAKKysrKyAuL3Rvb2xzL21lc2gycGNkLmNwcAkyMDEzLTA4LTIxIDEyOjAyOjU3LjY0ODE3 Nzk4NCArMDAwMAorQEAgLTExMiwxNCArMTEyLDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKKyAgICAgdnRrU21hcnRQb2ludGVyPHZ0a1BMWVJlYWRlcj4gcmVhZGVyUXVlcnkgPSB2 dGtTbWFydFBvaW50ZXI8dnRrUExZUmVhZGVyPjo6TmV3ICgpOworICAgICByZWFkZXJRdWVyeS0+ U2V0RmlsZU5hbWUgKGFyZ3ZbcGx5X2ZpbGVfaW5kaWNlc1swXV0pOworICAgICBwb2x5ZGF0YTEg PSByZWFkZXJRdWVyeS0+R2V0T3V0cHV0ICgpOworLSAgICBwb2x5ZGF0YTEtPlVwZGF0ZSAoKTsK KysgICAgcmVhZGVyUXVlcnktPlVwZGF0ZSAoKTsKKyAgIH0KKyAgIGVsc2UgaWYgKG9ial9maWxl X2luZGljZXMuc2l6ZSAoKSA9PSAxKQorICAgeworICAgICB2dGtTbWFydFBvaW50ZXI8dnRrT0JK UmVhZGVyPiByZWFkZXJRdWVyeSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtPQkpSZWFkZXI+OjpOZXcg KCk7CisgICAgIHJlYWRlclF1ZXJ5LT5TZXRGaWxlTmFtZSAoYXJndltvYmpfZmlsZV9pbmRpY2Vz WzBdXSk7CisgICAgIHBvbHlkYXRhMSA9IHJlYWRlclF1ZXJ5LT5HZXRPdXRwdXQgKCk7CistICAg IHBvbHlkYXRhMS0+VXBkYXRlICgpOworKyAgICByZWFkZXJRdWVyeS0+VXBkYXRlICgpOworICAg fQorIAorICAgYm9vbCBJTlRFUl9WSVMgPSBmYWxzZTsKK2RpZmYgLXVwIC4vdG9vbHMvbWVzaF9z YW1wbGluZy5jcHAudnRrNiAuL3Rvb2xzL21lc2hfc2FtcGxpbmcuY3BwCistLS0gLi90b29scy9t ZXNoX3NhbXBsaW5nLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAw CisrKysgLi90b29scy9tZXNoX3NhbXBsaW5nLmNwcAkyMDEzLTA4LTIxIDEyOjA0OjQ4LjkyNDI1 Mzc4MiArMDAwMAorQEAgLTE5NywxOSArMTk3LDE5IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKKyAgICAgdnRrU21hcnRQb2ludGVyPHZ0a09CSlJlYWRlcj4gcmVhZGVyUXVlcnkgPSB2 dGtTbWFydFBvaW50ZXI8dnRrT0JKUmVhZGVyPjo6TmV3ICgpOworICAgICByZWFkZXJRdWVyeS0+ U2V0RmlsZU5hbWUgKGFyZ3Zbb2JqX2ZpbGVfaW5kaWNlc1swXV0pOworICAgICBwb2x5ZGF0YTEg PSByZWFkZXJRdWVyeS0+R2V0T3V0cHV0ICgpOworLSAgICBwb2x5ZGF0YTEtPlVwZGF0ZSAoKTsK KysgICAgcmVhZGVyUXVlcnktPlVwZGF0ZSAoKTsKKyAgIH0KICAKICAgIC8vbWFrZSBzdXJlIHRo YXQgdGhlIHBvbHlnb25zIGFyZSB0cmlhbmdsZXMhCiAgICB2dGtTbWFydFBvaW50ZXI8dnRrVHJp YW5nbGVGaWx0ZXI+IHRyaWFuZ2xlRmlsdGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1RyaWFuZ2xl RmlsdGVyPjo6TmV3ICgpOwpAQCAtMTExLDEwICsyNjUsMTY3IEBAIGRpZmYgLXVwIFBDTC0xLjYu MC1Tb3VyY2UvdG9vbHMvbWVzaF9zYW1wbGluZy5jcHAudnRrNiBQQ0wtMS42LjAtU291cmNlL3Rv b2xzL21lCiAgICB0cmlhbmdsZUZpbHRlci0+VXBkYXRlICgpOwogIAogICAgdnRrU21hcnRQb2lu dGVyPHZ0a1BvbHlEYXRhTWFwcGVyPiB0cmlhbmdsZU1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2 dGtQb2x5RGF0YU1hcHBlcj46Ok5ldyAoKTsKLWRpZmYgLXVwIFBDTC0xLjYuMC1Tb3VyY2UvdG9v bHMvb2N0cmVlX3ZpZXdlci5jcHAudnRrNiBQQ0wtMS42LjAtU291cmNlL3Rvb2xzL29jdHJlZV92 aWV3ZXIuY3BwCi0tLS0gUENMLTEuNi4wLVNvdXJjZS90b29scy9vY3RyZWVfdmlld2VyLmNwcC52 dGs2CTIwMTItMDctMTcgMTc6MTE6MzIuMDAwMDAwMDAwIC0wNjAwCi0rKysgUENMLTEuNi4wLVNv dXJjZS90b29scy9vY3RyZWVfdmlld2VyLmNwcAkyMDEzLTA3LTEyIDE2OjQ2OjUzLjY5OTM0MjU5 OCAtMDYwMAotQEAgLTMwMCw3ICszMDAsNyBAQCBwcml2YXRlOgorICAgdHJpYW5nbGVNYXBwZXIt PlNldElucHV0Q29ubmVjdGlvbiAodHJpYW5nbGVGaWx0ZXItPkdldE91dHB1dFBvcnQgKCkpOwor ICAgdHJpYW5nbGVNYXBwZXItPlVwZGF0ZSgpOworICAgcG9seWRhdGExID0gdHJpYW5nbGVNYXBw ZXItPkdldElucHV0KCk7CistICBwb2x5ZGF0YTEtPlVwZGF0ZSAoKTsKKysgIHRyaWFuZ2xlTWFw cGVyLT5VcGRhdGUgKCk7CisgCisgICBib29sIElOVEVSX1ZJUyA9IGZhbHNlOworICAgYm9vbCBW SVMgPSB0cnVlOworZGlmZiAtdXAgLi90b29scy9vYmoydnRrLmNwcC52dGs2IC4vdG9vbHMvb2Jq MnZ0ay5jcHAKKy0tLSAuL3Rvb2xzL29iajJ2dGsuY3BwLnZ0azYJMjAxMy0wOC0yMSAxMjoxOTow OS40MTUyMDM5MzggKzAwMDAKKysrKyAuL3Rvb2xzL29iajJ2dGsuY3BwCTIwMTMtMDgtMjEgMTI6 MjA6NTMuNDIyMzA4NDAwICswMDAwCitAQCAtNzcsMTEgKzc3LDExIEBAIG1haW4gKGludCBhcmdj LCBjaGFyKiogYXJndikKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtPQkpSZWFkZXI+IHJlYWRlciA9 IHZ0a1NtYXJ0UG9pbnRlcjx2dGtPQkpSZWFkZXI+OjpOZXcgKCk7CisgICByZWFkZXItPlNldEZp bGVOYW1lIChhcmd2W29ial9maWxlX2luZGljZXNbMF1dKTsKKyAgIHBvbHlkYXRhID0gcmVhZGVy LT5HZXRPdXRwdXQgKCk7CistICBwb2x5ZGF0YS0+VXBkYXRlICgpOworKyAgcmVhZGVyLT5VcGRh dGUgKCk7CisgCisgICAvLyBDb252ZXJ0IHRvIFZUSyBhbmQgc2F2ZQorICAgdnRrU21hcnRQb2lu dGVyPHZ0a1BvbHlEYXRhV3JpdGVyPiB3cml0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURh dGFXcml0ZXI+OjpOZXcgKCk7CistICB3cml0ZXItPlNldElucHV0IChwb2x5ZGF0YSk7CisrICB3 cml0ZXItPlNldElucHV0RGF0YSAocG9seWRhdGEpOworICAgd3JpdGVyLT5TZXRGaWxlTmFtZSAo YXJndlt2dGtfZmlsZV9pbmRpY2VzWzBdXSk7CisgICB3cml0ZXItPldyaXRlICgpOworIH0KK2Rp ZmYgLXVwIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNfYWNjZXB0ZWRfaHlwb3RoZXNlcy5jcHAudnRr NiAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX2FjY2VwdGVkX2h5cG90aGVzZXMuY3BwCistLS0gLi90 b29scy9vYmpfcmVjX3JhbnNhY19hY2NlcHRlZF9oeXBvdGhlc2VzLmNwcC52dGs2CTIwMTMtMDgt MjEgMTI6MjE6MzYuOTIwMTg3ODY3ICswMDAwCisrKysgLi90b29scy9vYmpfcmVjX3JhbnNhY19h Y2NlcHRlZF9oeXBvdGhlc2VzLmNwcAkyMDEzLTA4LTIxIDEyOjIxOjU1LjU4MTU2NTA3MyArMDAw MAorQEAgLTMyMywxMyArMzIzLDEzIEBAIHVwZGF0ZSAoQ2FsbGJhY2tQYXJhbWV0ZXJzKiBwYXJh bXMpCisgICAgIC8vIFNldHVwIHRoZSB0cmFuc2Zvcm1hdG9yCisgICAgIHZ0a1NtYXJ0UG9pbnRl cjx2dGtUcmFuc2Zvcm1Qb2x5RGF0YUZpbHRlcj4gdnRrX3RyYW5zZm9ybWF0b3IgPSB2dGtTbWFy dFBvaW50ZXI8dnRrVHJhbnNmb3JtUG9seURhdGFGaWx0ZXI+OjpOZXcgKCk7CisgICAgIHZ0a190 cmFuc2Zvcm1hdG9yLT5TZXRUcmFuc2Zvcm0gKHZ0a190cmFuc2Zvcm0pOworLSAgICB2dGtfdHJh bnNmb3JtYXRvci0+U2V0SW5wdXQgKHZ0a19tb2RlbCk7CisrICAgIHZ0a190cmFuc2Zvcm1hdG9y LT5TZXRJbnB1dERhdGEgKHZ0a19tb2RlbCk7CisgICAgIHZ0a190cmFuc2Zvcm1hdG9yLT5VcGRh dGUgKCk7CisgCisgICAgIC8vIFZpc3VhbGl6ZQorICAgICB2dGtTbWFydFBvaW50ZXI8dnRrQWN0 b3I+IHZ0a19hY3RvciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj46Ok5ldygpOworICAgICB2 dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+IHZ0a19tYXBwZXIgPSB2dGtTbWFydFBv aW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7CistICAgIHZ0a19tYXBwZXItPlNldElu cHV0KHZ0a190cmFuc2Zvcm1hdG9yLT5HZXRPdXRwdXQgKCkpOworKyAgICB2dGtfbWFwcGVyLT5T ZXRJbnB1dERhdGEodnRrX3RyYW5zZm9ybWF0b3ItPkdldE91dHB1dCAoKSk7CisgICAgIHZ0a19h Y3Rvci0+U2V0TWFwcGVyKHZ0a19tYXBwZXIpOworICAgICAvLyBTZXQgdGhlIGFwcGVhcmFuY2Ug JiBhZGQgdG8gdGhlIHJlbmRlcmVyCisgICAgIHZ0a19hY3Rvci0+R2V0UHJvcGVydHkgKCktPlNl dENvbG9yICgwLjYsIDAuNywgMC45KTsKK2RpZmYgLXVwIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNf bW9kZWxfb3Bwcy5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX21vZGVsX29wcHMuY3Bw CistLS0gLi90b29scy9vYmpfcmVjX3JhbnNhY19tb2RlbF9vcHBzLmNwcC52dGs2CTIwMTMtMDgt MjEgMTI6MjI6NTAuMzg1NjcyNDUzICswMDAwCisrKysgLi90b29scy9vYmpfcmVjX3JhbnNhY19t b2RlbF9vcHBzLmNwcAkyMDEzLTA4LTIxIDEyOjIzOjA0LjI1NTk1MjYyMSArMDAwMAorQEAgLTIx NSw3ICsyMTUsNyBAQCB2b2lkIHNob3dNb2RlbE9wcHMgKFBDTFZpc3VhbGl6ZXImIHZpeiwKKyAg IC8vIFNhdmUgdGhlIG5vcm1hbHMKKyAgIHZ0a19vcHBzLT5HZXRQb2ludERhdGEgKCktPlNldE5v cm1hbHMgKHZ0a19ub3JtYWxzKTsKKyAgIC8vIFNldHVwIHRoZSBoZWRnZSBob2cgb2JqZWN0Cist ICB2dGtfaGVkZ2VfaG9nLT5TZXRJbnB1dCAodnRrX29wcHMpOworKyAgdnRrX2hlZGdlX2hvZy0+ U2V0SW5wdXREYXRhICh2dGtfb3Bwcyk7CisgICB2dGtfaGVkZ2VfaG9nLT5TZXRWZWN0b3JNb2Rl VG9Vc2VOb3JtYWwgKCk7CisgICB2dGtfaGVkZ2VfaG9nLT5TZXRTY2FsZUZhY3RvciAoMC41Zipw YWlyX3dpZHRoKTsKKyAgIHZ0a19oZWRnZV9ob2ctPlVwZGF0ZSAoKTsKK2RpZmYgLXVwIC4vdG9v bHMvb2JqX3JlY19yYW5zYWNfb3JyX29jdHJlZS5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNfcmFu c2FjX29ycl9vY3RyZWUuY3BwCistLS0gLi90b29scy9vYmpfcmVjX3JhbnNhY19vcnJfb2N0cmVl LmNwcC52dGs2CTIwMTMtMDgtMjEgMTI6MjM6NTkuNjAyMDcwMjYyICswMDAwCisrKysgLi90b29s cy9vYmpfcmVjX3JhbnNhY19vcnJfb2N0cmVlLmNwcAkyMDEzLTA4LTIxIDEyOjI0OjIxLjYyMzUx NDgxMCArMDAwMAorQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIG5vZGVfdG9fY3ViZSAoT1JST2N0 cmVlOjpOb2RlKiBub2RlCisgICBjdWJlLT5TZXRCb3VuZHMgKGJbMF0sIGJbMV0sIGJbMl0sIGJb M10sIGJbNF0sIGJbNV0pOworICAgY3ViZS0+VXBkYXRlICgpOworIAorLSAgYWRkaXRpdmVfb2N0 cmVlLT5BZGRJbnB1dCAoY3ViZS0+R2V0T3V0cHV0ICgpKTsKKysgIGFkZGl0aXZlX29jdHJlZS0+ QWRkSW5wdXREYXRhIChjdWJlLT5HZXRPdXRwdXQgKCkpOworIH0KKyAKKyAvLz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KK0BAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBzaG93X29jdHJlZSAoT1JST2N0cmVlKiBvY3Ry ZWUsIFBDTAorICAgdnRrUmVuZGVyZXIgKnJlbmRlcmVyID0gdml6LmdldFJlbmRlcldpbmRvdyAo KS0+R2V0UmVuZGVyZXJzICgpLT5HZXRGaXJzdFJlbmRlcmVyICgpOworICAgdnRrU21hcnRQb2lu dGVyPHZ0a0FjdG9yPiBvY3RyZWVfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpO ZXcoKTsKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVyPiBtYXBwZXIgPSB2dGtT bWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAoKTsKKy0gIG1hcHBlci0+U2V0SW5w dXQodnRrX29jdHJlZSk7CisrICBtYXBwZXItPlNldElucHV0RGF0YSh2dGtfb2N0cmVlKTsKKyAg IG9jdHJlZV9hY3Rvci0+U2V0TWFwcGVyKG1hcHBlcik7CisgCisgICAvLyBTZXQgdGhlIGFwcGVh cmFuY2UgJiBhZGQgdG8gdGhlIHJlbmRlcmVyCitkaWZmIC11cCAuL3Rvb2xzL29ial9yZWNfcmFu c2FjX29ycl9vY3RyZWVfenByb2plY3Rpb24uY3BwLnZ0azYgLi90b29scy9vYmpfcmVjX3JhbnNh Y19vcnJfb2N0cmVlX3pwcm9qZWN0aW9uLmNwcAorLS0tIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNf b3JyX29jdHJlZV96cHJvamVjdGlvbi5jcHAudnRrNgkyMDEzLTA4LTIxIDIxOjI2OjI2LjA5MDMy NTQ4NSArMDAwMAorKysrIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNfb3JyX29jdHJlZV96cHJvamVj dGlvbi5jcHAJMjAxMy0wOC0yMSAyMToyNzoxNS41MDEzNjAzOTQgKzAwMDAKK0BAIC0yMDYsNyAr MjA2LDcgQEAgdm9pZCBzaG93X29jdHJlZSAoT1JST2N0cmVlKiBvY3RyZWUsIFBDTAorICAgdnRr UmVuZGVyZXIgKnJlbmRlcmVyID0gdml6LmdldFJlbmRlcldpbmRvdyAoKS0+R2V0UmVuZGVyZXJz ICgpLT5HZXRGaXJzdFJlbmRlcmVyICgpOworICAgdnRrU21hcnRQb2ludGVyPHZ0a0FjdG9yPiBv Y3RyZWVfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcoKTsKKyAgIHZ0a1Nt YXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVyPiBtYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRr RGF0YVNldE1hcHBlcj46Ok5ldyAoKTsKKy0gIG1hcHBlci0+U2V0SW5wdXQodnRrX29jdHJlZSk7 CisrICBtYXBwZXItPlNldElucHV0RGF0YSh2dGtfb2N0cmVlKTsKKyAgIG9jdHJlZV9hY3Rvci0+ U2V0TWFwcGVyKG1hcHBlcik7CisgCisgICAvLyBTZXQgdGhlIGFwcGVhcmFuY2UgJiBhZGQgdG8g dGhlIHJlbmRlcmVyCitAQCAtMjUwLDkgKzI1MCw5IEBAIHZvaWQgc2hvd19vY3RyZWVfenByb2og KE9SUk9jdHJlZVpQcm9qZWMKKyAgIHZ0a1JlbmRlcmVyICpyZW5kZXJlciA9IHZpei5nZXRSZW5k ZXJXaW5kb3cgKCktPkdldFJlbmRlcmVycyAoKS0+R2V0Rmlyc3RSZW5kZXJlciAoKTsKKyAgIHZ0 a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj4gdXBwZXJfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRr QWN0b3I+OjpOZXcoKSwgbG93ZXJfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpO ZXcoKTsKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVyPiB1cHBlcl9tYXBwZXIg PSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAoKSwgbG93ZXJfbWFwcGVy ID0gdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+OjpOZXcgKCk7CistICB1cHBlcl9t YXBwZXItPlNldElucHV0KHVwcGVyX2JvdW5kLT5HZXRPdXRwdXQgKCkpOworKyAgdXBwZXJfbWFw cGVyLT5TZXRJbnB1dERhdGEodXBwZXJfYm91bmQtPkdldE91dHB1dCAoKSk7CisgICB1cHBlcl9h Y3Rvci0+U2V0TWFwcGVyKHVwcGVyX21hcHBlcik7CistICBsb3dlcl9tYXBwZXItPlNldElucHV0 KGxvd2VyX2JvdW5kLT5HZXRPdXRwdXQgKCkpOworKyAgbG93ZXJfbWFwcGVyLT5TZXRJbnB1dERh dGEobG93ZXJfYm91bmQtPkdldE91dHB1dCAoKSk7CisgICBsb3dlcl9hY3Rvci0+U2V0TWFwcGVy KGxvd2VyX21hcHBlcik7CisgCisgICAvLyBTZXQgdGhlIGFwcGVhcmFuY2UgJiBhZGQgdG8gdGhl IHJlbmRlcmVyCitAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgbm9kZV90b19jdWJlIChPUlJPY3Ry ZWU6Ok5vZGUqIG5vZGUKKyAgIGN1YmUtPlNldEJvdW5kcyAoYlswXSwgYlsxXSwgYlsyXSwgYlsz XSwgYls0XSwgYls1XSk7CisgICBjdWJlLT5VcGRhdGUgKCk7CisgCistICBhZGRpdGl2ZV9vY3Ry ZWUtPkFkZElucHV0IChjdWJlLT5HZXRPdXRwdXQgKCkpOworKyAgYWRkaXRpdmVfb2N0cmVlLT5B ZGRJbnB1dERhdGEgKGN1YmUtPkdldE91dHB1dCAoKSk7CisgfQorIAorIC8vPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIHJlY3RhbmdsZV90b192dGsgKGZsb2F0IHgxLCBm bG9hdCB4CisgICBjdWJlLT5TZXRCb3VuZHMgKHgxLCB4MiwgeTEsIHkyLCB6LCB6KTsKKyAgIGN1 YmUtPlVwZGF0ZSAoKTsKKyAKKy0gIGFkZGl0aXZlX3JlY3RhbmdsZS0+QWRkSW5wdXQgKGN1YmUt PkdldE91dHB1dCAoKSk7CisrICBhZGRpdGl2ZV9yZWN0YW5nbGUtPkFkZElucHV0RGF0YSAoY3Vi ZS0+R2V0T3V0cHV0ICgpKTsKKyB9CisgCisgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitkaWZmIC11cCAuL3Rv b2xzL29ial9yZWNfcmFuc2FjX3Jlc3VsdC5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNfcmFuc2Fj X3Jlc3VsdC5jcHAKKy0tLSAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX3Jlc3VsdC5jcHAudnRrNgky MDEzLTA4LTIxIDIxOjI3OjQ5LjIxMDA2NjQwMSArMDAwMAorKysrIC4vdG9vbHMvb2JqX3JlY19y YW5zYWNfcmVzdWx0LmNwcAkyMDEzLTA4LTIxIDIxOjI4OjA0LjY4MTM5MDQzMCArMDAwMAorQEAg LTI4MSwxMyArMjgxLDEzIEBAIHVwZGF0ZSAoQ2FsbGJhY2tQYXJhbWV0ZXJzKiBwYXJhbXMpCisg ICAgIC8vIFNldHVwIHRoZSB0cmFuc2Zvcm1hdG9yCisgICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtU cmFuc2Zvcm1Qb2x5RGF0YUZpbHRlcj4gdnRrX3RyYW5zZm9ybWF0b3IgPSB2dGtTbWFydFBvaW50 ZXI8dnRrVHJhbnNmb3JtUG9seURhdGFGaWx0ZXI+OjpOZXcgKCk7CisgICAgIHZ0a190cmFuc2Zv cm1hdG9yLT5TZXRUcmFuc2Zvcm0gKHZ0a190cmFuc2Zvcm0pOworLSAgICB2dGtfdHJhbnNmb3Jt YXRvci0+U2V0SW5wdXQgKHZ0a19tb2RlbCk7CisrICAgIHZ0a190cmFuc2Zvcm1hdG9yLT5TZXRJ bnB1dERhdGEgKHZ0a19tb2RlbCk7CisgICAgIHZ0a190cmFuc2Zvcm1hdG9yLT5VcGRhdGUgKCk7 CisgCisgICAgIC8vIFZpc3VhbGl6ZQorICAgICB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+IHZ0 a19hY3RvciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj46Ok5ldygpOworICAgICB2dGtTbWFy dFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+IHZ0a19tYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8 dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7CistICAgIHZ0a19tYXBwZXItPlNldElucHV0KHZ0 a190cmFuc2Zvcm1hdG9yLT5HZXRPdXRwdXQgKCkpOworKyAgICB2dGtfbWFwcGVyLT5TZXRJbnB1 dERhdGEodnRrX3RyYW5zZm9ybWF0b3ItPkdldE91dHB1dCAoKSk7CisgICAgIHZ0a19hY3Rvci0+ U2V0TWFwcGVyKHZ0a19tYXBwZXIpOworICAgICAvLyBTZXQgdGhlIGFwcGVhcmFuY2UgJiBhZGQg dG8gdGhlIHJlbmRlcmVyCisgICAgIHZ0a19hY3Rvci0+R2V0UHJvcGVydHkgKCktPlNldENvbG9y ICgwLjYsIDAuNywgMC45KTsKK2RpZmYgLXVwIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNfc2NlbmVf b3Bwcy5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX3NjZW5lX29wcHMuY3BwCistLS0g Li90b29scy9vYmpfcmVjX3JhbnNhY19zY2VuZV9vcHBzLmNwcC52dGs2CTIwMTMtMDgtMjEgMjE6 Mjk6MjEuOTA5MDA3ODcwICswMDAwCisrKysgLi90b29scy9vYmpfcmVjX3JhbnNhY19zY2VuZV9v cHBzLmNwcAkyMDEzLTA4LTIxIDIxOjI5OjMyLjY5ODIzMzgzOSArMDAwMAorQEAgLTE3Myw3ICsx NzMsNyBAQCB2b2lkIHVwZGF0ZSAoQ2FsbGJhY2tQYXJhbWV0ZXJzKiBwYXJhbXMpCisgICB2dGtT bWFydFBvaW50ZXI8dnRrSGVkZ2VIb2c+IHZ0a19oaCA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtIZWRn ZUhvZz46Ok5ldyAoKTsKKyAgIHZ0a19oaC0+U2V0VmVjdG9yTW9kZVRvVXNlTm9ybWFsICgpOwor ICAgdnRrX2hoLT5TZXRTY2FsZUZhY3RvciAoMC41ZipwYXJhbXMtPm9ianJlY18uZ2V0UGFpcldp ZHRoICgpKTsKKy0gIHZ0a19oaC0+U2V0SW5wdXQgKHZ0a19vcHBzKTsKKysgIHZ0a19oaC0+U2V0 SW5wdXREYXRhICh2dGtfb3Bwcyk7CisgICB2dGtfaGgtPlVwZGF0ZSAoKTsKKyAKKyAgIC8vIFRo ZSBsaW5lcworZGlmZiAtdXAgLi90b29scy9vY3RyZWVfdmlld2VyLmNwcC52dGs2IC4vdG9vbHMv b2N0cmVlX3ZpZXdlci5jcHAKKy0tLSAuL3Rvb2xzL29jdHJlZV92aWV3ZXIuY3BwLnZ0azYJMjAx My0wNy0yMyAxNzoyMTowMi4wMDAwMDAwMDAgKzAwMDAKKysrKyAuL3Rvb2xzL29jdHJlZV92aWV3 ZXIuY3BwCTIwMTMtMDgtMjEgMjE6MzA6MDkuNDI4MDAzMDgwICswMDAwCitAQCAtMjk0LDEzICsy OTQsMTMgQEAgcHJpdmF0ZToKKyAgICAgICBkb3VibGUgeSA9IGRpc3BsYXlDbG91ZC0+cG9pbnRz W2ldLnk7CisgICAgICAgZG91YmxlIHogPSBkaXNwbGF5Q2xvdWQtPnBvaW50c1tpXS56OworIAor LSAgICAgIHRyZWVXaXJlZnJhbWUtPkFkZElucHV0KEdldEN1Ym9pZCh4IC0gcywgeCArIHMsIHkg LSBzLCB5ICsgcywgeiAtIHMsIHogKyBzKSk7CisrICAgICAgdHJlZVdpcmVmcmFtZS0+QWRkSW5w dXREYXRhKEdldEN1Ym9pZCh4IC0gcywgeCArIHMsIHkgLSBzLCB5ICsgcywgeiAtIHMsIHogKyBz KSk7CisgICAgIH0KKyAKICAgICAgdnRrU21hcnRQb2ludGVyPHZ0a0FjdG9yPiB0cmVlQWN0b3Ig PSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcoKTsKICAKICAgICAgdnRrU21hcnRQb2lu dGVyPHZ0a0RhdGFTZXRNYXBwZXI+IG1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0 TWFwcGVyPjo6TmV3KCk7CkBAIC0xMjMsMTAgKzQzNCwzOTggQEAgZGlmZiAtdXAgUENMLTEuNi4w LVNvdXJjZS90b29scy9vY3RyZWVfdmlld2VyLmNwcC52dGs2IFBDTC0xLjYuMC1Tb3VyY2UvdG9v bHMvb2MKICAgICAgdHJlZUFjdG9yLT5TZXRNYXBwZXIobWFwcGVyKTsKICAKICAgICAgdHJlZUFj dG9yLT5HZXRQcm9wZXJ0eSgpLT5TZXRDb2xvcigxLjAsIDEuMCwgMS4wKTsKLWRpZmYgLXVwIFBD TC0xLjYuMC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL2lvLmNwcC52dGs2IFBDTC0x LjYuMC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL2lvLmNwcAotLS0tIFBDTC0xLjYu MC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL2lvLmNwcC52dGs2CTIwMTItMDctMTcg MTc6MTE6MzIuMDAwMDAwMDAwIC0wNjAwCi0rKysgUENMLTEuNi4wLVNvdXJjZS92aXN1YWxpemF0 aW9uL3NyYy9jb21tb24vaW8uY3BwCTIwMTMtMDctMTIgMjE6MDI6NDUuNzI2NTE1ODM5IC0wNjAw Ci1AQCAtODMsNyArODMsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OnNhdmVQb2ludERhdGEgKHZ0 a1BvCitkaWZmIC11cCAuL3Rvb2xzL3BseTJ2dGsuY3BwLnZ0azYgLi90b29scy9wbHkydnRrLmNw cAorLS0tIC4vdG9vbHMvcGx5MnZ0ay5jcHAudnRrNgkyMDEzLTA4LTIxIDIxOjMzOjAzLjg5NDY1 Njg0MSArMDAwMAorKysrIC4vdG9vbHMvcGx5MnZ0ay5jcHAJMjAxMy0wOC0yMSAyMTozMzo1Mi45 MjI2ODM1NjUgKzAwMDAKK0BAIC03NywxMiArNzcsMTIgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIq KiBhcmd2KQorICAgdnRrU21hcnRQb2ludGVyPHZ0a1BMWVJlYWRlcj4gcmVhZGVyID0gdnRrU21h cnRQb2ludGVyPHZ0a1BMWVJlYWRlcj46Ok5ldyAoKTsKKyAgIHJlYWRlci0+U2V0RmlsZU5hbWUg KGFyZ3ZbcGx5X2ZpbGVfaW5kaWNlc1swXV0pOworICAgcG9seWRhdGEgPSByZWFkZXItPkdldE91 dHB1dCAoKTsKKy0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7CisrICByZWFkZXItPlVwZGF0ZSAoKTsK KyAgIHByaW50X2luZm8gKCJMb2FkZWQgJXMgd2l0aCAlenUgcG9pbnRzL3ZlcnRpY2VzLlxuIiwg YXJndltwbHlfZmlsZV9pbmRpY2VzWzBdXSwgcG9seWRhdGEtPkdldE51bWJlck9mUG9pbnRzICgp KTsKKyAKKyAgIC8vIENvbnZlcnQgdG8gVlRLIGFuZCBzYXZlCisgICB2dGtTbWFydFBvaW50ZXI8 dnRrUG9seURhdGFXcml0ZXI+IHdyaXRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YVdy aXRlcj46Ok5ldyAoKTsKKy0gIHdyaXRlci0+U2V0SW5wdXQgKHBvbHlkYXRhKTsKKysgIHdyaXRl ci0+U2V0SW5wdXREYXRhIChwb2x5ZGF0YSk7CisgICB3cml0ZXItPlNldEZpbGVOYW1lIChhcmd2 W3Z0a19maWxlX2luZGljZXNbMF1dKTsKKyAgIHdyaXRlci0+U2V0RmlsZVR5cGVUb0JpbmFyeSAo KTsKKyAgIHdyaXRlci0+V3JpdGUgKCk7CitkaWZmIC11cCAuL3Rvb2xzL3BuZzJwY2QuY3BwLnZ0 azYgLi90b29scy9wbmcycGNkLmNwcAorLS0tIC4vdG9vbHMvcG5nMnBjZC5jcHAudnRrNgkyMDEz LTA4LTIxIDIxOjM4OjUxLjIzMjkzMDI4NiArMDAwMAorKysrIC4vdG9vbHMvcG5nMnBjZC5jcHAJ MjAxMy0wOC0yMSAyMTozOTowNy45MzAyNzk5MTUgKzAwMDAKK0BAIC0xMzUsNyArMTM1LDcgQEAg bWFpbiAoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgdnRrU21hcnRQb2ludGVyPHZ0a1BOR1Jl YWRlcj4gcmVhZGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1BOR1JlYWRlcj46Ok5ldyAoKTsKKyAg IHJlYWRlci0+U2V0RmlsZU5hbWUgKGFyZ3ZbcG5nX2ZpbGVfaW5kaWNlc1swXV0pOworICAgaW1h Z2VfZGF0YSA9IHJlYWRlci0+R2V0T3V0cHV0ICgpOworLSAgaW1hZ2VfZGF0YS0+VXBkYXRlICgp OworKyAgcmVhZGVyLT5VcGRhdGUgKCk7CisgCisgICAvLyBSZXRyaWV2ZSB0aGUgZW50cmllcyBm cm9tIHRoZSBpbWFnZSBkYXRhIGFuZCBjb3B5IHRoZW0gaW50byB0aGUgb3V0cHV0IFJHQiBjbG91 ZAorICAgaW50IGNvbXBvbmVudHMgPSBpbWFnZV9kYXRhLT5HZXROdW1iZXJPZlNjYWxhckNvbXBv bmVudHMoKTsKK2RpZmYgLXVwIC4vdG9vbHMvdGlmZjJwY2QuY3BwLnZ0azYgLi90b29scy90aWZm MnBjZC5jcHAKKy0tLSAuL3Rvb2xzL3RpZmYycGNkLmNwcC52dGs2CTIwMTMtMDgtMjEgMjE6NDA6 NDAuNjYxMjIxNTgzICswMDAwCisrKysgLi90b29scy90aWZmMnBjZC5jcHAJMjAxMy0wOC0yMSAy MTo0MTowNC44Mzc3Mjc4MTIgKzAwMDAKK0BAIC0zNDMsNyArMzQzLDcgQEAgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKiogYXJndikKKyAgICAgeworICAgICAgIHJlYWRlci0+U2V0RmlsZU5hbWUg KHRpZmZfcmdiX2ZpbGVzW2ldLmNfc3RyKCkpOworICAgICAgIHJnYl9kYXRhID0gcmVhZGVyLT5H ZXRPdXRwdXQgKCk7CistICAgICAgcmdiX2RhdGEtPlVwZGF0ZSAoKTsKKysgICAgICByZWFkZXIt PlVwZGF0ZSAoKTsKKyAKKyAgICAgICBzdGQ6OnN0cmluZyByZ2JfZmlsZW5hbWUgPSB0aWZmX3Jn Yl9wYXRoc1tpXS5maWxlbmFtZSgpLnN0cmluZygpOworICAgICAgIHN0ZDo6c3RyaW5nIHJnYl90 aW1lID0gcmdiX2ZpbGVuYW1lLnN1YnN0cig2LDIyKTsKK0BAIC0zODEsNyArMzgxLDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiogYXJndikKKyAgICAgICAgICAgeworICAgICAgICAgICAg IGRlcHRoX3JlYWRlci0+U2V0RmlsZU5hbWUgKHRpZmZfZGVwdGhfZmlsZXNbal0uY19zdHIoKSk7 CisgICAgICAgICAgICAgZGVwdGhfZGF0YSA9IGRlcHRoX3JlYWRlci0+R2V0T3V0cHV0ICgpOwor LSAgICAgICAgICAgIGRlcHRoX2RhdGEtPlVwZGF0ZSAoKTsKKysgICAgICAgICAgICBkZXB0aF9y ZWFkZXItPlVwZGF0ZSAoKTsKKyAKKyAgICAgICAgICAgICBwcm9jZXNzQW5kU2F2ZShkZXB0aF9k YXRhLCByZ2JfZGF0YSwgZGVwdGhfdGltZSwgZm9jYWxfbGVuZ3RoLCBmb3JtYXQsIGNvbG9yLCBk ZXB0aCwgdXNlX291dHB1dF9wYXRoLCBvdXRwdXRfcGF0aF8pOworICAgICAgICAgICB9CitkaWZm IC11cCAuL3Rvb2xzL3ZpcnR1YWxfc2Nhbm5lci5jcHAudnRrNiAuL3Rvb2xzL3ZpcnR1YWxfc2Nh bm5lci5jcHAKKy0tLSAuL3Rvb2xzL3ZpcnR1YWxfc2Nhbm5lci5jcHAudnRrNgkyMDEzLTA4LTIx IDIxOjQ2OjE4LjcwMzE2MDk5NSArMDAwMAorKysrIC4vdG9vbHMvdmlydHVhbF9zY2FubmVyLmNw cAkyMDEzLTA4LTIxIDIxOjQ2OjM2LjUzNzUyNjIzMCArMDAwMAorQEAgLTIyMSw3ICsyMjEsNyBA QCBtYWluIChpbnQgYXJnYywgY2hhcioqIGFyZ3YpCisgCisgICAvLyBHZXQgY2FtZXJhIHBvc2l0 aW9ucworICAgdnRrUG9seURhdGEgKnNwaGVyZSA9IHN1YmRpdmlkZS0+R2V0T3V0cHV0ICgpOwor LSAgc3BoZXJlLT5VcGRhdGUgKCk7CisrICBzdWJkaXZpZGUtPlVwZGF0ZSAoKTsKKyAgIGlmICgh c2luZ2xlX3ZpZXcpCisgICAgIFBDTF9JTkZPICgiQ3JlYXRlZCAlbGQgY2FtZXJhIHBvc2l0aW9u IHBvaW50cy5cbiIsIHNwaGVyZS0+R2V0TnVtYmVyT2ZQb2ludHMgKCkpOworIAorZGlmZiAtdXAg Li90b29scy92b3hlbF9ncmlkX29jY2x1c2lvbl9lc3RpbWF0aW9uLmNwcC52dGs2IC4vdG9vbHMv dm94ZWxfZ3JpZF9vY2NsdXNpb25fZXN0aW1hdGlvbi5jcHAKKy0tLSAuL3Rvb2xzL3ZveGVsX2dy aWRfb2NjbHVzaW9uX2VzdGltYXRpb24uY3BwLnZ0azYJMjAxMy0wOC0yMSAyMTo0ODo1Mi4xNjMz MDU1NTAgKzAwMDAKKysrKyAuL3Rvb2xzL3ZveGVsX2dyaWRfb2NjbHVzaW9uX2VzdGltYXRpb24u Y3BwCTIwMTMtMDgtMjEgMjE6NTA6NTguMDQzODg3ODQ4ICswMDAwCitAQCAtOTksMTMgKzk5LDEz IEBAIGdldFZveGVsQWN0b3JzIChwY2w6OlBvaW50Q2xvdWQ8cGNsOjpQb2kKKyAgICAgZG91Ymxl IHkgPSB2b3hlbENlbnRlcnMucG9pbnRzW2ldLnk7CisgICAgIGRvdWJsZSB6ID0gdm94ZWxDZW50 ZXJzLnBvaW50c1tpXS56OworICAgICAKKy0gICAgdHJlZVdpcmVmcmFtZS0+QWRkSW5wdXQgKGdl dEN1Ym9pZCAoeCAtIHMsIHggKyBzLCB5IC0gcywgeSArIHMsIHogLSBzLCB6ICsgcykpOworKyAg ICB0cmVlV2lyZWZyYW1lLT5BZGRJbnB1dERhdGEgKGdldEN1Ym9pZCAoeCAtIHMsIHggKyBzLCB5 IC0gcywgeSArIHMsIHogLSBzLCB6ICsgcykpOworICAgfQorIAorICAgdnRrU21hcnRQb2ludGVy IDwgdnRrTE9EQWN0b3IgPiB0cmVlQWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+ OjpOZXcgKCk7CisgICAKKyAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0RhdGFTZXRNYXBwZXIgPiBt YXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAoKTsKKy0gIG1h cHBlci0+U2V0SW5wdXQgKHRyZWVXaXJlZnJhbWUtPkdldE91dHB1dCAoKSk7CisrICBtYXBwZXIt PlNldElucHV0RGF0YSAodHJlZVdpcmVmcmFtZS0+R2V0T3V0cHV0ICgpKTsKKyAgIHRyZWVBY3Rv ci0+U2V0TWFwcGVyIChtYXBwZXIpOworICAgCisgICB0cmVlQWN0b3ItPkdldFByb3BlcnR5ICgp LT5TZXRSZXByZXNlbnRhdGlvblRvV2lyZWZyYW1lICgpOworQEAgLTExOSwxMiArMTE5LDEyIEBA IGRpc3BsYXlCb3VuZGluZ0JveCAoRWlnZW46OlZlY3RvcjNmJiBtaW4KKyAgICAgICAgICAgICAg ICAgICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3RvckNvbGxlY3Rpb24+IGNvbGwpCisgeworICAg dnRrU21hcnRQb2ludGVyIDwgdnRrQXBwZW5kUG9seURhdGEgPiB0cmVlV2lyZWZyYW1lID0gdnRr U21hcnRQb2ludGVyPHZ0a0FwcGVuZFBvbHlEYXRhPjo6TmV3ICgpOworLSAgdHJlZVdpcmVmcmFt ZS0+QWRkSW5wdXQgKGdldEN1Ym9pZCAobWluX2JbMF0sIG1heF9iWzBdLCBtaW5fYlsxXSwgbWF4 X2JbMV0sIG1pbl9iWzJdLCBtYXhfYlsyXSkpOworKyAgdHJlZVdpcmVmcmFtZS0+QWRkSW5wdXRE YXRhIChnZXRDdWJvaWQgKG1pbl9iWzBdLCBtYXhfYlswXSwgbWluX2JbMV0sIG1heF9iWzFdLCBt aW5fYlsyXSwgbWF4X2JbMl0pKTsKKyAKKyAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0FjdG9yID4g dHJlZUFjdG9yID0gdnRrU21hcnRQb2ludGVyPHZ0a0FjdG9yPjo6TmV3ICgpOworIAorICAgdnRr U21hcnRQb2ludGVyIDwgdnRrRGF0YVNldE1hcHBlciA+IG1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRl cjx2dGtEYXRhU2V0TWFwcGVyPjo6TmV3ICgpOworLSAgbWFwcGVyLT5TZXRJbnB1dCAodHJlZVdp cmVmcmFtZS0+R2V0T3V0cHV0ICgpKTsKKysgIG1hcHBlci0+U2V0SW5wdXREYXRhICh0cmVlV2ly ZWZyYW1lLT5HZXRPdXRwdXQgKCkpOworICAgdHJlZUFjdG9yLT5TZXRNYXBwZXIgKG1hcHBlcik7 CisgCisgICB0cmVlQWN0b3ItPkdldFByb3BlcnR5ICgpLT5TZXRSZXByZXNlbnRhdGlvblRvV2ly ZWZyYW1lICgpOworZGlmZiAtdXAgLi90b29scy92dGsycGNkLmNwcC52dGs2IC4vdG9vbHMvdnRr MnBjZC5jcHAKKy0tLSAuL3Rvb2xzL3Z0azJwY2QuY3BwLnZ0azYJMjAxMy0wOC0yMSAyMTo1MTow OC4xNjMwOTU1NjQgKzAwMDAKKysrKyAuL3Rvb2xzL3Z0azJwY2QuY3BwCTIwMTMtMDgtMjEgMjE6 NTE6MTguMDg5Mjk5MzA1ICswMDAwCitAQCAtMTA3LDcgKzEwNyw3IEBAIG1haW4gKGludCBhcmdj LCBjaGFyKiogYXJndikKKyAgIGlmIChjb3B5X25vcm1hbHMpCisgICB7CisgICAgIHZ0a1NtYXJ0 UG9pbnRlcjx2dGtQb2x5RGF0YU5vcm1hbHM+IG5nID0gdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlE YXRhTm9ybWFscz46Ok5ldyAoKTsKKy0gICAgbmctPlNldElucHV0IChwb2x5ZGF0YSk7CisrICAg IG5nLT5TZXRJbnB1dERhdGEgKHBvbHlkYXRhKTsKKyAgICAgbmctPkNvbXB1dGVQb2ludE5vcm1h bHNPbiAoKTsKKyAgICAgbmctPkNvbXB1dGVDZWxsTm9ybWFsc09mZiAoKTsKKyAgICAgbmctPlVw ZGF0ZSAoKTsKK2RpZmYgLXVwIC4vdG9vbHMvdnRrMnBseS5jcHAudnRrNiAuL3Rvb2xzL3Z0azJw bHkuY3BwCistLS0gLi90b29scy92dGsycGx5LmNwcC52dGs2CTIwMTMtMDgtMjEgMjE6NTI6NTcu MjkzMzM2NDAxICswMDAwCisrKysgLi90b29scy92dGsycGx5LmNwcAkyMDEzLTA4LTIxIDIxOjUz OjE2Ljg0NzczODExMCArMDAwMAorQEAgLTc3LDEyICs3NywxMiBAQCBtYWluIChpbnQgYXJnYywg Y2hhcioqIGFyZ3YpCisgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFSZWFkZXI+IHJlYWRl ciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YVJlYWRlcj46Ok5ldyAoKTsKKyAgIHJlYWRl ci0+U2V0RmlsZU5hbWUgKGFyZ3ZbdnRrX2ZpbGVfaW5kaWNlc1swXV0pOworICAgcG9seWRhdGEg PSByZWFkZXItPkdldE91dHB1dCAoKTsKKy0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7CisrICByZWFk ZXItPlVwZGF0ZSAoKTsKKyAgIHByaW50X2luZm8gKCJMb2FkZWQgJXMgd2l0aCAlenUgcG9pbnRz L3ZlcnRpY2VzLlxuIiwgYXJndlt2dGtfZmlsZV9pbmRpY2VzWzBdXSwgcG9seWRhdGEtPkdldE51 bWJlck9mUG9pbnRzICgpKTsKKyAKKyAgIC8vIENvbnZlcnQgdG8gUExZIGFuZCBzYXZlCisgICB2 dGtTbWFydFBvaW50ZXI8dnRrUExZV3JpdGVyPiB3cml0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRr UExZV3JpdGVyPjo6TmV3ICgpOworLSAgd3JpdGVyLT5TZXRJbnB1dCAocG9seWRhdGEpOworKyAg d3JpdGVyLT5TZXRJbnB1dERhdGEgKHBvbHlkYXRhKTsKKyAgIHdyaXRlci0+U2V0QXJyYXlOYW1l ICgiQ29sb3JzIik7CisgICB3cml0ZXItPlNldEZpbGVUeXBlVG9BU0NJSSAoKTsKKyAgIHdyaXRl ci0+U2V0RmlsZU5hbWUgKGFyZ3ZbcGx5X2ZpbGVfaW5kaWNlc1swXV0pOworZGlmZiAtdXAgLi92 aXN1YWxpemF0aW9uL0NNYWtlTGlzdHMudHh0LnZ0azYgLi92aXN1YWxpemF0aW9uL0NNYWtlTGlz dHMudHh0CistLS0gLi92aXN1YWxpemF0aW9uL0NNYWtlTGlzdHMudHh0LnZ0azYJMjAxMy0wOC0y MSAwMjo0MzoxNS4zNzU1MjU3ODAgKzAwMDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vQ01ha2VMaXN0 cy50eHQJMjAxMy0wOC0yMSAwMjo1Nzo1NS41MzY3MzM1NzMgKzAwMDAKK0BAIC0xNTIsOCArMTUy LDEwIEBAIGlmKGJ1aWxkKQorICAgICAgCisgICAgIGlmKCIke1ZUS19NQUpPUl9WRVJTSU9OfS4k e1ZUS19NSU5PUl9WRVJTSU9OfSIgVkVSU0lPTl9MRVNTICI1LjYiKQorICAgICAgIHRhcmdldF9s aW5rX2xpYnJhcmllcygke0xJQl9OQU1FfSBwY2xfY29tbW9uIHBjbF9pbyBwY2xfa2R0cmVlIHZ0 a0NvbW1vbiB2dGtXaWRnZXRzIHZ0a0h5YnJpZCB2dGtGaWx0ZXJpbmcgdnRrUmVuZGVyaW5nICR7 T1BFTkdMX0xJQlJBUklFU30pCistICAgIGVsc2UoKQorKyAgICBlbHNlaWYoJHtWVEtfTUFKT1Jf VkVSU0lPTn0gTEVTUyA2KQorICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0xJQl9OQU1F fSBwY2xfY29tbW9uIHBjbF9pbyBwY2xfa2R0cmVlIHZ0a0NvbW1vbiB2dGtXaWRnZXRzIHZ0a0h5 YnJpZCB2dGtDaGFydHMgdnRrRmlsdGVyaW5nIHZ0a1JlbmRlcmluZyAke09QRU5HTF9MSUJSQVJJ RVN9KQorKyAgICBlbHNlKCkKKysgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtMSUJfTkFN RX0gcGNsX2NvbW1vbiBwY2xfaW8gcGNsX2tkdHJlZSB2dGtDb21tb25Db3JlIHZ0a0NoYXJ0c0Nv cmUgdnRrSW50ZXJhY3Rpb25TdHlsZSB2dGtJbWFnaW5nU291cmNlcyB2dGtSZW5kZXJpbmdDb3Jl IHZ0a1JlbmRlcmluZ0NvbnRleHQyRCB2dGtSZW5kZXJpbmdBbm5vdGF0aW9uIHZ0a1JlbmRlcmlu Z0xPRCB2dGtSZW5kZXJpbmdWb2x1bWUgdnRrUmVuZGVyaW5nT3BlbkdMIHZ0a1JlbmRlcmluZ1Zv bHVtZU9wZW5HTCB2dGtSZW5kZXJpbmdGcmVlVHlwZSB2dGtSZW5kZXJpbmdGcmVlVHlwZU9wZW5H TCB2dGtJbnRlcmFjdGlvbldpZGdldHMgdnRrRmlsdGVyc1N0YXRpc3RpY3MgdnRrRmlsdGVyc1N0 YXRpc3RpY3NHbnVSIHZ0a1ZpZXdzQ29udGV4dDJEICR7T1BFTkdMX0xJQlJBUklFU30pCisgICAg IGVuZGlmKCkKKyAKKyAgICAgc2V0KEVYVF9ERVBTICIiKQorZGlmZiAtdXAgLi92aXN1YWxpemF0 aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vY29tbW9uL2ltcGwvc2hhcGVzLmhwcC52dGs2 IC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9pbXBsL3No YXBlcy5ocHAKKy0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9j b21tb24vaW1wbC9zaGFwZXMuaHBwLnZ0azYJMjAxMy0wOC0yMSAwMTo0NDoyOC4xMzU3NjM5MTUg KzAwMDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9jb21t b24vaW1wbC9zaGFwZXMuaHBwCTIwMTMtMDgtMjEgMDE6NTI6NDMuNTA3MDQyNzQwICswMDAwCitA QCAtNjcsNyArNjcsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OmNyZWF0ZVBvbHlnb24gKGNvbnN0 CisgICBwb2x5X2dyaWQtPkFsbG9jYXRlICgxLCAxKTsKKyAgIHBvbHlfZ3JpZC0+SW5zZXJ0TmV4 dENlbGwgKHBvbHlnb24tPkdldENlbGxUeXBlICgpLCBwb2x5Z29uLT5HZXRQb2ludElkcyAoKSk7 CisgICBwb2x5X2dyaWQtPlNldFBvaW50cyAocG9seV9wb2ludHMpOworLSAgcG9seV9ncmlkLT5V cGRhdGUgKCk7CisrICAvL3BvbHlfZ3JpZC0+VXBkYXRlICgpOworIAorICAgcmV0dXJuIChwb2x5 X2dyaWQpOworIH0KK0BAIC0xMDQsNyArMTA0LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpjcmVh dGVQb2x5Z29uIChjb25zdAorICAgcG9seV9ncmlkLT5BbGxvY2F0ZSAoMSwgMSk7CisgICBwb2x5 X2dyaWQtPkluc2VydE5leHRDZWxsIChwb2x5Z29uLT5HZXRDZWxsVHlwZSAoKSwgcG9seWdvbi0+ R2V0UG9pbnRJZHMgKCkpOworICAgcG9seV9ncmlkLT5TZXRQb2ludHMgKHBvbHlfcG9pbnRzKTsK Ky0gIHBvbHlfZ3JpZC0+VXBkYXRlICgpOworKyAgLy9wb2x5X2dyaWQtPlVwZGF0ZSAoKTsKKyAK KyAgIHJldHVybiAocG9seV9ncmlkKTsKKyB9CitkaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24vaW5j bHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbWFnZV92aWV3ZXIuaC52dGs2IC4vdmlzdWFsaXphdGlv bi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltYWdlX3ZpZXdlci5oCistLS0gLi92aXN1YWxp emF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1hZ2Vfdmlld2VyLmgudnRrNgkyMDEz LTA4LTIxIDIzOjExOjAyLjYyNzk0OTc2MiArMDAwMAorKysrIC4vdmlzdWFsaXphdGlvbi9pbmNs dWRlL3BjbC92aXN1YWxpemF0aW9uL2ltYWdlX3ZpZXdlci5oCTIwMTMtMDgtMjEgMDI6Mjk6MjEu MjI5MTIwMTQzICswMDAwCitAQCAtOTUyLDcgKzk1Miw3IEBAIG5hbWVzcGFjZSBwY2wKKyAgICAg ICAgIC8qKiBcYnJpZWYgVGhlIHJlbmRlcmVyLiAqLworICAgICAgICAgdnRrU21hcnRQb2ludGVy PHZ0a1JlbmRlcmVyPiByZW5fOworIAorLSNpZiAoKFZUS19NQUpPUl9WRVJTSU9OID09IDUpICYm IChWVEtfTUlOT1JfVkVSU0lPTiA+PSAxMCkpCisrI2lmICgoKFZUS19NQUpPUl9WRVJTSU9OID09 IDUpICYmIChWVEtfTUlOT1JfVkVSU0lPTiA+PSAxMCkpIHx8IChWVEtfTUFKT1JfVkVSU0lPTiA+ IDUpKQorICAgICAgICAgLyoqIFxicmllZiBHbG9iYWwgcHJvcC4gVGhpcyBpcyB0aGUgYWN0dWFs ICJhY3RvciIuICovCisgICAgICAgICB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VTbGljZT4gc2xp Y2VfOworICNlbmRpZgorZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3Vh bGl6YXRpb24vaW1wbC9pbWFnZV92aWV3ZXIuaHBwLnZ0azYgLi92aXN1YWxpemF0aW9uL2luY2x1 ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1wbC9pbWFnZV92aWV3ZXIuaHBwCistLS0gLi92aXN1YWxp emF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1wbC9pbWFnZV92aWV3ZXIuaHBwLnZ0 azYJMjAxMy0wOC0yMSAwMjoyMjo0Mi45ODc3NDUzMzEgKzAwMDAKKysrKyAuL3Zpc3VhbGl6YXRp b24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbXBsL2ltYWdlX3ZpZXdlci5ocHAJMjAxMy0w OC0yMSAwMjoyMzowOC4xODIyNzg0MjEgKzAwMDAKK0BAIC00MzUsOSArNDM1LDcgQEAgcGNsOjp2 aXN1YWxpemF0aW9uOjpJbWFnZVZpZXdlcjo6c2hvd0NvcgorICAgCisgICB2dGtTbWFydFBvaW50 ZXI8dnRrSW1hZ2VEYXRhPiBpbWFnZSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZURhdGE+OjpO ZXcgKCk7CisgICBpbWFnZS0+U2V0RGltZW5zaW9ucyAoc291cmNlX2ltZy53aWR0aCArIHRhcmdl dF9pbWcud2lkdGgsIHN0ZDo6bWF4IChzb3VyY2VfaW1nLmhlaWdodCwgdGFyZ2V0X2ltZy5oZWln aHQpLCAxKTsKKy0gIGltYWdlLT5TZXRTY2FsYXJUeXBlVG9VbnNpZ25lZENoYXIgKCk7CistICBp bWFnZS0+U2V0TnVtYmVyT2ZTY2FsYXJDb21wb25lbnRzICgzKTsKKy0gIGltYWdlLT5BbGxvY2F0 ZVNjYWxhcnMgKCk7CisrICBpbWFnZS0+QWxsb2NhdGVTY2FsYXJzIChWVEtfVU5TSUdORURfQ0hB UiwgMyk7CisgICBpbWFnZS0+R2V0UG9pbnREYXRhICgpLT5HZXRTY2FsYXJzICgpLT5TZXRWb2lk QXJyYXkgKGRhdGEsIGRhdGFfc2l6ZV8sIDEpOworICAgdnRrU21hcnRQb2ludGVyPFBDTENvbnRl eHRJbWFnZUl0ZW0+IGltYWdlX2l0ZW0gPSB2dGtTbWFydFBvaW50ZXI8UENMQ29udGV4dEltYWdl SXRlbT46Ok5ldyAoKTsKKyAjaWYgKChWVEtfTUFKT1JfVkVSU0lPTiA9PSA1KSAmJiAoVlRLX01J Tk9SX1ZFUlNJT04gPD0gMTApKQorZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNs L3Zpc3VhbGl6YXRpb24vaW1wbC9wY2xfdmlzdWFsaXplci5ocHAudnRrNiAuL3Zpc3VhbGl6YXRp b24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbXBsL3BjbF92aXN1YWxpemVyLmhwcAorLS0t IC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltcGwvcGNsX3Zpc3Vh bGl6ZXIuaHBwLnZ0azYJMjAxMy0wOC0yMSAwMTo1MzoxOS41NTU3ODkyNzIgKzAwMDAKKysrKyAu L3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbXBsL3BjbF92aXN1YWxp emVyLmhwcAkyMDEzLTA4LTIxIDAyOjE1OjE1LjcyMzI3MzcwMCArMDAwMAorQEAgLTMyMiwxMyAr MzIyLDEzIEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8KKyAgICAg dnRrU21hcnRQb2ludGVyPHZ0a0FwcGVuZFBvbHlEYXRhPiBhbGxfZGF0YSA9IHZ0a1NtYXJ0UG9p bnRlcjx2dGtBcHBlbmRQb2x5RGF0YT46Ok5ldyAoKTsKKyAgICAgCisgICAgIC8vIEFkZCBvbGQg ZGF0YQorLSAgICBhbGxfZGF0YS0+QWRkSW5wdXQgKHJlaW50ZXJwcmV0X2Nhc3Q8dnRrUG9seURh dGFNYXBwZXIqPiAoKHZ0a0FjdG9yOjpTYWZlRG93bkNhc3QgKGFtX2l0LT5zZWNvbmQpKS0+R2V0 TWFwcGVyICgpKS0+R2V0SW5wdXQgKCkpOworKyAgICBhbGxfZGF0YS0+QWRkSW5wdXREYXRhIChy ZWludGVycHJldF9jYXN0PHZ0a1BvbHlEYXRhTWFwcGVyKj4gKCh2dGtBY3Rvcjo6U2FmZURvd25D YXN0IChhbV9pdC0+c2Vjb25kKSktPkdldE1hcHBlciAoKSktPkdldElucHV0ICgpKTsKKyAgICAK KyAgICAgLy8gQWRkIG5ldyBkYXRhCisgICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0U3Vy ZmFjZUZpbHRlcj4gc3VyZmFjZV9maWx0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldFN1 cmZhY2VGaWx0ZXI+OjpOZXcgKCk7CistICAgIHN1cmZhY2VfZmlsdGVyLT5TZXRJbnB1dCAodnRr VW5zdHJ1Y3R1cmVkR3JpZDo6U2FmZURvd25DYXN0IChkYXRhKSk7CisrICAgIHN1cmZhY2VfZmls dGVyLT5TZXRJbnB1dERhdGEgKHZ0a1Vuc3RydWN0dXJlZEdyaWQ6OlNhZmVEb3duQ2FzdCAoZGF0 YSkpOworICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGE+IHBvbHlfZGF0YSA9IHN1cmZh Y2VfZmlsdGVyLT5HZXRPdXRwdXQgKCk7CistICAgIGFsbF9kYXRhLT5BZGRJbnB1dCAocG9seV9k YXRhKTsKKysgICAgYWxsX2RhdGEtPkFkZElucHV0RGF0YSAocG9seV9kYXRhKTsKKyAKKyAgICAg Ly8gQ3JlYXRlIGFuIEFjdG9yCisgICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj4gYWN0b3I7 CitAQCAtMzc2LDEzICszNzYsMTMgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVy OjphZGRQbworICAgICB2dGtTbWFydFBvaW50ZXI8dnRrQXBwZW5kUG9seURhdGE+IGFsbF9kYXRh ID0gdnRrU21hcnRQb2ludGVyPHZ0a0FwcGVuZFBvbHlEYXRhPjo6TmV3ICgpOworIAorICAgICAv LyBBZGQgb2xkIGRhdGEKKy0gICAgYWxsX2RhdGEtPkFkZElucHV0IChyZWludGVycHJldF9jYXN0 PHZ0a1BvbHlEYXRhTWFwcGVyKj4gKCh2dGtBY3Rvcjo6U2FmZURvd25DYXN0IChhbV9pdC0+c2Vj b25kKSktPkdldE1hcHBlciAoKSktPkdldElucHV0ICgpKTsKKysgICAgYWxsX2RhdGEtPkFkZElu cHV0RGF0YSAocmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1hcHBlcio+ICgodnRrQWN0b3I6 OlNhZmVEb3duQ2FzdCAoYW1faXQtPnNlY29uZCkpLT5HZXRNYXBwZXIgKCkpLT5HZXRJbnB1dCAo KSk7CisgCisgICAgIC8vIEFkZCBuZXcgZGF0YQorICAgICB2dGtTbWFydFBvaW50ZXI8dnRrRGF0 YVNldFN1cmZhY2VGaWx0ZXI+IHN1cmZhY2VfZmlsdGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a0Rh dGFTZXRTdXJmYWNlRmlsdGVyPjo6TmV3ICgpOworLSAgICBzdXJmYWNlX2ZpbHRlci0+U2V0SW5w dXQgKHZ0a1Vuc3RydWN0dXJlZEdyaWQ6OlNhZmVEb3duQ2FzdCAoZGF0YSkpOworKyAgICBzdXJm YWNlX2ZpbHRlci0+U2V0SW5wdXREYXRhICh2dGtVbnN0cnVjdHVyZWRHcmlkOjpTYWZlRG93bkNh c3QgKGRhdGEpKTsKKyAgICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhPiBwb2x5X2RhdGEg PSBzdXJmYWNlX2ZpbHRlci0+R2V0T3V0cHV0ICgpOworLSAgICBhbGxfZGF0YS0+QWRkSW5wdXQg KHBvbHlfZGF0YSk7CisrICAgIGFsbF9kYXRhLT5BZGRJbnB1dERhdGEgKHBvbHlfZGF0YSk7Cisg CisgICAgIC8vIENyZWF0ZSBhbiBBY3RvcgorICAgICB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+ IGFjdG9yOworQEAgLTYxMyw3ICs2MTMsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3Vh bGl6ZXI6OnVwZGF0CisgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgLy8gR2V0IHRoZSBhY3RvciBw b2ludGVyCisgICB2dGtMT0RBY3RvciogYWN0b3IgPSB2dGtMT0RBY3Rvcjo6U2FmZURvd25DYXN0 IChhbV9pdC0+c2Vjb25kKTsKKy0gIHZ0a0FsZ29yaXRobSAqYWxnbyA9IGFjdG9yLT5HZXRNYXBw ZXIgKCktPkdldElucHV0ICgpLT5HZXRQcm9kdWNlclBvcnQgKCktPkdldFByb2R1Y2VyICgpOwor KyAgdnRrQWxnb3JpdGhtICphbGdvID0gYWN0b3ItPkdldE1hcHBlciAoKS0+R2V0SW5wdXQgKCk7 CisgICB2dGtTcGhlcmVTb3VyY2UgKnNyYyA9IHZ0a1NwaGVyZVNvdXJjZTo6U2FmZURvd25DYXN0 IChhbGdvKTsKKyAKKyAgIHNyYy0+U2V0Q2VudGVyIChkb3VibGUgKGNlbnRlci54KSwgZG91Ymxl IChjZW50ZXIueSksIGRvdWJsZSAoY2VudGVyLnopKTsKK0BAIC03OTYsNyArNzk2LDcgQEAgcGNs Ojp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRQbworICAgcG9seURhdGEtPlNldExp bmVzIChsaW5lcyk7CisgCisgICB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj4gbWFw cGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+OjpOZXcgKCk7CistICBtYXBw ZXItPlNldElucHV0IChwb2x5RGF0YSk7CisrICBtYXBwZXItPlNldElucHV0RGF0YSAocG9seURh dGEpOworICAgbWFwcGVyLT5TZXRDb2xvck1vZGVUb01hcFNjYWxhcnMoKTsKKyAgIG1hcHBlci0+ U2V0U2NhbGFyTW9kZVRvVXNlUG9pbnREYXRhKCk7CisgCitAQCAtODcxLDcgKzg3MSw3IEBAIHBj bDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8KKyAgIHBvbHlEYXRhLT5TZXRM aW5lcyhsaW5lcyk7CisgCisgICB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj4gbWFw cGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+OjpOZXcgKCk7CistICBtYXBw ZXItPlNldElucHV0IChwb2x5RGF0YSk7CisrICBtYXBwZXItPlNldElucHV0RGF0YSAocG9seURh dGEpOworICAgbWFwcGVyLT5TZXRDb2xvck1vZGVUb01hcFNjYWxhcnMoKTsKKyAgIG1hcHBlci0+ U2V0U2NhbGFyTW9kZVRvVXNlUG9pbnREYXRhKCk7CisgCitAQCAtOTcwLDcgKzk3MCw3IEBAIHBj bDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkQ28KKyAgIGxpbmVfZGF0YS0+U2V0 TGluZXMgKGxpbmVfY2VsbHMpOworICAgbGluZV9kYXRhLT5HZXRQb2ludERhdGEgKCktPlNldFRD b29yZHMgKGxpbmVfdGNvb3Jkcyk7CisgICBsaW5lX2RhdGEtPkdldENlbGxEYXRhICgpLT5TZXRT Y2FsYXJzIChsaW5lX2NvbG9ycyk7CistICBsaW5lX2RhdGEtPlVwZGF0ZSAoKTsKKysgIC8vbGlu ZV9kYXRhLT5VcGRhdGUgKCk7CisgCisgICAvLyBDcmVhdGUgYW4gQWN0b3IKKyAgIHZ0a1NtYXJ0 UG9pbnRlcjx2dGtMT0RBY3Rvcj4gYWN0b3I7CitAQCAtMTA3NSw3ICsxMDc1LDcgQEAgcGNsOjp2 aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRDbworICAgbGluZV9kYXRhLT5TZXRMaW5l cyAobGluZV9jZWxscyk7CisgICBsaW5lX2RhdGEtPkdldFBvaW50RGF0YSAoKS0+U2V0VENvb3Jk cyAobGluZV90Y29vcmRzKTsKKyAgIGxpbmVfZGF0YS0+R2V0Q2VsbERhdGEgKCktPlNldFNjYWxh cnMgKGxpbmVfY29sb3JzKTsKKy0gIGxpbmVfZGF0YS0+VXBkYXRlICgpOworKyAgLy9saW5lX2Rh dGEtPlVwZGF0ZSAoKTsKKyAKKyAgIC8vIENyZWF0ZSBhbiBBY3RvcgorICAgdnRrU21hcnRQb2lu dGVyPHZ0a0xPREFjdG9yPiBhY3RvcjsKK0BAIC0xMTc4LDEwICsxMTc4LDEwIEBAIHBjbDo6dmlz dWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKKyAgIGxpbmVfZGF0YS0+U2V0TGluZXMg KGxpbmVfY2VsbHMpOworICAgbGluZV9kYXRhLT5HZXRQb2ludERhdGEgKCktPlNldFRDb29yZHMg KGxpbmVfdGNvb3Jkcyk7CisgICBsaW5lX2RhdGEtPkdldENlbGxEYXRhICgpLT5TZXRTY2FsYXJz IChsaW5lX2NvbG9ycyk7CistICBsaW5lX2RhdGEtPlVwZGF0ZSAoKTsKKysgIC8vbGluZV9kYXRh LT5VcGRhdGUgKCk7CisgCisgICAvLyBVcGRhdGUgdGhlIG1hcHBlcgorLSAgcmVpbnRlcnByZXRf Y2FzdDx2dGtQb2x5RGF0YU1hcHBlcio+KGFjdG9yLT5HZXRNYXBwZXIgKCkpLT5TZXRJbnB1dCAo bGluZV9kYXRhKTsKKysgIHJlaW50ZXJwcmV0X2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhY3Rv ci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXREYXRhIChsaW5lX2RhdGEpOworIAorICAgcmV0dXJu ICh0cnVlKTsKKyB9CitAQCAtMTIxMyw3ICsxMjEzLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQ Q0xWaXN1YWxpemVyOjpmcm9tSAorICAgLy8gQ29udmVydCB0aGUgUG9pbnRDbG91ZCB0byBWVEsg UG9seURhdGEKKyAgIGNvbnZlcnRQb2ludENsb3VkVG9WVEtQb2x5RGF0YTxQb2ludFQ+IChnZW9t ZXRyeV9oYW5kbGVyLCBwb2x5ZGF0YSwgaW5pdGNlbGxzKTsKKyAgIC8vIHVzZSB0aGUgZ2l2ZW4g Z2VvbWV0cnkgaGFuZGxlcgorLSAgcG9seWRhdGEtPlVwZGF0ZSAoKTsKKysgIC8vcG9seWRhdGEt PlVwZGF0ZSAoKTsKKyAKKyAgIC8vIEdldCB0aGUgY29sb3JzIGZyb20gdGhlIGhhbmRsZXIKKyAg IGJvb2wgaGFzX2NvbG9ycyA9IGZhbHNlOworQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHBjbDo6dmlz dWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6ZnJvbUgKKyAgIC8vIENvbnZlcnQgdGhlIFBvaW50 Q2xvdWQgdG8gVlRLIFBvbHlEYXRhCisgICBjb252ZXJ0UG9pbnRDbG91ZFRvVlRLUG9seURhdGE8 UG9pbnRUPiAoZ2VvbWV0cnlfaGFuZGxlciwgcG9seWRhdGEsIGluaXRjZWxscyk7CisgICAvLyB1 c2UgdGhlIGdpdmVuIGdlb21ldHJ5IGhhbmRsZXIKKy0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7Cisr ICAvL3BvbHlkYXRhLT5VcGRhdGUgKCk7CisgCisgICAvLyBHZXQgdGhlIGNvbG9ycyBmcm9tIHRo ZSBoYW5kbGVyCisgICBib29sIGhhc19jb2xvcnMgPSBmYWxzZTsKK0BAIC0xMzQyLDcgKzEzNDIs NyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmZyb21ICisgICAvLyBDb252 ZXJ0IHRoZSBQb2ludENsb3VkIHRvIFZUSyBQb2x5RGF0YQorICAgY29udmVydFBvaW50Q2xvdWRU b1ZUS1BvbHlEYXRhIChnZW9tZXRyeV9oYW5kbGVyLCBwb2x5ZGF0YSwgaW5pdGNlbGxzKTsKKyAg IC8vIHVzZSB0aGUgZ2l2ZW4gZ2VvbWV0cnkgaGFuZGxlcgorLSAgcG9seWRhdGEtPlVwZGF0ZSAo KTsKKysgIC8vcG9seWRhdGEtPlVwZGF0ZSAoKTsKKyAKKyAgIC8vIEdldCB0aGUgY29sb3JzIGZy b20gdGhlIGhhbmRsZXIKKyAgIGJvb2wgaGFzX2NvbG9ycyA9IGZhbHNlOworQEAgLTEzOTQsMTIg KzEzOTQsMTIgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjp1cGRhdAorICAg dnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhPiBwb2x5ZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8 dnRrUG9seURhdGFNYXBwZXIqPihhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkpLT5H ZXRJbnB1dCAoKTsKKyAgIC8vIENvbnZlcnQgdGhlIFBvaW50Q2xvdWQgdG8gVlRLIFBvbHlEYXRh CisgICBjb252ZXJ0UG9pbnRDbG91ZFRvVlRLUG9seURhdGE8UG9pbnRUPiAoY2xvdWQsIHBvbHlk YXRhLCBhbV9pdC0+c2Vjb25kLmNlbGxzKTsKKy0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7CisrICAv L3BvbHlkYXRhLT5VcGRhdGUgKCk7CisgCisgICAvLyBTZXQgc2NhbGFycyB0byBibGFuaywgc2lu Y2UgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbiB1cGRhdGUgdGhlbSBoZXJlLgorICAgdnRrU21hcnRQ b2ludGVyPHZ0a0RhdGFBcnJheT4gc2NhbGFyczsKKyAgIHBvbHlkYXRhLT5HZXRQb2ludERhdGEg KCktPlNldFNjYWxhcnMgKHNjYWxhcnMpOworLSAgcG9seWRhdGEtPlVwZGF0ZSAoKTsKKysgIC8v cG9seWRhdGEtPlVwZGF0ZSAoKTsKKyAgIGRvdWJsZSBtaW5tYXhbMl07CisgICBtaW5tYXhbMF0g PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbiAoKTsKKyAgIG1pbm1heFsxXSA9IHN0 ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4ICgpOworQEAgLTE0MDcsNyArMTQwNyw3IEBA IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKKyAgIGFtX2l0LT5zZWNv bmQuYWN0b3ItPkdldE1hcHBlciAoKS0+U2V0U2NhbGFyUmFuZ2UgKG1pbm1heCk7CisgCisgICAv LyBVcGRhdGUgdGhlIG1hcHBlcgorLSAgcmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1hcHBl cio+KGFtX2l0LT5zZWNvbmQuYWN0b3ItPkdldE1hcHBlciAoKSktPlNldElucHV0IChwb2x5ZGF0 YSk7CisrICByZWludGVycHJldF9jYXN0PHZ0a1BvbHlEYXRhTWFwcGVyKj4oYW1faXQtPnNlY29u ZC5hY3Rvci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXREYXRhIChwb2x5ZGF0YSk7CisgICByZXR1 cm4gKHRydWUpOworIH0KKyAKK0BAIC0xNDMyLDcgKzE0MzIsNyBAQCBwY2w6OnZpc3VhbGl6YXRp b246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0CisgICAvLyBTZXQgc2NhbGFycyB0byBibGFuaywgc2lu Y2UgdGhlcmUgaXMgbm8gd2F5IHdlIGNhbiB1cGRhdGUgdGhlbSBoZXJlLgorICAgdnRrU21hcnRQ b2ludGVyPHZ0a0RhdGFBcnJheT4gc2NhbGFyczsKKyAgIHBvbHlkYXRhLT5HZXRQb2ludERhdGEg KCktPlNldFNjYWxhcnMgKHNjYWxhcnMpOworLSAgcG9seWRhdGEtPlVwZGF0ZSAoKTsKKysgIC8v cG9seWRhdGEtPlVwZGF0ZSAoKTsKKyAgIGRvdWJsZSBtaW5tYXhbMl07CisgICBtaW5tYXhbMF0g PSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1pbiAoKTsKKyAgIG1pbm1heFsxXSA9IHN0 ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4ICgpOworQEAgLTE0NDAsNyArMTQ0MCw3IEBA IHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKKyAgIGFtX2l0LT5zZWNv bmQuYWN0b3ItPkdldE1hcHBlciAoKS0+U2V0U2NhbGFyUmFuZ2UgKG1pbm1heCk7CisgCisgICAv LyBVcGRhdGUgdGhlIG1hcHBlcgorLSAgcmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1hcHBl cio+KGFtX2l0LT5zZWNvbmQuYWN0b3ItPkdldE1hcHBlciAoKSktPlNldElucHV0IChwb2x5ZGF0 YSk7CisrICByZWludGVycHJldF9jYXN0PHZ0a1BvbHlEYXRhTWFwcGVyKj4oYW1faXQtPnNlY29u ZC5hY3Rvci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXREYXRhIChwb2x5ZGF0YSk7CisgICByZXR1 cm4gKHRydWUpOworIH0KKyAKK0BAIC0xNTA3LDEzICsxNTA3LDEzIEBAIHBjbDo6dmlzdWFsaXph dGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKKyAgIHNjYWxhcnMtPkdldFJhbmdlIChtaW5tYXgp OworICAgLy8gVXBkYXRlIHRoZSBkYXRhCisgICBwb2x5ZGF0YS0+R2V0UG9pbnREYXRhICgpLT5T ZXRTY2FsYXJzIChzY2FsYXJzKTsKKy0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7CisrICAvL3BvbHlk YXRhLT5VcGRhdGUgKCk7CisgCisgICBhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkt PkltbWVkaWF0ZU1vZGVSZW5kZXJpbmdPZmYgKCk7CisgICBhbV9pdC0+c2Vjb25kLmFjdG9yLT5H ZXRNYXBwZXIgKCktPlNldFNjYWxhclJhbmdlIChtaW5tYXgpOworIAorICAgLy8gVXBkYXRlIHRo ZSBtYXBwZXIKKy0gIHJlaW50ZXJwcmV0X2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhbV9pdC0+ c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkpLT5TZXRJbnB1dCAocG9seWRhdGEpOworKyAgcmVp bnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1hcHBlcio+KGFtX2l0LT5zZWNvbmQuYWN0b3ItPkdl dE1hcHBlciAoKSktPlNldElucHV0RGF0YSAocG9seWRhdGEpOworICAgcmV0dXJuICh0cnVlKTsK KyB9CisgCitAQCAtMTY2OCw3ICsxNjY4LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1 YWxpemVyOjphZGRQbworICAgICBwb2x5X2dyaWQtPkFsbG9jYXRlICgxLCAxKTsKKyAgICAgcG9s eV9ncmlkLT5JbnNlcnROZXh0Q2VsbCAocG9seWdvbi0+R2V0Q2VsbFR5cGUgKCksIHBvbHlnb24t PkdldFBvaW50SWRzICgpKTsKKyAgICAgcG9seV9ncmlkLT5TZXRQb2ludHMgKHBvaW50cyk7Cist ICAgIHBvbHlfZ3JpZC0+VXBkYXRlICgpOworKyAgICAvL3BvbHlfZ3JpZC0+VXBkYXRlICgpOwor ICAgICBpZiAoY29sb3JzKQorICAgICAgIHBvbHlfZ3JpZC0+R2V0UG9pbnREYXRhICgpLT5TZXRT Y2FsYXJzIChjb2xvcnMpOworIAorQEAgLTE4MTMsNyArMTgxMyw3IEBAIHBjbDo6dmlzdWFsaXph dGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKKyAgIGNlbGxzLT5TcXVlZXplICgpOworICAgLy8g U2V0IHRoZSB0aGUgdmVydGljZXMKKyAgIHBvbHlkYXRhLT5TZXRTdHJpcHMgKGNlbGxzKTsKKy0g IHBvbHlkYXRhLT5VcGRhdGUgKCk7CisrICAvL3BvbHlkYXRhLT5VcGRhdGUgKCk7CisgCisgICBy ZXR1cm4gKHRydWUpOworIH0KK2RpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvLnZ0azYgLi92 aXN1YWxpemF0aW9uL3NyYy8KK2RpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL2lv LmNwcC52dGs2IC4vdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL2lvLmNwcAorLS0tIC4vdmlzdWFs aXphdGlvbi9zcmMvY29tbW9uL2lvLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAw MDAwICswMDAwCisrKysgLi92aXN1YWxpemF0aW9uL3NyYy9jb21tb24vaW8uY3BwCTIwMTMtMDgt MjEgMDA6NDU6NTkuMDEwODQ0ODAwICswMDAwCitAQCAtODksNyArODksNyBAQCBwY2w6OnZpc3Vh bGl6YXRpb246OnNhdmVQb2ludERhdGEgKHZ0a1BvCiAgICAvLyBDbGVhbiB0aGUgZGF0YSAobm8g ZHVwbGljYXRlcyEpCiAgICB2dGtTbWFydFBvaW50ZXI8dnRrQ2xlYW5Qb2x5RGF0YT4gY2xlYW5l ciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtDbGVhblBvbHlEYXRhPjo6TmV3ICgpOwogICAgY2xlYW5l ci0+U2V0VG9sZXJhbmNlICgwLjApOwpAQCAtMTM1LDEwICs4MzQsMTAgQEAgZGlmZiAtdXAgUENM LTEuNi4wLVNvdXJjZS92aXN1YWxpemF0aW9uL3NyYy9jb21tb24vaW8uY3BwLnZ0azYgUENMLTEu Ni4wLVNvdXJjZS8KICAgIGNsZWFuZXItPkNvbnZlcnRMaW5lc1RvUG9pbnRzT2ZmICgpOwogICAg Y2xlYW5lci0+Q29udmVydFBvbHlzVG9MaW5lc09mZiAoKTsKICAgIGNsZWFuZXItPkNvbnZlcnRT dHJpcHNUb1BvbHlzT2ZmICgpOwotZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS92aXN1YWxpemF0 aW9uL3NyYy9jb21tb24vc2hhcGVzLmNwcC52dGs2IFBDTC0xLjYuMC1Tb3VyY2UvdmlzdWFsaXph dGlvbi9zcmMvY29tbW9uL3NoYXBlcy5jcHAKLS0tLSBQQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6 YXRpb24vc3JjL2NvbW1vbi9zaGFwZXMuY3BwLnZ0azYJMjAxMi0wNy0xNyAxNzoxMTozMi4wMDAw MDAwMDAgLTA2MDAKLSsrKyBQQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRpb24vc3JjL2NvbW1v bi9zaGFwZXMuY3BwCTIwMTMtMDctMTIgMjE6MDM6MzQuNjAzMzU0NjYzIC0wNjAwCi1AQCAtMTg1 LDcgKzE4NSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6Y3JlYXRlMkRDaXJjbGUgKGNvbnMKK2Rp ZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL3NoYXBlcy5jcHAudnRrNiAuL3Zpc3Vh bGl6YXRpb24vc3JjL2NvbW1vbi9zaGFwZXMuY3BwCistLS0gLi92aXN1YWxpemF0aW9uL3NyYy9j b21tb24vc2hhcGVzLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAw CisrKysgLi92aXN1YWxpemF0aW9uL3NyYy9jb21tb24vc2hhcGVzLmNwcAkyMDEzLTA4LTIxIDAw OjQ1OjU5LjAxMDg0NDgwMCArMDAwMAorQEAgLTIyNCw3ICsyMjQsNyBAQCBwY2w6OnZpc3VhbGl6 YXRpb246OmNyZWF0ZTJEQ2lyY2xlIChjb25zCiAgICBjaXJjbGUtPlNldE51bWJlck9mU2lkZXMg KDEwMCk7CiAgICAKICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUdWJlRmlsdGVyPiB0dWJlID0gdnRr U21hcnRQb2ludGVyPHZ0a1R1YmVGaWx0ZXI+OjpOZXcoKTsKQEAgLTE0Nyw3MCArODQ2LDExMiBA QCBkaWZmIC11cCBQQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRpb24vc3JjL2NvbW1vbi9zaGFw ZXMuY3BwLnZ0azYgUENMLTEuNi4wLVNvdQogICAgdHViZS0+U2V0TnVtYmVyT2ZTaWRlcyAoMjUp OwogICAgdHViZS0+U2V0UmFkaXVzICgwLjAwMSk7CiAgICAqLyAKLWRpZmYgLXVwIFBDTC0xLjYu MC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvaW1hZ2Vfdmlld2VyLmNwcC52dGs2IFBDTC0xLjYu MC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvaW1hZ2Vfdmlld2VyLmNwcAotLS0tIFBDTC0xLjYu MC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvaW1hZ2Vfdmlld2VyLmNwcC52dGs2CTIwMTItMDct MTcgMTc6MTE6MzIuMDAwMDAwMDAwIC0wNjAwCi0rKysgUENMLTEuNi4wLVNvdXJjZS92aXN1YWxp emF0aW9uL3NyYy9pbWFnZV92aWV3ZXIuY3BwCTIwMTMtMDctMTIgMjE6NDE6MjQuNzMyNTA5OTMy IC0wNjAwCi1AQCAtMTMwLDcgKzEzMCw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6SW1hZ2VWaWV3 ZXI6OmFkZFJHQkkKLSAgIGltYWdlVHJhbnNmb3JtLT5TZXRNYXRyaXggKHRyYW5zZm9ybSk7Ci0g ICAvLyBOb3cgY3JlYXRlIGZpbHRlciBhbmQgc2V0IHByZXZpb3VzbHkgY3JlYXRlZCB0cmFuc2Zv cm1hdGlvbgotICAgdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdlUmVzbGljZT4gYWxnbyA9IHZ0a1Nt YXJ0UG9pbnRlcjx2dGtJbWFnZVJlc2xpY2U+OjpOZXcgKCk7Ci0tICBhbGdvLT5TZXRJbnB1dCAo aW1wb3J0ZXItPkdldE91dHB1dCAoKSk7Ci0rICBhbGdvLT5TZXRJbnB1dENvbm5lY3Rpb24gKGlt cG9ydGVyLT5HZXRPdXRwdXRQb3J0ICgpKTsKLSAgIGFsZ28tPlNldEluZm9ybWF0aW9uSW5wdXQg KGltcG9ydGVyLT5HZXRPdXRwdXQgKCkpOwotICAgYWxnby0+U2V0UmVzbGljZVRyYW5zZm9ybSAo aW1hZ2VUcmFuc2Zvcm0pOwotICAgYWxnby0+U2V0SW50ZXJwb2xhdGlvbk1vZGVUb0N1YmljICgp OwotQEAgLTE1MSw3ICsxNTEsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OkltYWdlVmlld2VyOjph ZGRSR0JJCi0gLy8gIH0KLSAvLyAgLy8gSWYgbm90LCBwYXNzIHRoZSBkYXRhIGRpcmVjdGx5IHRv IHRoZSB2aWV3ZXIKLSAvLyAgZWxzZQotLS8vICAgIGltYWdlX3ZpZXdlcl8tPlNldElucHV0IChh bGdvLT5HZXRPdXRwdXQgKCkpOwotKy8vICAgIGltYWdlX3ZpZXdlcl8tPlNldElucHV0Q29ubmVj dGlvbiAoYWxnby0+R2V0T3V0cHV0UG9ydCAoKSk7Ci0gfQorZGlmZiAtdXAgLi92aXN1YWxpemF0 aW9uL3NyYy9oaXN0b2dyYW1fdmlzdWFsaXplci5jcHAudnRrNiAuL3Zpc3VhbGl6YXRpb24vc3Jj L2hpc3RvZ3JhbV92aXN1YWxpemVyLmNwcAorLS0tIC4vdmlzdWFsaXphdGlvbi9zcmMvaGlzdG9n cmFtX3Zpc3VhbGl6ZXIuY3BwLnZ0azYJMjAxMy0wOC0yMSAwMjoxODoyNy40OTQzMzY3MzUgKzAw MDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vc3JjL2hpc3RvZ3JhbV92aXN1YWxpemVyLmNwcAkyMDEz LTA4LTIxIDAyOjIyOjI5LjU1MzQ2MTA1NyArMDAwMAorQEAgLTI2MCw3ICsyNjAsNyBAQCBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTEhpc3RvZ3JhbVZpc3VhbGl6CisgICAgIGNvbnN0IHZ0a1NtYXJ0 UG9pbnRlcjx2dGtEb3VibGVBcnJheT4gJnh5X2FycmF5LCBSZW5XaW5JbnRlcmFjdCogcmVud2lu dXBkLCBjb25zdCBpbnQgaHNpemUpCisgeworICAgcmVud2ludXBkLT5yZW5fLT5SZW1vdmVBY3Rv cjJEIChyZW53aW51cGQtPnh5X3Bsb3RfKTsKKy0gIHJlbndpbnVwZC0+eHlfcGxvdF8tPlJlbW92 ZUFsbElucHV0cyAoKTsKKysgIHJlbndpbnVwZC0+eHlfcGxvdF8tPlJlbW92ZUFsbERhdGFTZXRJ bnB1dENvbm5lY3Rpb25zICgpOworICAgCisgICBkb3VibGUgbWluX21heFsyXTsKKyAgIHh5X2Fy cmF5LT5HZXRSYW5nZSAobWluX21heCwgMSk7CitkaWZmIC11cCAuL3Zpc3VhbGl6YXRpb24vc3Jj L2ltYWdlX3ZpZXdlci5jcHAudnRrNiAuL3Zpc3VhbGl6YXRpb24vc3JjL2ltYWdlX3ZpZXdlci5j cHAKKy0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL2ltYWdlX3ZpZXdlci5jcHAudnRrNgkyMDEzLTA4 LTIxIDAyOjI0OjAxLjgwMTQxMjgwMCArMDAwMAorKysrIC4vdmlzdWFsaXphdGlvbi9zcmMvaW1h Z2Vfdmlld2VyLmNwcAkyMDEzLTA4LTIxIDAyOjMxOjUwLjg4OTIzOTg1MiArMDAwMAorQEAgLTM3 LDYgKzM3LDggQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSA8dnRrSW1hZ2VWaWV3ZXIuaD4KKysjaW5j bHVkZSA8dnRrSW1hZ2VTbGljZS5oPgorKyNpbmNsdWRlIDx2dGtJbWFnZVNsaWNlTWFwcGVyLmg+ CisgI2luY2x1ZGUgPHZ0a0NhbGxiYWNrQ29tbWFuZC5oPgorICNpbmNsdWRlIDx2dGtSZW5kZXJl ci5oPgorICNpbmNsdWRlIDx2dGtDYW1lcmEuaD4KK0BAIC0xMTcsNyArMTE5LDcgQEAgcGNsOjp2 aXN1YWxpemF0aW9uOjpJbWFnZVZpZXdlcjo6SW1hZ2VWaQorIAorICAgdnRrU21hcnRQb2ludGVy PHZ0a0ltYWdlRGF0YT4gZW1wdHlfaW1hZ2UgPSB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VEYXRh Pjo6TmV3ICgpOworICAgdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdlU2xpY2VNYXBwZXI+IG1hcCA9 IHZ0a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZVNsaWNlTWFwcGVyPjo6TmV3ICgpOworLSAgbWFwLT5T ZXRJbnB1dCAoZW1wdHlfaW1hZ2UpOworKyAgbWFwLT5TZXRJbnB1dERhdGEgKGVtcHR5X2ltYWdl KTsKKyAgIHNsaWNlXy0+U2V0TWFwcGVyIChtYXApOworICAgcmVuXy0+QWRkVmlld1Byb3AgKHNs aWNlXyk7CisgICBpbnRlcmFjdG9yXy0+U2V0SW50ZXJhY3RvclN0eWxlIChpbnRlcmFjdG9yX3N0 eWxlXyk7CitAQCAtMTgwLDkgKzE4Miw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6SW1hZ2VWaWV3 ZXI6OmFkZFJHQkkKICAKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLUBA IC0yMDAsNyArMjAwLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpJbWFnZVZpZXdlcjo6YWRkTW9u bwotICAgaW1hZ2VUcmFuc2Zvcm0tPlNldE1hdHJpeCAodHJhbnNmb3JtKTsKKyAgIHZ0a1NtYXJ0 UG9pbnRlcjx2dGtJbWFnZURhdGE+IGltYWdlID0gdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdlRGF0 YT46Ok5ldyAoKTsKKyAgIGltYWdlLT5TZXRFeHRlbnQgKDAsIHdpZHRoIC0gMSwgMCwgaGVpZ2h0 IC0gMSwgMCwgMCk7CistICBpbWFnZS0+U2V0U2NhbGFyVHlwZVRvVW5zaWduZWRDaGFyICgpOwor LSAgaW1hZ2UtPlNldE51bWJlck9mU2NhbGFyQ29tcG9uZW50cyAoMyk7CistICBpbWFnZS0+QWxs b2NhdGVTY2FsYXJzICgpOworKyAgaW1hZ2UtPkFsbG9jYXRlU2NhbGFycyAoVlRLX1VOU0lHTkVE X0NIQVIsIDMpOworICAgaW1hZ2UtPkdldFBvaW50RGF0YSAoKS0+R2V0U2NhbGFycyAoKS0+U2V0 Vm9pZEFycmF5IChkYXRhLCAzICogd2lkdGggKiBoZWlnaHQsIDEpOworICNpZiAoKFZUS19NQUpP Ul9WRVJTSU9OID09IDUpICYmIChWVEtfTUlOT1JfVkVSU0lPTiA8PSAxMCkpCiAgICAvLyBOb3cg Y3JlYXRlIGZpbHRlciBhbmQgc2V0IHByZXZpb3VzbHkgY3JlYXRlZCB0cmFuc2Zvcm1hdGlvbgot ICAgdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdlUmVzbGljZT4gYWxnbyA9IHZ0a1NtYXJ0UG9pbnRl cjx2dGtJbWFnZVJlc2xpY2U+OjpOZXcgKCk7Ci0tICBhbGdvLT5TZXRJbnB1dCAoaW1wb3J0ZXIt PkdldE91dHB1dCAoKSk7Ci0rICBhbGdvLT5TZXRJbnB1dENvbm5lY3Rpb24gKGltcG9ydGVyLT5H ZXRPdXRwdXRQb3J0ICgpKTsKLSAgIGFsZ28tPlNldEluZm9ybWF0aW9uSW5wdXQgKGltcG9ydGVy LT5HZXRPdXRwdXQgKCkpOwotICAgYWxnby0+U2V0UmVzbGljZVRyYW5zZm9ybSAoaW1hZ2VUcmFu c2Zvcm0pOwotICAgYWxnby0+U2V0SW50ZXJwb2xhdGlvbk1vZGVUb0N1YmljICgpOwotQEAgLTIy MSw3ICsyMjEsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OkltYWdlVmlld2VyOjphZGRNb25vCi0g Ly8gIH0KLSAvLyAgLy8gSWYgbm90LCBwYXNzIHRoZSBkYXRhIGRpcmVjdGx5IHRvIHRoZSB2aWV3 ZXIKLSAvLyAgZWxzZQotLS8vICAgIGltYWdlX3ZpZXdlcl8tPlNldElucHV0IChhbGdvLT5HZXRP dXRwdXQgKCkpOwotKy8vICAgIGltYWdlX3ZpZXdlcl8tPlNldElucHV0Q29ubmVjdGlvbiAoYWxn by0+R2V0T3V0cHV0UG9ydCAoKSk7Ci0gfQorQEAgLTIzMSw5ICsyMzEsNyBAQCBwY2w6OnZpc3Vh bGl6YXRpb246OkltYWdlVmlld2VyOjphZGRNb25vCisgCisgICB2dGtTbWFydFBvaW50ZXI8dnRr SW1hZ2VEYXRhPiBpbWFnZSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZURhdGE+OjpOZXcgKCk7 CisgICBpbWFnZS0+U2V0RXh0ZW50ICgwLCB3aWR0aCAtIDEsIDAsIGhlaWdodCAtIDEsIDAsIDAp OworLSAgaW1hZ2UtPlNldFNjYWxhclR5cGVUb1Vuc2lnbmVkQ2hhciAoKTsKKy0gIGltYWdlLT5T ZXROdW1iZXJPZlNjYWxhckNvbXBvbmVudHMgKDEpOworLSAgaW1hZ2UtPkFsbG9jYXRlU2NhbGFy cyAoKTsKKysgIGltYWdlLT5BbGxvY2F0ZVNjYWxhcnMgKFZUS19VTlNJR05FRF9DSEFSLCAxKTsK KyAgIGltYWdlLT5HZXRQb2ludERhdGEgKCktPkdldFNjYWxhcnMgKCktPlNldFZvaWRBcnJheSAo ZGF0YSwgd2lkdGggKiBoZWlnaHQsIDEpOwogIAotIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLwotZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS92aXN1YWxpemF0aW9uL3NyYy9p bnRlcmFjdG9yX3N0eWxlLmNwcC52dGs2IFBDTC0xLjYuMC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9z cmMvaW50ZXJhY3Rvcl9zdHlsZS5jcHAKLS0tLSBQQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRp b24vc3JjL2ludGVyYWN0b3Jfc3R5bGUuY3BwLnZ0azYJMjAxMi0wNy0xNyAxNzoxMTozMi4wMDAw MDAwMDAgLTA2MDAKLSsrKyBQQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRpb24vc3JjL2ludGVy YWN0b3Jfc3R5bGUuY3BwCTIwMTMtMDctMTIgMjE6MDQ6NTMuMzAyODcwMTQ0IC0wNjAwCi1AQCAt MzE5LDcgKzMxOSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplckludGVyYWMK LSAgICAgICAgIGRhdGEtPlNldFZlcnRzICh2ZXJ0aWNlcyk7CisgI2lmICgoVlRLX01BSk9SX1ZF UlNJT04gPT0gNSkgJiYgKFZUS19NSU5PUl9WRVJTSU9OIDw9IDEwKSkKK2RpZmYgLXVwIC4vdmlz dWFsaXphdGlvbi9zcmMvaW50ZXJhY3Rvcl9zdHlsZS5jcHAudnRrNiAuL3Zpc3VhbGl6YXRpb24v c3JjL2ludGVyYWN0b3Jfc3R5bGUuY3BwCistLS0gLi92aXN1YWxpemF0aW9uL3NyYy9pbnRlcmFj dG9yX3N0eWxlLmNwcC52dGs2CTIwMTMtMDgtMjEgMDE6MTU6NDcuMzA4OTAwNDg0ICswMDAwCisr KysgLi92aXN1YWxpemF0aW9uL3NyYy9pbnRlcmFjdG9yX3N0eWxlLmNwcAkyMDEzLTA4LTIxIDAx OjE4OjQyLjA0ODYzOTkzOCArMDAwMAorQEAgLTM1Nyw3ICszNTcsNyBAQCBwY2w6OnZpc3VhbGl6 YXRpb246OlBDTFZpc3VhbGl6ZXJJbnRlcmFjCisgICAgICAgICBlbHNlCisgICAgICAgICB7Cisg ICAgICAgICAgIHZ0a1BvbHlEYXRhTWFwcGVyKiBtYXBwZXIgPSBzdGF0aWNfY2FzdDx2dGtQb2x5 RGF0YU1hcHBlcio+KGFjdC0+YWN0b3ItPkdldE1hcHBlciAoKSk7CistICAgICAgICAgIG1hcHBl ci0+U2V0SW5wdXQgKGRhdGEpOworKyAgICAgICAgICBtYXBwZXItPlNldElucHV0RGF0YSAoZGF0 YSk7CisgICAgICAgICAgIC8vIE1vZGlmeSB0aGUgYWN0b3IKKyAgICAgICAgICAgYWN0LT5hY3Rv ci0+U2V0TWFwcGVyIChtYXBwZXIpOworICAgICAgICAgfQorQEAgLTM4Niw3ICszODYsNyBAQCBw Y2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXJJbnRlcmFjCisgICAgICAgICAvLyBVcGRh dGUgdGhlIGRhdGEKKyAgICAgICAgIHZ0a1BvbHlEYXRhICpkYXRhID0gc3RhdGljX2Nhc3Q8dnRr UG9seURhdGEqPihhY3QtPmFjdG9yLT5HZXRNYXBwZXIgKCktPkdldElucHV0ICgpKTsKKyAgICAg ICAgIGRhdGEtPkdldFBvaW50RGF0YSAoKS0+U2V0U2NhbGFycyAoc2NhbGFycyk7CistICAgICAg ICBkYXRhLT5VcGRhdGUgKCk7CisrICAgICAgICAvL2RhdGEtPlVwZGF0ZSAoKTsKICAgICAgICAg IC8vIE1vZGlmeSB0aGUgbWFwcGVyCi0gICAgICAgICB2dGtQb2x5RGF0YU1hcHBlciogbWFwcGVy ID0gc3RhdGljX2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhY3QtPmFjdG9yLT5HZXRNYXBwZXIg KCkpOwotLSAgICAgICAgbWFwcGVyLT5TZXRJbnB1dCAoZGF0YSk7Ci0rICAgICAgICBtYXBwZXIt PlNldElucHV0RGF0YSAoZGF0YSk7Ci0gICAgICAgICAvLyBNb2RpZnkgdGhlIGFjdG9yCi0gICAg ICAgICBhY3QtPmFjdG9yLT5TZXRNYXBwZXIgKG1hcHBlcik7Ci0gICAgICAgICBhY3QtPmFjdG9y LT5Nb2RpZmllZCAoKTsKLUBAIC0zNTIsNyArMzUyLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQ Q0xWaXN1YWxpemVySW50ZXJhYwotICAgICAgICAgdnRrUG9seURhdGFNYXBwZXIqIG1hcHBlciA9 IHN0YXRpY19jYXN0PHZ0a1BvbHlEYXRhTWFwcGVyKj4oYWN0LT5hY3Rvci0+R2V0TWFwcGVyICgp KTsKLSAgICAgICAgIG1hcHBlci0+U2V0U2NhbGFyUmFuZ2UgKG1pbm1heCk7Ci0gICAgICAgICBt YXBwZXItPlNldFNjYWxhck1vZGVUb1VzZVBvaW50RGF0YSAoKTsKLS0gICAgICAgIG1hcHBlci0+ U2V0SW5wdXQgKGRhdGEpOwotKyAgICAgICAgbWFwcGVyLT5TZXRJbnB1dERhdGEgKGRhdGEpOwot ICAgICAgICAgLy8gTW9kaWZ5IHRoZSBhY3RvcgotICAgICAgICAgYWN0LT5hY3Rvci0+U2V0TWFw cGVyIChtYXBwZXIpOwotICAgICAgICAgYWN0LT5hY3Rvci0+TW9kaWZpZWQgKCk7Ci1kaWZmIC11 cCBQQ0wtMS42LjAtU291cmNlL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxpemVyLmNwcC52 dGs2IFBDTC0xLjYuMC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3Bw Ci0tLS0gUENMLTEuNi4wLVNvdXJjZS92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlzdWFsaXplci5j cHAudnRrNgkyMDEyLTA3LTE3IDE3OjExOjMyLjAwMDAwMDAwMCAtMDYwMAotKysrIFBDTC0xLjYu MC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3BwCTIwMTMtMDctMTIg MjE6MDI6MTcuNzgzNTg1Mzc5IC0wNjAwCi1AQCAtMzM3LDEzICszMzcsMTMgQEAgcGNsOjp2aXN1 YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRDbworICAgICAgICAgaWYgKHVzZV92Ym9zXykK KyAgICAgICAgIHsKK0BAIC00MDIsNyArNDAyLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xW aXN1YWxpemVySW50ZXJhYworICAgICAgICAgICB2dGtQb2x5RGF0YU1hcHBlciogbWFwcGVyID0g c3RhdGljX2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhY3QtPmFjdG9yLT5HZXRNYXBwZXIgKCkp OworICAgICAgICAgICBtYXBwZXItPlNldFNjYWxhclJhbmdlIChtaW5tYXgpOworICAgICAgICAg ICBtYXBwZXItPlNldFNjYWxhck1vZGVUb1VzZVBvaW50RGF0YSAoKTsKKy0gICAgICAgICAgbWFw cGVyLT5TZXRJbnB1dCAoZGF0YSk7CisrICAgICAgICAgIG1hcHBlci0+U2V0SW5wdXREYXRhIChk YXRhKTsKKyAgICAgICAgICAgLy8gTW9kaWZ5IHRoZSBhY3RvcgorICAgICAgICAgICBhY3QtPmFj dG9yLT5TZXRNYXBwZXIgKG1hcHBlcik7CisgICAgICAgICB9CitkaWZmIC11cCAuL3Zpc3VhbGl6 YXRpb24vc3JjL3BjbF9wbG90dGVyLmNwcC52dGs2IC4vdmlzdWFsaXphdGlvbi9zcmMvcGNsX3Bs b3R0ZXIuY3BwCistLS0gLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfcGxvdHRlci5jcHAudnRrNgky MDEzLTA4LTIxIDAyOjQyOjQwLjU4NDc5OTA1MSArMDAwMAorKysrIC4vdmlzdWFsaXphdGlvbi9z cmMvcGNsX3Bsb3R0ZXIuY3BwCTIwMTMtMDgtMjEgMDI6NDI6NTYuNTEzMTMxNzY0ICswMDAwCitA QCAtMTIwLDcgKzEyMCw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMUGxvdHRlcjo6YWRkUGxv dEQKKyAgIC8vYWRkaW5nIHRvIGNoYXJ0CisgICAvL3Z0a1Bsb3QgKmxpbmUgPSBjaGFydF8tPkFk ZFBsb3QodnRrQ2hhcnQ6OkxJTkUpOworICAgdnRrUGxvdCAqbGluZSA9IGNoYXJ0Xy0+QWRkUGxv dCAodHlwZSk7CistICBsaW5lLT5TZXRJbnB1dCAodGFibGUsIDAsIDEpOworKyAgbGluZS0+U2V0 SW5wdXREYXRhICh0YWJsZSwgMCwgMSk7CisgICBsaW5lLT5TZXRXaWR0aCAoMSk7CisgCisgICBp ZiAoY29sb3IgPT0gTlVMTCkgICAgLy9jb2xvciBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZSBD b2xvclNjaGVtZQorZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlzdWFsaXplci5j cHAudnRrNiAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxpemVyLmNwcAorLS0tIC4vdmlz dWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3BwLnZ0azYJMjAxMy0wNy0yMyAxNzoyMTow Mi4wMDAwMDAwMDAgKzAwMDAKKysrKyAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxpemVy LmNwcAkyMDEzLTA4LTIxIDAyOjE4OjA3LjQxMDkxMTM3MiArMDAwMAorQEAgLTUwOCwxNyArNTA4 LDE3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkQ28KKyAgIGF4ZXNf Y29sb3JzLT5JbnNlcnROZXh0VmFsdWUgKDEuMCk7CisgCisgICB2dGtTbWFydFBvaW50ZXI8dnRr UG9seURhdGE+IGF4ZXNfZGF0YSA9IGF4ZXMtPkdldE91dHB1dCAoKTsKKy0gIGF4ZXNfZGF0YS0+ VXBkYXRlICgpOworKyAgYXhlcy0+VXBkYXRlICgpOwogICAgYXhlc19kYXRhLT5HZXRQb2ludERh dGEgKCktPlNldFNjYWxhcnMgKGF4ZXNfY29sb3JzKTsKICAKICAgIHZ0a1NtYXJ0UG9pbnRlcjx2 dGtUdWJlRmlsdGVyPiBheGVzX3R1YmVzID0gdnRrU21hcnRQb2ludGVyPHZ0a1R1YmVGaWx0ZXI+ OjpOZXcgKCk7CkBAIC0yMjYsNyArOTY3LDEyIEBAIGRpZmYgLXVwIFBDTC0xLjYuMC1Tb3VyY2Uv dmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3BwLnZ0azYgUENMLTEuNi4wLVNvCiAg CiAgICB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+IGF4ZXNfYWN0b3IgPSB2dGtTbWFydFBv aW50ZXI8dnRrTE9EQWN0b3I+OjpOZXcgKCk7CiAgICBheGVzX2FjdG9yLT5TZXRNYXBwZXIgKGF4 ZXNfbWFwcGVyKTsKLUBAIC0zNzYsMTMgKzM3NiwxMyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBD TFZpc3VhbGl6ZXI6OmFkZENvCitAQCAtNTQ3LDE3ICs1NDcsMTcgQEAgcGNsOjp2aXN1YWxpemF0 aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRDbworICAgYXhlc19jb2xvcnMtPkluc2VydE5leHRWYWx1 ZSAoMS4wKTsKKyAKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YT4gYXhlc19kYXRhID0g YXhlcy0+R2V0T3V0cHV0ICgpOworLSAgYXhlc19kYXRhLT5VcGRhdGUgKCk7CisrICBheGVzLT5V cGRhdGUgKCk7CiAgICBheGVzX2RhdGEtPkdldFBvaW50RGF0YSAoKS0+U2V0U2NhbGFycyAoYXhl c19jb2xvcnMpOwogIAogICAgdnRrU21hcnRQb2ludGVyPHZ0a1R1YmVGaWx0ZXI+IGF4ZXNfdHVi ZXMgPSB2dGtTbWFydFBvaW50ZXI8dnRrVHViZUZpbHRlcj46Ok5ldyAoKTsKQEAgLTI0Miw3ICs5 ODgsMTIgQEAgZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJjZS92aXN1YWxpemF0aW9uL3NyYy9wY2xf dmlzdWFsaXplci5jcHAudnRrNiBQQ0wtMS42LjAtU28KICAKICAgIHZ0a1NtYXJ0UG9pbnRlcjx2 dGtMT0RBY3Rvcj4gYXhlc19hY3RvciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtMT0RBY3Rvcj46Ok5l dyAoKTsKICAgIGF4ZXNfYWN0b3ItPlNldE1hcHBlciAoYXhlc19tYXBwZXIpOwotQEAgLTQxNiwx MyArNDE2LDEzIEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkQ28KK0BA IC02MTcsMTcgKzYxNywxNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFk ZENvCisgICBheGVzX2NvbG9ycy0+SW5zZXJ0TmV4dFZhbHVlICgxLjApOworIAorICAgdnRrU21h cnRQb2ludGVyPHZ0a1BvbHlEYXRhPiBheGVzX2RhdGEgPSBheGVzLT5HZXRPdXRwdXQgKCk7Cist ICBheGVzX2RhdGEtPlVwZGF0ZSAoKTsKKysgIGF4ZXMtPlVwZGF0ZSAoKTsKICAgIGF4ZXNfZGF0 YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJzIChheGVzX2NvbG9ycyk7CiAgCiAgICB2dGtT bWFydFBvaW50ZXI8dnRrVHViZUZpbHRlcj4gYXhlc190dWJlcyA9IHZ0a1NtYXJ0UG9pbnRlcjx2 dGtUdWJlRmlsdGVyPjo6TmV3ICgpOwpAQCAtMjU4LDE2ICsxMDA5LDc4IEBAIGRpZmYgLXVwIFBD TC0xLjYuMC1Tb3VyY2UvdmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3BwLnZ0azYg UENMLTEuNi4wLVNvCiAgCiAgICB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+IGF4ZXNfYWN0 b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+OjpOZXcgKCk7CiAgICBheGVzX2FjdG9y LT5TZXRNYXBwZXIgKGF4ZXNfbWFwcGVyKTsKLUBAIC04MjUsNyArODI1LDcgQEAgcGNsOjp2aXN1 YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjcmVhdAotICAgICBhY3RvciA9IHZ0a1NtYXJ0UG9p bnRlcjx2dGtMT0RBY3Rvcj46Ok5ldyAoKTsKK0BAIC04MzUsNyArODM1LDcgQEAgcGNsOjp2aXN1 YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRQbworICAgICBsaW5lXzEtPlNldFBvaW50MSAo Y2xvdWQtPnBvaW50c1tpXS54LCBjbG91ZC0+cG9pbnRzW2ldLnksIGNsb3VkLT5wb2ludHNbaV0u eik7CisgICAgIGxpbmVfMS0+U2V0UG9pbnQyIChwLngsIHAueSwgcC56KTsKKyAgICAgbGluZV8x LT5VcGRhdGUgKCk7CistICAgIHBvbHlkYXRhXzEtPkFkZElucHV0IChsaW5lXzEtPkdldE91dHB1 dCAoKSk7CisrICAgIHBvbHlkYXRhXzEtPkFkZElucHV0RGF0YSAobGluZV8xLT5HZXRPdXRwdXQg KCkpOworICAgICBsaW5lXzFfY29sb3JzLT5JbnNlcnROZXh0VHVwbGVWYWx1ZSAoZ3JlZW4pOwor ICAgfQorICAgcG9seWRhdGFfMS0+VXBkYXRlICgpOworQEAgLTg2Miw3ICs4NjIsNyBAQCBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZFBvCisgICAgIGxpbmVfMi0+U2V0UG9p bnQxIChjbG91ZC0+cG9pbnRzW2ldLngsIGNsb3VkLT5wb2ludHNbaV0ueSwgY2xvdWQtPnBvaW50 c1tpXS56KTsKKyAgICAgbGluZV8yLT5TZXRQb2ludDIgKHAueCwgcC55LCBwLnopOworICAgICBs aW5lXzItPlVwZGF0ZSAoKTsKKy0gICAgcG9seWRhdGFfMi0+QWRkSW5wdXQgKGxpbmVfMi0+R2V0 T3V0cHV0ICgpKTsKKysgICAgcG9seWRhdGFfMi0+QWRkSW5wdXREYXRhIChsaW5lXzItPkdldE91 dHB1dCAoKSk7CisgICAgIGxpbmVfMl9jb2xvcnMtPkluc2VydE5leHRUdXBsZVZhbHVlIChibHVl KTsKKyAgIH0KKyAgIHBvbHlkYXRhXzItPlVwZGF0ZSAoKTsKK0BAIC04NzEsOCArODcxLDggQEAg cGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjphZGRQbwogIAotICAgdnRrU21hcnRQ b2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+IG1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRh U2V0TWFwcGVyPjo6TmV3ICgpOwotLSAgbWFwcGVyLT5TZXRJbnB1dCAoZGF0YSk7Ci0rICBtYXBw ZXItPlNldElucHV0RGF0YSAoZGF0YSk7CisgICAvLyBBc3NlbWJsZSB0aGUgdHdvIHNldHMgb2Yg bGluZXMKKyAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtBcHBlbmRQb2x5RGF0YT4gYWxsZGF0YSA9IHZ0 a1NtYXJ0UG9pbnRlcjx2dGtBcHBlbmRQb2x5RGF0YT46Ok5ldyAoKTsKKy0gIGFsbGRhdGEtPkFk ZElucHV0IChsaW5lXzFfZGF0YSk7CistICBhbGxkYXRhLT5BZGRJbnB1dCAobGluZV8yX2RhdGEp OworKyAgYWxsZGF0YS0+QWRkSW5wdXREYXRhIChsaW5lXzFfZGF0YSk7CisrICBhbGxkYXRhLT5B ZGRJbnB1dERhdGEgKGxpbmVfMl9kYXRhKTsKICAKLSAgIGlmICh1c2Vfc2NhbGFycykKKyAgIC8v IENyZWF0ZSBhbiBBY3RvcgorICAgdnRrU21hcnRQb2ludGVyPHZ0a0xPREFjdG9yPiBhY3RvcjsK K0BAIC0xMDk0LDcgKzEwOTQsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6 OmNyZWF0CisgICBlbHNlCisgICB7CisgICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFw cGVyPiBtYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAoKTsK Ky0gICAgbWFwcGVyLT5TZXRJbnB1dCAoZGF0YSk7CisrICAgIG1hcHBlci0+U2V0SW5wdXREYXRh IChkYXRhKTsKKyAKKyAgICAgaWYgKHVzZV9zY2FsYXJzKQorICAgICB7CitAQCAtMTE2OCw3ICsx MTY4LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjcmVhdAorICAgZWxz ZQogICAgewotQEAgLTE3MzEsNyArMTczMSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlz dWFsaXplcjo6YWRkTW8KKyAgICAgdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+IG1h cHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVyPjo6TmV3ICgpOworLSAgICBt YXBwZXItPlNldElucHV0IChkYXRhKTsKKysgICAgbWFwcGVyLT5TZXRJbnB1dERhdGEgKGRhdGEp OworIAorICAgICBpZiAodXNlX3NjYWxhcnMpCisgICAgIHsKK0BAIC0xNTQ4LDkgKzE1NDgsOSBA QCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnNldFNoCisgICAgICAgICAgIHsK KyAgICAgICAgICAgICBQQ0xfSU5GTyAoIltwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6 ZXI6OnNldFNoYXBlUmVuZGVyaW5nUHJvcGVydGllc10gTm9ybWFscyBkbyBub3QgZXhpc3QgaW4g dGhlIGRhdGFzZXQsIGJ1dCBHb3VyYXVkIHNoYWRpbmcgd2FzIHJlcXVlc3RlZC4gRXN0aW1hdGlu ZyBub3JtYWxzLi4uXG4iKTsKKyAgICAgICAgICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURh dGFOb3JtYWxzPiBub3JtYWxzID0gdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhTm9ybWFscz46 Ok5ldyAoKTsKKy0gICAgICAgICAgICBub3JtYWxzLT5TZXRJbnB1dCAoYWN0b3ItPkdldE1hcHBl ciAoKS0+R2V0SW5wdXQgKCkpOworKyAgICAgICAgICAgIG5vcm1hbHMtPlNldElucHV0RGF0YSAo YWN0b3ItPkdldE1hcHBlciAoKS0+R2V0SW5wdXQgKCkpOworICAgICAgICAgICAgIG5vcm1hbHMt PlVwZGF0ZSAoKTsKKy0gICAgICAgICAgICB2dGtEYXRhU2V0TWFwcGVyOjpTYWZlRG93bkNhc3Qg KGFjdG9yLT5HZXRNYXBwZXIgKCkpLT5TZXRJbnB1dCAobm9ybWFscy0+R2V0T3V0cHV0ICgpKTsK KysgICAgICAgICAgICB2dGtEYXRhU2V0TWFwcGVyOjpTYWZlRG93bkNhc3QgKGFjdG9yLT5HZXRN YXBwZXIgKCkpLT5TZXRJbnB1dERhdGEgKG5vcm1hbHMtPkdldE91dHB1dCAoKSk7CisgICAgICAg ICAgIH0KKyAgICAgICAgICAgYWN0b3ItPkdldFByb3BlcnR5ICgpLT5TZXRJbnRlcnBvbGF0aW9u VG9Hb3VyYXVkICgpOworICAgICAgICAgICBicmVhazsKK0BAIC0xNTYxLDkgKzE1NjEsOSBAQCBw Y2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnNldFNoCisgICAgICAgICAgIHsKKyAg ICAgICAgICAgICBQQ0xfSU5GTyAoIltwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6 OnNldFNoYXBlUmVuZGVyaW5nUHJvcGVydGllc10gTm9ybWFscyBkbyBub3QgZXhpc3QgaW4gdGhl IGRhdGFzZXQsIGJ1dCBQaG9uZyBzaGFkaW5nIHdhcyByZXF1ZXN0ZWQuIEVzdGltYXRpbmcgbm9y bWFscy4uLlxuIik7CisgICAgICAgICAgICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhTm9y bWFscz4gbm9ybWFscyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU5vcm1hbHM+OjpOZXcg KCk7CistICAgICAgICAgICAgbm9ybWFscy0+U2V0SW5wdXQgKGFjdG9yLT5HZXRNYXBwZXIgKCkt PkdldElucHV0ICgpKTsKKysgICAgICAgICAgICBub3JtYWxzLT5TZXRJbnB1dERhdGEgKGFjdG9y LT5HZXRNYXBwZXIgKCktPkdldElucHV0KCkgKTsKKyAgICAgICAgICAgICBub3JtYWxzLT5VcGRh dGUgKCk7CistICAgICAgICAgICAgdnRrRGF0YVNldE1hcHBlcjo6U2FmZURvd25DYXN0IChhY3Rv ci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXQgKG5vcm1hbHMtPkdldE91dHB1dCAoKSk7CisrICAg ICAgICAgICAgdnRrRGF0YVNldE1hcHBlcjo6U2FmZURvd25DYXN0IChhY3Rvci0+R2V0TWFwcGVy ICgpKS0+U2V0SW5wdXREYXRhIChub3JtYWxzLT5HZXRPdXRwdXQgKCkpOworICAgICAgICAgICB9 CisgICAgICAgICAgIGFjdG9yLT5HZXRQcm9wZXJ0eSAoKS0+U2V0SW50ZXJwb2xhdGlvblRvUGhv bmcgKCk7CisgICAgICAgICAgIGJyZWFrOworQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHBjbDo6dmlz dWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkTW8KICAKICAgIHZ0a1NtYXJ0UG9pbnRlciA8 dnRrVHJhbnNmb3JtRmlsdGVyPiB0cmFuc19maWx0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrVHJh bnNmb3JtRmlsdGVyPjo6TmV3ICgpOwogICAgdHJhbnNfZmlsdGVyLT5TZXRUcmFuc2Zvcm0gKHRy YW5zZm9ybSk7CkBAIC0yNzYsNzkgKzEwODksNTIgQEAgZGlmZiAtdXAgUENMLTEuNi4wLVNvdXJj ZS92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlzdWFsaXplci5jcHAudnRrNiBQQ0wtMS42LjAtU28K ICAgIHRyYW5zX2ZpbHRlci0+VXBkYXRlKCk7CiAgCiAgICAvLyBDcmVhdGUgYW4gQWN0b3IKLUBA IC0xOTU4LDcgKzE5NTgsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFk ZFRlCi0gICAvLyBDcmVhdGUgYW4gQWN0b3IKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUZXh0QWN0 b3I+IGFjdG9yID0gdnRrU21hcnRQb2ludGVyPHZ0a1RleHRBY3Rvcj46Ok5ldyAoKTsKLSAgIGFj dG9yLT5TZXRQb3NpdGlvbiAoeHBvcywgeXBvcyk7Ci0tICBhY3Rvci0+U2V0SW5wdXQgKHRleHQu Y19zdHIgKCkpOwotKyAgYWN0b3ItPlNldElucHV0RGF0YSAodGV4dC5jX3N0ciAoKSk7Ci0gCi0g ICB2dGtTbWFydFBvaW50ZXI8dnRrVGV4dFByb3BlcnR5PiB0cHJvcCA9IGFjdG9yLT5HZXRUZXh0 UHJvcGVydHkgKCk7Ci0gICB0cHJvcC0+U2V0Rm9udFNpemUgKDEwKTsKLUBAIC0xOTk0LDcgKzE5 OTQsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZFRlCi0gICAvLyBD cmVhdGUgYW4gQWN0b3IKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUZXh0QWN0b3I+IGFjdG9yID0g dnRrU21hcnRQb2ludGVyPHZ0a1RleHRBY3Rvcj46Ok5ldyAoKTsKLSAgIGFjdG9yLT5TZXRQb3Np dGlvbiAoeHBvcywgeXBvcyk7Ci0tICBhY3Rvci0+U2V0SW5wdXQgKHRleHQuY19zdHIgKCkpOwot KyAgYWN0b3ItPlNldElucHV0RGF0YSAodGV4dC5jX3N0ciAoKSk7Ci0gCi0gICB2dGtTbWFydFBv aW50ZXI8dnRrVGV4dFByb3BlcnR5PiB0cHJvcCA9IGFjdG9yLT5HZXRUZXh0UHJvcGVydHkgKCk7 Ci0gICB0cHJvcC0+U2V0Rm9udFNpemUgKDEwKTsKLUBAIC0yMDMwLDcgKzIwMzAsNyBAQCBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZFRlCi0gICAvLyBDcmVhdGUgYW4gQWN0 b3IKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUZXh0QWN0b3I+IGFjdG9yID0gdnRrU21hcnRQb2lu dGVyPHZ0a1RleHRBY3Rvcj46Ok5ldyAoKTsKLSAgIGFjdG9yLT5TZXRQb3NpdGlvbiAoeHBvcywg eXBvcyk7Ci0tICBhY3Rvci0+U2V0SW5wdXQgKHRleHQuY19zdHIgKCkpOwotKyAgYWN0b3ItPlNl dElucHV0RGF0YSAodGV4dC5jX3N0ciAoKSk7Ci0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrVGV4 dFByb3BlcnR5PiB0cHJvcCA9IGFjdG9yLT5HZXRUZXh0UHJvcGVydHkgKCk7Ci0gICB0cHJvcC0+ U2V0Rm9udFNpemUgKGZvbnRzaXplKTsKLUBAIC0yMDYzLDcgKzIwNjMsNyBAQCBwY2w6OnZpc3Vh bGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gCS8vIFJldHJpZXZlIHRoZSBBY3Rvcgot IAl2dGtUZXh0QWN0b3IqIGFjdG9yID0gdnRrVGV4dEFjdG9yOjpTYWZlRG93bkNhc3QgKGFtX2l0 LT5zZWNvbmQpOyAKLSAJYWN0b3ItPlNldFBvc2l0aW9uICh4cG9zLCB5cG9zKTsKLS0JYWN0b3It PlNldElucHV0ICh0ZXh0LmNfc3RyICgpKTsKLSsJYWN0b3ItPlNldElucHV0RGF0YSAodGV4dC5j X3N0ciAoKSk7Ci0gCi0gCWFjdG9yLT5Nb2RpZmllZCAoKTsKLSAKLUBAIC0yMDg4LDcgKzIwODgs NyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gCS8vIENyZWF0 ZSB0aGUgQWN0b3IKLSAJdnRrVGV4dEFjdG9yKiBhY3RvciA9IHZ0a1RleHRBY3Rvcjo6U2FmZURv d25DYXN0IChhbV9pdC0+c2Vjb25kKTsgCi0gCWFjdG9yLT5TZXRQb3NpdGlvbiAoeHBvcywgeXBv cyk7Ci0tCWFjdG9yLT5TZXRJbnB1dCAodGV4dC5jX3N0ciAoKSk7Ci0rCWFjdG9yLT5TZXRJbnB1 dERhdGEgKHRleHQuY19zdHIgKCkpOwotIAotIAl2dGtTbWFydFBvaW50ZXI8dnRrVGV4dFByb3Bl cnR5PiB0cHJvcCA9IGFjdG9yLT5HZXRUZXh0UHJvcGVydHkgKCk7Ci0gCXRwcm9wLT5TZXRDb2xv ciAociwgZywgYik7Ci1AQCAtMjExNiw3ICsyMTE2LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQ Q0xWaXN1YWxpemVyOjp1cGRhdAotIAl2dGtUZXh0QWN0b3IgKmFjdG9yID0gdnRrVGV4dEFjdG9y OjpTYWZlRG93bkNhc3QgKGFtX2l0LT5zZWNvbmQpOwotIAkKLSAJYWN0b3ItPlNldFBvc2l0aW9u ICh4cG9zLCB5cG9zKTsKLS0JYWN0b3ItPlNldElucHV0ICh0ZXh0LmNfc3RyICgpKTsKLSsJYWN0 b3ItPlNldElucHV0RGF0YSAodGV4dC5jX3N0ciAoKSk7Ci0gCi0gCXZ0a1RleHRQcm9wZXJ0eSog dHByb3AgPSBhY3Rvci0+R2V0VGV4dFByb3BlcnR5ICgpOwotIAl0cHJvcC0+U2V0Rm9udFNpemUg KGZvbnRzaXplKTsKLUBAIC0yMTU4LDcgKzIxNTgsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBD TFZpc3VhbGl6ZXI6OnVwZGF0Ci0gICB2dGtQb2x5RGF0YU1hcHBlciogbWFwcGVyID0gc3RhdGlj X2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIg KCkpOwotICAgbWFwcGVyLT5TZXRTY2FsYXJSYW5nZSAobWlubWF4KTsKLSAgIG1hcHBlci0+U2V0 U2NhbGFyTW9kZVRvVXNlUG9pbnREYXRhICgpOwotLSAgbWFwcGVyLT5TZXRJbnB1dCAoZGF0YSk7 Ci0rICBtYXBwZXItPlNldElucHV0RGF0YSAoZGF0YSk7Ci0gICAvLyBNb2RpZnkgdGhlIGFjdG9y Ci0gICBhbV9pdC0+c2Vjb25kLmFjdG9yLT5TZXRNYXBwZXIgKG1hcHBlcik7Ci0gICBhbV9pdC0+ c2Vjb25kLmFjdG9yLT5Nb2RpZmllZCAoKTsKLUBAIC0yMzMxLDcgKzIzMzEsNyBAQCBwY2w6OnZp c3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZFBvCitAQCAtMjc1MSw3ICsyNzUxLDcgQEAg cGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjp1cGRhdAorICAgLy8gVXBkYXRlIHRo ZSBkYXRhCisgICB2dGtQb2x5RGF0YSAqZGF0YSA9IHN0YXRpY19jYXN0PHZ0a1BvbHlEYXRhKj4o YW1faXQtPnNlY29uZC5hY3Rvci0+R2V0TWFwcGVyICgpLT5HZXRJbnB1dCAoKSk7CisgICBkYXRh LT5HZXRQb2ludERhdGEgKCktPlNldFNjYWxhcnMgKHNjYWxhcnMpOworLSAgZGF0YS0+VXBkYXRl ICgpOworKyAgLy9jb2xvcl9oYW5kbGVyLT5VcGRhdGUgKCk7CisgICAvLyBNb2RpZnkgdGhlIG1h cHBlcgorICAgaWYgKHVzZV92Ym9zXykKKyAgIHsKK0BAIC0yNzcxLDcgKzI3NzEsNyBAQCBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0CisgICAgIHZ0a1BvbHlEYXRhTWFw cGVyKiBtYXBwZXIgPSBzdGF0aWNfY2FzdDx2dGtQb2x5RGF0YU1hcHBlcio+KGFtX2l0LT5zZWNv bmQuYWN0b3ItPkdldE1hcHBlciAoKSk7CisgICAgIG1hcHBlci0+U2V0U2NhbGFyUmFuZ2UgKG1p bm1heCk7CisgICAgIG1hcHBlci0+U2V0U2NhbGFyTW9kZVRvVXNlUG9pbnREYXRhICgpOworLSAg ICBtYXBwZXItPlNldElucHV0IChkYXRhKTsKKysgICAgbWFwcGVyLT5TZXRJbnB1dERhdGEgKGRh dGEpOworICAgICAvLyBNb2RpZnkgdGhlIGFjdG9yCisgICAgIGFtX2l0LT5zZWNvbmQuYWN0b3It PlNldE1hcHBlciAobWFwcGVyKTsKKyAgICAgYW1faXQtPnNlY29uZC5hY3Rvci0+TW9kaWZpZWQg KCk7CitAQCAtMjg3Niw3ICsyODc2LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxp emVyOjphZGRQbworICAgICBwb2x5X2dyaWQtPkFsbG9jYXRlICgxLCAxKTsKKyAgICAgcG9seV9n cmlkLT5JbnNlcnROZXh0Q2VsbCAocG9seWdvbi0+R2V0Q2VsbFR5cGUgKCksIHBvbHlnb24tPkdl dFBvaW50SWRzICgpKTsKKyAgICAgcG9seV9ncmlkLT5TZXRQb2ludHMgKHBvbHlfcG9pbnRzKTsK Ky0gICAgcG9seV9ncmlkLT5VcGRhdGUgKCk7CisrICAgIC8vcG9seV9ncmlkLT5VcGRhdGUgKCk7 CisgCisgICAgIGNyZWF0ZUFjdG9yRnJvbVZUS0RhdGFTZXQgKHBvbHlfZ3JpZCwgYWN0b3IpOwor ICAgICBhY3Rvci0+R2V0UHJvcGVydHkgKCktPlNldFJlcHJlc2VudGF0aW9uVG9XaXJlZnJhbWUg KCk7CitAQCAtMzAwMSw3ICszMDAxLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxp emVyOjp1cGRhdAorICAgY2VsbHMtPlNxdWVlemUgKCk7CisgICAvLyBTZXQgdGhlIHRoZSB2ZXJ0 aWNlcworICAgcG9seWRhdGEtPlNldFN0cmlwcyAoY2VsbHMpOworLSAgcG9seWRhdGEtPlVwZGF0 ZSAoKTsKKysgIC8vcG9seWRhdGEtPlVwZGF0ZSAoKTsKKyAKKyAgIHJldHVybiAodHJ1ZSk7Cisg fQorQEAgLTMwNTYsNyArMzA1Niw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXpl cjo6YWRkUG8KICAKICAgIC8vIFNldHVwIGFjdG9yIGFuZCBtYXBwZXIKICAgIHZ0a1NtYXJ0UG9p bnRlciA8IHZ0a1BvbHlEYXRhTWFwcGVyID4gbWFwcGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1Bv bHlEYXRhTWFwcGVyPjo6TmV3ICgpOwogLSAgbWFwcGVyLT5TZXRJbnB1dCAocG9seURhdGEpOwot KyAgbWFwcGVyLT5TZXRJbnB1dCBEYXRhKHBvbHlEYXRhKTsKKysgIG1hcHBlci0+U2V0SW5wdXRE YXRhKHBvbHlEYXRhKTsKICAKICAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0FjdG9yID4gYWN0b3Ig PSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcgKCk7CiAgICBhY3Rvci0+U2V0TWFwcGVy IChtYXBwZXIpOwotQEAgLTI0NjUsNyArMjQ2NSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENM VmlzdWFsaXplcjo6cmVuZGUKK0BAIC0zMTk3LDcgKzMxOTcsNyBAQCBwY2w6OnZpc3VhbGl6YXRp b246OlBDTFZpc3VhbGl6ZXI6OnJlbmRlCiAgCiAgICB2dGtTbWFydFBvaW50ZXI8dnRrVHJhbnNm b3JtRmlsdGVyPiB0cmFuc19maWx0ZXJfY2VudGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1RyYW5z Zm9ybUZpbHRlcj46Ok5ldyAoKTsKICAgIHRyYW5zX2ZpbHRlcl9jZW50ZXItPlNldFRyYW5zZm9y bSAodHJhbnNfY2VudGVyKTsKQEAgLTM1NywxMCArMTE0Myw0MiBAQCBkaWZmIC11cCBQQ0wtMS42 LjAtU291cmNlL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF92aXN1YWxpemVyLmNwcC52dGs2IFBDTC0x LjYuMC1TbwogICAgdHJhbnNfZmlsdGVyX2NlbnRlci0+VXBkYXRlICgpOwogIAogICAgdnRrU21h cnRQb2ludGVyPHZ0a1BvbHlEYXRhTWFwcGVyPiBtYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRr UG9seURhdGFNYXBwZXI+OjpOZXcgKCk7Ci1AQCAtMzE2MSw1ICszMTYxLDUgQEAgcGNsOjp2aXN1 YWxpemF0aW9uOjpGUFNDYWxsYmFjazo6RXhlY3V0ZQotICAgZmxvYXQgZnBzID0gMS4wIC8gcmVu LT5HZXRMYXN0UmVuZGVyVGltZUluU2Vjb25kcyAoKTsKLSAgIGNoYXIgYnVmWzEyOF07Ci0gICBz cHJpbnRmIChidWYsICIlLjFmIEZQUyIsIGZwcyk7Ci0tICBhY3Rvcl8tPlNldElucHV0IChidWYp OwotKyAgYWN0b3JfLT5TZXRJbnB1dERhdGEgKGJ1Zik7Ci0gfQorQEAgLTMyNTIsNyArMzI1Miw3 IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6cmVuZGUKKyAKKyAgIC8vIEdl dCBjYW1lcmEgcG9zaXRpb25zCisgICB2dGtQb2x5RGF0YSAqc3BoZXJlID0gc3ViZGl2aWRlLT5H ZXRPdXRwdXQgKCk7CistICBzcGhlcmUtPlVwZGF0ZSAoKTsKKysgIHN1YmRpdmlkZS0+VXBkYXRl ICgpOworIAorICAgc3RkOjp2ZWN0b3I8RWlnZW46OlZlY3RvcjNmPiBjYW1fcG9zaXRpb25zOwor ICAgaWYgKCF1c2VfdmVydGljZXMpCitAQCAtMzY3OSw3ICszNjc5LDcgQEAgcGNsOjp2aXN1YWxp emF0aW9uOjpQQ0xWaXN1YWxpemVyOjpmcm9tSAorICAgLy8gQ29udmVydCB0aGUgUG9pbnRDbG91 ZCB0byBWVEsgUG9seURhdGEKKyAgIGNvbnZlcnRQb2ludENsb3VkVG9WVEtQb2x5RGF0YSAoZ2Vv bWV0cnlfaGFuZGxlciwgcG9seWRhdGEsIGluaXRjZWxscyk7CisgICAvLyB1c2UgdGhlIGdpdmVu IGdlb21ldHJ5IGhhbmRsZXIKKy0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7CisrICAvL3BvbHlkYXRh LT5VcGRhdGUgKCk7CisgCisgICAvLyBHZXQgdGhlIGNvbG9ycyBmcm9tIHRoZSBoYW5kbGVyCisg ICBib29sIGhhc19jb2xvcnMgPSBmYWxzZTsKK2RpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMv dnRrL3Z0a1ZlcnRleEJ1ZmZlck9iamVjdE1hcHBlci5jeHgudnRrNiAuL3Zpc3VhbGl6YXRpb24v c3JjL3Z0ay92dGtWZXJ0ZXhCdWZmZXJPYmplY3RNYXBwZXIuY3h4CistLS0gLi92aXN1YWxpemF0 aW9uL3NyYy92dGsvdnRrVmVydGV4QnVmZmVyT2JqZWN0TWFwcGVyLmN4eC52dGs2CTIwMTMtMDgt MjEgMDI6MzI6NTEuMDI3NDkzODgxICswMDAwCisrKysgLi92aXN1YWxpemF0aW9uL3NyYy92dGsv dnRrVmVydGV4QnVmZmVyT2JqZWN0TWFwcGVyLmN4eAkyMDEzLTA4LTIxIDAyOjQyOjMwLjE0MDU4 MDg5NyArMDAwMAorQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIHZ0a1ZlcnRleEJ1ZmZlck9iamVj dE1hcHBlcjo6U2V0SW5wCisgLy8gIHN0ZDo6Y291dCA8PCAiU2V0SW5wdXQiIDw8IGVuZGw7Cisg ICBpZihpbnB1dCkKKyAgIHsKKy0gICAgdGhpcy0+U2V0SW5wdXRDb25uZWN0aW9uKDAsIGlucHV0 LT5HZXRQcm9kdWNlclBvcnQoKSk7CisrICAgIHRoaXMtPlNldElucHV0KGlucHV0KTsKKyAgIH0K KyAgIGVsc2UKKyAgIHsKK0BAIC0xNjIsNyArMTYyLDcgQEAgdm9pZCB2dGtWZXJ0ZXhCdWZmZXJP YmplY3RNYXBwZXI6OlNldElucAorIC8vICBzdGQ6OmNvdXQgPDwgIlNldElucHV0IiA8PCBlbmRs OworICAgaWYoaW5wdXQpCisgICB7CistICAgIHRoaXMtPlNldElucHV0Q29ubmVjdGlvbigwLCBp bnB1dC0+R2V0UHJvZHVjZXJQb3J0KCkpOworKyAgICB0aGlzLT5TZXRJbnB1dChpbnB1dCk7Cisg ICB9CisgICBlbHNlCisgICB7CgpkaWZmIC0tZ2l0IGEvcGNsLnNwZWMgYi9wY2wuc3BlYwppbmRl eCBkMGE0MDY3Li40NzE5ODg5IDEwMDY0NAotLS0gYS9wY2wuc3BlYworKysgYi9wY2wuc3BlYwpA QCAtMSwxNyArMSwxNiBAQAogTmFtZTogICAgICAgICAgIHBjbAotVmVyc2lvbjogICAgICAgIDEu Ni4wCi1SZWxlYXNlOiAgICAgICAgNyV7P2Rpc3R9CitWZXJzaW9uOiAgICAgICAgMS43LjAKK1Jl bGVhc2U6ICAgICAgICAxJXs/ZGlzdH0KIFN1bW1hcnk6ICAgICAgICBMaWJyYXJ5IGZvciBwb2lu dCBjbG91ZCBwcm9jZXNzaW5nCiAKIEdyb3VwOiAgICAgICAgICBTeXN0ZW0gRW52aXJvbm1lbnQv TGlicmFyaWVzCiBMaWNlbnNlOiAgICAgICAgQlNECiBVUkw6ICAgICAgICAgICAgaHR0cDovL3Bv aW50Y2xvdWRzLm9yZy8KLVNvdXJjZTA6ICAgICAgICBodHRwOi8vd3d3LnBvaW50Y2xvdWRzLm9y Zy9hc3NldHMvZmlsZXMvMS42LjAvUENMLTEuNi4wLVNvdXJjZS50YXIuYnoyCi1QYXRjaDA6ICAg ICAgICAgUENMLTEuNC4wLVNvdXJjZS1mZWRvcmEucGF0Y2gKLVBhdGNoMTogICAgICAgICBwY2wt MS42LjAtYm9vc3QxNTMucGF0Y2gKLVBhdGNoMjogICAgICAgICBwY2wtMS42LjAtYXJtLnBhdGNo CitTb3VyY2UwOiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1BvaW50Q2xvdWRMaWJyYXJ5L3Bj bC9hcmNoaXZlL3BjbC0xLjcuMC50YXIuZ3oKICMgUGF0Y2ggdG8gY29tcGlsZSBhZ2FpbnN0IHZ0 ayA2LjAuMAotUGF0Y2gzOiAgICAgICAgIHBjbC12dGs2LnBhdGNoCitQYXRjaDA6ICAgICAgICAg JXtuYW1lfS12dGs2LnBhdGNoCisjIFBhdGNoIHRvIGNvbXBpbGUgYWdhaW5zdCBzeXN0ZW0gbWV0 c2xpYgorUGF0Y2gxOiAgICAgICAgICV7bmFtZX0tMS43LjAtbWV0c2xpYi5wYXRjaAogCiAjIEZv ciBwbGFpbiBidWlsZGluZwogQnVpbGRSZXF1aXJlczogIGNtYWtlLCBnY2MtYysrLCBib29zdC1k ZXZlbApAQCAtMjQsNyArMjMsNyBAQCBCdWlsZFJlcXVpcmVzOiAgdGV0ZXgtbGF0ZXgKICVlbmRp ZgogCiAjIG1hbmRhdG9yeQotQnVpbGRSZXF1aXJlczogIGVpZ2VuMy1zdGF0aWMsIGZsYW5uLWRl dmVsLCBjbWlucGFjay1kZXZlbCwgdnRrLWRldmVsLCBnbDJwcy1kZXZlbAorQnVpbGRSZXF1aXJl czogIGVpZ2VuMy1zdGF0aWMsIGZsYW5uLWRldmVsLCBjbWlucGFjay1kZXZlbCwgdnRrLWRldmVs LCBnbDJwcy1kZXZlbCwgbWV0c2xpYi1zdGF0aWMKICMgb3B0aW9uYWwKIEJ1aWxkUmVxdWlyZXM6 ICBxaHVsbC1kZXZlbCwgbGlidXNiMS1kZXZlbCwgZ3Rlc3QtZGV2ZWwgcXR3ZWJraXQtZGV2ZWwK ICVpZmFyY2ggJXtpeDg2fSB4ODZfNjQKQEAgLTc3LDE0ICs3NiwxMyBAQCBMaWJyYXJ5LgogCiAK ICVwcmVwCi0lc2V0dXAgLXEgLW4gUENMLSV7dmVyc2lvbn0tU291cmNlCi0lcGF0Y2gwIC1wMiAt YiAuZmVkb3JhCi0lcGF0Y2gxIC1wMCAtYiAuYm9vc3QxNTMKLSVwYXRjaDIgLXAwIC1iIC5hcm0K LSVwYXRjaDMgLXAxIC1iIC52dGs2Cislc2V0dXAgLXEgLW4gJXtuYW1lfS0le25hbWV9LSV7dmVy c2lvbn0KKyVwYXRjaDAgLXAxIC1iIC52dGs2CislcGF0Y2gxIC1wMCAtYiAubWV0c2xpYgogIyBK dXN0IHRvIG1ha2UgaXQgb2J2aW91cyB3ZSdyZSBub3QgdXNpbmcgYW55IG9mIHRoZXNlCi1ybSAt cmYgIDNyZHBhcnR5Ci0KK3JtIC1mciByZWNvZ25pdGlvbi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlv bi8zcmRwYXJ0eS9tZXRzbGliCitybSAtZnIgc3VyZmFjZS9zcmMvM3JkcGFydHkvb3Blbm51cmJz CitybSAtcmYgc3VyZmFjZS9pbmNsdWRlL3BjbC9zdXJmYWNlLzNyZHBhcnR5L29wZW5udXJicwog CiAlYnVpbGQKIG1rZGlyIGJ1aWxkCkBAIC0xODgsNiArMTg2LDEwIEBAIHJtIC1yZiAkUlBNX0JV SUxEX1JPT1Qle19kYXRhZGlyfS9kb2MvJXtuYW1lfS0xLjYKIAogCiAlY2hhbmdlbG9nCisqIFdl ZCBBdWcgMjEgMjAxMyBSaWNoIE1hdHRlcyA8cmljaG1hdHRlc0BnbWFpbC5jb20+IC0gMS43LjAt MQorLSBVcGRhdGUgdG8gMS43LjAKKy0gVXBkYXRlIHZ0ayA2IHBhdGNoIGZvciAxLjcuMAorCiAq IFNhdCBKdWwgMjcgMjAxMyBwbWFjaGF0YUByZWRoYXQuY29tIC0gMS42LjAtNwogLSBSZWJ1aWxk IGZvciBib29zdCAxLjU0LjAKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4 IDA1OTdjODcuLjU5NWY0OGUgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAt MSArMSBAQAotZjgzY2E1ZDBmZjI5MDQxMmIwODA3ODY0Yjk1ZWJhMjYgIFBDTC0xLjYuMC1Tb3Vy Y2UudGFyLmJ6MgorZTJhYzJkMmU3MjgyNWQ5OTFjNmQxOTRmOTU4NmI1ZDggIHBjbC0xLjcuMC50 YXIuZ3oK