MTYxIG5ldyBjb21taXRzIGluIGdhbGF4eS1jZW50cmFsOgoKaHR0cHM6Ly9iaXRidWNrZXQub3Jn L2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2E0NmU5MjE2OGQyOS8KQ2hhbmdlc2V0OiAg IGE0NmU5MjE2OGQyOQpVc2VyOiAgICAgICAgQmpvZXJuR3J1ZW5pbmcKRGF0ZTogICAgICAgIDIw MTQtMTAtMTggMjI6Mzc6NTcrMDA6MDAKU3VtbWFyeTogICAgIEluaXRpYWwgY29tbWl0CkFmZmVj dGVkICM6ICAzIGZpbGVzCgpkaWZmIC1yIDcyMGVhMTc5NmMyNjU3NGQ2NDJlMDJkYjM1ODMwODVj MzQ4YTQ0NzQgLXIgYTQ2ZTkyMTY4ZDI5NjU4MzQwZTc2OWU9CmU5YmE3NjJjNGNjMmY4M2YxIGNv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vLmdpdGlnbm9yZQotLS0gL2Rldi9u dWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vLmdpdGlnbm9y ZQpAQCAtMCwwICsxLDU0IEBACisjIEJ5dGUtY29tcGlsZWQgLyBvcHRpbWl6ZWQgLyBETEwgZmls ZXMKK19fcHljYWNoZV9fLworKi5weVtjb2RdCisKKyMgQyBleHRlbnNpb25zCisqLnNvCisKKyMg RGlzdHJpYnV0aW9uIC8gcGFja2FnaW5nCisuUHl0aG9uCitlbnYvCitiaW4vCitidWlsZC8KK2Rl dmVsb3AtZWdncy8KK2Rpc3QvCitlZ2dzLworbGliLworbGliNjQvCitwYXJ0cy8KK3NkaXN0Lwor dmFyLworKi5lZ2ctaW5mby8KKy5pbnN0YWxsZWQuY2ZnCisqLmVnZworCisjIEluc3RhbGxlciBs b2dzCitwaXAtbG9nLnR4dAorcGlwLWRlbGV0ZS10aGlzLWRpcmVjdG9yeS50eHQKKworIyBVbml0 IHRlc3QgLyBjb3ZlcmFnZSByZXBvcnRzCitodG1sY292LworLnRveC8KKy5jb3ZlcmFnZQorLmNh Y2hlCitub3NldGVzdHMueG1sCitjb3ZlcmFnZS54bWwKKworIyBUcmFuc2xhdGlvbnMKKyoubW8K KworIyBNciBEZXZlbG9wZXIKKy5tci5kZXZlbG9wZXIuY2ZnCisucHJvamVjdAorLnB5ZGV2cHJv amVjdAorCisjIFJvcGUKKy5yb3BlcHJvamVjdAorCisjIERqYW5nbyBzdHVmZjoKKyoubG9nCisq LnBvdAorCisjIFNwaGlueCBkb2N1bWVudGF0aW9uCitkb2NzL19idWlsZC8KKwoKZGlmZiAtciA3 MjBlYTE3OTZjMjY1NzRkNjQyZTAyZGIzNTgzMDg1YzM0OGE0NDc0IC1yIGE0NmU5MjE2OGQyOTY1 ODM0MGU3NjllPQplOWJhNzYyYzRjYzJmODNmMSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL0xJQ0VOU0UKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL0xJQ0VOU0UKQEAgLTAsMCArMSwyMSBAQAorVGhlIE1JVCBMaWNl bnNlIChNSVQpCisKK0NvcHlyaWdodCAoYykgMjAxNCBCaj1DMz1CNnJuIEdyPUMzPUJDbmluZwor CitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYSBjbz0KcHkKK29mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkPQplYWwKK2luIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u IHRoZSByaWdoPQp0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCitmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCitUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp bmNsdWRlZCBpbj0KIGFsbAorY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT b2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQg U0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUj0KT00sCitPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTIElOID0KVEhFCitTT0ZUV0FSRS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpk aWZmIC1yIDcyMGVhMTc5NmMyNjU3NGQ2NDJlMDJkYjM1ODMwODVjMzQ4YTQ0NzQgLXIgYTQ2ZTky MTY4ZDI5NjU4MzQwZTc2OWU9CmU5YmE3NjJjNGNjMmY4M2YxIGNvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vUkVBRE1FLm1kCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKQEAgLTAsMCArMSw0IEBACitn YWxheHktaXB5dGhvbgorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE CisKK0lQeXRob24gSW50ZWdyYXRpb24gaW50byBHYWxheHkKCgpodHRwczovL2JpdGJ1Y2tldC5v cmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvYjVmNDU4YTdjOWY0LwpDaGFuZ2VzZXQ6 ICAgYjVmNDU4YTdjOWY0ClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAgICAg MjAxNC0xMC0xOCAyMjozNzo1NyswMDowMApTdW1tYXJ5OiAgICAgYWRkIHRoZSBpbml0aWFsIElQ eXRob24gSW50ZWdyYXRpb24KQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgYTQ2ZTkyMTY4 ZDI5NjU4MzQwZTc2OWVlOWJhNzYyYzRjYzJmODNmMSAtciBiNWY0NThhN2M5ZjQ3MmI1MTc1ZDVk MT0KZTNhYjc0ZTA4NjI3YThjMjIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi9pcHl0aG9uL2NvbmZpZy9pcHl0PQpob24ueG1sCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL2NvbmZpZy9pcHl0aG9uLnht bApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPTNEIjEuMCIgZW5jb2Rpbmc9M0QiVVRG LTgiPz4KKzwhRE9DVFlQRSB2aXN1YWxpemF0aW9uIFNZU1RFTSAiLi4vLi4vdmlzdWFsaXphdGlv bi5kdGQiPgorPHZpc3VhbGl6YXRpb24gbmFtZT0zRCJJUHl0aG9uIj4KKyAgICA8ZGF0YV9zb3Vy Y2VzPgorICAgICAgICA8ZGF0YV9zb3VyY2U+CisgICAgICAgICAgICA8bW9kZWxfY2xhc3M+SGlz dG9yeURhdGFzZXRBc3NvY2lhdGlvbjwvbW9kZWxfY2xhc3M+CisgICAgICAgICAgICA8dGVzdCB0 eXBlPTNEImlzaW5zdGFuY2UiIHRlc3RfYXR0cj0zRCJkYXRhdHlwZSIgcmVzdWx0X3R5cGU9Cj0z RCJkYXRhdHlwZSI+dGFidWxhci5UYWJ1bGFyPC90ZXN0PgorICAgICAgICAgICAgPHRvX3BhcmFt IHBhcmFtX2F0dHI9M0QiaWQiPmRhdGFzZXRfaWQ8L3RvX3BhcmFtPgorICAgICAgICA8L2RhdGFf c291cmNlPgorICAgIDwvZGF0YV9zb3VyY2VzPgorICAgIDxwYXJhbXM+CisgICAgICAgIDxwYXJh bSB0eXBlPTNEImRhdGFzZXQiIHZhcl9uYW1lX2luX3RlbXBsYXRlPTNEImhkYSIgcmVxdWlyZWQ9 M0QidD0KcnVlIj5kYXRhc2V0X2lkPC9wYXJhbT4KKyAgICA8L3BhcmFtcz4KKyAgICA8dGVtcGxh dGU+aXB5dGhvbi5tYWtvPC90ZW1wbGF0ZT4KKzwvdmlzdWFsaXphdGlvbj4KCmRpZmYgLXIgYTQ2 ZTkyMTY4ZDI5NjU4MzQwZTc2OWVlOWJhNzYyYzRjYzJmODNmMSAtciBiNWY0NThhN2M5ZjQ3MmI1 MTc1ZDVkMT0KZTNhYjc0ZTA4NjI3YThjMjIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pPQpweXRob24ubWFrbwotLS0gL2Rldi9udWxsCisr KyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0 ZXMvaXB5dGhvbi5tYWtvCkBAIC0wLDAgKzEsNzMgQEAKKzwlCitpbXBvcnQgb3MKK2ltcG9ydCBz eXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKKwor ZW1wdHlfbmIgPTNEICIiInsKKyAibWV0YWRhdGEiOiB7CisgICJuYW1lIjogIiIsCisgICJzaWdu YXR1cmUiOiAic2hhMjU2OjIwMWVhZjUzYTdjYTBhNWI2NjFlMGM4OTI1YWRjNjE3MTRhOTFhYzg3 MTQ3MTYwNGM0Mj0KOGNiZGE0YTY5ODIzOSIKKyB9LAorICJuYmZvcm1hdCI6IDMsCisgIm5iZm9y bWF0X21pbm9yIjogMCwKKyAid29ya3NoZWV0cyI6IFsKKyAgeworICAgImNlbGxzIjogWworICAg IHsKKyAgICAgImNlbGxfdHlwZSI6ICJoZWFkaW5nIiwKKyAgICAgImxldmVsIjogMiwKKyAgICAg Im1ldGFkYXRhIjoge30sCisgICAgICJzb3VyY2UiOiBbCisgICAgICAiV2VsY29tZSB0byB0aGUg aW50ZXJhY3RpdmUgR2FsYXh5IElQeXRob24gTm90ZWJvb2suIgorICAgICBdCisgICAgfSwKKyAg ICB7CisgICAgICJjZWxsX3R5cGUiOiAibWFya2Rvd24iLAorICAgICAibWV0YWRhdGEiOiB7fSwK KyAgICAgInNvdXJjZSI6IFsKKyAgICAgICJZb3UgY2FuIGFjY2VzcyB5b3VyIGRhdGEgdmlhIHRo ZSBkYXRhc2V0IG51bWJlci4gRm9yIGV4YW1wbGU6IGhhbmRsPQplID0zRCBvcGVuKCc0MicsICdy JykiCisgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgImNlbGxfdHlwZSI6ICJjb2RlIiwKKyAg ICAgImNvbGxhcHNlZCI6IGZhbHNlLAorICAgICAiaW5wdXQiOiBbXSwKKyAgICAgImxhbmd1YWdl IjogInB5dGhvbiIsCisgICAgICJtZXRhZGF0YSI6IHt9LAorICAgICAib3V0cHV0cyI6IFtdCisg ICAgfQorICAgXSwKKyAgICJtZXRhZGF0YSI6IHt9CisgIH0KKyBdCit9IiIiCisKK1BPUlQgPTNE IDc3NzcKKwordGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVtcCgp ICkKK25ld19kYXRhc2V0X3BhdGggPTNEIG9zLnBhdGguam9pbiggdGVtcF9kaXIsIHN0ciggaGRh LmhpZCApICkKK3NodXRpbC5jb3B5KCBoZGEuZmlsZV9uYW1lLCBuZXdfZGF0YXNldF9wYXRoICkK KworCitlbXB0eV9uYl9wYXRoID0zRCBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICdpcHl0aG9uX2dh bGF4eV9ub3RlYm9vay5pcHluYicpCit3aXRoIG9wZW4oIGVtcHR5X25iX3BhdGgsICd3KycgKSBh cyBoYW5kbGU6CisgICAgaGFuZGxlLndyaXRlKCBlbXB0eV9uYiApCisKK2RvY2tlcl9jbWQgPTNE ICdkb2NrZXIgcnVuIC1kIC1wICVzOjY3ODkgLXYgIiVzOi9pbXBvcnQvIiBiZ3J1ZW5pbmcvZG9j a2VyPQotaXB5dGhvbi1ub3RlYm9vaycgJSAoUE9SVCwgdGVtcF9kaXIpCisKK3N1YnByb2Nlc3Mu Y2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCisKKworJT4KKzxodG1sPgorCisKKzxib2R5 PgorICAgIDxvYmplY3QgZGF0YT0zRCJodHRwOi8vbG9jYWxob3N0OiR7UE9SVH0vbm90ZWJvb2tz L2lweXRob25fZ2FsYXh5X25vdGU9CmJvb2suaXB5bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0z RCIxMDAlIj4KKyAgICAgICAgPGVtYmVkIHNyYz0zRCJodHRwOi8vbG9jYWxob3N0OiR7UE9SVH0v bm90ZWJvb2tzL2lweXRob25fZ2FsYXh5X25vPQp0ZWJvb2suaXB5bmIiIGhlaWdodD0zRCIxMDAl IiB3aWR0aD0zRCIxMDAlIj4KKyAgICAgICAgPC9lbWJlZD4KKyAgICA8L29iamVjdD4KKzwvYm9k eT4KKzwvaHRtbD4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFs L2NvbW1pdHMvZjg1ZDg1NTU5Yzk3LwpDaGFuZ2VzZXQ6ICAgZjg1ZDg1NTU5Yzk3ClVzZXI6ICAg ICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowMCswMDow MApTdW1tYXJ5OiAgICAgdXBkYXRlIHJlYWRtZSBmaWxlCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRp ZmYgLXIgYjVmNDU4YTdjOWY0NzJiNTE3NWQ1ZDFlM2FiNzRlMDg2MjdhOGMyMiAtciBmODVkODU1 NTljOTc1ZmM4ZjAzMGFhNT0KYzhiYjcxODI1OTYwY2RkYTggY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9SRUFETUUubWQKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi9SRUFETUUubWQKQEAgLTEsNCArMSwxNyBAQAotZ2FsYXh5LWlweXRob24KLT0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorR2FsYXh5IElQeXRob24g SW50ZWdyYXRpb24KKz0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNECj0yMAogSVB5dGhvbiBJbnRlZ3Jh dGlvbiBpbnRvIEdhbGF4eQorCisKK1JlcXVpcmVtZW50cworPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNECisKK0ZvciBzZWN1cml0eSByZWFzb25zIHlvdSBuZWVkIHRvIGhhdmUg ZG9ja2VyIGluc3RhbGxlZC4KK0ZvciBhIGRldGFpbGVkIGluc3RydWN0aW9uIGhvdyB0byBpbnN0 YWxsIGRvY2tlciwgcGxlYXNlIGxvb2sgYXQgdGhlIGRvY2tlPQpyIHdlYnNpdGUuCisKK0luc3Rh bGxhdGlvbgorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECisKK0Nwb3kgdGhl IElQeXRob24gZm9sZGVyIGluIHlvdXIgPEdBTEFYWV9ST09UPi9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9uPQpzIGZvbGRlciBhbmQgcmVzdGFydCBHYWxheHkuCitUaGUgSVB5dGhvbiBWaXN1 YWxpc2F0aW9uIE9wdGlvbiBzaG91bGQgYmUgdmlzaWJsZSBuZXh0IHRvIHRoZSB1c3VhbCBDaGFy dD0KcyBvciBUcmFja3N0ZXIgT3B0aW9ucyBpbiB5b3VyIFZpc3VhbGlzYXRpb24gbWVudWUuClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy9lYjM3NTMxZWFjOTEvCkNoYW5nZXNldDogICBlYjM3NTMx ZWFjOTEKVXNlcjogICAgICAgIEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4 IDIyOjM4OjAwKzAwOjAwClN1bW1hcnk6ICAgICB1c2UgdGhlIG5ldyBhdXRva2lsbCBjb250YWlu ZXIKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBmODVkODU1NTljOTc1ZmM4ZjAzMGFhNWM4 YmI3MTgyNTk2MGNkZGE4IC1yIGViMzc1MzFlYWM5MTc0YzExYjdiN2VkPQo4YTljNDNmMjExNjU0 NjMzNSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2lweXRob24vdGVtcGxh dGVzL2k9CnB5dGhvbi5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBA IC01NSw3ICs1NSw3IEBACiB3aXRoIG9wZW4oIGVtcHR5X25iX3BhdGgsICd3KycgKSBhcyBoYW5k bGU6CiAgICAgaGFuZGxlLndyaXRlKCBlbXB0eV9uYiApCj0yMAotZG9ja2VyX2NtZCA9M0QgJ2Rv Y2tlciBydW4gLWQgLXAgJXM6Njc4OSAtdiAiJXM6L2ltcG9ydC8iIGJncnVlbmluZy9kb2NrZXI9 Ci1pcHl0aG9uLW5vdGVib29rJyAlIChQT1JULCB0ZW1wX2RpcikKK2RvY2tlcl9jbWQgPTNEICdk b2NrZXIgcnVuIC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczo2Nzg5IC12ICIlczovaW1wb3J0 PQovIiBiZ3J1ZW5pbmcvZG9ja2VyLWlweXRob24tbm90ZWJvb2snICUgKFBPUlQsIHRlbXBfZGly KQo9MjAKIHN1YnByb2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCj0yMAoKCmh0 dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hODI2OTRl MzEwYjQvCkNoYW5nZXNldDogICBhODI2OTRlMzEwYjQKVXNlcjogICAgICAgIEJqb2VybkdydWVu aW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAwKzAwOjAwClN1bW1hcnk6ICAgICBG aXggZm9yIGRlbGF5IGluIGRpc3BsYXlpbmcgSVB5dGhvbiBOQgpGaXhlcyBodHRwczovL2dpdGh1 Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uL2lzc3Vlcy8xCkFmZmVjdGVkICM6ICAxIGZp bGUKCmRpZmYgLXIgZWIzNzUzMWVhYzkxNzRjMTFiN2I3ZWQ4YTljNDNmMjExNjU0NjMzNSAtciBh ODI2OTRlMzEwYjRhNmJlYWExOThmYT0KNDkzM2E4Y2E4OTE2ZTg0MzcgY29uZmlnL3BsdWdpbnMv dmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pPQpweXRob24ubWFrbwot LS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2lweXRob24vdGVtcGxh dGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMyw2ICszLDcgQEAKIGltcG9y dCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHNodXRpbAoraW1wb3J0IHRpbWUKIGltcG9y dCBzdWJwcm9jZXNzCj0yMAogZW1wdHlfbmIgPTNEICIiInsKQEAgLTU5LDYgKzYwLDkgQEAKPTIw CiBzdWJwcm9jZXNzLmNhbGwoZG9ja2VyX2NtZCwgc2hlbGw9M0RUcnVlKQo9MjAKKyMgV2UgbmVl ZCB0byB3YWl0IHVudGlsIHRoZSBJbWFnZSBhbmQgSVB5dGhvbiBpbiBsb2FkZWQKKyMgVE9ETzog VGhpcyBjYW4gYmUgZW5oYW5jZWQgbGF0ZXIsIHdpdGggc29tZSBKUyBzcGlubmluZyBpZiBuZWVk ZWQuCit0aW1lLnNsZWVwKDEpCj0yMAogJT48aHRtbD4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcv Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOTQ4MWYxZWYxOTE2LwpDaGFuZ2VzZXQ6ICAg OTQ4MWYxZWYxOTE2ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0x OCAyMjozODowMCswMDowMApTdW1tYXJ5OiAgICAgQWRkZWQgY29uZiBmaWxlIGdlbmVyYXRpb24K QWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBhODI2OTRlMzEwYjRhNmJlYWExOThmYTQ5MzNh OGNhODkxNmU4NDM3IC1yIDk0ODFmMWVmMTkxNjExYzJmODQxOTBmPQpkOWE2N2FhYTVhYzMwM2Rm OCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2lweXRob24vdGVtcGxhdGVz L2k9CnB5dGhvbi5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC01 LDYgKzUsNyBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRpbWUKIGltcG9ydCBzdWJwcm9jZXNz CitpbXBvcnQgeWFtbAo9MjAKIGVtcHR5X25iID0zRCAiIiJ7CiAgIm1ldGFkYXRhIjogewpAQCAt NTIsNiArNTMsMTQgQEAKIHNodXRpbC5jb3B5KCBoZGEuZmlsZV9uYW1lLCBuZXdfZGF0YXNldF9w YXRoICkKPTIwCj0yMAorY29uZl9maWxlID0zRCB7CisgICAgJ2hpc3RvcnlfaWQnOiBOb25lLAor ICAgICdnYWxheHlfdXJsJzogTm9uZSwKKyAgICAnYXBpX2tleSc6IE5vbmUsCit9Cit3aXRoIG9w ZW4oIG9zLnBhdGguam9pbiggdGVtcF9kaXIsICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYW5k bGU6CisgICAgaGFuZGxlLndyaXRlKCB5YW1sLmR1bXAoY29uZl9maWxlKSApCisKIGVtcHR5X25i X3BhdGggPTNEIG9zLnBhdGguam9pbih0ZW1wX2RpciwgJ2lweXRob25fZ2FsYXh5X25vdGVib29r LmlweW5iJykKIHdpdGggb3BlbiggZW1wdHlfbmJfcGF0aCwgJ3crJyApIGFzIGhhbmRsZToKICAg ICBoYW5kbGUud3JpdGUoIGVtcHR5X25iICkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5 L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZmE2MWZmODczOGQ0LwpDaGFuZ2VzZXQ6ICAgZmE2MWZm ODczOGQ0ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjoz ODowMSswMDowMApTdW1tYXJ5OiAgICAgTm90ZWJvb2sgc2lnbmF0dXJlcyBtdXN0IGJlIHVuaXF1 ZQpSYXRoZXIgdGhhbiBhc3NpZ25pbmcgYSBzdGF0aWMgbm90ZWJvb2sgc2lnbmF0dXJlLCB0aGlz IGhhcyBiZWVuIHJlcGxhY2VkIHc9Cml0aCBhIHJhbmRvbWx5LApkZXRlcm1pbmlzdGljYWxseSBn ZW5lcmF0ZWQgbm90ZWJvb2sgc2lnbmF0dXJlLiBUaGlzIGlzIGN1cnJlbnRseSBkb25lIG9mZiA9 Cm9mIHRoZSBkYXRhc2V0J3MgaWQsCmVuY29kZWQgdGhyb3VnaCB0cmFucyAoc28gaXQncyB0aGUg dW5pcXVlIGhhc2gsIGFuZCBub3QganVzdCB0aGUgbnVtYmVyKSwgaD0Kb3dldmVyIHRoaXMgd2ls bCBuZWVkIHRvCmJlIGV4Y2hhbmdlZCBmb3IgaGlzdG9yeV9pZCB3aGVuZXZlciB3ZSBoYXZlIGFj Y2VzcyB0byB0aGF0LgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDk0ODFmMWVmMTkxNjEx YzJmODQxOTBmZDlhNjdhYWE1YWMzMDNkZjggLXIgZmE2MWZmODczOGQ0YWQyMzk2NjhjNTA9CjI3 MmUwNThiMDNkOTgyOTdiIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5 dGhvbi90ZW1wbGF0ZXMvaT0KcHl0aG9uLm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm1ha28KQEAgLTYsMTEgKzYsMTcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc3VicHJvY2Vz cwogaW1wb3J0IHlhbWwKK2ltcG9ydCByYW5kb20KPTIwCisKKyMgRW5zdXJlIGdlbmVyYXRpb24g b2Ygbm90ZWJvb2sgaWQgaXMgZGV0ZXJtaW5pc3RpYyBmb3IgdGhlIGRhdGFzZXQuIFJlcGxhPQpj ZSB3aXRoIGhpc3RvcnkgaWQKKyMgd2hlbmV2ZXIgd2UgZmlndXJlIG91dCBob3cgdG8gYWNjZXNz IHRoYXQuCityYW5kb20uc2VlZCggdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuaWQgKSAp Citub3RlYm9va19pZCA9M0QgJycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVm JykgZm9yIF8gaW4gcmFuZ2UoNj0KNCkpCiBlbXB0eV9uYiA9M0QgIiIiewogICJtZXRhZGF0YSI6 IHsKICAgIm5hbWUiOiAiIiwKLSAgInNpZ25hdHVyZSI6ICJzaGEyNTY6MjAxZWFmNTNhN2NhMGE1 YjY2MWUwYzg5MjVhZGM2MTcxNGE5MWFjODcxNDcxNjA0YzQyPQo4Y2JkYTRhNjk4MjM5IgorICAi c2lnbmF0dXJlIjogInNoYTI1NjolcyIKICB9LAogICJuYmZvcm1hdCI6IDMsCiAgIm5iZm9ybWF0 X21pbm9yIjogMCwKQEAgLTQ0LDcgKzUwLDcgQEAKICAgICJtZXRhZGF0YSI6IHt9CiAgIH0KICBd Ci19IiIiCit9IiIiICUgKG5vdGVib29rX2lkLCApCj0yMAogUE9SVCA9M0QgNzc3Nwo9MjAKCgpo dHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZDM0MmFl NDQ0ZjdlLwpDaGFuZ2VzZXQ6ICAgZDM0MmFlNDQ0ZjdlClVzZXI6ICAgICAgICBlcmFzY2hlMgpE YXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowMSswMDowMApTdW1tYXJ5OiAgICAgRm91bmQg dGhlIGhpc3RvcnkgSUQKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBmYTYxZmY4NzM4ZDRh ZDIzOTY2OGM1MDI3MmUwNThiMDNkOTgyOTdiIC1yIGQzNDJhZTQ0NGY3ZTJhN2QzM2M4ZTM2PQo2 M2U2MjgzMjYwYTRmOGVlNCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2lw eXRob24vdGVtcGxhdGVzL2k9CnB5dGhvbi5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5 dGhvbi5tYWtvCkBAIC05LDkgKzksMTEgQEAKIGltcG9ydCByYW5kb20KPTIwCj0yMAoraGlzdG9y eV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkICkKK2Rh dGFzZXRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkKICMgRW5zdXJl IGdlbmVyYXRpb24gb2Ygbm90ZWJvb2sgaWQgaXMgZGV0ZXJtaW5pc3RpYyBmb3IgdGhlIGRhdGFz ZXQuIFJlcGxhPQpjZSB3aXRoIGhpc3RvcnkgaWQKICMgd2hlbmV2ZXIgd2UgZmlndXJlIG91dCBo b3cgdG8gYWNjZXNzIHRoYXQuCi1yYW5kb20uc2VlZCggdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk KCBoZGEuaWQgKSApCityYW5kb20uc2VlZCggaGlzdG9yeV9pZCApCiBub3RlYm9va19pZCA9M0Qg Jycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmJykgZm9yIF8gaW4gcmFuZ2Uo Nj0KNCkpCiBlbXB0eV9uYiA9M0QgIiIiewogICJtZXRhZGF0YSI6IHsKQEAgLTYwLDcgKzYyLDcg QEAKPTIwCj0yMAogY29uZl9maWxlID0zRCB7Ci0gICAgJ2hpc3RvcnlfaWQnOiBOb25lLAorICAg ICdoaXN0b3J5X2lkJzogaGlzdG9yeV9pZCwKICAgICAnZ2FsYXh5X3VybCc6IE5vbmUsCiAgICAg J2FwaV9rZXknOiBOb25lLAogfQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5 LWNlbnRyYWwvY29tbWl0cy9jNmI2MTliZWMyYzYvCkNoYW5nZXNldDogICBjNmI2MTliZWMyYzYK VXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAxKzAw OjAwClN1bW1hcnk6ICAgICBJbXBvcnQgYWxsIGRhdGFzZXRzIGJ5IGRlZmF1bHQKTmVlZCB0byBw cm92aWRlIGEgbWV0aG9kIHRvIGFsbG93IHNlbGVjdGluZyBhIHN1YnNldCBvZiBkYXRhc2V0cyB0 byBjb3B5LCBoPQpvd2V2ZXIgZm9yIG5vdyB0aGV5IGFyZQphbGwgY29waWVkIG92ZXIuCkFmZmVj dGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZDM0MmFlNDQ0ZjdlMmE3ZDMzYzhlMzY2M2U2MjgzMjYw YTRmOGVlNCAtciBjNmI2MTliZWMyYzY0YTZjNGE3YmE3NT0KMTc4M2E5MmM3NzNiN2FiY2QgY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pPQpw eXRob24ubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNTcsOCAr NTcsMTAgQEAKIFBPUlQgPTNEIDc3NzcKPTIwCiB0ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRo KCB0ZW1wZmlsZS5ta2R0ZW1wKCkgKQotbmV3X2RhdGFzZXRfcGF0aCA9M0Qgb3MucGF0aC5qb2lu KCB0ZW1wX2Rpciwgc3RyKCBoZGEuaGlkICkgKQotc2h1dGlsLmNvcHkoIGhkYS5maWxlX25hbWUs IG5ld19kYXRhc2V0X3BhdGggKQorCisjIFRPRE86IFByb3ZpZGUgYSBtZXRob2QgdG8gYWxsb3cg c2VsZWN0aW5nIHdoaWNoIGRhdGFzZXRzIGFyZSB1c2VkCitmb3IgZGF0YXNldCBpbiB0cmFucy5o aXN0b3J5LmFjdGl2ZV9kYXRhc2V0czoKKyAgICBzaHV0aWwuY29weSggZGF0YXNldC5maWxlX25h bWUsIG9zLnBhdGguam9pbiggdGVtcF9kaXIsIHN0ciggaGRhLmhpZCApPQogKSApCj0yMAo9MjAK IGNvbmZfZmlsZSA9M0QgewoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvY29tbWl0cy84NTliMDFjNDIwOTcvCkNoYW5nZXNldDogICA4NTliMDFjNDIwOTcKVXNl cjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAxKzAwOjAw ClN1bW1hcnk6ICAgICBUeXBvLCB3cm9uZyBkZXN0aW5hdGlvbiBhbmQgYWxsIGRhdGFzZXRzIG92 ZXJ3cm90ZSBvbmUgYW5vdGhlcj0KLiBUaGlzIGZpeGVzIHRoYXQgaXNzdWUKQWZmZWN0ZWQgIzog IDEgZmlsZQoKZGlmZiAtciBjNmI2MTliZWMyYzY0YTZjNGE3YmE3NTE3ODNhOTJjNzczYjdhYmNk IC1yIDg1OWIwMWM0MjA5N2Q1OWNhZmZkZDM0PQpjZDJlZDI0MTFjMDZmY2M4MiBjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2lweXRob24vdGVtcGxhdGVzL2k9CnB5dGhvbi5t YWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC02MCw3ICs2MCw3IEBA Cj0yMAogIyBUT0RPOiBQcm92aWRlIGEgbWV0aG9kIHRvIGFsbG93IHNlbGVjdGluZyB3aGljaCBk YXRhc2V0cyBhcmUgdXNlZAogZm9yIGRhdGFzZXQgaW4gdHJhbnMuaGlzdG9yeS5hY3RpdmVfZGF0 YXNldHM6Ci0gICAgc2h1dGlsLmNvcHkoIGRhdGFzZXQuZmlsZV9uYW1lLCBvcy5wYXRoLmpvaW4o IHRlbXBfZGlyLCBzdHIoIGhkYS5oaWQgKT0KICkgKQorICAgIHNodXRpbC5jb3B5KCBkYXRhc2V0 LmZpbGVfbmFtZSwgb3MucGF0aC5qb2luKCB0ZW1wX2Rpciwgc3RyKCBkYXRhc2V0Lmg9CmlkICkg KSApCj0yMAo9MjAKIGNvbmZfZmlsZSA9M0QgewoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxh eHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wNjdmZWRhZjA5NTQvCkNoYW5nZXNldDogICAwNjdm ZWRhZjA5NTQKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIy OjM4OjAxKzAwOjAwClN1bW1hcnk6ICAgICBGb3VuZCB0aGUgQVBJIGtleQpBZmZlY3RlZCAjOiAg MSBmaWxlCgpkaWZmIC1yIDg1OWIwMWM0MjA5N2Q1OWNhZmZkZDM0Y2QyZWQyNDExYzA2ZmNjODIg LXIgMDY3ZmVkYWYwOTU0MTM3MGNiOGIzMjQ9CjY3ZDUxOTk0NDQxMWM4MWNlIGNvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaT0KcHl0aG9uLm1h a28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTY2LDcgKzY2LDcgQEAK IGNvbmZfZmlsZSA9M0QgewogICAgICdoaXN0b3J5X2lkJzogaGlzdG9yeV9pZCwKICAgICAnZ2Fs YXh5X3VybCc6IE5vbmUsCi0gICAgJ2FwaV9rZXknOiBOb25lLAorICAgICdhcGlfa2V5JzogdHJh bnMudXNlci5hcGlfa2V5c1swXS5rZXksCiB9CiB3aXRoIG9wZW4oIG9zLnBhdGguam9pbiggdGVt cF9kaXIsICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYW5kbGU6CiAgICAgaGFuZGxlLndyaXRl KCB5YW1sLmR1bXAoY29uZl9maWxlKSApCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9n YWxheHktY2VudHJhbC9jb21taXRzL2IyN2Y5YmE5YzY3NC8KQ2hhbmdlc2V0OiAgIGIyN2Y5YmE5 YzY3NApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6 MDErMDA6MDAKU3VtbWFyeTogICAgIExvY2F0ZWQgZnVsbCBhcHBsaWNhdGlvbiBVUkwKVGhpcyBz aG91bGQgbm93IHdvcmsgcHJvcGVybHkgZm9yIGdhbGF4eSBpbnN0YW5jZXMgaG9zdGVkIG9uIGRp ZmZlcmVudCBwb3J0PQpzLCBvbiBkaWZmZXJlbnQKcHJveHktcHJlZml4ZXMsIG9uIGRpZmZlcmVu dCBmcWRucywgZXRjLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDA2N2ZlZGFmMDk1NDEz NzBjYjhiMzI0NjdkNTE5OTQ0NDExYzgxY2UgLXIgYjI3ZjliYTljNjc0N2I5NzQxODkzNmI9CmU0 OGMwOGNkM2FiN2ZmNWQ2IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5 dGhvbi90ZW1wbGF0ZXMvaT0KcHl0aG9uLm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm1ha28KQEAgLTY1LDcgKzY1LDcgQEAKPTIwCiBjb25mX2ZpbGUgPTNEIHsKICAgICAnaGlz dG9yeV9pZCc6IGhpc3RvcnlfaWQsCi0gICAgJ2dhbGF4eV91cmwnOiBOb25lLAorICAgICdnYWxh eHlfdXJsJzogcmVxdWVzdC5hcHBsaWNhdGlvbl91cmwsCiAgICAgJ2FwaV9rZXknOiB0cmFucy51 c2VyLmFwaV9rZXlzWzBdLmtleSwKIH0KIHdpdGggb3Blbiggb3MucGF0aC5qb2luKCB0ZW1wX2Rp ciwgJ2NvbmYueWFtbCcgKSwgJ3diJyApIGFzIGhhbmRsZToKCgpodHRwczovL2JpdGJ1Y2tldC5v cmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvODM0ZDM3ZWEzYWExLwpDaGFuZ2VzZXQ6 ICAgODM0ZDM3ZWEzYWExClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0x MC0xOCAyMjozODowMiswMDowMApTdW1tYXJ5OiAgICAgRXhjaGFuZ2VkIGxvY2FsaG9zdCBmb3Ig cHJvcGVyIGhvc3RuYW1lCmByZXF1ZXN0YCBwcm92aWRlcyBhIGBob3N0X3VybGAgbGlrZSAiZnFk bjpwb3J0IiBmcm9tIHdoaWNoIHdlIGNhbiBleHRyYWN0ID0KdGhlIEZRRE4gdGhhdCB0aGlzIHNl cnZlcgp3YXMgYWNjZXNzZWQgYXQuIFRoaXMgaXMgaW1wb3J0YW50IHNvIHRoYXQgd2UgYXJlIGFj Y2Vzc2luZyB0aGUgSVB5TkIgb24gdGg9CmUgY29ycmVjdCBob3N0LgpBZmZlY3RlZCAjOiAgMSBm aWxlCgpkaWZmIC1yIGIyN2Y5YmE5YzY3NDdiOTc0MTg5MzZiZTQ4YzA4Y2QzYWI3ZmY1ZDYgLXIg ODM0ZDM3ZWEzYWExYzMyMGEyZTI3ZWQ9CjQ3NDU4OTg0ZWViZDhmNDA1IGNvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaT0KcHl0aG9uLm1ha28K LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBs YXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTU1LDYgKzU1LDEwIEBACiB9 IiIiICUgKG5vdGVib29rX2lkLCApCj0yMAogUE9SVCA9M0QgNzc3NworSE9TVCA9M0QgcmVxdWVz dC5ob3N0CisjIFN0cmlwIG91dCBwb3J0LCB3ZSBqdXN0IHdhbnQgdGhlIFVSTCB0aGlzIGdhbGF4 eSBzZXJ2ZXIgd2FzIGFjY2Vzc2VkIGF0LgoraWYgJzonIGluIEhPU1Q6CisgICAgSE9TVCA9M0Qg SE9TVFswOkhPU1QuaW5kZXgoJzonKV0KPTIwCiB0ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRo KCB0ZW1wZmlsZS5ta2R0ZW1wKCkgKQo9MjAKQEAgLTg4LDggKzkyLDggQEAKPTIwCj0yMAogPGJv ZHk+Ci0gICAgPG9iamVjdCBkYXRhPTNEImh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JUfS9ub3RlYm9v a3MvaXB5dGhvbl9nYWxheHlfbm90ZT0KYm9vay5pcHluYiIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRo PTNEIjEwMCUiPgotICAgICAgICA8ZW1iZWQgc3JjPTNEImh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JU fS9ub3RlYm9va3MvaXB5dGhvbl9nYWxheHlfbm89CnRlYm9vay5pcHluYiIgaGVpZ2h0PTNEIjEw MCUiIHdpZHRoPTNEIjEwMCUiPgorICAgIDxvYmplY3QgZGF0YT0zRCJodHRwOi8vJHtIT1NUfTok e1BPUlR9L25vdGVib29rcy9pcHl0aG9uX2dhbGF4eV9ub3RlYm89Cm9rLmlweW5iIiBoZWlnaHQ9 M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSI+CisgICAgICAgIDxlbWJlZCBzcmM9M0QiaHR0cDovLyR7 SE9TVH06JHtQT1JUfS9ub3RlYm9va3MvaXB5dGhvbl9nYWxheHlfbm90ZT0KYm9vay5pcHluYiIg aGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiPjwvZW1iZWQ+PC9vYmplY3Q+PC9ib2R5PgoK Cmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy80YzMy NGNkNzQ1YjAvCkNoYW5nZXNldDogICA0YzMyNGNkNzQ1YjAKVXNlcjogICAgICAgIEJqb2Vybkdy dWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAyKzAwOjAwClN1bW1hcnk6ICAg ICByZXN0cnVjdHVyZSByZXBvc2l0b3J5IGxheW91dApBZmZlY3RlZCAjOiAgNCBmaWxlcwoKZGlm ZiAtciA4MzRkMzdlYTNhYTFjMzIwYTJlMjdlZDQ3NDU4OTg0ZWViZDhmNDA1IC1yIDRjMzI0Y2Q3 NDViMDFjYzkyY2RjMDM3PQozN2FhNGFiMzhhZDY3YTE1YyBjb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi54bWwKLS0tIC9kZXYvbnVsbAorKysgYi9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi54bWwKQEAgLTAs MCArMSwxNSBAQAorPD94bWwgdmVyc2lvbj0zRCIxLjAiIGVuY29kaW5nPTNEIlVURi04Ij8+Cis8 IURPQ1RZUEUgdmlzdWFsaXphdGlvbiBTWVNURU0gIi4uLy4uL3Zpc3VhbGl6YXRpb24uZHRkIj4K Kzx2aXN1YWxpemF0aW9uIG5hbWU9M0QiSVB5dGhvbiI+CisgICAgPGRhdGFfc291cmNlcz4KKyAg ICAgICAgPGRhdGFfc291cmNlPgorICAgICAgICAgICAgPG1vZGVsX2NsYXNzPkhpc3RvcnlEYXRh c2V0QXNzb2NpYXRpb248L21vZGVsX2NsYXNzPgorICAgICAgICAgICAgPHRlc3QgdHlwZT0zRCJp c2luc3RhbmNlIiB0ZXN0X2F0dHI9M0QiZGF0YXR5cGUiIHJlc3VsdF90eXBlPQo9M0QiZGF0YXR5 cGUiPnRhYnVsYXIuVGFidWxhcjwvdGVzdD4KKyAgICAgICAgICAgIDx0b19wYXJhbSBwYXJhbV9h dHRyPTNEImlkIj5kYXRhc2V0X2lkPC90b19wYXJhbT4KKyAgICAgICAgPC9kYXRhX3NvdXJjZT4K KyAgICA8L2RhdGFfc291cmNlcz4KKyAgICA8cGFyYW1zPgorICAgICAgICA8cGFyYW0gdHlwZT0z RCJkYXRhc2V0IiB2YXJfbmFtZV9pbl90ZW1wbGF0ZT0zRCJoZGEiIHJlcXVpcmVkPTNEInQ9CnJ1 ZSI+ZGF0YXNldF9pZDwvcGFyYW0+CisgICAgPC9wYXJhbXM+CisgICAgPHRlbXBsYXRlPmlweXRo b24ubWFrbzwvdGVtcGxhdGU+Cis8L3Zpc3VhbGl6YXRpb24+CgpkaWZmIC1yIDgzNGQzN2VhM2Fh MWMzMjBhMmUyN2VkNDc0NTg5ODRlZWJkOGY0MDUgLXIgNGMzMjRjZDc0NWIwMWNjOTJjZGMwMzc9 CjM3YWE0YWIzOGFkNjdhMTVjIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v aXB5dGhvbi9jb25maWcvaXB5dD0KaG9uLnhtbAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL2lweXRob24vY29uZmlnL2lweXRob24ueG1sCisrKyAvZGV2L251bGwK QEAgLTEsMTUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0zRCIxLjAiIGVuY29kaW5nPTNEIlVURi04 Ij8+Ci08IURPQ1RZUEUgdmlzdWFsaXphdGlvbiBTWVNURU0gIi4uLy4uL3Zpc3VhbGl6YXRpb24u ZHRkIj4KLTx2aXN1YWxpemF0aW9uIG5hbWU9M0QiSVB5dGhvbiI+Ci0gICAgPGRhdGFfc291cmNl cz4KLSAgICAgICAgPGRhdGFfc291cmNlPgotICAgICAgICAgICAgPG1vZGVsX2NsYXNzPkhpc3Rv cnlEYXRhc2V0QXNzb2NpYXRpb248L21vZGVsX2NsYXNzPgotICAgICAgICAgICAgPHRlc3QgdHlw ZT0zRCJpc2luc3RhbmNlIiB0ZXN0X2F0dHI9M0QiZGF0YXR5cGUiIHJlc3VsdF90eXBlPQo9M0Qi ZGF0YXR5cGUiPnRhYnVsYXIuVGFidWxhcjwvdGVzdD4KLSAgICAgICAgICAgIDx0b19wYXJhbSBw YXJhbV9hdHRyPTNEImlkIj5kYXRhc2V0X2lkPC90b19wYXJhbT4KLSAgICAgICAgPC9kYXRhX3Nv dXJjZT4KLSAgICA8L2RhdGFfc291cmNlcz4KLSAgICA8cGFyYW1zPgotICAgICAgICA8cGFyYW0g dHlwZT0zRCJkYXRhc2V0IiB2YXJfbmFtZV9pbl90ZW1wbGF0ZT0zRCJoZGEiIHJlcXVpcmVkPTNE InQ9CnJ1ZSI+ZGF0YXNldF9pZDwvcGFyYW0+Ci0gICAgPC9wYXJhbXM+Ci0gICAgPHRlbXBsYXRl PmlweXRob24ubWFrbzwvdGVtcGxhdGU+Ci08L3Zpc3VhbGl6YXRpb24+CgpkaWZmIC1yIDgzNGQz N2VhM2FhMWMzMjBhMmUyN2VkNDc0NTg5ODRlZWJkOGY0MDUgLXIgNGMzMjRjZDc0NWIwMWNjOTJj ZGMwMzc9CjM3YWE0YWIzOGFkNjdhMTVjIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vaXB5dGhvbi90ZW1wbGF0ZXMvaT0KcHl0aG9uLm1ha28KLS0tIGEvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28K KysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotPCUKLWltcG9ydCBvcwotaW1wb3J0IHN5 cwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGltZQotaW1wb3J0IHN1 YnByb2Nlc3MKLWltcG9ydCB5YW1sCi1pbXBvcnQgcmFuZG9tCi0KLQotaGlzdG9yeV9pZCA9M0Qg dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkICkKLWRhdGFzZXRfaWQg PTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkKLSMgRW5zdXJlIGdlbmVyYXRp b24gb2Ygbm90ZWJvb2sgaWQgaXMgZGV0ZXJtaW5pc3RpYyBmb3IgdGhlIGRhdGFzZXQuIFJlcGxh PQpjZSB3aXRoIGhpc3RvcnkgaWQKLSMgd2hlbmV2ZXIgd2UgZmlndXJlIG91dCBob3cgdG8gYWNj ZXNzIHRoYXQuCi1yYW5kb20uc2VlZCggaGlzdG9yeV9pZCApCi1ub3RlYm9va19pZCA9M0QgJycu am9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmJykgZm9yIF8gaW4gcmFuZ2UoNj0K NCkpCi1lbXB0eV9uYiA9M0QgIiIiewotICJtZXRhZGF0YSI6IHsKLSAgIm5hbWUiOiAiIiwKLSAg InNpZ25hdHVyZSI6ICJzaGEyNTY6JXMiCi0gfSwKLSAibmJmb3JtYXQiOiAzLAotICJuYmZvcm1h dF9taW5vciI6IDAsCi0gIndvcmtzaGVldHMiOiBbCi0gIHsKLSAgICJjZWxscyI6IFsKLSAgICB7 Ci0gICAgICJjZWxsX3R5cGUiOiAiaGVhZGluZyIsCi0gICAgICJsZXZlbCI6IDIsCi0gICAgICJt ZXRhZGF0YSI6IHt9LAotICAgICAic291cmNlIjogWwotICAgICAgIldlbGNvbWUgdG8gdGhlIGlu dGVyYWN0aXZlIEdhbGF4eSBJUHl0aG9uIE5vdGVib29rLiIKLSAgICAgXQotICAgIH0sCi0gICAg ewotICAgICAiY2VsbF90eXBlIjogIm1hcmtkb3duIiwKLSAgICAgIm1ldGFkYXRhIjoge30sCi0g ICAgICJzb3VyY2UiOiBbCi0gICAgICAiWW91IGNhbiBhY2Nlc3MgeW91ciBkYXRhIHZpYSB0aGUg ZGF0YXNldCBudW1iZXIuIEZvciBleGFtcGxlOiBoYW5kbD0KZSA9M0Qgb3BlbignNDInLCAncicp IgotICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICJjZWxsX3R5cGUiOiAiY29kZSIsCi0gICAg ICJjb2xsYXBzZWQiOiBmYWxzZSwKLSAgICAgImlucHV0IjogW10sCi0gICAgICJsYW5ndWFnZSI6 ICJweXRob24iLAotICAgICAibWV0YWRhdGEiOiB7fSwKLSAgICAgIm91dHB1dHMiOiBbXQotICAg IH0KLSAgIF0sCi0gICAibWV0YWRhdGEiOiB7fQotICB9Ci0gXQotfSIiIiAlIChub3RlYm9va19p ZCwgKQotCi1QT1JUID0zRCA3Nzc3Ci1IT1NUID0zRCByZXF1ZXN0Lmhvc3QKLSMgU3RyaXAgb3V0 IHBvcnQsIHdlIGp1c3Qgd2FudCB0aGUgVVJMIHRoaXMgZ2FsYXh5IHNlcnZlciB3YXMgYWNjZXNz ZWQgYXQuCi1pZiAnOicgaW4gSE9TVDoKLSAgICBIT1NUID0zRCBIT1NUWzA6SE9TVC5pbmRleCgn OicpXQotCi10ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKCB0ZW1wZmlsZS5ta2R0ZW1wKCkg KQotCi0jIFRPRE86IFByb3ZpZGUgYSBtZXRob2QgdG8gYWxsb3cgc2VsZWN0aW5nIHdoaWNoIGRh dGFzZXRzIGFyZSB1c2VkCi1mb3IgZGF0YXNldCBpbiB0cmFucy5oaXN0b3J5LmFjdGl2ZV9kYXRh c2V0czoKLSAgICBzaHV0aWwuY29weSggZGF0YXNldC5maWxlX25hbWUsIG9zLnBhdGguam9pbigg dGVtcF9kaXIsIHN0ciggZGF0YXNldC5oPQppZCApICkgKQotCi0KLWNvbmZfZmlsZSA9M0Qgewot ICAgICdoaXN0b3J5X2lkJzogaGlzdG9yeV9pZCwKLSAgICAnZ2FsYXh5X3VybCc6IHJlcXVlc3Qu YXBwbGljYXRpb25fdXJsLAotICAgICdhcGlfa2V5JzogdHJhbnMudXNlci5hcGlfa2V5c1swXS5r ZXksCi19Ci13aXRoIG9wZW4oIG9zLnBhdGguam9pbiggdGVtcF9kaXIsICdjb25mLnlhbWwnICks ICd3YicgKSBhcyBoYW5kbGU6Ci0gICAgaGFuZGxlLndyaXRlKCB5YW1sLmR1bXAoY29uZl9maWxl KSApCi0KLWVtcHR5X25iX3BhdGggPTNEIG9zLnBhdGguam9pbih0ZW1wX2RpciwgJ2lweXRob25f Z2FsYXh5X25vdGVib29rLmlweW5iJykKLXdpdGggb3BlbiggZW1wdHlfbmJfcGF0aCwgJ3crJyAp IGFzIGhhbmRsZToKLSAgICBoYW5kbGUud3JpdGUoIGVtcHR5X25iICkKLQotZG9ja2VyX2NtZCA9 M0QgJ2RvY2tlciBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOjY3ODkgLXYgIiVzOi9p bXBvcnQ9Ci8iIGJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vaycgJSAoUE9SVCwgdGVt cF9kaXIpCi0KLXN1YnByb2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCi0KLSMg V2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBJbWFnZSBhbmQgSVB5dGhvbiBpbiBsb2FkZWQKLSMg VE9ETzogVGhpcyBjYW4gYmUgZW5oYW5jZWQgbGF0ZXIsIHdpdGggc29tZSBKUyBzcGlubmluZyBp ZiBuZWVkZWQuCi10aW1lLnNsZWVwKDEpCi0KLSU+Ci08aHRtbD4KLQotCi08Ym9keT4KLSAgICA8 b2JqZWN0IGRhdGE9M0QiaHR0cDovLyR7SE9TVH06JHtQT1JUfS9ub3RlYm9va3MvaXB5dGhvbl9n YWxheHlfbm90ZWJvPQpvay5pcHluYiIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiPgot ICAgICAgICA8ZW1iZWQgc3JjPTNEImh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0vbm90ZWJvb2tzL2lw eXRob25fZ2FsYXh5X25vdGU9CmJvb2suaXB5bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIx MDAlIj4KLSAgICAgICAgPC9lbWJlZD4KLSAgICA8L29iamVjdD4KLTwvYm9keT4KLTwvaHRtbD4K CmRpZmYgLXIgODM0ZDM3ZWEzYWExYzMyMGEyZTI3ZWQ0NzQ1ODk4NGVlYmQ4ZjQwNSAtciA0YzMy NGNkNzQ1YjAxY2M5MmNkYzAzNz0KMzdhYTRhYjM4YWQ2N2ExNWMgY29uZmlnL3BsdWdpbnMvdmlz dWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIC9kZXYvbnVs bAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm1ha28KQEAgLTAsMCArMSwxMDAgQEAKKzwlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMK K2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHRpbWUKK2ltcG9ydCBzdWJw cm9jZXNzCitpbXBvcnQgeWFtbAoraW1wb3J0IHJhbmRvbQorCisKK2hpc3RvcnlfaWQgPTNEIHRy YW5zLnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCitkYXRhc2V0X2lkID0z RCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5pZCApCisjIEVuc3VyZSBnZW5lcmF0aW9u IG9mIG5vdGVib29rIGlkIGlzIGRldGVybWluaXN0aWMgZm9yIHRoZSBkYXRhc2V0LiBSZXBsYT0K Y2Ugd2l0aCBoaXN0b3J5IGlkCisjIHdoZW5ldmVyIHdlIGZpZ3VyZSBvdXQgaG93IHRvIGFjY2Vz cyB0aGF0LgorcmFuZG9tLnNlZWQoIGhpc3RvcnlfaWQgKQorbm90ZWJvb2tfaWQgPTNEICcnLmpv aW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2RlZicpIGZvciBfIGluIHJhbmdlKDY9CjQp KQorZW1wdHlfbmIgPTNEICIiInsKKyAibWV0YWRhdGEiOiB7CisgICJuYW1lIjogIiIsCisgICJz aWduYXR1cmUiOiAic2hhMjU2OiVzIgorIH0sCisgIm5iZm9ybWF0IjogMywKKyAibmJmb3JtYXRf bWlub3IiOiAwLAorICJ3b3Jrc2hlZXRzIjogWworICB7CisgICAiY2VsbHMiOiBbCisgICAgewor ICAgICAiY2VsbF90eXBlIjogImhlYWRpbmciLAorICAgICAibGV2ZWwiOiAyLAorICAgICAibWV0 YWRhdGEiOiB7fSwKKyAgICAgInNvdXJjZSI6IFsKKyAgICAgICJXZWxjb21lIHRvIHRoZSBpbnRl cmFjdGl2ZSBHYWxheHkgSVB5dGhvbiBOb3RlYm9vay4iCisgICAgIF0KKyAgICB9LAorICAgIHsK KyAgICAgImNlbGxfdHlwZSI6ICJtYXJrZG93biIsCisgICAgICJtZXRhZGF0YSI6IHt9LAorICAg ICAic291cmNlIjogWworICAgICAgIllvdSBjYW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhlIGRh dGFzZXQgbnVtYmVyLiBGb3IgZXhhbXBsZTogaGFuZGw9CmUgPTNEIG9wZW4oJzQyJywgJ3InKSIK KyAgICAgXQorICAgIH0sCisgICAgeworICAgICAiY2VsbF90eXBlIjogImNvZGUiLAorICAgICAi Y29sbGFwc2VkIjogZmFsc2UsCisgICAgICJpbnB1dCI6IFtdLAorICAgICAibGFuZ3VhZ2UiOiAi cHl0aG9uIiwKKyAgICAgIm1ldGFkYXRhIjoge30sCisgICAgICJvdXRwdXRzIjogW10KKyAgICB9 CisgICBdLAorICAgIm1ldGFkYXRhIjoge30KKyAgfQorIF0KK30iIiIgJSAobm90ZWJvb2tfaWQs ICkKKworUE9SVCA9M0QgNzc3NworSE9TVCA9M0QgcmVxdWVzdC5ob3N0CisjIFN0cmlwIG91dCBw b3J0LCB3ZSBqdXN0IHdhbnQgdGhlIFVSTCB0aGlzIGdhbGF4eSBzZXJ2ZXIgd2FzIGFjY2Vzc2Vk IGF0LgoraWYgJzonIGluIEhPU1Q6CisgICAgSE9TVCA9M0QgSE9TVFswOkhPU1QuaW5kZXgoJzon KV0KKwordGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVtcCgpICkK KworIyBUT0RPOiBQcm92aWRlIGEgbWV0aG9kIHRvIGFsbG93IHNlbGVjdGluZyB3aGljaCBkYXRh c2V0cyBhcmUgdXNlZAorZm9yIGRhdGFzZXQgaW4gdHJhbnMuaGlzdG9yeS5hY3RpdmVfZGF0YXNl dHM6CisgICAgc2h1dGlsLmNvcHkoIGRhdGFzZXQuZmlsZV9uYW1lLCBvcy5wYXRoLmpvaW4oIHRl bXBfZGlyLCBzdHIoIGRhdGFzZXQuaD0KaWQgKSApICkKKworCitjb25mX2ZpbGUgPTNEIHsKKyAg ICAnaGlzdG9yeV9pZCc6IGhpc3RvcnlfaWQsCisgICAgJ2dhbGF4eV91cmwnOiByZXF1ZXN0LmFw cGxpY2F0aW9uX3VybCwKKyAgICAnYXBpX2tleSc6IHRyYW5zLnVzZXIuYXBpX2tleXNbMF0ua2V5 LAorfQord2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55YW1sJyApLCAn d2InICkgYXMgaGFuZGxlOgorICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNvbmZfZmlsZSkg KQorCitlbXB0eV9uYl9wYXRoID0zRCBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICdpcHl0aG9uX2dh bGF4eV9ub3RlYm9vay5pcHluYicpCit3aXRoIG9wZW4oIGVtcHR5X25iX3BhdGgsICd3KycgKSBh cyBoYW5kbGU6CisgICAgaGFuZGxlLndyaXRlKCBlbXB0eV9uYiApCisKK2RvY2tlcl9jbWQgPTNE ICdkb2NrZXIgcnVuIC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczo2Nzg5IC12ICIlczovaW1w b3J0PQovIiBiZ3J1ZW5pbmcvZG9ja2VyLWlweXRob24tbm90ZWJvb2snICUgKFBPUlQsIHRlbXBf ZGlyKQorCitzdWJwcm9jZXNzLmNhbGwoZG9ja2VyX2NtZCwgc2hlbGw9M0RUcnVlKQorCisjIFdl IG5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgSW1hZ2UgYW5kIElQeXRob24gaW4gbG9hZGVkCisjIFRP RE86IFRoaXMgY2FuIGJlIGVuaGFuY2VkIGxhdGVyLCB3aXRoIHNvbWUgSlMgc3Bpbm5pbmcgaWYg bmVlZGVkLgordGltZS5zbGVlcCgxKQorCislPgorPGh0bWw+CisKKworPGJvZHk+CisgICAgPG9i amVjdCBkYXRhPTNEImh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0vbm90ZWJvb2tzL2lweXRob25fZ2Fs YXh5X25vdGVibz0Kb2suaXB5bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj4KKyAg ICAgICAgPGVtYmVkIHNyYz0zRCJodHRwOi8vJHtIT1NUfToke1BPUlR9L25vdGVib29rcy9pcHl0 aG9uX2dhbGF4eV9ub3RlPQpib29rLmlweW5iIiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAw JSI+CisgICAgICAgIDwvZW1iZWQ+CisgICAgPC9vYmplY3Q+Cis8L2JvZHk+Cis8L2h0bWw+CgoK aHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2EyYjQ2 NDA1N2RiNS8KQ2hhbmdlc2V0OiAgIGEyYjQ2NDA1N2RiNQpVc2VyOiAgICAgICAgQmpvZXJuR3J1 ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAg IHVwZGF0ZSByZWFkbWUgZmlsZQpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRjMzI0Y2Q3 NDViMDFjYzkyY2RjMDM3MzdhYTRhYjM4YWQ2N2ExNWMgLXIgYTJiNDY0MDU3ZGI1NTkzYTY1Nzlm Zjg9Cjk3YWU1NGI1NTkyYTEyODk0IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vUkVBRE1FLm1kCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v UkVBRE1FLm1kCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVB RE1FLm1kCkBAIC0xMyw1ICsxMywxMCBAQAogSW5zdGFsbGF0aW9uCiA9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKPTIwCi1DcG95IHRoZSBJUHl0aG9uIGZvbGRlciBpbiB5b3Vy IDxHQUxBWFlfUk9PVD4vY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbj0KcyBmb2xkZXIgYW5k IHJlc3RhcnQgR2FsYXh5LgotVGhlIElQeXRob24gVmlzdWFsaXNhdGlvbiBPcHRpb24gc2hvdWxk IGJlIHZpc2libGUgbmV4dCB0byB0aGUgdXN1YWwgQ2hhcnQ9CnMgb3IgVHJhY2tzdGVyIE9wdGlv bnMgaW4geW91ciBWaXN1YWxpc2F0aW9uIG1lbnVlLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKK0Nwb3kgdGhlIHRlbXBsYXRlIGFuZCBjb25maWcgZm9sZGVyIGluIHlvdXIgPEdBTEFYWV9S T09UPi9jb25maWcvcGx1Z2lucy92PQppc3VhbGl6YXRpb25zL2lweXRob24gZm9sZGVyIGFuZCBy ZXN0YXJ0IEdhbGF4eS4KKworb3IKKworYGBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2Jn cnVlbmluZy9nYWxheHktaXB5dGhvbi5naXQgY29uZmlnL3BsdWdpbnM9Ci92aXovaXB5dGhvbmBg CisKK1RoZSBJUHl0aG9uIFZpc3VhbGlzYXRpb24gT3B0aW9uIHNob3VsZCBiZSB2aXNpYmxlIG5l eHQgdG8gdGhlIHVzdWFsIENoYXJ0PQpzIG9yIFRyYWNrc3RlciBPcHRpb25zIGluIHlvdXIgVmlz dWFsaXNhdGlvbiBtZW51ZS4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1j ZW50cmFsL2NvbW1pdHMvZmM0OGUyYzJhZjhiLwpDaGFuZ2VzZXQ6ICAgZmM0OGUyYzJhZjhiClVz ZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODow MyswMDowMApTdW1tYXJ5OiAgICAgYWRkIHJhbmRvbSBwb3J0IGFzc2lnbm1lbnQgZm9yIGRpZmZl cmVudCBkb2NrZXIgY29udGFpbmVycywgZm89CnIgbXVsdGlwbGUgdXNlcnMKQWZmZWN0ZWQgIzog IDEgZmlsZQoKZGlmZiAtciBhMmI0NjQwNTdkYjU1OTNhNjU3OWZmODk3YWU1NGI1NTkyYTEyODk0 IC1yIGZjNDhlMmMyYWY4YjUxMjU2NjBmM2YzPQo4NDEyODY3YzgwYjE3ZDVhNCBjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0g YS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9u Lm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaXB5dGhvbi5tYWtvCkBAIC01NCw3ICs1NCwxOCBAQAogIF0KIH0iIiIgJSAobm90ZWJvb2tf aWQsICkKPTIwCi1QT1JUID0zRCA3Nzc3CisKKyMgRmluZCBhbGwgcG9ydHMgdGhhdCBhcmUgYWxy ZWF4eSBvY2N1cGllZAorbmV0c3RhdF9jbWQgPTNEICJuZXRzdGF0IC10bmFBaW5ldCB8IGF3ayAn TlIgPj0zRCAzIHsgcHJpbnQgJDQgfScgfCBjdXQgLWQ9CjogLWYyIHwgc29ydCAtdW4iCituZXRz dGF0X291dCA9M0Qgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIHNobGV4LnNwbGl0KCBuZXRzdGF0 X2NtZCApKQorb2NjdXBpZWRfcG9ydHMgPTNEIFtwb3J0IGZvciBwb3J0IGluIG5ldHN0YXRfb3V0 LnNwbGl0KCdcbicpIGlmIHBvcnQuaXNkaWc9Cml0KCldCisKKyMgR2VuZXJhdGUgcmFuZG9tIGZy ZWUgcG9ydCBudW1iZXIgZm9yIG91ciBkb2NrZXIgY29udGFpbmVyCit3aGlsZSBUcnVlOgorICAg IFBPUlQgPTNEIHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAsMTUwMDApCisgICAgaWYgUE9SVFMgbm90 IGluIG9jY3VwaWVkX3BvcnRzOgorICAgICAgICBicmVhaworCiBIT1NUID0zRCByZXF1ZXN0Lmhv c3QKICMgU3RyaXAgb3V0IHBvcnQsIHdlIGp1c3Qgd2FudCB0aGUgVVJMIHRoaXMgZ2FsYXh5IHNl cnZlciB3YXMgYWNjZXNzZWQgYXQuCiBpZiAnOicgaW4gSE9TVDoKCgpodHRwczovL2JpdGJ1Y2tl dC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMGFjMWJiOGZmM2IxLwpDaGFuZ2Vz ZXQ6ICAgMGFjMWJiOGZmM2IxClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAg ICAgMjAxNC0xMC0xOCAyMjozODowMyswMDowMApTdW1tYXJ5OiAgICAgUmVtb3ZlIGNvcHlpbmcg b2YgZGF0YXRzZXRzIGZyb20gR2FsYXh5IHRvIGRvY2tlci4gRnJvbSBub3cgb249CiwgZG9ja2Vy IGNhbiBmZXRjaCBkYXRhIGZyb20gZ2FsYXh5IG9uIGRlbWFuZC4KQWZmZWN0ZWQgIzogIDEgZmls ZQoKZGlmZiAtciBmYzQ4ZTJjMmFmOGI1MTI1NjYwZjNmMzg0MTI4NjdjODBiMTdkNWE0IC1yIDBh YzFiYjhmZjNiMTJiYWM0ODdkM2E0PQo1MzBkYjdjYzBmMzBjMjNmOSBjb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28K KysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5 dGhvbi5tYWtvCkBAIC03MywxMSArNzMsNiBAQAo9MjAKIHRlbXBfZGlyID0zRCBvcy5wYXRoLmFi c3BhdGgoIHRlbXBmaWxlLm1rZHRlbXAoKSApCj0yMAotIyBUT0RPOiBQcm92aWRlIGEgbWV0aG9k IHRvIGFsbG93IHNlbGVjdGluZyB3aGljaCBkYXRhc2V0cyBhcmUgdXNlZAotZm9yIGRhdGFzZXQg aW4gdHJhbnMuaGlzdG9yeS5hY3RpdmVfZGF0YXNldHM6Ci0gICAgc2h1dGlsLmNvcHkoIGRhdGFz ZXQuZmlsZV9uYW1lLCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCBzdHIoIGRhdGFzZXQuaD0KaWQg KSApICkKLQotCiBjb25mX2ZpbGUgPTNEIHsKICAgICAnaGlzdG9yeV9pZCc6IGhpc3RvcnlfaWQs CiAgICAgJ2dhbGF4eV91cmwnOiByZXF1ZXN0LmFwcGxpY2F0aW9uX3VybCwKCgpodHRwczovL2Jp dGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMTg4YTJhYWRhN2I4LwpD aGFuZ2VzZXQ6ICAgMTg4YTJhYWRhN2I4ClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRl OiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowMyswMDowMApTdW1tYXJ5OiAgICAgU3R5bGUgZml4 ZXMKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAwYWMxYmI4ZmYzYjEyYmFjNDg3ZDNhNDUz MGRiN2NjMGYzMGMyM2Y5IC1yIDE4OGEyYWFkYTdiODRmMThjODAwMDgzPQo5NzcyNjMzNThiZDAz OTAyNiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC04LDcgKzgsNiBAQAogaW1wb3J0IHlh bWwKIGltcG9ydCByYW5kb20KPTIwCi0KIGhpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVu Y29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCiBkYXRhc2V0X2lkID0zRCB0cmFucy5zZWN1cml0 eS5lbmNvZGVfaWQoIGhkYS5pZCApCiAjIEVuc3VyZSBnZW5lcmF0aW9uIG9mIG5vdGVib29rIGlk IGlzIGRldGVybWluaXN0aWMgZm9yIHRoZSBkYXRhc2V0LiBSZXBsYT0KY2Ugd2l0aCBoaXN0b3J5 IGlkCkBAIC04Niw3ICs4NSw2IEBACiAgICAgaGFuZGxlLndyaXRlKCBlbXB0eV9uYiApCj0yMAog ZG9ja2VyX2NtZCA9M0QgJ2RvY2tlciBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOjY3 ODkgLXYgIiVzOi9pbXBvcnQ9Ci8iIGJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vaycg JSAoUE9SVCwgdGVtcF9kaXIpCi0KIHN1YnByb2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0z RFRydWUpCj0yMAogIyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIEltYWdlIGFuZCBJUHl0aG9u IGluIGxvYWRlZAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy80MThhNWE1YWMwMGMvCkNoYW5nZXNldDogICA0MThhNWE1YWMwMGMKVXNlcjogICAg ICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1h cnk6ICAgICBXb3JraW5nIGxvYWQgZnJvbSBleGlzdGluZyBub3RlYm9va3MgaW4gaGlzdG9yeQpB ZmZlY3RlZCAjOiAgMiBmaWxlcwoKZGlmZiAtciAxODhhMmFhZGE3Yjg0ZjE4YzgwMDA4Mzk3NzI2 MzM1OGJkMDM5MDI2IC1yIDQxOGE1YTVhYzAwY2I1ZWI3M2E0ZTM1PQphYTZkMWU3MzcwNTRlYzc3 NiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi54bWwK LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9jb25mL2lweXRob24u eG1sCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vY29uZi9pcHl0 aG9uLnhtbApAQCAtNSw2ICs1LDcgQEAKICAgICAgICAgPGRhdGFfc291cmNlPjxtb2RlbF9jbGFz cz5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uPC9tb2RlbF9jbGFzcz48PQp0ZXN0IHR5cGU9M0Qi aXNpbnN0YW5jZSIgdGVzdF9hdHRyPTNEImRhdGF0eXBlIiByZXN1bHRfdHlwZT0zRCJkYXRhdHlw ZSI+dGE9CmJ1bGFyLlRhYnVsYXI8L3Rlc3Q+CisgICAgICAgICAgICA8dGVzdCB0eXBlPTNEImlz aW5zdGFuY2UiIHRlc3RfYXR0cj0zRCJkYXRhdHlwZSIgcmVzdWx0X3R5cGU9Cj0zRCJkYXRhdHlw ZSI+ZGF0YS5UZXh0PC90ZXN0Pjx0b19wYXJhbSBwYXJhbV9hdHRyPTNEImlkIj5kYXRhc2V0X2lk PC90b19wYT0KcmFtPjwvZGF0YV9zb3VyY2U+PC9kYXRhX3NvdXJjZXM+CgpkaWZmIC1yIDE4OGEy YWFkYTdiODRmMThjODAwMDgzOTc3MjYzMzU4YmQwMzkwMjYgLXIgNDE4YTVhNWFjMDBjYjVlYjcz YTRlMzU9CmFhNmQxZTczNzA1NGVjNzc2IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTgw LDkgKzgwLDE1IEBACiB3aXRoIG9wZW4oIG9zLnBhdGguam9pbiggdGVtcF9kaXIsICdjb25mLnlh bWwnICksICd3YicgKSBhcyBoYW5kbGU6CiAgICAgaGFuZGxlLndyaXRlKCB5YW1sLmR1bXAoY29u Zl9maWxlKSApCj0yMAorIyBUT0RPOiBJbXBsZW1lbnQgcHJvcGVyIElQeU5CIGRhdGF0eXBlIGF0 b3AgYSBwcm9wZXIgSlNPTiBkYXRhdHlwZQorIyBGb3Igbm93IHdlIGFzc3VtZSBhbGwgInRleHQi IGRhdGF0eXBlcyBhcmUgaXB5bmJzLgorIyA8ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEImlweW5iIiB0 eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuZGF0YTpUZXh0IiBtaW1ldHk9CnBlPTNEImFwcGxpY2F0 aW9uL2pzb24iIHN1YmNsYXNzPTNEIlRydWUiIGRpc3BsYXlfaW5fdXBsb2FkPTNEIlRydWUiLz4K IGVtcHR5X25iX3BhdGggPTNEIG9zLnBhdGguam9pbih0ZW1wX2RpciwgJ2lweXRob25fZ2FsYXh5 X25vdGVib29rLmlweW5iJykKLXdpdGggb3BlbiggZW1wdHlfbmJfcGF0aCwgJ3crJyApIGFzIGhh bmRsZToKLSAgICBoYW5kbGUud3JpdGUoIGVtcHR5X25iICkKK2lmIGhkYS5kYXRhdHlwZS5fX2Ns YXNzX18uX19uYW1lX18gIT0zRCAiVGV4dCI6CisgICAgd2l0aCBvcGVuKCBlbXB0eV9uYl9wYXRo LCAndysnICkgYXMgaGFuZGxlOgorICAgICAgICBoYW5kbGUud3JpdGUoIGVtcHR5X25iICkKK2Vs c2U6CisgICAgc2h1dGlsLmNvcHkoIGhkYS5maWxlX25hbWUsIGVtcHR5X25iX3BhdGggKQo9MjAK IGRvY2tlcl9jbWQgPTNEICdkb2NrZXIgcnVuIC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczo2 Nzg5IC12ICIlczovaW1wb3J0PQovIiBiZ3J1ZW5pbmcvZG9ja2VyLWlweXRob24tbm90ZWJvb2sn ICUgKFBPUlQsIHRlbXBfZGlyKQogc3VicHJvY2Vzcy5jYWxsKGRvY2tlcl9jbWQsIHNoZWxsPTNE VHJ1ZSkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1p dHMvYTg2NzRhMWJkMjlhLwpDaGFuZ2VzZXQ6ICAgYTg2NzRhMWJkMjlhClVzZXI6ICAgICAgICBl cmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowMyswMDowMApTdW1tYXJ5OiAg ICAgUmV3cm90ZSBuZXRzdGF0IGNvbW1hbmRzIGFzIFBvcGVuIHBpcGVkIGNvbW1hbmRzClRoZSBv cmlnaW5hbCB2ZXJzaW9uIGFjdHVhbGx5IGZhaWxlZCBmb3IgbWUuIEkgYW0gbGVkIHRvIGJlbGll dmUgdGhhdCBhbGwgdD0KaGUgcGlwZXMgd2VyZSBiZWluZwpwYXNzZWQgdG8gbmV0c3RhdCBhcyBp dCBzYWlkICJJIGRvbid0IHVuZGVyc3RhbmQgdGhlIG9wdGlvbiAnOiciIHdoaWNoIGNhbWU9CiBm cm9tIHRoZSBjdXQgY29tbWFuZC4KQXQgdGhlIGNvc3Qgb2Ygc2ltcGxpY2l0eSwgdGhpcyBzaG91 bGQgZG8gd2hhdCB3ZSB3YW50IHByb3Blcmx5LiBBbHRlcm5hdGl2PQplbHkgd2UgY291bGQgbW92 ZSB0aGUKYXdrL2N1dC9zb3J0IGludG8gcHl0aG9uLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZm IC1yIDQxOGE1YTVhYzAwY2I1ZWI3M2E0ZTM1YWE2ZDFlNzM3MDU0ZWM3NzYgLXIgYTg2NzRhMWJk MjlhNzFhMDRkOWQxNzk9CmI0ODgyZjE0OTY4ZTI5NWZjIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1h a28KQEAgLTU0LDkgKzU0LDIyIEBACiB9IiIiICUgKG5vdGVib29rX2lkLCApCj0yMAo9MjAKLSMg RmluZCBhbGwgcG9ydHMgdGhhdCBhcmUgYWxyZWF4eSBvY2N1cGllZAotbmV0c3RhdF9jbWQgPTNE ICJuZXRzdGF0IC10bmFBaW5ldCB8IGF3ayAnTlIgPj0zRCAzIHsgcHJpbnQgJDQgfScgfCBjdXQg LWQ9CjogLWYyIHwgc29ydCAtdW4iCi1uZXRzdGF0X291dCA9M0Qgc3VicHJvY2Vzcy5jaGVja19v dXRwdXQoIHNobGV4LnNwbGl0KCBuZXRzdGF0X2NtZCApKQorIyBGaW5kIGFsbCBwb3J0cyB0aGF0 IGFyZSBhbHJlYWR5IG9jY3VwaWVkCitpbXBvcnQgc2hsZXgKK2NtZF9uZXRzdGF0ID0zRCBzaGxl eC5zcGxpdCgibmV0c3RhdCAtdG5hQWluZXQiKQorcDEgPTNEIHN1YnByb2Nlc3MuUG9wZW4oY21k X25ldHN0YXQsIHN0ZG91dD0zRHN1YnByb2Nlc3MuUElQRSkKKworY21kX2F3ayA9M0Qgc2hsZXgu c3BsaXQoImF3ayAnTlIgPj0zRCAzIHsgcHJpbnQgJDQgfSciKQorcDIgPTNEIHN1YnByb2Nlc3Mu UG9wZW4oY21kX2F3aywgc3RkaW49M0RwMS5zdGRvdXQsIHN0ZG91dD0zRHN1YnByb2Nlc3MuUEk9 ClBFKQorCitjbWRfY3V0ID0zRCBzaGxleC5zcGxpdCgiY3V0IC1kOiAtZjIiKQorcDMgPTNEIHN1 YnByb2Nlc3MuUG9wZW4oY21kX2N1dCwgc3RkaW49M0RwMi5zdGRvdXQsIHN0ZG91dD0zRHN1YnBy b2Nlc3MuUEk9ClBFKQorCitjbWRfc29ydCA9M0Qgc2hsZXguc3BsaXQoInNvcnQgLXVuIikKK3A0 ID0zRCBzdWJwcm9jZXNzLlBvcGVuKGNtZF9zb3J0LCBzdGRpbj0zRHAzLnN0ZG91dCwgc3Rkb3V0 PTNEc3VicHJvY2Vzcy5QPQpJUEUpCisKK25ldHN0YXRfb3V0ID0zRCBwNC5zdGRvdXQucmVhZCgp CisKIG9jY3VwaWVkX3BvcnRzID0zRCBbcG9ydCBmb3IgcG9ydCBpbiBuZXRzdGF0X291dC5zcGxp dCgnXG4nKSBpZiBwb3J0LmlzZGlnPQppdCgpXQo9MjAKICMgR2VuZXJhdGUgcmFuZG9tIGZyZWUg cG9ydCBudW1iZXIgZm9yIG91ciBkb2NrZXIgY29udGFpbmVyCgoKaHR0cHM6Ly9iaXRidWNrZXQu b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2IzNTcyY2U4YzE1Yi8KQ2hhbmdlc2V0 OiAgIGIzNTcyY2U4YzE1YgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgIEFkZGVkIHJlbW90ZV9ob3N0IHZhcmlh YmxlIHRvIGRvY2tlciBjb25mCkluIG9yZGVyIHRvIHdoaXRlbGlzdCBJUHMgYWxsb3dlZCB0byBj b25uZWN0IHRvIG5vdGVib29rcywgd2UgbmVlZCB0byBrbm93ID0Kd2hvIHRoZSByZW1vdGUgdGFy Z2V0CmNvbm5lY3RpbmcgaXMuIFdlIGNhbiBibGFja2xpc3Qgb24gSVAgYWRkcmVzcyBvbmx5LCBh cyB3ZSBoYXZlIG5vIHdheSBvZiBhdT0KdGhlbnRpY2F0aW5nIHRoZW0uIFdoaWxlCndlIGRvIGhh dmUgYWNjZXNzIHRvIG90aGVyIGluZm9ybWF0aW9uIGxpa2UgY29va2llcywgd2UgaGF2ZSBubyBT U0wgbm9yIHdheT0KIHRvIGtub3cgd2hhdAphdXRoZW50aWNhdGlvbiBtZXRob2QgdGhlIGdhbGF4 eSBzZXJ2ZXIgd2lsbCBiZSB1c2luZy4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBhODY3 NGExYmQyOWE3MWEwNGQ5ZDE3OWI0ODgyZjE0OTY4ZTI5NWZjIC1yIGIzNTcyY2U4YzE1YjEzZTFi ZWVjZDU1PQpkMjYyYjNiMWNjMmFjN2Q1MSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC04 OSw2ICs4OSw3IEBACiAgICAgJ2hpc3RvcnlfaWQnOiBoaXN0b3J5X2lkLAogICAgICdnYWxheHlf dXJsJzogcmVxdWVzdC5hcHBsaWNhdGlvbl91cmwsCiAgICAgJ2FwaV9rZXknOiB0cmFucy51c2Vy LmFwaV9rZXlzWzBdLmtleSwKKyAgICAncmVtb3RlX2hvc3QnOiByZXF1ZXN0LnJlbW90ZV9hZGRy LAogfQogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55YW1sJyApLCAn d2InICkgYXMgaGFuZGxlOgogICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNvbmZfZmlsZSkg KQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9k N2U4ZjQ3YjRmNmEvCkNoYW5nZXNldDogICBkN2U4ZjQ3YjRmNmEKVXNlcjogICAgICAgIGVyYXNj aGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBD aGFuZ2VkIGZsb3cgc3R5bGUgZm9yIGVhc2llciBncmVwcGluZwpTZWUgdGhlIFtQeVlBTUxdKGh0 dHA6Ly9weXlhbWwub3JnL3dpa2kvUHlZQU1MRG9jdW1lbnRhdGlvbikgZG9jcyBmb3IgbW9yZSA9 CmluZm9ybWF0aW9uIGFzIHRvIGZsb3cKc3R5bGUuIEVzc2VudGlhbGx5IGl0IHNob3VsZCBtYWtl IHN1cmUgdGhlIGBjb25mLnlhbWxgIGZpbGUgaXMgZ3JlcHBhYmxlLCB3PQpoaWNoIG1heSBiZSBu ZWNlc3NhcnkgZm9yCklQIGFkZHJlc3Mgd2hpdGVsaXN0aW5nLgpBZmZlY3RlZCAjOiAgMSBmaWxl CgpkaWZmIC1yIGIzNTcyY2U4YzE1YjEzZTFiZWVjZDU1ZDI2MmIzYjFjYzJhYzdkNTEgLXIgZDdl OGY0N2I0ZjZhZDU0MGFhOWZlNTg9CmFlOTAzZjMyYjU4MWI1YzRkIGNvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwor KysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm1ha28KQEAgLTkyLDcgKzkyLDcgQEAKICAgICAncmVtb3RlX2hvc3QnOiByZXF1ZXN0LnJl bW90ZV9hZGRyLAogfQogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55 YW1sJyApLCAnd2InICkgYXMgaGFuZGxlOgotICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNv bmZfZmlsZSkgKQorICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNvbmZfZmlsZSwgZGVmYXVs dF9mbG93X3N0eWxlPTNERmFsc2UpICkKPTIwCiAjIFRPRE86IEltcGxlbWVudCBwcm9wZXIgSVB5 TkIgZGF0YXR5cGUgYXRvcCBhIHByb3BlciBKU09OIGRhdGF0eXBlCiAjIEZvciBub3cgd2UgYXNz dW1lIGFsbCAidGV4dCIgZGF0YXR5cGVzIGFyZSBpcHluYnMuCgoKaHR0cHM6Ly9iaXRidWNrZXQu b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2JhZDk0ZmFkOWZiNy8KQ2hhbmdlc2V0 OiAgIGJhZDk0ZmFkOWZiNwpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgIEFkZGVkIGNvZGUgdG8gb2J0YWluIHBv cnQgaW5mb3JtYXRpb24gZnJvbSBnYWxheHkKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBk N2U4ZjQ3YjRmNmFkNTQwYWE5ZmU1OGFlOTAzZjMyYjU4MWI1YzRkIC1yIGJhZDk0ZmFkOWZiNzI4 MzUzNTE5NTc0PQpjZDY3MzhjZDgxNTNkODJiNyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBA IC04NSwxMSArODUsMzAgQEAKPTIwCiB0ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKCB0ZW1w ZmlsZS5ta2R0ZW1wKCkgKQo9MjAKKyMjIyMjIyMjIyMjIyMjIyBHZXR0aW5nIG9mIHBvcnQgZ2Fs YXh5IGlzIGJlaW5nIHNlcnZlZCBvbi4KK3AxID0zRCBzdWJwcm9jZXNzLlBvcGVuKHNobGV4LnNw bGl0KCIiInBzIGEiIiIpLCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJUEUpCitwMiA9M0Qgc3VicHJv Y2Vzcy5Qb3BlbihzaGxleC5zcGxpdCgiIiJncmVwICdweXRob24gLi9zY3JpcHRzJyIiIiksIHN0 ZGluPQo9M0RwMS5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PTNEc3VicHJv Y2Vzcy5QSVBFKQorcDMgPTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIiZ3JlcCAt diAnZ3JlcCciIiIpLCBzdGRpbj0zRHAyLnN0ZG89CnV0LCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJ UEUpCitwNCA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdCgiIiJhd2sgJ3twcmludCAk MX0nIiIiKSwgc3RkaW49M0RwMy5zdD0KZG91dCwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQor Z2FsYXh5X3Bhc3Rlcl9waWQgPTNEIHA0LnN0ZG91dC5yZWFkKCkKK2dhbGF4eV9wYXN0ZXJfcG9y dCA9M0QgTm9uZQoraWYgbGVuKGdhbGF4eV9wYXN0ZXJfcGlkKSA+IDA6CisgICAgcHJpbnQgIkZv dW5kIHBpZDogIiArIHN0cihnYWxheHlfcGFzdGVyX3BpZCkKKyAgICBwMSA9M0Qgc3VicHJvY2Vz cy5Qb3BlbihzaGxleC5zcGxpdCgiIiJuZXRzdGF0IC1udHBhIiIiKSwgc3Rkb3V0PTNEc3ViPQpw cm9jZXNzLlBJUEUpCisgICAgcDIgPTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIi Z3JlcCAlZCIiIiAlIChpbnQoZ2FsYXh5X3Bhc3Rlcj0KX3BpZCksICkpLCBzdGRpbj0zRHAxLnN0 ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBF KQorICAgIHAzID0zRCBzdWJwcm9jZXNzLlBvcGVuKHNobGV4LnNwbGl0KCIiImF3ayAne3ByaW50 ICQ0fSciIiIpLCBzdGRpbj0zRHA9CjIuc3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJUEUpCisgICAgcDQgPTNEIHN1YnByb2Nlc3MuUG9wZW4o c2hsZXguc3BsaXQoIiIiY3V0IC1kOiAtZjIiIiIpLCBzdGRpbj0zRHAzLnN0ZD0Kb3V0LCBzdGRv dXQ9M0RzdWJwcm9jZXNzLlBJUEUpCisgICAgZ2FsYXh5X3Bhc3Rlcl9wb3J0ID0zRCBwNC5zdGRv dXQucmVhZCgpCisKIGNvbmZfZmlsZSA9M0QgewogICAgICdoaXN0b3J5X2lkJzogaGlzdG9yeV9p ZCwKICAgICAnZ2FsYXh5X3VybCc6IHJlcXVlc3QuYXBwbGljYXRpb25fdXJsLAogICAgICdhcGlf a2V5JzogdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCiAgICAgJ3JlbW90ZV9ob3N0JzogcmVx dWVzdC5yZW1vdGVfYWRkciwKKyAgICAnZ2FsYXh5X3Bhc3Rlcl9wb3J0JzogZ2FsYXh5X3Bhc3Rl cl9wb3J0LAogfQogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55YW1s JyApLCAnd2InICkgYXMgaGFuZGxlOgogICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNvbmZf ZmlsZSwgZGVmYXVsdF9mbG93X3N0eWxlPTNERmFsc2UpICkKCgpodHRwczovL2JpdGJ1Y2tldC5v cmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZmM0YzZlNDA3YzBhLwpDaGFuZ2VzZXQ6 ICAgZmM0YzZlNDA3YzBhClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0x MC0xOCAyMjozODowMyswMDowMApTdW1tYXJ5OiAgICAgRm91bmQgcG9ydCBwcm9wZXJseQpBZmZl Y3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGJhZDk0ZmFkOWZiNzI4MzUzNTE5NTc0Y2Q2NzM4Y2Q4 MTUzZDgyYjcgLXIgZmM0YzZlNDA3YzBhYTBmNjQxYWRmN2U9CjlhOGE0MDA4Y2FhMmVkM2I0IGNv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0K YWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVz L2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTc3LDcgKzc3LDcgQEAKICAgICBQT1JUID0zRCBy YW5kb20ucmFuZHJhbmdlKDEwMDAwLDE1MDAwKQogICAgIGlmIFBPUlRTIG5vdCBpbiBvY2N1cGll ZF9wb3J0czoKICAgICAgICAgYnJlYWsKLQorcHJpbnQgIlN0YXJ0aW5nIGRvY2tlciBvbiBwb3J0 ICVzIiAlIFBPUlQKIEhPU1QgPTNEIHJlcXVlc3QuaG9zdAogIyBTdHJpcCBvdXQgcG9ydCwgd2Ug anVzdCB3YW50IHRoZSBVUkwgdGhpcyBnYWxheHkgc2VydmVyIHdhcyBhY2Nlc3NlZCBhdC4KIGlm ICc6JyBpbiBIT1NUOgpAQCAtOTEsMTcgKzkxLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAg c3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQogcDMgPTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXgu c3BsaXQoIiIiZ3JlcCAtdiAnZ3JlcCciIiIpLCBzdGRpbj0zRHAyLnN0ZG89CnV0LCBzdGRvdXQ9 M0RzdWJwcm9jZXNzLlBJUEUpCiBwNCA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdCgi IiJhd2sgJ3twcmludCAkMX0nIiIiKSwgc3RkaW49M0RwMy5zdD0KZG91dCwgc3Rkb3V0PTNEc3Vi cHJvY2Vzcy5QSVBFKQotZ2FsYXh5X3Bhc3Rlcl9waWQgPTNEIHA0LnN0ZG91dC5yZWFkKCkKKyMg T25seSB0YWtlIGZpcnN0IFBJRCBpbiBjYXNlIHdlIGhhdmUgbXVsdGlwbGUuCitnYWxheHlfcGFz dGVyX3BpZCA9M0QgcDQuc3Rkb3V0LnJlYWQoKS5zcGxpdCgnXG4nKVswXQogZ2FsYXh5X3Bhc3Rl cl9wb3J0ID0zRCBOb25lCiBpZiBsZW4oZ2FsYXh5X3Bhc3Rlcl9waWQpID4gMDoKLSAgICBwcmlu dCAiRm91bmQgcGlkOiAiICsgc3RyKGdhbGF4eV9wYXN0ZXJfcGlkKQotICAgIHAxID0zRCBzdWJw cm9jZXNzLlBvcGVuKHNobGV4LnNwbGl0KCIiIm5ldHN0YXQgLW50cGEiIiIpLCBzdGRvdXQ9M0Rz dWI9CnByb2Nlc3MuUElQRSkKLSAgICBwMiA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxp dCgiIiJncmVwICVkIiIiICUgKGludChnYWxheHlfcGFzdGVyPQpfcGlkKSwgKSksIHN0ZGluPTNE cDEuc3Rkb3V0LAorICAgICMgRmluZCBhbGwgZmlsZXMgb3BlbmVkIGJ5IHRoZSBwcm9jZXNzIG9m IGludGVyZXN0CisgICAgcDEgPTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIibHNv ZiAtcCAlZCIiIiAlIChpbnQoZ2FsYXh5X3Bhcz0KdGVyX3BpZCksKSApLCBzdGRvdXQ9M0RzdWJw cm9jZXNzLlBJUEUpCisgICAgIyBHcmVwIG91dCB0aGUgVENQIGNvbm5lY3Rpb25zIG9wZW5lZCBi eSB0aGlzIHByb2Nlc3MKKyAgICBwMiA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdCgi IiJncmVwIC1vICdUQ1AgW146XSo6WzAtOV0qJyIiIiksPQogc3RkaW49M0RwMS5zdGRvdXQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0zRHN1YnByb2Nlc3MuUElQRSkKLSAgICBw MyA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdCgiIiJhd2sgJ3twcmludCAkNH0nIiIi KSwgc3RkaW49M0RwPQoyLnN0ZG91dCwKKyAgICAjIFJlbW92ZSAnVENQICo6JyBmcm9tICdUQ1Ag Kjo0MDAwJworICAgIHAzID0zRCBzdWJwcm9jZXNzLlBvcGVuKHNobGV4LnNwbGl0KCIiImN1dCAt ZDogLWYyIiIiKSwgc3RkaW49M0RwMi5zdGQ9Cm91dCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQotICAgIHA0ID0zRCBzdWJwcm9jZXNzLlBvcGVu KHNobGV4LnNwbGl0KCIiImN1dCAtZDogLWYyIiIiKSwgc3RkaW49M0RwMy5zdGQ9Cm91dCwgc3Rk b3V0PTNEc3VicHJvY2Vzcy5QSVBFKQotICAgIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgcDQuc3Rk b3V0LnJlYWQoKQorICAgIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgcDMuc3Rkb3V0LnJlYWQoKS5z dHJpcCgpCj0yMAogY29uZl9maWxlID0zRCB7CiAgICAgJ2hpc3RvcnlfaWQnOiBoaXN0b3J5X2lk LAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8y NzZiYWVkNTRlOGEvCkNoYW5nZXNldDogICAyNzZiYWVkNTRlOGEKVXNlcjogICAgICAgIGVyYXNj aGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBS ZWRpcmVjdCBsc29mJ3Mgc3RkZXJyIHRvIGlnbm9yZWQgZGV2aWNlCkFmZmVjdGVkICM6ICAxIGZp bGUKCmRpZmYgLXIgZmM0YzZlNDA3YzBhYTBmNjQxYWRmN2U5YThhNDAwOGNhYTJlZDNiNCAtciAy NzZiYWVkNTRlOGExMzFkNTg5MzRhMj0KMDMxMThjYzhlMjI2Zjc0MjMgY29uZmlnL3BsdWdpbnMv dmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtv CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lw eXRob24ubWFrbwpAQCAtOTYsNyArOTYsOCBAQAogZ2FsYXh5X3Bhc3Rlcl9wb3J0ID0zRCBOb25l CiBpZiBsZW4oZ2FsYXh5X3Bhc3Rlcl9waWQpID4gMDoKICAgICAjIEZpbmQgYWxsIGZpbGVzIG9w ZW5lZCBieSB0aGUgcHJvY2VzcyBvZiBpbnRlcmVzdAotICAgIHAxID0zRCBzdWJwcm9jZXNzLlBv cGVuKHNobGV4LnNwbGl0KCIiImxzb2YgLXAgJWQiIiIgJSAoaW50KGdhbGF4eV9wYXM9CnRlcl9w aWQpLCkgKSwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQorICAgIHAxID0zRCBzdWJwcm9jZXNz LlBvcGVuKHNobGV4LnNwbGl0KCIiImxzb2YgLXAgJWQiIiIgJSAoaW50KGdhbGF4eV9wYXM9CnRl cl9waWQpLCkgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPTNEc3VicHJvY2Vz cy5TVERPVVQsIHN0ZG91dD0zRHN1YnByb2Nlc3MuPQpQSVBFKQogICAgICMgR3JlcCBvdXQgdGhl IFRDUCBjb25uZWN0aW9ucyBvcGVuZWQgYnkgdGhpcyBwcm9jZXNzCiAgICAgcDIgPTNEIHN1YnBy b2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIiZ3JlcCAtbyAnVENQIFteOl0qOlswLTldKiciIiIp LD0KIHN0ZGluPTNEcDEuc3Rkb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9 M0RzdWJwcm9jZXNzLlBJUEUpCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHkt Y2VudHJhbC9jb21taXRzLzQ5YjM5NDNiYjc3YS8KQ2hhbmdlc2V0OiAgIDQ5YjM5NDNiYjc3YQpV c2VyOiAgICAgICAgQmpvZXJuR3J1ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6 MDMrMDA6MDAKU3VtbWFyeTogICAgIHNvbWUgcmVhZG1lIHVwZGF0ZXMKQWZmZWN0ZWQgIzogIDEg ZmlsZQoKZGlmZiAtciAyNzZiYWVkNTRlOGExMzFkNTg5MzRhMjAzMTE4Y2M4ZTIyNmY3NDIzIC1y IDQ5YjM5NDNiYjc3YTNlMTFhOGY0OTVhPQpjZTY5NTk1MGVkNTMyNGQ4MyBjb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL1JFQURNRS5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL1JFQURNRS5tZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL1JFQURNRS5tZApAQCAtMTMsMTAgKzEzLDU3IEBACiBJbnN0YWxs YXRpb24KID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKLUNwb3kgdGhl IHRlbXBsYXRlIGFuZCBjb25maWcgZm9sZGVyIGluIHlvdXIgPEdBTEFYWV9ST09UPi9jb25maWcv cGx1Z2lucy92PQppc3VhbGl6YXRpb25zL2lweXRob24gZm9sZGVyIGFuZCByZXN0YXJ0IEdhbGF4 eS4KK0NvcHkgdGhlIHRlbXBsYXRlIGFuZCBjb25maWcgZm9sZGVyIGluIHlvdXIgPEdBTEFYWV9S T09UPi9jb25maWcvcGx1Z2lucy92PQppc3VhbGl6YXRpb25zL2lweXRob24gZm9sZGVyIGFuZCBy ZXN0YXJ0IEdhbGF4eS4KPTIwCiBvcgo9MjAKIGBgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNv bS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24uZ2l0IGNvbmZpZy9wbHVnaW5zPQovdml6L2lweXRo b25gYAo9MjAKIFRoZSBJUHl0aG9uIFZpc3VhbGlzYXRpb24gT3B0aW9uIHNob3VsZCBiZSB2aXNp YmxlIG5leHQgdG8gdGhlIHVzdWFsIENoYXJ0PQpzIG9yIFRyYWNrc3RlciBPcHRpb25zIGluIHlv dXIgVmlzdWFsaXNhdGlvbiBtZW51ZS4KKworCitGZWF0dXJlcworPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNECisKKyAqIHJ1biBJUHl0aG9uIGRpcmVjdGx5IGluIHlvdXIgR2FsYXh5IG1haW4gd2lu ZG93IG9yIGluIEdhbGF4eSBTY3JhdGNoYm9vaworICogY29tcGxldGUgZW5jYXBzdWxhdGVkIHB5 dGhvbiBlbnZpcm9ubWVudCB3aXRoIG1hdHBsb3RsaWIsIHBhbmRhcyBhbmQgZnI9CmllbmRzIGlu c3RhbGxlZAorICogYWNjZXNzIHRvIGFsbCBkYXRhc2V0cyBmcm9tIHlvdXIgY3VycmVudCBoaXN0 b3J5IHZpYSBwcmUtZGVmaW5lZCBJUHl0aG89Cm4gZnVuY3Rpb24KKyAqIG1hbmlwdWxhdGUgYW5k IHBsb3QgZGF0YSBhcyB5b3UgbGlrZSBhbmQgZXhwb3J0IHlvdXIgbmV3IGZpbGVzIGJhY2sgaW50 PQpvIHRoZSBHYWxheHkgaGlzdG9yeQorICogc2F2ZSB0aGUgSVB5dGhvbiBOb3RlYm9vayBpbnRv IHlvdXIgR2FsYXh5IGhpc3RvcnkKKyAqIHNhdmVkIElQeXRob24gTm90ZWJvb2sgZmlsZXMgY2Fu IGJlIHZpZXdlZCBpbiBIVE1MIGFuZCByZS1vcGVuZWQKKyAqIHNlbGYtY2xvc2luZyBhbmQgY2xl YW5pbmcgSVB5dGhvbiBkb2NrZXIgY29udGFpbmVyCisKKworQXV0aG9ycworPTNEPTNEPTNEPTNE PTNEPTNEPTNECisKKyAqIEJqb2VybiBHcnVlbmluZworICogRXJpYyBSYXNjaGUKKworCitIaXN0 b3J5Cis9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKKworLSB2MC4xOiBJbml0aWFsIHB1YmxpYyByZWxl YXNlCisKKworTGljZW5jZSAoTUlUKQorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNECisKK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvPQpweQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGQ9CmVhbAor aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlIHJpZ2g9CnRzCit0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisK K1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCithbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g RVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUj0KT00sCitP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzBjZWFmYWRiZjU2NC8KQ2hhbmdlc2V0OiAgIDBj ZWFmYWRiZjU2NApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTgg MjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgIFRlbXBsYXRlIHVwZGF0ZXMKQSBjb3VwbGUgdGhp bmdzIG9mIGludGVyZXN0IGFyZSBkb25lIHdpdGggdGhlIHRlbXBsYXRlOgoKLSBIVE1MIGhlYWRl cgotIE1hcmtkb3duIGNlbGwgd2l0aCBpbnN0cnVjdGlvbnMgYXMgdG8gcmVhZC93cml0ZSBkYXRh IGZyb20gZ2FsYXh5Ci0gQSBISURERU4gamF2YXNjcmlwdCBmdW5jdGlvbiB0byBzYXZlIHRvIGdh bGF4eQotIEVtcHR5IGNlbGwgZm9yIG5leHQgdXNlciBjb21tYW5kLgoKVGhlIGhpZGRlbiBqYXZh c2NyaXB0IGZ1bmN0aW9uIGlzIGRvbmUgYnkgd3JpdGluZyB0aGUgZnVuY3Rpb24gYXMgcGFydCBv ZiB0PQpoZSBub3RlYm9vayBhbmQgcmVtb3ZpbmcKdGhlIGlucHV0IHRleHQuIFRoaXMgaXMgcHJv YmFibHkgdmVyeSwgdmVyeSBmcmFnaWxlIGFuZCB3aWxsIG5vdCBzdXJ2aXZlIGEgPQpjbG9zaW5n K3Jlb3BlbmluZyBidXQKaXQncyB2ZXJ5IHBsZWFzYW50IGxvb2tpbmcgdG8ganVzdCBoYXZlIGEg YnV0dG9uIHRoYXQgc2F2ZXMgdGhlIG5vdGVib29rIHRvPQogZ2FsYXh5LiBJdCdzIHZlcnkKdmlz dWFsbHkgdW5vYnRydXNpdmUgYW5kIHRoYXQgbWF5IGJlIG1vcmUgaW1wb3J0YW50IGZvciBuZXcg dXNlcnMgdGhhbiBoYXZpPQpuZyB0aGUgZnVsbCBjb2RlIHRoZXJlLgoKVG8gYmUgYWJsZSB0byBp bnRlcmFjdCB3aXRoIHRoYXQgYnV0dG9uIGl0IGlzIHJlcXVpcmVkIHRoYXQgaXB5dGhvbiB0cnVz dCB0PQpoZSBub3RlYm9vay4gVGhpcyBpcyBkb25lCmluIGFuIHVwZGF0ZSB0byB0aGUgZG9ja2Vy IHN0YXJ0dXAgc2NyaXB0LgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDQ5YjM5NDNiYjc3 YTNlMTFhOGY0OTVhY2U2OTU5NTBlZDUzMjRkODMgLXIgMGNlYWZhZGJmNTY0ZDQwZTMyZTJlNjE9 CmJlY2FmNDMxMjk2MmI1ZjAzIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v dGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTI2LDcgKzI2 LDcgQEAKICAgICJjZWxscyI6IFsKICAgICB7CiAgICAgICJjZWxsX3R5cGUiOiAiaGVhZGluZyIs Ci0gICAgICJsZXZlbCI6IDIsCisgICAgICJsZXZlbCI6IDEsCiAgICAgICJtZXRhZGF0YSI6IHt9 LAogICAgICAic291cmNlIjogWwogICAgICAgIldlbGNvbWUgdG8gdGhlIGludGVyYWN0aXZlIEdh bGF4eSBJUHl0aG9uIE5vdGVib29rLiIKQEAgLTM2LDI3ICszNiw1OSBAQAogICAgICAiY2VsbF90 eXBlIjogIm1hcmtkb3duIiwKICAgICAgIm1ldGFkYXRhIjoge30sCiAgICAgICJzb3VyY2UiOiBb Ci0gICAgICAiWW91IGNhbiBhY2Nlc3MgeW91ciBkYXRhIHZpYSB0aGUgZGF0YXNldCBudW1iZXIu IEZvciBleGFtcGxlOiBoYW5kbD0KZSA9M0Qgb3BlbignNDInLCAncicpIgorICAgICAgIllvdSBj YW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhlIGRhdGFzZXQgbnVtYmVyLiBGb3IgZXhhbXBsZSwg YGhhbmQ9CmxlID0zRCBnZXQoNDIpYC5cXG4iLAorICAgICAgIlRvIHNhdmUgZGF0YSwgd3JpdGUg eW91ciBkYXRhIHRvIGEgZmlsZSwgYW5kIHRoZW4gY2FsbCBgcHV0KCdmaWxlbmE9Cm1lLnR4dCcp YC4gVGhlIGRhdGFzZXQgd2lsbCB0aGVuIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGdhbGF4eSBoaXN0 b3J5LiIKICAgICAgXQogICAgIH0sCiAgICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAog ICAgICAiY29sbGFwc2VkIjogZmFsc2UsCi0gICAgICJpbnB1dCI6IFtdLAorICAgICAiaW5wdXQi OiBbCisgICAgICAiIyBUaGlzIGJ1dHRvbiBqdXN0IGNhbGxzIHB1dCgnaXB5dGhvbl9nYWxheHlf bm90ZWJvb2suaXB5bmInKSIKKyAgICAgXSwKICAgICAgImxhbmd1YWdlIjogInB5dGhvbiIsCiAg ICAgICJtZXRhZGF0YSI6IHt9LAotICAgICAib3V0cHV0cyI6IFtdCisgICAgICJvdXRwdXRzIjog WworICAgICAgeworICAgICAgICJodG1sIjogWworICAgICAgICAiPGJ1dHRvbiBvbmNsaWNrPTNE XFxcInNhdmUoKVxcXCI+U2F2ZSBOb3RlYm9vayB0byBHYWxheHk8L2J1dHRvbj49ClxcbiIsCisg ICAgICAgICI8c2NyaXB0IHR5cGU9M0RcXFwidGV4dC9KYXZhc2NyaXB0XFxcIj5cXG4iLAorICAg ICAgICAiICAgIGZ1bmN0aW9uIHNhdmUoKXtcXG4iLAorICAgICAgICAiICAgICAgICBjb25zb2xl LmxvZyhJUHl0aG9uLm5vdGVib29rLmtlcm5lbC5leGVjdXRlKFxcXCJwdXQoJ2lweXQ9Cmhvbl9n YWxheHlfbm90ZWJvb2suaXB5bmInKVxcXCIpKTtcXG4iLAorICAgICAgICAiICAgIH1cXG4iLAor ICAgICAgICAiPC9zY3JpcHQ+XFxuIgorICAgICAgIF0sCisgICAgICAgIm1ldGFkYXRhIjoge30s CisgICAgICAgIm91dHB1dF90eXBlIjogInB5b3V0IiwKKyAgICAgICAicHJvbXB0X251bWJlciI6 IDEsCisgICAgICAgInRleHQiOiBbCisgICAgICAgICI8SVB5dGhvbi5jb3JlLmRpc3BsYXkuSFRN TCBhdCAweDNiMzM2NTA+IgorICAgICAgIF0KKyAgICAgIH0KKyAgICAgXSwKKyAgICAgInByb21w dF9udW1iZXIiOiAxCisgICAgfSwKKyAgICB7CisgICAgICJjZWxsX3R5cGUiOiAiY29kZSIsCisg ICAgICJjb2xsYXBzZWQiOiBmYWxzZSwKKyAgICAgImlucHV0IjogWworICAgICBdLAorICAgICAi bGFuZ3VhZ2UiOiAicHl0aG9uIiwKKyAgICAgIm1ldGFkYXRhIjoge30sCisgICAgICJvdXRwdXRz IjogW10sCisgICAgICJwcm9tcHRfbnVtYmVyIjogMgogICAgIH0KICAgIF0sCiAgICAibWV0YWRh dGEiOiB7fQogICB9CiAgXQotfSIiIiAlIChub3RlYm9va19pZCwgKQorfQorIiIiICUgKG5vdGVi b29rX2lkLCApCj0yMAo9MjAKICMgRmluZCBhbGwgcG9ydHMgdGhhdCBhcmUgYWxyZWFkeSBvY2N1 cGllZAogaW1wb3J0IHNobGV4Ci1jbWRfbmV0c3RhdCA9M0Qgc2hsZXguc3BsaXQoIm5ldHN0YXQg LXRuYUFpbmV0IikKK2NtZF9uZXRzdGF0ID0zRCBzaGxleC5zcGxpdCgibmV0c3RhdCAtdHVsbiIp CiBwMSA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihjbWRfbmV0c3RhdCwgc3Rkb3V0PTNEc3VicHJvY2Vz cy5QSVBFKQo9MjAKIGNtZF9hd2sgPTNEIHNobGV4LnNwbGl0KCJhd2sgJ05SID49M0QgMyB7IHBy aW50ICQ0IH0nIikKQEAgLTc3LDcgKzEwOSw2IEBACiAgICAgUE9SVCA9M0QgcmFuZG9tLnJhbmRy YW5nZSgxMDAwMCwxNTAwMCkKICAgICBpZiBQT1JUUyBub3QgaW4gb2NjdXBpZWRfcG9ydHM6CiAg ICAgICAgIGJyZWFrCi1wcmludCAiU3RhcnRpbmcgZG9ja2VyIG9uIHBvcnQgJXMiICUgUE9SVAog SE9TVCA9M0QgcmVxdWVzdC5ob3N0CiAjIFN0cmlwIG91dCBwb3J0LCB3ZSBqdXN0IHdhbnQgdGhl IFVSTCB0aGlzIGdhbGF4eSBzZXJ2ZXIgd2FzIGFjY2Vzc2VkIGF0LgogaWYgJzonIGluIEhPU1Q6 CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2Mz M2U2Mzg0MGY3Yy8KQ2hhbmdlc2V0OiAgIGMzM2U2Mzg0MGY3YwpVc2VyOiAgICAgICAgQmpvZXJu R3J1ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTog ICAgIFRyeSBhZ2FpbiB0byBmaXggdGhlIG5ldHN0YXQgZmlsdGVyaW5nIGFuZCBjZWxsZWN0IGFs bCB1c2VkIHBvPQpydHMuCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgMGNlYWZhZGJmNTY0 ZDQwZTMyZTJlNjFiZWNhZjQzMTI5NjJiNWYwMyAtciBjMzNlNjM4NDBmN2MxNmY0MjUwZmVkND0K OTBiNjU4YTNkNzkyM2Q3ZTAgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtOTEsMjQgKzkx LDIxIEBACiBjbWRfbmV0c3RhdCA9M0Qgc2hsZXguc3BsaXQoIm5ldHN0YXQgLXR1bG4iKQogcDEg PTNEIHN1YnByb2Nlc3MuUG9wZW4oY21kX25ldHN0YXQsIHN0ZG91dD0zRHN1YnByb2Nlc3MuUElQ RSkKPTIwCi1jbWRfYXdrID0zRCBzaGxleC5zcGxpdCgiYXdrICdOUiA+PTNEIDMgeyBwcmludCAk NCB9JyIpCi1wMiA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihjbWRfYXdrLCBzdGRpbj0zRHAxLnN0ZG91 dCwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QST0KUEUpCi0KLWNtZF9jdXQgPTNEIHNobGV4LnNwbGl0 KCJjdXQgLWQ6IC1mMiIpCi1wMyA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihjbWRfY3V0LCBzdGRpbj0z RHAyLnN0ZG91dCwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QST0KUEUpCi0KLWNtZF9zb3J0ID0zRCBz aGxleC5zcGxpdCgic29ydCAtdW4iKQotcDQgPTNEIHN1YnByb2Nlc3MuUG9wZW4oY21kX3NvcnQs IHN0ZGluPTNEcDMuc3Rkb3V0LCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlA9CklQRSkKLQotbmV0c3Rh dF9vdXQgPTNEIHA0LnN0ZG91dC5yZWFkKCkKLQotb2NjdXBpZWRfcG9ydHMgPTNEIFtwb3J0IGZv ciBwb3J0IGluIG5ldHN0YXRfb3V0LnNwbGl0KCdcbicpIGlmIHBvcnQuaXNkaWc9Cml0KCldCitv Y2N1cGllZF9wb3J0cyA9M0QgbGlzdCgpCitmb3IgbGluZSBpbiBwMS5zdGRvdXQucmVhZCgpLnNw bGl0KCdcbicpOgorICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgndGNwJykgb3IgbGluZS5zdGFydHN3 aXRoKCd0Y3A2Jyk6CisgICAgICAgIGNvbCA9M0QgbGluZS5zcGxpdCgpCisgICAgICAgIGxvY2Fs X2FkZHJlc3MgPTNEIGNvbFszXQorICAgICAgICBsb2NhbF9wb3J0ID0zRCBsb2NhbF9hZGRyZXNz LnNwbGl0KCc6JylbLTFdCisgICAgICAgIG9jY3VwaWVkX3BvcnRzLmFwcGVuZCggaW50KGxvY2Fs X3BvcnQpICkKPTIwCiAjIEdlbmVyYXRlIHJhbmRvbSBmcmVlIHBvcnQgbnVtYmVyIGZvciBvdXIg ZG9ja2VyIGNvbnRhaW5lcgorcHJpbnQgb2NjdXBpZWRfcG9ydHMKIHdoaWxlIFRydWU6CiAgICAg UE9SVCA9M0QgcmFuZG9tLnJhbmRyYW5nZSgxMDAwMCwxNTAwMCkKLSAgICBpZiBQT1JUUyBub3Qg aW4gb2NjdXBpZWRfcG9ydHM6CisgICAgaWYgUE9SVCBub3QgaW4gb2NjdXBpZWRfcG9ydHM6CiAg ICAgICAgIGJyZWFrCisKIEhPU1QgPTNEIHJlcXVlc3QuaG9zdAogIyBTdHJpcCBvdXQgcG9ydCwg d2UganVzdCB3YW50IHRoZSBVUkwgdGhpcyBnYWxheHkgc2VydmVyIHdhcyBhY2Nlc3NlZCBhdC4K IGlmICc6JyBpbiBIT1NUOgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvY29tbWl0cy85MTBkMDlhYzEzMzgvCkNoYW5nZXNldDogICA5MTBkMDlhYzEzMzgKVXNl cjogICAgICAgIEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAz KzAwOjAwClN1bW1hcnk6ICAgICBtb3JlIHB5dGhvbmlmaWNhdGlvbgpBZmZlY3RlZCAjOiAgMSBm aWxlCgpkaWZmIC1yIGMzM2U2Mzg0MGY3YzE2ZjQyNTBmZWQ0OTBiNjU4YTNkNzkyM2Q3ZTAgLXIg OTEwZDA5YWMxMzM4YjBkNWFhMTBjY2Q9CjdmNzJmM2Q2Y2UwY2UxMDkyIGNvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFr bworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm1ha28KQEAgLTkxLDE2ICs5MSwxNSBAQAogY21kX25ldHN0YXQgPTNEIHNobGV4LnNw bGl0KCJuZXRzdGF0IC10dWxuIikKIHAxID0zRCBzdWJwcm9jZXNzLlBvcGVuKGNtZF9uZXRzdGF0 LCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJUEUpCj0yMAotb2NjdXBpZWRfcG9ydHMgPTNEIGxpc3Qo KQorb2NjdXBpZWRfcG9ydHMgPTNEIHNldCgpCiBmb3IgbGluZSBpbiBwMS5zdGRvdXQucmVhZCgp LnNwbGl0KCdcbicpOgogICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgndGNwJykgb3IgbGluZS5zdGFy dHN3aXRoKCd0Y3A2Jyk6CiAgICAgICAgIGNvbCA9M0QgbGluZS5zcGxpdCgpCiAgICAgICAgIGxv Y2FsX2FkZHJlc3MgPTNEIGNvbFszXQogICAgICAgICBsb2NhbF9wb3J0ID0zRCBsb2NhbF9hZGRy ZXNzLnNwbGl0KCc6JylbLTFdCi0gICAgICAgIG9jY3VwaWVkX3BvcnRzLmFwcGVuZCggaW50KGxv Y2FsX3BvcnQpICkKKyAgICAgICAgb2NjdXBpZWRfcG9ydHMuYWRkKCBpbnQobG9jYWxfcG9ydCkg KQo9MjAKICMgR2VuZXJhdGUgcmFuZG9tIGZyZWUgcG9ydCBudW1iZXIgZm9yIG91ciBkb2NrZXIg Y29udGFpbmVyCi1wcmludCBvY2N1cGllZF9wb3J0cwogd2hpbGUgVHJ1ZToKICAgICBQT1JUID0z RCByYW5kb20ucmFuZHJhbmdlKDEwMDAwLDE1MDAwKQogICAgIGlmIFBPUlQgbm90IGluIG9jY3Vw aWVkX3BvcnRzOgpAQCAtMTE1LDEyICsxMTQsMTcgQEAKPTIwCiAjIyMjIyMjIyMjIyMjIyMgR2V0 dGluZyBvZiBwb3J0IGdhbGF4eSBpcyBiZWluZyBzZXJ2ZWQgb24uCiBwMSA9M0Qgc3VicHJvY2Vz cy5Qb3BlbihzaGxleC5zcGxpdCgiIiJwcyBhIiIiKSwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBF KQotcDIgPTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIiZ3JlcCAncHl0aG9uIC4v c2NyaXB0cyciIiIpLCBzdGRpbj0KPTNEcDEuc3Rkb3V0LAotICAgICAgICAgICAgICAgICAgICAg IHN0ZG91dD0zRHN1YnByb2Nlc3MuUElQRSkKLXAzID0zRCBzdWJwcm9jZXNzLlBvcGVuKHNobGV4 LnNwbGl0KCIiImdyZXAgLXYgJ2dyZXAnIiIiKSwgc3RkaW49M0RwMi5zdGRvPQp1dCwgc3Rkb3V0 PTNEc3VicHJvY2Vzcy5QSVBFKQotcDQgPTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQo IiIiYXdrICd7cHJpbnQgJDF9JyIiIiksIHN0ZGluPTNEcDMuc3Q9CmRvdXQsIHN0ZG91dD0zRHN1 YnByb2Nlc3MuUElQRSkKKworZ2FsYXh5X3Bhc3Rlcl9waWRzID0zRCBzZXQoKQorZm9yIGxpbmUg aW4gcDEuc3Rkb3V0LnJlYWQoKS5zcGxpdCgnXG4nKToKKyAgICBsaW5lID0zRCBsaW5lLnN0cmlw KCkKKyAgICBpZiBsaW5lLmZpbmQoJ3B5dGhvbiAuL3NjcmlwdCcpICE9M0QgLTE6CisgICAgICAg IHBvcnQgPTNEIGxpbmUuc3BsaXQoKVswXQorICAgICAgICBpZiBwb3J0LmlzZGlnaXQoKToKKyAg ICAgICAgICAgIGdhbGF4eV9wYXN0ZXJfcGlkcy5hZGQoIHBvcnQgKQorCiAjIE9ubHkgdGFrZSBm aXJzdCBQSUQgaW4gY2FzZSB3ZSBoYXZlIG11bHRpcGxlLgotZ2FsYXh5X3Bhc3Rlcl9waWQgPTNE IHA0LnN0ZG91dC5yZWFkKCkuc3BsaXQoJ1xuJylbMF0KK2dhbGF4eV9wYXN0ZXJfcGlkID0zRCBn YWxheHlfcGFzdGVyX3BpZHMucG9wKCkKIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgTm9uZQogaWYg bGVuKGdhbGF4eV9wYXN0ZXJfcGlkKSA+IDA6CiAgICAgIyBGaW5kIGFsbCBmaWxlcyBvcGVuZWQg YnkgdGhlIHByb2Nlc3Mgb2YgaW50ZXJlc3QKQEAgLTE0MSw2ICsxNDUsNyBAQAogICAgICdyZW1v dGVfaG9zdCc6IHJlcXVlc3QucmVtb3RlX2FkZHIsCiAgICAgJ2dhbGF4eV9wYXN0ZXJfcG9ydCc6 IGdhbGF4eV9wYXN0ZXJfcG9ydCwKIH0KKwogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBf ZGlyLCAnY29uZi55YW1sJyApLCAnd2InICkgYXMgaGFuZGxlOgogICAgIGhhbmRsZS53cml0ZSgg eWFtbC5kdW1wKGNvbmZfZmlsZSwgZGVmYXVsdF9mbG93X3N0eWxlPTNERmFsc2UpICkKPTIwCgoK aHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzc0Mjg5 NWU4MWU2NS8KQ2hhbmdlc2V0OiAgIDc0Mjg5NWU4MWU2NQpVc2VyOiAgICAgICAgZXJhc2NoZTIK RGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgIGxzb2Yg dHJhbnNsYXRlcyBwb3J0IG5hbWVzIGJ5IGRlZmF1bHQKVGhpcyBjb21taXQgZW5zdXJlcyB3ZSBh bHdheXMgcmVjZWl2ZSBudW1lcmljYWwgcG9ydHMgZnJvbSBsc29mLCByYXRoZXIgdGhhPQpuIHNl cnZpY2UgbmFtZXMgYXMKdHJhbnNsYXRlZCBieSAvZXRjL3NlcnZpY2VzCkFmZmVjdGVkICM6ICAx IGZpbGUKCmRpZmYgLXIgOTEwZDA5YWMxMzM4YjBkNWFhMTBjY2Q3ZjcyZjNkNmNlMGNlMTA5MiAt ciA3NDI4OTVlODFlNjVjMjFjNzkxNzVhNz0KZjE5MjZkODk5YWU1MWVlNzAgY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5t YWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVz L2lweXRob24ubWFrbwpAQCAtMTEyLDcgKzExMiw3IEBACj0yMAogdGVtcF9kaXIgPTNEIG9zLnBh dGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVtcCgpICkKPTIwCi0jIyMjIyMjIyMjIyMjIyMgR2V0 dGluZyBvZiBwb3J0IGdhbGF4eSBpcyBiZWluZyBzZXJ2ZWQgb24uCisjIEdldCBwb3J0IGdhbGF4 eSBpcyBiZWluZyBzZXJ2ZWQgb24sIGlmIGl0IGlzIGJlaW5nIHNlcnZlZCBvbiBhIHNpbmdsZSBw bz0KcnQgdmlhIHBhc3RlIHByb2Nlc3MKIHAxID0zRCBzdWJwcm9jZXNzLlBvcGVuKHNobGV4LnNw bGl0KCIiInBzIGEiIiIpLCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJUEUpCj0yMAogZ2FsYXh5X3Bh c3Rlcl9waWRzID0zRCBzZXQoKQpAQCAtMTI4LDcgKzEyOCw3IEBACiBnYWxheHlfcGFzdGVyX3Bv cnQgPTNEIE5vbmUKIGlmIGxlbihnYWxheHlfcGFzdGVyX3BpZCkgPiAwOgogICAgICMgRmluZCBh bGwgZmlsZXMgb3BlbmVkIGJ5IHRoZSBwcm9jZXNzIG9mIGludGVyZXN0Ci0gICAgcDEgPTNEIHN1 YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIibHNvZiAtcCAlZCIiIiAlIChpbnQoZ2FsYXh5 X3Bhcz0KdGVyX3BpZCksKSApLAorICAgIHAxID0zRCBzdWJwcm9jZXNzLlBvcGVuKHNobGV4LnNw bGl0KCIiImxzb2YgLVAgLXAgJWQiIiIgJSAoaW50KGdhbGF4eV89CnBhc3Rlcl9waWQpLCkgKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPTNEc3VicHJvY2Vzcy5TVERPVVQsIHN0 ZG91dD0zRHN1YnByb2Nlc3MuPQpQSVBFKQogICAgICMgR3JlcCBvdXQgdGhlIFRDUCBjb25uZWN0 aW9ucyBvcGVuZWQgYnkgdGhpcyBwcm9jZXNzCiAgICAgcDIgPTNEIHN1YnByb2Nlc3MuUG9wZW4o c2hsZXguc3BsaXQoIiIiZ3JlcCAtbyAnVENQIFteOl0qOlswLTldKiciIiIpLD0KIHN0ZGluPTNE cDEuc3Rkb3V0LAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy8xNzZkNDBhNDQzNDQvCkNoYW5nZXNldDogICAxNzZkNDBhNDQzNDQKVXNlcjogICAg ICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1h cnk6ICAgICBTd2l0Y2ggb3ZlciB0byByZXF1aXJpbmcgSVB5TkIgZGF0YXR5cGUKQWZmZWN0ZWQg IzogIDEgZmlsZQoKZGlmZiAtciA3NDI4OTVlODFlNjVjMjFjNzkxNzVhN2YxOTI2ZDg5OWFlNTFl ZTcwIC1yIDE3NmQ0MGE0NDM0NDRmYWJkMWViNTNiPQoxNjg5ZTRlYzI5MGEwYzdlMCBjb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwot LS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xNTMsNyArMTUzLDcgQEAKICMgRm9yIG5vdyB3ZSBhc3N1 bWUgYWxsICJ0ZXh0IiBkYXRhdHlwZXMgYXJlIGlweW5icy4KICMgPGRhdGF0eXBlIGV4dGVuc2lv bj0zRCJpcHluYiIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLmRhdGE6VGV4dCIgbWltZXR5PQpw ZT0zRCJhcHBsaWNhdGlvbi9qc29uIiBzdWJjbGFzcz0zRCJUcnVlIiBkaXNwbGF5X2luX3VwbG9h ZD0zRCJUcnVlIi8+CiBlbXB0eV9uYl9wYXRoID0zRCBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICdp cHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYicpCi1pZiBoZGEuZGF0YXR5cGUuX19jbGFzc19f Ll9fbmFtZV9fICE9M0QgIlRleHQiOgoraWYgaGRhLmRhdGF0eXBlLl9fY2xhc3NfXy5fX25hbWVf XyAhPTNEICJJcHluYiI6CiAgICAgd2l0aCBvcGVuKCBlbXB0eV9uYl9wYXRoLCAndysnICkgYXMg aGFuZGxlOgogICAgICAgICBoYW5kbGUud3JpdGUoIGVtcHR5X25iICkKIGVsc2U6CgoKaHR0cHM6 Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzMzZjg0MmM2ZGU5 NS8KQ2hhbmdlc2V0OiAgIDMzZjg0MmM2ZGU5NQpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTog ICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgID0zRD9VVEYtOD9x P1JlbW92ZWQ9M0QyMHNhdmU9M0QyMGZ1bmN0aW9uPTNEMjBhbmQ9M0QyMGFkZGVkPTNEPQoyMGRv Y3M9M0QyMHNpbmNlPz0zRCA9M0Q/VVRGLTg/cT89M0QyMEJqPTNEQzM9M0RCNnJuPTNEMjBpbXBs ZW1lbnRlZD0zRDIwc2E9CnZlPTNEMjBidXR0b24/PTNECkFmZmVjdGVkICM6ICAxIGZpbGUKCmRp ZmYgLXIgMTc2ZDQwYTQ0MzQ0NGZhYmQxZWI1M2IxNjg5ZTRlYzI5MGEwYzdlMCAtciAzM2Y4NDJj NmRlOTVkMGIwN2Q1NDEwNj0KZTM3ZGNlZmViNDY5YzVjMjkgY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBi L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24u bWFrbwpAQCAtMzcsNDYgKzM3LDE5IEBACiAgICAgICJtZXRhZGF0YSI6IHt9LAogICAgICAic291 cmNlIjogWwogICAgICAgIllvdSBjYW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhlIGRhdGFzZXQg bnVtYmVyLiBGb3IgZXhhbXBsZSwgYGhhbmQ9CmxlID0zRCBnZXQoNDIpYC5cXG4iLAotICAgICAg IlRvIHNhdmUgZGF0YSwgd3JpdGUgeW91ciBkYXRhIHRvIGEgZmlsZSwgYW5kIHRoZW4gY2FsbCBg cHV0KCdmaWxlbmE9Cm1lLnR4dCcpYC4gVGhlIGRhdGFzZXQgd2lsbCB0aGVuIGJlIGF2YWlsYWJs ZSBpbiB5b3VyIGdhbGF4eSBoaXN0b3J5LiIKKyAgICAgICJUbyBzYXZlIGRhdGEsIHdyaXRlIHlv dXIgZGF0YSB0byBhIGZpbGUsIGFuZCB0aGVuIGNhbGwgYHB1dCgnZmlsZW5hPQptZS50eHQnKWAu IFRoZSBkYXRhc2V0IHdpbGwgdGhlbiBiZSBhdmFpbGFibGUgaW4geW91ciBnYWxheHkgaGlzdG9y eS5cXG4iLAorICAgICAgIlRvIHNhdmUgeW91ciBub3RlYm9vayB0byBnYWxheHksIGNsaWNrIHRo ZSAnRG93bmxvYWQnIGJ1dHRvbiBhdCB0aGU9CiB0b3AgcmlnaHQgb2YgdGhlIElQeXRob24gaW50 ZXJmYWNlIgogICAgICBdCiAgICAgfSwKICAgICB7CiAgICAgICJjZWxsX3R5cGUiOiAiY29kZSIs CiAgICAgICJjb2xsYXBzZWQiOiBmYWxzZSwKICAgICAgImlucHV0IjogWwotICAgICAgIiMgVGhp cyBidXR0b24ganVzdCBjYWxscyBwdXQoJ2lweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5iJyki Ci0gICAgIF0sCi0gICAgICJsYW5ndWFnZSI6ICJweXRob24iLAotICAgICAibWV0YWRhdGEiOiB7 fSwKLSAgICAgIm91dHB1dHMiOiBbCi0gICAgICB7Ci0gICAgICAgImh0bWwiOiBbCi0gICAgICAg ICI8YnV0dG9uIG9uY2xpY2s9M0RcXFwic2F2ZSgpXFxcIj5TYXZlIE5vdGVib29rIHRvIEdhbGF4 eTwvYnV0dG9uPj0KXFxuIiwKLSAgICAgICAgIjxzY3JpcHQgdHlwZT0zRFxcXCJ0ZXh0L0phdmFz Y3JpcHRcXFwiPlxcbiIsCi0gICAgICAgICIgICAgZnVuY3Rpb24gc2F2ZSgpe1xcbiIsCi0gICAg ICAgICIgICAgICAgIGNvbnNvbGUubG9nKElQeXRob24ubm90ZWJvb2sua2VybmVsLmV4ZWN1dGUo XFxcInB1dCgnaXB5dD0KaG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYicpXFxcIikpO1xcbiIsCi0g ICAgICAgICIgICAgfVxcbiIsCi0gICAgICAgICI8L3NjcmlwdD5cXG4iCi0gICAgICAgXSwKLSAg ICAgICAibWV0YWRhdGEiOiB7fSwKLSAgICAgICAib3V0cHV0X3R5cGUiOiAicHlvdXQiLAotICAg ICAgICJwcm9tcHRfbnVtYmVyIjogMSwKLSAgICAgICAidGV4dCI6IFsKLSAgICAgICAgIjxJUHl0 aG9uLmNvcmUuZGlzcGxheS5IVE1MIGF0IDB4M2IzMzY1MD4iCi0gICAgICAgXQotICAgICAgfQot ICAgICBdLAotICAgICAicHJvbXB0X251bWJlciI6IDEKLSAgICB9LAotICAgIHsKLSAgICAgImNl bGxfdHlwZSI6ICJjb2RlIiwKLSAgICAgImNvbGxhcHNlZCI6IGZhbHNlLAotICAgICAiaW5wdXQi OiBbCiAgICAgIF0sCiAgICAgICJsYW5ndWFnZSI6ICJweXRob24iLAogICAgICAibWV0YWRhdGEi OiB7fSwKICAgICAgIm91dHB1dHMiOiBbXSwKLSAgICAgInByb21wdF9udW1iZXIiOiAyCisgICAg ICJwcm9tcHRfbnVtYmVyIjogMQogICAgIH0KICAgIF0sCiAgICAibWV0YWRhdGEiOiB7fQoKCmh0 dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9kMjRkNjc3 NWM4NzgvCkNoYW5nZXNldDogICBkMjRkNjc3NWM4NzgKVXNlcjogICAgICAgIGVyYXNjaGUyCkRh dGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBBdHRlbXB0 ZWQgYmV0dGVyIGRlc2NyaXB0aW9uCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgMzNmODQy YzZkZTk1ZDBiMDdkNTQxMDZlMzdkY2VmZWI0NjljNWMyOSAtciBkMjRkNjc3NWM4NzhhZDhlNTJh NmRiMD0KZGZiYTNhYjEwYTNjNTg0M2MgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMzgs NyArMzgsNyBAQAogICAgICAic291cmNlIjogWwogICAgICAgIllvdSBjYW4gYWNjZXNzIHlvdXIg ZGF0YSB2aWEgdGhlIGRhdGFzZXQgbnVtYmVyLiBGb3IgZXhhbXBsZSwgYGhhbmQ9CmxlID0zRCBn ZXQoNDIpYC5cXG4iLAogICAgICAgIlRvIHNhdmUgZGF0YSwgd3JpdGUgeW91ciBkYXRhIHRvIGEg ZmlsZSwgYW5kIHRoZW4gY2FsbCBgcHV0KCdmaWxlbmE9Cm1lLnR4dCcpYC4gVGhlIGRhdGFzZXQg d2lsbCB0aGVuIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGdhbGF4eSBoaXN0b3J5LlxcbiIsCi0gICAg ICAiVG8gc2F2ZSB5b3VyIG5vdGVib29rIHRvIGdhbGF4eSwgY2xpY2sgdGhlICdEb3dubG9hZCcg YnV0dG9uIGF0IHRoZT0KIHRvcCByaWdodCBvZiB0aGUgSVB5dGhvbiBpbnRlcmZhY2UiCisgICAg ICAiVG8gc2F2ZSB5b3VyIG5vdGVib29rIHRvIGdhbGF4eSwgY2xpY2sgdGhlIGJ1dHRvbiBhdCB0 aGUgdG9wIHJpZ2h0ID0Kb2YgdGhlIElQeXRob24gaW50ZXJmYWNlLCBuZXh0IHRvICdDZWxsIFRv b2xiYXInIgogICAgICBdCiAgICAgfSwKICAgICB7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2IyNjA4MDNiM2UxMi8KQ2hhbmdlc2V0OiAgIGIy NjA4MDNiM2UxMgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTgg MjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgIFBhc3NlZCBwb3J0IGFuZCBzZXQgVVJMIHBhdGgg Zm9yIGlweXRob24KVG8gYWxsb3cgZm9yIHNlcnZlciBhZG1pbmlzdHJhdG9ycyB0byBlYXNpbHkg c2VjdXJlIElQeU5Ccywgd2UgaGF2ZSB0byBzdG9wPQogc2VydmluZyBvdmVyIHBvcnRzLCBhbmQK c3RhcnQgc2VydmluZyB1bmRlciBhIHN1Yi1wYXRoLiBUaGlzIGNoYW5nZSB3aWxsIHJlcXVpcmUg dGhlIGludHJvZHVjdGlvbiBvPQpmIGFwYWNoZSBjb25maWd1cmF0aW9uIGFzCmEgaGFyZCByZXF1 aXJlbWVudCBmb3IgcmV3cml0aW5nIFVSTHMgcHJvcGVybHkgdG8gdGhlIGJhY2tlbmQuCgpGb3Ig YSBnaXZlbiBQb3J0ICRQLCBJUHlOQnMgYXJlIHN0YXJ0ZWQsIGxpc3RlbmluZyBvbiAxMjcuMC4w LjE6JFAvaXB5dGhvbi89CiRQLy4gVGhlc2UgYXJlIGFjY2Vzc2VkCnRocm91Z2ggdGhhdCB1cmwg d2l0aGluIGdhbGF4eS4gRm9yIHRoZSBhcGFjaGUgc3R5bGUgY29uZmlndXJhdGlvbiwgd2UgcmVt bz0KdmUgdGhlIGZpcnN0ICRQIGFuZApzaW1wbHkgYWNjZXNzIG5vdGVib29rcyBhdCAiMTI3LjAu MC4xL2lweXRob24vJFAvIiB3aGljaCBhbGxvd3MgdGhlIGFkbWluaXM9CnRyYXRvciB0byBhcHBs eSBTU0wgdG8KdGhlIC9pcHl0aG9uLyBwYXRoLCB0aGVyZWJ5IHNlY3VyaW5nIHRoZSBub3RlYm9v a3MuCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZDI0ZDY3NzVjODc4YWQ4ZTUyYTZkYjBk ZmJhM2FiMTBhM2M1ODQzYyAtciBiMjYwODAzYjNlMTI5MTg5NmMxMWE3Nz0KOGNjN2U3N2MzNDU3 OGViYzYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5 dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTE3LDYgKzExNyw3IEBACiAgICAg J2FwaV9rZXknOiB0cmFucy51c2VyLmFwaV9rZXlzWzBdLmtleSwKICAgICAncmVtb3RlX2hvc3Qn OiByZXF1ZXN0LnJlbW90ZV9hZGRyLAogICAgICdnYWxheHlfcGFzdGVyX3BvcnQnOiBnYWxheHlf cGFzdGVyX3BvcnQsCisgICAgJ2RvY2tlcl9wb3J0JzogUE9SVCwKIH0KPTIwCiB3aXRoIG9wZW4o IG9zLnBhdGguam9pbiggdGVtcF9kaXIsICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYW5kbGU6 CkBAIC0xNDQsOCArMTQ1LDggQEAKPTIwCj0yMAogPGJvZHk+Ci0gICAgPG9iamVjdCBkYXRhPTNE Imh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0vbm90ZWJvb2tzL2lweXRob25fZ2FsYXh5X25vdGVibz0K b2suaXB5bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj4KLSAgICAgICAgPGVtYmVk IHNyYz0zRCJodHRwOi8vJHtIT1NUfToke1BPUlR9L25vdGVib29rcy9pcHl0aG9uX2dhbGF4eV9u b3RlPQpib29rLmlweW5iIiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSI+CisgICAgPG9i amVjdCBkYXRhPTNEImh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0vaXB5dGhvbi8ke1BPUlR9L25vdGVi b29rcy9pcHl0aD0Kb25fZ2FsYXh5X25vdGVib29rLmlweW5iIiBoZWlnaHQ9M0QiMTAwJSIgd2lk dGg9M0QiMTAwJSI+CisgICAgICAgIDxlbWJlZCBzcmM9M0QiaHR0cDovLyR7SE9TVH06JHtQT1JU fS9pcHl0aG9uLyR7UE9SVH0vbm90ZWJvb2tzL2lweT0KdGhvbl9nYWxheHlfbm90ZWJvb2suaXB5 bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj48L2VtYmVkPjwvb2JqZWN0PQo+PC9i b2R5PgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0 cy8zY2JmMTg0Y2NlZGMvCkNoYW5nZXNldDogICAzY2JmMTg0Y2NlZGMKVXNlcjogICAgICAgIEJq b2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1h cnk6ICAgICBjaGFuZ2UgdGhlIHBvcnQgZGV0ZWN0aW9uIHRvIHBhcnNlIHRoZSB1bml2ZXJzZV93 c2dpLmluaSBmaWxlCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgYjI2MDgwM2IzZTEyOTE4 OTZjMTFhNzc4Y2M3ZTc3YzM0NTc4ZWJjNiAtciAzY2JmMTg0Y2NlZGM1OTM5NDAzYjQyMz0KMjg4 M2UyMDBkMjc5MDBiNzYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMSwxNSArMSwyNCBA QAogPCUKIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB5YW1sCitp bXBvcnQgc2hsZXgKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmls ZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRpbWUKIGltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQg eWFtbAotaW1wb3J0IHJhbmRvbQoraW1wb3J0IENvbmZpZ1BhcnNlcgo9MjAKK2dhbGF4eV9yb290 X2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKHRyYW5zLmFwcC5jb25maWcucm9vdCkKIGhpc3Rvcnlf aWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCiBkYXRh c2V0X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5pZCApCisKK2NvbmZpZyA9 M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoeydwb3J0JzogJzgwODAnfSkKK2NvbmZp Zy5yZWFkKCBvcy5wYXRoLmpvaW4oIGdhbGF4eV9yb290X2RpciwgJ3VuaXZlcnNlX3dzZ2kuaW5p JyApICkKKworZ2FsYXh5X3Bhc3Rlcl9wb3J0ID0zRCBjb25maWcuZ2V0aW50KCdzZXJ2ZXI6bWFp bicsICdwb3J0JykKKwogIyBFbnN1cmUgZ2VuZXJhdGlvbiBvZiBub3RlYm9vayBpZCBpcyBkZXRl cm1pbmlzdGljIGZvciB0aGUgZGF0YXNldC4gUmVwbGE9CmNlIHdpdGggaGlzdG9yeSBpZAogIyB3 aGVuZXZlciB3ZSBmaWd1cmUgb3V0IGhvdyB0byBhY2Nlc3MgdGhhdC4KIHJhbmRvbS5zZWVkKCBo aXN0b3J5X2lkICkKQEAgLTYwLDcgKzY5LDYgQEAKPTIwCj0yMAogIyBGaW5kIGFsbCBwb3J0cyB0 aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVkCi1pbXBvcnQgc2hsZXgKIGNtZF9uZXRzdGF0ID0zRCBz aGxleC5zcGxpdCgibmV0c3RhdCAtdHVsbiIpCiBwMSA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihjbWRf bmV0c3RhdCwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQo9MjAKQEAgLTg1LDMyICs5Myw2IEBA Cj0yMAogdGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVtcCgpICkK PTIwCi0jIEdldCBwb3J0IGdhbGF4eSBpcyBiZWluZyBzZXJ2ZWQgb24sIGlmIGl0IGlzIGJlaW5n IHNlcnZlZCBvbiBhIHNpbmdsZSBwbz0KcnQgdmlhIHBhc3RlIHByb2Nlc3MKLXAxID0zRCBzdWJw cm9jZXNzLlBvcGVuKHNobGV4LnNwbGl0KCIiInBzIGEiIiIpLCBzdGRvdXQ9M0RzdWJwcm9jZXNz LlBJUEUpCi0KLWdhbGF4eV9wYXN0ZXJfcGlkcyA9M0Qgc2V0KCkKLWZvciBsaW5lIGluIHAxLnN0 ZG91dC5yZWFkKCkuc3BsaXQoJ1xuJyk6Ci0gICAgbGluZSA9M0QgbGluZS5zdHJpcCgpCi0gICAg aWYgbGluZS5maW5kKCdweXRob24gLi9zY3JpcHQnKSAhPTNEIC0xOgotICAgICAgICBwb3J0ID0z RCBsaW5lLnNwbGl0KClbMF0KLSAgICAgICAgaWYgcG9ydC5pc2RpZ2l0KCk6Ci0gICAgICAgICAg ICBnYWxheHlfcGFzdGVyX3BpZHMuYWRkKCBwb3J0ICkKLQotIyBPbmx5IHRha2UgZmlyc3QgUElE IGluIGNhc2Ugd2UgaGF2ZSBtdWx0aXBsZS4KLWdhbGF4eV9wYXN0ZXJfcGlkID0zRCBnYWxheHlf cGFzdGVyX3BpZHMucG9wKCkKLWdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgTm9uZQotaWYgbGVuKGdh bGF4eV9wYXN0ZXJfcGlkKSA+IDA6Ci0gICAgIyBGaW5kIGFsbCBmaWxlcyBvcGVuZWQgYnkgdGhl IHByb2Nlc3Mgb2YgaW50ZXJlc3QKLSAgICBwMSA9M0Qgc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5z cGxpdCgiIiJsc29mIC1QIC1wICVkIiIiICUgKGludChnYWxheHlfPQpwYXN0ZXJfcGlkKSwpICks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj0zRHN1YnByb2Nlc3MuU1RET1VULCBz dGRvdXQ9M0RzdWJwcm9jZXNzLj0KUElQRSkKLSAgICAjIEdyZXAgb3V0IHRoZSBUQ1AgY29ubmVj dGlvbnMgb3BlbmVkIGJ5IHRoaXMgcHJvY2VzcwotICAgIHAyID0zRCBzdWJwcm9jZXNzLlBvcGVu KHNobGV4LnNwbGl0KCIiImdyZXAgLW8gJ1RDUCBbXjpdKjpbMC05XSonIiIiKSw9CiBzdGRpbj0z RHAxLnN0ZG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PTNEc3VicHJvY2Vz cy5QSVBFKQotICAgICMgUmVtb3ZlICdUQ1AgKjonIGZyb20gJ1RDUCAqOjQwMDAnCi0gICAgcDMg PTNEIHN1YnByb2Nlc3MuUG9wZW4oc2hsZXguc3BsaXQoIiIiY3V0IC1kOiAtZjIiIiIpLCBzdGRp bj0zRHAyLnN0ZD0Kb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9M0RzdWJw cm9jZXNzLlBJUEUpCi0gICAgZ2FsYXh5X3Bhc3Rlcl9wb3J0ID0zRCBwMy5zdGRvdXQucmVhZCgp LnN0cmlwKCkKLQogY29uZl9maWxlID0zRCB7CiAgICAgJ2hpc3RvcnlfaWQnOiBoaXN0b3J5X2lk LAogICAgICdnYWxheHlfdXJsJzogcmVxdWVzdC5hcHBsaWNhdGlvbl91cmwsCgoKaHR0cHM6Ly9i aXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzM3YTY1M2VhNjc2OC8K Q2hhbmdlc2V0OiAgIDM3YTY1M2VhNjc2OApVc2VyOiAgICAgICAgQmpvZXJuR3J1ZW5pbmcKRGF0 ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDMrMDA6MDAKU3VtbWFyeTogICAgIHJlbW92ZSB0 cmFpbGluZyBzbGFzaCwgYmV0dGVyIHNhdmUgdGhhbiBzb3JyeQpBZmZlY3RlZCAjOiAgMSBmaWxl CgpkaWZmIC1yIDNjYmYxODRjY2VkYzU5Mzk0MDNiNDIzMjg4M2UyMDBkMjc5MDBiNzYgLXIgMzdh NjUzZWE2NzY4OTQyNzEzMjAxYjA9CmFmODRkNjViZWQ4MjcwYWU1IGNvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwor KysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm1ha28KQEAgLTk1LDcgKzk1LDcgQEAKPTIwCiBjb25mX2ZpbGUgPTNEIHsKICAgICAnaGlz dG9yeV9pZCc6IGhpc3RvcnlfaWQsCi0gICAgJ2dhbGF4eV91cmwnOiByZXF1ZXN0LmFwcGxpY2F0 aW9uX3VybCwKKyAgICAnZ2FsYXh5X3VybCc6IHJlcXVlc3QuYXBwbGljYXRpb25fdXJsLnJzdHJp cCgnLycpLAogICAgICdhcGlfa2V5JzogdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCiAgICAg J3JlbW90ZV9ob3N0JzogcmVxdWVzdC5yZW1vdGVfYWRkciwKICAgICAnZ2FsYXh5X3Bhc3Rlcl9w b3J0JzogZ2FsYXh5X3Bhc3Rlcl9wb3J0LAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy8xMGYzMDVjMmVlMmIvCkNoYW5nZXNldDogICAxMGYzMDVj MmVlMmIKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4 OjAzKzAwOjAwClN1bW1hcnk6ICAgICBVcGRhdGVkIHRleHQgb24gb24gdGVtcGxhdGUgdG8gcmVm ZXIgdG8gYnV0dG9uIGNvbG91cgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDM3YTY1M2Vh Njc2ODk0MjcxMzIwMWIwYWY4NGQ2NWJlZDgyNzBhZTUgLXIgMTBmMzA1YzJlZTJiYmM0ZTczNzE3 YWM9CmRlNTdmNzM1YTc4YzZhOWMzIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTQ3LDcg KzQ3LDcgQEAKICAgICAgInNvdXJjZSI6IFsKICAgICAgICJZb3UgY2FuIGFjY2VzcyB5b3VyIGRh dGEgdmlhIHRoZSBkYXRhc2V0IG51bWJlci4gRm9yIGV4YW1wbGUsIGBoYW5kPQpsZSA9M0QgZ2V0 KDQyKWAuXFxuIiwKICAgICAgICJUbyBzYXZlIGRhdGEsIHdyaXRlIHlvdXIgZGF0YSB0byBhIGZp bGUsIGFuZCB0aGVuIGNhbGwgYHB1dCgnZmlsZW5hPQptZS50eHQnKWAuIFRoZSBkYXRhc2V0IHdp bGwgdGhlbiBiZSBhdmFpbGFibGUgaW4geW91ciBnYWxheHkgaGlzdG9yeS5cXG4iLAotICAgICAg IlRvIHNhdmUgeW91ciBub3RlYm9vayB0byBnYWxheHksIGNsaWNrIHRoZSBidXR0b24gYXQgdGhl IHRvcCByaWdodCA9Cm9mIHRoZSBJUHl0aG9uIGludGVyZmFjZSwgbmV4dCB0byAnQ2VsbCBUb29s YmFyJyIKKyAgICAgICJUbyBzYXZlIHlvdXIgbm90ZWJvb2sgdG8gZ2FsYXh5LCBjbGljayB0aGUg bGFyZ2UgZ3JlZW4gYnV0dG9uIGF0IHRoPQplIHRvcCByaWdodCBvZiB0aGUgSVB5dGhvbiBpbnRl cmZhY2UiCiAgICAgIF0KICAgICB9LAogICAgIHsKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2Fs YXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNWJlODZmNmU3MWZmLwpDaGFuZ2VzZXQ6ICAgNWJl ODZmNmU3MWZmClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAy MjozODowMyswMDowMApTdW1tYXJ5OiAgICAgQWRkZWQgaW5zdGFsbGF0aW9uIGluZm9ybWF0aW9u CkFmZmVjdGVkICM6ICAyIGZpbGVzCgpkaWZmIC1yIDEwZjMwNWMyZWUyYmJjNGU3MzcxN2FjZGU1 N2Y3MzVhNzhjNmE5YzMgLXIgNWJlODZmNmU3MWZmZDlkYzdjZWVjMDE9Cjc5NmU3MTdkMDg0NzZl NTU5IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vSU5TVEFMTC5tZAotLS0g L2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vSU5T VEFMTC5tZApAQCAtMCwwICsxLDU3IEBACisjIEluc3RhbGxhdGlvbgorCitXZSd2ZSBkZXZlbG9w ZWQgdGhlIHRlbXBsYXRlcyBhbmQgY29udGFpbmVycyBzdWNoIHRoYXQgdGhleSBjYW4gYmUgcnVu IHRocj0Kb3VnaCBhbiBBcGFjaGUgcHJveHkgdXNpbmcKK1NTTC4gVGhpcyByZXF1aXJlcyBzb21l IG5vbi10cml2aWFsIGFwYWNoZSBjb25maWd1cmF0aW9uIHRvIHN1cHBvcnQuCisKKyMjIFJlcXVp cmVtZW50cworCisgKiBgbW9kX3Byb3h5YAorICogYG1vZF9wcm94eV9odHRwYAorICogYG1vZF9w cm94eV93c3R1bm5lbGAKKyAqIGBtb2RfaGVhZGVyc2AKKworSVB5dGhvbiBtYWtlcyB1c2Ugb2Yg V2ViU29ja2V0cyB3aGljaCB3ZSBuZWVkIHRvIHByb3h5IGluIGFwYWNoZS4gU3VwcG9ydCA9Cndh cyBhZGRlZCB0byBgYXBhY2hlMi40YAorZm9yIHRoaXMsIHdoaWNoIGlzIGF2YWlsYWJsZSBpbiBg VWJ1bnR1IDE0LjA0YC4gVGhlcmUgYXJlIHR1dG9yaWFscyBvbiB0aGU9CiBpbnRlcm5ldCBmb3Ig YmFja3BvcnRpbmcKK3RoZSB3ZWJzb2NrZXRzIG1vZHVsZSwgYW5kIGluc3RhbGxpbmcgYGFwYWNo ZTIuNGAgUFBBcy4KKworIyMgQ29uZmlndXJhdGlvbgorCitIZXJlIGlzIHRoZSByZWxldmFudCBj b25maWd1cmF0aW9uCisKK2BgYGFwYWNoZQorUmV3cml0ZUVuZ2luZSBPbgorU2V0RW52SWYgUmVx dWVzdF9VUkkgIi9pcHl0aG9uLyhbMC05XSspL2FwaS9rZXJuZWxzLyIgRE9DS0VSX1BPUlQ9M0Qk MQorUmV3cml0ZVJ1bGUgICAgIF4vaXB5dGhvbi8oWzAtOV0rKS9hcGkva2VybmVscy8oLiopJCAg IHdzOi8vMTI3LjAuMC4xOiQxL2k9CnB5dGhvbi8kMS9hcGkva2VybmVscy8kMiBbUCxMXQorUmV3 cml0ZVJ1bGUgICAgIF4vaXB5dGhvbi8oWzAtOV0rKS8oLiopJCAgICAgICAgICAgICBodHRwOi8v bG9jYWxob3N0OiQxL2k9CnB5dGhvbi8kMS8kMiBbUCxMXQorPExvY2F0aW9uIC9pcHl0aG9uLz4K KyAgICAgICAgIyBzcG9vZiBoZWFkZXJzIHRvIG1ha2Ugbm90ZXBhZCBhY2NlcHQgdGhlIHJlcXVl c3QgYXMgY29taW5nIGZyb20gPQp0aGUgc2FtZSBvcmlnaW4KKyAgICAgICAgSGVhZGVyIHNldCBP cmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6JXtET0NLRVJfUE9SVH1lIgorICAgICAgICBSZXF1ZXN0 SGVhZGVyIHNldCBPcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6JXtET0NLRVJfUE9SVH1lIgorPC9M b2NhdGlvbj4KKzwvVmlydHVhbEhvc3Q+CitgYGAKKworV2UnbGwgc3RlcCB0aHJvdWdoIGxpbmUt YnktbGluZSBmb3IgY2xhcml0eS4KKworYGBgYXBhY2hlCitTZXRFbnZJZiBSZXF1ZXN0X1VSSSAi L2lweXRob24vKFswLTldKykvYXBpL2tlcm5lbHMvIiBET0NLRVJfUE9SVD0zRCQxCitgYGAKKwor SGVyZSB3ZSBjaGVjayB0aGUgYFJlcXVlc3RfVVJJYCBmb3IgdGhlIHByZXNlbmNlIGZvciB0aGUg a2VybmVsIHJlcXVlc3QuIFc9CmUgZG8gdGhpcyBvbmx5IGZvciB0aGUgYGFwaS9rZXJuZWxgIHN1 YmNhbGwsIGFzIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gd2hpYz0KaCBuZWVkcyBhY2Nlc3MgdG8g YERPQ0tFUl9QT1JUYCBpcyBrZXJuZWwgY2FsbHMuCisKK2BgYGFwYWNoZQorUmV3cml0ZVJ1bGUg Xi9pcHl0aG9uLyhbMC05XSspL2FwaS9rZXJuZWxzLyguKikkICAgd3M6Ly8xMjcuMC4wLjE6JDEv aXB5dGg9Cm9uLyQxL2FwaS9rZXJuZWxzLyQyIFtQLExdCitSZXdyaXRlUnVsZSBeL2lweXRob24v KFswLTldKykvKC4qKSQgICAgICAgICAgICAgaHR0cDovL2xvY2FsaG9zdDokMS9pcHl0aD0Kb24v JDEvJDIgW1AsTF0KK2BgYAorCitUaGVzZSB0d28gcnVsZXMgcHJveHkgYF4vaXB5dGhvbi9gIHJl cXVlc3RzIHRvIHRoZWlyIGNvcnJlY3QgbG9jYXRpb25zLiBBUD0KSSByZXF1ZXN0cyBmb3IgdGhl IElQeXRob24ga2VybmVsIGFyZSByb3V0ZWQgdGhyb3VnaCB0aGUgd3N0dW5uZWwgKFdlYlNvY2tl PQp0KSBwcm94eSwgd2hpbGUgYWxsIG90aGVyIHJlcXVlc3RzIGdvIHRocm91Z2ggSFRUUC4gVGhl cmUgYXJlIG1vZGlmaWVkIGxpc3Q9CmVkIGFmdGVyIGJvdGgsIGBbUCxMXWAuIGBQYCBzcGVjaWZp ZXMgYSBwcm94eSwgYW5kIGBMYCBzcGVjaWZpZXMgdGhpcyBpcyB0aD0KZSBsYXN0IHJ1bGUsIHRv IHByZXZlbnQgdGhlIHNlY29uZCByZXdyaXRlIHN0YXRlbWVudCBmcm9tIG1hdGNoaW5nIGFsbCBr ZXJuPQplbCBjYWxscy4KKworYGBgYXBhY2hlCis8TG9jYXRpb24gL2lweXRob24vPgorICAgICAg ICAjIHNwb29mIGhlYWRlcnMgdG8gbWFrZSBub3RlcGFkIGFjY2VwdCB0aGUgcmVxdWVzdCBhcyBj b21pbmcgZnJvbSA9CnRoZSBzYW1lIG9yaWdpbgorICAgICAgICBIZWFkZXIgc2V0IE9yaWdpbiAi aHR0cDovLzEyNy4wLjAuMTole0RPQ0tFUl9QT1JUfWUiCisgICAgICAgIFJlcXVlc3RIZWFkZXIg c2V0IE9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTole0RPQ0tFUl9QT1JUfWUiCis8L0xvY2F0aW9u PgorYGBgCisKK1RoZSBXZWJTb2NrZXQgc2VydmVyIGluIElQeXRob24gcGF5cyBhdHRlbnRpb24g dG8gQ3Jvc3MtT3JpZ2luLVJlcXVlc3RzIGFuPQpkIHdpbGwgdGhyb3VnaCB1cCBhIDUwMCBJbnRl cm5hbCBTZXJ2ZXIgRXJyb3IgKGluIGRvY2tlcikgaWYgeW91IGF0dGVtcHQgdG89CiBzZW5kIGl0 IGJhZCBkYXRhLiBUaHVzLCB3ZSB1c2UgdGhlIGV4dHJhY3RlZCBwb3J0IG51bWJlciBmcm9tIHRo ZSBlYXJsaWVyID0KYFNldEVudklmYCByZXF1ZXN0IGluIG9yZGVyIHRvIG9idGFpbiB0aGUgcG9y dCB0aGF0IElQeXRob24gd2lsbCBhY3R1YWxseSByPQplY2VpdmUgY29ubmVjdGlvbnMgZnJvbS4K CmRpZmYgLXIgMTBmMzA1YzJlZTJiYmM0ZTczNzE3YWNkZTU3ZjczNWE3OGM2YTljMyAtciA1YmU4 NmY2ZTcxZmZkOWRjN2NlZWMwMT0KNzk2ZTcxN2QwODQ3NmU1NTkgY29uZmlnL3BsdWdpbnMvdmlz dWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9SRUFETUUubWQKQEAgLTEwLDYgKzEwLDcgQEAKIEZvciBzZWN1cml0eSBy ZWFzb25zIHlvdSBuZWVkIHRvIGhhdmUgZG9ja2VyIGluc3RhbGxlZC4KIEZvciBhIGRldGFpbGVk IGluc3RydWN0aW9uIGhvdyB0byBpbnN0YWxsIGRvY2tlciwgcGxlYXNlIGxvb2sgYXQgdGhlIGRv Y2tlPQpyIHdlYnNpdGUuCj0yMAorCiBJbnN0YWxsYXRpb24KID0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRAo9MjAKQEAgLTM0LDYgKzM1LDE1IEBACiAgKiBzZWxmLWNsb3Npbmcg YW5kIGNsZWFuaW5nIElQeXRob24gZG9ja2VyIGNvbnRhaW5lcgo9MjAKPTIwCitTZWN1cml0eQor PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECisKKyAqIENvbnRhaW5lcnMgY2FuIGJlIHNlY3VyZWQg dmlhIEFwYWNoZStTU0wuIFBsZWFzZSBzZWUgdGhlIFtzZXR1cF0oSU5TVEFMPQpMLm1kKSBkb2N1 bWVudCBmb3IgbW9yZQorICAgaW5mb3JtYXRpb24uCisgKiBDb250YWluZXJzIHdpbGwgc29vbiBo YXZlIGBpcHRhYmxlc2AgYmFzZWQgc2VjdXJpdHkgdG8gcHJvdmlkZSBhIG1pbmltdT0KbSBhdHRl bXB0IGF0IHByZXZlbnRpbmcKKyAgIHVzZXJzIGZyb20gYWNjZXNzaW5nIG9uZSBhbm90aGVyJ3Mg bm90ZWJvb2tzLgorCisKIEF1dGhvcnMKID0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKCgpodHRw czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOTUxNDk1Yzcx ZTgzLwpDaGFuZ2VzZXQ6ICAgOTUxNDk1YzcxZTgzClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRl OiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowMyswMDowMApTdW1tYXJ5OiAgICAgVG9kbyBpdGVt IGNvbXBsZXRlZApBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDViZTg2ZjZlNzFmZmQ5ZGM3 Y2VlYzAxNzk2ZTcxN2QwODQ3NmU1NTkgLXIgOTUxNDk1YzcxZTgzYjFiYjgzMDcwZTY9CmExZDA5 ZTFhYjllMTMwZDMxIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxh dGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTEwNSw5ICsxMDUsNiBA QAogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55YW1sJyApLCAnd2In ICkgYXMgaGFuZGxlOgogICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNvbmZfZmlsZSwgZGVm YXVsdF9mbG93X3N0eWxlPTNERmFsc2UpICkKPTIwCi0jIFRPRE86IEltcGxlbWVudCBwcm9wZXIg SVB5TkIgZGF0YXR5cGUgYXRvcCBhIHByb3BlciBKU09OIGRhdGF0eXBlCi0jIEZvciBub3cgd2Ug YXNzdW1lIGFsbCAidGV4dCIgZGF0YXR5cGVzIGFyZSBpcHluYnMuCi0jIDxkYXRhdHlwZSBleHRl bnNpb249M0QiaXB5bmIiIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5kYXRhOlRleHQiIG1pbWV0 eT0KcGU9M0QiYXBwbGljYXRpb24vanNvbiIgc3ViY2xhc3M9M0QiVHJ1ZSIgZGlzcGxheV9pbl91 cGxvYWQ9M0QiVHJ1ZSIvPgogZW1wdHlfbmJfcGF0aCA9M0Qgb3MucGF0aC5qb2luKHRlbXBfZGly LCAnaXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmInKQogaWYgaGRhLmRhdGF0eXBlLl9fY2xh c3NfXy5fX25hbWVfXyAhPTNEICJJcHluYiI6CiAgICAgd2l0aCBvcGVuKCBlbXB0eV9uYl9wYXRo LCAndysnICkgYXMgaGFuZGxlOgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5 LWNlbnRyYWwvY29tbWl0cy8xY2MzMDJiNWJmYjgvCkNoYW5nZXNldDogICAxY2MzMDJiNWJmYjgK VXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAw OjAwClN1bW1hcnk6ICAgICBBZGRlZCBpbmZvcm1hdGlvbiBvbiB0ZW1wbGF0ZSBjaGFuZ2VzIHJl cXVpcmVkCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgOTUxNDk1YzcxZTgzYjFiYjgzMDcw ZTZhMWQwOWUxYWI5ZTEzMGQzMSAtciAxY2MzMDJiNWJmYjg1NjFhYzE3NWRmMz0KNzRhZDA3N2Q0 NzU2YWQ2NjMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9JTlNUQUxMLm1k Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vSU5TVEFMTC5tZAor KysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL0lOU1RBTEwubWQKQEAg LTE0LDcgKzE0LDcgQEAKIGZvciB0aGlzLCB3aGljaCBpcyBhdmFpbGFibGUgaW4gYFVidW50dSAx NC4wNGAuIFRoZXJlIGFyZSB0dXRvcmlhbHMgb24gdGhlPQogaW50ZXJuZXQgZm9yIGJhY2twb3J0 aW5nCiB0aGUgd2Vic29ja2V0cyBtb2R1bGUsIGFuZCBpbnN0YWxsaW5nIGBhcGFjaGUyLjRgIFBQ QXMuCj0yMAotIyMgQ29uZmlndXJhdGlvbgorIyMgQXBhY2hlIENvbmZpZ3VyYXRpb24KPTIwCiBI ZXJlIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uCj0yMApAQCAtNTUsMyArNTUsMzUgQEAK IGBgYAo9MjAKIFRoZSBXZWJTb2NrZXQgc2VydmVyIGluIElQeXRob24gcGF5cyBhdHRlbnRpb24g dG8gQ3Jvc3MtT3JpZ2luLVJlcXVlc3RzIGFuPQpkIHdpbGwgdGhyb3VnaCB1cCBhIDUwMCBJbnRl cm5hbCBTZXJ2ZXIgRXJyb3IgKGluIGRvY2tlcikgaWYgeW91IGF0dGVtcHQgdG89CiBzZW5kIGl0 IGJhZCBkYXRhLiBUaHVzLCB3ZSB1c2UgdGhlIGV4dHJhY3RlZCBwb3J0IG51bWJlciBmcm9tIHRo ZSBlYXJsaWVyID0KYFNldEVudklmYCByZXF1ZXN0IGluIG9yZGVyIHRvIG9idGFpbiB0aGUgcG9y dCB0aGF0IElQeXRob24gd2lsbCBhY3R1YWxseSByPQplY2VpdmUgY29ubmVjdGlvbnMgZnJvbS4K KworIyMgVGVtcGxhdGUgQ29uZmlndXJhdGlvbgorCitOb3JtYWxseSBjb250YWluZXJzIGFyZSBh Y2Nlc3NlZCB2aWEgVVJMcyB0aGF0IGxvb2sgbGlrZToKKworYGBgCitodHRwOi8vZnFkbjoxMTIz NS9pcHl0aG9uLzExMjM1L2lweXRob25fbm90ZWJvb2suaXB5bmIKK2BgYAorCitJbiBvcmRlciB0 byBzZWN1cmUgdGhlbSB3ZSB3YW50IHRvIGFjY2VzcyB0aGVtIHZpYSBVUkxzIHRoYXQgbG9vayBs aWtlOgorCitgYGAKK2h0dHA6Ly9mcWRuL2lweXRob24vMTEyMzUvaXB5dGhvbl9ub3RlYm9vay5p cHluYgorYGBgCisKK1RoaXMgY2hhbmdlIG5lZWRzIHRvIGJlIHJlYWxpc2VkIGluIHRoZSB0ZW1w bGF0ZSBmaWxlLiBBdCB0aGUgdmVyeSBlbmQgb2YgPQp0aGUgdGVtcGxhdGUgdGhlcmUgaXMgYSBz ZWN0aW9uIG9mIEhUTUwgY29kZSB3aGljaCBsb29rcyBsaWtlIHRoZSBmb2xsb3dpbmc6CisKK2Bg YGh0bWwKKzxvYmplY3QgZGF0YT0zRCJodHRwOi8vJHtIT1NUfToke1BPUlR9L2lweXRob24vJHtQ T1JUfS9ub3RlYm9va3MvaXB5dGhvbl9nPQphbGF4eV9ub3RlYm9vay5pcHluYiIgaGVpZ2h0PTNE IjEwMCUiIHdpZHRoPTNEIjEwMCUiPgorICAgIDxlbWJlZCBzcmM9M0QiaHR0cDovLyR7SE9TVH06 JHtQT1JUfS9pcHl0aG9uLyR7UE9SVH0vbm90ZWJvb2tzL2lweXRob249Cl9nYWxheHlfbm90ZWJv b2suaXB5bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj4KKyAgICA8L2VtYmVkPgor PC9vYmplY3Q+CitgYGAKKworSnVzdCByZW1vdmUgdGhlIGA6JHtQT1JUfWAgYW5kIHlvdSdyZSBy ZWFkeSB0byBnbyEgSXQgc2hvdWxkIGxvb2sgbGlrZSB0aGk9CnM6CisKK2BgYGh0bWwKKzxvYmpl Y3QgZGF0YT0zRCJodHRwOi8vJHtIT1NUfS9pcHl0aG9uLyR7UE9SVH0vbm90ZWJvb2tzL2lweXRo b25fZ2FsYXh5X25vPQp0ZWJvb2suaXB5bmIiIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAl Ij4KKyAgICA8ZW1iZWQgc3JjPTNEImh0dHA6Ly8ke0hPU1R9L2lweXRob24vJHtQT1JUfS9ub3Rl Ym9va3MvaXB5dGhvbl9nYWxheHlfPQpub3RlYm9vay5pcHluYiIgaGVpZ2h0PTNEIjEwMCUiIHdp ZHRoPTNEIjEwMCUiPgorICAgIDwvZW1iZWQ+Cis8L29iamVjdD4KK2BgYAoKCmh0dHBzOi8vYml0 YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hZmE4MDVjYjUwMDYvCkNo YW5nZXNldDogICBhZmE4MDVjYjUwMDYKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAg ICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBVcGRhdGVkIHJlcXVpcmVt ZW50IGxpc3QKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAxY2MzMDJiNWJmYjg1NjFhYzE3 NWRmMzc0YWQwNzdkNDc1NmFkNjYzIC1yIGFmYTgwNWNiNTAwNjM0NjIxNWI3NDgxPQpiNzJiN2Jl MWRiYjhjNTUwYSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL0lOU1RBTEwu bWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9JTlNUQUxMLm1k CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vSU5TVEFMTC5tZApA QCAtNSwxMCArNSwxMiBAQAo9MjAKICMjIFJlcXVpcmVtZW50cwo9MjAKLSAqIGBtb2RfcHJveHlg Ci0gKiBgbW9kX3Byb3h5X2h0dHBgCi0gKiBgbW9kX3Byb3h5X3dzdHVubmVsYAotICogYG1vZF9o ZWFkZXJzYAorICogW21vZF9oZWFkZXJzXShodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIu NC9tb2QvbW9kX2hlYWRlcnMuaHRtbCkKKyAqIFttb2RfcHJveHldKGh0dHA6Ly9odHRwZC5hcGFj aGUub3JnL2RvY3MvMi40L21vZC9tb2RfcHJveHkuaHRtbCkKKyAqIFttb2RfcHJveHlfaHR0cF0o aHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbW9kL21vZF9wcm94eV9odHRwLmh0PQpt bCkKKyAqIFttb2RfcHJveHlfd3N0dW5uZWxdKGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3Mv Mi40L21vZC9tb2RfcHJveHlfd3N0PQp1bm5lbC5odG1sKQorICogW21vZF9yZXdyaXRlXShodHRw Oi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Jld3JpdGUuaHRtbCkKKyAqIFtt b2Rfc2V0ZW52aWZdKGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2Rfc2V0 ZW52aWYuaHRtbCkKPTIwCiBJUHl0aG9uIG1ha2VzIHVzZSBvZiBXZWJTb2NrZXRzIHdoaWNoIHdl IG5lZWQgdG8gcHJveHkgaW4gYXBhY2hlLiBTdXBwb3J0ID0Kd2FzIGFkZGVkIHRvIGBhcGFjaGUy LjRgCiBmb3IgdGhpcywgd2hpY2ggaXMgYXZhaWxhYmxlIGluIGBVYnVudHUgMTQuMDRgLiBUaGVy ZSBhcmUgdHV0b3JpYWxzIG9uIHRoZT0KIGludGVybmV0IGZvciBiYWNrcG9ydGluZwoKCmh0dHBz Oi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy82ODNlMWNhMjUz MWMvCkNoYW5nZXNldDogICA2ODNlMWNhMjUzMWMKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6 ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBNZW50aW9uZWQg bmdpbngKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBhZmE4MDVjYjUwMDYzNDYyMTViNzQ4 MWI3MmI3YmUxZGJiOGM1NTBhIC1yIDY4M2UxY2EyNTMxYzE0NzRkNDkwMjYwPQplMTljOTNhYTA4 YWI5ZjAyYSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL0lOU1RBTEwubWQK LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9JTlNUQUxMLm1kCisr KyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vSU5TVEFMTC5tZApAQCAt NTgsNiArNTgsMTAgQEAKPTIwCiBUaGUgV2ViU29ja2V0IHNlcnZlciBpbiBJUHl0aG9uIHBheXMg YXR0ZW50aW9uIHRvIENyb3NzLU9yaWdpbi1SZXF1ZXN0cyBhbj0KZCB3aWxsIHRocm91Z2ggdXAg YSA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yIChpbiBkb2NrZXIpIGlmIHlvdSBhdHRlbXB0IHRv PQogc2VuZCBpdCBiYWQgZGF0YS4gVGh1cywgd2UgdXNlIHRoZSBleHRyYWN0ZWQgcG9ydCBudW1i ZXIgZnJvbSB0aGUgZWFybGllciA9CmBTZXRFbnZJZmAgcmVxdWVzdCBpbiBvcmRlciB0byBvYnRh aW4gdGhlIHBvcnQgdGhhdCBJUHl0aG9uIHdpbGwgYWN0dWFsbHkgcj0KZWNlaXZlIGNvbm5lY3Rp b25zIGZyb20uCj0yMAorIyMgTmdpbnggQ29uZmlndXJhdGlvbgorCitQbGVhc2Ugc3VibWl0IGl0 IGlmIHlvdSB3cml0ZSBpdCEKKwogIyMgVGVtcGxhdGUgQ29uZmlndXJhdGlvbgo9MjAKIE5vcm1h bGx5IGNvbnRhaW5lcnMgYXJlIGFjY2Vzc2VkIHZpYSBVUkxzIHRoYXQgbG9vayBsaWtlOgoKCmh0 dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy80NDA3MzM1 MDY2Y2EvCkNoYW5nZXNldDogICA0NDA3MzM1MDY2Y2EKVXNlcjogICAgICAgIGVyYXNjaGUyCkRh dGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBFeHRyYWN0 ZWQgY29uZmlndXJhdGlvbiBmaWxlCkN1cnJlbnRseSBvbmx5IGEgZmV3IHZhcmlhYmxlcywgbW9y ZSBjYW4gYmUgcGxhY2VkIGhlcmUgbGF0ZXIuCkFmZmVjdGVkICM6ICAyIGZpbGVzCgpkaWZmIC1y IDY4M2UxY2EyNTMxYzE0NzRkNDkwMjYwZTE5YzkzYWEwOGFiOWYwMmEgLXIgNDQwNzMzNTA2NmNh YTY0ZWFiYzU0ZjM9Cjk2ZGRjNzIyM2ZlZTk0OTc1IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vY29uZi9pcHl0aG9uLmNvbmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi5jb25mCkBAIC0wLDAg KzEsNyBAQAorW21haW5dCithcGFjaGVfdXJscyA9M0QgRmFsc2UKKworW2RvY2tlcl0KK2NvbW1h bmQgPTNEICJkb2NrZXIiCitpbWFnZSA9M0QgImJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3Rl Ym9vayIKKwoKZGlmZiAtciA2ODNlMWNhMjUzMWMxNDc0ZDQ5MDI2MGUxOWM5M2FhMDhhYjlmMDJh IC1yIDQ0MDczMzUwNjZjYWE2NGVhYmM1NGYzPQo5NmRkYzcyMjNmZWU5NDk3NSBjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0g YS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9u Lm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaXB5dGhvbi5tYWtvCkBAIC0xOSw2ICsxOSwyMCBAQAo9MjAKIGdhbGF4eV9wYXN0ZXJfcG9y dCA9M0QgY29uZmlnLmdldGludCgnc2VydmVyOm1haW4nLCAncG9ydCcpCj0yMAorIyBGaW5kIG91 dCB3aGVyZSB3ZSBhcmUKK3Zpel9wbHVnaW5fZGlyID0zRCBjb25maWcuZ2V0KCdhcHA6bWFpbics ICd2aXN1YWxpemF0aW9uX3BsdWdpbnNfZGlyZWN0b3J5PQonKQoraWYgbm90IG9zLnBhdGguaXNh YnModml6X3BsdWdpbl9kaXIpOgorICAgICMgSWYgaXQgaXMgTk9UIGFic29sdXRlLCBpLmUuIHJl bGF0aXZlLCBhcHBlbmQgdG8gZ2FsYXh5IHJvb3QKKyAgICB2aXpfcGx1Z2luX2RpciA9M0Qgb3Mu cGF0aC5qb2luKGdhbGF4eV9yb290X2Rpciwgdml6X3BsdWdpbl9kaXIpCisjIEdldCB0aGlzIHBs dWdpbidzIGRpcmVjdG9yeQordml6X3BsdWdpbl9kaXIgPTNEIG9zLnBhdGguam9pbih2aXpfcGx1 Z2luX2RpciwgImlweXRob24iKQorIyBTdG9yZSBvdXIgdGVtcGxhdGUgYW5kIGNvbmZpZ3VyYXRp b24gcGF0aAorb3VyX2NvbmZpZ19kaXIgPTNEIG9zLnBhdGguam9pbih2aXpfcGx1Z2luX2Rpciwg ImNvbmZpZyIpCitvdXJfdGVtcGxhdGVfZGlyID0zRCBvcy5wYXRoLmpvaW4odml6X3BsdWdpbl9k aXIsICJ0ZW1wbGF0ZSIpCitpcHlfdml6X2NvbmZpZyA9M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25m aWdQYXJzZXIoeydhcGFjaGVfdXJscyc6IEZhbHNlLCAnYz0Kb21tYW5kJzogJ2RvY2tlcicsICdp bWFnZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn YmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLT0Kbm90ZWJvb2snfSkKK2lweV92aXpfY29uZmlnLnJl YWQoIG9zLnBhdGguam9pbiggb3VyX2NvbmZpZ19kaXIsICJpcHl0aG9uLmNvbmYiICkgKQorCiAj IEVuc3VyZSBnZW5lcmF0aW9uIG9mIG5vdGVib29rIGlkIGlzIGRldGVybWluaXN0aWMgZm9yIHRo ZSBkYXRhc2V0LiBSZXBsYT0KY2Ugd2l0aCBoaXN0b3J5IGlkCiAjIHdoZW5ldmVyIHdlIGZpZ3Vy ZSBvdXQgaG93IHRvIGFjY2VzcyB0aGF0LgogcmFuZG9tLnNlZWQoIGhpc3RvcnlfaWQgKQpAQCAt MTEyLDcgKzEyNiwxMyBAQAogZWxzZToKICAgICBzaHV0aWwuY29weSggaGRhLmZpbGVfbmFtZSwg ZW1wdHlfbmJfcGF0aCApCj0yMAotZG9ja2VyX2NtZCA9M0QgJ2RvY2tlciBydW4gLWQgLS1zaWct cHJveHk9M0R0cnVlIC1wICVzOjY3ODkgLXYgIiVzOi9pbXBvcnQ9Ci8iIGJncnVlbmluZy9kb2Nr ZXItaXB5dGhvbi1ub3RlYm9vaycgJSAoUE9SVCwgdGVtcF9kaXIpCitkb2NrZXJfY21kID0zRCAn JXMgcnVuIC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczo2Nzg5IC12ICIlczovaW1wb3J0LyIg JT0KcycgJSBcCisgICAgKGlweV92aXpfY29uZmlnLmdldCgiZG9ja2VyIiwgImNvbW1hbmQiKSwg UE9SVCwgdGVtcF9kaXIsIGlweV92aXpfY29uZj0KaWcuZ2V0KCJkb2NrZXIiLCAiaW1hZ2UiKSkK KworaWYgaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJhcGFjaGVfdXJscyIpOgor ICAgIG5vdGVib29rX2FjY2Vzc191cmwgPTNEICJodHRwOi8vJXMvaXB5dGhvbi8lcy9ub3RlYm9v a3MvaXB5dGhvbl9nYWxheHk9Cl9ub3RlYm9vay5pcHluYiIgJSAoIEhPU1QsIFBPUlQgKQorZWxz ZToKKyAgICBub3RlYm9va19hY2Nlc3NfdXJsID0zRCAiaHR0cDovLyVzOiVzL2lweXRob24vJXMv bm90ZWJvb2tzL2lweXRob25fZ2FsPQpheHlfbm90ZWJvb2suaXB5bmIiICUgKCBIT1NULCBQT1JU LCBQT1JUICkKIHN1YnByb2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCj0yMAog IyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIEltYWdlIGFuZCBJUHl0aG9uIGluIGxvYWRlZApA QCAtMTI0LDggKzE0NCw4IEBACj0yMAo9MjAKIDxib2R5PgotICAgIDxvYmplY3QgZGF0YT0zRCJo dHRwOi8vJHtIT1NUfToke1BPUlR9L2lweXRob24vJHtQT1JUfS9ub3RlYm9va3MvaXB5dGg9Cm9u X2dhbGF4eV9ub3RlYm9vay5pcHluYiIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiPgot ICAgICAgICA8ZW1iZWQgc3JjPTNEImh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0vaXB5dGhvbi8ke1BP UlR9L25vdGVib29rcy9pcHk9CnRob25fZ2FsYXh5X25vdGVib29rLmlweW5iIiBoZWlnaHQ9M0Qi MTAwJSIgd2lkdGg9M0QiMTAwJSI+CisgICAgPG9iamVjdCBkYXRhPTNEIiR7bm90ZWJvb2tfYWNj ZXNzX3VybH0iIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj4KKyAgICAgICAgPGVtYmVk IHNyYz0zRCIke25vdGVib29rX2FjY2Vzc191cmx9IiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0Qi MTAwPQolIj48L2VtYmVkPjwvb2JqZWN0PjwvYm9keT4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcv Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMDg4MmIxMDk3OTM5LwpDaGFuZ2VzZXQ6ICAg MDg4MmIxMDk3OTM5ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0x OCAyMjozODowMyswMDowMApTdW1tYXJ5OiAgICAgRXh0cmFjdGVkIHRlbXBsYXRlIGludG8gYSB0 ZW1wbGF0ZSBmaWxlCkl0IHdhcyByZWFsbHkgYXdmdWwgdG8gaGF2ZSB0aGF0IGZpbGUgbWFpbnRh aW5lZCB3aXRoIHRoZSByZXN0IG9mIHRoZSBzb3VyYz0KZSBjb2RlLCBub3cgaXQgaXMKc2VwYXJh dGUuCkFmZmVjdGVkICM6ICAyIGZpbGVzCgpkaWZmIC1yIDQ0MDczMzUwNjZjYWE2NGVhYmM1NGYz OTZkZGM3MjIzZmVlOTQ5NzUgLXIgMDg4MmIxMDk3OTM5ODY2NGYxMGUzYzU9CmE0ODg3Y2ZiYmU0 NGI5NWVkIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lw eXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v dGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTI4LDcgKzI4LDcgQEAKIHZpel9w bHVnaW5fZGlyID0zRCBvcy5wYXRoLmpvaW4odml6X3BsdWdpbl9kaXIsICJpcHl0aG9uIikKICMg U3RvcmUgb3VyIHRlbXBsYXRlIGFuZCBjb25maWd1cmF0aW9uIHBhdGgKIG91cl9jb25maWdfZGly ID0zRCBvcy5wYXRoLmpvaW4odml6X3BsdWdpbl9kaXIsICJjb25maWciKQotb3VyX3RlbXBsYXRl X2RpciA9M0Qgb3MucGF0aC5qb2luKHZpel9wbHVnaW5fZGlyLCAidGVtcGxhdGUiKQorb3VyX3Rl bXBsYXRlX2RpciA9M0Qgb3MucGF0aC5qb2luKHZpel9wbHVnaW5fZGlyLCAidGVtcGxhdGVzIikK IGlweV92aXpfY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J2FwYWNo ZV91cmxzJzogRmFsc2UsICdjPQpvbW1hbmQnOiAnZG9ja2VyJywgJ2ltYWdlJzoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZ3J1ZW5pbmcvZG9ja2Vy LWlweXRob24tPQpub3RlYm9vayd9KQogaXB5X3Zpel9jb25maWcucmVhZCggb3MucGF0aC5qb2lu KCBvdXJfY29uZmlnX2RpciwgImlweXRob24uY29uZiIgKSApCkBAIC0zNyw0OSArMzcsMTAgQEAK ICMgd2hlbmV2ZXIgd2UgZmlndXJlIG91dCBob3cgdG8gYWNjZXNzIHRoYXQuCiByYW5kb20uc2Vl ZCggaGlzdG9yeV9pZCApCiBub3RlYm9va19pZCA9M0QgJycuam9pbihyYW5kb20uY2hvaWNlKCcw MTIzNDU2Nzg5YWJjZGVmJykgZm9yIF8gaW4gcmFuZ2UoNj0KNCkpCi1lbXB0eV9uYiA9M0QgIiIi ewotICJtZXRhZGF0YSI6IHsKLSAgIm5hbWUiOiAiIiwKLSAgInNpZ25hdHVyZSI6ICJzaGEyNTY6 JXMiCi0gfSwKLSAibmJmb3JtYXQiOiAzLAotICJuYmZvcm1hdF9taW5vciI6IDAsCi0gIndvcmtz aGVldHMiOiBbCi0gIHsKLSAgICJjZWxscyI6IFsKLSAgICB7Ci0gICAgICJjZWxsX3R5cGUiOiAi aGVhZGluZyIsCi0gICAgICJsZXZlbCI6IDEsCi0gICAgICJtZXRhZGF0YSI6IHt9LAotICAgICAi c291cmNlIjogWwotICAgICAgIldlbGNvbWUgdG8gdGhlIGludGVyYWN0aXZlIEdhbGF4eSBJUHl0 aG9uIE5vdGVib29rLiIKLSAgICAgXQotICAgIH0sCi0gICAgewotICAgICAiY2VsbF90eXBlIjog Im1hcmtkb3duIiwKLSAgICAgIm1ldGFkYXRhIjoge30sCi0gICAgICJzb3VyY2UiOiBbCi0gICAg ICAiWW91IGNhbiBhY2Nlc3MgeW91ciBkYXRhIHZpYSB0aGUgZGF0YXNldCBudW1iZXIuIEZvciBl eGFtcGxlLCBgaGFuZD0KbGUgPTNEIGdldCg0MilgLlxcbiIsCi0gICAgICAiVG8gc2F2ZSBkYXRh LCB3cml0ZSB5b3VyIGRhdGEgdG8gYSBmaWxlLCBhbmQgdGhlbiBjYWxsIGBwdXQoJ2ZpbGVuYT0K bWUudHh0JylgLiBUaGUgZGF0YXNldCB3aWxsIHRoZW4gYmUgYXZhaWxhYmxlIGluIHlvdXIgZ2Fs YXh5IGhpc3RvcnkuXFxuIiwKLSAgICAgICJUbyBzYXZlIHlvdXIgbm90ZWJvb2sgdG8gZ2FsYXh5 LCBjbGljayB0aGUgbGFyZ2UgZ3JlZW4gYnV0dG9uIGF0IHRoPQplIHRvcCByaWdodCBvZiB0aGUg SVB5dGhvbiBpbnRlcmZhY2UiCi0gICAgIF0KLSAgICB9LAotICAgIHsKLSAgICAgImNlbGxfdHlw ZSI6ICJjb2RlIiwKLSAgICAgImNvbGxhcHNlZCI6IGZhbHNlLAotICAgICAiaW5wdXQiOiBbCi0g ICAgIF0sCi0gICAgICJsYW5ndWFnZSI6ICJweXRob24iLAotICAgICAibWV0YWRhdGEiOiB7fSwK LSAgICAgIm91dHB1dHMiOiBbXSwKLSAgICAgInByb21wdF9udW1iZXIiOiAxCi0gICAgfQotICAg XSwKLSAgICJtZXRhZGF0YSI6IHt9Ci0gIH0KLSBdCi19Ci0iIiIgJSAobm90ZWJvb2tfaWQsICkK Kword2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91cl90ZW1wbGF0ZV9kaXIsICdub3RlYm9vay5p cHluYicgKSwgJ3InKSBhcyBuYl89CmhhbmRsZToKKyAgICBlbXB0eV9uYiA9M0QgbmJfaGFuZGxl LnJlYWQoKQorZW1wdHlfbmIgPTNEIGVtcHR5X25iICUgbm90ZWJvb2tfaWQKPTIwCj0yMAogIyBG aW5kIGFsbCBwb3J0cyB0aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVkCgpkaWZmIC1yIDQ0MDczMzUw NjZjYWE2NGVhYmM1NGYzOTZkZGM3MjIzZmVlOTQ5NzUgLXIgMDg4MmIxMDk3OTM5ODY2NGYxMGUz YzU9CmE0ODg3Y2ZiYmU0NGI5NWVkIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vdGVtcGxhdGVzL25vdGVib29rLj0KaXB5bmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9ub3RlYm9vay5pcHluYgpA QCAtMCwwICsxLDQyIEBACit7CisgIm1ldGFkYXRhIjogeworICAibmFtZSI6ICIiLAorICAic2ln bmF0dXJlIjogInNoYTI1NjolcyIKKyB9LAorICJuYmZvcm1hdCI6IDMsCisgIm5iZm9ybWF0X21p bm9yIjogMCwKKyAid29ya3NoZWV0cyI6IFsKKyAgeworICAgImNlbGxzIjogWworICAgIHsKKyAg ICAgImNlbGxfdHlwZSI6ICJoZWFkaW5nIiwKKyAgICAgImxldmVsIjogMSwKKyAgICAgIm1ldGFk YXRhIjoge30sCisgICAgICJzb3VyY2UiOiBbCisgICAgICAiV2VsY29tZSB0byB0aGUgaW50ZXJh Y3RpdmUgR2FsYXh5IElQeXRob24gTm90ZWJvb2suIgorICAgICBdCisgICAgfSwKKyAgICB7Cisg ICAgICJjZWxsX3R5cGUiOiAibWFya2Rvd24iLAorICAgICAibWV0YWRhdGEiOiB7fSwKKyAgICAg InNvdXJjZSI6IFsKKyAgICAgICJZb3UgY2FuIGFjY2VzcyB5b3VyIGRhdGEgdmlhIHRoZSBkYXRh c2V0IG51bWJlci4gRm9yIGV4YW1wbGUsIGBoYW5kPQpsZSA9M0QgZ2V0KDQyKWAuXFxuIiwKKyAg ICAgICJUbyBzYXZlIGRhdGEsIHdyaXRlIHlvdXIgZGF0YSB0byBhIGZpbGUsIGFuZCB0aGVuIGNh bGwgYHB1dCgnZmlsZW5hPQptZS50eHQnKWAuIFRoZSBkYXRhc2V0IHdpbGwgdGhlbiBiZSBhdmFp bGFibGUgaW4geW91ciBnYWxheHkgaGlzdG9yeS5cXG4iLAorICAgICAgIlRvIHNhdmUgeW91ciBu b3RlYm9vayB0byBnYWxheHksIGNsaWNrIHRoZSBsYXJnZSBncmVlbiBidXR0b24gYXQgdGg9CmUg dG9wIHJpZ2h0IG9mIHRoZSBJUHl0aG9uIGludGVyZmFjZSIKKyAgICAgXQorICAgIH0sCisgICAg eworICAgICAiY2VsbF90eXBlIjogImNvZGUiLAorICAgICAiY29sbGFwc2VkIjogZmFsc2UsCisg ICAgICJpbnB1dCI6IFsKKyAgICAgXSwKKyAgICAgImxhbmd1YWdlIjogInB5dGhvbiIsCisgICAg ICJtZXRhZGF0YSI6IHt9LAorICAgICAib3V0cHV0cyI6IFtdLAorICAgICAicHJvbXB0X251bWJl ciI6IDEKKyAgICB9CisgICBdLAorICAgIm1ldGFkYXRhIjoge30KKyAgfQorIF0KK30KCgpodHRw czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOWQzNWVhMmU1 MDc0LwpDaGFuZ2VzZXQ6ICAgOWQzNWVhMmU1MDc0ClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmlu ZwpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowMyswMDowMApTdW1tYXJ5OiAgICAgVXBk YXRlIFJFQURNRS5tZApBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDA4ODJiMTA5NzkzOTg2 NjRmMTBlM2M1YTQ4ODdjZmJiZTQ0Yjk1ZWQgLXIgOWQzNWVhMmU1MDc0YjcwMjBkMTFlODY9CjIy MWVjYmFjZTFjNDI2N2FlIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVB RE1FLm1kCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1F Lm1kCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1FLm1k CkBAIC0xNCwxMSArMTQsMTIgQEAKIEluc3RhbGxhdGlvbgogPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNECj0yMAotQ29weSB0aGUgdGVtcGxhdGUgYW5kIGNvbmZpZyBmb2xkZXIg aW4geW91ciA8R0FMQVhZX1JPT1Q+L2NvbmZpZy9wbHVnaW5zL3Y9CmlzdWFsaXphdGlvbnMvaXB5 dGhvbiBmb2xkZXIgYW5kIHJlc3RhcnQgR2FsYXh5LgorQ29weSB0aGUgdGVtcGxhdGUgYW5kIGNv bmZpZyBmb2xkZXIgaW4geW91ciBgYEdBTEFYWV9ST09UL2NvbmZpZy9wbHVnaW5zL3Y9CmlzdWFs aXphdGlvbnMvaXB5dGhvbmBgIGZvbGRlciBhbmQgcmVzdGFydCBHYWxheHkuCitBbHRlcm5hdGl2 bHksIHlvdSBjYW4gY2xvbmUgdGhlIHJlcG9zaXRvcnkgd2l0aAo9MjAKLW9yCi0KLWBgZ2l0IGNs b25lIGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24uZ2l0IGNvbmZp Zy9wbHVnaW5zPQovdml6L2lweXRob25gYAorYGBgYmFzaAorZ2l0IGNsb25lIGh0dHBzOi8vZ2l0 aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24uZ2l0IGNvbmZpZy9wbHVnaW5zL3Y9Cml6 L2lweXRob24KK2BgYGAKPTIwCiBUaGUgSVB5dGhvbiBWaXN1YWxpc2F0aW9uIE9wdGlvbiBzaG91 bGQgYmUgdmlzaWJsZSBuZXh0IHRvIHRoZSB1c3VhbCBDaGFydD0KcyBvciBUcmFja3N0ZXIgT3B0 aW9ucyBpbiB5b3VyIFZpc3VhbGlzYXRpb24gbWVudWUuCj0yMApAQCAtMzAsMTEgKzMxLDU4IEBA CiAgKiBjb21wbGV0ZSBlbmNhcHN1bGF0ZWQgcHl0aG9uIGVudmlyb25tZW50IHdpdGggbWF0cGxv dGxpYiwgcGFuZGFzIGFuZCBmcj0KaWVuZHMgaW5zdGFsbGVkCiAgKiBhY2Nlc3MgdG8gYWxsIGRh dGFzZXRzIGZyb20geW91ciBjdXJyZW50IGhpc3RvcnkgdmlhIHByZS1kZWZpbmVkIElQeXRobz0K biBmdW5jdGlvbgogICogbWFuaXB1bGF0ZSBhbmQgcGxvdCBkYXRhIGFzIHlvdSBsaWtlIGFuZCBl eHBvcnQgeW91ciBuZXcgZmlsZXMgYmFjayBpbnQ9Cm8gdGhlIEdhbGF4eSBoaXN0b3J5CisgKiBh Y2Nlc3MgeW91ciBHYWxheHkgaW5zdGFuY2UgZnJvbSBJUHl0aG9uIHdpdGggYmlvYmxlbmQgYW5k IHJlZGVmaW5lZCBmdT0KbmN0aW9ucwogICogc2F2ZSB0aGUgSVB5dGhvbiBOb3RlYm9vayBpbnRv IHlvdXIgR2FsYXh5IGhpc3RvcnkKKyAqIG5vdGVib29rIHBlcnNpc3RlbmNlIGFjcm9zcyBzZXNz aW9ucwogICogc2F2ZWQgSVB5dGhvbiBOb3RlYm9vayBmaWxlcyBjYW4gYmUgdmlld2VkIGluIEhU TUwgYW5kIHJlLW9wZW5lZAogICogc2VsZi1jbG9zaW5nIGFuZCBjbGVhbmluZyBJUHl0aG9uIGRv Y2tlciBjb250YWluZXIKPTIwCj0yMAorRnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMKKz0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRAorCitGb3IgeW91ciBjb252aWVuY2UsIHdlIGhhdmUgYWRkZWQgYSBmZXcgcHJlLWRlZmlu ZWQgZnVuY3Rpb25zIHRvIHRoZSBJUHl0aD0Kb24gcHJvZmlsZS4KKworIyMjIGdldAorCisgICBU aGUgZ2V0IGZ1bmN0aW9uIHdpbGwgY29weSBhIGRhdGFzZXQsIGlkZW50aWZpZWQgYnkgdGhlIGhp c3RvcnlfaWQsIGZybz0KbSB5b3VyIGN1cnJlbnQgR2FsYXh5PTIwCisgICBpbnRvIHRoZSBkb2Nr ZXIgY29udGFpbmVyLiBJdCB3aWxsIHJldHVybiB0aGUgZmlsZSBwYXRoIHRvIHRoZSBjb3BpZWQg Zj0KaWxlLgorCisgICAqRXhhbXBsZSo6CisgICBgYGBweXRob24KKyAgICAgIHdpdGggb3Blbigg Z2V0KCA0NCApLCAncicpIGFzIGhhbmRsZToKKyAgICAgICAgIGZvciBsaW5lIGluIGhhbmRsZToK KyAgICAgICAgICAgIHByaW50KCBsaW5lICkKKyAgIGBgYD0yMAorCisjIyMgcHV0CisKKyAgIFRo ZSBwdXQgZnVuY3Rpb24gdGFrZXMgYSBmaWxlIHBhdGggYW5kIHRyYW5zZmVycyB0aGUgZmlsZSB0 byB0aGUgY3VycmVuPQp0IGhpc3Rvcnkgb2YgeW91ciBHYWxheHkgc2Vzc2lvbi4KKworICAgKkV4 YW1wbGUqOgorICAgYGBgcHl0aG9uCisgICAgICBwdXQoICcuL215X2ZpbGUudHN2JywgZmlsZV90 eXBlID0zRCAndGFidWxhcicpCisgICBgYGAKKworIyMjIEhJU1RPUllfSUQKKworICAgQWNjZXNz aW5nIHlvdXIgY3VycmVudCBoaXN0b3J5IGlzIHBvc3NpYmxlIHdpdGggdGhlIHByZS1kZWZpbmVk IEhJU1RPUlk9Cl9JRCB2YXJpYWJsZS4KKyAgPTIwCisKKyMjIyBjb25uZWN0IHRvIEdhbGF4eQor CisgICBJZiB5b3Ugd2FudCB0byBjb21tdW5pY2F0ZSB3aXRoIEdhbGF4eSB5b3UgY2FuIHVzZSBg YGBnZXRfZ2FsYXh5X2Nvbm5lYz0KdGlvbigpYGBgIHRvIGdldCBhbiBbYmlvYmxlbmQgR2FsYXh5 SW5zdGFuY2Ugb2JqZWN0XShodHRwOi8vYmlvYmxlbmQucmVhZHRoPQplZG9jcy5vcmcvZW4vbGF0 ZXN0L2FwaV9kb2NzL2dhbGF4eS9hbGwuaHRtbD9oaWdobGlnaHQ9M0RnYWxheHlpbnN0YW5jZSku CisKKyAgICpFeGFtcGxlKjoKKyAgIGBgYHB5dGhvbgorICAgICAgZnJvbSBiaW9ibGVuZC5nYWxh eHkuaGlzdG9yaWVzIGltcG9ydCBIaXN0b3J5Q2xpZW50CisgICAgICBnaSA9M0QgZ2V0X2dhbGF4 eV9jb25uZWN0aW9uKCkKKyAgICAgIGhjID0zRCBIaXN0b3J5Q2xpZW50KCBnaSApCisgICAgICBm b3IgZGF0YXNldCBpbiBoYy5zaG93X2hpc3RvcnkoIEhJU1RPUllfSUQgLCBjb250ZW50cz0zRFRy dWUpICk6CisgICAgICAgICBwcmludCggZGF0YXNldFsnaWQnXSApCisgICBgYGAKKworCiBTZWN1 cml0eQogPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECj0yMAoKCmh0dHBzOi8vYml0YnVja2V0Lm9y Zy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hN2I4YmQ4ZDBlZmYvCkNoYW5nZXNldDog ICBhN2I4YmQ4ZDBlZmYKVXNlcjogICAgICAgIEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAy MDE0LTEwLTE4IDIyOjM4OjAzKzAwOjAwClN1bW1hcnk6ICAgICBhZGQgc29tZSBpbWFnZXMgZm9y IGJldHRlciBkb2N1bWVudGF0aW9uCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgOWQzNWVh MmU1MDc0YjcwMjBkMTFlODYyMjFlY2JhY2UxYzQyNjdhZSAtciBhN2I4YmQ4ZDBlZmYzMTg5ZDQ2 Y2M3MD0KYjM5NmUxZTE3NDNjOWE4MjYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi9pbWFnZXMvc3RhcnRfaXB5dGhvPQpuLnBuZwpCaW5hcnkgZmlsZSBjb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2ltYWdlcy9zdGFydF9pcHl0aG9uLnBuZyA9CmhhcyBj aGFuZ2VkCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21t aXRzLzk0MDMyYmFjOTljNy8KQ2hhbmdlc2V0OiAgIDk0MDMyYmFjOTljNwpVc2VyOiAgICAgICAg QmpvZXJuR3J1ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDMrMDA6MDAKU3Vt bWFyeTogICAgIGFkZCBpbWFnZSB0byBzaG93IHRoZSBpbnRlZ3JhdGlvbiBvZiBJUHl0aG9uIGlu IEdhbGF4eQpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGE3YjhiZDhkMGVmZjMxODlkNDZj YzcwYjM5NmUxZTE3NDNjOWE4MjYgLXIgOTQwMzJiYWM5OWM3Y2VhM2YyYzAzNGU9CjA0YWM2YzYz YWZiNDk4NjZkIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaW1hZ2VzL2lw eXRob25faW5fZz0KYWxheHkucG5nCkJpbmFyeSBmaWxlIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vaW1hZ2VzL2lweXRob25faW5fZ2FsYXh5Lj0KcG5nIGhhcyBjaGFuZ2Vk CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2Uw M2JhMmU4NTZlMi8KQ2hhbmdlc2V0OiAgIGUwM2JhMmU4NTZlMgpVc2VyOiAgICAgICAgQmpvZXJu R3J1ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTog ICAgIFVwZGF0ZSBSRUFETUUubWQKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA5NDAzMmJh Yzk5YzdjZWEzZjJjMDM0ZTA0YWM2YzYzYWZiNDk4NjZkIC1yIGUwM2JhMmU4NTZlMmUxNjZiYzRi YTdlPQo0NjAwZGVmZWI1NWNkMDNkMiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL1JFQURNRS5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L1JFQURNRS5tZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL1JF QURNRS5tZApAQCAtMjEsNyArMjEsOSBAQAogZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9i Z3J1ZW5pbmcvZ2FsYXh5LWlweXRob24uZ2l0IGNvbmZpZy9wbHVnaW5zL3Y9Cml6L2lweXRob24K IGBgYGAKPTIwCi1UaGUgSVB5dGhvbiBWaXN1YWxpc2F0aW9uIE9wdGlvbiBzaG91bGQgYmUgdmlz aWJsZSBuZXh0IHRvIHRoZSB1c3VhbCBDaGFydD0KcyBvciBUcmFja3N0ZXIgT3B0aW9ucyBpbiB5 b3VyIFZpc3VhbGlzYXRpb24gbWVudWUuCitUaGUgSVB5dGhvbiB2aXN1YWxpc2F0aW9uIG9wdGlv biBzaG91bGQgYmUgdmlzaWJsZSBuZXh0IHRvIHRoZSB1c3VhbCBDaGFydD0KcyBvciBUcmFja3N0 ZXIgb3B0aW9ucyBpbiB5b3VyIHZpc3VhbGlzYXRpb24gbWVudWUuCisKKyFbU3RhcnRpbmcgSVB5 dGhvbiBpbiBHYWxheHldKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9iZ3J1ZW5p bmcvPQpnYWxheHktaXB5dGhvbi9tYXN0ZXIvaW1hZ2VzL3N0YXJ0X2lweXRob24ucG5nKQo9MjAK PTIwCiBGZWF0dXJlcwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvY29tbWl0cy8xZDNkNDZiYjhmYmYvCkNoYW5nZXNldDogICAxZDNkNDZiYjhmYmYKVXNlcjog ICAgICAgIEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAw OjAwClN1bW1hcnk6ICAgICBVcGRhdGUgUkVBRE1FLm1kCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRp ZmYgLXIgZTAzYmEyZTg1NmUyZTE2NmJjNGJhN2U0NjAwZGVmZWI1NWNkMDNkMiAtciAxZDNkNDZi YjhmYmZiYzc5MzZjNWJmOD0KN2I4MTYwOWM3YWQ2MmZjYWQgY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9SRUFETUUubWQKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi9SRUFETUUubWQKQEAgLTcsOCArNyw4IEBACiBSZXF1aXJlbWVudHMKID0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKLUZvciBzZWN1cml0eSByZWFzb25z IHlvdSBuZWVkIHRvIGhhdmUgZG9ja2VyIGluc3RhbGxlZC4KLUZvciBhIGRldGFpbGVkIGluc3Ry dWN0aW9uIGhvdyB0byBpbnN0YWxsIGRvY2tlciwgcGxlYXNlIGxvb2sgYXQgdGhlIGRvY2tlPQpy IHdlYnNpdGUuCitUaGUgb25seSByZXF1aXJlbWVudCBpcyB0byBoYXZlIFtEb2NrZXJdKGh0dHBz Oi8vd3d3LmRvY2tlci5jb20pIGluc3RhbGxlZD0KIG9uIHlvdXIgc3lzdGVtLgorRm9yIGEgZGV0 YWlsZWQgaW5zdHJ1Y3Rpb24gaG93IHRvIGluc3RhbGwgZG9ja2VyLCBwbGVhc2UgbG9vayBhdCB0 aGUgW2RvY2s9CmVyIHdlYnNpdGVdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2luc3RhbGxhdGlv bi8pLgo9MjAKPTIwCiBJbnN0YWxsYXRpb24KQEAgLTk3LDcgKzk3LDcgQEAKIEF1dGhvcnMKID0z RD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKLSAqIEJqb2VybiBHcnVlbmluZworICogQmo9QzM9QjZy biBHcj1DMz1CQ25pbmcKICAqIEVyaWMgUmFzY2hlCj0yMAo9MjAKCgpodHRwczovL2JpdGJ1Y2tl dC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvYTRlNGVkZjY5ZWZjLwpDaGFuZ2Vz ZXQ6ICAgYTRlNGVkZjY5ZWZjClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAg ICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQWRvcHRpbmcgdGhlIGhl bHAgdGV4dCBpbiB0aGUgaW5pdGFsIHdlbGNvbWUgTm90ZWJvb2suCkFmZmVjdGVkICM6ICAxIGZp bGUKCmRpZmYgLXIgMWQzZDQ2YmI4ZmJmYmM3OTM2YzViZjg3YjgxNjA5YzdhZDYyZmNhZCAtciBh NGU0ZWRmNjllZmMzYTAyYzgxNzA5OD0KN2FiNTY2OTZiMWQ4NmI1MDIgY29uZmlnL3BsdWdpbnMv dmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvbm90ZWJvb2suPQppcHluYgotLS0gYS9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9ub3RlYm9vay5p cHluYgorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRl cy9ub3RlYm9vay5pcHluYgpAQCAtMjAsOSArMjAsMTAgQEAKICAgICAgImNlbGxfdHlwZSI6ICJt YXJrZG93biIsCiAgICAgICJtZXRhZGF0YSI6IHt9LAogICAgICAic291cmNlIjogWwotICAgICAg IllvdSBjYW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhlIGRhdGFzZXQgbnVtYmVyLiBGb3IgZXhh bXBsZSwgYGhhbmQ9CmxlID0zRCBnZXQoNDIpYC5cXG4iLAotICAgICAgIlRvIHNhdmUgZGF0YSwg d3JpdGUgeW91ciBkYXRhIHRvIGEgZmlsZSwgYW5kIHRoZW4gY2FsbCBgcHV0KCdmaWxlbmE9Cm1l LnR4dCcpYC4gVGhlIGRhdGFzZXQgd2lsbCB0aGVuIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGdhbGF4 eSBoaXN0b3J5LlxcbiIsCi0gICAgICAiVG8gc2F2ZSB5b3VyIG5vdGVib29rIHRvIGdhbGF4eSwg Y2xpY2sgdGhlIGxhcmdlIGdyZWVuIGJ1dHRvbiBhdCB0aD0KZSB0b3AgcmlnaHQgb2YgdGhlIElQ eXRob24gaW50ZXJmYWNlIgorICAgICAgIllvdSBjYW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhl IGRhdGFzZXQgbnVtYmVyLiBGb3IgZXhhbXBsZSwgYGBoYW49CmRsZSA9M0QgZ2V0KDQyKWBgLiIs CisgICAgICAiVG8gc2F2ZSBkYXRhLCB3cml0ZSB5b3VyIGRhdGEgdG8gYSBmaWxlLCBhbmQgdGhl biBjYWxsIGBgcHV0KCdmaWxlbj0KYW1lLnR4dCcpYGAuIFRoZSBkYXRhc2V0IHdpbGwgdGhlbiBi ZSBhdmFpbGFibGUgaW4geW91ciBnYWxheHkgaGlzdG9yeS4iLAorICAgICAgIk5vdGVib29rcyBj YW4gYmUgc2F2ZWQgdG8gR2FsYXh5IGJ5IGNsaWNraW5nIHRoZSBsYXJnZSBncmVlbiBidXR0b249 CiBhdCB0aGUgdG9wIHJpZ2h0IG9mIHRoZSBJUHl0aG9uIGludGVyZmFjZS48YnI+IiwKKyAgICAg ICJNb3JlIGhlbHAgYW5kIGluZm9ybWF0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIHByb2plY3Qg W3dlYnNpdGVdKGh0PQp0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbiku IgogICAgICBdCiAgICAgfSwKICAgICB7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9n YWxheHktY2VudHJhbC9jb21taXRzL2Y0MGUzMmU2ZTcwYS8KQ2hhbmdlc2V0OiAgIGY0MGUzMmU2 ZTcwYQpVc2VyOiAgICAgICAgQmpvZXJuR3J1ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTgg MjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFVwZGF0ZSBSRUFETUUubWQKIk5leHQgR2VuZXJh dGlvbiBUcmFpbmluZyIgY291cnNlIG1pZ2h0IGJlIGEgbGl0dGxlIGJpdCB0byBtdWNoIC4uLiA7 KQpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGE0ZTRlZGY2OWVmYzNhMDJjODE3MDk4N2Fi NTY2OTZiMWQ4NmI1MDIgLXIgZjQwZTMyZTZlNzBhNTFmMjg3MGFlMTY9CjViMWNjMmE5ZDRiNjM0 NzhlIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1FLm1kCi0tLSBh L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1FLm1kCisrKyBiL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1FLm1kCkBAIC0xLDcgKzEs MTAgQEAKIEdhbGF4eSBJUHl0aG9uIEludGVncmF0aW9uCiA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z RAo9MjAKLUlQeXRob24gSW50ZWdyYXRpb24gaW50byBHYWxheHkKK1RoaXMgcHJvamVjdHMgaW50 ZWdyYXRlcyBbSVB5dGhvbiBOb3RlYm9va10oaHR0cDovL2lweXRob24ub3JnL25vdGVib29rLmh0 PQptbCksIGEgaW50ZXJhY3RpdmUgY29tcHV0YXRpb25hbCBlbnZpcm9ubWVudCwgd2l0aCBbR2Fs YXh5XShodHRwOi8vZ2FsYXh5cHI9Cm9qZWN0Lm9yZykuPTIwCitXZSBob3BlIHRvIG1ha2UgR2Fs YXh5IG1vcmUgYXR0cmFjdGl2ZSBmb3IgYmlvaW5mb3JtYXRpY2lhbnMgYW5kIHRvIGNvbWJpbj0K ZSB0aGUgcG93ZXIgb2YgYm90aCBwcm9qZWN0cyB0byB1bmxvY2sgY3JlYXRpdml0eSBpbiBkYXRh IGFuYWx5c2lzLCBidXQgYWxzPQpvIGluIE5leHQtR2VuZXJhdGlvbi1UcmFpbmluZyBjb3Vyc2Vz LgorCishW0lQeXRob24gaW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5j b20vYmdydWVuaW5nL2dhbGF4eS1pcD0KeXRob24vbWFzdGVyL2ltYWdlcy9pcHl0aG9uX2luX2dh bGF4eS5wbmcpCj0yMAo9MjAKIFJlcXVpcmVtZW50cwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85OTIxY2VkMzNmODUvCkNoYW5nZXNldDogICA5 OTIxY2VkMzNmODUKVXNlcjogICAgICAgIEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0 LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBBZGRlZCB0aGUgdmlkZW8gdG8gdGhl IHJlYWRtZSBmaWxlLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGY0MGUzMmU2ZTcwYTUx ZjI4NzBhZTE2NWIxY2MyYTlkNGI2MzQ3OGUgLXIgOTkyMWNlZDMzZjg1ZTk3ZDU5Njg5OGQ9CmFi YTU0MTg5YTI1MTJmYjRhIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVB RE1FLm1kCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1F Lm1kCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vUkVBRE1FLm1k CkBAIC02LDYgKzYsOCBAQAo9MjAKICFbSVB5dGhvbiBpbiBHYWxheHldKGh0dHBzOi8vcmF3Lmdp dGh1YnVzZXJjb250ZW50LmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlwPQp5dGhvbi9tYXN0ZXIvaW1h Z2VzL2lweXRob25faW5fZ2FsYXh5LnBuZykKPTIwCitbIVtJTUFHRSBBTFQgVEVYVCBIRVJFXSho dHRwOi8vaW1nLnlvdXR1YmUuY29tL3ZpL2pRRHlUdVlubjFrLzAuanBnKV0oaHR0cD0KOi8vd3d3 LnlvdXR1YmUuY29tL3dhdGNoP3Y9M0RqUUR5VHVZbm4xaykKKwo9MjAKIFJlcXVpcmVtZW50cwog PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECgoKaHR0cHM6Ly9iaXRidWNrZXQu b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2QyYmZlYmIyYzM3ZC8KQ2hhbmdlc2V0 OiAgIGQyYmZlYmIyYzM3ZApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEFkZGVkIHBhc3N3b3JkIHByb3RlY3Rp b24gb2YgdGhlIG5vdGVib29rCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgOTkyMWNlZDMz Zjg1ZTk3ZDU5Njg5OGRhYmE1NDE4OWEyNTEyZmI0YSAtciBkMmJmZWJiMmMzN2QyY2I1MTNhNzk3 Yj0KMDdhMDcxMjIwMjVjMzExMTYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNiw2ICs2 LDcgQEAKIGltcG9ydCBzaGxleAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNodXRpbAoraW1wb3J0 IGhhc2hsaWIKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBDb25m aWdQYXJzZXIKQEAgLTY4LDYgKzY5LDEyIEBACj0yMAogdGVtcF9kaXIgPTNEIG9zLnBhdGguYWJz cGF0aCggdGVtcGZpbGUubWtkdGVtcCgpICkKPTIwCisjIEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3 b3JkICsgc2FsdAorbm90ZWJvb2tfcHdfc2FsdCA9M0QgJycuam9pbihyYW5kb20uY2hvaWNlKCcw MTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3Q9CnV2d3h5eicpIGZvciBfIGluIHJhbmdlKDEy KSkKK25vdGVib29rX3B3ID0zRCAnJy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNk ZWZnaGlqa2xtbm9wcXJzdHV2d3h5PQp6JykgZm9yIF8gaW4gcmFuZ2UoMjQpKQorbSA9M0QgaGFz aGxpYi5zaGExKCkKK20udXBkYXRlKCBub3RlYm9va19wdyArIG5vdGVib29rX3B3X3NhbHQgKQor CiBjb25mX2ZpbGUgPTNEIHsKICAgICAnaGlzdG9yeV9pZCc6IGhpc3RvcnlfaWQsCiAgICAgJ2dh bGF4eV91cmwnOiByZXF1ZXN0LmFwcGxpY2F0aW9uX3VybC5yc3RyaXAoJy8nKSwKQEAgLTc1LDYg KzgyLDcgQEAKICAgICAncmVtb3RlX2hvc3QnOiByZXF1ZXN0LnJlbW90ZV9hZGRyLAogICAgICdn YWxheHlfcGFzdGVyX3BvcnQnOiBnYWxheHlfcGFzdGVyX3BvcnQsCiAgICAgJ2RvY2tlcl9wb3J0 JzogUE9SVCwKKyAgICAnbm90ZWJvb2tfcGFzc3dvcmQnOiAnc2hhMTolczolcycgJSAobm90ZWJv b2tfcHdfc2FsdCwgbS5oZXhkaWdlc3QoKSksCiB9Cj0yMAogd2l0aCBvcGVuKCBvcy5wYXRoLmpv aW4oIHRlbXBfZGlyLCAnY29uZi55YW1sJyApLCAnd2InICkgYXMgaGFuZGxlOgpAQCAtMTA1LDYg KzExMyw3IEBACj0yMAo9MjAKIDxib2R5PgorWW91ciBwYXNzd29yZCBpczogJHsgbm90ZWJvb2tf cHcgfQogICAgIDxvYmplY3QgZGF0YT0zRCIke25vdGVib29rX2FjY2Vzc191cmx9IiBoZWlnaHQ9 M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSI9Cj48ZW1iZWQgc3JjPTNEIiR7bm90ZWJvb2tfYWNjZXNz X3VybH0iIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj48L2VtYj0KZWQ+CgoKaHR0cHM6 Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzM4Mzc0YTExMThl Zi8KQ2hhbmdlc2V0OiAgIDM4Mzc0YTExMThlZgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTog ICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIENvbXBsZXRlbHkg d29ya2luZyBsb2dpbiBzeXN0ZW0KQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgZDJiZmVi YjJjMzdkMmNiNTEzYTc5N2IwN2EwNzEyMjAyNWMzMTExNiAtciAzODM3NGExMTE4ZWZhZjA5ZmQw MjQ5Mj0KZmQ2NjAzY2YwMGRkMTkxOGMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi9jb25mL2lweXRob24uY29uZgotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL2NvbmYvaXB5dGhvbi5jb25mCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vY29uZi9pcHl0aG9uLmNvbmYKQEAgLTEsNyArMSw3IEBACiBbbWFpbl0K LWFwYWNoZV91cmxzID0zRCBGYWxzZQorYXBhY2hlX3VybHMgPTNEIFRydWUKPTIwCiBbZG9ja2Vy XQotY29tbWFuZCA9M0QgImRvY2tlciIKLWltYWdlID0zRCAiYmdydWVuaW5nL2RvY2tlci1pcHl0 aG9uLW5vdGVib29rIgorY29tbWFuZCA9M0QgImRvY2tlci5pbyIKK2ltYWdlID0zRCAiaXB5dGhv bi1ub3RlYm9vayIKPTIwCgpkaWZmIC1yIGQyYmZlYmIyYzM3ZDJjYjUxM2E3OTdiMDdhMDcxMjIw MjVjMzExMTYgLXIgMzgzNzRhMTExOGVmYWYwOWZkMDI0OTI9CmZkNjYwM2NmMDBkZDE5MThjIGNv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0K YWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVz L2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTEwMCw4ICsxMDAsMTAgQEAKPTIwCiBpZiBpcHlf dml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgImFwYWNoZV91cmxzIik6CiAgICAgbm90ZWJv b2tfYWNjZXNzX3VybCA9M0QgImh0dHA6Ly8lcy9pcHl0aG9uLyVzL25vdGVib29rcy9pcHl0aG9u X2dhbGF4eT0KX25vdGVib29rLmlweW5iIiAlICggSE9TVCwgUE9SVCApCisgICAgbm90ZWJvb2tf bG9naW5fdXJsID0zRCAiaHR0cDovLyVzL2lweXRob24vJXMvbG9naW4/bmV4dD0zRCUlMkZpcHl0 aG9uJT0KJTJGJXMlJTJGbm90ZWJvb2tzJSUyRmlweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5i IiAlICggSE9TVCwgUE9SVCwgUE9SVCApCiBlbHNlOgogICAgIG5vdGVib29rX2FjY2Vzc191cmwg PTNEICJodHRwOi8vJXM6JXMvaXB5dGhvbi8lcy9ub3RlYm9va3MvaXB5dGhvbl9nYWw9CmF4eV9u b3RlYm9vay5pcHluYiIgJSAoIEhPU1QsIFBPUlQsIFBPUlQgKQorICAgIG5vdGVib29rX2xvZ2lu X3VybCA9M0QgImh0dHA6Ly8lczolcy9pcHl0aG9uLyVzL2xvZ2luP25leHQ9M0QlJTJGaXB5dGg9 Cm9uJSUyRiVzJSUyRm5vdGVib29rcyUlMkZpcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYiIg JSAoIEhPU1QsIFBPUlQsIFBPUj0KVCwgUE9SVCApCiBzdWJwcm9jZXNzLmNhbGwoZG9ja2VyX2Nt ZCwgc2hlbGw9M0RUcnVlKQo9MjAKICMgV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBJbWFnZSBh bmQgSVB5dGhvbiBpbiBsb2FkZWQKQEAgLTExMCwxMyArMTEyLDM1IEBACj0yMAogJT48aHRtbD4K LQotCis8aGVhZD4KKyR7aC5qcyggJ2xpYnMvanF1ZXJ5L2pxdWVyeScgKSB9Cis8L2hlYWQ+PGJv ZHk+Ci1Zb3VyIHBhc3N3b3JkIGlzOiAkeyBub3RlYm9va19wdyB9Ci0gICAgPG9iamVjdCBkYXRh PTNEIiR7bm90ZWJvb2tfYWNjZXNzX3VybH0iIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAl Ij4KLSAgICAgICAgPGVtYmVkIHNyYz0zRCIke25vdGVib29rX2FjY2Vzc191cmx9IiBoZWlnaHQ9 M0QiMTAwJSIgd2lkdGg9M0QiMTAwPQolIj4KLSAgICAgICAgPC9lbWJlZD4KLSAgICA8L29iamVj dD4KKzxzY3JpcHQgdHlwZT0zRCJ0ZXh0L2phdmFzY3JpcHQiPgorLy8gT24gZG9jdW1lbnQgcmVh ZHkKKyQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CisgICAgLy8gTWFrZSBhbiBBSkFY IFBPU1QKKyAgICAkLmFqYXgoeworICAgICAgICB0eXBlOiAiUE9TVCIsCisgICAgICAgIC8vIHRv IHRoZSBMb2dpbiBVUkwKKyAgICAgICAgdXJsOiAiJHsgbm90ZWJvb2tfbG9naW5fdXJsIH0iLAor ICAgICAgICAvLyBXaXRoIG91ciBwYXNzd29yZAorICAgICAgICBkYXRhOiB7CisgICAgICAgICAg ICAncGFzc3dvcmQnOiAnJHsgbm90ZWJvb2tfcHcgfScKKyAgICAgICAgfSwKKyAgICAgICAgLy8g SWYgdGhhdCBpcyBzdWNjZXNzZnVsLCBsb2FkIHRoZSBpZnJhbWUgZWxlbWVudAorICAgICAgICBz dWNjZXNzOiBmdW5jdGlvbigpeworICAgICAgICAgICAgdmFyIGZyYW1lID0zRCAkKCc8aWZyYW1l IC8+JywgeworICAgICAgICAgICAgICAgIG5hbWU6ICdyZW1vdGVfbm90ZWJvb2snLAorICAgICAg ICAgICAgICAgIGlkOiAncmVtb3RlX25vdGVib29rJywKKyAgICAgICAgICAgICAgICBzcmM6ICck eyBub3RlYm9va19hY2Nlc3NfdXJsIH0nLAorICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUn LAorICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScKKyAgICAgICAgICAgIH0pOworICAgICAg ICAgICAgZnJhbWUuYXBwZW5kVG8oJ2JvZHknKTsKKyAgICAgICAgfQorICAgIH0pOworfSk7Cis8 L3NjcmlwdD48L2JvZHk+PC9odG1sPgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2Fs YXh5LWNlbnRyYWwvY29tbWl0cy80YTlhYzE2OTdiYjAvCkNoYW5nZXNldDogICA0YTlhYzE2OTdi YjAKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0 KzAwOjAwClN1bW1hcnk6ICAgICBSZXBsYWNlZCBpZnJhbWUgd2l0aCBlbWJlZCBmb3IgYWVzdGhl dGljcwpOb3cgd2hlbmV2ZXIgYSBub3RlYm9vayBpcyBsb2FkZWQgd2UgZmlyc3QgZG8gYSBQT1NU IHRvIHRoZSBub3RlYm9vayBsb2dpbiA9ClVSTCB3aXRoIHRoZSBjb3JyZWN0CmF1dGhlbnRpY2F0 aW9uIGRldGFpbHMuIFRoaXMgbG9ncyB1cyBpbiBhbmQgc3RvcmVzIGEgY29va2llIGZvciB1cy4g T25jZSB0aD0KaXMgaXMgZG9uZSwgKGFuZCB3ZSBrbm93CndlIHdlcmUgc3VjY2Vzc2Z1bCkgd2Ug YWRkIHRoZSBlbWJlZC9vYmplY3QgZWxlbWVudHMgdG8gdGhlIGJvZHkgb2YgdGhlIHBhZz0KZSwg d2hpY2ggdGhlIGJyb3dzZXIgdGhlbgpsb2Fkcy4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAt ciAzODM3NGExMTE4ZWZhZjA5ZmQwMjQ5MmZkNjYwM2NmMDBkZDE5MThjIC1yIDRhOWFjMTY5N2Ji MDk3NzQxMWE3NjAwPQo2Yjg5NTg2YTAwMTU4NmQ1OCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtv CkBAIC0xMjgsMTYgKzEyOCwyMyBAQAogICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAncGFz c3dvcmQnOiAnJHsgbm90ZWJvb2tfcHcgfScKICAgICAgICAgfSwKLSAgICAgICAgLy8gSWYgdGhh dCBpcyBzdWNjZXNzZnVsLCBsb2FkIHRoZSBpZnJhbWUgZWxlbWVudAorICAgICAgICAvLyBJZiB0 aGF0IGlzIHN1Y2Nlc3NmdWwsIGxvYWQgdGhlIG5vdGVib29rCiAgICAgICAgIHN1Y2Nlc3M6IGZ1 bmN0aW9uKCl7Ci0gICAgICAgICAgICB2YXIgZnJhbWUgPTNEICQoJzxpZnJhbWUgLz4nLCB7Ci0g ICAgICAgICAgICAgICAgbmFtZTogJ3JlbW90ZV9ub3RlYm9vaycsCi0gICAgICAgICAgICAgICAg aWQ6ICdyZW1vdGVfbm90ZWJvb2snLAotICAgICAgICAgICAgICAgIHNyYzogJyR7IG5vdGVib29r X2FjY2Vzc191cmwgfScsCi0gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCi0gICAgICAg ICAgICAgICAgd2lkdGg6ICcxMDAlJwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBmcmFt ZS5hcHBlbmRUbygnYm9keScpOworICAgICAgICAgICAgLy9BcHBlbmQgYW4gb2JqZWN0IHRvIHRo ZSBib2R5CisgICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKAorICAgICAgICAgICAgICAgICQo JzxvYmplY3QvPicsIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNj ZXNzX3VybCB9JywKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCisgICAgICAg ICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScKKyAgICAgICAgICAgICAgICB9KS5hcHBlbmQoCisg ICAgICAgICAgICAgICAgICAgIC8vIEFuZCBhbiBlbWJlZCB0byB0aGUgb2JqZWN0CisgICAgICAg ICAgICAgICAgICAgICQoJzxlbWJlZC8+JywgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Jj OiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhl aWdodDogJzEwMCUnLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJworICAg ICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICk7CiAg ICAgICAgIH0KICAgICB9KTsKIH0pOwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2Fs YXh5LWNlbnRyYWwvY29tbWl0cy85YjIwMWVhMTkwODkvCkNoYW5nZXNldDogICA5YjIwMWVhMTkw ODkKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0 KzAwOjAwClN1bW1hcnk6ICAgICBBY2NpZGVudGFsbHkgb3Zlcndyb3RlIHJlbW90ZSB3aXRoIGxv Y2FsIGNoYW5nZXMsIHJldmVydGluZwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRhOWFj MTY5N2JiMDk3NzQxMWE3NjAwNmI4OTU4NmEwMDE1ODZkNTggLXIgOWIyMDFlYTE5MDg5M2MyM2Vk ZDBjMzk9CmU4NDgyMTQ0MGZhMzBjZGQ5IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vY29uZi9pcHl0aG9uLmNvbmYKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi9jb25mL2lweXRob24uY29uZgorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi5jb25mCkBAIC0yLDYgKzIsNiBAQAogYXBhY2hl X3VybHMgPTNEIFRydWUKPTIwCiBbZG9ja2VyXQotY29tbWFuZCA9M0QgImRvY2tlci5pbyIKLWlt YWdlID0zRCAiaXB5dGhvbi1ub3RlYm9vayIKK2NvbW1hbmQgPTNEICJkb2NrZXIiCitpbWFnZSA9 M0QgImJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vayIKPTIwCgoKaHR0cHM6Ly9iaXRi dWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzIzMmIxYmY4OGQ4OS8KQ2hh bmdlc2V0OiAgIDIzMmIxYmY4OGQ4OQpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAg IDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFVwZGF0ZWQgUkVBRE1FIHdp dGggc2VjdXJpdHkgaW5mb3JtYXRpb24KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA5YjIw MWVhMTkwODkzYzIzZWRkMGMzOWU4NDgyMTQ0MGZhMzBjZGQ5IC1yIDIzMmIxYmY4OGQ4OTZiNGE3 MjcyZjViPQo2MDhjMjYwZTM1NGQ4MTZhMSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL1JFQURNRS5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL1JFQURNRS5tZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L1JFQURNRS5tZApAQCAtOTMsMTcgKzkzLDE2IEBACiBTZWN1cml0eQogPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNECj0yMAotICogQ29udGFpbmVycyBjYW4gYmUgc2VjdXJlZCB2aWEgQXBhY2hlK1NT TC4gUGxlYXNlIHNlZSB0aGUgW3NldHVwXShJTlNUQUw9CkwubWQpIGRvY3VtZW50IGZvciBtb3Jl Ci0gICBpbmZvcm1hdGlvbi4KLSAqIENvbnRhaW5lcnMgd2lsbCBzb29uIGhhdmUgYGlwdGFibGVz YCBiYXNlZCBzZWN1cml0eSB0byBwcm92aWRlIGEgbWluaW11PQptIGF0dGVtcHQgYXQgcHJldmVu dGluZwotICAgdXNlcnMgZnJvbSBhY2Nlc3Npbmcgb25lIGFub3RoZXIncyBub3RlYm9va3MuCitD b250YWluZXJzIHNob3VsZCBiZSBzZWN1cmVkIHZpYSBBcGFjaGUrU1NMIGZvciBwcm9kdWN0aW9u IHVzYWdlLiBQbGVhc2Ugcz0KZWUgdGhlIFtzZXR1cF0oSU5TVEFMTC5tZCkgZG9jdW1lbnQgZm9y IG1vcmUgaW5mb3JtYXRpb24uCisKK0luZGl2aWR1YWwgbm90ZWJvb2tzIGFyZSBwYXNzd29yZCBw cm90ZWN0ZWQgdGhyb3VnaCBhIHBhc3N3b3JkIGtub3duIG9ubHkgPQp0byB0aGUgR2FsYXh5IHVz ZXIncyBicm93c2VyIGFuZCB0byB0aGUgY29udGFpbmVyLiBXaGlsZSB0aGlzIGRvZXMgbm90IHBy ZXY9CmVudCBwb3J0IG1hcHBpbmcgZm9sbG93ZWQgYnkgcGFzc3dvcmQgYnJ1dGVmb3JjaW5nLCB3 ZSBiZWxpZXZlIHdlIGhhdmUgc3VjYz0KZXNmdWxseSBsaW1pdGVkIGFjY2VzcyB0byB0aGUgbm90 ZWJvb2sgdG8gb25seSBhdXRob3JpemVkIHVzZXJzLiBXZSBhcmUgdmVyPQp5IGNvbmNlcm5lZCBh Ym91dCBzZWN1cml0eSBpc3N1ZXMgd2l0aCBJUHl0aG9uIGVtYmVkZGVkIHdpdGhpbiBnYWxheHks IHNvIGk9CmYgeW91IGZpbmQgYSB2dWxuZXJhYmlsaXR5IGluIHRoZSBzeXN0ZW0gd2UndmUgZGV2 aXNlZCwgcGxlYXNlIGNvbnRhY3QgdXMgYT0KbmQgd2UnbGwgcGF0Y2ggaXQgYXMgc29vbiBhcyBw b3NzaWJsZSEKPTIwCj0yMAogQXV0aG9ycwogPTNEPTNEPTNEPTNEPTNEPTNEPTNECj0yMAogICog Qmo9QzM9QjZybiBHcj1DMz1CQ25pbmcKLSAqIEVyaWMgUmFzY2hlCisgKiBFcmljIFJhc2NoZSA8 cmFzY2hlLmVyaWNAeWFuZGV4LnJ1Pgo9MjAKPTIwCiBIaXN0b3J5CgoKaHR0cHM6Ly9iaXRidWNr ZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzkzMzQ4YTYxZGVhMy8KQ2hhbmdl c2V0OiAgIDkzMzQ4YTYxZGVhMwpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIw MTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEJldHRlciBmYWlsb3ZlciBpbiBh bGwgc2l0dWF0aW9ucwpQcmV2aW91c2x5IGluIGEgc3BlY2lmaWMgc2l0dWF0aW9uIChhcGFjaGVf dXJscyA9M0QgRmFsc2UgYW5kIHBhc3N3b3JkX2F1dGg9CiA9M0QgVHJ1ZSksIHdlIHNhdyB0aGF0 IHVzZXJzCndvdWxkIHNlZSBhIGJsYW5rIHNjcmVlbiByYXRoZXIgdGhhbiBhbiBpbmZvcm1hdGl2 ZSBlcnJvciBtZXNzYWdlLiBUaGlzIHNobz0KdWxkIG5vdCBoYXBwZW4gdW5kZXIgYW55CmNpcmN1 bXN0YW5jZXMuCgpUaGlzIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggbG9naWMgdG8gaGFuZGxlIHRo ZSBmYWlsdXJlIG1vZGVzIGluIGFzIHNhbmUgb2Y9CiBhIHdheSBhcyBwb3NzaWJsZS4gSWYKdGhl IGFib3ZlIHNpdHVhdGlvbiBpcyB0cnVlLCB3ZSBwcm92aWRlIHRoZSB1c2VycyB3aXRoIHRoZWly IHJhbmRvbSBwYXNzd29yPQpkIGFuZCBhIGxvZ2luIGJveC4gSWYgYW55Cm90aGVyIGJhZCBzaXR1 YXRpb24gb2NjdXJzLCB3ZSBwYXNzIHRoZSBlcnJvciBtZXNzYWdlIGFsb25nIHRvIHRoZW0uCgpB ZGRpdGlvbmFsbHkgYSBuZXcgdmFyaWFibGUgInBhc3N3b3JkX2F1dGgiIGhhcyBiZWVuIGludHJv ZHVjZWQsIGRlc2NyaWJpbmc9CiB3aGV0aGVyIG9yIG5vdCBwYXNzd29yZHMKc2hvdWxkIGJlIHVz ZWQgdG8gYXV0aGVudGljYXRlIHVzZXJzIChtb3N0bHkgYXV0by1tYWdpY2FsbHkpIGFnYWluc3Qg dGhlaXIgPQpub3RlYm9va3MuCgpCZWNhdXNlIHdlIGhhdmUgY29udHJvbCBvdmVyIHRoaXMgZG9j a2VyIGltYWdlLCBpdCBpcyBwb3NzaWJsZSB3ZSBjYW4gaGFuZGw9CmUgdGhhdCBzcGVjaWZpYyBj YXNlCmFib3ZlIGJ5IGNvbnZpbmNpbmcgaXB5dGhvbiB0byBzZXQgYSBjb250ZW50LW9yaWdpbiBo ZWFkZXIgYWxsb3dpbmcgdGhlIGdhbD0KYXh5IGhvc3QgdG8gbWFrZSB0aGUgSlMKbG9naW4gcmVx dWVzdC4KQWZmZWN0ZWQgIzogIDMgZmlsZXMKCmRpZmYgLXIgMjMyYjFiZjg4ZDg5NmI0YTcyNzJm NWI2MDhjMjYwZTM1NGQ4MTZhMSAtciA5MzM0OGE2MWRlYTM3YWZiZWRlM2VjOT0KOWJkODQ5MTcx MjUzYzA1ZDMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQK LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKKysr IGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQKQEAgLTkz LDkgKzkzLDEyIEBACiBTZWN1cml0eQogPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECj0yMAotQ29u dGFpbmVycyBzaG91bGQgYmUgc2VjdXJlZCB2aWEgQXBhY2hlK1NTTCBmb3IgcHJvZHVjdGlvbiB1 c2FnZS4gUGxlYXNlIHM9CmVlIHRoZSBbc2V0dXBdKElOU1RBTEwubWQpIGRvY3VtZW50IGZvciBt b3JlIGluZm9ybWF0aW9uLgorQnkgZGVmYXVsdCwgbm8gc2VjdXJpdHkgdHVybmVkIG9uLiBUbyBk byB0aGlzLCB5b3UgbXVzdCBhZGp1c3QgdHdvIHZhcmlhYmw9CmVzLCBgYXBhY2hlX3VybHNgIGFu ZAorYHBhc3N3b3JkX2F1dGhgIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgKGBjb25maWcvaXB5 dGhvbi5jb25mYCkuPTIwCj0yMAotSW5kaXZpZHVhbCBub3RlYm9va3MgYXJlIHBhc3N3b3JkIHBy b3RlY3RlZCB0aHJvdWdoIGEgcGFzc3dvcmQga25vd24gb25seSA9CnRvIHRoZSBHYWxheHkgdXNl cidzIGJyb3dzZXIgYW5kIHRvIHRoZSBjb250YWluZXIuIFdoaWxlIHRoaXMgZG9lcyBub3QgcHJl dj0KZW50IHBvcnQgbWFwcGluZyBmb2xsb3dlZCBieSBwYXNzd29yZCBicnV0ZWZvcmNpbmcsIHdl IGJlbGlldmUgd2UgaGF2ZSBzdWNjPQplc2Z1bGx5IGxpbWl0ZWQgYWNjZXNzIHRvIHRoZSBub3Rl Ym9vayB0byBvbmx5IGF1dGhvcml6ZWQgdXNlcnMuIFdlIGFyZSB2ZXI9CnkgY29uY2VybmVkIGFi b3V0IHNlY3VyaXR5IGlzc3VlcyB3aXRoIElQeXRob24gZW1iZWRkZWQgd2l0aGluIGdhbGF4eSwg c28gaT0KZiB5b3UgZmluZCBhIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHN5c3RlbSB3ZSd2ZSBkZXZp c2VkLCBwbGVhc2UgY29udGFjdCB1cyBhPQpuZCB3ZSdsbCBwYXRjaCBpdCBhcyBzb29uIGFzIHBv c3NpYmxlIQorVGhlIGBhcGFjaGVfdXJsc2AgdmFyaWFibGUgc2hvdWxkIGJlIHNldCB0byBgVHJ1 ZWAsIGFuZCBjb250YWluZXJzIHNob3VsZCA9CmJlIHNlY3VyZWQgdmlhIEFwYWNoZStTU0wgZm9y IHByb2R1Y3Rpb24gdXNhZ2UuIFBsZWFzZSBzZWUgdGhlIFtzZXR1cF0oSU5TVD0KQUxMLm1kKSBk b2N1bWVudCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworVGhlIGBwYXNzd29yZF9hdXRoYCB2YXJp YWJsZSBzaG91bGQgYmUgc2V0IHRvIGBUcnVlYC4gSXQgZnVuY3Rpb25zIGJ5IGdlbmU9CnJhdGlu ZyBhIHJhbmRvbSBwYXNzd29yZCB3aGljaCBpcyBvbmx5IHNoYXJlZCB3aXRoIHRoZSBkb2NrZXIs IGFuZCB0aGUgdXNlcj0KJ3MgYnJvd3NlciB0aHJvdWdoIEdhbGF4eS4gSW4gdGhlb3J5IHRoaXMg c2hvdWxkIGJlIGEgc2VjdXJlIHN5c3RlbSAob3IgYXQgPQpsZWFzdCBhcyBzZWN1cmUgYXMgdGhl IHdlYWtlc3QgbGluayksIGhvd2V2ZXIgaWYgeW91IGZpbmQgYSB2dWxuZXJhYmlsaXR5IGk9Cm4g dGhlIHN5c3RlbSB3ZSd2ZSBkZXZpc2VkLCBwbGVhc2UgY29udGFjdCB1cyBhbmQgd2UnbGwgcGF0 Y2ggaXQgYXMgc29vbiBhcz0KIHBvc3NpYmxlIQo9MjAKPTIwCiBBdXRob3JzCgpkaWZmIC1yIDIz MmIxYmY4OGQ4OTZiNGE3MjcyZjViNjA4YzI2MGUzNTRkODE2YTEgLXIgOTMzNDhhNjFkZWEzN2Fm YmVkZTNlYzk9CjliZDg0OTE3MTI1M2MwNWQzIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vY29uZi9pcHl0aG9uLmNvbmYKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9jb25mL2lweXRob24uY29uZgorKysgYi9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi5jb25mCkBAIC0xLDUgKzEsNiBAQAogW21h aW5dCi1hcGFjaGVfdXJscyA9M0QgVHJ1ZQorYXBhY2hlX3VybHMgPTNEIEZhbHNlCitwYXNzd29y ZF9hdXRoID0zRCBGYWxzZQo9MjAKIFtkb2NrZXJdCiBjb21tYW5kID0zRCAiZG9ja2VyIgoKZGlm ZiAtciAyMzJiMWJmODhkODk2YjRhNzI3MmY1YjYwOGMyNjBlMzU0ZDgxNmExIC1yIDkzMzQ4YTYx ZGVhMzdhZmJlZGUzZWM5PQo5YmQ4NDkxNzEyNTNjMDVkMyBjb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5t YWtvCkBAIC0zMSw3ICszMSw4IEBACiBvdXJfY29uZmlnX2RpciA9M0Qgb3MucGF0aC5qb2luKHZp el9wbHVnaW5fZGlyLCAiY29uZmlnIikKIG91cl90ZW1wbGF0ZV9kaXIgPTNEIG9zLnBhdGguam9p bih2aXpfcGx1Z2luX2RpciwgInRlbXBsYXRlcyIpCiBpcHlfdml6X2NvbmZpZyA9M0QgQ29uZmln UGFyc2VyLlNhZmVDb25maWdQYXJzZXIoeydhcGFjaGVfdXJscyc6IEZhbHNlLCAnYz0Kb21tYW5k JzogJ2RvY2tlcicsICdpbWFnZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLT0Kbm90ZWJvb2snfSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZ3J1ZW5pbmcv ZG9ja2VyLWlweXRob24tPQpub3RlYm9vaycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncGFzc3dvcmRfYXV0aCc6IEZhbHNlfSkKIGlweV92aXpfY29u ZmlnLnJlYWQoIG9zLnBhdGguam9pbiggb3VyX2NvbmZpZ19kaXIsICJpcHl0aG9uLmNvbmYiICkg KQo9MjAKICMgRW5zdXJlIGdlbmVyYXRpb24gb2Ygbm90ZWJvb2sgaWQgaXMgZGV0ZXJtaW5pc3Rp YyBmb3IgdGhlIGRhdGFzZXQuIFJlcGxhPQpjZSB3aXRoIGhpc3RvcnkgaWQKQEAgLTY5LDExICs3 MCw2IEBACj0yMAogdGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVt cCgpICkKPTIwCi0jIEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkICsgc2FsdAotbm90ZWJvb2tf cHdfc2FsdCA9M0QgJycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmZ2hpamts bW5vcHFyc3Q9CnV2d3h5eicpIGZvciBfIGluIHJhbmdlKDEyKSkKLW5vdGVib29rX3B3ID0zRCAn Jy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5 PQp6JykgZm9yIF8gaW4gcmFuZ2UoMjQpKQotbSA9M0QgaGFzaGxpYi5zaGExKCkKLW0udXBkYXRl KCBub3RlYm9va19wdyArIG5vdGVib29rX3B3X3NhbHQgKQo9MjAKIGNvbmZfZmlsZSA9M0Qgewog ICAgICdoaXN0b3J5X2lkJzogaGlzdG9yeV9pZCwKQEAgLTgyLDEyICs3OCwyNiBAQAogICAgICdy ZW1vdGVfaG9zdCc6IHJlcXVlc3QucmVtb3RlX2FkZHIsCiAgICAgJ2dhbGF4eV9wYXN0ZXJfcG9y dCc6IGdhbGF4eV9wYXN0ZXJfcG9ydCwKICAgICAnZG9ja2VyX3BvcnQnOiBQT1JULAotICAgICdu b3RlYm9va19wYXNzd29yZCc6ICdzaGExOiVzOiVzJyAlIChub3RlYm9va19wd19zYWx0LCBtLmhl eGRpZ2VzdCgpKSwKIH0KPTIwCitpZiBpcHlfdml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwg InBhc3N3b3JkX2F1dGgiKToKKyAgICAjIEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkICsgc2Fs dAorICAgIG5vdGVib29rX3B3X3NhbHQgPTNEICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1 Njc4OWFiY2RlZmdoaWprbG1ub3A9CnFyc3R1dnd4eXonKSBmb3IgXyBpbiByYW5nZSgxMikpCisg ICAgbm90ZWJvb2tfcHcgPTNEICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2Rl ZmdoaWprbG1ub3BxcnN0dT0Kdnd4eXonKSBmb3IgXyBpbiByYW5nZSgyNCkpCisgICAgbSA9M0Qg aGFzaGxpYi5zaGExKCkKKyAgICBtLnVwZGF0ZSggbm90ZWJvb2tfcHcgKyBub3RlYm9va19wd19z YWx0ICkKKyAgICBjb25mX2ZpbGVbJ25vdGVib29rX3Bhc3N3b3JkJ10gPTNEICdzaGExOiVzOiVz JyAlIChub3RlYm9va19wd19zYWx0LCBtPQouaGV4ZGlnZXN0KCkpCisgICAgIyBTaG91bGQgd2Ug dXNlIHBhc3N3b3JkIGJhc2VkIGNvbm5lY3Rpb24gb3IgImRlZmF1bHQiIGNvbm5lY3Rpb24gc3R5 bD0KZSBpbiBnYWxheHkKKyAgICBwYXNzd29yZF9hdXRoX2pzdmFyID0zRCAidHJ1ZSIKK2Vsc2U6 CisgICAgbm90ZWJvb2tfcHcgPTNEICJOb25lIgorICAgIHBhc3N3b3JkX2F1dGhfanN2YXIgPTNE ICJmYWxzZSIKKworIyBXcml0ZSBjb25mCiB3aXRoIG9wZW4oIG9zLnBhdGguam9pbiggdGVtcF9k aXIsICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYW5kbGU6CiAgICAgaGFuZGxlLndyaXRlKCB5 YW1sLmR1bXAoY29uZl9maWxlLCBkZWZhdWx0X2Zsb3dfc3R5bGU9M0RGYWxzZSkgKQo9MjAKKyMg Q29weSBvdmVyIGRlZmF1bHQgbm90ZWJvb2ssIHVubGVzcyB0aGUgZGF0YXNldCB0aGlzIHZpeiBp cyBydW5uaW5nIG9uIGlzPQogYSBub3RlYm9vawogZW1wdHlfbmJfcGF0aCA9M0Qgb3MucGF0aC5q b2luKHRlbXBfZGlyLCAnaXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmInKQogaWYgaGRhLmRh dGF0eXBlLl9fY2xhc3NfXy5fX25hbWVfXyAhPTNEICJJcHluYiI6CiAgICAgd2l0aCBvcGVuKCBl bXB0eV9uYl9wYXRoLCAndysnICkgYXMgaGFuZGxlOgpAQCAtOTgsMTIgKzEwOCwxNSBAQAogZG9j a2VyX2NtZCA9M0QgJyVzIHJ1biAtZCAtLXNpZy1wcm94eT0zRHRydWUgLXAgJXM6Njc4OSAtdiAi JXM6L2ltcG9ydC8iICU9CnMnICUgXAogICAgIChpcHlfdml6X2NvbmZpZy5nZXQoImRvY2tlciIs ICJjb21tYW5kIiksIFBPUlQsIHRlbXBfZGlyLCBpcHlfdml6X2NvbmY9CmlnLmdldCgiZG9ja2Vy IiwgImltYWdlIikpCj0yMAorIyBBY2Nlc3MgVVJMcyBmb3IgdGhlIG5vdGVib29rIGZyb20gd2l0 aGluIGdhbGF4eS4KIGlmIGlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAiYXBhY2hl X3VybHMiKToKICAgICBub3RlYm9va19hY2Nlc3NfdXJsID0zRCAiaHR0cDovLyVzL2lweXRob24v JXMvbm90ZWJvb2tzL2lweXRob25fZ2FsYXh5PQpfbm90ZWJvb2suaXB5bmIiICUgKCBIT1NULCBQ T1JUICkKICAgICBub3RlYm9va19sb2dpbl91cmwgPTNEICJodHRwOi8vJXMvaXB5dGhvbi8lcy9s b2dpbj9uZXh0PTNEJSUyRmlweXRob24lPQolMkYlcyUlMkZub3RlYm9va3MlJTJGaXB5dGhvbl9n YWxheHlfbm90ZWJvb2suaXB5bmIiICUgKCBIT1NULCBQT1JULCBQT1JUICkKKyAgICBhcGFjaGVf dXJsc19qc3ZhciA9M0QgInRydWUiCiBlbHNlOgogICAgIG5vdGVib29rX2FjY2Vzc191cmwgPTNE ICJodHRwOi8vJXM6JXMvaXB5dGhvbi8lcy9ub3RlYm9va3MvaXB5dGhvbl9nYWw9CmF4eV9ub3Rl Ym9vay5pcHluYiIgJSAoIEhPU1QsIFBPUlQsIFBPUlQgKQogICAgIG5vdGVib29rX2xvZ2luX3Vy bCA9M0QgImh0dHA6Ly8lczolcy9pcHl0aG9uLyVzL2xvZ2luP25leHQ9M0QlJTJGaXB5dGg9Cm9u JSUyRiVzJSUyRm5vdGVib29rcyUlMkZpcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYiIgJSAo IEhPU1QsIFBPUlQsIFBPUj0KVCwgUE9SVCApCisgICAgYXBhY2hlX3VybHNfanN2YXIgPTNEICJm YWxzZSIKIHN1YnByb2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCj0yMAogIyBX ZSBuZWVkIHRvIHdhaXQgdW50aWwgdGhlIEltYWdlIGFuZCBJUHl0aG9uIGluIGxvYWRlZApAQCAt MTE3LDM3ICsxMzAsODcgQEAKIDwvaGVhZD48Ym9keT48c2NyaXB0IHR5cGU9M0QidGV4dC9qYXZh c2NyaXB0Ij4KLS8vIE9uIGRvY3VtZW50IHJlYWR5Ci0kKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0 aW9uKCkgewotICAgIC8vIE1ha2UgYW4gQUpBWCBQT1NUCi0gICAgJC5hamF4KHsKLSAgICAgICAg dHlwZTogIlBPU1QiLAotICAgICAgICAvLyB0byB0aGUgTG9naW4gVVJMCi0gICAgICAgIHVybDog IiR7IG5vdGVib29rX2xvZ2luX3VybCB9IiwKLSAgICAgICAgLy8gV2l0aCBvdXIgcGFzc3dvcmQK LSAgICAgICAgZGF0YTogewotICAgICAgICAgICAgJ3Bhc3N3b3JkJzogJyR7IG5vdGVib29rX3B3 IH0nCi0gICAgICAgIH0sCi0gICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0 aGUgbm90ZWJvb2sKLSAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIC8v QXBwZW5kIGFuIG9iamVjdCB0byB0aGUgYm9keQotICAgICAgICAgICAgJCgnYm9keScpLmFwcGVu ZCgKLSAgICAgICAgICAgICAgICAkKCc8b2JqZWN0Lz4nLCB7CitpZiAoICR7IHBhc3N3b3JkX2F1 dGhfanN2YXIgfSApIHsKKyAgICAvLyBPbiBkb2N1bWVudCByZWFkeQorICAgICQoIGRvY3VtZW50 ICkucmVhZHkoZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIE1ha2UgYW4gQUpBWCBQT1NUCisgICAg ICAgICQuYWpheCh7CisgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCisgICAgICAgICAgICAvLyB0 byB0aGUgTG9naW4gVVJMCisgICAgICAgICAgICB1cmw6ICIkeyBub3RlYm9va19sb2dpbl91cmwg fSIsCisgICAgICAgICAgICAvLyBXaXRoIG91ciBwYXNzd29yZAorICAgICAgICAgICAgZGF0YTog eworICAgICAgICAgICAgICAgICdwYXNzd29yZCc6ICckeyBub3RlYm9va19wdyB9JworICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0aGUg bm90ZWJvb2sKKyAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAg ICAgLy9BcHBlbmQgYW4gb2JqZWN0IHRvIHRoZSBib2R5CisgICAgICAgICAgICAgICAgJCgnYm9k eScpLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgJCgnPG9iamVjdC8+JywgeworICAgICAg ICAgICAgICAgICAgICAgICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKKyAgICAg ICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLAorICAgICAgICAgICAgICAgICAgICAg ICAgd2lkdGg6ICcxMDAlJworICAgICAgICAgICAgICAgICAgICB9KS5hcHBlbmQoCisgICAgICAg ICAgICAgICAgICAgICAgICAvLyBBbmQgYW4gZW1iZWQgdG8gdGhlIG9iamVjdAorICAgICAgICAg ICAgICAgICAgICAgICAgJCgnPGVtYmVkLz4nLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoZWlnaHQ6ICcxMDAlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0 aDogJzEwMCUnCisgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJv cjogZnVuY3Rpb24oanF4aHIsIHN0YXR1cywgZXJyb3IpeworICAgICAgICAgICAgICAgIGlmKCR7 IHBhc3N3b3JkX2F1dGhfanN2YXIgfSAmJiAhJHsgYXBhY2hlX3VybHNfanN2YXIgfSl7CisgICAg ICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoIkVycm9yLCBjb3VsZCBub3QgYXV0b21h dGljYWxseSBhdXRobz0Kcml6ZSB5b3UuIFlvdXIiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKyAiIHBhc3N3b3JkIGlzOiAkeyBub3RlYm9va19wdyB9PD0KYnIvPkFz ayB5b3VyIGFkbWluaXN0cmF0b3IiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyAiIHRvIHNldCBhcGFjaGVfdXJscyA9M0QgVHJ1ZSB0bz0KIG1ha2UgdGhpcyBnbyBh d2F5Iik7CisgICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICAkKCc8b2JqZWN0Lz4nLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoZWlnaHQ6ICcxMDAlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0 aDogJzEwMCUnCisgICAgICAgICAgICAgICAgICAgICAgICB9KS5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLy8gQW5kIGFuIGVtYmVkIHRvIHRoZSBvYmplY3QKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAkKCc8ZW1iZWQvPicsIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 KQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApOworICAg ICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3JfbXNnID0z RCAiPGgxPkVycm9yICIgKyBzdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIjwvaDE+ Q291bGQgbm90IGNvbm5lY3QgdG8gSVB5dGhvbiBOb3RlYm9vazogIgorICAgICAgICAgICAgICAg ICAgICAgICAgKyBlcnJvciArICI8YnIvPlBsZWFzZSBjaGVjayBJUHl0aG9uIGNvbmZpZ3VyYXRp b249CiBzZXR0aW5nczxici8+IgorICAgICAgICAgICAgICAgICAgICArICJDdXJyZW50IHNldHRp bmdzOjxiciAvPiIKKyAgICAgICAgICAgICAgICAgICAgKyAiYXBhY2hlX3VybHM6ICIgKyAkeyBh cGFjaGVfdXJsc19qc3ZhciB9ICsgIiA8YnIvPiIKKyAgICAgICAgICAgICAgICAgICAgKyAicGFz c3dvcmRfYXV0aDogIiArICR7IHBhc3N3b3JkX2F1dGhfanN2YXIgfSArICIgPGJyPQovPiI7Cisg ICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hcHBlbmQoIGVycm9yX21zZyApOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9CitlbHNl IHsKKyAgICAvLyBOb3QgdXNpbmcgcGFzc3dvcmQgYXV0aCwganVzdCBlbWJlZCBpdCB0byBhdm9p ZCBjb250ZW50LW9yaWdpbiBpc3N1PQplcy4KKyAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0 aW9uKCkgeworICAgICAgICAkKCdib2R5JykuYXBwZW5kKAorICAgICAgICAgICAgJCgnPG9iamVj dC8+JywgeworICAgICAgICAgICAgICAgIHNyYzogJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfScs CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCisgICAgICAgICAgICAgICAgd2lkdGg6 ICcxMDAlJworICAgICAgICAgICAgfSkuYXBwZW5kKAorICAgICAgICAgICAgICAgIC8vIEFuZCBh biBlbWJlZCB0byB0aGUgb2JqZWN0CisgICAgICAgICAgICAgICAgJCgnPGVtYmVkLz4nLCB7CiAg ICAgICAgICAgICAgICAgICAgIHNyYzogJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfScsCiAgICAg ICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLAogICAgICAgICAgICAgICAgICAgICB3aWR0 aDogJzEwMCUnCi0gICAgICAgICAgICAgICAgfSkuYXBwZW5kKAotICAgICAgICAgICAgICAgICAg ICAvLyBBbmQgYW4gZW1iZWQgdG8gdGhlIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAkKCc8 ZW1iZWQvPicsIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogJyR7IG5vdGVib29rX2Fj Y2Vzc191cmwgfScsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJywKLSAg ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScKLSAgICAgICAgICAgICAgICAgICAg fSkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApOwotICAgICAgICB9CisgICAgICAg ICAgICAgICAgfSkKKyAgICAgICAgICAgICkKKyAgICAgICAgKTsKICAgICB9KTsKLX0pOworfQog PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dh bGF4eS1jZW50cmFsL2NvbW1pdHMvYmQyZDZkMWE5NzY3LwpDaGFuZ2VzZXQ6ICAgYmQyZDZkMWE5 NzY3ClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAy MjozODowNCswMDowMApTdW1tYXJ5OiAgICAgPTNEP1VURi04P3E/SW49M0QyMEZGPTNEMjB0aGU9 M0QyMDxvYmplY3Q+PTNEMjBhdHRyaXV0ZT0zRDIwbmU9CmVkcz0zRDIwdG89M0QyMGJlPz0zRCA9 M0Q/VVRGLTg/cT89M0QyMGZyb209M0QyMHR5cGU9M0QyMCdkYXRhJz0zRDIwYW5kPTNEMj0KMG5v dD0zRDIwJ3NyYycuPTNEMEFDaHJvbWU9M0QyMHNlZW1zPz0zRCA9M0Q/VVRGLTg/cT89M0QyMHRv PTNEMjBiZT0zRDIwaGFwPQpweT0zRDIwd2l0aD0zRDIwJ3NyYycuPTNEMjBUaGlzPTNEMjBjb21t aXQ9M0QyMGNoYW5nZXM9M0QyMD89M0QgPTNEP1VURi04P3E9Cj9pdD0zRDIwYmFjaz0zRDIwdG89 M0QyMCdkYXRhJy4/PTNECkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgOTMzNDhhNjFkZWEz N2FmYmVkZTNlYzk5YmQ4NDkxNzEyNTNjMDVkMyAtciBiZDJkNmQxYTk3NjcyZWE4MGQ3YWQ2MT0K ZTNmMDczOTE2MWJmZTQ3MTMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTQ1LDQwICsx NDUsMTggQEAKICAgICAgICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0aGUg bm90ZWJvb2sKICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAg ICAgLy9BcHBlbmQgYW4gb2JqZWN0IHRvIHRoZSBib2R5Ci0gICAgICAgICAgICAgICAgJCgnYm9k eScpLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgJCgnPG9iamVjdC8+JywgewotICAgICAg ICAgICAgICAgICAgICAgICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKLSAgICAg ICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLAotICAgICAgICAgICAgICAgICAgICAg ICAgd2lkdGg6ICcxMDAlJwotICAgICAgICAgICAgICAgICAgICB9KS5hcHBlbmQoCi0gICAgICAg ICAgICAgICAgICAgICAgICAvLyBBbmQgYW4gZW1iZWQgdG8gdGhlIG9iamVjdAotICAgICAgICAg ICAgICAgICAgICAgICAgJCgnPGVtYmVkLz4nLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3JjOiAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoZWlnaHQ6ICcxMDAlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0 aDogJzEwMCUnCi0gICAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgICAg ICApCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAkKCdib2R5JykuYXBwZW5k KCc8b2JqZWN0IGRhdGE9M0QiJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9PQoiIGhlaWdodD0zRCIx MDAlIiB3aWR0aD0zRCIxMDAlIj4nCisgICAgICAgICAgICAgICAgKyc8ZW1iZWQgc3JjPTNEIiR7 IG5vdGVib29rX2FjY2Vzc191cmwgfSIgaGVpZ2h0PTNEIjEwMCUiID0Kd2lkdGg9M0QiMTAwJSIv Pjwvb2JqZWN0PicKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICB9LAogICAgICAgICAg ICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsKICAgICAgICAgICAgICAg ICBpZigkeyBwYXNzd29yZF9hdXRoX2pzdmFyIH0gJiYgISR7IGFwYWNoZV91cmxzX2pzdmFyIH0p ewogICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKCJFcnJvciwgY291bGQgbm90 IGF1dG9tYXRpY2FsbHkgYXV0aG89CnJpemUgeW91LiBZb3VyIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsgIiBwYXNzd29yZCBpczogJHsgbm90ZWJvb2tfcHcgfTw9 CmJyLz5Bc2sgeW91ciBhZG1pbmlzdHJhdG9yIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsgIiB0byBzZXQgYXBhY2hlX3VybHMgPTNEIFRydWUgdG89CiBtYWtlIHRo aXMgZ28gYXdheSIpOwotICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKAotICAg ICAgICAgICAgICAgICAgICAgICAgJCgnPG9iamVjdC8+JywgewotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNyYzogJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfScsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2lkdGg6ICcxMDAlJwotICAgICAgICAgICAgICAgICAgICAgICAgfSkuYXBwZW5kKAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCBhbiBlbWJlZCB0byB0aGUgb2JqZWN0Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnPGVtYmVkLz4nLCB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNyYzogJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfScsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgfSkKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAg KTsKKyAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgnPG9iamVjdCBkYXRhPTNE IiR7IG5vdGVib29rX2FjY2Vzc191PQpybCB9IiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAw JSI+JworICAgICAgICAgICAgICAgICAgICArJzxlbWJlZCBzcmM9M0QiJHsgbm90ZWJvb2tfYWNj ZXNzX3VybCB9IiBoZWlnaHQ9M0QiMTA9CjAlIiB3aWR0aD0zRCIxMDAlIi8+PC9vYmplY3Q+Jwor ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAg ICAgICAgICAgIHZhciBlcnJvcl9tc2cgPTNEICI8aDE+RXJyb3IgIiArIHN0YXR1cwogICAgICAg ICAgICAgICAgICAgICAgICAgKyAiPC9oMT5Db3VsZCBub3QgY29ubmVjdCB0byBJUHl0aG9uIE5v dGVib29rOiAiCkBAIC0xOTUsMjAgKzE3Myw5IEBACiBlbHNlIHsKICAgICAvLyBOb3QgdXNpbmcg cGFzc3dvcmQgYXV0aCwganVzdCBlbWJlZCBpdCB0byBhdm9pZCBjb250ZW50LW9yaWdpbiBpc3N1 PQplcy4KICAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgICAgICAkKCdi b2R5JykuYXBwZW5kKAotICAgICAgICAgICAgJCgnPG9iamVjdC8+JywgewotICAgICAgICAgICAg ICAgIHNyYzogJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfScsCi0gICAgICAgICAgICAgICAgaGVp Z2h0OiAnMTAwJScsCi0gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJwotICAgICAgICAgICAg fSkuYXBwZW5kKAotICAgICAgICAgICAgICAgIC8vIEFuZCBhbiBlbWJlZCB0byB0aGUgb2JqZWN0 Ci0gICAgICAgICAgICAgICAgJCgnPGVtYmVkLz4nLCB7Ci0gICAgICAgICAgICAgICAgICAgIHNy YzogJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfScsCi0gICAgICAgICAgICAgICAgICAgIGhlaWdo dDogJzEwMCUnLAotICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnCi0gICAgICAgICAg ICAgICAgfSkKLSAgICAgICAgICAgICkKLSAgICAgICAgKTsKKyAgICAgICAgJCgnYm9keScpLmFw cGVuZCgnPG9iamVjdCBkYXRhPTNEIiR7IG5vdGVib29rX2FjY2Vzc191cmwgfSIgaGVpZ2h0PQo9 M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSI+JworICAgICAgICArJzxlbWJlZCBzcmM9M0QiJHsgbm90 ZWJvb2tfYWNjZXNzX3VybCB9IiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0Q9CiIxMDAlIi8+PC9v YmplY3Q+JworICAgICAgICApCiAgICAgfSk7CiB9CiA8L3NjcmlwdD4KCgpodHRwczovL2JpdGJ1 Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZTVhYzMwZGNiMmJmLwpDaGFu Z2VzZXQ6ICAgZTVhYzMwZGNiMmJmClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAg ICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgUmVsZWFzZSBzdWdh ciEgSG9wZSB5b3UgbGlrZSBpdCBAZXJhc2NoZS4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAt ciBiZDJkNmQxYTk3NjcyZWE4MGQ3YWQ2MWUzZjA3MzkxNjFiZmU0NzEzIC1yIGU1YWMzMGRjYjJi ZjlhYzEyZjVjZjRlPQpkYTdmMDdkYzRkZjFmZDVmZSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtv CkBAIC0xMjYsNyArMTI2LDExIEBACiAlPjxodG1sPjxoZWFkPgorPCEtLSBUb0RvOiBmaWd1cmUg b3V0LCBob3d0byBpbmxjbHVkZSB0aGUgZ2FsYXh5IHRvYXN0ci5sZXNzIGZpbGUgLS0+Cis8bGlu ayBocmVmPTNEImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3RvYXN0ci5q cy9sYXRlc3QvY3NzLz0KdG9hc3RyLmNzcyIgcmVsPTNEInN0eWxlc2hlZXQiLz4KICR7aC5qcygg J2xpYnMvanF1ZXJ5L2pxdWVyeScgKSB9Ciske2guanMoICdsaWJzL3RvYXN0cicgKSB9CisKIDwv aGVhZD48Ym9keT48c2NyaXB0IHR5cGU9M0QidGV4dC9qYXZhc2NyaXB0Ij4KQEAgLTE1MCwyMSAr MTU0LDIzIEBACiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgfSwKICAgICAgICAgICAg IGVycm9yOiBmdW5jdGlvbihqcXhociwgc3RhdHVzLCBlcnJvcil7CisKKyAgICAgICAgICAgICAg ICB0b2FzdHIuaW5mbygKKyAgICAgICAgICAgICAgICAgICAgIkF1dG9tYXRpYyBhdXRob3JpemF0 aW9uIGZhaWxlZC4gWW91IGNhbiBtYW51YWxseSBsb2dpPQpuIHdpdGg6PGJyPiR7IG5vdGVib29r X3B3IH08YnI+PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGE9Cnh5 LWlweXRob24nIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKKyAgICAg ICAgICAgICAgICAgICAgIlBsZWFzZSBsb2dpbiBtYW51YWxseSIsCisgICAgICAgICAgICAgICAg ICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDMwMDAwLCAndGFwVG9EaXNtaXNz Jz0KOiBmYWxzZX0KKyAgICAgICAgICAgICAgICApOworCiAgICAgICAgICAgICAgICAgaWYoJHsg cGFzc3dvcmRfYXV0aF9qc3ZhciB9ICYmICEkeyBhcGFjaGVfdXJsc19qc3ZhciB9KXsKLSAgICAg ICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgiRXJyb3IsIGNvdWxkIG5vdCBhdXRvbWF0 aWNhbGx5IGF1dGhvPQpyaXplIHlvdS4gWW91ciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArICIgcGFzc3dvcmQgaXM6ICR7IG5vdGVib29rX3B3IH08PQpici8+QXNr IHlvdXIgYWRtaW5pc3RyYXRvciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArICIgdG8gc2V0IGFwYWNoZV91cmxzID0zRCBUcnVlIHRvPQogbWFrZSB0aGlzIGdvIGF3 YXkiKTsKICAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgnPG9iamVjdCBkYXRh PTNEIiR7IG5vdGVib29rX2FjY2Vzc191PQpybCB9IiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0Qi MTAwJSI+JwogICAgICAgICAgICAgICAgICAgICArJzxlbWJlZCBzcmM9M0QiJHsgbm90ZWJvb2tf YWNjZXNzX3VybCB9IiBoZWlnaHQ9M0QiMTA9CjAlIiB3aWR0aD0zRCIxMDAlIi8+PC9vYmplY3Q+ JwogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgfWVsc2V7Ci0gICAgICAg ICAgICAgICAgICAgIHZhciBlcnJvcl9tc2cgPTNEICI8aDE+RXJyb3IgIiArIHN0YXR1cwotICAg ICAgICAgICAgICAgICAgICAgICAgKyAiPC9oMT5Db3VsZCBub3QgY29ubmVjdCB0byBJUHl0aG9u IE5vdGVib29rOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIGVycm9yICsgIjxici8+UGxl YXNlIGNoZWNrIElQeXRob24gY29uZmlndXJhdGlvbj0KIHNldHRpbmdzPGJyLz4iCi0gICAgICAg ICAgICAgICAgICAgICsgIkN1cnJlbnQgc2V0dGluZ3M6PGJyIC8+IgotICAgICAgICAgICAgICAg ICAgICArICJhcGFjaGVfdXJsczogIiArICR7IGFwYWNoZV91cmxzX2pzdmFyIH0gKyAiIDxici8+ IgotICAgICAgICAgICAgICAgICAgICArICJwYXNzd29yZF9hdXRoOiAiICsgJHsgcGFzc3dvcmRf YXV0aF9qc3ZhciB9ICsgIiA8YnI9Ci8+IjsKLSAgICAgICAgICAgICAgICAgICAgJCgnYm9keScp LmFwcGVuZCggZXJyb3JfbXNnICk7CisgICAgICAgICAgICAgICAgICAgIHRvYXN0ci5lcnJvcigK KyAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgY29ubmVjdCB0byBJUHl0aG9uIE5v dGVib29rLiBQbGVhc2UgY29uPQp0YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4gPGEgaHJlZj0zRCdo dHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHk9CnRob24nIHRhcmdldD0zRCdf YmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJT ZWN1cml0eSB3YXJuaW5nIiw9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0 b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtPQppc3MnOiB0cnVlfQorICAg ICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9 CiAgICAgICAgIH0pOwpAQCAtMTcyLDYgKzE3OCwxMSBAQAogfQogZWxzZSB7CiAgICAgLy8gTm90 IHVzaW5nIHBhc3N3b3JkIGF1dGgsIGp1c3QgZW1iZWQgaXQgdG8gYXZvaWQgY29udGVudC1vcmln aW4gaXNzdT0KZXMuCisgICAgdG9hc3RyLndhcm5pbmcoCisgICAgICAgICJJUHl0aG9uIE5vdGVi b29rIHdhcyBsdW5jaGVkIHdpaHRvdXQgYXV0aGVudGljYXRpb24uIFRoaXMgaXMgYSBzZT0KY3Vy aXR5IGlzc3VlLiA8YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5 LWlweXRob24nIHRhcmdlPQp0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAorICAg ICAgICAiU2VjdXJpdHkgd2FybmluZyIsPTIwCisgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVl LCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9CisgICAgICAgICk7CiAg ICAgJCggZG9jdW1lbnQgKS5yZWFkeShmdW5jdGlvbigpIHsKICAgICAgICAgJCgnYm9keScpLmFw cGVuZCgnPG9iamVjdCBkYXRhPTNEIiR7IG5vdGVib29rX2FjY2Vzc191cmwgfSIgaGVpZ2h0PQo9 M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSI+JwogICAgICAgICArJzxlbWJlZCBzcmM9M0QiJHsgbm90 ZWJvb2tfYWNjZXNzX3VybCB9IiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0Q9CiIxMDAlIi8+PC9v YmplY3Q+JwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29t bWl0cy8zYWNiODBhYzA1YTgvCkNoYW5nZXNldDogICAzYWNiODBhYzA1YTgKVXNlcjogICAgICAg IEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1 bW1hcnk6ICAgICByZXBsYWNlIHRvYXN0ci5jc3Mgd2l0aCB0aGUgR2FsYXh5IG9uZQpBZmZlY3Rl ZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGU1YWMzMGRjYjJiZjlhYzEyZjVjZjRlZGE3ZjA3ZGM0ZGYx ZmQ1ZmUgLXIgM2FjYjgwYWMwNWE4OWZlN2U3OGU1NzE9CjViYTNmZjkzMGZmMjk4MmFlIGNvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtv Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lw eXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTEyNiw4ICsxMjYsNyBAQAogJT48aHRtbD48aGVhZD4K LTwhLS0gVG9EbzogZmlndXJlIG91dCwgaG93dG8gaW5sY2x1ZGUgdGhlIGdhbGF4eSB0b2FzdHIu bGVzcyBmaWxlIC0tPgotPGxpbmsgaHJlZj0zRCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29t L2FqYXgvbGlicy90b2FzdHIuanMvbGF0ZXN0L2Nzcy89CnRvYXN0ci5jc3MiIHJlbD0zRCJzdHls ZXNoZWV0Ii8+Ciske2guY3NzKCAnYmFzZScgKSB9CiAke2guanMoICdsaWJzL2pxdWVyeS9qcXVl cnknICkgfQogJHtoLmpzKCAnbGlicy90b2FzdHInICkgfQo9MjAKCgpodHRwczovL2JpdGJ1Y2tl dC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMjkxNWEzMDQyOTUxLwpDaGFuZ2Vz ZXQ6ICAgMjkxNWEzMDQyOTUxClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAx NC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQnVtcGVkIHRpbWVvdXQKSSd2ZSBm b3VuZCBpbiBvcGVyYSB0aGF0IGNvcHkrcGFzdGUgZG9lc24ndCB3b3JrLCBzbyBJIGhhdmUgdG8g ZHJhZyBhbmQgZHJvPQpwLiBBZGRpdGlvbmFsbHksIHdlIG5lZWQKdGhlIHVzZXIgdG8gaGF2ZSB0 aW1lIHRvIHJlYWQgYW5kIGNvbXByZWhlbmQgd2hhdCB3ZSdyZSB0ZWxsaW5nIHRoZW0gYmVmb3Jl PQogdGhpcyBub3RpZmljYXRpb24KZGlzYXBwZWFycyBmb3JldmVyLgoKRGVzcGl0ZSB0aGUgZmFj dCB0aGF0IHRoaXMgaXMgdGVjaG5pY2FsbHkgYSBjb25maWd1cmF0aW9uIGJ1ZyBvbiB0aGUgc3lz IGFkPQptaW4ncyBwYXJ0LCBmb3IgYSBmdXR1cmUKcmVsZWFzZSwgd2Ugc2hvdWxkIHN3aXRjaCB0 byBhIGRpZmZlcmVudCB0eXBlIG9mIG5vdGlmaWNhdGlvbiwgcHJvYmFibHkgbGlrPQplIGEgYmFu bmVyIHdpdGggYW4gWCB0aGF0CnRoZXkgY2FuIGNsb3NlIG9uY2UgdGhleSdyZSBkb25lIHJlYWRp bmcgaXQuIFRoYXQgd2F5IHdlIGtub3cgaXQnbGwgYmUgdGhlcj0KZSBhcyBsb25nIGFzIHRoZXkg bmVlZCBpdAp0byBiZS4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAzYWNiODBhYzA1YTg5 ZmU3ZTc4ZTU3MTViYTNmZjkzMGZmMjk4MmFlIC1yIDI5MTVhMzA0Mjk1MWE4Mjc3YjZmNGE5PQoz MmRmZTQwMDg2N2Y0ODNkYyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlz dWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xNTcsNyArMTU3 LDcgQEAKICAgICAgICAgICAgICAgICB0b2FzdHIuaW5mbygKICAgICAgICAgICAgICAgICAgICAg IkF1dG9tYXRpYyBhdXRob3JpemF0aW9uIGZhaWxlZC4gWW91IGNhbiBtYW51YWxseSBsb2dpPQpu IHdpdGg6PGJyPiR7IG5vdGVib29rX3B3IH08YnI+PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5j b20vYmdydWVuaW5nL2dhbGE9Cnh5LWlweXRob24nIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0 YWlscyAuLi48L2E+IiwKICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSBsb2dpbiBtYW51YWxs eSIsCi0gICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6 IDMwMDAwLCAndGFwVG9EaXNtaXNzJz0KOiBmYWxzZX0KKyAgICAgICAgICAgICAgICAgICAgeydj bG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMTAwMDAwLCAndGFwVG9EaXNtaXNzPQonOiBm YWxzZX0KICAgICAgICAgICAgICAgICApOwo9MjAKICAgICAgICAgICAgICAgICBpZigkeyBwYXNz d29yZF9hdXRoX2pzdmFyIH0gJiYgISR7IGFwYWNoZV91cmxzX2pzdmFyIH0pewpAQCAtMTY3LDcg KzE2Nyw3IEBACiAgICAgICAgICAgICAgICAgfWVsc2V7CiAgICAgICAgICAgICAgICAgICAgIHRv YXN0ci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgY29ubmVjdCB0 byBJUHl0aG9uIE5vdGVib29rLiBQbGVhc2UgY29uPQp0YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4g PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHk9CnRob24n IHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICJTZWN1cml0eSB3YXJuaW5nIiw9MjAKKyAgICAgICAgICAgICAgICAgICAgICAg ICJTZWN1cml0eSB3YXJuaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0 b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtPQppc3MnOiB0cnVlfQogICAg ICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzksNyArMTc5 LDcgQEAKICAgICAvLyBOb3QgdXNpbmcgcGFzc3dvcmQgYXV0aCwganVzdCBlbWJlZCBpdCB0byBh dm9pZCBjb250ZW50LW9yaWdpbiBpc3N1PQplcy4KICAgICB0b2FzdHIud2FybmluZygKICAgICAg ICAgIklQeXRob24gTm90ZWJvb2sgd2FzIGx1bmNoZWQgd2lodG91dCBhdXRoZW50aWNhdGlvbi4g VGhpcyBpcyBhIHNlPQpjdXJpdHkgaXNzdWUuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29t L2JncnVlbmluZy9nYWxheHktaXB5dGhvbicgdGFyZ2U9CnQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFp bHMgLi4uPC9hPiIsCi0gICAgICAgICJTZWN1cml0eSB3YXJuaW5nIiw9MjAKKyAgICAgICAgIlNl Y3VyaXR5IHdhcm5pbmciLAogICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQn OiAyMDAwMCwgJ3RhcFRvRGlzbWlzcyc6IGZhbHNlfQogICAgICAgICApOwogICAgICQoIGRvY3Vt ZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9n YWxheHktY2VudHJhbC9jb21taXRzLzA4ZTBjMDM5N2RiZS8KQ2hhbmdlc2V0OiAgIDA4ZTBjMDM5 N2RiZQpVc2VyOiAgICAgICAgQmpvZXJuR3J1ZW5pbmcKRGF0ZTogICAgICAgIDIwMTQtMTAtMTgg MjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEFkZGVkIHRoZSBpbml0aWFsIHJlbGVhc2UgZGF0 ZSEKWWVhaCwgd2UgYXJlIHJlYWR5IHRvIHJlbGVhc2UhClRoYW5rcyBzbyBtdWNoIEBlcmFzY2hl IGl0IGlzIGEgcGxlYXN1cmUgdG8gd29yayB3aXRoIHlvdSEKQWZmZWN0ZWQgIzogIDEgZmlsZQoK ZGlmZiAtciAyOTE1YTMwNDI5NTFhODI3N2I2ZjRhOTMyZGZlNDAwODY3ZjQ4M2RjIC1yIDA4ZTBj MDM5N2RiZTExZmIwNGUwMDkzPQowZjQzMDMyMTMwMGNlM2U1OCBjb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL1JFQURNRS5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL1JFQURNRS5tZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL1JFQURNRS5tZApAQCAtMTA0LDE0ICsxMDQsMTQgQEAKIEF1dGhvcnMKID0z RD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKLSAqIEJqPUMzPUI2cm4gR3I9QzM9QkNuaW5nCisgKiBC aj1DMz1CNnJuIEdyPUMzPUJDbmluZyA8YmpvZXJuLmdydWVuaW5nQGdtYWlsLmNvbT4KICAqIEVy aWMgUmFzY2hlIDxyYXNjaGUuZXJpY0B5YW5kZXgucnU+Cj0yMAo9MjAKIEhpc3RvcnkKID0zRD0z RD0zRD0zRD0zRD0zRD0zRAo9MjAKLS0gdjAuMTogSW5pdGlhbCBwdWJsaWMgcmVsZWFzZQorLSB2 MC4xOiBJbml0aWFsIHB1YmxpYyByZWxlYXNlICgwMS4wOC4yMDE0KQo9MjAKPTIwCiBMaWNlbmNl IChNSVQpCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21t aXRzLzEwMjI2ODRjNDMyMS8KQ2hhbmdlc2V0OiAgIDEwMjI2ODRjNDMyMQpVc2VyOiAgICAgICAg ZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTog ICAgIEZpeGVkIFVSTCBmb3IgZWFzaWVyIGluc3RhbGwKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlm ZiAtciAwOGUwYzAzOTdkYmUxMWZiMDRlMDA5MzBmNDMwMzIxMzAwY2UzZTU4IC1yIDEwMjI2ODRj NDMyMTk3NTQyYjdhN2FjPQpmMDMyYTIwMjQwNTQ5ODNkNyBjb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL1JFQURNRS5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL1JFQURNRS5tZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL1JFQURNRS5tZApAQCAtMjMsNyArMjMsNyBAQAogQWx0ZXJuYXRpdmx5LCB5b3Ug Y2FuIGNsb25lIHRoZSByZXBvc2l0b3J5IHdpdGgKPTIwCiBgYGBiYXNoCi1naXQgY2xvbmUgaHR0 cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi5naXQgY29uZmlnL3BsdWdp bnMvdj0KaXovaXB5dGhvbgorZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcv Z2FsYXh5LWlweXRob24uZ2l0IGNvbmZpZy9wbHVnaW5zL3Y9CmlzdWFsaXphdGlvbnMvaXB5dGhv bgogYGBgYAo9MjAKIFRoZSBJUHl0aG9uIHZpc3VhbGlzYXRpb24gb3B0aW9uIHNob3VsZCBiZSB2 aXNpYmxlIG5leHQgdG8gdGhlIHVzdWFsIENoYXJ0PQpzIG9yIFRyYWNrc3RlciBvcHRpb25zIGlu IHlvdXIgdmlzdWFsaXNhdGlvbiBtZW51ZS4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5 L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZWEzOWQzYzk2MDFlLwpDaGFuZ2VzZXQ6ICAgZWEzOWQz Yzk2MDFlClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAgICAgMjAxNC0xMC0x OCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQWRkICJob3cgZG9lcyBpdCB3b3JrIiBzZWN0 aW9uIHRvIHRoZSByZWFkbWUKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAxMDIyNjg0YzQz MjE5NzU0MmI3YTdhY2YwMzJhMjAyNDA1NDk4M2Q3IC1yIGVhMzlkM2M5NjAxZTJlNDM3ZTk0OWI2 PQo0NzMwMTFlYWM1OGM5YWM5MCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L1JFQURNRS5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL1JF QURNRS5tZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL1JFQURN RS5tZApAQCAtNDQsNiArNDQsMTQgQEAKICAqIHNhdmVkIElQeXRob24gTm90ZWJvb2sgZmlsZXMg Y2FuIGJlIHZpZXdlZCBpbiBIVE1MIGFuZCByZS1vcGVuZWQKICAqIHNlbGYtY2xvc2luZyBhbmQg Y2xlYW5pbmcgSVB5dGhvbiBkb2NrZXIgY29udGFpbmVyCj0yMAorSG93IGRvZXMgaXQgd29yawor PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECisKK1RoZSBt YWtvIHRlbXBsYXRlIGZyb20gdGhlIEdhbGF4eSB2aXN1YWxpc2F0aW9uIGZyYW1ld29yayByZW5k ZXJzIHRoZSBpbnRlPQpyZmFjZSBhbmQgYnVpbGRzIGFsbCBmaWxlcyBhbmQgY29tbWFuZHMgbmVl ZGVkIHRvIGx1bmNoIHRoZSBkb2NrZXIgY29udGFpbmU9CnIuIEEgY29uZmlnIGZpbGUgaXMgc2F2 ZWQgdW5kZXIgYGAvaW1wb3J0L2BgIGluc2lkZSB0aGUgZG9ja2VyIGNvbnRhaW5lci4gVD0KaGUg SVB5dGhvbiB3ZWJwYWdlIHJ1bm5pbmcgaW4gZG9ja2VyIHdpbGwgYmUgaW5jbHVkZWQgaW4gYSBI VE1MIG9iamVjdCBhbmQgPQpkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuPTIwCitEZXBlbmRpbmcgb24g eW91ciBjb25maWd1cmF0aW9uIHNvbWUgSmF2YVNjcmlwdCBtYWdpYyBpcyBkb25lIHRvIGFkZCBh biBvYj0KamVjdCB0byB0aGUgRE9NLCB3aGljaCB3aWxsIGJlIGxvYWRlZCBieSB0aGUgYnJvd3Nl ciBhbmQgY29uZGl0aW9uYWxseSBoYW5kPQpsZXMgbG9naW4uCitJc2lkZSBvZiBkb2NrZXIgVENQ IGNvbm5lY3Rpb25zIGFyZSBtb25pdG9yZWQgdXNpbmcgY3Jvbi4gQXMgc29vbiBhcyB0aGUgdT0K c2VyIHF1aXRzIHVzaW5nIHRoZSBub3RlYm9vaywgdGhlIGRyb3BwaW5nIFRDUCBjb25uZWN0aW9u cyBhcmUgcmVjb2duaXNlZCBhPQpuZCB0aGUgY290YWluZXIgY2xlYW5zIHVwIGFmdGVyIGl0c2Vs ZiBhbmQga2lsbHMgaXRzZWxmLgorCisKPTIwCiBGdW5jdGlvbnMgYW5kIHZhcmlhYmxlcwogPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNECgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9j b21taXRzLzJiNGE1ZmEwYmY0Zi8KQ2hhbmdlc2V0OiAgIDJiNGE1ZmEwYmY0ZgpVc2VyOiAgICAg ICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFy eTogICAgIEFkZGVkIFNTTCBvcHRpb24KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBlYTM5 ZDNjOTYwMWUyZTQzN2U5NDliNjQ3MzAxMWVhYzU4YzlhYzkwIC1yIDJiNGE1ZmEwYmY0Zjk2NGE5 ZjUxMmZlPQo0MTY3NGE3NjVjZTNmNDdmMyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL2NvbmYvaXB5dGhvbi5jb25mCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vY29uZi9pcHl0aG9uLmNvbmYKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi9jb25mL2lweXRob24uY29uZgpAQCAtMSw2ICsxLDcgQEAKIFttYWlu XQogYXBhY2hlX3VybHMgPTNEIEZhbHNlCiBwYXNzd29yZF9hdXRoID0zRCBGYWxzZQorc3NsID0z RCBGYWxzZQo9MjAKIFtkb2NrZXJdCiBjb21tYW5kID0zRCAiZG9ja2VyIgoKCmh0dHBzOi8vYml0 YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9iOWNjODNkZGIxZjIvCkNo YW5nZXNldDogICBiOWNjODNkZGIxZjIKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAg ICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBGaXhlcyAjNgpBZmZlY3Rl ZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDJiNGE1ZmEwYmY0Zjk2NGE5ZjUxMmZlNDE2NzRhNzY1Y2Uz ZjQ3ZjMgLXIgYjljYzgzZGRiMWYyNzA1MjA0MzlkZDI9CjZlYmI3M2FmMDdkOWQ1Zjk4IGNvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtv Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lw eXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTMyLDcgKzMyLDcgQEAKIG91cl90ZW1wbGF0ZV9kaXIg PTNEIG9zLnBhdGguam9pbih2aXpfcGx1Z2luX2RpciwgInRlbXBsYXRlcyIpCiBpcHlfdml6X2Nv bmZpZyA9M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoeydhcGFjaGVfdXJscyc6IEZh bHNlLCAnYz0Kb21tYW5kJzogJ2RvY2tlcicsICdpbWFnZSc6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLT0K bm90ZWJvb2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3Bhc3N3b3JkX2F1dGgnOiBGYWxzZX0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncGFzc3dvcmRfYXV0aCc6IEZhbHNlLCAncz0Kc2wnOiBGYWxz ZX0pCiBpcHlfdml6X2NvbmZpZy5yZWFkKCBvcy5wYXRoLmpvaW4oIG91cl9jb25maWdfZGlyLCAi aXB5dGhvbi5jb25mIiApICkKPTIwCiAjIEVuc3VyZSBnZW5lcmF0aW9uIG9mIG5vdGVib29rIGlk IGlzIGRldGVybWluaXN0aWMgZm9yIHRoZSBkYXRhc2V0LiBSZXBsYT0KY2Ugd2l0aCBoaXN0b3J5 IGlkCkBAIC0xMDgsMTQgKzEwOCwyMCBAQAogZG9ja2VyX2NtZCA9M0QgJyVzIHJ1biAtZCAtLXNp Zy1wcm94eT0zRHRydWUgLXAgJXM6Njc4OSAtdiAiJXM6L2ltcG9ydC8iICU9CnMnICUgXAogICAg IChpcHlfdml6X2NvbmZpZy5nZXQoImRvY2tlciIsICJjb21tYW5kIiksIFBPUlQsIHRlbXBfZGly LCBpcHlfdml6X2NvbmY9CmlnLmdldCgiZG9ja2VyIiwgImltYWdlIikpCj0yMAorIyBTZXQgb3Vy IHByb3RvIHNvIHBhc3N3b3JkcyBkb24ndCBnbyBpbiBjbGVhcgoraWYgaXB5X3Zpel9jb25maWcu Z2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKToKKyAgICBQUk9UTyA9M0QgImh0dHBzIgorZWxzZToK KyAgICBQUk9UTyA9M0QgImh0dHAiCisKICMgQWNjZXNzIFVSTHMgZm9yIHRoZSBub3RlYm9vayBm cm9tIHdpdGhpbiBnYWxheHkuCiBpZiBpcHlfdml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwg ImFwYWNoZV91cmxzIik6Ci0gICAgbm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgImh0dHA6Ly8lcy9p cHl0aG9uLyVzL25vdGVib29rcy9pcHl0aG9uX2dhbGF4eT0KX25vdGVib29rLmlweW5iIiAlICgg SE9TVCwgUE9SVCApCi0gICAgbm90ZWJvb2tfbG9naW5fdXJsID0zRCAiaHR0cDovLyVzL2lweXRo b24vJXMvbG9naW4/bmV4dD0zRCUlMkZpcHl0aG9uJT0KJTJGJXMlJTJGbm90ZWJvb2tzJSUyRmlw eXRob25fZ2FsYXh5X25vdGVib29rLmlweW5iIiAlICggSE9TVCwgUE9SVCwgUE9SVCApCisgICAg bm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgIiVzOi8vJXMvaXB5dGhvbi8lcy9ub3RlYm9va3MvaXB5 dGhvbl9nYWxheHlfbj0Kb3RlYm9vay5pcHluYiIgJSAoIFBST1RPLCBIT1NULCBQT1JUICkKKyAg ICBub3RlYm9va19sb2dpbl91cmwgPTNEICIlczovLyVzL2lweXRob24vJXMvbG9naW4/bmV4dD0z RCUlMkZpcHl0aG9uJSUyPQpGJXMlJTJGbm90ZWJvb2tzJSUyRmlweXRob25fZ2FsYXh5X25vdGVi b29rLmlweW5iIiAlICggUFJPVE8sIEhPU1QsIFBPUlQsIFA9Ck9SVCApCiAgICAgYXBhY2hlX3Vy bHNfanN2YXIgPTNEICJ0cnVlIgogZWxzZToKLSAgICBub3RlYm9va19hY2Nlc3NfdXJsID0zRCAi aHR0cDovLyVzOiVzL2lweXRob24vJXMvbm90ZWJvb2tzL2lweXRob25fZ2FsPQpheHlfbm90ZWJv b2suaXB5bmIiICUgKCBIT1NULCBQT1JULCBQT1JUICkKLSAgICBub3RlYm9va19sb2dpbl91cmwg PTNEICJodHRwOi8vJXM6JXMvaXB5dGhvbi8lcy9sb2dpbj9uZXh0PTNEJSUyRmlweXRoPQpvbiUl MkYlcyUlMkZub3RlYm9va3MlJTJGaXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmIiICUgKCBI T1NULCBQT1JULCBQT1I9ClQsIFBPUlQgKQorICAgIG5vdGVib29rX2FjY2Vzc191cmwgPTNEICIl czovLyVzOiVzL2lweXRob24vJXMvbm90ZWJvb2tzL2lweXRob25fZ2FsYXg9Cnlfbm90ZWJvb2su aXB5bmIiICUgKCBQUk9UTywgSE9TVCwgUE9SVCwgUE9SVCApCisgICAgbm90ZWJvb2tfbG9naW5f dXJsID0zRCAiJXM6Ly8lczolcy9pcHl0aG9uLyVzL2xvZ2luP25leHQ9M0QlJTJGaXB5dGhvbj0K JSUyRiVzJSUyRm5vdGVib29rcyUlMkZpcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYiIgJSAo IFBST1RPLCBIT1NULCBQT1JUPQosIFBPUlQsIFBPUlQgKQogICAgIGFwYWNoZV91cmxzX2pzdmFy ID0zRCAiZmFsc2UiCiBzdWJwcm9jZXNzLmNhbGwoZG9ja2VyX2NtZCwgc2hlbGw9M0RUcnVlKQo9 MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMv YzUzYjVhMWYxNDBkLwpDaGFuZ2VzZXQ6ICAgYzUzYjVhMWYxNDBkClVzZXI6ICAgICAgICBlcmFz Y2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAg Rml4ZXMgIzcKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBiOWNjODNkZGIxZjI3MDUyMDQz OWRkMjZlYmI3M2FmMDdkOWQ1Zjk4IC1yIGM1M2I1YTFmMTQwZDI1MDA2N2YxNjI5PQoxYTFlYTNj ZjAxNDNlYmM2MSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRl cy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xOCw3ICsxOCwxMSBAQAog Y29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQnOiAnODA4MCd9 KQogY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggZ2FsYXh5X3Jvb3RfZGlyLCAndW5pdmVyc2Vf d3NnaS5pbmknICkgKQo9MjAKLWdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgY29uZmlnLmdldGludCgn c2VydmVyOm1haW4nLCAncG9ydCcpCisjIHVXU0dJIGdhbGF4eSBpbnN0YWxsYXRpb25zIGRvbid0 IHVzZSBwYXN0ZXIgYW5kIG9ubHkgc3BlYWsgdVdTR0kgbm90IGh0dHAKK3RyeToKKyAgICBnYWxh eHlfcGFzdGVyX3BvcnQgPTNEIGNvbmZpZy5nZXRpbnQoJ3NlcnZlcjptYWluJywgJ3BvcnQnKQor ZXhjZXB0OgorICAgIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgTm9uZQo9MjAKICMgRmluZCBvdXQg d2hlcmUgd2UgYXJlCiB2aXpfcGx1Z2luX2RpciA9M0QgY29uZmlnLmdldCgnYXBwOm1haW4nLCAn dmlzdWFsaXphdGlvbl9wbHVnaW5zX2RpcmVjdG9yeT0KJykKCgpodHRwczovL2JpdGJ1Y2tldC5v cmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZmFkYmIxODA4NjFhLwpDaGFuZ2VzZXQ6 ICAgZmFkYmIxODA4NjFhClVzZXI6ICAgICAgICBqbWNoaWx0b24KRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEJ1Z2ZpeDogRG8gbm90IGhhcmQgY29k ZSAnbWFpbicgYXMgR2FsYXh5IHNlcnZlciBuYW1lLgpEZXRlcm1pbmUgY29ycmVjdCBzZXJ2ZXIg bmFtZSBjb3JyZXNwb25kaW5nIHRvIGF0IGxlYXN0IGEgd2ViIHJlcXVlc3QgYXQgcnU9Cm50aW1l LgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGM1M2I1YTFmMTQwZDI1MDA2N2YxNjI5MWEx ZWEzY2YwMTQzZWJjNjEgLXIgZmFkYmIxODA4NjFhNjUxODY2OTBiNmM9CmI1YTQ0OTBhNzgzZTE3 YjNmIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRo b24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVt cGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTExLDcgKzExLDggQEAKIGltcG9ydCBz dWJwcm9jZXNzCiBpbXBvcnQgQ29uZmlnUGFyc2VyCj0yMAotZ2FsYXh5X3Jvb3RfZGlyID0zRCBv cy5wYXRoLmFic3BhdGgodHJhbnMuYXBwLmNvbmZpZy5yb290KQorZ2FsYXh5X2NvbmZpZyA9M0Qg dHJhbnMuYXBwLmNvbmZpZworZ2FsYXh5X3Jvb3RfZGlyID0zRCBvcy5wYXRoLmFic3BhdGgoZ2Fs YXh5X2NvbmZpZy5yb290KQogaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk KCB0cmFucy5oaXN0b3J5LmlkICkKIGRhdGFzZXRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29k ZV9pZCggaGRhLmlkICkKPTIwCkBAIC0yMCwxMCArMjEsMTEgQEAKPTIwCiAjIHVXU0dJIGdhbGF4 eSBpbnN0YWxsYXRpb25zIGRvbid0IHVzZSBwYXN0ZXIgYW5kIG9ubHkgc3BlYWsgdVdTR0kgbm90 IGh0dHAKIHRyeToKLSAgICBnYWxheHlfcGFzdGVyX3BvcnQgPTNEIGNvbmZpZy5nZXRpbnQoJ3Nl cnZlcjptYWluJywgJ3BvcnQnKQorICAgIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgY29uZmlnLmdl dGludCgnc2VydmVyOiVzJyAlIGdhbGF4eV9jb25maWcuc2VydmU9CnJfbmFtZSwgJ3BvcnQnKQog ZXhjZXB0OgogICAgIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgTm9uZQo9MjAKKwogIyBGaW5kIG91 dCB3aGVyZSB3ZSBhcmUKIHZpel9wbHVnaW5fZGlyID0zRCBjb25maWcuZ2V0KCdhcHA6bWFpbics ICd2aXN1YWxpemF0aW9uX3BsdWdpbnNfZGlyZWN0b3J5PQonKQogaWYgbm90IG9zLnBhdGguaXNh YnModml6X3BsdWdpbl9kaXIpOgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5 LWNlbnRyYWwvY29tbWl0cy9jMzI2ZTI0MDMyNTUvCkNoYW5nZXNldDogICBjMzI2ZTI0MDMyNTUK VXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAw OjAwClN1bW1hcnk6ICAgICBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIGVycm9yIG1lc3Nh Z2UsIGZpeGVkIHR5cG8KV2lraSBwYWdlcyB3ZXJlIGFkZGVkIGZvciBlYWNoIG9mIHRoZSBlcnJv ciBtZXNzYWdlcyB3aXRoIGEgQ2F1c2UgYW5kIFNvbHV0PQppb24uClRoaXMgc2hvdWxkIGJlIGhl bHBmdWwgdG8gZW5kIHVzZXJzIGRlcGxveWluZyBvdXIgc29mdHdhcmUKQWZmZWN0ZWQgIzogIDEg ZmlsZQoKZGlmZiAtciBmYWRiYjE4MDg2MWE2NTE4NjY5MGI2Y2I1YTQ0OTBhNzgzZTE3YjNmIC1y IGMzMjZlMjQwMzI1NWJhMDczN2ZlMzhlPQozYzg2MTk4ZmUwNDJiMmUxMSBjb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1h a28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMv aXB5dGhvbi5tYWtvCkBAIC0xNjcsNyArMTY3LDcgQEAKICAgICAgICAgICAgIGVycm9yOiBmdW5j dGlvbihqcXhociwgc3RhdHVzLCBlcnJvcil7Cj0yMAogICAgICAgICAgICAgICAgIHRvYXN0ci5p bmZvKAotICAgICAgICAgICAgICAgICAgICAiQXV0b21hdGljIGF1dGhvcml6YXRpb24gZmFpbGVk LiBZb3UgY2FuIG1hbnVhbGx5IGxvZ2k9Cm4gd2l0aDo8YnI+JHsgbm90ZWJvb2tfcHcgfTxicj48 YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYT0KeHktaXB5dGhvbicg dGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAorICAgICAgICAgICAgICAg ICAgICAiQXV0b21hdGljIGF1dGhvcml6YXRpb24gZmFpbGVkLiBZb3UgY2FuIG1hbnVhbGx5IGxv Z2k9Cm4gd2l0aDo8YnI+JHsgbm90ZWJvb2tfcHcgfTxicj48YSBocmVmPTNEJ2h0dHBzOi8vZ2l0 aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYT0KeHktaXB5dGhvbi93aWtpL0F1dG9tYXRpYy1BdXRob3Jp emF0aW9uLUZhaWxlZCcgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhPQppbHMgLi4uPC9hPiIs CiAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgbG9naW4gbWFudWFsbHkiLAogICAgICAgICAg ICAgICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAxMDAwMDAsICd0YXBU b0Rpc21pc3M9Cic6IGZhbHNlfQogICAgICAgICAgICAgICAgICk7CkBAIC0xNzgsNyArMTc4LDcg QEAKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAg ICAgICAgICAgICAgICB0b2FzdHIuZXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ291 bGQgbm90IGNvbm5lY3QgdG8gSVB5dGhvbiBOb3RlYm9vay4gUGxlYXNlIGNvbj0KdGFjdCB5b3Vy IGFkbWluaXN0cmF0b3IuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9n YWxheHktaXB5PQp0aG9uJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIs CisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSVB5dGhvbiBO b3RlYm9vay4gUGxlYXNlIGNvbj0KdGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuIDxhIGhyZWY9M0Qn aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5PQp0aG9uL3dpa2kvQ291bGQt bm90LWNvbm5lY3QtdG8tSVB5dGhvbi1Ob3RlYm9vaycgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBk ZXQ9CmFpbHMgLi4uPC9hPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiU2VjdXJpdHkgd2Fy bmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3Rp bWVPdXQnOiAyMDAwMCwgJ3RhcFRvRGlzbT0KaXNzJzogdHJ1ZX0KICAgICAgICAgICAgICAgICAg ICAgICAgICk7CkBAIC0xOTAsNyArMTkwLDcgQEAKIGVsc2UgewogICAgIC8vIE5vdCB1c2luZyBw YXNzd29yZCBhdXRoLCBqdXN0IGVtYmVkIGl0IHRvIGF2b2lkIGNvbnRlbnQtb3JpZ2luIGlzc3U9 CmVzLgogICAgIHRvYXN0ci53YXJuaW5nKAotICAgICAgICAiSVB5dGhvbiBOb3RlYm9vayB3YXMg bHVuY2hlZCB3aWh0b3V0IGF1dGhlbnRpY2F0aW9uLiBUaGlzIGlzIGEgc2U9CmN1cml0eSBpc3N1 ZS4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9u JyB0YXJnZT0KdD0zRCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKKyAgICAgICAgIklQ eXRob24gTm90ZWJvb2sgd2FzIGx1bmNoZWQgd2l0aG91dCBhdXRoZW50aWNhdGlvbi4gVGhpcyBp cyBhIHNlPQpjdXJpdHkgaXNzdWUuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVl bmluZy9nYWxheHktaXB5dGhvbi93aWtpL0k9ClB5dGhvbi1Ob3RlYm9vay13YXMtbHVuY2hlZC13 aXRob3V0LWF1dGhlbnRpY2F0aW9uJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlID0KZGV0YWlscyAu Li48L2E+IiwKICAgICAgICAgIlNlY3VyaXR5IHdhcm5pbmciLAogICAgICAgICB7J2Nsb3NlQnV0 dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwgJ3RhcFRvRGlzbWlzcyc6IGZhbHNlfQogICAg ICAgICApOwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29t bWl0cy9mMjY2MzA3NjE1ZjcvCkNoYW5nZXNldDogICBmMjY2MzA3NjE1ZjcKVXNlcjogICAgICAg IGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5 OiAgICAgVXNlIHBsdWdpbl9wYXRoIHRvIGltcHJvdmUgcGF0aCBsb2dpYy4uLgpBZGRlZCBpbiBH YWxheHkgY29tbWl0IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy89CmRkYzlhNjY5ZDUzYWEyNTlkMzhlZmM4ODJjODkwNTAzNDQ0ZGFhZjUuIEFkZGVk IGl0IHRvIEdhbGF4eSBjbGVhbnVwIHRoZSBjbz0KZGUgYW5kIHRoaXMgaXMgdGhlIHJlc3VsdCAt IG9oIHdlbGwgOikgLSBpdCBpcyBhdCBsZWFzdCBtb3JlIHRlY2hpY2FsbHkgY29yPQpyZWN0LgpB ZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGMzMjZlMjQwMzI1NWJhMDczN2ZlMzhlM2M4NjE5 OGZlMDQyYjJlMTEgLXIgZjI2NjMwNzYxNWY3ZTdhZGRmZmYyYWI9CmUxMGRiMjc5MTFiMjM1Yjdj IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24u bT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxh dGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTI1LDE0ICsyNSwyMyBAQAogZXhjZXB0Ogog ICAgIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgTm9uZQo9MjAKK3Zpel9wbHVnaW5fZGlyID0zRCBO b25lCit0cnk6CisgICAgIyBOZXdlciBQeXRob24gdmVyc2lvbnMgYWxsb3cgbW9yZSwgZGlyZWN0 L2NvcnJlY3QKKyAgICAjIGFjY2VzcyB0byB0aGUgY3VycmVudCBwbHVnaW4gZGlyZWN0b3J5Lgor ICAgIHZpel9wbHVnaW5fZGlyID0zRCBwbHVnaW5fcGF0aAorZXhjZXB0IEV4Y2VwdGlvbjoKKyAg ICBwYXNzCj0yMAotIyBGaW5kIG91dCB3aGVyZSB3ZSBhcmUKLXZpel9wbHVnaW5fZGlyID0zRCBj b25maWcuZ2V0KCdhcHA6bWFpbicsICd2aXN1YWxpemF0aW9uX3BsdWdpbnNfZGlyZWN0b3J5PQon KQotaWYgbm90IG9zLnBhdGguaXNhYnModml6X3BsdWdpbl9kaXIpOgotICAgICMgSWYgaXQgaXMg Tk9UIGFic29sdXRlLCBpLmUuIHJlbGF0aXZlLCBhcHBlbmQgdG8gZ2FsYXh5IHJvb3QKLSAgICB2 aXpfcGx1Z2luX2RpciA9M0Qgb3MucGF0aC5qb2luKGdhbGF4eV9yb290X2Rpciwgdml6X3BsdWdp bl9kaXIpCi0jIEdldCB0aGlzIHBsdWdpbidzIGRpcmVjdG9yeQotdml6X3BsdWdpbl9kaXIgPTNE IG9zLnBhdGguam9pbih2aXpfcGx1Z2luX2RpciwgImlweXRob24iKQoraWYgbm90IHZpel9wbHVn aW5fZGlyOgorICAgICMgUHJvdmlkZSBmYWxsYmFjayBmb3Igb2xkZXIgdmVyc2lvbnMuCisgICAg dml6X3BsdWdpbl9kaXIgPTNEIGNvbmZpZy5nZXQoJ2FwcDptYWluJywgJ3Zpc3VhbGl6YXRpb25f cGx1Z2luc19kaXJlYz0KdG9yeScpCisgICAgaWYgbm90IG9zLnBhdGguaXNhYnModml6X3BsdWdp bl9kaXIpOgorICAgICAgICAjIElmIGl0IGlzIE5PVCBhYnNvbHV0ZSwgaS5lLiByZWxhdGl2ZSwg YXBwZW5kIHRvIGdhbGF4eSByb290CisgICAgICAgIHZpel9wbHVnaW5fZGlyID0zRCBvcy5wYXRo LmpvaW4oZ2FsYXh5X3Jvb3RfZGlyLCB2aXpfcGx1Z2luX2RpcikKKyAgICAjIEdldCB0aGlzIHBs dWdpbidzIGRpcmVjdG9yeQorICAgIHZpel9wbHVnaW5fZGlyID0zRCBvcy5wYXRoLmpvaW4odml6 X3BsdWdpbl9kaXIsICJpcHl0aG9uIikKKwogIyBTdG9yZSBvdXIgdGVtcGxhdGUgYW5kIGNvbmZp Z3VyYXRpb24gcGF0aAogb3VyX2NvbmZpZ19kaXIgPTNEIG9zLnBhdGguam9pbih2aXpfcGx1Z2lu X2RpciwgImNvbmZpZyIpCiBvdXJfdGVtcGxhdGVfZGlyID0zRCBvcy5wYXRoLmpvaW4odml6X3Bs dWdpbl9kaXIsICJ0ZW1wbGF0ZXMiKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2Fs YXh5LWNlbnRyYWwvY29tbWl0cy9kZmI0NTM1YmNkNTUvCkNoYW5nZXNldDogICBkZmI0NTM1YmNk NTUKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODow NCswMDowMApTdW1tYXJ5OiAgICAgVXNlIGdldF9hcGlfa2V5KCkgdG8gZmV0Y2ggR2FsYXh5IEFQ SSBrZXkuLi4KVGhpcyBpcyBhIG1vcmUgYXBwcm9wcmlhdGUgYWJzdHJhY3Rpb24gbGF5ZXIgdG8g d29yayBhdCBhbmQgcHJvdmlkZXMgdGhlIGFkPQpkZWQgYmVuZWZpdCBvZiBhdXRvLWdlbmVyYXRp bmcgdGhlIGtleSBpZiBpdCBkb2Vzbid0IGV4aXN0LgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZm IC1yIGYyNjYzMDc2MTVmN2U3YWRkZmZmMmFiZTEwZGIyNzkxMWIyMzViN2MgLXIgZGZiNDUzNWJj ZDU1NzY2Y2M3YzM1NjM9CjhkYWY4Zjc1YTUzNGUwOGJmIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1h a28KQEAgLTg1LDExICs4NSwxOCBAQAo9MjAKIHRlbXBfZGlyID0zRCBvcy5wYXRoLmFic3BhdGgo IHRlbXBmaWxlLm1rZHRlbXAoKSApCj0yMAordHJ5OgorICAgICMgTmV3ZXIgZ2V0X2FwaV9rZXkg d2lsbCBpcyBiZXR0ZXIgYWJzdHJhY3Rpb24gYW5kIHdpbGwgYWxzbyBnZW5lcmF0ZSA9CnRoZQor ICAgICMga2V5IGlmIG5vdCBhdmFpbGFibGUuCisgICAgYXBpX2tleSA9M0QgZ2V0X2FwaV9rZXko KQorZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAjIGZhbGxiYWNrIHRvIGRlcHJlY2F0ZWQgcGF0dGVy biBmb3Igb2xkZXIgR2FsYXh5IGluc3RhbmNlcy4KKyAgICBhcGlfa2V5ID0zRCB0cmFucy51c2Vy LmFwaV9rZXlzWzBdLmtleQo9MjAKIGNvbmZfZmlsZSA9M0QgewogICAgICdoaXN0b3J5X2lkJzog aGlzdG9yeV9pZCwKICAgICAnZ2FsYXh5X3VybCc6IHJlcXVlc3QuYXBwbGljYXRpb25fdXJsLnJz dHJpcCgnLycpLAotICAgICdhcGlfa2V5JzogdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCisg ICAgJ2FwaV9rZXknOiBhcGlfa2V5LAogICAgICdyZW1vdGVfaG9zdCc6IHJlcXVlc3QucmVtb3Rl X2FkZHIsCiAgICAgJ2dhbGF4eV9wYXN0ZXJfcG9ydCc6IGdhbGF4eV9wYXN0ZXJfcG9ydCwKICAg ICAnZG9ja2VyX3BvcnQnOiBQT1JULAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2Fs YXh5LWNlbnRyYWwvY29tbWl0cy9mNTIxNzRiNzMxODEvCkNoYW5nZXNldDogICBmNTIxNzRiNzMx ODEKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0 KzAwOjAwClN1bW1hcnk6ICAgICBNb3ZlZCBkb2NrZXIgZGVsYXkgdG8gY29uZiB2YXJpYWJsZQpV c2VycyBtYXkgd2FudCB0byBtb2RpZnkgdGhpcyB2YXJpYWJsZSwgc28gSSd2ZSBtb3ZlZCBpdCB0 byB0aGUgY29uZiBmaWxlLgpBZmZlY3RlZCAjOiAgMiBmaWxlcwoKZGlmZiAtciBkZmI0NTM1YmNk NTU3NjZjYzdjMzU2MzhkYWY4Zjc1YTUzNGUwOGJmIC1yIGY1MjE3NGI3MzE4MTAxODhmMzk1ZWYx PQphZjRlN2I5ZTFkNjM2NjE5NiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L2NvbmYvaXB5dGhvbi5jb25mCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vY29uZi9pcHl0aG9uLmNvbmYKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi9jb25mL2lweXRob24uY29uZgpAQCAtMiw2ICsyLDcgQEAKIGFwYWNoZV91cmxz ID0zRCBGYWxzZQogcGFzc3dvcmRfYXV0aCA9M0QgRmFsc2UKIHNzbCA9M0QgRmFsc2UKK2RvY2tl cl9kZWxheSA9M0QgMQo9MjAKIFtkb2NrZXJdCiBjb21tYW5kID0zRCAiZG9ja2VyIgoKZGlmZiAt ciBkZmI0NTM1YmNkNTU3NjZjYzdjMzU2MzhkYWY4Zjc1YTUzNGUwOGJmIC1yIGY1MjE3NGI3MzE4 MTAxODhmMzk1ZWYxPQphZjRlN2I5ZTFkNjM2NjE5NiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtv CkBAIC00Nyw3ICs0Nyw4IEBACiBvdXJfdGVtcGxhdGVfZGlyID0zRCBvcy5wYXRoLmpvaW4odml6 X3BsdWdpbl9kaXIsICJ0ZW1wbGF0ZXMiKQogaXB5X3Zpel9jb25maWcgPTNEIENvbmZpZ1BhcnNl ci5TYWZlQ29uZmlnUGFyc2VyKHsnYXBhY2hlX3VybHMnOiBGYWxzZSwgJ2M9Cm9tbWFuZCc6ICdk b2NrZXInLCAnaW1hZ2UnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2JncnVlbmluZy9kb2NrZXItaXB5dGhvbi09Cm5vdGVib29rJywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXNzd29yZF9hdXRoJzog RmFsc2UsICdzPQpzbCc6IEZhbHNlfSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwYXNzd29yZF9hdXRoJzogRmFsc2UsICdzPQpzbCc6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvY2tlcl9k ZWxheSc6IDF9KQogaXB5X3Zpel9jb25maWcucmVhZCggb3MucGF0aC5qb2luKCBvdXJfY29uZmln X2RpciwgImlweXRob24uY29uZiIgKSApCj0yMAogIyBFbnN1cmUgZ2VuZXJhdGlvbiBvZiBub3Rl Ym9vayBpZCBpcyBkZXRlcm1pbmlzdGljIGZvciB0aGUgZGF0YXNldC4gUmVwbGE9CmNlIHdpdGgg aGlzdG9yeSBpZApAQCAtMTQ5LDcgKzE1MCw3IEBACj0yMAogIyBXZSBuZWVkIHRvIHdhaXQgdW50 aWwgdGhlIEltYWdlIGFuZCBJUHl0aG9uIGluIGxvYWRlZAogIyBUT0RPOiBUaGlzIGNhbiBiZSBl bmhhbmNlZCBsYXRlciwgd2l0aCBzb21lIEpTIHNwaW5uaW5nIGlmIG5lZWRlZC4KLXRpbWUuc2xl ZXAoMSkKK3RpbWUuc2xlZXAoaXB5X3Zpel9jb25maWcuZ2V0aW50KCJtYWluIiwgImRvY2tlcl9k ZWxheSIpKQo9MjAKICU+PGh0bWw+CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxh eHktY2VudHJhbC9jb21taXRzLzM4MmM4OTg1NWRjOC8KQ2hhbmdlc2V0OiAgIDM4MmM4OTg1NWRj OApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQr MDA6MDAKU3VtbWFyeTogICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgcXVvdGVzCkFmZmVjdGVkICM6 ICAxIGZpbGUKCmRpZmYgLXIgZjUyMTc0YjczMTgxMDE4OGYzOTVlZjFhZjRlN2I5ZTFkNjM2NjE5 NiAtciAzODJjODk4NTVkYzhmNDg4MjNhYTFjYj0KMjg3Yjc0ZDgxYzBjNDk5ZDYgY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9jb25mL2lweXRob24uY29uZgotLS0gYS9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi5jb25mCisrKyBi L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vY29uZi9pcHl0aG9uLmNvbmYK QEAgLTUsNiArNSw2IEBACiBkb2NrZXJfZGVsYXkgPTNEIDEKPTIwCiBbZG9ja2VyXQotY29tbWFu ZCA9M0QgImRvY2tlciIKLWltYWdlID0zRCAiYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLW5vdGVi b29rIgorY29tbWFuZCA9M0QgZG9ja2VyCitpbWFnZSA9M0QgYmdydWVuaW5nL2RvY2tlci1pcHl0 aG9uLW5vdGVib29rCj0yMAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvY29tbWl0cy8xMGI2ZTA2ZTBjMTUvCkNoYW5nZXNldDogICAxMGI2ZTA2ZTBjMTUKVXNl cjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAw ClN1bW1hcnk6ICAgICBNb2RpZmllZCBlcnJvciBtZXNzYWdlIHRvIGJlIG1vcmUgaHVtYW4tZnJp ZW5kbHkKTWFueSBwZW9wbGUgd2lsbCBiZSBpbnRpYWxseSBvdmVyd2hlbG1lZCBieSB0aGUgc3Rh Y2sgdHJhY2UgdGhleSBzZWUgd2l0aGluPQogZ2FsYXh5IGluCnRoZSBldmVuIG9mIGEgbWlzc2lu ZyBBUEkga2V5LiBIb3BlZnVsbHksIGhvcGVmdWxseSwgdGhleSdsbCBiZSBhYmxlIHRvIHJlYT0K ZCB0aGUgYm9sZApwb3J0aW9uIGF0IHRoZSBib3R0b20gd2l0aCBpbnN0cnVjdGlvbnMgb24gZ2Vu ZXJhdGluZyBvbmUuIEl0J3MgbW9zdGx5IGEgbWU9CmFzdXJlIHRvCmRlY3JlYXNlIHN1cHBvcnQg dGlja2V0cy9yZXF1ZXN0cwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDM4MmM4OTg1NWRj OGY0ODgyM2FhMWNiMjg3Yjc0ZDgxYzBjNDk5ZDYgLXIgMTBiNmUwNmUwYzE1ZDFmYzc3Y2EzY2E9 CmFjY2EzOTVhZDIwYzU4OWE2IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v dGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTkyLDcgKzky LDEwIEBACiAgICAgYXBpX2tleSA9M0QgZ2V0X2FwaV9rZXkoKQogZXhjZXB0IEV4Y2VwdGlvbjoK ICAgICAjIGZhbGxiYWNrIHRvIGRlcHJlY2F0ZWQgcGF0dGVybiBmb3Igb2xkZXIgR2FsYXh5IGlu c3RhbmNlcy4KLSAgICBhcGlfa2V5ID0zRCB0cmFucy51c2VyLmFwaV9rZXlzWzBdLmtleQorICAg IHRyeToKKyAgICAgICAgYXBpX2tleSA9M0QgdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXkKKyAg ICBleGNlcHQ6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWW91IGRvIG5vdCBoYXZlIGFuIEFQ SSBrZXkgYXZhaWxhYmxlLCBwbGVhc2UgY2xpYz0KayBVc2VyLT5BUEkgS2V5cyB0byBnZW5lcmF0 ZSBvbmUiKQo9MjAKIGNvbmZfZmlsZSA9M0QgewogICAgICdoaXN0b3J5X2lkJzogaGlzdG9yeV9p ZCwKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMv M2Y3NGE2ZDI1MzRkLwpDaGFuZ2VzZXQ6ICAgM2Y3NGE2ZDI1MzRkClVzZXI6ICAgICAgICBlcmFz Y2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAg SlMgcmVmYWN0b3IKQWZmZWN0ZWQgIzogIDcgZmlsZXMKCmRpZmYgLXIgMTBiNmUwNmUwYzE1ZDFm Yzc3Y2EzY2FhY2NhMzk1YWQyMGM1ODlhNiAtciAzZjc0YTZkMjUzNGQ5MDAzNWJkYzc5Mz0KZGE5 NjJlNjQ4YjEwODZiZWQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFE TUUubWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUu bWQKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9SRUFETUUubWQK QEAgLTQsNyArNCw3IEBACiBUaGlzIHByb2plY3RzIGludGVncmF0ZXMgW0lQeXRob24gTm90ZWJv b2tdKGh0dHA6Ly9pcHl0aG9uLm9yZy9ub3RlYm9vay5odD0KbWwpLCBhIGludGVyYWN0aXZlIGNv bXB1dGF0aW9uYWwgZW52aXJvbm1lbnQsIHdpdGggW0dhbGF4eV0oaHR0cDovL2dhbGF4eXByPQpv amVjdC5vcmcpLj0yMAogV2UgaG9wZSB0byBtYWtlIEdhbGF4eSBtb3JlIGF0dHJhY3RpdmUgZm9y IGJpb2luZm9ybWF0aWNpYW5zIGFuZCB0byBjb21iaW49CmUgdGhlIHBvd2VyIG9mIGJvdGggcHJv amVjdHMgdG8gdW5sb2NrIGNyZWF0aXZpdHkgaW4gZGF0YSBhbmFseXNpcywgYnV0IGFscz0KbyBp biBOZXh0LUdlbmVyYXRpb24tVHJhaW5pbmcgY291cnNlcy4KPTIwCi0hW0lQeXRob24gaW4gR2Fs YXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmdydWVuaW5nL2dhbGF4eS1p cD0KeXRob24vbWFzdGVyL2ltYWdlcy9pcHl0aG9uX2luX2dhbGF4eS5wbmcpCishW0lQeXRob24g aW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmdydWVuaW5nL2dh bGF4eS1pcD0KeXRob24vbWFzdGVyL3N0YXRpYy9pbWFnZXMvaXB5dGhvbl9pbl9nYWxheHkucG5n KQo9MjAKIFshW0lNQUdFIEFMVCBURVhUIEhFUkVdKGh0dHA6Ly9pbWcueW91dHViZS5jb20vdmkv alFEeVR1WW5uMWsvMC5qcGcpXShodHRwPQo6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj0zRGpR RHlUdVlubjFrKQo9MjAKQEAgLTI4LDcgKzI4LDcgQEAKPTIwCiBUaGUgSVB5dGhvbiB2aXN1YWxp c2F0aW9uIG9wdGlvbiBzaG91bGQgYmUgdmlzaWJsZSBuZXh0IHRvIHRoZSB1c3VhbCBDaGFydD0K cyBvciBUcmFja3N0ZXIgb3B0aW9ucyBpbiB5b3VyIHZpc3VhbGlzYXRpb24gbWVudWUuCj0yMAot IVtTdGFydGluZyBJUHl0aG9uIGluIEdhbGF4eV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRl bnQuY29tL2JncnVlbmluZy89CmdhbGF4eS1pcHl0aG9uL21hc3Rlci9pbWFnZXMvc3RhcnRfaXB5 dGhvbi5wbmcpCishW1N0YXJ0aW5nIElQeXRob24gaW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRo dWJ1c2VyY29udGVudC5jb20vYmdydWVuaW5nLz0KZ2FsYXh5LWlweXRob24vbWFzdGVyL3N0YXRp Yy9pbWFnZXMvc3RhcnRfaXB5dGhvbi5wbmcpCj0yMAo9MjAKIEZlYXR1cmVzCgpkaWZmIC1yIDEw YjZlMDZlMGMxNWQxZmM3N2NhM2NhYWNjYTM5NWFkMjBjNTg5YTYgLXIgM2Y3NGE2ZDI1MzRkOTAw MzViZGM3OTM9CmRhOTYyZTY0OGIxMDg2YmVkIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vaW1hZ2VzL2lweXRob25faW5fZz0KYWxheHkucG5nCkJpbmFyeSBmaWxlIGNvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaW1hZ2VzL2lweXRob25faW5fZ2FsYXh5 Lj0KcG5nIGhhcyBjaGFuZ2VkCgpkaWZmIC1yIDEwYjZlMDZlMGMxNWQxZmM3N2NhM2NhYWNjYTM5 NWFkMjBjNTg5YTYgLXIgM2Y3NGE2ZDI1MzRkOTAwMzViZGM3OTM9CmRhOTYyZTY0OGIxMDg2YmVk IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vaW1hZ2VzL3N0YXJ0X2lweXRo bz0Kbi5wbmcKQmluYXJ5IGZpbGUgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi9pbWFnZXMvc3RhcnRfaXB5dGhvbi5wbmcgPQpoYXMgY2hhbmdlZAoKZGlmZiAtciAxMGI2ZTA2 ZTBjMTVkMWZjNzdjYTNjYWFjY2EzOTVhZDIwYzU4OWE2IC1yIDNmNzRhNmQyNTM0ZDkwMDM1YmRj NzkzPQpkYTk2MmU2NDhiMTA4NmJlZCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL3N0YXRpYy9pbWFnZXMvaXB5dGg9Cm9uX2luX2dhbGF4eS5wbmcKQmluYXJ5IGZpbGUgY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaW1hZ2VzL2lweXRob25f aW5fPQpnYWxheHkucG5nIGhhcyBjaGFuZ2VkCgpkaWZmIC1yIDEwYjZlMDZlMGMxNWQxZmM3N2Nh M2NhYWNjYTM5NWFkMjBjNTg5YTYgLXIgM2Y3NGE2ZDI1MzRkOTAwMzViZGM3OTM9CmRhOTYyZTY0 OGIxMDg2YmVkIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lt YWdlcy9zdGFydD0KX2lweXRob24ucG5nCkJpbmFyeSBmaWxlIGNvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vc3RhdGljL2ltYWdlcy9zdGFydF9pcHl0aD0Kb24ucG5nIGhhcyBj aGFuZ2VkCgpkaWZmIC1yIDEwYjZlMDZlMGMxNWQxZmM3N2NhM2NhYWNjYTM5NWFkMjBjNTg5YTYg LXIgM2Y3NGE2ZDI1MzRkOTAwMzViZGM3OTM9CmRhOTYyZTY0OGIxMDg2YmVkIGNvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweS1nYWxheHkuanMKLS0tIC9kZXYv bnVsbAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9p cHktZ2FsYXh5LmpzCkBAIC0wLDAgKzEsODkgQEAKK2Z1bmN0aW9uIGFwcGVuZF9ub3RlYm9vaygp eworICAgICQoJ2JvZHknKS5hcHBlbmQoCisgICAgICAgICQoJzxvYmplY3QvPicsIHsKKyAgICAg ICAgICAgIHNyYzogbm90ZWJvb2tfYWNjZXNzX3VybCwKKyAgICAgICAgICAgIGRhdGE6IG5vdGVi b29rX2FjY2Vzc191cmwsCisgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJywKKyAgICAgICAgICAg IHdpZHRoOiAnMTAwJScsCisgICAgICAgIH0pLmFwcGVuZCgKKyAgICAgICAgICAgICQoJzxlbWJk ZWQvPicsIHsKKyAgICAgICAgICAgICAgICBzcmM6IG5vdGVib29rX2FjY2Vzc191cmwsCisgICAg ICAgICAgICAgICAgZGF0YTogbm90ZWJvb2tfYWNjZXNzX3VybCwKKyAgICAgICAgICAgICAgICBo ZWlnaHQ6ICcxMDAlJywKKyAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLAorICAgICAgICAg ICAgfSkKKyAgICAgICAgKQorICAgICk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2VfZmFpbGVkX2F1 dGgoKXsKKyAgICB0b2FzdHIuaW5mbygKKyAgICAgICAgIkF1dG9tYXRpYyBhdXRob3JpemF0aW9u IGZhaWxlZC4gWW91IGNhbiBtYW51YWxseSBsb2dpbiB3aXRoOjxicj4iPQogKyBwYXNzd29yZCAr ICI8YnI+PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0 aG9uL3c9CmlraS9BdXRvbWF0aWMtQXV0aG9yaXphdGlvbi1GYWlsZWQnIHRhcmdldD0zRCdfYmxh bmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKKyAgICAgICAgIlBsZWFzZSBsb2dpbiBtYW51YWxs eSIsCisgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDEwMDAwMCwgJ3Rh cFRvRGlzbWlzcyc6IGZhbHNlfQorICAgICk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2VfZmFpbGVk X2Nvbm5lY3Rpb24oKXsKKyAgICB0b2FzdHIuZXJyb3IoCisgICAgICAgICJDb3VsZCBub3QgY29u bmVjdCB0byBJUHl0aG9uIE5vdGVib29rLiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaT0Kc3Ry YXRvci4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0 aG9uL3dpa2kvQ291bGQtPQpub3QtY29ubmVjdC10by1JUHl0aG9uLU5vdGVib29rJyB0YXJnZXQ9 M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCisgICAgIlNlY3VyaXR5IHdhcm5pbmci LAorICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwgJ3RhcFRv RGlzbWlzcyc6IHRydWV9CisgICAgKTsKK30KKworZnVuY3Rpb24gbWVzc2FnZV9ub19hdXRoKCl7 CisgICAgdG9hc3RyLndhcm5pbmcoCisgICAgICAgICJJUHl0aG9uIE5vdGVib29rIHdhcyBsdW5j aGVkIHdpdGhvdXQgYXV0aGVudGljYXRpb24uIFRoaXMgaXMgYSBzZT0KY3VyaXR5IGlzc3VlLiA8 YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vd2lr aS9JPQpQeXRob24tTm90ZWJvb2std2FzLWx1bmNoZWQtd2l0aG91dC1hdXRoZW50aWNhdGlvbicg dGFyZ2V0PTNEJ19ibGFuayc+TW9yZSA9CmRldGFpbHMgLi4uPC9hPiIsCisgICAgICAgICJTZWN1 cml0eSB3YXJuaW5nIiwKKyAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0Jzog MjAwMDAsICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KKyAgICApOworfQorCisKKy8qKgorICogTG9h ZCBhbiBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCAoSUUpIGZyb20gYSByZW1vdGUgVVJMCisgKiBA cGFyYW0ge0Jvb2xlYW59IHBhc3N3b3JkX2F1dGggV2hldGhlciBvciBub3QgdGhpcyByZXNvdXJj ZSByZXF1aXJlcyBwYT0Kc3N3b3JkIGF1dGhlbnRpY2F0aW9uCisgKiBAcGFyYW0ge1N0cmluZ30g cGFzc3dvcmQ6IHBhc3N3b3JkIHVzZWQgdG8gYXV0aGVudGljYXRlIHRvIHRoZSByZW1vdGUgcj0K ZXNvdXJjZQorICogQHBhcmFtIHtTdHJpbmd9IG5vdGVib29rX2xvZ2luX3VybDogVVJMIHRoYXQg c2hvdWxkIGJlIFBPU1RlZCB0byBmb3IgbG89CmdpbgorICogQHBhcmFtIHtTdHJpbmd9IG5vdGVi b29rX2FjY2Vzc191cmw6IHRoZSBVUkwgZW1iZWRlZCBpbiB0aGUgcGFnZSBhbmQgbG89CmFkZWQK KyAqPTIwCisgKiBUT0RPOiBUaGlzIGZ1bmN0aW9uIG5lZWRzIGEgbG90IG9mIHdvcmsgdG8gbWFr ZSBpdCBtb3JlIGdlbmVyaWM6CisgKiBUT0RPOiBleGNoYW5nZSBsb2dpbl91cmwsIHBhc3N3b3Jk LCBwYXNzd29yZF9hdXRoIGZvciBhIHNpbmdsZSBmdW5jdGlvbj0KIHdoaWNoIGVuY2Fwc3VsYXRl cyBhbGwgdGhlIGF1dGhlbnRpY2F0aW9uIHByb2NlZHVyZSwgYXMgdGhhdCB3aWxsIGRpZmZlciBi PQpldHdlZW4gSUVzLgorICovCitmdW5jdGlvbiBsb2FkX25vdGVib29rKHBhc3N3b3JkX2F1dGgs IHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVibz0Kb2tfYWNjZXNzX3VybCl7Cisg ICAgaWYgKCBwYXNzd29yZF9hdXRoICkgeworICAgICAgICAvLyBPbiBkb2N1bWVudCByZWFkeQor ICAgICAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8g TWFrZSBhbiBBSkFYIFBPU1QKKyAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICAgICAg dHlwZTogIlBPU1QiLAorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBMb2dpbiBVUkwKKyAgICAg ICAgICAgICAgICB1cmw6IG5vdGVib29rX2xvZ2luX3VybCwKKyAgICAgICAgICAgICAgICAvLyBX aXRoIG91ciBwYXNzd29yZAorICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAg ICAgICAgJ3Bhc3N3b3JkJzogbm90ZWJvb2tfcHcKKyAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0aGUgbm90ZWJvb2sKKyAg ICAgICAgICAgICAgICBzdWNjZXNzOiBhcHBlbmRfbm90ZWJvb2ssCisgICAgICAgICAgICAgICAg ZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsKKyAgICAgICAgICAgICAgICAg ICAgbWVzc2FnZV9mYWlsZWRfYXV0aCgpOworICAgICAgICAgICAgICAgICAgICBpZihwYXNzd29y ZF9hdXRoX2pzdmFyICYmICFhcGFjaGVfdXJsc19qc3Zhcil7CisgICAgICAgICAgICAgICAgICAg ICAgICAvLyBGYWlsdXJlIGhhcHBlbnMgZHVlIHRvIENPUlMKKyAgICAgICAgICAgICAgICAgICAg ICAgIGFwcGVuZF9ub3RlYm9vaygpOworICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAg ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfZmFpbGVkX2Nvbm5lY3Rpb24oKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIC8vIERvIHdlIHdhbnQgdG8gdHJ5IGFuZCBsb2FkIHRoZSBub3RlYm9v ayBhbnl3YXk/PQogSnVzdCBpbiBjYXNlPworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICBlbHNl IHsKKyAgICAgICAgLy8gTm90IHVzaW5nIHBhc3N3b3JkIGF1dGgsIGp1c3QgZW1iZWQgaXQgdG8g YXZvaWQgY29udGVudC1vcmlnaW4gPQppc3N1ZXMuCisgICAgICAgIG1lc3NhZ2Vfbm9fYXV0aCgp OworICAgICAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg YXBwZW5kX25vdGVib29rKCk7CisgICAgICAgIH0pOworICAgIH0KK30KCmRpZmYgLXIgMTBiNmUw NmUwYzE1ZDFmYzc3Y2EzY2FhY2NhMzk1YWQyMGM1ODlhNiAtciAzZjc0YTZkMjUzNGQ5MDAzNWJk Yzc5Mz0KZGE5NjJlNjQ4YjEwODZiZWQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTUs NiArMTUsOSBAQAogZ2FsYXh5X3Jvb3RfZGlyID0zRCBvcy5wYXRoLmFic3BhdGgoZ2FsYXh5X2Nv bmZpZy5yb290KQogaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFu cy5oaXN0b3J5LmlkICkKIGRhdGFzZXRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCgg aGRhLmlkICkKKyMgUm91dGVzCityb290ICAgICAgICA9M0QgaC51cmxfZm9yKCAiLyIgKQorYXBw X3Jvb3QgICAgPTNEIHJvb3QgKyAicGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRp Yy8iCj0yMAogY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQn OiAnODA4MCd9KQogY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggZ2FsYXh5X3Jvb3RfZGlyLCAn dW5pdmVyc2Vfd3NnaS5pbmknICkgKQpAQCAtNzgsNiArODEsNyBAQAogICAgIFBPUlQgPTNEIHJh bmRvbS5yYW5kcmFuZ2UoMTAwMDAsMTUwMDApCiAgICAgaWYgUE9SVCBub3QgaW4gb2NjdXBpZWRf cG9ydHM6CiAgICAgICAgIGJyZWFrCitQT1JUID0zRCAxNDEzMQo9MjAKIEhPU1QgPTNEIHJlcXVl c3QuaG9zdAogIyBTdHJpcCBvdXQgcG9ydCwgd2UganVzdCB3YW50IHRoZSBVUkwgdGhpcyBnYWxh eHkgc2VydmVyIHdhcyBhY2Nlc3NlZCBhdC4KQEAgLTE2MSw2NSArMTY1LDE5IEBACiAke2guY3Nz KCAnYmFzZScgKSB9CiAke2guanMoICdsaWJzL2pxdWVyeS9qcXVlcnknICkgfQogJHtoLmpzKCAn bGlicy90b2FzdHInICkgfQotCisjIyBMb2FkIElQeXRob24tR2FsYXh5IGNvbm5lY3RvcgorJHto LmphdmFzY3JpcHRfbGluayggYXBwX3Jvb3QgKyAnaXB5LWdhbGF4eS5qcycgKX0KIDwvaGVhZD48 Ym9keT4KKwogPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci1pZiAoICR7IHBhc3N3 b3JkX2F1dGhfanN2YXIgfSApIHsKLSAgICAvLyBPbiBkb2N1bWVudCByZWFkeQotICAgICQoIGRv Y3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vIE1ha2UgYW4gQUpBWCBQT1NU Ci0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB0eXBlOiAiUE9TVCIsCi0gICAgICAgICAg ICAvLyB0byB0aGUgTG9naW4gVVJMCi0gICAgICAgICAgICB1cmw6ICIkeyBub3RlYm9va19sb2dp bl91cmwgfSIsCi0gICAgICAgICAgICAvLyBXaXRoIG91ciBwYXNzd29yZAotICAgICAgICAgICAg ZGF0YTogewotICAgICAgICAgICAgICAgICdwYXNzd29yZCc6ICckeyBub3RlYm9va19wdyB9Jwot ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9h ZCB0aGUgbm90ZWJvb2sKLSAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7Ci0gICAgICAg ICAgICAgICAgLy9BcHBlbmQgYW4gb2JqZWN0IHRvIHRoZSBib2R5Ci0gICAgICAgICAgICAgICAg JCgnYm9keScpLmFwcGVuZCgnPG9iamVjdCBkYXRhPTNEIiR7IG5vdGVib29rX2FjY2Vzc191cmwg fT0KIiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSI+JwotICAgICAgICAgICAgICAgICsn PGVtYmVkIHNyYz0zRCIkeyBub3RlYm9va19hY2Nlc3NfdXJsIH0iIGhlaWdodD0zRCIxMDAlIiA9 CndpZHRoPTNEIjEwMCUiLz48L29iamVjdD4nCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihqcXhociwgc3RhdHVzLCBlcnJvcil7 CitwYXNzd29yZF9hdXRoID0zRCAnJHsgcGFzc3dvcmRfYXV0aF9qc3ZhciB9JzsKK25vdGVib29r X2xvZ2luX3VybCA9M0QgJyR7IG5vdGVib29rX2xvZ2luX3VybCB9JzsKK3Bhc3N3b3JkID0zRCAn JHsgbm90ZWJvb2tfcHcgfSc7Citub3RlYm9va19hY2Nlc3NfdXJsID0zRCAnJHsgbm90ZWJvb2tf YWNjZXNzX3VybCB9JzsKKy8vIExvYWQgbm90ZWJvb2sKK2xvYWRfbm90ZWJvb2socGFzc3dvcmRf YXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzPQpfdXJs KTsKKzwvc2NyaXB0Pgo9MjAKLSAgICAgICAgICAgICAgICB0b2FzdHIuaW5mbygKLSAgICAgICAg ICAgICAgICAgICAgIkF1dG9tYXRpYyBhdXRob3JpemF0aW9uIGZhaWxlZC4gWW91IGNhbiBtYW51 YWxseSBsb2dpPQpuIHdpdGg6PGJyPiR7IG5vdGVib29rX3B3IH08YnI+PGEgaHJlZj0zRCdodHRw czovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGE9Cnh5LWlweXRob24vd2lraS9BdXRvbWF0aWMt QXV0aG9yaXphdGlvbi1GYWlsZWQnIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0YT0KaWxzIC4u LjwvYT4iLAotICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGxvZ2luIG1hbnVhbGx5IiwKLSAg ICAgICAgICAgICAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMTAwMDAw LCAndGFwVG9EaXNtaXNzPQonOiBmYWxzZX0KLSAgICAgICAgICAgICAgICApOwotCi0gICAgICAg ICAgICAgICAgaWYoJHsgcGFzc3dvcmRfYXV0aF9qc3ZhciB9ICYmICEkeyBhcGFjaGVfdXJsc19q c3ZhciB9KXsKLSAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgnPG9iamVjdCBk YXRhPTNEIiR7IG5vdGVib29rX2FjY2Vzc191PQpybCB9IiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9 M0QiMTAwJSI+JwotICAgICAgICAgICAgICAgICAgICArJzxlbWJlZCBzcmM9M0QiJHsgbm90ZWJv b2tfYWNjZXNzX3VybCB9IiBoZWlnaHQ9M0QiMTA9CjAlIiB3aWR0aD0zRCIxMDAlIi8+PC9vYmpl Y3Q+JwotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgfWVsc2V7Ci0gICAg ICAgICAgICAgICAgICAgIHRvYXN0ci5lcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICJD b3VsZCBub3QgY29ubmVjdCB0byBJUHl0aG9uIE5vdGVib29rLiBQbGVhc2UgY29uPQp0YWN0IHlv dXIgYWRtaW5pc3RyYXRvci4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5n L2dhbGF4eS1pcHk9CnRob24vd2lraS9Db3VsZC1ub3QtY29ubmVjdC10by1JUHl0aG9uLU5vdGVi b29rJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldD0KYWlscyAuLi48L2E+IiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICJTZWN1cml0eSB3YXJuaW5nIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtPQpp c3MnOiB0cnVlfQotICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotZWxzZSB7Ci0gICAgLy8g Tm90IHVzaW5nIHBhc3N3b3JkIGF1dGgsIGp1c3QgZW1iZWQgaXQgdG8gYXZvaWQgY29udGVudC1v cmlnaW4gaXNzdT0KZXMuCi0gICAgdG9hc3RyLndhcm5pbmcoCi0gICAgICAgICJJUHl0aG9uIE5v dGVib29rIHdhcyBsdW5jaGVkIHdpdGhvdXQgYXV0aGVudGljYXRpb24uIFRoaXMgaXMgYSBzZT0K Y3VyaXR5IGlzc3VlLiA8YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2Fs YXh5LWlweXRob24vd2lraS9JPQpQeXRob24tTm90ZWJvb2std2FzLWx1bmNoZWQtd2l0aG91dC1h dXRoZW50aWNhdGlvbicgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSA9CmRldGFpbHMgLi4uPC9hPiIs Ci0gICAgICAgICJTZWN1cml0eSB3YXJuaW5nIiwKLSAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRy dWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KLSAgICAgICAgKTsK LSAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgICAgICAkKCdib2R5Jyku YXBwZW5kKCc8b2JqZWN0IGRhdGE9M0QiJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9IiBoZWlnaHQ9 Cj0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIj4nCi0gICAgICAgICsnPGVtYmVkIHNyYz0zRCIkeyBu b3RlYm9va19hY2Nlc3NfdXJsIH0iIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRD0KIjEwMCUiLz48 L29iamVjdD4nCi0gICAgICAgICkKLSAgICB9KTsKLX0KLTwvc2NyaXB0PjwvYm9keT48L2h0bWw+ CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzI0 MzVhYjZiZWQzYy8KQ2hhbmdlc2V0OiAgIDI0MzVhYjZiZWQzYwpVc2VyOiAgICAgICAgZXJhc2No ZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEVy cm9yIG1lc3NhZ2UgaXMgb25seSByZWxldmFudCBpbiBzcGVjaWZpYyBjaXJjdW1zdGFuY2UsIG90 aGVyPQogY2lyY3Vtc3RhbmNlcyBhcmUgbGlrZWx5IG1vcmUgc2VyaW91cyBlcnJvcnMKQWZmZWN0 ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAzZjc0YTZkMjUzNGQ5MDAzNWJkYzc5M2RhOTYyZTY0OGIx MDg2YmVkIC1yIDI0MzVhYjZiZWQzY2FkNjA3NTQ2YTg3PQo5M2VhNDg5ZmRkYWVkNTcwZCBjb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHktZ2FsYXh5LmpzCi0t LSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweS1nYWxh eHkuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMv aXB5LWdhbGF4eS5qcwpAQCAtNjcsOSArNjcsOSBAQAogICAgICAgICAgICAgICAgIC8vIElmIHRo YXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0aGUgbm90ZWJvb2sKICAgICAgICAgICAgICAgICBzdWNj ZXNzOiBhcHBlbmRfbm90ZWJvb2ssCiAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpx eGhyLCBzdGF0dXMsIGVycm9yKXsKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9mYWlsZWRf YXV0aCgpOwogICAgICAgICAgICAgICAgICAgICBpZihwYXNzd29yZF9hdXRoX2pzdmFyICYmICFh cGFjaGVfdXJsc19qc3Zhcil7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYWlsdXJlIGhh cHBlbnMgZHVlIHRvIENPUlMKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfZmFpbGVk X2F1dGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZF9ub3RlYm9vaygpOwogICAg ICAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Vf ZmFpbGVkX2Nvbm5lY3Rpb24oKTsKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4 eS1jZW50cmFsL2NvbW1pdHMvMzcyMDU1MDJhNWI0LwpDaGFuZ2VzZXQ6ICAgMzcyMDU1MDJhNWI0 ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCsw MDowMApTdW1tYXJ5OiAgICAgUmVtb3ZlZCBkb2NrZXIgZGVsYXkgd2l0aCBzcGlubmluZwpBZmZl Y3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDI0MzVhYjZiZWQzY2FkNjA3NTQ2YTg3OTNlYTQ4OWZk ZGFlZDU3MGQgLXIgMzcyMDU1MDJhNWI0ZDg4NjJiYmY0Mjk9CmVjOTIzM2QyZGU3M2QzMGM4IGNv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vY29uZi9pcHl0aG9uLmNvbmYKLS0t IGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9jb25mL2lweXRob24uY29u ZgorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhv bi5jb25mCkBAIC0yLDcgKzIsNiBAQAogYXBhY2hlX3VybHMgPTNEIEZhbHNlCiBwYXNzd29yZF9h dXRoID0zRCBGYWxzZQogc3NsID0zRCBGYWxzZQotZG9ja2VyX2RlbGF5ID0zRCAxCj0yMAogW2Rv Y2tlcl0KIGNvbW1hbmQgPTNEIGRvY2tlcgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hYWZkY2JiYjVjOTgvCkNoYW5nZXNldDogICBhYWZkY2Ji YjVjOTgKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4 OjA0KzAwOjAwClN1bW1hcnk6ICAgICBSZWZhY3RvcmVkIEpTIGNvZGUgdG8gd2FpdCBvbiBwYWdl IGxvYWQKU2VlIGxpbmtlZCBTTyBxdWVzdGlvbiBpbiBzb3VyY2UgZm9yIGluZm9ybWF0aW9uIG9u IHRoZSB0eXBlIG9mIEpTIGRlbGF5IGxvPQpvcAp3ZSdyZSBkb2luZy4KQWZmZWN0ZWQgIzogIDEg ZmlsZQoKZGlmZiAtciAzNzIwNTUwMmE1YjRkODg2MmJiZjQyOWVjOTIzM2QyZGU3M2QzMGM4IC1y IGFhZmRjYmJiNWM5ODA3OWM1ZGUxNzk4PQo5MzFjMDRjYTAzZDMyMTlkYyBjb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHktZ2FsYXh5LmpzCi0tLSBhL2NvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweS1nYWxheHkuanMKKysr IGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaXB5LWdhbGF4 eS5qcwpAQCAtMSwyMiArMSwxNSBAQAotZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKCl7Ci0gICAg JCgnYm9keScpLmFwcGVuZCgKLSAgICAgICAgJCgnPG9iamVjdC8+JywgewotICAgICAgICAgICAg c3JjOiBub3RlYm9va19hY2Nlc3NfdXJsLAotICAgICAgICAgICAgZGF0YTogbm90ZWJvb2tfYWNj ZXNzX3VybCwKLSAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLAotICAgICAgICAgICAgd2lkdGg6 ICcxMDAlJywKLSAgICAgICAgfSkuYXBwZW5kKAotICAgICAgICAgICAgJCgnPGVtYmRlZC8+Jywg ewotICAgICAgICAgICAgICAgIHNyYzogbm90ZWJvb2tfYWNjZXNzX3VybCwKLSAgICAgICAgICAg ICAgICBkYXRhOiBub3RlYm9va19hY2Nlc3NfdXJsLAotICAgICAgICAgICAgICAgIGhlaWdodDog JzEwMCUnLAotICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsCi0gICAgICAgICAgICB9KQot ICAgICAgICApCisvKioKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHJlbW92ZSBjb250ZW50IGZy b20gdGhlIG1haW4gYXJlYSBhbmQgYWRkIHRoZSBub3RlPQpib29rLgorICogTm90IGlkZW1wb3Rl bnQKKyAqLworZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKHVybCl7CisgICAgJCgnI3NwaW5uZXIn KS5yZW1vdmUoKTsKKyAgICAkKCcjbWFpbicpLmFwcGVuZCgnPG9iamVjdCBkYXRhPTNEIicgKyB1 cmwgKyAnIiBoZWlnaHQ9M0QiOTUlIiB3aWR0aD0KPTNEIjEwMCUiPicKKyAgICArJzxlbWJlZCBz cmM9M0QiJyArIHVybCArICciIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIi8+PC9vYmpl Y3Q+JwogICAgICk7CiB9Cj0yMAotZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfYXV0aCgpeworZnVu Y3Rpb24gbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29yZCl7CiAgICAgdG9hc3RyLmluZm8oCiAg ICAgICAgICJBdXRvbWF0aWMgYXV0aG9yaXphdGlvbiBmYWlsZWQuIFlvdSBjYW4gbWFudWFsbHkg bG9naW4gd2l0aDo8YnI+Ij0KICsgcGFzc3dvcmQgKyAiPGJyPjxhIGhyZWY9M0QnaHR0cHM6Ly9n aXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93PQppa2kvQXV0b21hdGljLUF1dGhv cml6YXRpb24tRmFpbGVkJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIs CiAgICAgICAgICJQbGVhc2UgbG9naW4gbWFudWFsbHkiLApAQCAtNDAsNiArMzMsMjMgQEAKICAg ICApOwogfQo9MjAKKy8qKgorICogSW5pdGlhbCB2ZXJzaW9uIG9mIGZ1bmN0aW9uIHRvIHRlc3Qg YXZhaWxhYmlsaXR5IG9mIFVSTC9yZXNvdXJjZQorICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29t L3EvMjUzOTAyMDYvMzQ3MzY4CisgKi8KK2Z1bmN0aW9uIHRlc3RfaWVfYXZhaWxhYmlsaXR5KHVy bCl7CisgICAgaW50ZXJ2YWwgPTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7CisgICAgICAgICQu YWpheCh7CisgICAgICAgICAgICB0eXBlOiAiR0VUIiwKKyAgICAgICAgICAgIHVybDogdXJsLAor ICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICBjbGVhcklu dGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgICAgICAvL19oYW5kbGVfbm90ZWJvb2tfbG9hZGluZyhwYXNzd29yZF9hdXRoLCBwYXNzd29y ZCwgbm90ZWJvPQpva19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vzc191cmwsIGFwYWNoZV91cmxz LCBkb2NrZXJfZGVsYXkpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9LCA1MDAp OworfQo9MjAKIC8qKgogICogTG9hZCBhbiBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCAoSUUpIGZy b20gYSByZW1vdGUgVVJMCkBAIC00Nyw0MyArNTcsNjUgQEAKICAqIEBwYXJhbSB7U3RyaW5nfSBw YXNzd29yZDogcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUgdG8gdGhlIHJlbW90ZSByPQpl c291cmNlCiAgKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfbG9naW5fdXJsOiBVUkwgdGhhdCBz aG91bGQgYmUgUE9TVGVkIHRvIGZvciBsbz0KZ2luCiAgKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJv b2tfYWNjZXNzX3VybDogdGhlIFVSTCBlbWJlZGVkIGluIHRoZSBwYWdlIGFuZCBsbz0KYWRlZAor ICogQHBhcmFtIHtCb29sZWFufSBhcGFjaGVfdXJsczogUHJveHlpbmcgaXMgZG9uZSBvdXRzaWRl IG9mIGdhbGF4eSBpbiB0aGU9CiB3ZWJzZXJ2ZXIKKyAqIEBwYXJhbSB7U3RyaW5nfSBnYWxheHlf cm9vdDogcm9vdCBvZiB0aGUgZ2FsYXh5IHNlcnZlciwgdXNlZCBmb3IgZmluZGluPQpnIHRoZSBz dGF0aWMgc3Bpbm5lci5naWYgdGhhdCBzaGlwcyB3aXRoIGdhbGF4eS4KICAqPTIwCiAgKiBUT0RP OiBUaGlzIGZ1bmN0aW9uIG5lZWRzIGEgbG90IG9mIHdvcmsgdG8gbWFrZSBpdCBtb3JlIGdlbmVy aWM6CiAgKiBUT0RPOiBleGNoYW5nZSBsb2dpbl91cmwsIHBhc3N3b3JkLCBwYXNzd29yZF9hdXRo IGZvciBhIHNpbmdsZSBmdW5jdGlvbj0KIHdoaWNoIGVuY2Fwc3VsYXRlcyBhbGwgdGhlIGF1dGhl bnRpY2F0aW9uIHByb2NlZHVyZSwgYXMgdGhhdCB3aWxsIGRpZmZlciBiPQpldHdlZW4gSUVzLgog ICovCi1mdW5jdGlvbiBsb2FkX25vdGVib29rKHBhc3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3Rl Ym9va19sb2dpbl91cmwsIG5vdGVibz0Kb2tfYWNjZXNzX3VybCl7Ci0gICAgaWYgKCBwYXNzd29y ZF9hdXRoICkgewotICAgICAgICAvLyBPbiBkb2N1bWVudCByZWFkeQotICAgICAgICAkKCBkb2N1 bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gTWFrZSBhbiBBSkFYIFBP U1QKK2Z1bmN0aW9uIGxvYWRfbm90ZWJvb2socGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVi b29rX2xvZ2luX3VybCwgbm90ZWJvPQpva19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscywgZ2FsYXh5 X3Jvb3QpeworICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CisgICAgICAgICQo JyNtYWluJykuYXBwZW5kKCc8aW1nIGlkPTNEInNwaW5uZXIiIHNyYz0zRCInICsgZ2FsYXh5X3Jv b3QgKyAnLz0Kc3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiID4nKTsKKyAgICAgICAgaW50 ZXJ2YWwgPTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkLmFqYXgoewot ICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKLSAgICAgICAgICAgICAgICAvLyB0byB0aGUg TG9naW4gVVJMCi0gICAgICAgICAgICAgICAgdXJsOiBub3RlYm9va19sb2dpbl91cmwsCi0gICAg ICAgICAgICAgICAgLy8gV2l0aCBvdXIgcGFzc3dvcmQKLSAgICAgICAgICAgICAgICBkYXRhOiB7 Ci0gICAgICAgICAgICAgICAgICAgICdwYXNzd29yZCc6IG5vdGVib29rX3B3CisgICAgICAgICAg ICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgICAgICAgICAgdXJsOiBub3RlYm9va19hY2Nlc3Nf dXJsLAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAg ICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgICAgICBfaGFu ZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGU9CmJvb2tf bG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscyk7CiAgICAgICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGF0IGlzIHN1Y2Nlc3NmdWwsIGxvYWQg dGhlIG5vdGVib29rCi0gICAgICAgICAgICAgICAgc3VjY2VzczogYXBwZW5kX25vdGVib29rLAot ICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihqcXhociwgc3RhdHVzLCBlcnJvcil7Ci0g ICAgICAgICAgICAgICAgICAgIGlmKHBhc3N3b3JkX2F1dGhfanN2YXIgJiYgIWFwYWNoZV91cmxz X2pzdmFyKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhaWx1cmUgaGFwcGVucyBkdWUg dG8gQ09SUwotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9mYWlsZWRfYXV0aCgpOwot ICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kX25vdGVib29rKCk7Ci0gICAgICAgICAgICAg ICAgICAgIH1lbHNlewotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9mYWlsZWRfY29u bmVjdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gd2Ugd2FudCB0byB0cnkg YW5kIGxvYWQgdGhlIG5vdGVib29rIGFueXdheT89CiBKdXN0IGluIGNhc2U/Ci0gICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oKXsKKyAgICAgICAg ICAgICAgICAgICAgY29uc29sZS5sb2coIlNvbWUgZXJyb3IiKTsKICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsKK30KKworLyoqCisg KiBJbnRlcm5hbCBmdW5jdGlvbgorICovCitmdW5jdGlvbiBfaGFuZGxlX25vdGVib29rX2xvYWRp bmcocGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2luXz0KdXJsLCBub3RlYm9v a19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscyl7CisgICAgaWYgKCBwYXNzd29yZF9hdXRoICkgewor ICAgICAgICAvLyBNYWtlIGFuIEFKQVggUE9TVAorICAgICAgICAkLmFqYXgoeworICAgICAgICAg ICAgdHlwZTogIlBPU1QiLAorICAgICAgICAgICAgLy8gdG8gdGhlIExvZ2luIFVSTAorICAgICAg ICAgICAgdXJsOiBub3RlYm9va19sb2dpbl91cmwsCisgICAgICAgICAgICAvLyBXaXRoIG91ciBw YXNzd29yZAorICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAgICdwYXNzd29yZCc6 IHBhc3N3b3JkCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgLy8gSWYgdGhhdCBpcyBzdWNj ZXNzZnVsLCBsb2FkIHRoZSBub3RlYm9vaworICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24o KXsKKyAgICAgICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7 CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0 dXMsIGVycm9yKXsKKyAgICAgICAgICAgICAgICBpZihwYXNzd29yZF9hdXRoICYmICFhcGFjaGVf dXJscyl7CisgICAgICAgICAgICAgICAgICAgIC8vIEZhaWx1cmUgaGFwcGVucyBkdWUgdG8gQ09S UworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX2ZhaWxlZF9hdXRoKHBhc3N3b3JkKTsKKyAg ICAgICAgICAgICAgICAgICAgYXBwZW5kX25vdGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOwor ICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX2ZhaWxl ZF9jb25uZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIHdlIHdhbnQgdG8gdHJ5 IGFuZCBsb2FkIHRoZSBub3RlYm9vayBhbnl3YXk/IEp1cz0KdCBpbiBjYXNlPworICAgICAgICAg ICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9CiAgICAgZWxzZSB7 CiAgICAgICAgIC8vIE5vdCB1c2luZyBwYXNzd29yZCBhdXRoLCBqdXN0IGVtYmVkIGl0IHRvIGF2 b2lkIGNvbnRlbnQtb3JpZ2luID0KaXNzdWVzLgogICAgICAgICBtZXNzYWdlX25vX2F1dGgoKTsK LSAgICAgICAgJCggZG9jdW1lbnQgKS5yZWFkeShmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGFw cGVuZF9ub3RlYm9vaygpOwotICAgICAgICB9KTsKKyAgICAgICAgYXBwZW5kX25vdGVib29rKG5v dGVib29rX2FjY2Vzc191cmwpOwogICAgIH0KIH0KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2Fs YXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZjNjZjM5ZjAxNmY4LwpDaGFuZ2VzZXQ6ICAgZjNj ZjM5ZjAxNmY4ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAy MjozODowNCswMDowMApTdW1tYXJ5OiAgICAgRmluaXNoZWQgd29yayBvbiBzcGlubmluZwogLSBS ZW1vdmVkIGEgc3RhdGljYWxseSBzZXQgcG9ydCBkdXJpbmcgdGVzdGluZwogLSBNYWRlIHZhcmlh YmxlcyBsb2NhbCBzbyB3ZSBjYW4gYmUgc3VyZSB0aGV5IGFyZW4ndCBiZWluZyBtaXMtdXNlZAog LSBSZW1vdmVkIHNsZWVwCiAtIE5ldyBwYXJhbWV0ZXJzIG5lZWRlZCBpbiBub3RlYm9vayBsb2Fk IGNhbGwKIC0gQWRkZWQgbWFpbiBkaXYgdG8gdXNlIGZvciBpbWFnZXMvZXRjLiBQcm9iYWJseSBu b3QgbmVjZXNzYXJ5LgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGFhZmRjYmJiNWM5ODA3 OWM1ZGUxNzk4OTMxYzA0Y2EwM2QzMjE5ZGMgLXIgZjNjZjM5ZjAxNmY4YTdjMDk5NTYwODg9Cjhj Mjc1MjI1YWI2MGUzYjUxIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVt cGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTgxLDcgKzgxLDYg QEAKICAgICBQT1JUID0zRCByYW5kb20ucmFuZHJhbmdlKDEwMDAwLDE1MDAwKQogICAgIGlmIFBP UlQgbm90IGluIG9jY3VwaWVkX3BvcnRzOgogICAgICAgICBicmVhawotUE9SVCA9M0QgMTQxMzEK PTIwCiBIT1NUID0zRCByZXF1ZXN0Lmhvc3QKICMgU3RyaXAgb3V0IHBvcnQsIHdlIGp1c3Qgd2Fu dCB0aGUgVVJMIHRoaXMgZ2FsYXh5IHNlcnZlciB3YXMgYWNjZXNzZWQgYXQuCkBAIC0xNTUsMTAg KzE1NCw2IEBACiAgICAgYXBhY2hlX3VybHNfanN2YXIgPTNEICJmYWxzZSIKIHN1YnByb2Nlc3Mu Y2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCj0yMAotIyBXZSBuZWVkIHRvIHdhaXQgdW50 aWwgdGhlIEltYWdlIGFuZCBJUHl0aG9uIGluIGxvYWRlZAotIyBUT0RPOiBUaGlzIGNhbiBiZSBl bmhhbmNlZCBsYXRlciwgd2l0aCBzb21lIEpTIHNwaW5uaW5nIGlmIG5lZWRlZC4KLXRpbWUuc2xl ZXAoaXB5X3Zpel9jb25maWcuZ2V0aW50KCJtYWluIiwgImRvY2tlcl9kZWxheSIpKQotCiAlPjxo dG1sPjxoZWFkPgpAQCAtMTcxLDEzICsxNjYsMTggQEAKIDxib2R5PjxzY3JpcHQgdHlwZT0zRCJ0 ZXh0L2phdmFzY3JpcHQiPgotcGFzc3dvcmRfYXV0aCA9M0QgJyR7IHBhc3N3b3JkX2F1dGhfanN2 YXIgfSc7Ci1ub3RlYm9va19sb2dpbl91cmwgPTNEICckeyBub3RlYm9va19sb2dpbl91cmwgfSc7 Ci1wYXNzd29yZCA9M0QgJyR7IG5vdGVib29rX3B3IH0nOwotbm90ZWJvb2tfYWNjZXNzX3VybCA9 M0QgJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfSc7Cit2YXIgcGFzc3dvcmRfYXV0aCA9M0QgJHsg cGFzc3dvcmRfYXV0aF9qc3ZhciB9OwordmFyIGFwYWNoZV91cmxzID0zRCAkeyBhcGFjaGVfdXJs c19qc3ZhciB9OwordmFyIG5vdGVib29rX2xvZ2luX3VybCA9M0QgJyR7IG5vdGVib29rX2xvZ2lu X3VybCB9JzsKK3ZhciBwYXNzd29yZCA9M0QgJyR7IG5vdGVib29rX3B3IH0nOwordmFyIG5vdGVi b29rX2FjY2Vzc191cmwgPTNEICckeyBub3RlYm9va19hY2Nlc3NfdXJsIH0nOwordmFyIGdhbGF4 eV9yb290ID0zRCAnJHsgcm9vdCB9JzsKIC8vIExvYWQgbm90ZWJvb2sKLWxvYWRfbm90ZWJvb2so cGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNj ZXNzPQpfdXJsKTsKK2xvYWRfbm90ZWJvb2socGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVi b29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzPQpfdXJsLCBhcGFjaGVfdXJscywgZ2FsYXh5 X3Jvb3QpOwogPC9zY3JpcHQ+Cj0yMAorPGRpdiBpZD0zRCJtYWluIiB3aWR0aD0zRCIxMDAlIiBo ZWlnaHQ9M0QiMTAwJSI+Cis8L2Rpdj4KKwogPC9ib2R5PjwvaHRtbD4KCgpodHRwczovL2JpdGJ1 Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZjg4NWU0NTQ4ZGZjLwpDaGFu Z2VzZXQ6ICAgZjg4NWU0NTQ4ZGZjClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAg MjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgRml4ZXMgIzE1CkFmZmVjdGVk ICM6ICAxIGZpbGUKCmRpZmYgLXIgZjNjZjM5ZjAxNmY4YTdjMDk5NTYwODg4YzI3NTIyNWFiNjBl M2I1MSAtciBmODg1ZTQ1NDhkZmM0OWQ2Y2MyZTFmZD0KZTNlMWU2M2E1NDYxNTJmNzcgY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28K LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5 dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVt cGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTAyLDcgKzEwMiw3IEBACj0yMAogY29uZl9maWxlID0z RCB7CiAgICAgJ2hpc3RvcnlfaWQnOiBoaXN0b3J5X2lkLAotICAgICdnYWxheHlfdXJsJzogcmVx dWVzdC5hcHBsaWNhdGlvbl91cmwucnN0cmlwKCcvJyksCisgICAgJ2dhbGF4eV91cmwnOiByZXF1 ZXN0LmFwcGxpY2F0aW9uX3VybC5yc3RyaXAoJy8nKSArICcvJywKICAgICAnYXBpX2tleSc6IGFw aV9rZXksCiAgICAgJ3JlbW90ZV9ob3N0JzogcmVxdWVzdC5yZW1vdGVfYWRkciwKICAgICAnZ2Fs YXh5X3Bhc3Rlcl9wb3J0JzogZ2FsYXh5X3Bhc3Rlcl9wb3J0LAoKCmh0dHBzOi8vYml0YnVja2V0 Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy83Y2VmMGFhNjBjZWIvCkNoYW5nZXNl dDogICA3Y2VmMGFhNjBjZWIKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0 LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBDZW50ZXIgdGhlIHNwaW5uZXIKQWZm ZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBmODg1ZTQ1NDhkZmM0OWQ2Y2MyZTFmZGUzZTFlNjNh NTQ2MTUyZjc3IC1yIDdjZWYwYWE2MGNlYjFiMzZmMDZkNjk2PQpjMzFkNjE2ZmZiZTJkMDBlYyBj b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHktZ2FsYXh5Lmpz Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweS1n YWxheHkuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0 aWMvaXB5LWdhbGF4eS5qcwpAQCAtNjUsNyArNjUsNyBAQAogICovCiBmdW5jdGlvbiBsb2FkX25v dGVib29rKHBhc3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVi bz0Kb2tfYWNjZXNzX3VybCwgYXBhY2hlX3VybHMsIGdhbGF4eV9yb290KXsKICAgICAkKCBkb2N1 bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgICAgICAkKCcjbWFpbicpLmFwcGVuZCgnPGlt ZyBpZD0zRCJzcGlubmVyIiBzcmM9M0QiJyArIGdhbGF4eV9yb290ICsgJy89CnN0YXRpYy9zdHls ZS9sYXJnZXNwaW5uZXIuZ2lmIiA+Jyk7CisgICAgICAgICQoJyNtYWluJykuYXBwZW5kKCc8aW1n IGlkPTNEInNwaW5uZXIiIHNyYz0zRCInICsgZ2FsYXh5X3Jvb3QgKyAnLz0Kc3RhdGljL3N0eWxl L2xhcmdlc3Bpbm5lci5naWYiIHN0eWxlPTNEInBvc2l0aW9uOmFic29sdXRlO21hcmdpbjphdXRv O3RvcDowPQo7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7Ij4nKTsKICAgICAgICAgaW50ZXJ2YWwg PTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkLmFqYXgoewogICAgICAg ICAgICAgICAgIHR5cGU6ICJHRVQiLAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2Fs YXh5LWNlbnRyYWwvY29tbWl0cy83ZjQ3NDliYmM3MjUvCkNoYW5nZXNldDogICA3ZjQ3NDliYmM3 MjUKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0 KzAwOjAwClN1bW1hcnk6ICAgICBQb3NzaWJsZSBmaXggZm9yIENPUlMvY29va2llIGlzc3VlLgpJ IG5vdGljZWQgdGhhdCB0aGUgY29va2llIHdhcyBpbmRlZWQgYmVpbmcgc2V0IGJ5IHRoZSBQT1NU IHJlcXVlc3QuIEhvd2V2ZXI9CiwgdGhhdCBjb29raWUgd2FzCmVzc2VudGlhbGx5IGlnbm9yZWQg aW4gdGhlIHN1YnNlcXVlbnQgcmVxdWVzdHMuCgpJIGxvb2tlZCBmb3IgcGxhY2VzIHRvIGludGVy cnVwdCBpdCwgY291bGQgSSBqdXN0IHN0b3AgYWZ0ZXIgdGhlIFBPU1QgYW5kIG49Cm90IGV4ZWN1 dGUgYW55IHJlZGlyZWN0cy4KVGhhdCBkaWQgbm90IGFwcGVhciB0byBiZSBhbiBvcHRpb24gZHVl IHRvIEhUVFAvWEhSIHNwZWMuIEFmdGVyIGEgYml0IG9mIHNlPQphcmNoaW5nIEkgY2FtZSB1cCB3 aXRoCnRoaXMgbGluazogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTQ0NjI2MTUgd2hpY2gg c2VlbXMgdG8gc29sdmUgdGhlIGlzcz0KdWUuIE1lbnRpb25lZCBoZXJlOgpodHRwczovL2FwaS5q cXVlcnkuY29tL2pRdWVyeS5hamF4LwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDdjZWYw YWE2MGNlYjFiMzZmMDZkNjk2YzMxZDYxNmZmYmUyZDAwZWMgLXIgN2Y0NzQ5YmJjNzI1ZWEyM2Fl OTMzZjQ9CjJlMmEzZDk4OTMzNDg2MjA2IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vc3RhdGljL2lweS1nYWxheHkuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9zdGF0aWMvaXB5LWdhbGF4eS5qcworKysgYi9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHktZ2FsYXh5LmpzCkBAIC01OSw3ICs1OSw3 IEBACiAgKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfYWNjZXNzX3VybDogdGhlIFVSTCBlbWJl ZGVkIGluIHRoZSBwYWdlIGFuZCBsbz0KYWRlZAogICogQHBhcmFtIHtCb29sZWFufSBhcGFjaGVf dXJsczogUHJveHlpbmcgaXMgZG9uZSBvdXRzaWRlIG9mIGdhbGF4eSBpbiB0aGU9CiB3ZWJzZXJ2 ZXIKICAqIEBwYXJhbSB7U3RyaW5nfSBnYWxheHlfcm9vdDogcm9vdCBvZiB0aGUgZ2FsYXh5IHNl cnZlciwgdXNlZCBmb3IgZmluZGluPQpnIHRoZSBzdGF0aWMgc3Bpbm5lci5naWYgdGhhdCBzaGlw cyB3aXRoIGdhbGF4eS4KLSAqPTIwCisgKgogICogVE9ETzogVGhpcyBmdW5jdGlvbiBuZWVkcyBh IGxvdCBvZiB3b3JrIHRvIG1ha2UgaXQgbW9yZSBnZW5lcmljOgogICogVE9ETzogZXhjaGFuZ2Ug bG9naW5fdXJsLCBwYXNzd29yZCwgcGFzc3dvcmRfYXV0aCBmb3IgYSBzaW5nbGUgZnVuY3Rpb249 CiB3aGljaCBlbmNhcHN1bGF0ZXMgYWxsIHRoZSBhdXRoZW50aWNhdGlvbiBwcm9jZWR1cmUsIGFz IHRoYXQgd2lsbCBkaWZmZXIgYj0KZXR3ZWVuIElFcy4KICAqLwpAQCAtOTYsNiArOTYsOSBAQAog ICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICdwYXNzd29yZCc6IHBhc3N3b3Jk CiAgICAgICAgICAgICB9LAorICAgICAgICAgICAgeGhyRmllbGRzOiB7CisgICAgICAgICAgICAg ICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlCisgICAgICAgICAgICB9LAogICAgICAgICAgICAgLy8g SWYgdGhhdCBpcyBzdWNjZXNzZnVsLCBsb2FkIHRoZSBub3RlYm9vawogICAgICAgICAgICAgc3Vj Y2VzczogZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJv b2tfYWNjZXNzX3VybCk7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2Vu dHJhbC9jb21taXRzLzRhZWJjNGFlMzI1Ny8KQ2hhbmdlc2V0OiAgIDRhZWJjNGFlMzI1NwpVc2Vy OiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAK U3VtbWFyeTogICAgIEFkZGVkIENPUlMgcmVxdWlyZWQgcGFyYW1ldGVyIHRvIGNvbmYKQWZmZWN0 ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA3ZjQ3NDliYmM3MjVlYTIzYWU5MzNmNDJlMmEzZDk4OTMz NDg2MjA2IC1yIDRhZWJjNGFlMzI1N2QzMmI2NDdhMzQ2PQo5ZjdiMTFmZWExMTg5YmY3NSBjb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFr bwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xMDcsNiArMTA3LDcgQEAKICAgICAncmVtb3RlX2hv c3QnOiByZXF1ZXN0LnJlbW90ZV9hZGRyLAogICAgICdnYWxheHlfcGFzdGVyX3BvcnQnOiBnYWxh eHlfcGFzdGVyX3BvcnQsCiAgICAgJ2RvY2tlcl9wb3J0JzogUE9SVCwKKyAgICAnY29yc19vcmln aW4nOiByZXF1ZXN0Lmhvc3RfdXJsLAogfQo9MjAKIGlmIGlweV92aXpfY29uZmlnLmdldGJvb2xl YW4oIm1haW4iLCAicGFzc3dvcmRfYXV0aCIpOgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxh eHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85YjMzYmU0ZDExMTUvCkNoYW5nZXNldDogICA5YjMz YmU0ZDExMTUKVXNlcjogICAgICAgIEJqb2VybkdydWVuaW5nCkRhdGU6ICAgICAgICAyMDE0LTEw LTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBNaWdyYXRlIGZyb20gPG9iamVjdD4gdG8g PGlmcmFtZT4uIE9iamVjdHMgc2VlbXMgdG8gaGF2ZSBzb21lID0KYnVncyBpbiBGRjMyLgpBZmZl Y3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRhZWJjNGFlMzI1N2QzMmI2NDdhMzQ2OWY3YjExZmVh MTE4OWJmNzUgLXIgOWIzM2JlNGQxMTE1ZmE2ZWFhZjc4ZTY9CmFkODdmZTg1ODk3NWM4YzE5IGNv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweS1nYWxheHkuanMK LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaXB5LWdh bGF4eS5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRp Yy9pcHktZ2FsYXh5LmpzCkBAIC00LDExICs0LDExIEBACiAgKi8KIGZ1bmN0aW9uIGFwcGVuZF9u b3RlYm9vayh1cmwpewogICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7Ci0gICAgJCgnI21haW4n KS5hcHBlbmQoJzxvYmplY3QgZGF0YT0zRCInICsgdXJsICsgJyIgaGVpZ2h0PTNEIjk1JSIgd2lk dGg9Cj0zRCIxMDAlIj4nCi0gICAgKyc8ZW1iZWQgc3JjPTNEIicgKyB1cmwgKyAnIiBoZWlnaHQ9 M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSIvPjwvb2JqZWN0PicKKyAgICAkKCcjbWFpbicpLmFwcGVu ZCgnPGlmcmFtZSBmcmFtZUJvcmRlcj0zRCIwIiBzZWFtbGVzcz0zRCJzZWFtbGVzcyIgc3R5PQps ZT0zRCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzpoaWRkZW47IiBzY3JvbGxp bmc9M0Qibm8iIHNyYz0zRCI9CicrIHVybCArJyI+PC9pZnJhbWU+JwogICAgICk7CiB9Cj0yMAor CiBmdW5jdGlvbiBtZXNzYWdlX2ZhaWxlZF9hdXRoKHBhc3N3b3JkKXsKICAgICB0b2FzdHIuaW5m bygKICAgICAgICAgIkF1dG9tYXRpYyBhdXRob3JpemF0aW9uIGZhaWxlZC4gWW91IGNhbiBtYW51 YWxseSBsb2dpbiB3aXRoOjxicj4iPQogKyBwYXNzd29yZCArICI8YnI+PGEgaHJlZj0zRCdodHRw czovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uL3c9CmlraS9BdXRvbWF0aWMt QXV0aG9yaXphdGlvbi1GYWlsZWQnIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48 L2E+IiwKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1p dHMvNTc0OWE2OTQ4ZWVlLwpDaGFuZ2VzZXQ6ICAgNTc0OWE2OTQ4ZWVlClVzZXI6ICAgICAgICBl cmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAg ICAgVW51c2VkIHZhcmlhYmxlCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgOWIzM2JlNGQx MTE1ZmE2ZWFhZjc4ZTZhZDg3ZmU4NTg5NzVjOGMxOSAtciA1NzQ5YTY5NDhlZWVkM2M0MzgyMzE0 ZD0KMGVlZjI1YWY5ODQ5ZmEyNzYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTQsNyAr MTQsNiBAQAogZ2FsYXh5X2NvbmZpZyA9M0QgdHJhbnMuYXBwLmNvbmZpZwogZ2FsYXh5X3Jvb3Rf ZGlyID0zRCBvcy5wYXRoLmFic3BhdGgoZ2FsYXh5X2NvbmZpZy5yb290KQogaGlzdG9yeV9pZCA9 M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkICkKLWRhdGFzZXRf aWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkKICMgUm91dGVzCiByb290 ICAgICAgICA9M0QgaC51cmxfZm9yKCAiLyIgKQogYXBwX3Jvb3QgICAgPTNEIHJvb3QgKyAicGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy8iCgoKaHR0cHM6Ly9iaXRidWNrZXQu b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2U2ODk1YmIyN2Q4OC8KQ2hhbmdlc2V0 OiAgIGU2ODk1YmIyN2Q4OApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIGFkZGVkIGNvbW1lbnQKQWZmZWN0ZWQg IzogIDEgZmlsZQoKZGlmZiAtciA1NzQ5YTY5NDhlZWVkM2M0MzgyMzE0ZDBlZWYyNWFmOTg0OWZh Mjc2IC1yIGU2ODk1YmIyN2Q4ODk1YmYzZjA5ODQzPQpiMDE0NzFhZDAyYzA0ZDk1YyBjb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwot LS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xOCw2ICsxOCw3IEBACiByb290ICAgICAgICA9M0QgaC51 cmxfZm9yKCAiLyIgKQogYXBwX3Jvb3QgICAgPTNEIHJvb3QgKyAicGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3N0YXRpYy8iCj0yMAorIyBHYWxheHkgY29uZmlnIHBhcnNlcgogY29uZmln ID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQnOiAnODA4MCd9KQogY29u ZmlnLnJlYWQoIG9zLnBhdGguam9pbiggZ2FsYXh5X3Jvb3RfZGlyLCAndW5pdmVyc2Vfd3NnaS5p bmknICkgKQo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFs L2NvbW1pdHMvYzcxNTU3NTEwODVjLwpDaGFuZ2VzZXQ6ICAgYzcxNTU3NTEwODVjClVzZXI6ICAg ICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1t YXJ5OiAgICAgUmVmYWN0b3IgaW50byBmdW5jdGlvbgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZm IC1yIGU2ODk1YmIyN2Q4ODk1YmYzZjA5ODQzYjAxNDcxYWQwMmMwNGQ5NWMgLXIgYzcxNTU3NTEw ODVjNjkxMzBmMzA1ZTk9CjQ2MmFmNGVmZThkZjZkOGQ4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1h a28KQEAgLTE4LDE1ICsxOCwyMCBAQAogcm9vdCAgICAgICAgPTNEIGgudXJsX2ZvciggIi8iICkK IGFwcF9yb290ICAgID0zRCByb290ICsgInBsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9z dGF0aWMvIgo9MjAKLSMgR2FsYXh5IGNvbmZpZyBwYXJzZXIKLWNvbmZpZyA9M0QgQ29uZmlnUGFy c2VyLlNhZmVDb25maWdQYXJzZXIoeydwb3J0JzogJzgwODAnfSkKLWNvbmZpZy5yZWFkKCBvcy5w YXRoLmpvaW4oIGdhbGF4eV9yb290X2RpciwgJ3VuaXZlcnNlX3dzZ2kuaW5pJyApICkKK2RlZiBn ZXRfZ2FsYXh5X3Bhc3Rlcl9wb3J0KCk6CisgICAgIyBHYWxheHkgY29uZmlnIHBhcnNlcgorICAg IGNvbmZpZyA9M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoeydwb3J0JzogJzgwODAn fSkKKyAgICBjb25maWcucmVhZCggb3MucGF0aC5qb2luKCBnYWxheHlfcm9vdF9kaXIsICd1bml2 ZXJzZV93c2dpLmluaScgKSApCj0yMAotIyB1V1NHSSBnYWxheHkgaW5zdGFsbGF0aW9ucyBkb24n dCB1c2UgcGFzdGVyIGFuZCBvbmx5IHNwZWFrIHVXU0dJIG5vdCBodHRwCi10cnk6Ci0gICAgZ2Fs YXh5X3Bhc3Rlcl9wb3J0ID0zRCBjb25maWcuZ2V0aW50KCdzZXJ2ZXI6JXMnICUgZ2FsYXh5X2Nv bmZpZy5zZXJ2ZT0Kcl9uYW1lLCAncG9ydCcpCi1leGNlcHQ6Ci0gICAgZ2FsYXh5X3Bhc3Rlcl9w b3J0ID0zRCBOb25lCisgICAgIyB1V1NHSSBnYWxheHkgaW5zdGFsbGF0aW9ucyBkb24ndCB1c2Ug cGFzdGVyIGFuZCBvbmx5IHNwZWFrIHVXU0dJIG5vdD0KIGh0dHAKKyAgICB0cnk6CisgICAgICAg IHBvcnQgPTNEIGNvbmZpZy5nZXRpbnQoJ3NlcnZlcjolcycgJSBnYWxheHlfY29uZmlnLnNlcnZl cl9uYW1lLCAncD0Kb3J0JykKKyAgICBleGNlcHQ6CisgICAgICAgIHBvcnQgPTNEIE5vbmUKKyAg ICByZXR1cm4gcG9ydAorCisKK2dhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgZ2V0X2dhbGF4eV9wYXN0 ZXJfcG9ydCgpCj0yMAogdml6X3BsdWdpbl9kaXIgPTNEIE5vbmUKIHRyeToKCgpodHRwczovL2Jp dGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNzY1NjFjZjE3OGI0LwpD aGFuZ2VzZXQ6ICAgNzY1NjFjZjE3OGI0ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAg ICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgcGx1Z2luX3BhdGggbm93 IGF2YWlsYWJsZQpBcyBvZiBodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50 cmFsL2NvbW1pdHMvZGRjOWE2NjlkNTNhYTI1OWQ9CjM4ZWZjODgyYzg5MDUwMzQ0NGRhYWY1CkFm ZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgYzcxNTU3NTEwODVjNjkxMzBmMzA1ZTk0NjJhZjRl ZmU4ZGY2ZDhkOCAtciA3NjU2MWNmMTc4YjQzZGVmMjdjY2I4Yz0KN2Q1NWI0OWQ5MTcyZGZjZDYg Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5t PQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMzMsMjYgKzMzLDkgQEAKPTIwCiBnYWxheHlf cGFzdGVyX3BvcnQgPTNEIGdldF9nYWxheHlfcGFzdGVyX3BvcnQoKQo9MjAKLXZpel9wbHVnaW5f ZGlyID0zRCBOb25lCi10cnk6Ci0gICAgIyBOZXdlciBQeXRob24gdmVyc2lvbnMgYWxsb3cgbW9y ZSwgZGlyZWN0L2NvcnJlY3QKLSAgICAjIGFjY2VzcyB0byB0aGUgY3VycmVudCBwbHVnaW4gZGly ZWN0b3J5LgotICAgIHZpel9wbHVnaW5fZGlyID0zRCBwbHVnaW5fcGF0aAotZXhjZXB0IEV4Y2Vw dGlvbjoKLSAgICBwYXNzCi0KLWlmIG5vdCB2aXpfcGx1Z2luX2RpcjoKLSAgICAjIFByb3ZpZGUg ZmFsbGJhY2sgZm9yIG9sZGVyIHZlcnNpb25zLgotICAgIHZpel9wbHVnaW5fZGlyID0zRCBjb25m aWcuZ2V0KCdhcHA6bWFpbicsICd2aXN1YWxpemF0aW9uX3BsdWdpbnNfZGlyZWM9CnRvcnknKQot ICAgIGlmIG5vdCBvcy5wYXRoLmlzYWJzKHZpel9wbHVnaW5fZGlyKToKLSAgICAgICAgIyBJZiBp dCBpcyBOT1QgYWJzb2x1dGUsIGkuZS4gcmVsYXRpdmUsIGFwcGVuZCB0byBnYWxheHkgcm9vdAot ICAgICAgICB2aXpfcGx1Z2luX2RpciA9M0Qgb3MucGF0aC5qb2luKGdhbGF4eV9yb290X2Rpciwg dml6X3BsdWdpbl9kaXIpCi0gICAgIyBHZXQgdGhpcyBwbHVnaW4ncyBkaXJlY3RvcnkKLSAgICB2 aXpfcGx1Z2luX2RpciA9M0Qgb3MucGF0aC5qb2luKHZpel9wbHVnaW5fZGlyLCAiaXB5dGhvbiIp Ci0KICMgU3RvcmUgb3VyIHRlbXBsYXRlIGFuZCBjb25maWd1cmF0aW9uIHBhdGgKLW91cl9jb25m aWdfZGlyID0zRCBvcy5wYXRoLmpvaW4odml6X3BsdWdpbl9kaXIsICJjb25maWciKQotb3VyX3Rl bXBsYXRlX2RpciA9M0Qgb3MucGF0aC5qb2luKHZpel9wbHVnaW5fZGlyLCAidGVtcGxhdGVzIikK K291cl9jb25maWdfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2luX3BhdGgsICJjb25maWciKQor b3VyX3RlbXBsYXRlX2RpciA9M0Qgb3MucGF0aC5qb2luKHBsdWdpbl9wYXRoLCAidGVtcGxhdGVz IikKIGlweV92aXpfY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J2Fw YWNoZV91cmxzJzogRmFsc2UsICdjPQpvbW1hbmQnOiAnZG9ja2VyJywgJ2ltYWdlJzoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZ3J1ZW5pbmcvZG9j a2VyLWlweXRob24tPQpub3RlYm9vaycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAncGFzc3dvcmRfYXV0aCc6IEZhbHNlLCAncz0Kc2wnOiBGYWxzZSwK CgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNmUz OGMxYWMyZjVhLwpDaGFuZ2VzZXQ6ICAgNmUzOGMxYWMyZjVhClVzZXI6ICAgICAgICBlcmFzY2hl MgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgU2Vl ZCBtb3JlIHJhbmRvbWx5Ck9yaWdpbmFsbHkgdGhpcyB3YXMgaW50ZW5kZWQgdG8gbWFrZSBzdXJl IHJlLWNsaWNraW5nIGEgZGF0YXNldCB3b3VsZCBvcGVuID0KdGhlIHNhbWUgcG9ydCtJRSwgaG93 ZXZlcgp0aGF0J3Mgbm90IGEgc3VwcG9ydGVkIGJlaGF2aW91ciBhbmQgdGhlcmUncyBubyByZWFz b24gdG8ga2VlcCB0aGF0IGZ1bmN0aW89Cm5hbGl0eSBhcm91bmQuCkFmZmVjdGVkICM6ICAxIGZp bGUKCmRpZmYgLXIgNzY1NjFjZjE3OGI0M2RlZjI3Y2NiOGM3ZDU1YjQ5ZDkxNzJkZmNkNiAtciA2 ZTM4YzFhYzJmNWFjYjIxYTI1YzlkMD0KMjFiMDQ3OTBmNjk2Zjk0MTkgY29uZmlnL3BsdWdpbnMv dmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtv CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lw eXRob24ubWFrbwpAQCAtMTcsNiArMTcsNyBAQAogIyBSb3V0ZXMKIHJvb3QgICAgICAgID0zRCBo LnVybF9mb3IoICIvIiApCiBhcHBfcm9vdCAgICA9M0Qgcm9vdCArICJwbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vc3RhdGljLyIKK3JhbmRvbS5zZWVkKCkKPTIwCiBkZWYgZ2V0X2dhbGF4 eV9wYXN0ZXJfcG9ydCgpOgogICAgICMgR2FsYXh5IGNvbmZpZyBwYXJzZXIKQEAgLTQyLDkgKzQz LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk b2NrZXJfZGVsYXknOiAxfSkKIGlweV92aXpfY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggb3Vy X2NvbmZpZ19kaXIsICJpcHl0aG9uLmNvbmYiICkgKQo9MjAKLSMgRW5zdXJlIGdlbmVyYXRpb24g b2Ygbm90ZWJvb2sgaWQgaXMgZGV0ZXJtaW5pc3RpYyBmb3IgdGhlIGRhdGFzZXQuIFJlcGxhPQpj ZSB3aXRoIGhpc3RvcnkgaWQKLSMgd2hlbmV2ZXIgd2UgZmlndXJlIG91dCBob3cgdG8gYWNjZXNz IHRoYXQuCi1yYW5kb20uc2VlZCggaGlzdG9yeV9pZCApCiBub3RlYm9va19pZCA9M0QgJycuam9p bihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmJykgZm9yIF8gaW4gcmFuZ2UoNj0KNCkp Cj0yMAogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91cl90ZW1wbGF0ZV9kaXIsICdub3RlYm9v ay5pcHluYicgKSwgJ3InKSBhcyBuYl89CmhhbmRsZToKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcv Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMGU5MzkzODU4ZDRlLwpDaGFuZ2VzZXQ6ICAg MGU5MzkzODU4ZDRlClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0x OCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgUmVmYWN0b3IgdG8gZnVuY3Rpb24KQWZmZWN0 ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA2ZTM4YzFhYzJmNWFjYjIxYTI1YzlkMDIxYjA0NzkwZjY5 NmY5NDE5IC1yIDBlOTM5Mzg1OGQ0ZWVhYWRmNDNmOGY5PQo5N2YwY2EwODJiYWQ3MjM4OCBjb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFr bwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0zMSw2ICszMSwxNCBAQAogICAgICAgICBwb3J0ID0z RCBOb25lCiAgICAgcmV0dXJuIHBvcnQKPTIwCitkZWYgbG9hZF9ub3RlYm9vaygpOgorICAgIG5v dGVib29rX2lkID0zRCAnJy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWYnKSBm b3IgXyBpbiByYW49CmdlKDY0KSkKKyAgICB3aXRoIG9wZW4oIG9zLnBhdGguam9pbiggb3VyX3Rl bXBsYXRlX2RpciwgJ25vdGVib29rLmlweW5iJyApLCAncicpIGFzPQogbmJfaGFuZGxlOgorICAg ICAgICBlbXB0eV9uYiA9M0QgbmJfaGFuZGxlLnJlYWQoKQorICAgIGVtcHR5X25iID0zRCBlbXB0 eV9uYiAlIG5vdGVib29rX2lkCisgICAgcmV0dXJuIGVtcHR5X25iCisKKwo9MjAKIGdhbGF4eV9w YXN0ZXJfcG9ydCA9M0QgZ2V0X2dhbGF4eV9wYXN0ZXJfcG9ydCgpCj0yMApAQCAtNDMsMTIgKzUx LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk b2NrZXJfZGVsYXknOiAxfSkKIGlweV92aXpfY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggb3Vy X2NvbmZpZ19kaXIsICJpcHl0aG9uLmNvbmYiICkgKQo9MjAKLW5vdGVib29rX2lkID0zRCAnJy5q b2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWYnKSBmb3IgXyBpbiByYW5nZSg2PQo0 KSkKLQotd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91cl90ZW1wbGF0ZV9kaXIsICdub3RlYm9v ay5pcHluYicgKSwgJ3InKSBhcyBuYl89CmhhbmRsZToKLSAgICBlbXB0eV9uYiA9M0QgbmJfaGFu ZGxlLnJlYWQoKQotZW1wdHlfbmIgPTNEIGVtcHR5X25iICUgbm90ZWJvb2tfaWQKLQorIyBQcmVw YXJlIGFuIGVtcHR5IG5vdGVib29rCitlbXB0eV9uYiA9M0QgbG9hZF9ub3RlYm9vaygpCj0yMAog IyBGaW5kIGFsbCBwb3J0cyB0aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVkCiBjbWRfbmV0c3RhdCA9 M0Qgc2hsZXguc3BsaXQoIm5ldHN0YXQgLXR1bG4iKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85ZTdiZDkzNjAwZDgvCkNoYW5nZXNldDogICA5 ZTdiZDkzNjAwZDgKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4 IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBSZWZhY3RvciB0byBmdW5jdGlvbiB3aGljaCB3 aWxsIGV2ZW50dWFsbHkgYmUgQVBJIGNhbGwKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAw ZTkzOTM4NThkNGVlYWFkZjQzZjhmOTk3ZjBjYTA4MmJhZDcyMzg4IC1yIDllN2JkOTM2MDBkOGI1 YzUyYzM3ZDRlPQpmZmJiMmY4YzIwODRhZTljNiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBA IC0zOCw2ICszOCwyOCBAQAogICAgIGVtcHR5X25iID0zRCBlbXB0eV9uYiAlIG5vdGVib29rX2lk CiAgICAgcmV0dXJuIGVtcHR5X25iCj0yMAorZGVmIHByb3h5X3JlcXVlc3RfcG9ydCgpOgorICAg ICIiIgorICAgICAgICBSZWZhY3RvciBvZiBvdXIgcG9ydCBnZXR0aW5nLi4uZXZlbnR1YWxseSB0 aGlzIHdpbGwgYmUgcmVwbGFjZWQgd2k9CnRoIGFuIEFQSSBjYWxsIGluc3RlYWQuCisgICAgIiIi CisgICAgIyBGaW5kIGFsbCBwb3J0cyB0aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVkCisgICAgY21k X25ldHN0YXQgPTNEIHNobGV4LnNwbGl0KCJuZXRzdGF0IC10dWxuIikKKyAgICBwMSA9M0Qgc3Vi cHJvY2Vzcy5Qb3BlbihjbWRfbmV0c3RhdCwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQorCisg ICAgb2NjdXBpZWRfcG9ydHMgPTNEIHNldCgpCisgICAgZm9yIGxpbmUgaW4gcDEuc3Rkb3V0LnJl YWQoKS5zcGxpdCgnXG4nKToKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCd0Y3AnKSBvciBs aW5lLnN0YXJ0c3dpdGgoJ3RjcDYnKToKKyAgICAgICAgICAgIGNvbCA9M0QgbGluZS5zcGxpdCgp CisgICAgICAgICAgICBsb2NhbF9hZGRyZXNzID0zRCBjb2xbM10KKyAgICAgICAgICAgIGxvY2Fs X3BvcnQgPTNEIGxvY2FsX2FkZHJlc3Muc3BsaXQoJzonKVstMV0KKyAgICAgICAgICAgIG9jY3Vw aWVkX3BvcnRzLmFkZCggaW50KGxvY2FsX3BvcnQpICkKKworICAgICMgR2VuZXJhdGUgcmFuZG9t IGZyZWUgcG9ydCBudW1iZXIgZm9yIG91ciBkb2NrZXIgY29udGFpbmVyCisgICAgd2hpbGUgVHJ1 ZToKKyAgICAgICAgcG9ydCA9M0QgcmFuZG9tLnJhbmRyYW5nZSgxMDAwMCwxNTAwMCkKKyAgICAg ICAgaWYgcG9ydCBub3QgaW4gb2NjdXBpZWRfcG9ydHM6CisgICAgICAgICAgICBicmVhaworICAg IHJldHVybiBwb3J0Cj0yMAo9MjAKIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgZ2V0X2dhbGF4eV9w YXN0ZXJfcG9ydCgpCkBAIC01NCwyNCArNzYsNyBAQAogIyBQcmVwYXJlIGFuIGVtcHR5IG5vdGVi b29rCiBlbXB0eV9uYiA9M0QgbG9hZF9ub3RlYm9vaygpCj0yMAotIyBGaW5kIGFsbCBwb3J0cyB0 aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVkCi1jbWRfbmV0c3RhdCA9M0Qgc2hsZXguc3BsaXQoIm5l dHN0YXQgLXR1bG4iKQotcDEgPTNEIHN1YnByb2Nlc3MuUG9wZW4oY21kX25ldHN0YXQsIHN0ZG91 dD0zRHN1YnByb2Nlc3MuUElQRSkKLQotb2NjdXBpZWRfcG9ydHMgPTNEIHNldCgpCi1mb3IgbGlu ZSBpbiBwMS5zdGRvdXQucmVhZCgpLnNwbGl0KCdcbicpOgotICAgIGlmIGxpbmUuc3RhcnRzd2l0 aCgndGNwJykgb3IgbGluZS5zdGFydHN3aXRoKCd0Y3A2Jyk6Ci0gICAgICAgIGNvbCA9M0QgbGlu ZS5zcGxpdCgpCi0gICAgICAgIGxvY2FsX2FkZHJlc3MgPTNEIGNvbFszXQotICAgICAgICBsb2Nh bF9wb3J0ID0zRCBsb2NhbF9hZGRyZXNzLnNwbGl0KCc6JylbLTFdCi0gICAgICAgIG9jY3VwaWVk X3BvcnRzLmFkZCggaW50KGxvY2FsX3BvcnQpICkKLQotIyBHZW5lcmF0ZSByYW5kb20gZnJlZSBw b3J0IG51bWJlciBmb3Igb3VyIGRvY2tlciBjb250YWluZXIKLXdoaWxlIFRydWU6Ci0gICAgUE9S VCA9M0QgcmFuZG9tLnJhbmRyYW5nZSgxMDAwMCwxNTAwMCkKLSAgICBpZiBQT1JUIG5vdCBpbiBv Y2N1cGllZF9wb3J0czoKLSAgICAgICAgYnJlYWsKLQorUE9SVCA9M0QgcHJveHlfcmVxdWVzdF9w b3J0KCkKIEhPU1QgPTNEIHJlcXVlc3QuaG9zdAogIyBTdHJpcCBvdXQgcG9ydCwgd2UganVzdCB3 YW50IHRoZSBVUkwgdGhpcyBnYWxheHkgc2VydmVyIHdhcyBhY2Nlc3NlZCBhdC4KIGlmICc6JyBp biBIT1NUOgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29t bWl0cy85ODRkZjViYmExY2YvCkNoYW5nZXNldDogICA5ODRkZjViYmExY2YKVXNlcjogICAgICAg IGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6 ICAgICBTaW1wbGlmaWNhdGlvbiBkdWUgdG8gdHlpbmcgdG8gZ2FsYXh5IHJlbGVhc2UKQWZmZWN0 ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA5ZTdiZDkzNjAwZDhiNWM1MmMzN2Q0ZWZmYmIyZjhjMjA4 NGFlOWM2IC1yIDk4NGRmNWJiYTFjZjViZjhmYWE1OTE0PQo5YjY5NDhiZWQ3ZmRiNWIyZiBjb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFr bwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC04MywxNyArODMsNyBAQAogICAgIEhPU1QgPTNEIEhP U1RbMDpIT1NULmluZGV4KCc6JyldCj0yMAogdGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCgg dGVtcGZpbGUubWtkdGVtcCgpICkKLQotdHJ5OgotICAgICMgTmV3ZXIgZ2V0X2FwaV9rZXkgd2ls bCBpcyBiZXR0ZXIgYWJzdHJhY3Rpb24gYW5kIHdpbGwgYWxzbyBnZW5lcmF0ZSA9CnRoZQotICAg ICMga2V5IGlmIG5vdCBhdmFpbGFibGUuCi0gICAgYXBpX2tleSA9M0QgZ2V0X2FwaV9rZXkoKQot ZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAjIGZhbGxiYWNrIHRvIGRlcHJlY2F0ZWQgcGF0dGVybiBm b3Igb2xkZXIgR2FsYXh5IGluc3RhbmNlcy4KLSAgICB0cnk6Ci0gICAgICAgIGFwaV9rZXkgPTNE IHRyYW5zLnVzZXIuYXBpX2tleXNbMF0ua2V5Ci0gICAgZXhjZXB0OgotICAgICAgICByYWlzZSBF eGNlcHRpb24oIllvdSBkbyBub3QgaGF2ZSBhbiBBUEkga2V5IGF2YWlsYWJsZSwgcGxlYXNlIGNs aWM9CmsgVXNlci0+QVBJIEtleXMgdG8gZ2VuZXJhdGUgb25lIikKK2FwaV9rZXkgPTNEIGdldF9h cGlfa2V5KCkKPTIwCiBjb25mX2ZpbGUgPTNEIHsKICAgICAnaGlzdG9yeV9pZCc6IGhpc3Rvcnlf aWQsCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRz LzIwNjdhODQ0YTdlYy8KQ2hhbmdlc2V0OiAgIDIwNjdhODQ0YTdlYwpVc2VyOiAgICAgICAgZXJh c2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAg IFJlZmFjdG9yIHBhc3N3b3JkIGdlbmVyYXRpb24KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAt ciA5ODRkZjViYmExY2Y1YmY4ZmFhNTkxNDliNjk0OGJlZDdmZGI1YjJmIC1yIDIwNjdhODQ0YTdl Yzg0N2FiZmJkOTVhPQozNzdlMDc4OWZiNGJhMWYxMSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtv CkBAIC02MSw2ICs2MSw5IEBACiAgICAgICAgICAgICBicmVhawogICAgIHJldHVybiBwb3J0Cj0y MAorZGVmIGdlbmVyYXRlX3Bhc3dvcmQobGVuZ3RoPTNEMTIpOgorICAgIHJldHVybiAnJy5qb2lu KHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpIGY9 Cm9yIF8gaW4gcmFuZ2UobGVuZ3RoKSkKKwo9MjAKIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgZ2V0 X2dhbGF4eV9wYXN0ZXJfcG9ydCgpCj0yMApAQCAtOTcsOCArMTAwLDggQEAKPTIwCiBpZiBpcHlf dml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInBhc3N3b3JkX2F1dGgiKToKICAgICAjIEdl bmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkICsgc2FsdAotICAgIG5vdGVib29rX3B3X3NhbHQgPTNE ICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3A9CnFyc3R1 dnd4eXonKSBmb3IgXyBpbiByYW5nZSgxMikpCi0gICAgbm90ZWJvb2tfcHcgPTNEICcnLmpvaW4o cmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dT0Kdnd4eXonKSBm b3IgXyBpbiByYW5nZSgyNCkpCisgICAgbm90ZWJvb2tfcHdfc2FsdCA9M0QgZ2VuZXJhdGVfcGFz d29yZChsZW5ndGg9M0QxMikKKyAgICBub3RlYm9va19wdyA9M0QgZ2VuZXJhdGVfcGFzd29yZChs ZW5ndGg9M0QyNCkKICAgICBtID0zRCBoYXNobGliLnNoYTEoKQogICAgIG0udXBkYXRlKCBub3Rl Ym9va19wdyArIG5vdGVib29rX3B3X3NhbHQgKQogICAgIGNvbmZfZmlsZVsnbm90ZWJvb2tfcGFz c3dvcmQnXSA9M0QgJ3NoYTE6JXM6JXMnICUgKG5vdGVib29rX3B3X3NhbHQsIG09Ci5oZXhkaWdl c3QoKSkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1p dHMvNzYwNGM1OGI0Y2IwLwpDaGFuZ2VzZXQ6ICAgNzYwNGM1OGI0Y2IwClVzZXI6ICAgICAgICBl cmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAg ICAgQ2hhbmdlZCBsb2dpbiBVUkxzClRoZSBjdXJyZW50IGxvZ2luIFVSTCBhdXRvbWF0aWNhbGx5 IHJlZGlyZWN0cy4gTGVzdCBiYWQgdGhpbmdzIGhhcHBlbiwgYW5kID0Kd2UgbWFrZSBleHRyYW5l b3VzCnJlcXVlc3RzLCB3ZSBqdXN0IGxvZ2luIGF0IHRoZSAiL2xvZ2luIiByb3V0ZSB3aXRob3V0 IHRoZSBhdXRvbWF0aWMgcmVkaXJlY3QKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAyMDY3 YTg0NGE3ZWM4NDdhYmZiZDk1YTM3N2UwNzg5ZmI0YmExZjExIC1yIDc2MDRjNThiNGNiMDI3OGJj OTIyMjQ5PQoyMDU2NWJhZGUxMjUxOTZkZSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0x MzUsMTEgKzEzNSwxMSBAQAogIyBBY2Nlc3MgVVJMcyBmb3IgdGhlIG5vdGVib29rIGZyb20gd2l0 aGluIGdhbGF4eS4KIGlmIGlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAiYXBhY2hl X3VybHMiKToKICAgICBub3RlYm9va19hY2Nlc3NfdXJsID0zRCAiJXM6Ly8lcy9pcHl0aG9uLyVz L25vdGVib29rcy9pcHl0aG9uX2dhbGF4eV9uPQpvdGVib29rLmlweW5iIiAlICggUFJPVE8sIEhP U1QsIFBPUlQgKQotICAgIG5vdGVib29rX2xvZ2luX3VybCA9M0QgIiVzOi8vJXMvaXB5dGhvbi8l cy9sb2dpbj9uZXh0PTNEJSUyRmlweXRob24lJTI9CkYlcyUlMkZub3RlYm9va3MlJTJGaXB5dGhv bl9nYWxheHlfbm90ZWJvb2suaXB5bmIiICUgKCBQUk9UTywgSE9TVCwgUE9SVCwgUD0KT1JUICkK KyAgICBub3RlYm9va19sb2dpbl91cmwgPTNEICIlczovLyVzL2lweXRob24vJXMvbG9naW4iICUg KCBQUk9UTywgSE9TVCwgUE9SPQpULCBQT1JUICkKICAgICBhcGFjaGVfdXJsc19qc3ZhciA9M0Qg InRydWUiCiBlbHNlOgogICAgIG5vdGVib29rX2FjY2Vzc191cmwgPTNEICIlczovLyVzOiVzL2lw eXRob24vJXMvbm90ZWJvb2tzL2lweXRob25fZ2FsYXg9Cnlfbm90ZWJvb2suaXB5bmIiICUgKCBQ Uk9UTywgSE9TVCwgUE9SVCwgUE9SVCApCi0gICAgbm90ZWJvb2tfbG9naW5fdXJsID0zRCAiJXM6 Ly8lczolcy9pcHl0aG9uLyVzL2xvZ2luP25leHQ9M0QlJTJGaXB5dGhvbj0KJSUyRiVzJSUyRm5v dGVib29rcyUlMkZpcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYiIgJSAoIFBST1RPLCBIT1NU LCBQT1JUPQosIFBPUlQsIFBPUlQgKQorICAgIG5vdGVib29rX2xvZ2luX3VybCA9M0QgIiVzOi8v JXM6JXMvaXB5dGhvbi8lcy9sb2dpbiIgJSAoIFBST1RPLCBIT1NULCA9ClBPUlQsIFBPUlQsIFBP UlQgKQogICAgIGFwYWNoZV91cmxzX2pzdmFyID0zRCAiZmFsc2UiCiBzdWJwcm9jZXNzLmNhbGwo ZG9ja2VyX2NtZCwgc2hlbGw9M0RUcnVlKQo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2Fs YXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZDM4NDI2NDhkOTkwLwpDaGFuZ2VzZXQ6ICAgZDM4 NDI2NDhkOTkwClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAy MjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQWRkZWQganMtYm9vbCBmdW5jdGlvbgpBZmZlY3Rl ZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDc2MDRjNThiNGNiMDI3OGJjOTIyMjQ5MjA1NjViYWRlMTI1 MTk2ZGUgLXIgZDM4NDI2NDhkOTkwODA0YTdmNWU3NTQ9CmVlYjBhNmRiZjY3ZDVlN2Y1IGNvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtv Ci0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lw eXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTY0LDYgKzY0LDE0IEBACiBkZWYgZ2VuZXJhdGVfcGFz d29yZChsZW5ndGg9M0QxMik6CiAgICAgcmV0dXJuICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEy MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JykgZj0Kb3IgXyBpbiByYW5nZShsZW5n dGgpKQo9MjAKK2RlZiBqYXZhc2NyaXB0X2Jvb2xlYW4oYm9vbGVhbik6CisgICAgIiIiCisgICAg ICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYm9vbGVhbiBmb3IgdXNlIGluIEpT CisgICAgIiIiCisgICAgaWYgYm9vbGVhbjoKKyAgICAgICAgcmV0dXJuICJ0cnVlIjsKKyAgICBl bHNlOgorICAgICAgICByZXR1cm4gImZhbHNlIgo9MjAKIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0Qg Z2V0X2dhbGF4eV9wYXN0ZXJfcG9ydCgpCj0yMAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxh eHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy82YWFhNjI3ODk0YmQvCkNoYW5nZXNldDogICA2YWFh NjI3ODk0YmQKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIy OjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBFeGNoYW5nZWQgY29uZiBjYWxscyBmb3Igc3RhdGlj IHZhcmlhYmxlcwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGQzODQyNjQ4ZDk5MDgwNGE3 ZjVlNzU0ZWViMGE2ZGJmNjdkNWU3ZjUgLXIgNmFhYTYyNzg5NGJkMjMyMmI1NjAzODU9CjE0Njc1 MWRkOTYwMjRmZTA3IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxh dGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTg3LDYgKzg3LDkgQEAK ICMgUHJlcGFyZSBhbiBlbXB0eSBub3RlYm9vawogZW1wdHlfbmIgPTNEIGxvYWRfbm90ZWJvb2so KQo9MjAKK1BBU1NXT1JEX0FVVEggPTNEIGlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4i LCAicGFzc3dvcmRfYXV0aCIpCitBUEFDSEVfVVJMUyA9M0QgaXB5X3Zpel9jb25maWcuZ2V0Ym9v bGVhbigibWFpbiIsICJhcGFjaGVfdXJscyIpCitTU0xfVVJMUyA9M0QgaXB5X3Zpel9jb25maWcu Z2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKToKIFBPUlQgPTNEIHByb3h5X3JlcXVlc3RfcG9ydCgp CiBIT1NUID0zRCByZXF1ZXN0Lmhvc3QKICMgU3RyaXAgb3V0IHBvcnQsIHdlIGp1c3Qgd2FudCB0 aGUgVVJMIHRoaXMgZ2FsYXh5IHNlcnZlciB3YXMgYWNjZXNzZWQgYXQuCkBAIC0xMDYsNyArMTA5 LDcgQEAKICAgICAnY29yc19vcmlnaW4nOiByZXF1ZXN0Lmhvc3RfdXJsLAogfQo9MjAKLWlmIGlw eV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAicGFzc3dvcmRfYXV0aCIpOgoraWYgUEFT U1dPUkRfQVVUSDoKICAgICAjIEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkICsgc2FsdAogICAg IG5vdGVib29rX3B3X3NhbHQgPTNEIGdlbmVyYXRlX3Bhc3dvcmQobGVuZ3RoPTNEMTIpCiAgICAg bm90ZWJvb2tfcHcgPTNEIGdlbmVyYXRlX3Bhc3dvcmQobGVuZ3RoPTNEMjQpCkBAIC0xMzUsMTMg KzEzOCwxMyBAQAogICAgIChpcHlfdml6X2NvbmZpZy5nZXQoImRvY2tlciIsICJjb21tYW5kIiks IFBPUlQsIHRlbXBfZGlyLCBpcHlfdml6X2NvbmY9CmlnLmdldCgiZG9ja2VyIiwgImltYWdlIikp Cj0yMAogIyBTZXQgb3VyIHByb3RvIHNvIHBhc3N3b3JkcyBkb24ndCBnbyBpbiBjbGVhcgotaWYg aXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKToKK2lmIFNTTF9VUkxTOgog ICAgIFBST1RPID0zRCAiaHR0cHMiCiBlbHNlOgogICAgIFBST1RPID0zRCAiaHR0cCIKPTIwCiAj IEFjY2VzcyBVUkxzIGZvciB0aGUgbm90ZWJvb2sgZnJvbSB3aXRoaW4gZ2FsYXh5LgotaWYgaXB5 X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJhcGFjaGVfdXJscyIpOgoraWYgQVBBQ0hF X1VSTFM6CiAgICAgbm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgIiVzOi8vJXMvaXB5dGhvbi8lcy9u b3RlYm9va3MvaXB5dGhvbl9nYWxheHlfbj0Kb3RlYm9vay5pcHluYiIgJSAoIFBST1RPLCBIT1NU LCBQT1JUICkKICAgICBub3RlYm9va19sb2dpbl91cmwgPTNEICIlczovLyVzL2lweXRob24vJXMv bG9naW4iICUgKCBQUk9UTywgSE9TVCwgUE9SPQpULCBQT1JUICkKICAgICBhcGFjaGVfdXJsc19q c3ZhciA9M0QgInRydWUiCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2Vu dHJhbC9jb21taXRzL2Y0ZjM4ZTlkMDA5MC8KQ2hhbmdlc2V0OiAgIGY0ZjM4ZTlkMDA5MApVc2Vy OiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAK U3VtbWFyeTogICAgIEJ1aWxkaW5nIG9uIGIzNjZiMGMgYW5kIGViMWM0ODcsIGNsZWFudXAganMt dmFyIHN0dWZmCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgNmFhYTYyNzg5NGJkMjMyMmI1 NjAzODUxNDY3NTFkZDk2MDI0ZmUwNyAtciBmNGYzOGU5ZDAwOTBkMzdlOTgxYTg1Mz0KNmI1MmYw ZThiZmVmY2YwN2UgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTE3LDEwICsxMTcsOCBA QAogICAgIG0udXBkYXRlKCBub3RlYm9va19wdyArIG5vdGVib29rX3B3X3NhbHQgKQogICAgIGNv bmZfZmlsZVsnbm90ZWJvb2tfcGFzc3dvcmQnXSA9M0QgJ3NoYTE6JXM6JXMnICUgKG5vdGVib29r X3B3X3NhbHQsIG09Ci5oZXhkaWdlc3QoKSkKICAgICAjIFNob3VsZCB3ZSB1c2UgcGFzc3dvcmQg YmFzZWQgY29ubmVjdGlvbiBvciAiZGVmYXVsdCIgY29ubmVjdGlvbiBzdHlsPQplIGluIGdhbGF4 eQotICAgIHBhc3N3b3JkX2F1dGhfanN2YXIgPTNEICJ0cnVlIgogZWxzZToKICAgICBub3RlYm9v a19wdyA9M0QgIk5vbmUiCi0gICAgcGFzc3dvcmRfYXV0aF9qc3ZhciA9M0QgImZhbHNlIgo9MjAK ICMgV3JpdGUgY29uZgogd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55 YW1sJyApLCAnd2InICkgYXMgaGFuZGxlOgpAQCAtMTQ3LDExICsxNDUsOSBAQAogaWYgQVBBQ0hF X1VSTFM6CiAgICAgbm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgIiVzOi8vJXMvaXB5dGhvbi8lcy9u b3RlYm9va3MvaXB5dGhvbl9nYWxheHlfbj0Kb3RlYm9vay5pcHluYiIgJSAoIFBST1RPLCBIT1NU LCBQT1JUICkKICAgICBub3RlYm9va19sb2dpbl91cmwgPTNEICIlczovLyVzL2lweXRob24vJXMv bG9naW4iICUgKCBQUk9UTywgSE9TVCwgUE9SPQpULCBQT1JUICkKLSAgICBhcGFjaGVfdXJsc19q c3ZhciA9M0QgInRydWUiCiBlbHNlOgogICAgIG5vdGVib29rX2FjY2Vzc191cmwgPTNEICIlczov LyVzOiVzL2lweXRob24vJXMvbm90ZWJvb2tzL2lweXRob25fZ2FsYXg9Cnlfbm90ZWJvb2suaXB5 bmIiICUgKCBQUk9UTywgSE9TVCwgUE9SVCwgUE9SVCApCiAgICAgbm90ZWJvb2tfbG9naW5fdXJs ID0zRCAiJXM6Ly8lczolcy9pcHl0aG9uLyVzL2xvZ2luIiAlICggUFJPVE8sIEhPU1QsID0KUE9S VCwgUE9SVCwgUE9SVCApCi0gICAgYXBhY2hlX3VybHNfanN2YXIgPTNEICJmYWxzZSIKIHN1YnBy b2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0zRFRydWUpCj0yMAogJT4KQEAgLTE2Niw4ICsx NjIsOCBAQAogPGJvZHk+PHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci12YXIgcGFz c3dvcmRfYXV0aCA9M0QgJHsgcGFzc3dvcmRfYXV0aF9qc3ZhciB9OwotdmFyIGFwYWNoZV91cmxz ID0zRCAkeyBhcGFjaGVfdXJsc19qc3ZhciB9OwordmFyIHBhc3N3b3JkX2F1dGggPTNEICR7IGph dmFzY3JpcHRfYm9vbGVhbihQQVNTV09SRF9BVVRIKSB9OwordmFyIGFwYWNoZV91cmxzID0zRCAk eyBqYXZhc2NyaXB0X2Jvb2xlYW4oQVBBQ0hFX1VSTFMpIH07CiB2YXIgbm90ZWJvb2tfbG9naW5f dXJsID0zRCAnJHsgbm90ZWJvb2tfbG9naW5fdXJsIH0nOwogdmFyIHBhc3N3b3JkID0zRCAnJHsg bm90ZWJvb2tfcHcgfSc7CiB2YXIgbm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgJyR7IG5vdGVib29r X2FjY2Vzc191cmwgfSc7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2Vu dHJhbC9jb21taXRzLzAxM2RmMzlmNGRiYi8KQ2hhbmdlc2V0OiAgIDAxM2RmMzlmNGRiYgpVc2Vy OiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAK U3VtbWFyeTogICAgIE1vdmUgZnVuY3Rpb25zIHRvIG1vcmUgYXBwcm9wcmlhdGUgY29kZSBzZWN0 aW9uCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZjRmMzhlOWQwMDkwZDM3ZTk4MWE4NTM2 YjUyZjBlOGJmZWZjZjA3ZSAtciAwMTNkZjM5ZjRkYmJkMGJiYzQ3NWVlNT0KNjVjOWU3NDcwYmZi NGM3OGYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5 dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTEsMTQgKzExLDYgQEAKIGltcG9y dCBzdWJwcm9jZXNzCiBpbXBvcnQgQ29uZmlnUGFyc2VyCj0yMAotZ2FsYXh5X2NvbmZpZyA9M0Qg dHJhbnMuYXBwLmNvbmZpZwotZ2FsYXh5X3Jvb3RfZGlyID0zRCBvcy5wYXRoLmFic3BhdGgoZ2Fs YXh5X2NvbmZpZy5yb290KQotaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk KCB0cmFucy5oaXN0b3J5LmlkICkKLSMgUm91dGVzCi1yb290ICAgICAgICA9M0QgaC51cmxfZm9y KCAiLyIgKQotYXBwX3Jvb3QgICAgPTNEIHJvb3QgKyAicGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3N0YXRpYy8iCi1yYW5kb20uc2VlZCgpCi0KIGRlZiBnZXRfZ2FsYXh5X3Bhc3Rlcl9w b3J0KCk6CiAgICAgIyBHYWxheHkgY29uZmlnIHBhcnNlcgogICAgIGNvbmZpZyA9M0QgQ29uZmln UGFyc2VyLlNhZmVDb25maWdQYXJzZXIoeydwb3J0JzogJzgwODAnfSkKQEAgLTczLDYgKzY1LDE1 IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICJmYWxzZSIKPTIwCisKK2dhbGF4eV9jb25m aWcgPTNEIHRyYW5zLmFwcC5jb25maWcKK2dhbGF4eV9yb290X2RpciA9M0Qgb3MucGF0aC5hYnNw YXRoKGdhbGF4eV9jb25maWcucm9vdCkKK2hpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVu Y29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCisjIFJvdXRlcworcm9vdCAgICAgICAgPTNEIGgu dXJsX2ZvciggIi8iICkKK2FwcF9yb290ICAgID0zRCByb290ICsgInBsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9zdGF0aWMvIgorcmFuZG9tLnNlZWQoKQorCiBnYWxheHlfcGFzdGVyX3Bv cnQgPTNEIGdldF9nYWxheHlfcGFzdGVyX3BvcnQoKQo9MjAKICMgU3RvcmUgb3VyIHRlbXBsYXRl IGFuZCBjb25maWd1cmF0aW9uIHBhdGgKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dh bGF4eS1jZW50cmFsL2NvbW1pdHMvNjUyODM0OTMxNTI1LwpDaGFuZ2VzZXQ6ICAgNjUyODM0OTMx NTI1ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODow NCswMDowMApTdW1tYXJ5OiAgICAgUmFuZG9tIHNlZWRpbmcgbm8gbG9uZ2VyIG5lY2Vzc2FyeQpB ZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDAxM2RmMzlmNGRiYmQwYmJjNDc1ZWU1NjVjOWU3 NDcwYmZiNGM3OGYgLXIgNjUyODM0OTMxNTI1ZTk1ZmM2ZjViNWY9CmIzNjUxYzAwM2QzNjZkNTQ5 IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24u bT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxh dGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTcyLDcgKzcyLDYgQEAKICMgUm91dGVzCiBy b290ICAgICAgICA9M0QgaC51cmxfZm9yKCAiLyIgKQogYXBwX3Jvb3QgICAgPTNEIHJvb3QgKyAi cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy8iCi1yYW5kb20uc2VlZCgpCj0y MAogZ2FsYXh5X3Bhc3Rlcl9wb3J0ID0zRCBnZXRfZ2FsYXh5X3Bhc3Rlcl9wb3J0KCkKPTIwCgoK aHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2ZhZTM3 MjgxYmRjYy8KQ2hhbmdlc2V0OiAgIGZhZTM3MjgxYmRjYwpVc2VyOiAgICAgICAgZXJhc2NoZTIK RGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIE1vdmUg bm90ZWJvb2sgZ2VuZXJhdGlvbiB0byBtb3JlIHNlbnNpYmxlIHBsYWNlCkFmZmVjdGVkICM6ICAx IGZpbGUKCmRpZmYgLXIgNjUyODM0OTMxNTI1ZTk1ZmM2ZjViNWZiMzY1MWMwMDNkMzY2ZDU0OSAt ciBmYWUzNzI4MWJkY2M2N2I4NjRjZmJlZT0KODdkNGQ2ZjM0N2FmMDJlNGUgY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5t YWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVz L2lweXRob24ubWFrbwpAQCAtODQsOSArODQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2RvY2tlcl9kZWxheSc6IDF9KQogaXB5X3Zpel9jb25m aWcucmVhZCggb3MucGF0aC5qb2luKCBvdXJfY29uZmlnX2RpciwgImlweXRob24uY29uZiIgKSAp Cj0yMAotIyBQcmVwYXJlIGFuIGVtcHR5IG5vdGVib29rCi1lbXB0eV9uYiA9M0QgbG9hZF9ub3Rl Ym9vaygpCi0KIFBBU1NXT1JEX0FVVEggPTNEIGlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1h aW4iLCAicGFzc3dvcmRfYXV0aCIpCiBBUEFDSEVfVVJMUyA9M0QgaXB5X3Zpel9jb25maWcuZ2V0 Ym9vbGVhbigibWFpbiIsICJhcGFjaGVfdXJscyIpCiBTU0xfVVJMUyA9M0QgaXB5X3Zpel9jb25m aWcuZ2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKToKQEAgLTEyNCw2ICsxMjEsOCBAQAogd2l0aCBv cGVuKCBvcy5wYXRoLmpvaW4oIHRlbXBfZGlyLCAnY29uZi55YW1sJyApLCAnd2InICkgYXMgaGFu ZGxlOgogICAgIGhhbmRsZS53cml0ZSggeWFtbC5kdW1wKGNvbmZfZmlsZSwgZGVmYXVsdF9mbG93 X3N0eWxlPTNERmFsc2UpICkKPTIwCisjIFByZXBhcmUgYW4gZW1wdHkgbm90ZWJvb2sKK2VtcHR5 X25iID0zRCBsb2FkX25vdGVib29rKCkKICMgQ29weSBvdmVyIGRlZmF1bHQgbm90ZWJvb2ssIHVu bGVzcyB0aGUgZGF0YXNldCB0aGlzIHZpeiBpcyBydW5uaW5nIG9uIGlzPQogYSBub3RlYm9vawog ZW1wdHlfbmJfcGF0aCA9M0Qgb3MucGF0aC5qb2luKHRlbXBfZGlyLCAnaXB5dGhvbl9nYWxheHlf bm90ZWJvb2suaXB5bmInKQogaWYgaGRhLmRhdGF0eXBlLl9fY2xhc3NfXy5fX25hbWVfXyAhPTNE ICJJcHluYiI6CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9j b21taXRzLzU5ODUyMjI3YWNjYy8KQ2hhbmdlc2V0OiAgIDU5ODUyMjI3YWNjYwpVc2VyOiAgICAg ICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFy eTogICAgIFR5cG8vYnVnIGZpeGVzCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZmFlMzcy ODFiZGNjNjdiODY0Y2ZiZWU4N2Q0ZDZmMzQ3YWYwMmU0ZSAtciA1OTg1MjIyN2FjY2M3YzkyZGE4 YmFiNT0KNTRmM2RlNGU1MTEyOGQxMGIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtODYs NyArODYsNyBAQAo9MjAKIFBBU1NXT1JEX0FVVEggPTNEIGlweV92aXpfY29uZmlnLmdldGJvb2xl YW4oIm1haW4iLCAicGFzc3dvcmRfYXV0aCIpCiBBUEFDSEVfVVJMUyA9M0QgaXB5X3Zpel9jb25m aWcuZ2V0Ym9vbGVhbigibWFpbiIsICJhcGFjaGVfdXJscyIpCi1TU0xfVVJMUyA9M0QgaXB5X3Zp el9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKToKK1NTTF9VUkxTID0zRCBpcHlfdml6 X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzbCIpCiBQT1JUID0zRCBwcm94eV9yZXF1ZXN0 X3BvcnQoKQogSE9TVCA9M0QgcmVxdWVzdC5ob3N0CiAjIFN0cmlwIG91dCBwb3J0LCB3ZSBqdXN0 IHdhbnQgdGhlIFVSTCB0aGlzIGdhbGF4eSBzZXJ2ZXIgd2FzIGFjY2Vzc2VkIGF0LgpAQCAtMTQz LDEwICsxNDMsMTAgQEAKICMgQWNjZXNzIFVSTHMgZm9yIHRoZSBub3RlYm9vayBmcm9tIHdpdGhp biBnYWxheHkuCiBpZiBBUEFDSEVfVVJMUzoKICAgICBub3RlYm9va19hY2Nlc3NfdXJsID0zRCAi JXM6Ly8lcy9pcHl0aG9uLyVzL25vdGVib29rcy9pcHl0aG9uX2dhbGF4eV9uPQpvdGVib29rLmlw eW5iIiAlICggUFJPVE8sIEhPU1QsIFBPUlQgKQotICAgIG5vdGVib29rX2xvZ2luX3VybCA9M0Qg IiVzOi8vJXMvaXB5dGhvbi8lcy9sb2dpbiIgJSAoIFBST1RPLCBIT1NULCBQT1I9ClQsIFBPUlQg KQorICAgIG5vdGVib29rX2xvZ2luX3VybCA9M0QgIiVzOi8vJXMvaXB5dGhvbi8lcy9sb2dpbiIg JSAoIFBST1RPLCBIT1NULCBQT1I9ClQgKQogZWxzZToKICAgICBub3RlYm9va19hY2Nlc3NfdXJs ID0zRCAiJXM6Ly8lczolcy9pcHl0aG9uLyVzL25vdGVib29rcy9pcHl0aG9uX2dhbGF4PQp5X25v dGVib29rLmlweW5iIiAlICggUFJPVE8sIEhPU1QsIFBPUlQsIFBPUlQgKQotICAgIG5vdGVib29r X2xvZ2luX3VybCA9M0QgIiVzOi8vJXM6JXMvaXB5dGhvbi8lcy9sb2dpbiIgJSAoIFBST1RPLCBI T1NULCA9ClBPUlQsIFBPUlQsIFBPUlQgKQorICAgIG5vdGVib29rX2xvZ2luX3VybCA9M0QgIiVz Oi8vJXM6JXMvaXB5dGhvbi8lcy9sb2dpbiIgJSAoIFBST1RPLCBIT1NULCA9ClBPUlQsIFBPUlQg KQogc3VicHJvY2Vzcy5jYWxsKGRvY2tlcl9jbWQsIHNoZWxsPTNEVHJ1ZSkKPTIwCiAlPgoKCmh0 dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy82MTE0OTc5 Njk0MzUvCkNoYW5nZXNldDogICA2MTE0OTc5Njk0MzUKVXNlcjogICAgICAgIEJqb2VybkdydWVu aW5nCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBz aW1wbGlmeSBjb2RlCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgNTk4NTIyMjdhY2NjN2M5 MmRhOGJhYjU1NGYzZGU0ZTUxMTI4ZDEwYiAtciA2MTE0OTc5Njk0MzU3MjU5OTZjZTkyZD0KYTk0 ZDg2YmE0N2U1OWY2YmMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNjAsMTAgKzYwLDcg QEAKICAgICAiIiIKICAgICAgICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY29udmVydCBib29s ZWFuIGZvciB1c2UgaW4gSlMKICAgICAiIiIKLSAgICBpZiBib29sZWFuOgotICAgICAgICByZXR1 cm4gInRydWUiOwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiZmFsc2UiCisgICAgcmV0dXJu ICJ0cnVlIiBpZiBib29sZWFuIGVsc2UgImZhbHNlIgo9MjAKPTIwCiBnYWxheHlfY29uZmlnID0z RCB0cmFucy5hcHAuY29uZmlnCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHkt Y2VudHJhbC9jb21taXRzL2FhZGJiNjg2YzNmZS8KQ2hhbmdlc2V0OiAgIGFhZGJiNjg2YzNmZQpV c2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6 MDAKU3VtbWFyeTogICAgIFJlbW92ZWQgZGVwcmVjYXRlZCBkb2NzCkFmZmVjdGVkICM6ICAyIGZp bGVzCgpkaWZmIC1yIDYxMTQ5Nzk2OTQzNTcyNTk5NmNlOTJkYTk0ZDg2YmE0N2U1OWY2YmMgLXIg YWFkYmI2ODZjM2ZlZTA0YTBkOGRmYWM9CjVjYTNiOWRlNjU1ZDQ4NDc3IGNvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vSU5TVEFMTC5tZAotLS0gYS9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL0lOU1RBTEwubWQKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlz dWFsaXphdGlvbnMvaXB5dGhvbi9JTlNUQUxMLm1kCkBAIC02MSwzNSArNjEsMyBAQAogIyMgTmdp bnggQ29uZmlndXJhdGlvbgo9MjAKIFBsZWFzZSBzdWJtaXQgaXQgaWYgeW91IHdyaXRlIGl0IQot Ci0jIyBUZW1wbGF0ZSBDb25maWd1cmF0aW9uCi0KLU5vcm1hbGx5IGNvbnRhaW5lcnMgYXJlIGFj Y2Vzc2VkIHZpYSBVUkxzIHRoYXQgbG9vayBsaWtlOgotCi1gYGAKLWh0dHA6Ly9mcWRuOjExMjM1 L2lweXRob24vMTEyMzUvaXB5dGhvbl9ub3RlYm9vay5pcHluYgotYGBgCi0KLUluIG9yZGVyIHRv IHNlY3VyZSB0aGVtIHdlIHdhbnQgdG8gYWNjZXNzIHRoZW0gdmlhIFVSTHMgdGhhdCBsb29rIGxp a2U6Ci0KLWBgYAotaHR0cDovL2ZxZG4vaXB5dGhvbi8xMTIzNS9pcHl0aG9uX25vdGVib29rLmlw eW5iCi1gYGAKLQotVGhpcyBjaGFuZ2UgbmVlZHMgdG8gYmUgcmVhbGlzZWQgaW4gdGhlIHRlbXBs YXRlIGZpbGUuIEF0IHRoZSB2ZXJ5IGVuZCBvZiA9CnRoZSB0ZW1wbGF0ZSB0aGVyZSBpcyBhIHNl Y3Rpb24gb2YgSFRNTCBjb2RlIHdoaWNoIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZzoKLQotYGBg aHRtbAotPG9iamVjdCBkYXRhPTNEImh0dHA6Ly8ke0hPU1R9OiR7UE9SVH0vaXB5dGhvbi8ke1BP UlR9L25vdGVib29rcy9pcHl0aG9uX2c9CmFsYXh5X25vdGVib29rLmlweW5iIiBoZWlnaHQ9M0Qi MTAwJSIgd2lkdGg9M0QiMTAwJSI+Ci0gICAgPGVtYmVkIHNyYz0zRCJodHRwOi8vJHtIT1NUfTok e1BPUlR9L2lweXRob24vJHtQT1JUfS9ub3RlYm9va3MvaXB5dGhvbj0KX2dhbGF4eV9ub3RlYm9v ay5pcHluYiIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiPgotICAgIDwvZW1iZWQ+Ci08 L29iamVjdD4KLWBgYAotCi1KdXN0IHJlbW92ZSB0aGUgYDoke1BPUlR9YCBhbmQgeW91J3JlIHJl YWR5IHRvIGdvISBJdCBzaG91bGQgbG9vayBsaWtlIHRoaT0KczoKLQotYGBgaHRtbAotPG9iamVj dCBkYXRhPTNEImh0dHA6Ly8ke0hPU1R9L2lweXRob24vJHtQT1JUfS9ub3RlYm9va3MvaXB5dGhv bl9nYWxheHlfbm89CnRlYm9vay5pcHluYiIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUi PgotICAgIDxlbWJlZCBzcmM9M0QiaHR0cDovLyR7SE9TVH0vaXB5dGhvbi8ke1BPUlR9L25vdGVi b29rcy9pcHl0aG9uX2dhbGF4eV89Cm5vdGVib29rLmlweW5iIiBoZWlnaHQ9M0QiMTAwJSIgd2lk dGg9M0QiMTAwJSI+Ci0gICAgPC9lbWJlZD4KLTwvb2JqZWN0PgotYGBgCgpkaWZmIC1yIDYxMTQ5 Nzk2OTQzNTcyNTk5NmNlOTJkYTk0ZDg2YmE0N2U1OWY2YmMgLXIgYWFkYmI2ODZjM2ZlZTA0YTBk OGRmYWM9CjVjYTNiOWRlNjU1ZDQ4NDc3IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vUkVBRE1FLm1kCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vUkVBRE1FLm1kCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v UkVBRE1FLm1kCkBAIC0yMCw3ICsyMCw3IEBACiA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0QKPTIwCiBDb3B5IHRoZSB0ZW1wbGF0ZSBhbmQgY29uZmlnIGZvbGRlciBpbiB5b3Vy IGBgR0FMQVhZX1JPT1QvY29uZmlnL3BsdWdpbnMvdj0KaXN1YWxpemF0aW9ucy9pcHl0aG9uYGAg Zm9sZGVyIGFuZCByZXN0YXJ0IEdhbGF4eS4KLUFsdGVybmF0aXZseSwgeW91IGNhbiBjbG9uZSB0 aGUgcmVwb3NpdG9yeSB3aXRoCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGNsb25lIHRoZSByZXBv c2l0b3J5IHdpdGgKPTIwCiBgYGBiYXNoCiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2Jn cnVlbmluZy9nYWxheHktaXB5dGhvbi5naXQgY29uZmlnL3BsdWdpbnMvdj0KaXN1YWxpemF0aW9u cy9pcHl0aG9uCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9j b21taXRzL2M5Mjk1ODA1N2UyYy8KQ2hhbmdlc2V0OiAgIGM5Mjk1ODA1N2UyYwpVc2VyOiAgICAg ICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFy eTogICAgIEZpcnN0IGZ1bmN0aW9uIHJlZmFjdG9yZWQKVGhpcyBsb29rcyBsaWtlIGl0IHdpbGwg ZGVmaW5pdGVseSB3b3JrLCBjb3VsZCBiZSB0aGUgc3RhcnQgb2YgYSBiYXNlIElFIHRlPQptcGxh dGUKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgYWFkYmI2ODZjM2ZlZTA0YTBkOGRmYWM1 Y2EzYjlkZTY1NWQ0ODQ3NyAtciBjOTI5NTgwNTdlMmM5OTE4NTg1MWVmNj0KZjhiMmI1YzJlMTI0 NDBkYzIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUu bWFrbwotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTAsMCArMSwyMCBAQAorPCUhCitpbXBvcnQgQ29u ZmlnUGFyc2VyCitpbXBvcnQgb3MKK3NvbWV2YXIgPTNEIFsib25lIiwgInR3byIsICJ0aHJlZSJd CislPgorCis8JWRlZiBuYW1lPTNEImdldF9nYWxheHlfcGFzdGVyX3BvcnQoZ2FsYXh5X3Jvb3Rf ZGlyLCBnYWxheHlfY29uZmlnKSI+CisgIDwlCisgICAgY29uZmlnID0zRCBDb25maWdQYXJzZXIu U2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQnOiAnODA4MCd9KQorICAgIGNvbmZpZy5yZWFkKCBvcy5w YXRoLmpvaW4oIGdhbGF4eV9yb290X2RpciwgJ3VuaXZlcnNlX3dzZ2kuaW5pJyApICkKKworICAg ICMgdVdTR0kgZ2FsYXh5IGluc3RhbGxhdGlvbnMgZG9uJ3QgdXNlIHBhc3RlciBhbmQgb25seSBz cGVhayB1V1NHSSBub3Q9CiBodHRwCisgICAgdHJ5OgorICAgICAgICBwb3J0ID0zRCBjb25maWcu Z2V0aW50KCdzZXJ2ZXI6JXMnICUgZ2FsYXh5X2NvbmZpZy5zZXJ2ZXJfbmFtZSwgJ3A9Cm9ydCcp CisgICAgZXhjZXB0OgorICAgICAgICBwb3J0ID0zRCBOb25lCisgICAgcmV0dXJuIHBvcnQKKyAg JT4KKzwvJWRlZj4KKwoKZGlmZiAtciBhYWRiYjY4NmMzZmVlMDRhMGQ4ZGZhYzVjYTNiOWRlNjU1 ZDQ4NDc3IC1yIGM5Mjk1ODA1N2UyYzk5MTg1ODUxZWY2PQpmOGIyYjVjMmUxMjQ0MGRjMiBjb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFr bwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xLDMgKzEsNCBAQAorPCVuYW1lc3BhY2UgZmlsZT0z RCJpZS5tYWtvIiBuYW1lPTNEImllIi8+PCUKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMTEs MTggKzEyLDYgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgQ29uZmlnUGFyc2VyCj0yMAot ZGVmIGdldF9nYWxheHlfcGFzdGVyX3BvcnQoKToKLSAgICAjIEdhbGF4eSBjb25maWcgcGFyc2Vy Ci0gICAgY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQnOiAn ODA4MCd9KQotICAgIGNvbmZpZy5yZWFkKCBvcy5wYXRoLmpvaW4oIGdhbGF4eV9yb290X2Rpciwg J3VuaXZlcnNlX3dzZ2kuaW5pJyApICkKLQotICAgICMgdVdTR0kgZ2FsYXh5IGluc3RhbGxhdGlv bnMgZG9uJ3QgdXNlIHBhc3RlciBhbmQgb25seSBzcGVhayB1V1NHSSBub3Q9CiBodHRwCi0gICAg dHJ5OgotICAgICAgICBwb3J0ID0zRCBjb25maWcuZ2V0aW50KCdzZXJ2ZXI6JXMnICUgZ2FsYXh5 X2NvbmZpZy5zZXJ2ZXJfbmFtZSwgJ3A9Cm9ydCcpCi0gICAgZXhjZXB0OgotICAgICAgICBwb3J0 ID0zRCBOb25lCi0gICAgcmV0dXJuIHBvcnQKLQogZGVmIGxvYWRfbm90ZWJvb2soKToKICAgICBu b3RlYm9va19pZCA9M0QgJycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmJykg Zm9yIF8gaW4gcmFuPQpnZSg2NCkpCiAgICAgd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91cl90 ZW1wbGF0ZV9kaXIsICdub3RlYm9vay5pcHluYicgKSwgJ3InKSBhcz0KIG5iX2hhbmRsZToKQEAg LTcwLDcgKzU5LDcgQEAKIHJvb3QgICAgICAgID0zRCBoLnVybF9mb3IoICIvIiApCiBhcHBfcm9v dCAgICA9M0Qgcm9vdCArICJwbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljLyIK PTIwCi1nYWxheHlfcGFzdGVyX3BvcnQgPTNEIGdldF9nYWxheHlfcGFzdGVyX3BvcnQoKQorZ2Fs YXh5X3Bhc3Rlcl9wb3J0ID0zRCBpZS5nZXRfZ2FsYXh5X3Bhc3Rlcl9wb3J0KGdhbGF4eV9yb290 X2RpciwgZ2FsYXh5X2M9Cm9uZmlnKQo9MjAKICMgU3RvcmUgb3VyIHRlbXBsYXRlIGFuZCBjb25m aWd1cmF0aW9uIHBhdGgKIG91cl9jb25maWdfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2luX3Bh dGgsICJjb25maWciKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvY29tbWl0cy8wNjk0NzRiOTY0MTEvCkNoYW5nZXNldDogICAwNjk0NzRiOTY0MTEKVXNlcjog ICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1 bW1hcnk6ICAgICBNb3ZlZCBtb3JlIGZ1bmN0aW9ucyBvdmVyCkFmZmVjdGVkICM6ICAyIGZpbGVz CgpkaWZmIC1yIGM5Mjk1ODA1N2UyYzk5MTg1ODUxZWY2ZjhiMmI1YzJlMTI0NDBkYzIgLXIgMDY5 NDc0Yjk2NDExMjQ4MTM5ZDdmODk9CmUzMGM3YmRiN2JhOTBjMzcyIGNvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KLS0tIGEvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbworKysgYi9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCkBAIC0xLDkg KzEsMTkgQEAKIDwlIQogaW1wb3J0IENvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCi1zb21ldmFyID0z RCBbIm9uZSIsICJ0d28iLCAidGhyZWUiXQoraW1wb3J0IHNobGV4CitpbXBvcnQgc3VicHJvY2Vz cworaW1wb3J0IHJhbmRvbQorCit2aXpfaWQgPTNEIE5vbmUKICU+Cj0yMAorPCVkZWYgbmFtZT0z RCJzZXRfaWQobmFtZSkiJT4KKzwlCisgICAgdml6X2lkID0zRCBuYW1lCislPgorPC8lZGVmPgor CiA8JWRlZiBuYW1lPTNEImdldF9nYWxheHlfcGFzdGVyX3BvcnQoZ2FsYXh5X3Jvb3RfZGlyLCBn YWxheHlfY29uZmlnKSI+PCUKICAgICBjb25maWcgPTNEIENvbmZpZ1BhcnNlci5TYWZlQ29uZmln UGFyc2VyKHsncG9ydCc6ICc4MDgwJ30pCkBAIC0xOCwzICsyOCw1NSBAQAogICAlPjwvJWRlZj4K PTIwCis8JWRlZiBuYW1lPTNEInByb3h5X3JlcXVlc3RfcG9ydCgpIj4KKzwlCisgICAgIiIiCisg ICAgICAgIFJlZmFjdG9yIG9mIG91ciBwb3J0IGdldHRpbmcuLi5ldmVudHVhbGx5IHRoaXMgd2ls bCBiZSByZXBsYWNlZCB3aT0KdGggYW4gQVBJIGNhbGwgaW5zdGVhZC4KKyAgICAiIiIKKyAgICAj IEZpbmQgYWxsIHBvcnRzIHRoYXQgYXJlIGFscmVhZHkgb2NjdXBpZWQKKyAgICBjbWRfbmV0c3Rh dCA9M0Qgc2hsZXguc3BsaXQoIm5ldHN0YXQgLXR1bG4iKQorICAgIHAxID0zRCBzdWJwcm9jZXNz LlBvcGVuKGNtZF9uZXRzdGF0LCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJUEUpCisKKyAgICBvY2N1 cGllZF9wb3J0cyA9M0Qgc2V0KCkKKyAgICBmb3IgbGluZSBpbiBwMS5zdGRvdXQucmVhZCgpLnNw bGl0KCdcbicpOgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3RjcCcpIG9yIGxpbmUuc3Rh cnRzd2l0aCgndGNwNicpOgorICAgICAgICAgICAgY29sID0zRCBsaW5lLnNwbGl0KCkKKyAgICAg ICAgICAgIGxvY2FsX2FkZHJlc3MgPTNEIGNvbFszXQorICAgICAgICAgICAgbG9jYWxfcG9ydCA9 M0QgbG9jYWxfYWRkcmVzcy5zcGxpdCgnOicpWy0xXQorICAgICAgICAgICAgb2NjdXBpZWRfcG9y dHMuYWRkKCBpbnQobG9jYWxfcG9ydCkgKQorCisgICAgIyBHZW5lcmF0ZSByYW5kb20gZnJlZSBw b3J0IG51bWJlciBmb3Igb3VyIGRvY2tlciBjb250YWluZXIKKyAgICB3aGlsZSBUcnVlOgorICAg ICAgICBwb3J0ID0zRCByYW5kb20ucmFuZHJhbmdlKDEwMDAwLDE1MDAwKQorICAgICAgICBpZiBw b3J0IG5vdCBpbiBvY2N1cGllZF9wb3J0czoKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJu IHBvcnQKKyU+Cis8LyVkZWY+CisKKzwlZGVmIG5hbWU9M0QiZ2VuZXJhdGVfcGFzc3dvcmQobGVu Z3RoKSI+Cis8JQorICAgIHJldHVybiAnJy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlh YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpIGY9Cm9yIF8gaW4gcmFuZ2UobGVuZ3RoKSkKKyU+ Cis8LyVkZWY+CisKKzwlZGVmIG5hbWU9M0QiamF2YXNjcmlwdF9ib29sZWFuKGxlbmd0aCkiPgor PCUKKyAgICAiIiIKKyAgICAgICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY29udmVydCBib29s ZWFuIGZvciB1c2UgaW4gSlMKKyAgICAiIiIKKyAgICBpZiBib29sZWFuOgorICAgICAgICByZXR1 cm4gInRydWUiOworICAgIGVsc2U6CisgICAgICAgIHJldHVybiAiZmFsc2UiCislPgorPC8lZGVm PgorCisKKzwlZGVmIG5hbWU9M0QiZG9ja2VyX2NtZChpcHlfdml6X2NvbmZpZywgUE9SVCwgdGVt cF9kaXIpIj4KKzwlCisgICAgcmV0dXJuICclcyBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1w ICVzOjY3ODkgLXYgIiVzOi9pbXBvcnQvIiAlcycgJT0KIFwKKyAgICAgICAgKGlweV92aXpfY29u ZmlnLmdldCgiZG9ja2VyIiwgImNvbW1hbmQiKSwgUE9SVCwgdGVtcF9kaXIsIGlweV92aXpfPQpj b25maWcuZ2V0KCJkb2NrZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgImltYWdl IikpCislPgorPC8lZGVmPgoKZGlmZiAtciBjOTI5NTgwNTdlMmM5OTE4NTg1MWVmNmY4YjJiNWMy ZTEyNDQwZGMyIC1yIDA2OTQ3NGI5NjQxMTI0ODEzOWQ3Zjg5PQplMzBjN2JkYjdiYTkwYzM3MiBj b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09 CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRl cy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC01OCw2ICs1OCw4IEBACiAjIFJvdXRlcwogcm9v dCAgICAgICAgPTNEIGgudXJsX2ZvciggIi8iICkKIGFwcF9yb290ICAgID0zRCByb290ICsgInBs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvIgorIyBSZWdpc3RlciBvdXJzZWxm IHdpdGggdGhlIGllIG1vZHVsZQoraWUuc2V0X2lkKCJpcHl0aG9uIikKPTIwCiBnYWxheHlfcGFz dGVyX3BvcnQgPTNEIGllLmdldF9nYWxheHlfcGFzdGVyX3BvcnQoZ2FsYXh5X3Jvb3RfZGlyLCBn YWxheHlfYz0Kb25maWcpCj0yMApAQCAtNzMsNyArNzUsNyBAQAogUEFTU1dPUkRfQVVUSCA9M0Qg aXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJwYXNzd29yZF9hdXRoIikKIEFQQUNI RV9VUkxTID0zRCBpcHlfdml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgImFwYWNoZV91cmxz IikKIFNTTF9VUkxTID0zRCBpcHlfdml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzbCIp Ci1QT1JUID0zRCBwcm94eV9yZXF1ZXN0X3BvcnQoKQorUE9SVCA9M0QgaWUucHJveHlfcmVxdWVz dF9wb3J0KCkKIEhPU1QgPTNEIHJlcXVlc3QuaG9zdAogIyBTdHJpcCBvdXQgcG9ydCwgd2UganVz dCB3YW50IHRoZSBVUkwgdGhpcyBnYWxheHkgc2VydmVyIHdhcyBhY2Nlc3NlZCBhdC4KIGlmICc6 JyBpbiBIT1NUOgpAQCAtOTQsOCArOTYsOCBAQAo9MjAKIGlmIFBBU1NXT1JEX0FVVEg6CiAgICAg IyBHZW5lcmF0ZSBhIHJhbmRvbSBwYXNzd29yZCArIHNhbHQKLSAgICBub3RlYm9va19wd19zYWx0 ID0zRCBnZW5lcmF0ZV9wYXN3b3JkKGxlbmd0aD0zRDEyKQotICAgIG5vdGVib29rX3B3ID0zRCBn ZW5lcmF0ZV9wYXN3b3JkKGxlbmd0aD0zRDI0KQorICAgIG5vdGVib29rX3B3X3NhbHQgPTNEIGll LmdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0zRDEyKQorICAgIG5vdGVib29rX3B3ID0zRCBpZS5n ZW5lcmF0ZV9wYXNzd29yZChsZW5ndGg9M0QyNCkKICAgICBtID0zRCBoYXNobGliLnNoYTEoKQog ICAgIG0udXBkYXRlKCBub3RlYm9va19wdyArIG5vdGVib29rX3B3X3NhbHQgKQogICAgIGNvbmZf ZmlsZVsnbm90ZWJvb2tfcGFzc3dvcmQnXSA9M0QgJ3NoYTE6JXM6JXMnICUgKG5vdGVib29rX3B3 X3NhbHQsIG09Ci5oZXhkaWdlc3QoKSkKQEAgLTExNyw4ICsxMTksNyBAQAogZWxzZToKICAgICBz aHV0aWwuY29weSggaGRhLmZpbGVfbmFtZSwgZW1wdHlfbmJfcGF0aCApCj0yMAotZG9ja2VyX2Nt ZCA9M0QgJyVzIHJ1biAtZCAtLXNpZy1wcm94eT0zRHRydWUgLXAgJXM6Njc4OSAtdiAiJXM6L2lt cG9ydC8iICU9CnMnICUgXAotICAgIChpcHlfdml6X2NvbmZpZy5nZXQoImRvY2tlciIsICJjb21t YW5kIiksIFBPUlQsIHRlbXBfZGlyLCBpcHlfdml6X2NvbmY9CmlnLmdldCgiZG9ja2VyIiwgImlt YWdlIikpCitkb2NrZXJfY21kID0zRCBpZS5kb2NrZXJfY21kKGlweV92aXpfY29uZmlnLCBQT1JU LCB0ZW1wX2RpcikKPTIwCiAjIFNldCBvdXIgcHJvdG8gc28gcGFzc3dvcmRzIGRvbid0IGdvIGlu IGNsZWFyCiBpZiBTU0xfVVJMUzoKQEAgLTE0Nyw4ICsxNDgsOCBAQAogPGJvZHk+PHNjcmlwdCB0 eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci12YXIgcGFzc3dvcmRfYXV0aCA9M0QgJHsgamF2YXNj cmlwdF9ib29sZWFuKFBBU1NXT1JEX0FVVEgpIH07Ci12YXIgYXBhY2hlX3VybHMgPTNEICR7IGph dmFzY3JpcHRfYm9vbGVhbihBUEFDSEVfVVJMUykgfTsKK3ZhciBwYXNzd29yZF9hdXRoID0zRCAk eyBpZS5qYXZhc2NyaXB0X2Jvb2xlYW4oUEFTU1dPUkRfQVVUSCkgfTsKK3ZhciBhcGFjaGVfdXJs cyA9M0QgJHsgaWUuamF2YXNjcmlwdF9ib29sZWFuKEFQQUNIRV9VUkxTKSB9OwogdmFyIG5vdGVi b29rX2xvZ2luX3VybCA9M0QgJyR7IG5vdGVib29rX2xvZ2luX3VybCB9JzsKIHZhciBwYXNzd29y ZCA9M0QgJyR7IG5vdGVib29rX3B3IH0nOwogdmFyIG5vdGVib29rX2FjY2Vzc191cmwgPTNEICck eyBub3RlYm9va19hY2Nlc3NfdXJsIH0nOwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wNDI3YjI5YTkyNDkvCkNoYW5nZXNldDogICAwNDI3YjI5 YTkyNDkKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4 OjA0KzAwOjAwClN1bW1hcnk6ICAgICBNb3JlIHByb2dyZXNzIHJlZmFjdG9yaW5nCkFmZmVjdGVk ICM6ICAyIGZpbGVzCgpkaWZmIC1yIDA2OTQ3NGI5NjQxMTI0ODEzOWQ3Zjg5ZTMwYzdiZGI3YmE5 MGMzNzIgLXIgMDQyN2IyOWE5MjQ5NDIyMWQyNjI0Zjk9CmYzYTUwNTg0ZTQ4NjAzZGNmIGNvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KLS0tIGEv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwor KysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5t YWtvCkBAIC04LDkgKzgsMjIgQEAKIHZpel9pZCA9M0QgTm9uZQogJT4KPTIwCi08JWRlZiBuYW1l PTNEInNldF9pZChuYW1lKSIlPgorPCVkZWYgbmFtZT0zRCJzZXRfaWQobmFtZSkiPjwlCi0gICAg dml6X2lkID0zRCBuYW1lCisgICAgc2VsZi5hdHRyLnZpel9pZCA9M0QgbmFtZQorJT4KKzwvJWRl Zj4KKworPCVkZWYgbmFtZT0zRCJyZWdpc3Rlcl9nYWxheHlfb2JqZWN0cyh0cmFucywgaCwgcmVz cG9uc2UpIj4KKzwlCisgICAgc2VsZi5hdHRyLnRyYW5zID0zRCB0cmFucworICAgIHNlbGYuYXR0 ci5oaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHRyYW5zLmhpc3Rvcnku aWQgKQorICAgIHNlbGYuYXR0ci5oID0zRCBoCisgICAgc2VsZi5hdHRyLnJlc3BvbnNlID0zRCBy ZXNwb25zZQorICAgIHNlbGYuYXR0ci5nYWxheHlfY29uZmlnID0zRCB0cmFucy5hcHAuY29uZmln CisgICAgc2VsZi5hdHRyLmdhbGF4eV9yb290X2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYu YXR0ci5nYWxheHlfY29uZmlnLj0Kcm9vdCkKKyAgICBzZWxmLmF0dHIucm9vdCA9M0QgaC51cmxf Zm9yKCIvIikKKyAgICBzZWxmLmF0dHIuYXBwX3Jvb3QgPTNEIHNlbGYuYXR0ci5yb290ICsgInBs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvPQpuL3N0YXRpYy8iCiAlPjwvJWRlZj4KPTIwCgpk aWZmIC1yIDA2OTQ3NGI5NjQxMTI0ODEzOWQ3Zjg5ZTMwYzdiZGI3YmE5MGMzNzIgLXIgMDQyN2Iy OWE5MjQ5NDIyMWQyNjI0Zjk9CmYzYTUwNTg0ZTQ4NjAzZGNmIGNvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9w bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysg Yi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9u Lm1ha28KQEAgLTYwLDggKzYwLDkgQEAKIGFwcF9yb290ICAgID0zRCByb290ICsgInBsdWdpbnMv dmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvIgogIyBSZWdpc3RlciBvdXJzZWxmIHdpdGgg dGhlIGllIG1vZHVsZQogaWUuc2V0X2lkKCJpcHl0aG9uIikKK2llLnJlZ2lzdGVyX2dhbGF4eV9v YmplY3RzKHRyYW5zLCBoLCByZXNwb25zZSkKPTIwCi1nYWxheHlfcGFzdGVyX3BvcnQgPTNEIGll LmdldF9nYWxheHlfcGFzdGVyX3BvcnQoZ2FsYXh5X3Jvb3RfZGlyLCBnYWxheHlfYz0Kb25maWcp CitnYWxheHlfcGFzdGVyX3BvcnQgPTNEIGllLmdldF9nYWxheHlfcGFzdGVyX3BvcnQoaWUuYXR0 ci5nYWxheHlfcm9vdF9kaXIsID0KaWUuYXR0ci5nYWxheHlfY29uZmlnKQo9MjAKICMgU3RvcmUg b3VyIHRlbXBsYXRlIGFuZCBjb25maWd1cmF0aW9uIHBhdGgKIG91cl9jb25maWdfZGlyID0zRCBv cy5wYXRoLmpvaW4ocGx1Z2luX3BhdGgsICJjb25maWciKQpAQCAtMTQzLDcgKzE0NCw3IEBACiAk e2guanMoICdsaWJzL2pxdWVyeS9qcXVlcnknICkgfQogJHtoLmpzKCAnbGlicy90b2FzdHInICkg fQogIyMgTG9hZCBJUHl0aG9uLUdhbGF4eSBjb25uZWN0b3IKLSR7aC5qYXZhc2NyaXB0X2xpbmso IGFwcF9yb290ICsgJ2lweS1nYWxheHkuanMnICl9Ciske2guamF2YXNjcmlwdF9saW5rKCBpZS5h dHRyLmFwcF9yb290ICsgJ2lweS1nYWxheHkuanMnICl9CiA8L2hlYWQ+PGJvZHk+Cj0yMApAQCAt MTUzLDcgKzE1NCw3IEBACiB2YXIgbm90ZWJvb2tfbG9naW5fdXJsID0zRCAnJHsgbm90ZWJvb2tf bG9naW5fdXJsIH0nOwogdmFyIHBhc3N3b3JkID0zRCAnJHsgbm90ZWJvb2tfcHcgfSc7CiB2YXIg bm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfSc7Ci12YXIg Z2FsYXh5X3Jvb3QgPTNEICckeyByb290IH0nOwordmFyIGdhbGF4eV9yb290ID0zRCAnJHsgaWUu YXR0ci5yb290IH0nOwogLy8gTG9hZCBub3RlYm9vawogbG9hZF9ub3RlYm9vayhwYXNzd29yZF9h dXRoLCBwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3M9Cl91cmws IGFwYWNoZV91cmxzLCBnYWxheHlfcm9vdCk7CiA8L3NjcmlwdD4KCgpodHRwczovL2JpdGJ1Y2tl dC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNGNhMGI4YzdmZDVlLwpDaGFuZ2Vz ZXQ6ICAgNGNhMGI4YzdmZDVlClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAx NC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQ29weSBpbXBvcnRzCkFmZmVjdGVk ICM6ICAxIGZpbGUKCmRpZmYgLXIgMDQyN2IyOWE5MjQ5NDIyMWQyNjI0ZjlmM2E1MDU4NGU0ODYw M2RjZiAtciA0Y2EwYjhjN2ZkNWVjOTJmYWJlZDNhOD0KMmQ2ZjA2NWNjNjk4OGM4ZGUgY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisr KyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1h a28KQEAgLTEsOSArMSwxNSBAQAogPCUhCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0 aW1lCitpbXBvcnQgeWFtbAoraW1wb3J0IHNobGV4CitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc2h1 dGlsCitpbXBvcnQgaGFzaGxpYgoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc3VicHJvY2Vzcwog aW1wb3J0IENvbmZpZ1BhcnNlcgotaW1wb3J0IG9zCi1pbXBvcnQgc2hsZXgKLWltcG9ydCBzdWJw cm9jZXNzCi1pbXBvcnQgcmFuZG9tCj0yMAogdml6X2lkID0zRCBOb25lCiAlPgoKCmh0dHBzOi8v Yml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9kYjYyMmYwZjVlNjAv CkNoYW5nZXNldDogICBkYjYyMmYwZjVlNjAKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAg ICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBSZW1vdmUgcG9pbnRs ZXNzIHN0YXRlbWVudApBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRjYTBiOGM3ZmQ1ZWM5 MmZhYmVkM2E4MmQ2ZjA2NWNjNjk4OGM4ZGUgLXIgZGI2MjJmMGY1ZTYwN2M4YWQ0NmNiMGE9Cjdj NDA2NzRiYTVlYWEyNTg4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVt cGxhdGVzL2llLm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvaWUubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCkBAIC0xMSw3ICsxMSw2IEBACiBpbXBvcnQgc3VicHJv Y2VzcwogaW1wb3J0IENvbmZpZ1BhcnNlcgo9MjAKLXZpel9pZCA9M0QgTm9uZQogJT48JWRlZiBu YW1lPTNEInNldF9pZChuYW1lKSI+CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxh eHktY2VudHJhbC9jb21taXRzL2UzYTlkMmViZjY4MC8KQ2hhbmdlc2V0OiAgIGUzYTlkMmViZjY4 MApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQr MDA6MDAKU3VtbWFyeTogICAgIEFkZGVkIGhleCBnZW4gc3RtdApBZmZlY3RlZCAjOiAgMiBmaWxl cwoKZGlmZiAtciBkYjYyMmYwZjVlNjA3YzhhZDQ2Y2IwYTdjNDA2NzRiYTVlYWEyNTg4IC1yIGUz YTlkMmViZjY4MGEyYzk1ODUxYmJhPQpjYjE5ZmVjZDVjNzYyNzdiYyBjb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCi0tLSBhL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KKysrIGIvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwpAQCAtNzIs NiArNzIsMTIgQEAKICU+PC8lZGVmPgo9MjAKKzwlZGVmIG5hbWU9M0QiZ2VuZXJhdGVfaGV4KGxl bmd0aCkiPgorPCUKKyAgICByZXR1cm4gJycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5 YWJjZGVmJykgZm9yIF8gaW4gcmFuZ2UobGVuZ3RoPQopKQorJT4KKzwvJWRlZj4KKwogPCVkZWYg bmFtZT0zRCJnZW5lcmF0ZV9wYXNzd29yZChsZW5ndGgpIj48JQogICAgIHJldHVybiAnJy5qb2lu KHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpIGY9 Cm9yIF8gaW4gcmFuZ2UobGVuZ3RoKSkKCmRpZmYgLXIgZGI2MjJmMGY1ZTYwN2M4YWQ0NmNiMGE3 YzQwNjc0YmE1ZWFhMjU4OCAtciBlM2E5ZDJlYmY2ODBhMmM5NTg1MWJiYT0KY2IxOWZlY2Q1Yzc2 Mjc3YmMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5 dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMTMsNyArMTMsNyBAQAogaW1wb3J0 IENvbmZpZ1BhcnNlcgo9MjAKIGRlZiBsb2FkX25vdGVib29rKCk6Ci0gICAgbm90ZWJvb2tfaWQg PTNEICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2RlZicpIGZvciBfIGluIHJh bj0KZ2UoNjQpKQorICAgIG5vdGVib29rX2lkID0zRCBpZS5nZW5lcmF0ZV9oZXgoNjQpCiAgICAg d2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91cl90ZW1wbGF0ZV9kaXIsICdub3RlYm9vay5pcHlu YicgKSwgJ3InKSBhcz0KIG5iX2hhbmRsZToKICAgICAgICAgZW1wdHlfbmIgPTNEIG5iX2hhbmRs ZS5yZWFkKCkKICAgICBlbXB0eV9uYiA9M0QgZW1wdHlfbmIgJSBub3RlYm9va19pZAoKCmh0dHBz Oi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy80ZTMyYjMxYjE3 NTMvCkNoYW5nZXNldDogICA0ZTMyYjMxYjE3NTMKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6 ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBNb3ZlZCBtb3Jl IGNvbmZpZ3VyYXRpb24gaW50byBpZSBiYXNlIG1vZHVsZQpBZmZlY3RlZCAjOiAgMiBmaWxlcwoK ZGlmZiAtciBlM2E5ZDJlYmY2ODBhMmM5NTg1MWJiYWNiMTlmZWNkNWM3NjI3N2JjIC1yIDRlMzJi MzFiMTc1M2Y2MjE3MGFkMjNhPQpjMmM4MzliY2Q3M2NjNDEzOCBjb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KKysrIGIvY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwpAQCAtMTksMTEg KzE5LDEyIEBACiAlPjwvJWRlZj4KPTIwCi08JWRlZiBuYW1lPTNEInJlZ2lzdGVyX2dhbGF4eV9v YmplY3RzKHRyYW5zLCBoLCByZXNwb25zZSkiPgorPCVkZWYgbmFtZT0zRCJyZWdpc3Rlcl9nYWxh eHlfb2JqZWN0cyh0cmFucywgaCwgcmVzcG9uc2UsIHBsdWdpbl9wYXRoKSI+PCUKICAgICBzZWxm LmF0dHIudHJhbnMgPTNEIHRyYW5zCiAgICAgc2VsZi5hdHRyLmhpc3RvcnlfaWQgPTNEIHRyYW5z LnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCiAgICAgc2VsZi5hdHRyLmgg PTNEIGgKKyAgICBzZWxmLmF0dHIucGx1Z2luX3BhdGggPTNEIHBsdWdpbl9wYXRoCiAgICAgc2Vs Zi5hdHRyLnJlc3BvbnNlID0zRCByZXNwb25zZQogICAgIHNlbGYuYXR0ci5nYWxheHlfY29uZmln ID0zRCB0cmFucy5hcHAuY29uZmlnCiAgICAgc2VsZi5hdHRyLmdhbGF4eV9yb290X2RpciA9M0Qg b3MucGF0aC5hYnNwYXRoKHNlbGYuYXR0ci5nYWxheHlfY29uZmlnLj0Kcm9vdCkKQEAgLTMyLDYg KzMzLDE3IEBACiAlPjwvJWRlZj4KPTIwCis8JWRlZiBuYW1lPTNEInJlZ2lzdGVyX2RlZmF1bHRz KGRlZmF1bHRfZGljdCkiPgorPCUKKyAgICAjIFN0b3JlIG91ciB0ZW1wbGF0ZSBhbmQgY29uZmln dXJhdGlvbiBwYXRoCisgICAgc2VsZi5hdHRyLm91cl9jb25maWdfZGlyID0zRCBvcy5wYXRoLmpv aW4oc2VsZi5hdHRyLnBsdWdpbl9wYXRoLCAiY29uZj0KaWciKQorICAgIHNlbGYuYXR0ci5vdXJf dGVtcGxhdGVfZGlyID0zRCBvcy5wYXRoLmpvaW4oc2VsZi5hdHRyLnBsdWdpbl9wYXRoLCAidGU9 Cm1wbGF0ZXMiKQorICAgIGlweV92aXpfY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZp Z1BhcnNlcihkZWZhdWx0X2RpY3QpCisgICAgaXB5X3Zpel9jb25maWcucmVhZCggb3MucGF0aC5q b2luKCBzZWxmLmF0dHIub3VyX2NvbmZpZ19kaXIsICJpcHl0aG9uLj0KY29uZiIgKSApCisgICAg c2VsZi5hdHRyLmlweV92aXpfY29uZmlnID0zRCBpcHlfdml6X2NvbmZpZworJT4KKzwvJWRlZj4K KwogPCVkZWYgbmFtZT0zRCJnZXRfZ2FsYXh5X3Bhc3Rlcl9wb3J0KGdhbGF4eV9yb290X2Rpciwg Z2FsYXh5X2NvbmZpZykiPjwlCiAgICAgY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZp Z1BhcnNlcih7J3BvcnQnOiAnODA4MCd9KQoKZGlmZiAtciBlM2E5ZDJlYmY2ODBhMmM5NTg1MWJi YWNiMTlmZWNkNWM3NjI3N2JjIC1yIDRlMzJiMzFiMTc1M2Y2MjE3MGFkMjNhPQpjMmM4MzliY2Q3 M2NjNDEzOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p cHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0xMiw3MCArMTIsMjQgQEAKIGlt cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgQ29uZmlnUGFyc2VyCj0yMAotZGVmIGxvYWRfbm90ZWJv b2soKToKLSAgICBub3RlYm9va19pZCA9M0QgaWUuZ2VuZXJhdGVfaGV4KDY0KQotICAgIHdpdGgg b3Blbiggb3MucGF0aC5qb2luKCBvdXJfdGVtcGxhdGVfZGlyLCAnbm90ZWJvb2suaXB5bmInICks ICdyJykgYXM9CiBuYl9oYW5kbGU6Ci0gICAgICAgIGVtcHR5X25iID0zRCBuYl9oYW5kbGUucmVh ZCgpCi0gICAgZW1wdHlfbmIgPTNEIGVtcHR5X25iICUgbm90ZWJvb2tfaWQKLSAgICByZXR1cm4g ZW1wdHlfbmIKLQotZGVmIHByb3h5X3JlcXVlc3RfcG9ydCgpOgotICAgICIiIgotICAgICAgICBS ZWZhY3RvciBvZiBvdXIgcG9ydCBnZXR0aW5nLi4uZXZlbnR1YWxseSB0aGlzIHdpbGwgYmUgcmVw bGFjZWQgd2k9CnRoIGFuIEFQSSBjYWxsIGluc3RlYWQuCi0gICAgIiIiCi0gICAgIyBGaW5kIGFs bCBwb3J0cyB0aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVkCi0gICAgY21kX25ldHN0YXQgPTNEIHNo bGV4LnNwbGl0KCJuZXRzdGF0IC10dWxuIikKLSAgICBwMSA9M0Qgc3VicHJvY2Vzcy5Qb3Blbihj bWRfbmV0c3RhdCwgc3Rkb3V0PTNEc3VicHJvY2Vzcy5QSVBFKQotCi0gICAgb2NjdXBpZWRfcG9y dHMgPTNEIHNldCgpCi0gICAgZm9yIGxpbmUgaW4gcDEuc3Rkb3V0LnJlYWQoKS5zcGxpdCgnXG4n KToKLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCd0Y3AnKSBvciBsaW5lLnN0YXJ0c3dpdGgo J3RjcDYnKToKLSAgICAgICAgICAgIGNvbCA9M0QgbGluZS5zcGxpdCgpCi0gICAgICAgICAgICBs b2NhbF9hZGRyZXNzID0zRCBjb2xbM10KLSAgICAgICAgICAgIGxvY2FsX3BvcnQgPTNEIGxvY2Fs X2FkZHJlc3Muc3BsaXQoJzonKVstMV0KLSAgICAgICAgICAgIG9jY3VwaWVkX3BvcnRzLmFkZCgg aW50KGxvY2FsX3BvcnQpICkKLQotICAgICMgR2VuZXJhdGUgcmFuZG9tIGZyZWUgcG9ydCBudW1i ZXIgZm9yIG91ciBkb2NrZXIgY29udGFpbmVyCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgcG9y dCA9M0QgcmFuZG9tLnJhbmRyYW5nZSgxMDAwMCwxNTAwMCkKLSAgICAgICAgaWYgcG9ydCBub3Qg aW4gb2NjdXBpZWRfcG9ydHM6Ci0gICAgICAgICAgICBicmVhawotICAgIHJldHVybiBwb3J0Ci0K LWRlZiBnZW5lcmF0ZV9wYXN3b3JkKGxlbmd0aD0zRDEyKToKLSAgICByZXR1cm4gJycuam9pbihy YW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKSBmPQpv ciBfIGluIHJhbmdlKGxlbmd0aCkpCi0KLWRlZiBqYXZhc2NyaXB0X2Jvb2xlYW4oYm9vbGVhbik6 Ci0gICAgIiIiCi0gICAgICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYm9vbGVh biBmb3IgdXNlIGluIEpTCi0gICAgIiIiCi0gICAgcmV0dXJuICJ0cnVlIiBpZiBib29sZWFuIGVs c2UgImZhbHNlIgotCi0KLWdhbGF4eV9jb25maWcgPTNEIHRyYW5zLmFwcC5jb25maWcKLWdhbGF4 eV9yb290X2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKGdhbGF4eV9jb25maWcucm9vdCkKLWhpc3Rv cnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCi0j IFJvdXRlcwotcm9vdCAgICAgICAgPTNEIGgudXJsX2ZvciggIi8iICkKLWFwcF9yb290ICAgID0z RCByb290ICsgInBsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvIgotIyBSZWdp c3RlciBvdXJzZWxmIHdpdGggdGhlIGllIG1vZHVsZQogaWUuc2V0X2lkKCJpcHl0aG9uIikKLWll LnJlZ2lzdGVyX2dhbGF4eV9vYmplY3RzKHRyYW5zLCBoLCByZXNwb25zZSkKK2llLnJlZ2lzdGVy X2dhbGF4eV9vYmplY3RzKHRyYW5zLCBoLCByZXNwb25zZSwgcGx1Z2luX3BhdGgpCitpZS5yZWdp c3Rlcl9kZWZhdWx0cyh7CisgICAgJ2FwYWNoZV91cmxzJzogRmFsc2UsCisgICAgJ2NvbW1hbmQn OiAnZG9ja2VyJywKKyAgICAnaW1hZ2UnOiAnYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLW5vdGVi b29rJywKKyAgICAncGFzc3dvcmRfYXV0aCc6IEZhbHNlLAorICAgICdzc2wnOiBGYWxzZX0pCj0y MAogZ2FsYXh5X3Bhc3Rlcl9wb3J0ID0zRCBpZS5nZXRfZ2FsYXh5X3Bhc3Rlcl9wb3J0KGllLmF0 dHIuZ2FsYXh5X3Jvb3RfZGlyLCA9CmllLmF0dHIuZ2FsYXh5X2NvbmZpZykKPTIwCi0jIFN0b3Jl IG91ciB0ZW1wbGF0ZSBhbmQgY29uZmlndXJhdGlvbiBwYXRoCi1vdXJfY29uZmlnX2RpciA9M0Qg b3MucGF0aC5qb2luKHBsdWdpbl9wYXRoLCAiY29uZmlnIikKLW91cl90ZW1wbGF0ZV9kaXIgPTNE IG9zLnBhdGguam9pbihwbHVnaW5fcGF0aCwgInRlbXBsYXRlcyIpCi1pcHlfdml6X2NvbmZpZyA9 M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoeydhcGFjaGVfdXJscyc6IEZhbHNlLCAn Yz0Kb21tYW5kJzogJ2RvY2tlcicsICdpbWFnZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLT0Kbm90ZWJv b2snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Bh c3N3b3JkX2F1dGgnOiBGYWxzZSwgJ3M9CnNsJzogRmFsc2UsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9ja2VyX2RlbGF5JzogMX0pCi1pcHlfdml6 X2NvbmZpZy5yZWFkKCBvcy5wYXRoLmpvaW4oIG91cl9jb25maWdfZGlyLCAiaXB5dGhvbi5jb25m IiApICkKPTIwCi1QQVNTV09SRF9BVVRIID0zRCBpcHlfdml6X2NvbmZpZy5nZXRib29sZWFuKCJt YWluIiwgInBhc3N3b3JkX2F1dGgiKQotQVBBQ0hFX1VSTFMgPTNEIGlweV92aXpfY29uZmlnLmdl dGJvb2xlYW4oIm1haW4iLCAiYXBhY2hlX3VybHMiKQotU1NMX1VSTFMgPTNEIGlweV92aXpfY29u ZmlnLmdldGJvb2xlYW4oIm1haW4iLCAic3NsIikKKyNQQVNTV09SRF9BVVRIID0zRCBpZS5hdHRy LmlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAicGFzc3dvcmRfYXV0PQpoIikKKyNB UEFDSEVfVVJMUyA9M0QgaWUuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwg ImFwYWNoZV91cmxzIikKKyNTU0xfVVJMUyA9M0QgaWUuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXRi b29sZWFuKCJtYWluIiwgInNzbCIpCitQQVNTV09SRF9BVVRIID0zRCBGYWxzZQorQVBBQ0hFX1VS TFMgPTNEIEZhbHNlCitTU0xfVVJMUyA9M0QgRmFsc2UKIFBPUlQgPTNEIGllLnByb3h5X3JlcXVl c3RfcG9ydCgpCiBIT1NUID0zRCByZXF1ZXN0Lmhvc3QKICMgU3RyaXAgb3V0IHBvcnQsIHdlIGp1 c3Qgd2FudCB0aGUgVVJMIHRoaXMgZ2FsYXh5IHNlcnZlciB3YXMgYWNjZXNzZWQgYXQuCkBAIC04 Niw3ICs0MCw3IEBACiBhcGlfa2V5ID0zRCBnZXRfYXBpX2tleSgpCj0yMAogY29uZl9maWxlID0z RCB7Ci0gICAgJ2hpc3RvcnlfaWQnOiBoaXN0b3J5X2lkLAorICAgICdoaXN0b3J5X2lkJzogaWUu YXR0ci5oaXN0b3J5X2lkLAogICAgICdnYWxheHlfdXJsJzogcmVxdWVzdC5hcHBsaWNhdGlvbl91 cmwucnN0cmlwKCcvJykgKyAnLycsCiAgICAgJ2FwaV9rZXknOiBhcGlfa2V5LAogICAgICdyZW1v dGVfaG9zdCc6IHJlcXVlc3QucmVtb3RlX2FkZHIsCkBAIC0xMTEsNyArNjUsMTAgQEAKICAgICBo YW5kbGUud3JpdGUoIHlhbWwuZHVtcChjb25mX2ZpbGUsIGRlZmF1bHRfZmxvd19zdHlsZT0zREZh bHNlKSApCj0yMAogIyBQcmVwYXJlIGFuIGVtcHR5IG5vdGVib29rCi1lbXB0eV9uYiA9M0QgbG9h ZF9ub3RlYm9vaygpCitub3RlYm9va19pZCA9M0QgaWUuZ2VuZXJhdGVfaGV4KDY0KQord2l0aCBv cGVuKCBvcy5wYXRoLmpvaW4oIGllLmF0dHIub3VyX3RlbXBsYXRlX2RpciwgJ25vdGVib29rLmlw eW5iJyApLCAncic9CikgYXMgbmJfaGFuZGxlOgorICAgIGVtcHR5X25iID0zRCBuYl9oYW5kbGUu cmVhZCgpCitlbXB0eV9uYiA9M0QgZW1wdHlfbmIgJSBub3RlYm9va19pZAogIyBDb3B5IG92ZXIg ZGVmYXVsdCBub3RlYm9vaywgdW5sZXNzIHRoZSBkYXRhc2V0IHRoaXMgdml6IGlzIHJ1bm5pbmcg b24gaXM9CiBhIG5vdGVib29rCiBlbXB0eV9uYl9wYXRoID0zRCBvcy5wYXRoLmpvaW4odGVtcF9k aXIsICdpcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYicpCiBpZiBoZGEuZGF0YXR5cGUuX19j bGFzc19fLl9fbmFtZV9fICE9M0QgIklweW5iIjoKQEAgLTEyMCw3ICs3Nyw3IEBACiBlbHNlOgog ICAgIHNodXRpbC5jb3B5KCBoZGEuZmlsZV9uYW1lLCBlbXB0eV9uYl9wYXRoICkKPTIwCi1kb2Nr ZXJfY21kID0zRCBpZS5kb2NrZXJfY21kKGlweV92aXpfY29uZmlnLCBQT1JULCB0ZW1wX2RpcikK K2RvY2tlcl9jbWQgPTNEIGllLmRvY2tlcl9jbWQoaWUuYXR0ci5pcHlfdml6X2NvbmZpZywgUE9S VCwgdGVtcF9kaXIpCj0yMAogIyBTZXQgb3VyIHByb3RvIHNvIHBhc3N3b3JkcyBkb24ndCBnbyBp biBjbGVhcgogaWYgU1NMX1VSTFM6CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxh eHktY2VudHJhbC9jb21taXRzLzlkM2Q3ZTA4YTA3Ni8KQ2hhbmdlc2V0OiAgIDlkM2Q3ZTA4YTA3 NgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQr MDA6MDAKU3VtbWFyeTogICAgIFJldmVydGVkIGNoYW5nZSB1c2VkIGR1cmluZyB0ZXN0aW5nCkFm ZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgNGUzMmIzMWIxNzUzZjYyMTcwYWQyM2FjMmM4Mzli Y2Q3M2NjNDEzOCAtciA5ZDNkN2UwOGEwNzY1MTM5ZDcyZTEwYz0KZTQ4NTNkNGIwYWQzMzFlMTIg Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5t PQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMjQsMTIgKzI0LDkgQEAKIGdhbGF4eV9wYXN0 ZXJfcG9ydCA9M0QgaWUuZ2V0X2dhbGF4eV9wYXN0ZXJfcG9ydChpZS5hdHRyLmdhbGF4eV9yb290 X2RpciwgPQppZS5hdHRyLmdhbGF4eV9jb25maWcpCj0yMAo9MjAKLSNQQVNTV09SRF9BVVRIID0z RCBpZS5hdHRyLmlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAicGFzc3dvcmRfYXV0 PQpoIikKLSNBUEFDSEVfVVJMUyA9M0QgaWUuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXRib29sZWFu KCJtYWluIiwgImFwYWNoZV91cmxzIikKLSNTU0xfVVJMUyA9M0QgaWUuYXR0ci5pcHlfdml6X2Nv bmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzbCIpCi1QQVNTV09SRF9BVVRIID0zRCBGYWxzZQot QVBBQ0hFX1VSTFMgPTNEIEZhbHNlCi1TU0xfVVJMUyA9M0QgRmFsc2UKK1BBU1NXT1JEX0FVVEgg PTNEIGllLmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJwYXNzd29yZF9h dXRoPQoiKQorQVBBQ0hFX1VSTFMgPTNEIGllLmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVh bigibWFpbiIsICJhcGFjaGVfdXJscyIpCitTU0xfVVJMUyA9M0QgaWUuYXR0ci5pcHlfdml6X2Nv bmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzbCIpCiBQT1JUID0zRCBpZS5wcm94eV9yZXF1ZXN0 X3BvcnQoKQogSE9TVCA9M0QgcmVxdWVzdC5ob3N0CiAjIFN0cmlwIG91dCBwb3J0LCB3ZSBqdXN0 IHdhbnQgdGhlIFVSTCB0aGlzIGdhbGF4eSBzZXJ2ZXIgd2FzIGFjY2Vzc2VkIGF0LgoKCmh0dHBz Oi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hY2ExOGFhNjdh N2MvCkNoYW5nZXNldDogICBhY2ExOGFhNjdhN2MKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6 ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBNb3ZlZCBVUkwg d3JpdGluZyBpbnRvIGllLm1ha28KQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgOWQzZDdl MDhhMDc2NTEzOWQ3MmUxMGNlNDg1M2Q0YjBhZDMzMWUxMiAtciBhY2ExOGFhNjdhN2M4YTM5YjJm NGQ4OD0KMzkyZWY0NjRhM2I5NjdmZjEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTE5LDcgKzE5LDcgQEAKICU+PC8l ZGVmPgo9MjAKLTwlZGVmIG5hbWU9M0QicmVnaXN0ZXJfZ2FsYXh5X29iamVjdHModHJhbnMsIGgs IHJlc3BvbnNlLCBwbHVnaW5fcGF0aCkiPgorPCVkZWYgbmFtZT0zRCJyZWdpc3Rlcl9nYWxheHlf b2JqZWN0cyh0cmFucywgaCwgcmVzcG9uc2UsIHBsdWdpbl9wYXRoLCByZXE9CnVlc3QpIj48JQog ICAgIHNlbGYuYXR0ci50cmFucyA9M0QgdHJhbnMKICAgICBzZWxmLmF0dHIuaGlzdG9yeV9pZCA9 M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkICkKQEAgLTMwLDYg KzMwLDcgQEAKICAgICBzZWxmLmF0dHIuZ2FsYXh5X3Jvb3RfZGlyID0zRCBvcy5wYXRoLmFic3Bh dGgoc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuPQpyb290KQogICAgIHNlbGYuYXR0ci5yb290ID0z RCBoLnVybF9mb3IoIi8iKQogICAgIHNlbGYuYXR0ci5hcHBfcm9vdCA9M0Qgc2VsZi5hdHRyLnJv b3QgKyAicGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG89Cm4vc3RhdGljLyIKKyAgICBzZWxm LmF0dHIucmVxdWVzdCA9M0QgcmVxdWVzdAogJT48LyVkZWY+Cj0yMApAQCAtNDEsNiArNDIsNDQg QEAKICAgICBpcHlfdml6X2NvbmZpZyA9M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIo ZGVmYXVsdF9kaWN0KQogICAgIGlweV92aXpfY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggc2Vs Zi5hdHRyLm91cl9jb25maWdfZGlyLCAiaXB5dGhvbi49CmNvbmYiICkgKQogICAgIHNlbGYuYXR0 ci5pcHlfdml6X2NvbmZpZyA9M0QgaXB5X3Zpel9jb25maWcKKyAgICAjIFN0b3JlIHNvbWUgdmFy aWFibGVzIHdlIHdhbnQgYnkgZGVmYXVsdAorICAgIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIID0z RCBzZWxmLmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiI9CiwgInBhc3N3b3Jk X2F1dGgiKQorICAgIHNlbGYuYXR0ci5BUEFDSEVfVVJMUyA9M0Qgc2VsZi5hdHRyLmlweV92aXpf Y29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCA9CiJhcGFjaGVfdXJscyIpCisgICAgc2VsZi5hdHRy LlNTTF9VUkxTID0zRCBzZWxmLmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIs ICJzcz0KbCIpCisgICAgc2VsZi5hdHRyLlBPUlQgPTNEIHNlbGYucHJveHlfcmVxdWVzdF9wb3J0 KCkKKyAgICBzZWxmLmF0dHIuSE9TVCA9M0Qgc2VsZi5hdHRyLnJlcXVlc3QuaG9zdAorJT4KKzwv JWRlZj4KKworPCVkZWYgbmFtZT0zRCJ3cml0ZV9jb25mX2ZpbGUob3V0cHV0X2RpcmVjdG9yeSki PgorPCUKKyAgICBjb25mX2ZpbGUgPTNEIHsKKyAgICAgICAgJ2hpc3RvcnlfaWQnOiBzZWxmLmF0 dHIuaGlzdG9yeV9pZCwKKyAgICAgICAgJ2dhbGF4eV91cmwnOiBzZWxmLmF0dHIucmVxdWVzdC5h cHBsaWNhdGlvbl91cmwucnN0cmlwKCcvJykgKyAnLycsCisgICAgICAgICdhcGlfa2V5Jzogc2Vs Zi5hdHRyLmFwaV9rZXksCisgICAgICAgICdyZW1vdGVfaG9zdCc6IHNlbGYuYXR0ci5yZXF1ZXN0 LnJlbW90ZV9hZGRyLAorICAgICAgICAnZ2FsYXh5X3Bhc3Rlcl9wb3J0Jzogc2VsZi5nZXRfZ2Fs YXh5X3Bhc3Rlcl9wb3J0KHNlbGYuYXR0ci5nYWxheHk9Cl9yb290X2RpciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmF0dHIu Z2FsYXh5PQpfY29uZmlnKSwKKyAgICAgICAgJ2RvY2tlcl9wb3J0Jzogc2VsZi5hdHRyLlBPUlQs CisgICAgICAgICdjb3JzX29yaWdpbic6IHNlbGYuYXR0ci5yZXF1ZXN0Lmhvc3RfdXJsLAorICAg IH0KKworICAgIGlmIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIOgorICAgICAgICAjIEdlbmVyYXRl IGEgcmFuZG9tIHBhc3N3b3JkICsgc2FsdAorICAgICAgICBub3RlYm9va19wd19zYWx0ID0zRCBz ZWxmLmdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0zRDEyKQorICAgICAgICBub3RlYm9va19wdyA9 M0Qgc2VsZi5nZW5lcmF0ZV9wYXNzd29yZChsZW5ndGg9M0QyNCkKKyAgICAgICAgbSA9M0QgaGFz aGxpYi5zaGExKCkKKyAgICAgICAgbS51cGRhdGUoIG5vdGVib29rX3B3ICsgbm90ZWJvb2tfcHdf c2FsdCApCisgICAgICAgIGNvbmZfZmlsZVsnbm90ZWJvb2tfcGFzc3dvcmQnXSA9M0QgJ3NoYTE6 JXM6JXMnICUgKG5vdGVib29rX3B3X3NhbD0KdCwgbS5oZXhkaWdlc3QoKSkKKyAgICAgICAgIyBT aG91bGQgd2UgdXNlIHBhc3N3b3JkIGJhc2VkIGNvbm5lY3Rpb24gb3IgImRlZmF1bHQiIGNvbm5l Y3Rpb24gPQpzdHlsZSBpbiBnYWxheHkKKyAgICBlbHNlOgorICAgICAgICBub3RlYm9va19wdyA9 M0QgIk5vbmUiCisKKyAgICBzZWxmLmF0dHIubm90ZWJvb2tfcHcgPTNEIG5vdGVib29rX3B3Cisg ICAgIyBXcml0ZSBjb25mCisgICAgd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91dHB1dF9kaXJl Y3RvcnksICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYT0KbmRsZToKKyAgICAgICAgaGFuZGxl LndyaXRlKCB5YW1sLmR1bXAoY29uZl9maWxlLCBkZWZhdWx0X2Zsb3dfc3R5bGU9M0RGYWxzZSkg KQorCiAlPjwvJWRlZj4KPTIwCkBAIC0xMDksNiArMTQ4LDI3IEBACiA8LyVkZWY+Cj0yMAo9MjAK KzwlZGVmIG5hbWU9M0QidXJsX3RlbXBsYXRlKHVybF90ZW1wbGF0ZSkiPgorPCUKKyAgICAjIEZp Z3VyZSBvdXQgb3VyIHN1YnN0aXR1dGlvbnMKKyAgICBpZiBzZWxmLmF0dHIuU1NMX1VSTFM6Cisg ICAgICAgIHByb3RvY29sID0zRCAnaHR0cHMnCisgICAgZWxzZToKKyAgICAgICAgcHJvdG9jb2wg PTNEICdodHRwJworCisgICAgaWYgbm90IHNlbGYuYXR0ci5BUEFDSEVfVVJMUzoKKyAgICAgICAg IyBJZiB0aGV5IGFyZSBub3QgdXNpbmcgYXBhY2hlIFVSTHMsIHRoYXQgaW1wbGllcyB0aGVyZSdz IGEgcG9ydCBhPQp0dGFjaGVkIHRvIHRoZSBob3N0CisgICAgICAgICMgc3RyaW5nLCB0aHVzIHdl IHJlcGxhY2UganVzdCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgaG9zdCB0aGF0IHdlID0Kc2VlLgor ICAgICAgICB1cmxfdGVtcGxhdGUgPTNEIHVybF90ZW1wbGF0ZS5yZXBsYWNlKCcke0hPU1R9Jywg JyR7SE9TVH06JHtQT1JUfSc9CiwgMSkKKworICAgIHVybCA9M0QgdXJsX3RlbXBsYXRlLnJlcGxh Y2UoJyR7UFJPVE99JywgcHJvdG9jb2wpIFwKKyAgICAgICAgICAgIC5yZXBsYWNlKCcke0hPU1R9 Jywgc2VsZi5hdHRyLkhPU1QpIFwKKyAgICAgICAgICAgIC5yZXBsYWNlKCcke1BPUlR9Jywgc3Ry KHNlbGYuYXR0ci5QT1JUKSkKKyAgICByZXR1cm4gdXJsCislPgorPC8lZGVmPgorCisKIDwlZGVm IG5hbWU9M0QiZG9ja2VyX2NtZChpcHlfdml6X2NvbmZpZywgUE9SVCwgdGVtcF9kaXIpIj48JQog ICAgIHJldHVybiAnJXMgcnVuIC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczo2Nzg5IC12ICIl czovaW1wb3J0LyIgJXMnICU9CiBcCgpkaWZmIC1yIDlkM2Q3ZTA4YTA3NjUxMzlkNzJlMTBjZTQ4 NTNkNGIwYWQzMzFlMTIgLXIgYWNhMThhYTY3YTdjOGEzOWIyZjRkODg9CjM5MmVmNDY0YTNiOTY3 ZmYxIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRo b24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVt cGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTEzLDcgKzEzLDcgQEAKIGltcG9ydCBD b25maWdQYXJzZXIKPTIwCiBpZS5zZXRfaWQoImlweXRob24iKQotaWUucmVnaXN0ZXJfZ2FsYXh5 X29iamVjdHModHJhbnMsIGgsIHJlc3BvbnNlLCBwbHVnaW5fcGF0aCkKK2llLnJlZ2lzdGVyX2dh bGF4eV9vYmplY3RzKHRyYW5zLCBoLCByZXNwb25zZSwgcGx1Z2luX3BhdGgsIHJlcXVlc3QpCiBp ZS5yZWdpc3Rlcl9kZWZhdWx0cyh7CiAgICAgJ2FwYWNoZV91cmxzJzogRmFsc2UsCiAgICAgJ2Nv bW1hbmQnOiAnZG9ja2VyJywKQEAgLTI0LDcgKzI0LDYgQEAKIGdhbGF4eV9wYXN0ZXJfcG9ydCA9 M0QgaWUuZ2V0X2dhbGF4eV9wYXN0ZXJfcG9ydChpZS5hdHRyLmdhbGF4eV9yb290X2RpciwgPQpp ZS5hdHRyLmdhbGF4eV9jb25maWcpCj0yMAo9MjAKLVBBU1NXT1JEX0FVVEggPTNEIGllLmF0dHIu aXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJwYXNzd29yZF9hdXRoPQoiKQogQVBB Q0hFX1VSTFMgPTNEIGllLmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJh cGFjaGVfdXJscyIpCiBTU0xfVVJMUyA9M0QgaWUuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXRib29s ZWFuKCJtYWluIiwgInNzbCIpCiBQT1JUID0zRCBpZS5wcm94eV9yZXF1ZXN0X3BvcnQoKQpAQCAt MzQsMzIgKzMzLDExIEBACiAgICAgSE9TVCA9M0QgSE9TVFswOkhPU1QuaW5kZXgoJzonKV0KPTIw CiB0ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKCB0ZW1wZmlsZS5ta2R0ZW1wKCkgKQotYXBp X2tleSA9M0QgZ2V0X2FwaV9rZXkoKQoraWUuYXR0ci5hcGlfa2V5ID0zRCBnZXRfYXBpX2tleSgp Cj0yMAotY29uZl9maWxlID0zRCB7Ci0gICAgJ2hpc3RvcnlfaWQnOiBpZS5hdHRyLmhpc3Rvcnlf aWQsCi0gICAgJ2dhbGF4eV91cmwnOiByZXF1ZXN0LmFwcGxpY2F0aW9uX3VybC5yc3RyaXAoJy8n KSArICcvJywKLSAgICAnYXBpX2tleSc6IGFwaV9rZXksCi0gICAgJ3JlbW90ZV9ob3N0JzogcmVx dWVzdC5yZW1vdGVfYWRkciwKLSAgICAnZ2FsYXh5X3Bhc3Rlcl9wb3J0JzogZ2FsYXh5X3Bhc3Rl cl9wb3J0LAotICAgICdkb2NrZXJfcG9ydCc6IFBPUlQsCi0gICAgJ2NvcnNfb3JpZ2luJzogcmVx dWVzdC5ob3N0X3VybCwKLX0KKyMgV3JpdGUgb3V0IGNvbmYgZmlsZS4uLm5lZWRzIHdvcmsKK2ll LndyaXRlX2NvbmZfZmlsZSh0ZW1wX2RpcikKPTIwCi1pZiBQQVNTV09SRF9BVVRIOgotICAgICMg R2VuZXJhdGUgYSByYW5kb20gcGFzc3dvcmQgKyBzYWx0Ci0gICAgbm90ZWJvb2tfcHdfc2FsdCA9 M0QgaWUuZ2VuZXJhdGVfcGFzc3dvcmQobGVuZ3RoPTNEMTIpCi0gICAgbm90ZWJvb2tfcHcgPTNE IGllLmdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0zRDI0KQotICAgIG0gPTNEIGhhc2hsaWIuc2hh MSgpCi0gICAgbS51cGRhdGUoIG5vdGVib29rX3B3ICsgbm90ZWJvb2tfcHdfc2FsdCApCi0gICAg Y29uZl9maWxlWydub3RlYm9va19wYXNzd29yZCddID0zRCAnc2hhMTolczolcycgJSAobm90ZWJv b2tfcHdfc2FsdCwgbT0KLmhleGRpZ2VzdCgpKQotICAgICMgU2hvdWxkIHdlIHVzZSBwYXNzd29y ZCBiYXNlZCBjb25uZWN0aW9uIG9yICJkZWZhdWx0IiBjb25uZWN0aW9uIHN0eWw9CmUgaW4gZ2Fs YXh5Ci1lbHNlOgotICAgIG5vdGVib29rX3B3ID0zRCAiTm9uZSIKLQotIyBXcml0ZSBjb25mCi13 aXRoIG9wZW4oIG9zLnBhdGguam9pbiggdGVtcF9kaXIsICdjb25mLnlhbWwnICksICd3YicgKSBh cyBoYW5kbGU6Ci0gICAgaGFuZGxlLndyaXRlKCB5YW1sLmR1bXAoY29uZl9maWxlLCBkZWZhdWx0 X2Zsb3dfc3R5bGU9M0RGYWxzZSkgKQo9MjAKICMgUHJlcGFyZSBhbiBlbXB0eSBub3RlYm9vawog bm90ZWJvb2tfaWQgPTNEIGllLmdlbmVyYXRlX2hleCg2NCkKQEAgLTc0LDIxICs1MiwxMiBAQAog ZWxzZToKICAgICBzaHV0aWwuY29weSggaGRhLmZpbGVfbmFtZSwgZW1wdHlfbmJfcGF0aCApCj0y MAotZG9ja2VyX2NtZCA9M0QgaWUuZG9ja2VyX2NtZChpZS5hdHRyLmlweV92aXpfY29uZmlnLCBQ T1JULCB0ZW1wX2RpcikKLQotIyBTZXQgb3VyIHByb3RvIHNvIHBhc3N3b3JkcyBkb24ndCBnbyBp biBjbGVhcgotaWYgU1NMX1VSTFM6Ci0gICAgUFJPVE8gPTNEICJodHRwcyIKLWVsc2U6Ci0gICAg UFJPVE8gPTNEICJodHRwIgo9MjAKICMgQWNjZXNzIFVSTHMgZm9yIHRoZSBub3RlYm9vayBmcm9t IHdpdGhpbiBnYWxheHkuCi1pZiBBUEFDSEVfVVJMUzoKLSAgICBub3RlYm9va19hY2Nlc3NfdXJs ID0zRCAiJXM6Ly8lcy9pcHl0aG9uLyVzL25vdGVib29rcy9pcHl0aG9uX2dhbGF4eV9uPQpvdGVi b29rLmlweW5iIiAlICggUFJPVE8sIEhPU1QsIFBPUlQgKQotICAgIG5vdGVib29rX2xvZ2luX3Vy bCA9M0QgIiVzOi8vJXMvaXB5dGhvbi8lcy9sb2dpbiIgJSAoIFBST1RPLCBIT1NULCBQT1I9ClQg KQotZWxzZToKLSAgICBub3RlYm9va19hY2Nlc3NfdXJsID0zRCAiJXM6Ly8lczolcy9pcHl0aG9u LyVzL25vdGVib29rcy9pcHl0aG9uX2dhbGF4PQp5X25vdGVib29rLmlweW5iIiAlICggUFJPVE8s IEhPU1QsIFBPUlQsIFBPUlQgKQotICAgIG5vdGVib29rX2xvZ2luX3VybCA9M0QgIiVzOi8vJXM6 JXMvaXB5dGhvbi8lcy9sb2dpbiIgJSAoIFBST1RPLCBIT1NULCA9ClBPUlQsIFBPUlQgKQorbm90 ZWJvb2tfYWNjZXNzX3VybCA9M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1RPfTovLyR7SE9TVH0v aXB5dGhvbi8ke1BPUlQ9Cn0vbm90ZWJvb2tzL2lweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5i JykKK25vdGVib29rX2xvZ2luX3VybCA9M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1RPfTovLyR7 SE9TVH0vaXB5dGhvbi8ke1BPUlR9PQovbG9naW4nKQorCitkb2NrZXJfY21kID0zRCBpZS5kb2Nr ZXJfY21kKGllLmF0dHIuaXB5X3Zpel9jb25maWcsIFBPUlQsIHRlbXBfZGlyKQogc3VicHJvY2Vz cy5jYWxsKGRvY2tlcl9jbWQsIHNoZWxsPTNEVHJ1ZSkKPTIwCiAlPgpAQCAtMTAzLDEwICs3Miwx MCBAQAogPGJvZHk+PHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci12YXIgcGFzc3dv cmRfYXV0aCA9M0QgJHsgaWUuamF2YXNjcmlwdF9ib29sZWFuKFBBU1NXT1JEX0FVVEgpIH07Cit2 YXIgcGFzc3dvcmRfYXV0aCA9M0QgJHsgaWUuamF2YXNjcmlwdF9ib29sZWFuKGllLmF0dHIuUEFT U1dPUkRfQVVUSCkgfTsKIHZhciBhcGFjaGVfdXJscyA9M0QgJHsgaWUuamF2YXNjcmlwdF9ib29s ZWFuKEFQQUNIRV9VUkxTKSB9OwogdmFyIG5vdGVib29rX2xvZ2luX3VybCA9M0QgJyR7IG5vdGVi b29rX2xvZ2luX3VybCB9JzsKLXZhciBwYXNzd29yZCA9M0QgJyR7IG5vdGVib29rX3B3IH0nOwor dmFyIHBhc3N3b3JkID0zRCAnJHsgaWUuYXR0ci5ub3RlYm9va19wdyB9JzsKIHZhciBub3RlYm9v a19hY2Nlc3NfdXJsID0zRCAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JzsKIHZhciBnYWxheHlf cm9vdCA9M0QgJyR7IGllLmF0dHIucm9vdCB9JzsKIC8vIExvYWQgbm90ZWJvb2sKCgpodHRwczov L2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZWVmNWE3MzJjNTA5 LwpDaGFuZ2VzZXQ6ICAgZWVmNWE3MzJjNTA5ClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAg ICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgTW9yZSBzdGF0aWMg dmFyaWFibGVzIGdvbmUKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgYWNhMThhYTY3YTdj OGEzOWIyZjRkODgzOTJlZjQ2NGEzYjk2N2ZmMSAtciBlZWY1YTczMmM1MDkyYTFkMDU3NWM0MD0K NmRkNjAzNGUxMTI5NmMzYmMgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTE2OSwxMCArMTY5LDEwIEBACiA8LyVkZWY+ Cj0yMAo9MjAKLTwlZGVmIG5hbWU9M0QiZG9ja2VyX2NtZChpcHlfdml6X2NvbmZpZywgUE9SVCwg dGVtcF9kaXIpIj4KKzwlZGVmIG5hbWU9M0QiZG9ja2VyX2NtZCh0ZW1wX2RpcikiPjwlCiAgICAg cmV0dXJuICclcyBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOjY3ODkgLXYgIiVzOi9p bXBvcnQvIiAlcycgJT0KIFwKLSAgICAgICAgKGlweV92aXpfY29uZmlnLmdldCgiZG9ja2VyIiwg ImNvbW1hbmQiKSwgUE9SVCwgdGVtcF9kaXIsIGlweV92aXpfPQpjb25maWcuZ2V0KCJkb2NrZXIi LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgImltYWdlIikpCisgICAgICAgIChzZWxm LmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0KCJkb2NrZXIiLCAiY29tbWFuZCIpLCBzZWxmLmF0dHIu UE9SVD0KLCB0ZW1wX2RpciwKKyAgICAgICAgIHNlbGYuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXQo ImRvY2tlciIsICJpbWFnZSIpKQogJT48LyVkZWY+CgpkaWZmIC1yIGFjYTE4YWE2N2E3YzhhMzli MmY0ZDg4MzkyZWY0NjRhM2I5NjdmZjEgLXIgZWVmNWE3MzJjNTA5MmExZDA1NzVjNDA9CjZkZDYw MzRlMTEyOTZjM2JjIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxh dGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KQEAgLTI0LDggKzI0LDYgQEAK IGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgaWUuZ2V0X2dhbGF4eV9wYXN0ZXJfcG9ydChpZS5hdHRy LmdhbGF4eV9yb290X2RpciwgPQppZS5hdHRyLmdhbGF4eV9jb25maWcpCj0yMAo9MjAKLUFQQUNI RV9VUkxTID0zRCBpZS5hdHRyLmlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAiYXBh Y2hlX3VybHMiKQotU1NMX1VSTFMgPTNEIGllLmF0dHIuaXB5X3Zpel9jb25maWcuZ2V0Ym9vbGVh bigibWFpbiIsICJzc2wiKQogUE9SVCA9M0QgaWUucHJveHlfcmVxdWVzdF9wb3J0KCkKIEhPU1Qg PTNEIHJlcXVlc3QuaG9zdAogIyBTdHJpcCBvdXQgcG9ydCwgd2UganVzdCB3YW50IHRoZSBVUkwg dGhpcyBnYWxheHkgc2VydmVyIHdhcyBhY2Nlc3NlZCBhdC4KQEAgLTU3LDcgKzU1LDcgQEAKIG5v dGVib29rX2FjY2Vzc191cmwgPTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9UT306Ly8ke0hPU1R9 L2lweXRob24vJHtQT1JUPQp9L25vdGVib29rcy9pcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHlu YicpCiBub3RlYm9va19sb2dpbl91cmwgPTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9UT306Ly8k e0hPU1R9L2lweXRob24vJHtQT1JUfT0KL2xvZ2luJykKPTIwCi1kb2NrZXJfY21kID0zRCBpZS5k b2NrZXJfY21kKGllLmF0dHIuaXB5X3Zpel9jb25maWcsIFBPUlQsIHRlbXBfZGlyKQorZG9ja2Vy X2NtZCA9M0QgaWUuZG9ja2VyX2NtZCh0ZW1wX2RpcikKIHN1YnByb2Nlc3MuY2FsbChkb2NrZXJf Y21kLCBzaGVsbD0zRFRydWUpCj0yMAogJT4KQEAgLTczLDcgKzcxLDcgQEAKPTIwCiA8c2NyaXB0 IHR5cGU9M0QidGV4dC9qYXZhc2NyaXB0Ij4KIHZhciBwYXNzd29yZF9hdXRoID0zRCAkeyBpZS5q YXZhc2NyaXB0X2Jvb2xlYW4oaWUuYXR0ci5QQVNTV09SRF9BVVRIKSB9OwotdmFyIGFwYWNoZV91 cmxzID0zRCAkeyBpZS5qYXZhc2NyaXB0X2Jvb2xlYW4oQVBBQ0hFX1VSTFMpIH07Cit2YXIgYXBh Y2hlX3VybHMgPTNEICR7IGllLmphdmFzY3JpcHRfYm9vbGVhbihpZS5hdHRyLkFQQUNIRV9VUkxT KSB9OwogdmFyIG5vdGVib29rX2xvZ2luX3VybCA9M0QgJyR7IG5vdGVib29rX2xvZ2luX3VybCB9 JzsKIHZhciBwYXNzd29yZCA9M0QgJyR7IGllLmF0dHIubm90ZWJvb2tfcHcgfSc7CiB2YXIgbm90 ZWJvb2tfYWNjZXNzX3VybCA9M0QgJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfSc7CgoKaHR0cHM6 Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2E3ODFmZTczMGVi NC8KQ2hhbmdlc2V0OiAgIGE3ODFmZTczMGViNApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTog ICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIG1vdmVkIEpTIGlu dG8gdGVtcGxhdGUKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgZWVmNWE3MzJjNTA5MmEx ZDA1NzVjNDA2ZGQ2MDM0ZTExMjk2YzNiYyAtciBhNzgxZmU3MzBlYjRjN2I5ZDY5YzI5ND0KMTU1 MzkxM2Y2ZmRlYzA3MGEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTE3NiwzICsxNzYsMTEgQEAKICAgICAgICAgIHNl bGYuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXQoImRvY2tlciIsICJpbWFnZSIpKQogJT48LyVkZWY+ CisKKworPCVkZWYgbmFtZT0zRCJkZWZhdWx0X2phdmFzY3JpcHRfdmFyaWFibGVzKCkiPgordmFy IHBhc3N3b3JkX2F1dGggPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5Q QVNTV09SRF9BVVRIKSA9Cn07Cit2YXIgYXBhY2hlX3VybHMgPTNEICR7IHNlbGYuamF2YXNjcmlw dF9ib29sZWFuKHNlbGYuYXR0ci5BUEFDSEVfVVJMUykgfTsKK3ZhciBwYXNzd29yZCA9M0QgJyR7 IHNlbGYuYXR0ci5ub3RlYm9va19wdyB9JzsKK3ZhciBnYWxheHlfcm9vdCA9M0QgJyR7IHNlbGYu YXR0ci5yb290IH0nOworPC8lZGVmPgoKZGlmZiAtciBlZWY1YTczMmM1MDkyYTFkMDU3NWM0MDZk ZDYwMzRlMTEyOTZjM2JjIC1yIGE3ODFmZTczMGViNGM3YjlkNjljMjk0PQoxNTUzOTEzZjZmZGVj MDcwYSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC03MCwxMiArNzAsOSBAQAogPGJvZHk+ PHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci12YXIgcGFzc3dvcmRfYXV0aCA9M0Qg JHsgaWUuamF2YXNjcmlwdF9ib29sZWFuKGllLmF0dHIuUEFTU1dPUkRfQVVUSCkgfTsKLXZhciBh cGFjaGVfdXJscyA9M0QgJHsgaWUuamF2YXNjcmlwdF9ib29sZWFuKGllLmF0dHIuQVBBQ0hFX1VS TFMpIH07CiskeyBpZS5kZWZhdWx0X2phdmFzY3JpcHRfdmFyaWFibGVzKCkgfQogdmFyIG5vdGVi b29rX2xvZ2luX3VybCA9M0QgJyR7IG5vdGVib29rX2xvZ2luX3VybCB9JzsKLXZhciBwYXNzd29y ZCA9M0QgJyR7IGllLmF0dHIubm90ZWJvb2tfcHcgfSc7CiB2YXIgbm90ZWJvb2tfYWNjZXNzX3Vy bCA9M0QgJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfSc7Ci12YXIgZ2FsYXh5X3Jvb3QgPTNEICck eyBpZS5hdHRyLnJvb3QgfSc7CiAvLyBMb2FkIG5vdGVib29rCiBsb2FkX25vdGVib29rKHBhc3N3 b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vzcz0K X3VybCwgYXBhY2hlX3VybHMsIGdhbGF4eV9yb290KTsKIDwvc2NyaXB0PgoKCmh0dHBzOi8vYml0 YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy83YTdiYjJmYTM5NmIvCkNo YW5nZXNldDogICA3YTdiYjJmYTM5NmIKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAg ICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBMb2FkIEpTIHdpdGggZGVm YXVsdCBuYW1lcwpBZmZlY3RlZCAjOiAgNCBmaWxlcwoKZGlmZiAtciBhNzgxZmU3MzBlYjRjN2I5 ZDY5YzI5NDE1NTM5MTNmNmZkZWMwNzBhIC1yIDdhN2JiMmZhMzk2YjNmZjlmOTgwOGMzPQo1M2Q3 NzdmYTFmZjc0NGRkOCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRp Yy9pcHktZ2FsYXh5LmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vc3RhdGljL2lweS1nYWxheHkuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAot LyoqCi0gKiBJbnRlcm5hbCBmdW5jdGlvbiB0byByZW1vdmUgY29udGVudCBmcm9tIHRoZSBtYWlu IGFyZWEgYW5kIGFkZCB0aGUgbm90ZT0KYm9vay4KLSAqIE5vdCBpZGVtcG90ZW50Ci0gKi8KLWZ1 bmN0aW9uIGFwcGVuZF9ub3RlYm9vayh1cmwpewotICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7 Ci0gICAgJCgnI21haW4nKS5hcHBlbmQoJzxpZnJhbWUgZnJhbWVCb3JkZXI9M0QiMCIgc2VhbWxl c3M9M0Qic2VhbWxlc3MiIHN0eT0KbGU9M0Qid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb3Zl cmZsb3c6aGlkZGVuOyIgc2Nyb2xsaW5nPTNEIm5vIiBzcmM9M0QiPQonKyB1cmwgKyciPjwvaWZy YW1lPicKLSAgICApOwotfQotCi0KLWZ1bmN0aW9uIG1lc3NhZ2VfZmFpbGVkX2F1dGgocGFzc3dv cmQpewotICAgIHRvYXN0ci5pbmZvKAotICAgICAgICAiQXV0b21hdGljIGF1dGhvcml6YXRpb24g ZmFpbGVkLiBZb3UgY2FuIG1hbnVhbGx5IGxvZ2luIHdpdGg6PGJyPiI9CiArIHBhc3N3b3JkICsg Ijxicj48YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRo b24vdz0KaWtpL0F1dG9tYXRpYy1BdXRob3JpemF0aW9uLUZhaWxlZCcgdGFyZ2V0PTNEJ19ibGFu ayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAotICAgICAgICAiUGxlYXNlIGxvZ2luIG1hbnVhbGx5 IiwKLSAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMTAwMDAwLCAndGFw VG9EaXNtaXNzJzogZmFsc2V9Ci0gICAgKTsKLX0KLQotZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRf Y29ubmVjdGlvbigpewotICAgIHRvYXN0ci5lcnJvcigKLSAgICAgICAgIkNvdWxkIG5vdCBjb25u ZWN0IHRvIElQeXRob24gTm90ZWJvb2suIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pPQpzdHJh dG9yLiA8YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRo b24vd2lraS9Db3VsZC09Cm5vdC1jb25uZWN0LXRvLUlQeXRob24tTm90ZWJvb2snIHRhcmdldD0z RCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKLSAgICAiU2VjdXJpdHkgd2FybmluZyIs Ci0gICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9E aXNtaXNzJzogdHJ1ZX0KLSAgICApOwotfQotCi1mdW5jdGlvbiBtZXNzYWdlX25vX2F1dGgoKXsK LSAgICB0b2FzdHIud2FybmluZygKLSAgICAgICAgIklQeXRob24gTm90ZWJvb2sgd2FzIGx1bmNo ZWQgd2l0aG91dCBhdXRoZW50aWNhdGlvbi4gVGhpcyBpcyBhIHNlPQpjdXJpdHkgaXNzdWUuIDxh IGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93aWtp L0k9ClB5dGhvbi1Ob3RlYm9vay13YXMtbHVuY2hlZC13aXRob3V0LWF1dGhlbnRpY2F0aW9uJyB0 YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlID0KZGV0YWlscyAuLi48L2E+IiwKLSAgICAgICAgIlNlY3Vy aXR5IHdhcm5pbmciLAotICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAy MDAwMCwgJ3RhcFRvRGlzbWlzcyc6IGZhbHNlfQotICAgICk7Ci19Ci0KLS8qKgotICogSW5pdGlh bCB2ZXJzaW9uIG9mIGZ1bmN0aW9uIHRvIHRlc3QgYXZhaWxhYmlsaXR5IG9mIFVSTC9yZXNvdXJj ZQotICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMjUzOTAyMDYvMzQ3MzY4Ci0gKi8KLWZ1 bmN0aW9uIHRlc3RfaWVfYXZhaWxhYmlsaXR5KHVybCl7Ci0gICAgaW50ZXJ2YWwgPTNEIHNldElu dGVydmFsKGZ1bmN0aW9uKCl7Ci0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB0eXBlOiAi R0VUIiwKLSAgICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rp b24oKXsKLSAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKLSAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAvL19oYW5kbGVfbm90ZWJvb2tf bG9hZGluZyhwYXNzd29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZWJvPQpva19sb2dpbl91cmwsIG5v dGVib29rX2FjY2Vzc191cmwsIGFwYWNoZV91cmxzLCBkb2NrZXJfZGVsYXkpOwotICAgICAgICAg ICAgfQotICAgICAgICB9KTsKLSAgICB9LCA1MDApOwotfQotCi0vKioKLSAqIExvYWQgYW4gaW50 ZXJhY3RpdmUgZW52aXJvbm1lbnQgKElFKSBmcm9tIGEgcmVtb3RlIFVSTAotICogQHBhcmFtIHtC b29sZWFufSBwYXNzd29yZF9hdXRoIFdoZXRoZXIgb3Igbm90IHRoaXMgcmVzb3VyY2UgcmVxdWly ZXMgcGE9CnNzd29yZCBhdXRoZW50aWNhdGlvbgotICogQHBhcmFtIHtTdHJpbmd9IHBhc3N3b3Jk OiBwYXNzd29yZCB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0byB0aGUgcmVtb3RlIHI9CmVzb3VyY2UK LSAqIEBwYXJhbSB7U3RyaW5nfSBub3RlYm9va19sb2dpbl91cmw6IFVSTCB0aGF0IHNob3VsZCBi ZSBQT1NUZWQgdG8gZm9yIGxvPQpnaW4KLSAqIEBwYXJhbSB7U3RyaW5nfSBub3RlYm9va19hY2Nl c3NfdXJsOiB0aGUgVVJMIGVtYmVkZWQgaW4gdGhlIHBhZ2UgYW5kIGxvPQphZGVkCi0gKiBAcGFy YW0ge0Jvb2xlYW59IGFwYWNoZV91cmxzOiBQcm94eWluZyBpcyBkb25lIG91dHNpZGUgb2YgZ2Fs YXh5IGluIHRoZT0KIHdlYnNlcnZlcgotICogQHBhcmFtIHtTdHJpbmd9IGdhbGF4eV9yb290OiBy b290IG9mIHRoZSBnYWxheHkgc2VydmVyLCB1c2VkIGZvciBmaW5kaW49CmcgdGhlIHN0YXRpYyBz cGlubmVyLmdpZiB0aGF0IHNoaXBzIHdpdGggZ2FsYXh5LgotICoKLSAqIFRPRE86IFRoaXMgZnVu Y3Rpb24gbmVlZHMgYSBsb3Qgb2Ygd29yayB0byBtYWtlIGl0IG1vcmUgZ2VuZXJpYzoKLSAqIFRP RE86IGV4Y2hhbmdlIGxvZ2luX3VybCwgcGFzc3dvcmQsIHBhc3N3b3JkX2F1dGggZm9yIGEgc2lu Z2xlIGZ1bmN0aW9uPQogd2hpY2ggZW5jYXBzdWxhdGVzIGFsbCB0aGUgYXV0aGVudGljYXRpb24g cHJvY2VkdXJlLCBhcyB0aGF0IHdpbGwgZGlmZmVyIGI9CmV0d2VlbiBJRXMuCi0gKi8KLWZ1bmN0 aW9uIGxvYWRfbm90ZWJvb2socGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2lu X3VybCwgbm90ZWJvPQpva19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscywgZ2FsYXh5X3Jvb3Qpewot ICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7Ci0gICAgICAgICQoJyNtYWluJyku YXBwZW5kKCc8aW1nIGlkPTNEInNwaW5uZXIiIHNyYz0zRCInICsgZ2FsYXh5X3Jvb3QgKyAnLz0K c3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0eWxlPTNEInBvc2l0aW9uOmFic29sdXRl O21hcmdpbjphdXRvO3RvcDowPQo7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7Ij4nKTsKLSAgICAg ICAgaW50ZXJ2YWwgPTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICAkLmFq YXgoewotICAgICAgICAgICAgICAgIHR5cGU6ICJHRVQiLAotICAgICAgICAgICAgICAgIHVybDog bm90ZWJvb2tfYWNjZXNzX3VybCwKLSAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigp ewotICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKLSAgICAgICAg ICAgICAgICAgICAgX2hhbmRsZV9ub3RlYm9va19sb2FkaW5nKHBhc3N3b3JkX2F1dGgsIHBhc3N3 b3JkLCBub3RlPQpib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzX3VybCwgYXBhY2hlX3Vy bHMpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9u KCl7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJTb21lIGVycm9yIik7Ci0gICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIDUwMCk7Ci0gICAgfSk7 Ci19Ci0KLS8qKgotICogSW50ZXJuYWwgZnVuY3Rpb24KLSAqLwotZnVuY3Rpb24gX2hhbmRsZV9u b3RlYm9va19sb2FkaW5nKHBhc3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl89 CnVybCwgbm90ZWJvb2tfYWNjZXNzX3VybCwgYXBhY2hlX3VybHMpewotICAgIGlmICggcGFzc3dv cmRfYXV0aCApIHsKLSAgICAgICAgLy8gTWFrZSBhbiBBSkFYIFBPU1QKLSAgICAgICAgJC5hamF4 KHsKLSAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKLSAgICAgICAgICAgIC8vIHRvIHRoZSBMb2dp biBVUkwKLSAgICAgICAgICAgIHVybDogbm90ZWJvb2tfbG9naW5fdXJsLAotICAgICAgICAgICAg Ly8gV2l0aCBvdXIgcGFzc3dvcmQKLSAgICAgICAgICAgIGRhdGE6IHsKLSAgICAgICAgICAgICAg ICAncGFzc3dvcmQnOiBwYXNzd29yZAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHhockZp ZWxkczogewotICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZQotICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0aGUgbm90 ZWJvb2sKLSAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICAgICAg YXBwZW5kX25vdGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOwotICAgICAgICAgICAgfSwKLSAg ICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihqcXhociwgc3RhdHVzLCBlcnJvcil7Ci0gICAgICAg ICAgICAgICAgaWYocGFzc3dvcmRfYXV0aCAmJiAhYXBhY2hlX3VybHMpewotICAgICAgICAgICAg ICAgICAgICAvLyBGYWlsdXJlIGhhcHBlbnMgZHVlIHRvIENPUlMKLSAgICAgICAgICAgICAgICAg ICAgbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29yZCk7Ci0gICAgICAgICAgICAgICAgICAgIGFw cGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKLSAgICAgICAgICAgICAgICB9ZWxz ZXsKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9mYWlsZWRfY29ubmVjdGlvbigpOwotICAg ICAgICAgICAgICAgICAgICAvLyBEbyB3ZSB3YW50IHRvIHRyeSBhbmQgbG9hZCB0aGUgbm90ZWJv b2sgYW55d2F5PyBKdXM9CnQgaW4gY2FzZT8KLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kX25v dGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvLyBOb3QgdXNp bmcgcGFzc3dvcmQgYXV0aCwganVzdCBlbWJlZCBpdCB0byBhdm9pZCBjb250ZW50LW9yaWdpbiA9 Cmlzc3Vlcy4KLSAgICAgICAgbWVzc2FnZV9ub19hdXRoKCk7Ci0gICAgICAgIGFwcGVuZF9ub3Rl Ym9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKLSAgICB9Ci19CgpkaWZmIC1yIGE3ODFmZTczMGVi NGM3YjlkNjljMjk0MTU1MzkxM2Y2ZmRlYzA3MGEgLXIgN2E3YmIyZmEzOTZiM2ZmOWY5ODA4YzM9 CjUzZDc3N2ZhMWZmNzQ0ZGQ4IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v c3RhdGljL2lweXRob24uanMKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHl0aG9uLmpzCkBAIC0wLDAgKzEsMTI0IEBACisv KioKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHJlbW92ZSBjb250ZW50IGZyb20gdGhlIG1haW4g YXJlYSBhbmQgYWRkIHRoZSBub3RlPQpib29rLgorICogTm90IGlkZW1wb3RlbnQKKyAqLworZnVu Y3Rpb24gYXBwZW5kX25vdGVib29rKHVybCl7CisgICAgJCgnI3NwaW5uZXInKS5yZW1vdmUoKTsK KyAgICAkKCcjbWFpbicpLmFwcGVuZCgnPGlmcmFtZSBmcmFtZUJvcmRlcj0zRCIwIiBzZWFtbGVz cz0zRCJzZWFtbGVzcyIgc3R5PQpsZT0zRCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVy ZmxvdzpoaWRkZW47IiBzY3JvbGxpbmc9M0Qibm8iIHNyYz0zRCI9CicrIHVybCArJyI+PC9pZnJh bWU+JworICAgICk7Cit9CisKKworZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29y ZCl7CisgICAgdG9hc3RyLmluZm8oCisgICAgICAgICJBdXRvbWF0aWMgYXV0aG9yaXphdGlvbiBm YWlsZWQuIFlvdSBjYW4gbWFudWFsbHkgbG9naW4gd2l0aDo8YnI+Ij0KICsgcGFzc3dvcmQgKyAi PGJyPjxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhv bi93PQppa2kvQXV0b21hdGljLUF1dGhvcml6YXRpb24tRmFpbGVkJyB0YXJnZXQ9M0QnX2JsYW5r Jz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCisgICAgICAgICJQbGVhc2UgbG9naW4gbWFudWFsbHki LAorICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAxMDAwMDAsICd0YXBU b0Rpc21pc3MnOiBmYWxzZX0KKyAgICApOworfQorCitmdW5jdGlvbiBtZXNzYWdlX2ZhaWxlZF9j b25uZWN0aW9uKCl7CisgICAgdG9hc3RyLmVycm9yKAorICAgICAgICAiQ291bGQgbm90IGNvbm5l Y3QgdG8gSVB5dGhvbiBOb3RlYm9vay4gUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmk9CnN0cmF0 b3IuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhv bi93aWtpL0NvdWxkLT0Kbm90LWNvbm5lY3QtdG8tSVB5dGhvbi1Ob3RlYm9vaycgdGFyZ2V0PTNE J19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAorICAgICJTZWN1cml0eSB3YXJuaW5nIiwK KyAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rp c21pc3MnOiB0cnVlfQorICAgICk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2Vfbm9fYXV0aCgpewor ICAgIHRvYXN0ci53YXJuaW5nKAorICAgICAgICAiSVB5dGhvbiBOb3RlYm9vayB3YXMgbHVuY2hl ZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLiBUaGlzIGlzIGEgc2U9CmN1cml0eSBpc3N1ZS4gPGEg aHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uL3dpa2kv ST0KUHl0aG9uLU5vdGVib29rLXdhcy1sdW5jaGVkLXdpdGhvdXQtYXV0aGVudGljYXRpb24nIHRh cmdldD0zRCdfYmxhbmsnPk1vcmUgPQpkZXRhaWxzIC4uLjwvYT4iLAorICAgICAgICAiU2VjdXJp dHkgd2FybmluZyIsCisgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIw MDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9CisgICAgKTsKK30KKworLyoqCisgKiBJbml0aWFs IHZlcnNpb24gb2YgZnVuY3Rpb24gdG8gdGVzdCBhdmFpbGFiaWxpdHkgb2YgVVJML3Jlc291cmNl CisgKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8yNTM5MDIwNi8zNDczNjgKKyAqLworZnVu Y3Rpb24gdGVzdF9pZV9hdmFpbGFiaWxpdHkodXJsKXsKKyAgICBpbnRlcnZhbCA9M0Qgc2V0SW50 ZXJ2YWwoZnVuY3Rpb24oKXsKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIHR5cGU6ICJH RVQiLAorICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlv bigpeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAg ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIC8vX2hhbmRsZV9ub3RlYm9va19s b2FkaW5nKHBhc3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm89Cm9rX2xvZ2luX3VybCwgbm90 ZWJvb2tfYWNjZXNzX3VybCwgYXBhY2hlX3VybHMsIGRvY2tlcl9kZWxheSk7CisgICAgICAgICAg ICB9CisgICAgICAgIH0pOworICAgIH0sIDUwMCk7Cit9CisKKy8qKgorICogTG9hZCBhbiBpbnRl cmFjdGl2ZSBlbnZpcm9ubWVudCAoSUUpIGZyb20gYSByZW1vdGUgVVJMCisgKiBAcGFyYW0ge0Jv b2xlYW59IHBhc3N3b3JkX2F1dGggV2hldGhlciBvciBub3QgdGhpcyByZXNvdXJjZSByZXF1aXJl cyBwYT0Kc3N3b3JkIGF1dGhlbnRpY2F0aW9uCisgKiBAcGFyYW0ge1N0cmluZ30gcGFzc3dvcmQ6 IHBhc3N3b3JkIHVzZWQgdG8gYXV0aGVudGljYXRlIHRvIHRoZSByZW1vdGUgcj0KZXNvdXJjZQor ICogQHBhcmFtIHtTdHJpbmd9IG5vdGVib29rX2xvZ2luX3VybDogVVJMIHRoYXQgc2hvdWxkIGJl IFBPU1RlZCB0byBmb3IgbG89CmdpbgorICogQHBhcmFtIHtTdHJpbmd9IG5vdGVib29rX2FjY2Vz c191cmw6IHRoZSBVUkwgZW1iZWRlZCBpbiB0aGUgcGFnZSBhbmQgbG89CmFkZWQKKyAqIEBwYXJh bSB7Qm9vbGVhbn0gYXBhY2hlX3VybHM6IFByb3h5aW5nIGlzIGRvbmUgb3V0c2lkZSBvZiBnYWxh eHkgaW4gdGhlPQogd2Vic2VydmVyCisgKiBAcGFyYW0ge1N0cmluZ30gZ2FsYXh5X3Jvb3Q6IHJv b3Qgb2YgdGhlIGdhbGF4eSBzZXJ2ZXIsIHVzZWQgZm9yIGZpbmRpbj0KZyB0aGUgc3RhdGljIHNw aW5uZXIuZ2lmIHRoYXQgc2hpcHMgd2l0aCBnYWxheHkuCisgKgorICogVE9ETzogVGhpcyBmdW5j dGlvbiBuZWVkcyBhIGxvdCBvZiB3b3JrIHRvIG1ha2UgaXQgbW9yZSBnZW5lcmljOgorICogVE9E TzogZXhjaGFuZ2UgbG9naW5fdXJsLCBwYXNzd29yZCwgcGFzc3dvcmRfYXV0aCBmb3IgYSBzaW5n bGUgZnVuY3Rpb249CiB3aGljaCBlbmNhcHN1bGF0ZXMgYWxsIHRoZSBhdXRoZW50aWNhdGlvbiBw cm9jZWR1cmUsIGFzIHRoYXQgd2lsbCBkaWZmZXIgYj0KZXR3ZWVuIElFcy4KKyAqLworZnVuY3Rp b24gbG9hZF9ub3RlYm9vayhwYXNzd29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5f dXJsLCBub3RlYm89Cm9rX2FjY2Vzc191cmwsIGFwYWNoZV91cmxzLCBnYWxheHlfcm9vdCl7Cisg ICAgJCggZG9jdW1lbnQgKS5yZWFkeShmdW5jdGlvbigpIHsKKyAgICAgICAgJCgnI21haW4nKS5h cHBlbmQoJzxpbWcgaWQ9M0Qic3Bpbm5lciIgc3JjPTNEIicgKyBnYWxheHlfcm9vdCArICcvPQpz dGF0aWMvc3R5bGUvbGFyZ2VzcGlubmVyLmdpZiIgc3R5bGU9M0QicG9zaXRpb246YWJzb2x1dGU7 bWFyZ2luOmF1dG87dG9wOjA9CjtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsiPicpOworICAgICAg ICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICQuYWph eCh7CisgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgICAgICAgICAgdXJsOiBu b3RlYm9va19hY2Nlc3NfdXJsLAorICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7 CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAg ICAgICAgICAgICBfaGFuZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmRfYXV0aCwgcGFzc3dv cmQsIG5vdGU9CmJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJs cyk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24o KXsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlNvbWUgZXJyb3IiKTsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwgNTAwKTsKKyAgICB9KTsK K30KKworLyoqCisgKiBJbnRlcm5hbCBmdW5jdGlvbgorICovCitmdW5jdGlvbiBfaGFuZGxlX25v dGVib29rX2xvYWRpbmcocGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2luXz0K dXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscyl7CisgICAgaWYgKCBwYXNzd29y ZF9hdXRoICkgeworICAgICAgICAvLyBNYWtlIGFuIEFKQVggUE9TVAorICAgICAgICAkLmFqYXgo eworICAgICAgICAgICAgdHlwZTogIlBPU1QiLAorICAgICAgICAgICAgLy8gdG8gdGhlIExvZ2lu IFVSTAorICAgICAgICAgICAgdXJsOiBub3RlYm9va19sb2dpbl91cmwsCisgICAgICAgICAgICAv LyBXaXRoIG91ciBwYXNzd29yZAorICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAg ICdwYXNzd29yZCc6IHBhc3N3b3JkCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeGhyRmll bGRzOiB7CisgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlCisgICAgICAgICAg ICB9LAorICAgICAgICAgICAgLy8gSWYgdGhhdCBpcyBzdWNjZXNzZnVsLCBsb2FkIHRoZSBub3Rl Ym9vaworICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICBh cHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsKKyAgICAgICAg ICAgICAgICBpZihwYXNzd29yZF9hdXRoICYmICFhcGFjaGVfdXJscyl7CisgICAgICAgICAgICAg ICAgICAgIC8vIEZhaWx1cmUgaGFwcGVucyBkdWUgdG8gQ09SUworICAgICAgICAgICAgICAgICAg ICBtZXNzYWdlX2ZhaWxlZF9hdXRoKHBhc3N3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgYXBw ZW5kX25vdGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOworICAgICAgICAgICAgICAgIH1lbHNl eworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX2ZhaWxlZF9jb25uZWN0aW9uKCk7CisgICAg ICAgICAgICAgICAgICAgIC8vIERvIHdlIHdhbnQgdG8gdHJ5IGFuZCBsb2FkIHRoZSBub3RlYm9v ayBhbnl3YXk/IEp1cz0KdCBpbiBjYXNlPworICAgICAgICAgICAgICAgICAgICBhcHBlbmRfbm90 ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8vIE5vdCB1c2lu ZyBwYXNzd29yZCBhdXRoLCBqdXN0IGVtYmVkIGl0IHRvIGF2b2lkIGNvbnRlbnQtb3JpZ2luID0K aXNzdWVzLgorICAgICAgICBtZXNzYWdlX25vX2F1dGgoKTsKKyAgICAgICAgYXBwZW5kX25vdGVi b29rKG5vdGVib29rX2FjY2Vzc191cmwpOworICAgIH0KK30KCmRpZmYgLXIgYTc4MWZlNzMwZWI0 YzdiOWQ2OWMyOTQxNTUzOTEzZjZmZGVjMDcwYSAtciA3YTdiYjJmYTM5NmIzZmY5Zjk4MDhjMz0K NTNkNzc3ZmExZmY3NDRkZDggY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0 aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25z L2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTE4NCwzICsxODQsMTIgQEAKIHZhciBwYXNz d29yZCA9M0QgJyR7IHNlbGYuYXR0ci5ub3RlYm9va19wdyB9JzsKIHZhciBnYWxheHlfcm9vdCA9 M0QgJyR7IHNlbGYuYXR0ci5yb290IH0nOwogPC8lZGVmPgorCisKKzwlZGVmIG5hbWU9M0QibG9h ZF9kZWZhdWx0X2pzKCkiPgorJHtoLmNzcyggJ2Jhc2UnICkgfQorJHtoLmpzKCAnbGlicy9qcXVl cnkvanF1ZXJ5JyApIH0KKyR7aC5qcyggJ2xpYnMvdG9hc3RyJyApIH0KKyR7aC5qYXZhc2NyaXB0 X2xpbmsoIGllLmF0dHIuYXBwX3Jvb3QgKyAnaWUuanMnICl9Ciske2guamF2YXNjcmlwdF9saW5r KCBpZS5hdHRyLmFwcF9yb290ICsgaWUuYXR0ci52aXpfbmFtZSArICcuanMnICl9Cis8LyVkZWY+ CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzUw ODdkNzM2YzI4My8KQ2hhbmdlc2V0OiAgIDUwODdkNzM2YzI4MwpVc2VyOiAgICAgICAgZXJhc2No ZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFJl bW92ZWQgbW9yZSB1bnVzZWQgY29kZQpBZmZlY3RlZCAjOiAgMiBmaWxlcwoKZGlmZiAtciA3YTdi YjJmYTM5NmIzZmY5Zjk4MDhjMzUzZDc3N2ZhMWZmNzQ0ZGQ4IC1yIDUwODdkNzM2YzI4MzM5ZTlj YWRkYmJhPQo0YzdmYmE1ZmNiYzFkOWQxMSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwpAQCAtNDcsNyArNDcsMTIgQEAKICAg ICBzZWxmLmF0dHIuQVBBQ0hFX1VSTFMgPTNEIHNlbGYuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXRi b29sZWFuKCJtYWluIiwgPQoiYXBhY2hlX3VybHMiKQogICAgIHNlbGYuYXR0ci5TU0xfVVJMUyA9 M0Qgc2VsZi5hdHRyLmlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAic3M9CmwiKQog ICAgIHNlbGYuYXR0ci5QT1JUID0zRCBzZWxmLnByb3h5X3JlcXVlc3RfcG9ydCgpCi0gICAgc2Vs Zi5hdHRyLkhPU1QgPTNEIHNlbGYuYXR0ci5yZXF1ZXN0Lmhvc3QKKworICAgIEhPU1QgPTNEIHNl bGYuYXR0ci5yZXF1ZXN0Lmhvc3QKKyAgICAjIFN0cmlwIG91dCBwb3J0LCB3ZSBqdXN0IHdhbnQg dGhlIFVSTCB0aGlzIGdhbGF4eSBzZXJ2ZXIgd2FzIGFjY2Vzc2VkPQogYXQuCisgICAgaWYgJzon IGluIEhPU1Q6CisgICAgICAgIEhPU1QgPTNEIEhPU1RbMDpIT1NULmluZGV4KCc6JyldCisgICAg c2VsZi5hdHRyLkhPU1QgPTNEIEhPU1QKICU+PC8lZGVmPgo9MjAKCmRpZmYgLXIgN2E3YmIyZmEz OTZiM2ZmOWY5ODA4YzM1M2Q3NzdmYTFmZjc0NGRkOCAtciA1MDg3ZDczNmMyODMzOWU5Y2FkZGJi YT0KNGM3ZmJhNWZjYmMxZDlkMTEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMjQsMTIg KzI0LDYgQEAKIGdhbGF4eV9wYXN0ZXJfcG9ydCA9M0QgaWUuZ2V0X2dhbGF4eV9wYXN0ZXJfcG9y dChpZS5hdHRyLmdhbGF4eV9yb290X2RpciwgPQppZS5hdHRyLmdhbGF4eV9jb25maWcpCj0yMAo9 MjAKLVBPUlQgPTNEIGllLnByb3h5X3JlcXVlc3RfcG9ydCgpCi1IT1NUID0zRCByZXF1ZXN0Lmhv c3QKLSMgU3RyaXAgb3V0IHBvcnQsIHdlIGp1c3Qgd2FudCB0aGUgVVJMIHRoaXMgZ2FsYXh5IHNl cnZlciB3YXMgYWNjZXNzZWQgYXQuCi1pZiAnOicgaW4gSE9TVDoKLSAgICBIT1NUID0zRCBIT1NU WzA6SE9TVC5pbmRleCgnOicpXQotCiB0ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKCB0ZW1w ZmlsZS5ta2R0ZW1wKCkgKQogaWUuYXR0ci5hcGlfa2V5ID0zRCBnZXRfYXBpX2tleSgpCj0yMApA QCAtNjEsMTEgKzU1LDcgQEAKICU+PGh0bWw+PGhlYWQ+Ci0ke2guY3NzKCAnYmFzZScgKSB9Ci0k e2guanMoICdsaWJzL2pxdWVyeS9qcXVlcnknICkgfQotJHtoLmpzKCAnbGlicy90b2FzdHInICkg fQotIyMgTG9hZCBJUHl0aG9uLUdhbGF4eSBjb25uZWN0b3IKLSR7aC5qYXZhc2NyaXB0X2xpbmso IGllLmF0dHIuYXBwX3Jvb3QgKyAnaXB5LWdhbGF4eS5qcycgKX0KKyR7IGllLmxvYWRfZGVmYXVs dF9qcygpIH0KIDwvaGVhZD48Ym9keT4KPTIwCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4 eS9nYWxheHktY2VudHJhbC9jb21taXRzL2RhNjQxYmNiMjdjYy8KQ2hhbmdlc2V0OiAgIGRhNjQx YmNiMjdjYwpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6 Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEJ1Z2ZpeCBhbmQgcmVtb3ZlIG5vIGxvbmdlciB1c2Vk IGltcG9ydHMKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgNTA4N2Q3MzZjMjgzMzllOWNh ZGRiYmE0YzdmYmE1ZmNiYzFkOWQxMSAtciBkYTY0MWJjYjI3Y2MzOTUxNDE0MGE0Nz0KYTZmZTUy ZGVhN2M3MThiMjEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTE5NSw2ICsxOTUsNiBAQAogJHtoLmNzcyggJ2Jhc2Un ICkgfQogJHtoLmpzKCAnbGlicy9qcXVlcnkvanF1ZXJ5JyApIH0KICR7aC5qcyggJ2xpYnMvdG9h c3RyJyApIH0KLSR7aC5qYXZhc2NyaXB0X2xpbmsoIGllLmF0dHIuYXBwX3Jvb3QgKyAnaWUuanMn ICl9Ci0ke2guamF2YXNjcmlwdF9saW5rKCBpZS5hdHRyLmFwcF9yb290ICsgaWUuYXR0ci52aXpf bmFtZSArICcuanMnICl9Ciske2guamF2YXNjcmlwdF9saW5rKCBzZWxmLmF0dHIuYXBwX3Jvb3Qg KyAnaWUuanMnICl9Ciske2guamF2YXNjcmlwdF9saW5rKCBzZWxmLmF0dHIuYXBwX3Jvb3QgKyBz ZWxmLmF0dHIudml6X2lkICsgJy5qcycgKX0KIDwvJWRlZj4KCmRpZmYgLXIgNTA4N2Q3MzZjMjgz MzllOWNhZGRiYmE0YzdmYmE1ZmNiYzFkOWQxMSAtciBkYTY0MWJjYjI3Y2MzOTUxNDE0MGE0Nz0K YTZmZTUyZGVhN2M3MThiMjEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMSwxNiArMSwx NiBAQAogPCVuYW1lc3BhY2UgZmlsZT0zRCJpZS5tYWtvIiBuYW1lPTNEImllIi8+PCUKIGltcG9y dCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB5YW1sCi1pbXBvcnQgc2hsZXgK LWltcG9ydCByYW5kb20KKyNpbXBvcnQgc3lzCisjaW1wb3J0IHRpbWUKKyNpbXBvcnQgeWFtbAor I2ltcG9ydCBzaGxleAorI2ltcG9ydCByYW5kb20KIGltcG9ydCBzaHV0aWwKLWltcG9ydCBoYXNo bGliCisjaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MK LWltcG9ydCBDb25maWdQYXJzZXIKKyNpbXBvcnQgQ29uZmlnUGFyc2VyCj0yMAogaWUuc2V0X2lk KCJpcHl0aG9uIikKIGllLnJlZ2lzdGVyX2dhbGF4eV9vYmplY3RzKHRyYW5zLCBoLCByZXNwb25z ZSwgcGx1Z2luX3BhdGgsIHJlcXVlc3QpCkBAIC0yMSwxNSArMjEsMTQgQEAKICAgICAncGFzc3dv cmRfYXV0aCc6IEZhbHNlLAogICAgICdzc2wnOiBGYWxzZX0pCj0yMAotZ2FsYXh5X3Bhc3Rlcl9w b3J0ID0zRCBpZS5nZXRfZ2FsYXh5X3Bhc3Rlcl9wb3J0KGllLmF0dHIuZ2FsYXh5X3Jvb3RfZGly LCA9CmllLmF0dHIuZ2FsYXh5X2NvbmZpZykKLQotCisjIENyZWF0ZSB0ZW1wZGlyIGluIGdhbGF4 eQogdGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVtcCgpICkKKyMg U2V0IHVzZXIncyBBUEkga2V5CiBpZS5hdHRyLmFwaV9rZXkgPTNEIGdldF9hcGlfa2V5KCkKLQog IyBXcml0ZSBvdXQgY29uZiBmaWxlLi4ubmVlZHMgd29yawogaWUud3JpdGVfY29uZl9maWxlKHRl bXBfZGlyKQo9MjAKKyMjIElQeXRob24gU3BlY2lmaWMKPTIwCiAjIFByZXBhcmUgYW4gZW1wdHkg bm90ZWJvb2sKIG5vdGVib29rX2lkID0zRCBpZS5nZW5lcmF0ZV9oZXgoNjQpCkBAIC00NSwxMyAr NDQsMTQgQEAKICAgICBzaHV0aWwuY29weSggaGRhLmZpbGVfbmFtZSwgZW1wdHlfbmJfcGF0aCAp Cj0yMAo9MjAKKyMjIEdlbmVyYWwgSUUgc3BlY2lmaWMKKwogIyBBY2Nlc3MgVVJMcyBmb3IgdGhl IG5vdGVib29rIGZyb20gd2l0aGluIGdhbGF4eS4KIG5vdGVib29rX2FjY2Vzc191cmwgPTNEIGll LnVybF90ZW1wbGF0ZSgnJHtQUk9UT306Ly8ke0hPU1R9L2lweXRob24vJHtQT1JUPQp9L25vdGVi b29rcy9pcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYicpCiBub3RlYm9va19sb2dpbl91cmwg PTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9UT306Ly8ke0hPU1R9L2lweXRob24vJHtQT1JUfT0K L2xvZ2luJykKPTIwCiBkb2NrZXJfY21kID0zRCBpZS5kb2NrZXJfY21kKHRlbXBfZGlyKQogc3Vi cHJvY2Vzcy5jYWxsKGRvY2tlcl9jbWQsIHNoZWxsPTNEVHJ1ZSkKLQogJT48aHRtbD48aGVhZD4K CgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOGUz MTljMDkyNWUyLwpDaGFuZ2VzZXQ6ICAgOGUzMTljMDkyNWUyClVzZXI6ICAgICAgICBlcmFzY2hl MgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgUmVt b3ZlZCAnZ2FsYXh5IGRlZmF1bHRzJwpBZmZlY3RlZCAjOiAgMiBmaWxlcwoKZGlmZiAtciBkYTY0 MWJjYjI3Y2MzOTUxNDE0MGE0N2E2ZmU1MmRlYTdjNzE4YjIxIC1yIDhlMzE5YzA5MjVlMmE0OGI0 ODkwMjA0PQo3NmZmNjk4ZmJhMTM0OTE2MyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwpAQCAtMTUsMTIgKzE1LDEwIEBACj0y MAogPCVkZWYgbmFtZT0zRCJzZXRfaWQobmFtZSkiPjwlCisgICAgIiIiCisgICAgICAgIElFcyBt dXN0IHJlZ2lzdGVyIHRoZWlyIG5hbWUsIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNvbnN0cnVjdGlu ZyBzdD0KcmluZ3MKKyAgICAiIiIKICAgICBzZWxmLmF0dHIudml6X2lkID0zRCBuYW1lCi0lPgot PC8lZGVmPgotCi08JWRlZiBuYW1lPTNEInJlZ2lzdGVyX2dhbGF4eV9vYmplY3RzKHRyYW5zLCBo LCByZXNwb25zZSwgcGx1Z2luX3BhdGgsIHJlcT0KdWVzdCkiPgotPCUKICAgICBzZWxmLmF0dHIu dHJhbnMgPTNEIHRyYW5zCiAgICAgc2VsZi5hdHRyLmhpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3Vy aXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApCiAgICAgc2VsZi5hdHRyLmggPTNEIGgK CmRpZmYgLXIgZGE2NDFiY2IyN2NjMzk1MTQxNDBhNDdhNmZlNTJkZWE3YzcxOGIyMSAtciA4ZTMx OWMwOTI1ZTJhNDhiNDg5MDIwND0KNzZmZjY5OGZiYTEzNDkxNjMgY29uZmlnL3BsdWdpbnMvdmlz dWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisr KyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRo b24ubWFrbwpAQCAtMSwxOSArMSwxMyBAQAogPCVuYW1lc3BhY2UgZmlsZT0zRCJpZS5tYWtvIiBu YW1lPTNEImllIi8+PCUKIGltcG9ydCBvcwotI2ltcG9ydCBzeXMKLSNpbXBvcnQgdGltZQotI2lt cG9ydCB5YW1sCi0jaW1wb3J0IHNobGV4Ci0jaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNodXRpbAot I2ltcG9ydCBoYXNobGliCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzdWJwcm9jZXNzCi0jaW1w b3J0IENvbmZpZ1BhcnNlcgo9MjAKKyMgU2V0cyBJRCBhbmQgc2V0cyB1cCBhIGxvdCBvZiBvdGhl ciB2YXJpYWJsZXMKIGllLnNldF9pZCgiaXB5dGhvbiIpCi1pZS5yZWdpc3Rlcl9nYWxheHlfb2Jq ZWN0cyh0cmFucywgaCwgcmVzcG9uc2UsIHBsdWdpbl9wYXRoLCByZXF1ZXN0KQorCiBpZS5yZWdp c3Rlcl9kZWZhdWx0cyh7CiAgICAgJ2FwYWNoZV91cmxzJzogRmFsc2UsCiAgICAgJ2NvbW1hbmQn OiAnZG9ja2VyJywKQEAgLTI5LDcgKzIzLDYgQEAKIGllLndyaXRlX2NvbmZfZmlsZSh0ZW1wX2Rp cikKPTIwCiAjIyBJUHl0aG9uIFNwZWNpZmljCi0KICMgUHJlcGFyZSBhbiBlbXB0eSBub3RlYm9v awogbm90ZWJvb2tfaWQgPTNEIGllLmdlbmVyYXRlX2hleCg2NCkKIHdpdGggb3Blbiggb3MucGF0 aC5qb2luKCBpZS5hdHRyLm91cl90ZW1wbGF0ZV9kaXIsICdub3RlYm9vay5pcHluYicgKSwgJ3In PQopIGFzIG5iX2hhbmRsZToKQEAgLTQ1LDcgKzM4LDYgQEAKPTIwCj0yMAogIyMgR2VuZXJhbCBJ RSBzcGVjaWZpYwotCiAjIEFjY2VzcyBVUkxzIGZvciB0aGUgbm90ZWJvb2sgZnJvbSB3aXRoaW4g Z2FsYXh5Lgogbm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1RP fTovLyR7SE9TVH0vaXB5dGhvbi8ke1BPUlQ9Cn0vbm90ZWJvb2tzL2lweXRob25fZ2FsYXh5X25v dGVib29rLmlweW5iJykKIG5vdGVib29rX2xvZ2luX3VybCA9M0QgaWUudXJsX3RlbXBsYXRlKCck e1BST1RPfTovLyR7SE9TVH0vaXB5dGhvbi8ke1BPUlR9PQovbG9naW4nKQpAQCAtNjYsOSArNTgs NyBAQAogLy8gTG9hZCBub3RlYm9vawogbG9hZF9ub3RlYm9vayhwYXNzd29yZF9hdXRoLCBwYXNz d29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3M9Cl91cmwsIGFwYWNoZV91 cmxzLCBnYWxheHlfcm9vdCk7CiA8L3NjcmlwdD4KLQogPGRpdiBpZD0zRCJtYWluIiB3aWR0aD0z RCIxMDAlIiBoZWlnaHQ9M0QiMTAwJSI+PC9kaXY+Ci0KIDwvYm9keT48L2h0bWw+CgoKaHR0cHM6 Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzJlZGI2MWU0YzQ4 Zi8KQ2hhbmdlc2V0OiAgIDJlZGI2MWU0YzQ4ZgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTog ICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFJlZmFjdG9yZWQg bW9yZSB2YXJpYWJsZXMgb3V0CkFmZmVjdGVkICM6ICAyIGZpbGVzCgpkaWZmIC1yIDhlMzE5YzA5 MjVlMmE0OGI0ODkwMjA0NzZmZjY5OGZiYTEzNDkxNjMgLXIgMmVkYjYxZTRjNDhmYTQ4OGQ1ZDZl Yjc9CjBiMmE1MjNlOWZiM2FmYjJlIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vdGVtcGxhdGVzL2llLm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCkBAIC0xNywzNiArMTcsMjkgQEAKIDwlCiAg ICAgIiIiCiAgICAgICAgIElFcyBtdXN0IHJlZ2lzdGVyIHRoZWlyIG5hbWUsIHNvIGl0IGNhbiBi ZSB1c2VkIGluIGNvbnN0cnVjdGluZyBzdD0KcmluZ3MKKworICAgICAgICBBZGRpdGlvbmFsbHkg dGhpcyBtZXRob2Qgc3RvcmVzIGxvdHMgb2YgY29uZmlnIG9wdGlvbnMgd2Ugd2FudCB0byA9CmFj Y2VzcyBlbHNld2hlcmUuIFRoaXMKKyAgICAgICAgc2hvdWxkIGJlIHJlZmFjdG9yZWQKICAgICAi IiIKICAgICBzZWxmLmF0dHIudml6X2lkID0zRCBuYW1lCi0gICAgc2VsZi5hdHRyLnRyYW5zID0z RCB0cmFucwogICAgIHNlbGYuYXR0ci5oaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNv ZGVfaWQoIHRyYW5zLmhpc3RvcnkuaWQgKQotICAgIHNlbGYuYXR0ci5oID0zRCBoCi0gICAgc2Vs Zi5hdHRyLnBsdWdpbl9wYXRoID0zRCBwbHVnaW5fcGF0aAotICAgIHNlbGYuYXR0ci5yZXNwb25z ZSA9M0QgcmVzcG9uc2UKICAgICBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZyA9M0QgdHJhbnMuYXBw LmNvbmZpZwogICAgIHNlbGYuYXR0ci5nYWxheHlfcm9vdF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0 aChzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy49CnJvb3QpCiAgICAgc2VsZi5hdHRyLnJvb3QgPTNE IGgudXJsX2ZvcigiLyIpCiAgICAgc2VsZi5hdHRyLmFwcF9yb290ID0zRCBzZWxmLmF0dHIucm9v dCArICJwbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRobz0Kbi9zdGF0aWMvIgotICAgIHNlbGYu YXR0ci5yZXF1ZXN0ID0zRCByZXF1ZXN0Ci0lPgotPC8lZGVmPgo9MjAKLTwlZGVmIG5hbWU9M0Qi cmVnaXN0ZXJfZGVmYXVsdHMoZGVmYXVsdF9kaWN0KSI+Ci08JQogICAgICMgU3RvcmUgb3VyIHRl bXBsYXRlIGFuZCBjb25maWd1cmF0aW9uIHBhdGgKLSAgICBzZWxmLmF0dHIub3VyX2NvbmZpZ19k aXIgPTNEIG9zLnBhdGguam9pbihzZWxmLmF0dHIucGx1Z2luX3BhdGgsICJjb25mPQppZyIpCi0g ICAgc2VsZi5hdHRyLm91cl90ZW1wbGF0ZV9kaXIgPTNEIG9zLnBhdGguam9pbihzZWxmLmF0dHIu cGx1Z2luX3BhdGgsICJ0ZT0KbXBsYXRlcyIpCi0gICAgaXB5X3Zpel9jb25maWcgPTNEIENvbmZp Z1BhcnNlci5TYWZlQ29uZmlnUGFyc2VyKGRlZmF1bHRfZGljdCkKLSAgICBpcHlfdml6X2NvbmZp Zy5yZWFkKCBvcy5wYXRoLmpvaW4oIHNlbGYuYXR0ci5vdXJfY29uZmlnX2RpciwgImlweXRob24u PQpjb25mIiApICkKLSAgICBzZWxmLmF0dHIuaXB5X3Zpel9jb25maWcgPTNEIGlweV92aXpfY29u ZmlnCisgICAgc2VsZi5hdHRyLm91cl9jb25maWdfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2lu X3BhdGgsICJjb25maWciKQorICAgIHNlbGYuYXR0ci5vdXJfdGVtcGxhdGVfZGlyID0zRCBvcy5w YXRoLmpvaW4ocGx1Z2luX3BhdGgsICJ0ZW1wbGF0ZXMiKQorICAgIHNlbGYuYXR0ci52aXpfY29u ZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcihkZWZhdWx0X2RpY3QpCisgICAg c2VsZi5hdHRyLnZpel9jb25maWcucmVhZCggb3MucGF0aC5qb2luKCBzZWxmLmF0dHIub3VyX2Nv bmZpZ19kaXIsICJpcD0KeXRob24uY29uZiIgKSApCiAgICAgIyBTdG9yZSBzb21lIHZhcmlhYmxl cyB3ZSB3YW50IGJ5IGRlZmF1bHQKLSAgICBzZWxmLmF0dHIuUEFTU1dPUkRfQVVUSCA9M0Qgc2Vs Zi5hdHRyLmlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iPQosICJwYXNzd29yZF9hdXRo IikKLSAgICBzZWxmLmF0dHIuQVBBQ0hFX1VSTFMgPTNEIHNlbGYuYXR0ci5pcHlfdml6X2NvbmZp Zy5nZXRib29sZWFuKCJtYWluIiwgPQoiYXBhY2hlX3VybHMiKQotICAgIHNlbGYuYXR0ci5TU0xf VVJMUyA9M0Qgc2VsZi5hdHRyLmlweV92aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAic3M9 CmwiKQorICAgIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIID0zRCBzZWxmLmF0dHIudml6X2NvbmZp Zy5nZXRib29sZWFuKCJtYWluIiwgInA9CmFzc3dvcmRfYXV0aCIpCisgICAgc2VsZi5hdHRyLkFQ QUNIRV9VUkxTID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgImFw YT0KY2hlX3VybHMiKQorICAgIHNlbGYuYXR0ci5TU0xfVVJMUyA9M0Qgc2VsZi5hdHRyLnZpel9j b25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKQogICAgIHNlbGYuYXR0ci5QT1JUID0zRCBz ZWxmLnByb3h5X3JlcXVlc3RfcG9ydCgpCj0yMAotICAgIEhPU1QgPTNEIHNlbGYuYXR0ci5yZXF1 ZXN0Lmhvc3QKKyAgICBIT1NUID0zRCByZXF1ZXN0Lmhvc3QKICAgICAjIFN0cmlwIG91dCBwb3J0 LCB3ZSBqdXN0IHdhbnQgdGhlIFVSTCB0aGlzIGdhbGF4eSBzZXJ2ZXIgd2FzIGFjY2Vzc2VkPQog YXQuCiAgICAgaWYgJzonIGluIEhPU1Q6CiAgICAgICAgIEhPU1QgPTNEIEhPU1RbMDpIT1NULmlu ZGV4KCc6JyldCkBAIC01OCwxMyArNTEsMTMgQEAKIDwlCiAgICAgY29uZl9maWxlID0zRCB7CiAg ICAgICAgICdoaXN0b3J5X2lkJzogc2VsZi5hdHRyLmhpc3RvcnlfaWQsCi0gICAgICAgICdnYWxh eHlfdXJsJzogc2VsZi5hdHRyLnJlcXVlc3QuYXBwbGljYXRpb25fdXJsLnJzdHJpcCgnLycpICsg Jy8nLAotICAgICAgICAnYXBpX2tleSc6IHNlbGYuYXR0ci5hcGlfa2V5LAotICAgICAgICAncmVt b3RlX2hvc3QnOiBzZWxmLmF0dHIucmVxdWVzdC5yZW1vdGVfYWRkciwKKyAgICAgICAgJ2dhbGF4 eV91cmwnOiByZXF1ZXN0LmFwcGxpY2F0aW9uX3VybC5yc3RyaXAoJy8nKSArICcvJywKKyAgICAg ICAgJ2FwaV9rZXknOiBnZXRfYXBpX2tleSgpLAorICAgICAgICAncmVtb3RlX2hvc3QnOiByZXF1 ZXN0LnJlbW90ZV9hZGRyLAogICAgICAgICAnZ2FsYXh5X3Bhc3Rlcl9wb3J0Jzogc2VsZi5nZXRf Z2FsYXh5X3Bhc3Rlcl9wb3J0KHNlbGYuYXR0ci5nYWxheHk9Cl9yb290X2RpciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmF0 dHIuZ2FsYXh5PQpfY29uZmlnKSwKICAgICAgICAgJ2RvY2tlcl9wb3J0Jzogc2VsZi5hdHRyLlBP UlQsCi0gICAgICAgICdjb3JzX29yaWdpbic6IHNlbGYuYXR0ci5yZXF1ZXN0Lmhvc3RfdXJsLAor ICAgICAgICAnY29yc19vcmlnaW4nOiByZXF1ZXN0Lmhvc3RfdXJsLAogICAgIH0KPTIwCiAgICAg aWYgc2VsZi5hdHRyLlBBU1NXT1JEX0FVVEg6CkBAIC0xNzUsOCArMTY4LDggQEAKIDwlZGVmIG5h bWU9M0QiZG9ja2VyX2NtZCh0ZW1wX2RpcikiPjwlCiAgICAgcmV0dXJuICclcyBydW4gLWQgLS1z aWctcHJveHk9M0R0cnVlIC1wICVzOjY3ODkgLXYgIiVzOi9pbXBvcnQvIiAlcycgJT0KIFwKLSAg ICAgICAgKHNlbGYuYXR0ci5pcHlfdml6X2NvbmZpZy5nZXQoImRvY2tlciIsICJjb21tYW5kIiks IHNlbGYuYXR0ci5QT1JUPQosIHRlbXBfZGlyLAotICAgICAgICAgc2VsZi5hdHRyLmlweV92aXpf Y29uZmlnLmdldCgiZG9ja2VyIiwgImltYWdlIikpCisgICAgICAgIChzZWxmLmF0dHIudml6X2Nv bmZpZy5nZXQoImRvY2tlciIsICJjb21tYW5kIiksIHNlbGYuYXR0ci5QT1JULCB0ZT0KbXBfZGly LAorICAgICAgICAgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0KCJkb2NrZXIiLCAiaW1hZ2UiKSkK ICU+PC8lZGVmPgo9MjAKCmRpZmYgLXIgOGUzMTljMDkyNWUyYTQ4YjQ4OTAyMDQ3NmZmNjk4ZmJh MTM0OTE2MyAtciAyZWRiNjFlNGM0OGZhNDg4ZDVkNmViNz0KMGIyYTUyM2U5ZmIzYWZiMmUgY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQph a28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMv aXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v dGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNywxOCArNyw4IEBACj0yMAogIyBTZXRzIElEIGFu ZCBzZXRzIHVwIGEgbG90IG9mIG90aGVyIHZhcmlhYmxlcwogaWUuc2V0X2lkKCJpcHl0aG9uIikK LQotaWUucmVnaXN0ZXJfZGVmYXVsdHMoewotICAgICdhcGFjaGVfdXJscyc6IEZhbHNlLAotICAg ICdjb21tYW5kJzogJ2RvY2tlcicsCi0gICAgJ2ltYWdlJzogJ2JncnVlbmluZy9kb2NrZXItaXB5 dGhvbi1ub3RlYm9vaycsCi0gICAgJ3Bhc3N3b3JkX2F1dGgnOiBGYWxzZSwKLSAgICAnc3NsJzog RmFsc2V9KQotCiAjIENyZWF0ZSB0ZW1wZGlyIGluIGdhbGF4eQogdGVtcF9kaXIgPTNEIG9zLnBh dGguYWJzcGF0aCggdGVtcGZpbGUubWtkdGVtcCgpICkKLSMgU2V0IHVzZXIncyBBUEkga2V5Ci1p ZS5hdHRyLmFwaV9rZXkgPTNEIGdldF9hcGlfa2V5KCkKICMgV3JpdGUgb3V0IGNvbmYgZmlsZS4u Lm5lZWRzIHdvcmsKIGllLndyaXRlX2NvbmZfZmlsZSh0ZW1wX2RpcikKPTIwCgoKaHR0cHM6Ly9i aXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2Q4ZDI1MjM1ZTBkMS8K Q2hhbmdlc2V0OiAgIGQ4ZDI1MjM1ZTBkMQpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAg ICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIE1vcmUgZG9jdW1lbnRh dGlvbgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDJlZGI2MWU0YzQ4ZmE0ODhkNWQ2ZWI3 MGIyYTUyM2U5ZmIzYWZiMmUgLXIgZDhkMjUyMzVlMGQxZmY5Nzc2OGFjMTM9CmM2NjAyN2YzNGQ2 NDViNjBkIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2ll Lm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaWUubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pZS5tYWtvCkBAIC0xOCw4ICsxOCw3IEBACiAgICAgIiIiCiAgICAgICAgIElFcyBt dXN0IHJlZ2lzdGVyIHRoZWlyIG5hbWUsIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNvbnN0cnVjdGlu ZyBzdD0KcmluZ3MKPTIwCi0gICAgICAgIEFkZGl0aW9uYWxseSB0aGlzIG1ldGhvZCBzdG9yZXMg bG90cyBvZiBjb25maWcgb3B0aW9ucyB3ZSB3YW50IHRvID0KYWNjZXNzIGVsc2V3aGVyZS4gVGhp cwotICAgICAgICBzaG91bGQgYmUgcmVmYWN0b3JlZAorICAgICAgICBBZGRpdGlvbmFsbHkgdGhp cyBtZXRob2Qgc3RvcmVzIGxvdHMgb2YgY29uZmlnIG9wdGlvbnMgd2Ugd2FudCB0byA9CmFjY2Vz cyBlbHNld2hlcmUuCiAgICAgIiIiCiAgICAgc2VsZi5hdHRyLnZpel9pZCA9M0QgbmFtZQogICAg IHNlbGYuYXR0ci5oaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHRyYW5z Lmhpc3RvcnkuaWQgKQpAQCAtNDksNiArNDgsMTEgQEAKPTIwCiA8JWRlZiBuYW1lPTNEIndyaXRl X2NvbmZfZmlsZShvdXRwdXRfZGlyZWN0b3J5KSI+PCUKKyAgICAiIiIKKyAgICAgICAgQnVpbGQg dXAgYSBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBzdGFuZGFyZCBmb3IgQUxMIElFcy4KKwor ICAgICAgICBUT0RPOiByZXBsYWNlIGhhc2hlZCBwYXNzd29yZCB3aXRoIHBsYWludGV4dC4KKyAg ICAiIiIKICAgICBjb25mX2ZpbGUgPTNEIHsKICAgICAgICAgJ2hpc3RvcnlfaWQnOiBzZWxmLmF0 dHIuaGlzdG9yeV9pZCwKICAgICAgICAgJ2dhbGF4eV91cmwnOiByZXF1ZXN0LmFwcGxpY2F0aW9u X3VybC5yc3RyaXAoJy8nKSArICcvJywKQEAgLTgxLDYgKzg1LDkgQEAKPTIwCiA8JWRlZiBuYW1l PTNEImdldF9nYWxheHlfcGFzdGVyX3BvcnQoZ2FsYXh5X3Jvb3RfZGlyLCBnYWxheHlfY29uZmln KSI+PCUKKyAgICAiIiIKKyAgICAgICAgR2V0IHBvcnQgZ2FsYXh5IGlzIHJ1bm5pbmcgb24gKGlm IHJ1bm5pbmcgdW5kZXIgcGFzdGVyKQorICAgICIiIgogICAgIGNvbmZpZyA9M0QgQ29uZmlnUGFy c2VyLlNhZmVDb25maWdQYXJzZXIoeydwb3J0JzogJzgwODAnfSkKICAgICBjb25maWcucmVhZCgg b3MucGF0aC5qb2luKCBnYWxheHlfcm9vdF9kaXIsICd1bml2ZXJzZV93c2dpLmluaScgKSApCj0y MApAQCAtMTIxLDEyICsxMjgsMTggQEAKPTIwCiA8JWRlZiBuYW1lPTNEImdlbmVyYXRlX2hleChs ZW5ndGgpIj48JQorICAgICIiIgorICAgICAgICBHZW5lcmF0ZSBhIGhleCBzdHJpbmcKKyAgICAi IiIKICAgICByZXR1cm4gJycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmJykg Zm9yIF8gaW4gcmFuZ2UobGVuZ3RoPQopKQogJT48LyVkZWY+PCVkZWYgbmFtZT0zRCJnZW5lcmF0 ZV9wYXNzd29yZChsZW5ndGgpIj48JQorICAgICIiIgorICAgICAgICBHZW5lcmF0ZSBhIHJhbmRv bSBhbHBoYW51bWVyaWMgcGFzc3dvcmQKKyAgICAiIiIKICAgICByZXR1cm4gJycuam9pbihyYW5k b20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKSBmPQpvciBf IGluIHJhbmdlKGxlbmd0aCkpCiAlPjwvJWRlZj4KQEAgLTE0Niw2ICsxNTksMTggQEAKPTIwCiA8 JWRlZiBuYW1lPTNEInVybF90ZW1wbGF0ZSh1cmxfdGVtcGxhdGUpIj48JQorICAgICIiIgorICAg ICAgICBQcm9jZXNzIGEgVVJMIHRlbXBsYXRlCisKKyAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwg dmFyaWFibGVzIGFjY2Vzc2libGUgdG8gdGhlIHVzZXI6CisKKyAgICAgICAgICAgIC0gJHtQUk9U T30gd2lsbCBiZSByZXBsYWNlZCB3aXRoIHByb3RvY29sIChodHRwL2h0dHBzKQorICAgICAgICAg ICAgLSAke0hPU1R9IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgY29ycmVjdCBob3N0bmFtZQor ICAgICAgICAgICAgLSAke1BPUlR9IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcG9ydCB0aGUg ZG9ja2VyIGltYWdlIGlzIGE9CnR0YWNoZWQgdG8KKworICAgICAgICBJbiB0aGUgY2FzZSB0aGF0 IGBhcGFjaGVfdXJscyA9M0QgRmFsc2VgLCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgSE89ClNUIGhh cyBhIFBPUlQgYXBwZW5lZGVkIHRvCisgICAgICAgIGl0LCBzbyB0aGUgdXNlciBkb2Vzbid0IGhh dmUgdG8gdGVtcGxhdGUgMnggdXJscy4KKyAgICAiIiIKICAgICAjIEZpZ3VyZSBvdXQgb3VyIHN1 YnN0aXR1dGlvbnMKICAgICBpZiBzZWxmLmF0dHIuU1NMX1VSTFM6CiAgICAgICAgIHByb3RvY29s ID0zRCAnaHR0cHMnCkBAIC0xNjcsNiArMTkyLDkgQEAKPTIwCiA8JWRlZiBuYW1lPTNEImRvY2tl cl9jbWQodGVtcF9kaXIpIj48JQorICAgICIiIgorICAgICAgICBHZW5lcmF0ZSBhbmQgcmV0dXJu IHRoZSBkb2NrZXIgY29tbWFuZCB0byBleGVjdXRlCisgICAgIiIiCiAgICAgcmV0dXJuICclcyBy dW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOjY3ODkgLXYgIiVzOi9pbXBvcnQvIiAlcycg JT0KIFwKICAgICAgICAgKHNlbGYuYXR0ci52aXpfY29uZmlnLmdldCgiZG9ja2VyIiwgImNvbW1h bmQiKSwgc2VsZi5hdHRyLlBPUlQsIHRlPQptcF9kaXIsCiAgICAgICAgICBzZWxmLmF0dHIudml6 X2NvbmZpZy5nZXQoImRvY2tlciIsICJpbWFnZSIpKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9mNTUwM2E1MjkyZTkvCkNoYW5nZXNldDogICBm NTUwM2E1MjkyZTkKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4 IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBHaXZlIHVwIGFmdGVyIDEwIHRyaWVzCkFmZmVj dGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZDhkMjUyMzVlMGQxZmY5Nzc2OGFjMTNjNjYwMjdmMzRk NjQ1YjYwZCAtciBmNTUwM2E1MjkyZTkwNmQ0NDhkMzZlOT0KMjc2NzkyOTc1YmEwMmUwOGUgY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaXB5dGhvbi5qcwotLS0g YS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHl0aG9uLmpz CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweXRo b24uanMKQEAgLTY1LDE2ICs2NSwyMyBAQAogICovCiBmdW5jdGlvbiBsb2FkX25vdGVib29rKHBh c3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVibz0Kb2tfYWNj ZXNzX3VybCwgYXBhY2hlX3VybHMsIGdhbGF4eV9yb290KXsKICAgICAkKCBkb2N1bWVudCApLnJl YWR5KGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgY291bnRlciA9M0QgMDsKICAgICAgICAgJCgn I21haW4nKS5hcHBlbmQoJzxpbWcgaWQ9M0Qic3Bpbm5lciIgc3JjPTNEIicgKyBnYWxheHlfcm9v dCArICcvPQpzdGF0aWMvc3R5bGUvbGFyZ2VzcGlubmVyLmdpZiIgc3R5bGU9M0QicG9zaXRpb246 YWJzb2x1dGU7bWFyZ2luOmF1dG87dG9wOjA9CjtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsiPicp OwogICAgICAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgICAg ICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCiAgICAgICAgICAgICAg ICAgdXJsOiBub3RlYm9va19hY2Nlc3NfdXJsLAogICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1 bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgICAg ICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgICAgIF9oYW5k bGVfbm90ZWJvb2tfbG9hZGluZyhwYXNzd29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZT0KYm9va19s b2dpbl91cmwsIG5vdGVib29rX2FjY2Vzc191cmwsIGFwYWNoZV91cmxzKTsKICAgICAgICAgICAg ICAgICB9LAotICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpeworICAgICAgICAgICAg ICAgIGVycm9yOiBmdW5jdGlvbihhLCBiLCBjKXsKKyAgICAgICAgICAgICAgICAgICAgY291bnRl cisrOworICAgICAgICAgICAgICAgICAgICBpZihjb3VudGVyID4gMTApeworICAgICAgICAgICAg ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAg ICAgICBjb25zb2xlLmxvZygiR2l2aW5nIHVwISIpOworICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJTb21lIGVycm9yIik7CiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgfSk7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9n YWxheHktY2VudHJhbC9jb21taXRzLzA5YTE0NDIzZTJlZi8KQ2hhbmdlc2V0OiAgIDA5YTE0NDIz ZTJlZgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6 MDQrMDA6MDAKU3VtbWFyeTogICAgIFJlcXVpcmluZyByZXF1aXJlLmpzCkFmZmVjdGVkICM6ICAx IGZpbGUKCmRpZmYgLXIgZjU1MDNhNTI5MmU5MDZkNDQ4ZDM2ZTkyNzY3OTI5NzViYTAyZTA4ZSAt ciAwOWExNDQyM2UyZWYxMGIwMjU5MzZjNj0KYmI0ZTJiYjc0ZTk3Njg5MzEgY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAg LTIwNywxMyArMjA3LDE1IEBACiB2YXIgYXBhY2hlX3VybHMgPTNEICR7IHNlbGYuamF2YXNjcmlw dF9ib29sZWFuKHNlbGYuYXR0ci5BUEFDSEVfVVJMUykgfTsKIHZhciBwYXNzd29yZCA9M0QgJyR7 IHNlbGYuYXR0ci5ub3RlYm9va19wdyB9JzsKIHZhciBnYWxheHlfcm9vdCA9M0QgJyR7IHNlbGYu YXR0ci5yb290IH0nOwordmFyIGFwcF9yb290ID0zRCAnJHsgc2VsZi5hdHRyLmFwcF9yb290IH0n OwogPC8lZGVmPjwlZGVmIG5hbWU9M0QibG9hZF9kZWZhdWx0X2pzKCkiPgogJHtoLmNzcyggJ2Jh c2UnICkgfQotJHtoLmpzKCAnbGlicy9qcXVlcnkvanF1ZXJ5JyApIH0KLSR7aC5qcyggJ2xpYnMv dG9hc3RyJyApIH0KKyR7aC5qcyggJ2xpYnMvanF1ZXJ5L2pxdWVyeScsCisgICAgICAgICdsaWJz L3RvYXN0cicsCisgICAgICAgICdsaWJzL3JlcXVpcmUnKX0KICR7aC5qYXZhc2NyaXB0X2xpbmso IHNlbGYuYXR0ci5hcHBfcm9vdCArICdpZS5qcycgKX0KICR7aC5qYXZhc2NyaXB0X2xpbmsoIHNl bGYuYXR0ci5hcHBfcm9vdCArIHNlbGYuYXR0ci52aXpfaWQgKyAnLmpzJyApfQogPC8lZGVmPgoK Cmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy83YWQ1 ZTZjNjMzMTQvCkNoYW5nZXNldDogICA3YWQ1ZTZjNjMzMTQKVXNlcjogICAgICAgIGVyYXNjaGUy CkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBDb21t ZW50ZWQgb3V0IGNvZGUgcGxhbm5pbmcgZm9yIGllL2lweS5qcyBzcGxpdApBZmZlY3RlZCAjOiAg MSBmaWxlCgpkaWZmIC1yIDA5YTE0NDIzZTJlZjEwYjAyNTkzNmM2YmI0ZTJiYjc0ZTk3Njg5MzEg LXIgN2FkNWU2YzYzMzE0YjAwZWQ0ZGNkM2U9CjU2YmY2OWY1NzFkNmVkOGViIGNvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBh L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24u bWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRl cy9pcHl0aG9uLm1ha28KQEAgLTQ2LDYgKzQ2LDE0IEBACiB2YXIgbm90ZWJvb2tfbG9naW5fdXJs ID0zRCAnJHsgbm90ZWJvb2tfbG9naW5fdXJsIH0nOwogdmFyIG5vdGVib29rX2FjY2Vzc191cmwg PTNEICckeyBub3RlYm9va19hY2Nlc3NfdXJsIH0nOwogLy8gTG9hZCBub3RlYm9vaworCisvL3Jl cXVpcmUuY29uZmlnKHsKKy8vICAgIGJhc2VVcmw6IGFwcF9yb290LAorLy8gICAgcGF0aHM6IHsK Ky8vICAgICAgICAicGx1Z2luIiA6IGFwcF9yb290LAorLy8gICAgfSwKKy8vfSk7CisvL3JlcXVp cmVqcyhbJ3BsdWdpbi9pZScsICdwbHVnaW4vaXB5dGhvbiddKTsKIGxvYWRfbm90ZWJvb2socGFz c3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNz PQpfdXJsLCBhcGFjaGVfdXJscywgZ2FsYXh5X3Jvb3QpOwogPC9zY3JpcHQ+PGRpdiBpZD0zRCJt YWluIiB3aWR0aD0zRCIxMDAlIiBoZWlnaHQ9M0QiMTAwJSI+CgoKaHR0cHM6Ly9iaXRidWNrZXQu b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzZkZjc0MWM5N2Q2OS8KQ2hhbmdlc2V0 OiAgIDZkZjc0MWM5N2Q2OQpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFJlZmFjdG9yIHRvIHVzZSByZXF1aXJl LmpzCkFmZmVjdGVkICM6ICAyIGZpbGVzCgpkaWZmIC1yIDdhZDVlNmM2MzMxNGIwMGVkNGRjZDNl NTZiZjY5ZjU3MWQ2ZWQ4ZWIgLXIgNmRmNzQxYzk3ZDY5YzNjYjZiYWM2NjQ9CmU4ODA2MjYyMTM2 YjI4OWEzIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2ll Lm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0 ZXMvaWUubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pZS5tYWtvCkBAIC0yMTYsNiArMjE2LDQgQEAKICR7aC5qcyggJ2xpYnMvanF1ZXJ5 L2pxdWVyeScsCiAgICAgICAgICdsaWJzL3RvYXN0cicsCiAgICAgICAgICdsaWJzL3JlcXVpcmUn KX0KLSR7aC5qYXZhc2NyaXB0X2xpbmsoIHNlbGYuYXR0ci5hcHBfcm9vdCArICdpZS5qcycgKX0K LSR7aC5qYXZhc2NyaXB0X2xpbmsoIHNlbGYuYXR0ci5hcHBfcm9vdCArIHNlbGYuYXR0ci52aXpf aWQgKyAnLmpzJyApfQogPC8lZGVmPgoKZGlmZiAtciA3YWQ1ZTZjNjMzMTRiMDBlZDRkY2QzZTU2 YmY2OWY1NzFkNmVkOGViIC1yIDZkZjc0MWM5N2Q2OWMzY2I2YmFjNjY0PQplODgwNjI2MjEzNmIy ODlhMyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0 aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3Rl bXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC00NywxNCArNDcsMTUgQEAKIHZhciBu b3RlYm9va19hY2Nlc3NfdXJsID0zRCAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JzsKIC8vIExv YWQgbm90ZWJvb2sKPTIwCi0vL3JlcXVpcmUuY29uZmlnKHsKLS8vICAgIGJhc2VVcmw6IGFwcF9y b290LAotLy8gICAgcGF0aHM6IHsKLS8vICAgICAgICAicGx1Z2luIiA6IGFwcF9yb290LAotLy8g ICAgfSwKLS8vfSk7Ci0vL3JlcXVpcmVqcyhbJ3BsdWdpbi9pZScsICdwbHVnaW4vaXB5dGhvbidd KTsKLWxvYWRfbm90ZWJvb2socGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29rX2xvZ2lu X3VybCwgbm90ZWJvb2tfYWNjZXNzPQpfdXJsLCBhcGFjaGVfdXJscywgZ2FsYXh5X3Jvb3QpOwor cmVxdWlyZS5jb25maWcoeworICAgIGJhc2VVcmw6IGFwcF9yb290LAorICAgIHBhdGhzOiB7Cisg ICAgICAgICJwbHVnaW4iIDogYXBwX3Jvb3QsCisgICAgfSwKK30pOworcmVxdWlyZWpzKFsncGx1 Z2luL2llJywgJ3BsdWdpbi9pcHl0aG9uJ10sIGZ1bmN0aW9uKCl7CisgICAgbG9hZF9ub3RlYm9v ayhwYXNzd29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19h Yz0KY2Vzc191cmwsIGFwYWNoZV91cmxzLCBnYWxheHlfcm9vdCk7Cit9KTsKIDwvc2NyaXB0Pjxk aXYgaWQ9M0QibWFpbiIgd2lkdGg9M0QiMTAwJSIgaGVpZ2h0PTNEIjEwMCUiPjwvZGl2PgoKCmh0 dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85NWVhYzEy MGI5ZWIvCkNoYW5nZXNldDogICA5NWVhYzEyMGI5ZWIKVXNlcjogICAgICAgIGVyYXNjaGUyCkRh dGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBNb3ZlZCBt ZXNzYWdlcyBhbmQgb3RoZXIgbm9uLWlweSBzcGVjaWZpYyBkYXRhIHRvIGllLmpzCkFmZmVjdGVk ICM6ICAyIGZpbGVzCgpkaWZmIC1yIDZkZjc0MWM5N2Q2OWMzY2I2YmFjNjY0ZTg4MDYyNjIxMzZi Mjg5YTMgLXIgOTVlYWMxMjBiOWViYmI1YTVjNTY1NzY9CjIxNjE2MzE4ZDZjY2NiMjc0IGNvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCi0tLSBhL2NvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCisrKyBiL2NvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCkBAIC0wLDAgKzEs NTMgQEAKKy8qKgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcmVtb3ZlIGNvbnRlbnQgZnJvbSB0 aGUgbWFpbiBhcmVhIGFuZCBhZGQgdGhlIG5vdGU9CmJvb2suCisgKiBOb3QgaWRlbXBvdGVudAor ICovCitmdW5jdGlvbiBhcHBlbmRfbm90ZWJvb2sodXJsKXsKKyAgICAkKCcjc3Bpbm5lcicpLnJl bW92ZSgpOworICAgICQoJyNtYWluJykuYXBwZW5kKCc8b2JqZWN0IGRhdGE9M0QiJyArIHVybCAr ICciIGhlaWdodD0zRCI5NSUiIHdpZHRoPQo9M0QiMTAwJSI+JworICAgICsnPGVtYmVkIHNyYz0z RCInICsgdXJsICsgJyIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiLz48L29iamVjdD4n CisgICAgKTsKK30KKworZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29yZCl7Cisg ICAgdG9hc3RyLmluZm8oCisgICAgICAgICJBdXRvbWF0aWMgYXV0aG9yaXphdGlvbiBmYWlsZWQu IFlvdSBjYW4gbWFudWFsbHkgbG9naW4gd2l0aDo8YnI+Ij0KICsgcGFzc3dvcmQgKyAiPGJyPjxh IGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93PQpp a2kvQXV0b21hdGljLUF1dGhvcml6YXRpb24tRmFpbGVkJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3Jl IGRldGFpbHMgLi4uPC9hPiIsCisgICAgICAgICJQbGVhc2UgbG9naW4gbWFudWFsbHkiLAorICAg ICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAxMDAwMDAsICd0YXBUb0Rpc21p c3MnOiBmYWxzZX0KKyAgICApOworfQorCitmdW5jdGlvbiBtZXNzYWdlX2ZhaWxlZF9jb25uZWN0 aW9uKCl7CisgICAgdG9hc3RyLmVycm9yKAorICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8g SVB5dGhvbiBOb3RlYm9vay4gUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmk9CnN0cmF0b3IuIDxh IGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93aWtp L0NvdWxkLT0Kbm90LWNvbm5lY3QtdG8tSVB5dGhvbi1Ob3RlYm9vaycgdGFyZ2V0PTNEJ19ibGFu ayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAorICAgICJTZWN1cml0eSB3YXJuaW5nIiwKKyAgICAg ICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rpc21pc3Mn OiB0cnVlfQorICAgICk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2Vfbm9fYXV0aCgpeworICAgIHRv YXN0ci53YXJuaW5nKAorICAgICAgICAiSVB5dGhvbiBOb3RlYm9vayB3YXMgbHVuY2hlZCB3aXRo b3V0IGF1dGhlbnRpY2F0aW9uLiBUaGlzIGlzIGEgc2U9CmN1cml0eSBpc3N1ZS4gPGEgaHJlZj0z RCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uL3dpa2kvST0KUHl0 aG9uLU5vdGVib29rLXdhcy1sdW5jaGVkLXdpdGhvdXQtYXV0aGVudGljYXRpb24nIHRhcmdldD0z RCdfYmxhbmsnPk1vcmUgPQpkZXRhaWxzIC4uLjwvYT4iLAorICAgICAgICAiU2VjdXJpdHkgd2Fy bmluZyIsCisgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAn dGFwVG9EaXNtaXNzJzogZmFsc2V9CisgICAgKTsKK30KKworLyoqCisgKiBJbml0aWFsIHZlcnNp b24gb2YgZnVuY3Rpb24gdG8gdGVzdCBhdmFpbGFiaWxpdHkgb2YgVVJML3Jlc291cmNlCisgKiBo dHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8yNTM5MDIwNi8zNDczNjgKKyAqLworZnVuY3Rpb24g dGVzdF9pZV9hdmFpbGFiaWxpdHkodXJsKXsKKyAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwo ZnVuY3Rpb24oKXsKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIHR5cGU6ICJHRVQiLAor ICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpewor ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIC8vX2hhbmRsZV9ub3RlYm9va19sb2FkaW5n KHBhc3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm89Cm9rX2xvZ2luX3VybCwgbm90ZWJvb2tf YWNjZXNzX3VybCwgYXBhY2hlX3VybHMsIGRvY2tlcl9kZWxheSk7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0pOworICAgIH0sIDUwMCk7Cit9CisKCmRpZmYgLXIgNmRmNzQxYzk3ZDY5YzNjYjZi YWM2NjRlODgwNjI2MjEzNmIyODlhMyAtciA5NWVhYzEyMGI5ZWJiYjVhNWM1NjU3Nj0KMjE2MTYz MThkNmNjY2IyNzQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMv aXB5dGhvbi5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0 YXRpYy9pcHl0aG9uLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vc3RhdGljL2lweXRob24uanMKQEAgLTEsNTYgKzEsMyBAQAotLyoqCi0gKiBJbnRlcm5hbCBm dW5jdGlvbiB0byByZW1vdmUgY29udGVudCBmcm9tIHRoZSBtYWluIGFyZWEgYW5kIGFkZCB0aGUg bm90ZT0KYm9vay4KLSAqIE5vdCBpZGVtcG90ZW50Ci0gKi8KLWZ1bmN0aW9uIGFwcGVuZF9ub3Rl Ym9vayh1cmwpewotICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7Ci0gICAgJCgnI21haW4nKS5h cHBlbmQoJzxpZnJhbWUgZnJhbWVCb3JkZXI9M0QiMCIgc2VhbWxlc3M9M0Qic2VhbWxlc3MiIHN0 eT0KbGU9M0Qid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyIgc2Ny b2xsaW5nPTNEIm5vIiBzcmM9M0QiPQonKyB1cmwgKyciPjwvaWZyYW1lPicKLSAgICApOwotfQot Ci0KLWZ1bmN0aW9uIG1lc3NhZ2VfZmFpbGVkX2F1dGgocGFzc3dvcmQpewotICAgIHRvYXN0ci5p bmZvKAotICAgICAgICAiQXV0b21hdGljIGF1dGhvcml6YXRpb24gZmFpbGVkLiBZb3UgY2FuIG1h bnVhbGx5IGxvZ2luIHdpdGg6PGJyPiI9CiArIHBhc3N3b3JkICsgIjxicj48YSBocmVmPTNEJ2h0 dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vdz0KaWtpL0F1dG9tYXRp Yy1BdXRob3JpemF0aW9uLUZhaWxlZCcgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4u LjwvYT4iLAotICAgICAgICAiUGxlYXNlIGxvZ2luIG1hbnVhbGx5IiwKLSAgICAgICAgeydjbG9z ZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMTAwMDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9 Ci0gICAgKTsKLX0KLQotZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfY29ubmVjdGlvbigpewotICAg IHRvYXN0ci5lcnJvcigKLSAgICAgICAgIkNvdWxkIG5vdCBjb25uZWN0IHRvIElQeXRob24gTm90 ZWJvb2suIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pPQpzdHJhdG9yLiA8YSBocmVmPTNEJ2h0 dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vd2lraS9Db3VsZC09Cm5v dC1jb25uZWN0LXRvLUlQeXRob24tTm90ZWJvb2snIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0 YWlscyAuLi48L2E+IiwKLSAgICAiU2VjdXJpdHkgd2FybmluZyIsCi0gICAgICAgIHsnY2xvc2VC dXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtaXNzJzogdHJ1ZX0KLSAg ICApOwotfQotCi1mdW5jdGlvbiBtZXNzYWdlX25vX2F1dGgoKXsKLSAgICB0b2FzdHIud2Fybmlu ZygKLSAgICAgICAgIklQeXRob24gTm90ZWJvb2sgd2FzIGx1bmNoZWQgd2l0aG91dCBhdXRoZW50 aWNhdGlvbi4gVGhpcyBpcyBhIHNlPQpjdXJpdHkgaXNzdWUuIDxhIGhyZWY9M0QnaHR0cHM6Ly9n aXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93aWtpL0k9ClB5dGhvbi1Ob3RlYm9v ay13YXMtbHVuY2hlZC13aXRob3V0LWF1dGhlbnRpY2F0aW9uJyB0YXJnZXQ9M0QnX2JsYW5rJz5N b3JlID0KZGV0YWlscyAuLi48L2E+IiwKLSAgICAgICAgIlNlY3VyaXR5IHdhcm5pbmciLAotICAg ICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwgJ3RhcFRvRGlzbWlz cyc6IGZhbHNlfQotICAgICk7Ci19Ci0KLS8qKgotICogSW5pdGlhbCB2ZXJzaW9uIG9mIGZ1bmN0 aW9uIHRvIHRlc3QgYXZhaWxhYmlsaXR5IG9mIFVSTC9yZXNvdXJjZQotICogaHR0cDovL3N0YWNr b3ZlcmZsb3cuY29tL3EvMjUzOTAyMDYvMzQ3MzY4Ci0gKi8KLWZ1bmN0aW9uIHRlc3RfaWVfYXZh aWxhYmlsaXR5KHVybCl7Ci0gICAgaW50ZXJ2YWwgPTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7 Ci0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB0eXBlOiAiR0VUIiwKLSAgICAgICAgICAg IHVybDogdXJsLAotICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKXsKLSAgICAgICAgICAg ICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLSAgICAgICAgICAgICAgICAvL19oYW5kbGVfbm90ZWJvb2tfbG9hZGluZyhwYXNzd29yZF9h dXRoLCBwYXNzd29yZCwgbm90ZWJvPQpva19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vzc191cmws IGFwYWNoZV91cmxzLCBkb2NrZXJfZGVsYXkpOwotICAgICAgICAgICAgfQotICAgICAgICB9KTsK LSAgICB9LCA1MDApOwotfQotCiAvKioKICAqIExvYWQgYW4gaW50ZXJhY3RpdmUgZW52aXJvbm1l bnQgKElFKSBmcm9tIGEgcmVtb3RlIFVSTAogICogQHBhcmFtIHtCb29sZWFufSBwYXNzd29yZF9h dXRoIFdoZXRoZXIgb3Igbm90IHRoaXMgcmVzb3VyY2UgcmVxdWlyZXMgcGE9CnNzd29yZCBhdXRo ZW50aWNhdGlvbgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy85ODExOWQxNjkwNGIvCkNoYW5nZXNldDogICA5ODExOWQxNjkwNGIKVXNlcjogICAg ICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1h cnk6ICAgICBNb3ZlZCBub3RpZmljYXRpb25zIGJhY2ssIG5vdCBoYXBweSB3aXRoIHRoZW0gdGhl cmUKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgOTVlYWMxMjBiOWViYmI1YTVjNTY1NzYy MTYxNjMxOGQ2Y2NjYjI3NCAtciA5ODExOWQxNjkwNGI4ODI2ODhiNmNhNT0KNTAxMjU2YjkxNjMw NjRlNmIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaWUuanMK LS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaWUuanMK KysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaWUuanMK QEAgLTksMjkgKzksNiBAQAogICAgICk7CiB9Cj0yMAotZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRf YXV0aChwYXNzd29yZCl7Ci0gICAgdG9hc3RyLmluZm8oCi0gICAgICAgICJBdXRvbWF0aWMgYXV0 aG9yaXphdGlvbiBmYWlsZWQuIFlvdSBjYW4gbWFudWFsbHkgbG9naW4gd2l0aDo8YnI+Ij0KICsg cGFzc3dvcmQgKyAiPGJyPjxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9n YWxheHktaXB5dGhvbi93PQppa2kvQXV0b21hdGljLUF1dGhvcml6YXRpb24tRmFpbGVkJyB0YXJn ZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCi0gICAgICAgICJQbGVhc2UgbG9n aW4gbWFudWFsbHkiLAotICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAx MDAwMDAsICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KLSAgICApOwotfQotCi1mdW5jdGlvbiBtZXNz YWdlX2ZhaWxlZF9jb25uZWN0aW9uKCl7Ci0gICAgdG9hc3RyLmVycm9yKAotICAgICAgICAiQ291 bGQgbm90IGNvbm5lY3QgdG8gSVB5dGhvbiBOb3RlYm9vay4gUGxlYXNlIGNvbnRhY3QgeW91ciBh ZG1pbmk9CnN0cmF0b3IuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9n YWxheHktaXB5dGhvbi93aWtpL0NvdWxkLT0Kbm90LWNvbm5lY3QtdG8tSVB5dGhvbi1Ob3RlYm9v aycgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAotICAgICJTZWN1cml0 eSB3YXJuaW5nIiwKLSAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAw MDAsICd0YXBUb0Rpc21pc3MnOiB0cnVlfQotICAgICk7Ci19Ci0KLWZ1bmN0aW9uIG1lc3NhZ2Vf bm9fYXV0aCgpewotICAgIHRvYXN0ci53YXJuaW5nKAotICAgICAgICAiSVB5dGhvbiBOb3RlYm9v ayB3YXMgbHVuY2hlZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLiBUaGlzIGlzIGEgc2U9CmN1cml0 eSBpc3N1ZS4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1p cHl0aG9uL3dpa2kvST0KUHl0aG9uLU5vdGVib29rLXdhcy1sdW5jaGVkLXdpdGhvdXQtYXV0aGVu dGljYXRpb24nIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgPQpkZXRhaWxzIC4uLjwvYT4iLAotICAg ICAgICAiU2VjdXJpdHkgd2FybmluZyIsCi0gICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAn dGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9Ci0gICAgKTsKLX0KPTIwCiAv KioKICAqIEluaXRpYWwgdmVyc2lvbiBvZiBmdW5jdGlvbiB0byB0ZXN0IGF2YWlsYWJpbGl0eSBv ZiBVUkwvcmVzb3VyY2UKCmRpZmYgLXIgOTVlYWMxMjBiOWViYmI1YTVjNTY1NzYyMTYxNjMxOGQ2 Y2NjYjI3NCAtciA5ODExOWQxNjkwNGI4ODI2ODhiNmNhNT0KNTAxMjU2YjkxNjMwNjRlNmIgY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaXB5dGhvbi5qcwotLS0g YS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHl0aG9uLmpz CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweXRo b24uanMKQEAgLTEsMyArMSwyOCBAQAorZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNz d29yZCl7CisgICAgdG9hc3RyLmluZm8oCisgICAgICAgICJBdXRvbWF0aWMgYXV0aG9yaXphdGlv biBmYWlsZWQuIFlvdSBjYW4gbWFudWFsbHkgbG9naW4gd2l0aDo8YnI+Ij0KICsgcGFzc3dvcmQg KyAiPGJyPjxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5 dGhvbi93PQppa2kvQXV0b21hdGljLUF1dGhvcml6YXRpb24tRmFpbGVkJyB0YXJnZXQ9M0QnX2Js YW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCisgICAgICAgICJQbGVhc2UgbG9naW4gbWFudWFs bHkiLAorICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAxMDAwMDAsICd0 YXBUb0Rpc21pc3MnOiBmYWxzZX0KKyAgICApOworfQorCitmdW5jdGlvbiBtZXNzYWdlX2ZhaWxl ZF9jb25uZWN0aW9uKCl7CisgICAgdG9hc3RyLmVycm9yKAorICAgICAgICAiQ291bGQgbm90IGNv bm5lY3QgdG8gSVB5dGhvbiBOb3RlYm9vay4gUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmk9CnN0 cmF0b3IuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5 dGhvbi93aWtpL0NvdWxkLT0Kbm90LWNvbm5lY3QtdG8tSVB5dGhvbi1Ob3RlYm9vaycgdGFyZ2V0 PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4iLAorICAgICJTZWN1cml0eSB3YXJuaW5n IiwKKyAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBU b0Rpc21pc3MnOiB0cnVlfQorICAgICk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2Vfbm9fYXV0aCgp eworICAgIHRvYXN0ci53YXJuaW5nKAorICAgICAgICAiSVB5dGhvbiBOb3RlYm9vayB3YXMgbHVu Y2hlZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLiBUaGlzIGlzIGEgc2U9CmN1cml0eSBpc3N1ZS4g PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uL3dp a2kvST0KUHl0aG9uLU5vdGVib29rLXdhcy1sdW5jaGVkLXdpdGhvdXQtYXV0aGVudGljYXRpb24n IHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgPQpkZXRhaWxzIC4uLjwvYT4iLAorICAgICAgICAiU2Vj dXJpdHkgd2FybmluZyIsCisgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6 IDIwMDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9CisgICAgKTsKK30KKworCiAvKioKICAqIExv YWQgYW4gaW50ZXJhY3RpdmUgZW52aXJvbm1lbnQgKElFKSBmcm9tIGEgcmVtb3RlIFVSTAogICog QHBhcmFtIHtCb29sZWFufSBwYXNzd29yZF9hdXRoIFdoZXRoZXIgb3Igbm90IHRoaXMgcmVzb3Vy Y2UgcmVxdWlyZXMgcGE9CnNzd29yZCBhdXRoZW50aWNhdGlvbgoKCmh0dHBzOi8vYml0YnVja2V0 Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wMWVmZDcxNzBkYTUvCkNoYW5nZXNl dDogICAwMWVmZDcxNzBkYTUKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0 LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBNb3ZlZCBzcGlubmVyIHRvIGdlbmVy aWMgSUUganMKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgOTgxMTlkMTY5MDRiODgyNjg4 YjZjYTU1MDEyNTZiOTE2MzA2NGU2YiAtciAwMWVmZDcxNzBkYTVmODhiZjY1MzYyNz0KYWQzNDZm Yzk1YjIwODhmZTIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMv aWUuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMv aWUuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMv aWUuanMKQEAgLTMsMTIgKzMsMjEgQEAKICAqIE5vdCBpZGVtcG90ZW50CiAgKi8KIGZ1bmN0aW9u IGFwcGVuZF9ub3RlYm9vayh1cmwpewotICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7CisgICAg Y2xlYXJfbWFpbl9hcmVhKCk7CiAgICAgJCgnI21haW4nKS5hcHBlbmQoJzxvYmplY3QgZGF0YT0z RCInICsgdXJsICsgJyIgaGVpZ2h0PTNEIjk1JSIgd2lkdGg9Cj0zRCIxMDAlIj4nCiAgICAgKyc8 ZW1iZWQgc3JjPTNEIicgKyB1cmwgKyAnIiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSIv Pjwvb2JqZWN0PicKICAgICApOwogfQo9MjAKK2Z1bmN0aW9uIGNsZWFyX21haW5fYXJlYSgpewor ICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7CisgICAgJCgnI21haW4nKS5jaGlsZHJlbigpLnJl bW92ZSgpOworfQorCitmdW5jdGlvbiBkaXNwbGF5X3NwaW5uZXIoKXsKKyAgICAgICAgJCgnI21h aW4nKS5hcHBlbmQoJzxpbWcgaWQ9M0Qic3Bpbm5lciIgc3JjPTNEIicgKyBnYWxheHlfcm9vdCAr ICcvPQpzdGF0aWMvc3R5bGUvbGFyZ2VzcGlubmVyLmdpZiIgc3R5bGU9M0QicG9zaXRpb246YWJz b2x1dGU7bWFyZ2luOmF1dG87dG9wOjA9CjtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsiPicpOwor fQorCj0yMAogLyoqCiAgKiBJbml0aWFsIHZlcnNpb24gb2YgZnVuY3Rpb24gdG8gdGVzdCBhdmFp bGFiaWxpdHkgb2YgVVJML3Jlc291cmNlCgpkaWZmIC1yIDk4MTE5ZDE2OTA0Yjg4MjY4OGI2Y2E1 NTAxMjU2YjkxNjMwNjRlNmIgLXIgMDFlZmQ3MTcwZGE1Zjg4YmY2NTM2Mjc9CmFkMzQ2ZmM5NWIy MDg4ZmUyIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lweXRo b24uanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMv aXB5dGhvbi5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0 YXRpYy9pcHl0aG9uLmpzCkBAIC0zOCw3ICszOCw3IEBACiBmdW5jdGlvbiBsb2FkX25vdGVib29r KHBhc3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVibz0Kb2tf YWNjZXNzX3VybCwgYXBhY2hlX3VybHMsIGdhbGF4eV9yb290KXsKICAgICAkKCBkb2N1bWVudCAp LnJlYWR5KGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgY291bnRlciA9M0QgMDsKLSAgICAgICAg JCgnI21haW4nKS5hcHBlbmQoJzxpbWcgaWQ9M0Qic3Bpbm5lciIgc3JjPTNEIicgKyBnYWxheHlf cm9vdCArICcvPQpzdGF0aWMvc3R5bGUvbGFyZ2VzcGlubmVyLmdpZiIgc3R5bGU9M0QicG9zaXRp b246YWJzb2x1dGU7bWFyZ2luOmF1dG87dG9wOjA9CjtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsi PicpOworICAgICAgICBkaXNwbGF5X3NwaW5uZXIoKTsKICAgICAgICAgaW50ZXJ2YWwgPTNEIHNl dEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAg ICAgIHR5cGU6ICJHRVQiLAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvY29tbWl0cy84MzE4YmM0NDRiOWEvCkNoYW5nZXNldDogICA4MzE4YmM0NDRiOWEKVXNl cjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAw ClN1bW1hcnk6ICAgICBSZWZhY3RvcmVkIG91dCBVUkwgYWNjZXNzIHRlc3RpbmcKQWZmZWN0ZWQg IzogIDIgZmlsZXMKCmRpZmYgLXIgMDFlZmQ3MTcwZGE1Zjg4YmY2NTM2MjdhZDM0NmZjOTViMjA4 OGZlMiAtciA4MzE4YmM0NDRiOWE5ODlmZmQzNjg4Nz0KNGMxYmI4MTJkN2UzMDc3MjEgY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaWUuanMKLS0tIGEvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaWUuanMKKysrIGIvY29uZmln L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaWUuanMKQEAgLTIzLDE3ICsy MywyNSBAQAogICogSW5pdGlhbCB2ZXJzaW9uIG9mIGZ1bmN0aW9uIHRvIHRlc3QgYXZhaWxhYmls aXR5IG9mIFVSTC9yZXNvdXJjZQogICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMjUzOTAy MDYvMzQ3MzY4CiAgKi8KLWZ1bmN0aW9uIHRlc3RfaWVfYXZhaWxhYmlsaXR5KHVybCl7CitmdW5j dGlvbiB0ZXN0X2llX2F2YWlsYWJpbGl0eSh1cmwsIHN1Y2Nlc3NfY2FsbGJhY2speworICAgIHZh ciByZXF1ZXN0X2NvdW50ID0zRCAwOworICAgIGRpc3BsYXlfc3Bpbm5lcigpOwogICAgIGludGVy dmFsID0zRCBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICAgICAkLmFqYXgoewogICAgICAg ICAgICAgdHlwZTogIkdFVCIsCiAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgIHN1 Y2Nlc3M6IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZh bCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgLy9faGFu ZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVibz0Kb2tf bG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscywgZG9ja2VyX2RlbGF5 KTsKKyAgICAgICAgICAgICAgICBzdWNjZXNzX2NhbGxiYWNrKCk7CisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgcmVxdWVzdF9j b3VudCsrOworICAgICAgICAgICAgICAgIGlmKHJlcXVlc3RfY291bnQgPiAzMCl7CisgICAgICAg ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgICAg ICBjbGVhcl9tYWluX2FyZWEoKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkdh dmUgdXAgYWZ0ZXIgMTUgc2Vjb25kcyIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg IH0KICAgICAgICAgfSk7CiAgICAgfSwgNTAwKTsKIH0KLQoKZGlmZiAtciAwMWVmZDcxNzBkYTVm ODhiZjY1MzYyN2FkMzQ2ZmM5NWIyMDg4ZmUyIC1yIDgzMThiYzQ0NGI5YTk4OWZmZDM2ODg3PQo0 YzFiYjgxMmQ3ZTMwNzcyMSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0 YXRpYy9pcHl0aG9uLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vc3RhdGljL2lweXRob24uanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi9zdGF0aWMvaXB5dGhvbi5qcwpAQCAtMzcsMjcgKzM3LDkgQEAKICAqLwogZnVuY3Rp b24gbG9hZF9ub3RlYm9vayhwYXNzd29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5f dXJsLCBub3RlYm89Cm9rX2FjY2Vzc191cmwsIGFwYWNoZV91cmxzLCBnYWxheHlfcm9vdCl7CiAg ICAgJCggZG9jdW1lbnQgKS5yZWFkeShmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGNvdW50ZXIg PTNEIDA7Ci0gICAgICAgIGRpc3BsYXlfc3Bpbm5lcigpOwotICAgICAgICBpbnRlcnZhbCA9M0Qg c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAg ICAgICAgdHlwZTogIkdFVCIsCi0gICAgICAgICAgICAgICAgdXJsOiBub3RlYm9va19hY2Nlc3Nf dXJsLAotICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICAg ICAgICAgIGNvdW50ZXIrKzsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRl cnZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIF9oYW5kbGVfbm90ZWJvb2tfbG9hZGluZyhwYXNz d29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZT0KYm9va19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vz c191cmwsIGFwYWNoZV91cmxzKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg IGVycm9yOiBmdW5jdGlvbihhLCBiLCBjKXsKLSAgICAgICAgICAgICAgICAgICAgY291bnRlcisr OwotICAgICAgICAgICAgICAgICAgICBpZihjb3VudGVyID4gMTApewotICAgICAgICAgICAgICAg ICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBjb25zb2xlLmxvZygiR2l2aW5nIHVwISIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJTb21lIGVycm9yIik7Ci0gICAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIDUwMCk7CisgICAgICAgIHRlc3RfaWVf YXZhaWxhYmlsaXR5KG5vdGVib29rX2FjY2Vzc191cmwsIGZ1bmN0aW9uKCl7CisgICAgICAgICAg ICBfaGFuZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVi b29rX2xvZz0KaW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscyk7CisgICAg ICAgIH0pOwogICAgIH0pOwogfQo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dh bGF4eS1jZW50cmFsL2NvbW1pdHMvY2JkM2QyYTNiMGVmLwpDaGFuZ2VzZXQ6ICAgY2JkM2QyYTNi MGVmClVzZXI6ICAgICAgICBlcmFzY2hlMgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODow NCswMDowMApTdW1tYXJ5OiAgICAgUmVmYWN0b3JlZCBmdW5jdGlvbiBjYWxscwpBZmZlY3RlZCAj OiAgMyBmaWxlcwoKZGlmZiAtciA4MzE4YmM0NDRiOWE5ODlmZmQzNjg4NzRjMWJiODEyZDdlMzA3 NzIxIC1yIGNiZDNkMmEzYjBlZmJjMjVjNjlkMDA5PQoxOWU3NWYxNDgyOTU2YmM5NCBjb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pZS5qcwotLS0gYS9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pZS5qcworKysgYi9jb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pZS5qcwpAQCAtNDUsMyArNDUs MTggQEAKICAgICAgICAgfSk7CiAgICAgfSwgNTAwKTsKIH0KKworLyoqCisgKiBMb2FkIGFuIGlu dGVyYWN0aXZlIGVudmlyb25tZW50IChJRSkgZnJvbSBhIHJlbW90ZSBVUkwKKyAqIEBwYXJhbSB7 U3RyaW5nfSBwYXNzd29yZDogcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUgdG8gdGhlIHJl bW90ZSByPQplc291cmNlCisgKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfbG9naW5fdXJsOiBV UkwgdGhhdCBzaG91bGQgYmUgUE9TVGVkIHRvIGZvciBsbz0KZ2luCisgKiBAcGFyYW0ge1N0cmlu Z30gbm90ZWJvb2tfYWNjZXNzX3VybDogdGhlIFVSTCBlbWJlZGVkIGluIHRoZSBwYWdlIGFuZCBs bz0KYWRlZAorICoKKyAqLworZnVuY3Rpb24gbG9hZF9ub3RlYm9vayhwYXNzd29yZCwgbm90ZWJv b2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCA9CmNhbGxiYWNrX2Z1bmN0aW9uKXsK KyAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0X2llX2F2 YWlsYWJpbGl0eShub3RlYm9va19hY2Nlc3NfdXJsLCBmdW5jdGlvbigpeworICAgICAgICAgICAg Y2FsbGJhY2tfZnVuY3Rpb24obm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJs KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CgpkaWZmIC1yIDgzMThiYzQ0NGI5YTk4OWZmZDM2 ODg3NGMxYmI4MTJkN2UzMDc3MjEgLXIgY2JkM2QyYTNiMGVmYmMyNWM2OWQwMDk9CjE5ZTc1ZjE0 ODI5NTZiYzk0IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2lw eXRob24uanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0 aWMvaXB5dGhvbi5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L3N0YXRpYy9pcHl0aG9uLmpzCkBAIC0yNSwyOCArMjUsMjMgQEAKPTIwCiAvKioKICAqIExvYWQg YW4gaW50ZXJhY3RpdmUgZW52aXJvbm1lbnQgKElFKSBmcm9tIGEgcmVtb3RlIFVSTAotICogQHBh cmFtIHtCb29sZWFufSBwYXNzd29yZF9hdXRoIFdoZXRoZXIgb3Igbm90IHRoaXMgcmVzb3VyY2Ug cmVxdWlyZXMgcGE9CnNzd29yZCBhdXRoZW50aWNhdGlvbgogICogQHBhcmFtIHtTdHJpbmd9IHBh c3N3b3JkOiBwYXNzd29yZCB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0byB0aGUgcmVtb3RlIHI9CmVz b3VyY2UKICAqIEBwYXJhbSB7U3RyaW5nfSBub3RlYm9va19sb2dpbl91cmw6IFVSTCB0aGF0IHNo b3VsZCBiZSBQT1NUZWQgdG8gZm9yIGxvPQpnaW4KICAqIEBwYXJhbSB7U3RyaW5nfSBub3RlYm9v a19hY2Nlc3NfdXJsOiB0aGUgVVJMIGVtYmVkZWQgaW4gdGhlIHBhZ2UgYW5kIGxvPQphZGVkCi0g KiBAcGFyYW0ge0Jvb2xlYW59IGFwYWNoZV91cmxzOiBQcm94eWluZyBpcyBkb25lIG91dHNpZGUg b2YgZ2FsYXh5IGluIHRoZT0KIHdlYnNlcnZlcgotICogQHBhcmFtIHtTdHJpbmd9IGdhbGF4eV9y b290OiByb290IG9mIHRoZSBnYWxheHkgc2VydmVyLCB1c2VkIGZvciBmaW5kaW49CmcgdGhlIHN0 YXRpYyBzcGlubmVyLmdpZiB0aGF0IHNoaXBzIHdpdGggZ2FsYXh5LgogICoKLSAqIFRPRE86IFRo aXMgZnVuY3Rpb24gbmVlZHMgYSBsb3Qgb2Ygd29yayB0byBtYWtlIGl0IG1vcmUgZ2VuZXJpYzoK LSAqIFRPRE86IGV4Y2hhbmdlIGxvZ2luX3VybCwgcGFzc3dvcmQsIHBhc3N3b3JkX2F1dGggZm9y IGEgc2luZ2xlIGZ1bmN0aW9uPQogd2hpY2ggZW5jYXBzdWxhdGVzIGFsbCB0aGUgYXV0aGVudGlj YXRpb24gcHJvY2VkdXJlLCBhcyB0aGF0IHdpbGwgZGlmZmVyIGI9CmV0d2VlbiBJRXMuCiAgKi8K LWZ1bmN0aW9uIGxvYWRfbm90ZWJvb2socGFzc3dvcmRfYXV0aCwgcGFzc3dvcmQsIG5vdGVib29r X2xvZ2luX3VybCwgbm90ZWJvPQpva19hY2Nlc3NfdXJsLCBhcGFjaGVfdXJscywgZ2FsYXh5X3Jv b3QpeworZnVuY3Rpb24gbG9hZF9ub3RlYm9vayhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJs LCBub3RlYm9va19hY2Nlc3NfdXJsKXsKICAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9u KCkgewogICAgICAgICB0ZXN0X2llX2F2YWlsYWJpbGl0eShub3RlYm9va19hY2Nlc3NfdXJsLCBm dW5jdGlvbigpewotICAgICAgICAgICAgX2hhbmRsZV9ub3RlYm9va19sb2FkaW5nKHBhc3N3b3Jk X2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2c9CmluX3VybCwgbm90ZWJvb2tfYWNjZXNzX3Vy bCwgYXBhY2hlX3VybHMpOworICAgICAgICAgICAgX2hhbmRsZV9ub3RlYm9va19sb2FkaW5nKG5v dGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzX3U9CnJsKTsKICAgICAgICAgfSk7CiAg ICAgfSk7CiB9Cj0yMAogLyoqCi0gKiBJbnRlcm5hbCBmdW5jdGlvbgorICogTXVzdCBiZSBpbXBs ZW1lbnRlZCBieSBJRXMKICAqLwotZnVuY3Rpb24gX2hhbmRsZV9ub3RlYm9va19sb2FkaW5nKHBh c3N3b3JkX2F1dGgsIHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl89CnVybCwgbm90ZWJvb2tfYWNj ZXNzX3VybCwgYXBhY2hlX3VybHMpeworZnVuY3Rpb24gX2hhbmRsZV9ub3RlYm9va19sb2FkaW5n KG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzX3VybCl7CiAgICAgaWYgKCBwYXNz d29yZF9hdXRoICkgewogICAgICAgICAvLyBNYWtlIGFuIEFKQVggUE9TVAogICAgICAgICAkLmFq YXgoewoKZGlmZiAtciA4MzE4YmM0NDRiOWE5ODlmZmQzNjg4NzRjMWJiODEyZDdlMzA3NzIxIC1y IGNiZDNkMmEzYjBlZmJjMjVjNjlkMDA5PQoxOWU3NWYxNDgyOTU2YmM5NCBjb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1h a28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMv aXB5dGhvbi5tYWtvCkBAIC01NCw3ICs1NCw3IEBACiAgICAgfSwKIH0pOwogcmVxdWlyZWpzKFsn cGx1Z2luL2llJywgJ3BsdWdpbi9pcHl0aG9uJ10sIGZ1bmN0aW9uKCl7Ci0gICAgbG9hZF9ub3Rl Ym9vayhwYXNzd29yZF9hdXRoLCBwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9v a19hYz0KY2Vzc191cmwsIGFwYWNoZV91cmxzLCBnYWxheHlfcm9vdCk7CisgICAgbG9hZF9ub3Rl Ym9vayhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsKTsK IH0pOwogPC9zY3JpcHQ+PGRpdiBpZD0zRCJtYWluIiB3aWR0aD0zRCIxMDAlIiBoZWlnaHQ9M0Qi MTAwJSI+CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21t aXRzLzc0ZjcyMTYyMzA3YS8KQ2hhbmdlc2V0OiAgIDc0ZjcyMTYyMzA3YQpVc2VyOiAgICAgICAg ZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTog ICAgIE1vcmUgdGVzdGluZywgbm93IHdpdGggcGFzc3dvcmRzCkFmZmVjdGVkICM6ICA0IGZpbGVz CgpkaWZmIC1yIGNiZDNkMmEzYjBlZmJjMjVjNjlkMDA5MTllNzVmMTQ4Mjk1NmJjOTQgLXIgNzRm NzIxNjIzMDdhZDc1MzI1ZDQ4MGI9CjdjMDNkMTUyMTVlNmUxNGNhIGNvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCkBAIC00LDkgKzQsOSBAQAogICovCiBm dW5jdGlvbiBhcHBlbmRfbm90ZWJvb2sodXJsKXsKICAgICBjbGVhcl9tYWluX2FyZWEoKTsKLSAg ICAkKCcjbWFpbicpLmFwcGVuZCgnPG9iamVjdCBkYXRhPTNEIicgKyB1cmwgKyAnIiBoZWlnaHQ9 M0QiOTUlIiB3aWR0aD0KPTNEIjEwMCUiPicKLSAgICArJzxlbWJlZCBzcmM9M0QiJyArIHVybCAr ICciIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIi8+PC9vYmplY3Q+JwotICAgICk7Cisg ICAgLy8kKCcjbWFpbicpLmFwcGVuZCgnPG9iamVjdCBkYXRhPTNEIicgKyB1cmwgKyAnIiBoZWln aHQ9M0QiOTUlIiB3aWR0aD0KPTNEIjEwMCUiPicKKyAgICAvLysnPGVtYmVkIHNyYz0zRCInICsg dXJsICsgJyIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiLz48L29iamVjPQp0PicKKyAg ICAvLyk7CiB9Cj0yMAogZnVuY3Rpb24gY2xlYXJfbWFpbl9hcmVhKCl7CkBAIC0yOSw3ICsyOSw3 IEBACiAgICAgaW50ZXJ2YWwgPTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgICAgICQu YWpheCh7CiAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKLSAgICAgICAgICAgIHVybDogdXJsLAor ICAgICAgICAgICAgdXJsOiB1cmwgKyAiP2llX3Rlc3Q9M0QxIiwKICAgICAgICAgICAgIHN1Y2Nl c3M6IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7 CiAgICAgICAgICAgICAgICAgc3VjY2Vzc19jYWxsYmFjaygpOwoKZGlmZiAtciBjYmQzZDJhM2Iw ZWZiYzI1YzY5ZDAwOTE5ZTc1ZjE0ODI5NTZiYzk0IC1yIDc0ZjcyMTYyMzA3YWQ3NTMyNWQ0ODBi PQo3YzAzZDE1MjE1ZTZlMTRjYSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9u L3N0YXRpYy9pcHl0aG9uLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vc3RhdGljL2lweXRob24uanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi9zdGF0aWMvaXB5dGhvbi5qcwpAQCAtMzIsOCArMzIsOCBAQAogICovCiBmdW5j dGlvbiBsb2FkX25vdGVib29rKHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVib29r X2FjY2Vzc191cmwpewogICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7Ci0gICAg ICAgIHRlc3RfaWVfYXZhaWxhYmlsaXR5KG5vdGVib29rX2FjY2Vzc191cmwsIGZ1bmN0aW9uKCl7 Ci0gICAgICAgICAgICBfaGFuZGxlX25vdGVib29rX2xvYWRpbmcobm90ZWJvb2tfbG9naW5fdXJs LCBub3RlYm9va19hY2Nlc3NfdT0KcmwpOworICAgICAgICB0ZXN0X2llX2F2YWlsYWJpbGl0eShu b3RlYm9va19sb2dpbl91cmwsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBfaGFuZGxlX25vdGVi b29rX2xvYWRpbmcocGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvbz0Ka19hY2Nl c3NfdXJsKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00MSw4ICs0MSw5IEBACiAvKioK ICAqIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgSUVzCiAgKi8KLWZ1bmN0aW9uIF9oYW5kbGVfbm90 ZWJvb2tfbG9hZGluZyhub3RlYm9va19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vzc191cmwpewot ICAgIGlmICggcGFzc3dvcmRfYXV0aCApIHsKK2Z1bmN0aW9uIF9oYW5kbGVfbm90ZWJvb2tfbG9h ZGluZyhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hPQpjY2Vzc191cmwp eworICAgIGNvbnNvbGUubG9nKGllX3Bhc3N3b3JkX2F1dGgpOworICAgIGlmICggaWVfcGFzc3dv cmRfYXV0aCApIHsKICAgICAgICAgLy8gTWFrZSBhbiBBSkFYIFBPU1QKICAgICAgICAgJC5hamF4 KHsKICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKQEAgLTYwLDcgKzYxLDcgQEAKICAgICAgICAg ICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CiAgICAgICAgICAg ICB9LAogICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsK LSAgICAgICAgICAgICAgICBpZihwYXNzd29yZF9hdXRoICYmICFhcGFjaGVfdXJscyl7CisgICAg ICAgICAgICAgICAgaWYoaWVfcGFzc3dvcmRfYXV0aCAmJiAhaWVfYXBhY2hlX3VybHMpewogICAg ICAgICAgICAgICAgICAgICAvLyBGYWlsdXJlIGhhcHBlbnMgZHVlIHRvIENPUlMKICAgICAgICAg ICAgICAgICAgICAgbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29yZCk7CiAgICAgICAgICAgICAg ICAgICAgIGFwcGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKCmRpZmYgLXIgY2Jk M2QyYTNiMGVmYmMyNWM2OWQwMDkxOWU3NWYxNDgyOTU2YmM5NCAtciA3NGY3MjE2MjMwN2FkNzUz MjVkNDgwYj0KN2MwM2QxNTIxNWU2ZTE0Y2EgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTIwMyw5ICsyMDMsMTEgQEAK PTIwCj0yMAogPCVkZWYgbmFtZT0zRCJkZWZhdWx0X2phdmFzY3JpcHRfdmFyaWFibGVzKCkiPgot dmFyIHBhc3N3b3JkX2F1dGggPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0 ci5QQVNTV09SRF9BVVRIKSA9Cn07Ci12YXIgYXBhY2hlX3VybHMgPTNEICR7IHNlbGYuamF2YXNj cmlwdF9ib29sZWFuKHNlbGYuYXR0ci5BUEFDSEVfVVJMUykgfTsKLXZhciBwYXNzd29yZCA9M0Qg JyR7IHNlbGYuYXR0ci5ub3RlYm9va19wdyB9JzsKKy8vIEdsb2JhbHMKK2llX3Bhc3N3b3JkX2F1 dGggPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5QQVNTV09SRF9BVVRI KSB9OworaWVfYXBhY2hlX3VybHMgPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYu YXR0ci5BUEFDSEVfVVJMUykgfTsKK2llX3Bhc3N3b3JkID0zRCAnJHsgc2VsZi5hdHRyLm5vdGVi b29rX3B3IH0nOworLy8gRG8gdGhlc2UgbmVlZCB0byBiZSBnbG9iYWwgYXMgd2VsbD8/CiB2YXIg Z2FsYXh5X3Jvb3QgPTNEICckeyBzZWxmLmF0dHIucm9vdCB9JzsKIHZhciBhcHBfcm9vdCA9M0Qg JyR7IHNlbGYuYXR0ci5hcHBfcm9vdCB9JzsKIDwvJWRlZj4KCmRpZmYgLXIgY2JkM2QyYTNiMGVm YmMyNWM2OWQwMDkxOWU3NWYxNDgyOTU2YmM5NCAtciA3NGY3MjE2MjMwN2FkNzUzMjVkNDgwYj0K N2MwM2QxNTIxNWU2ZTE0Y2EgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp c3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNTQsNyArNTQs NyBAQAogICAgIH0sCiB9KTsKIHJlcXVpcmVqcyhbJ3BsdWdpbi9pZScsICdwbHVnaW4vaXB5dGhv biddLCBmdW5jdGlvbigpewotICAgIGxvYWRfbm90ZWJvb2socGFzc3dvcmQsIG5vdGVib29rX2xv Z2luX3VybCwgbm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgbG9hZF9ub3RlYm9vayhpZV9wYXNz d29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsKTsKIH0pOwogPC9z Y3JpcHQ+PGRpdiBpZD0zRCJtYWluIiB3aWR0aD0zRCIxMDAlIiBoZWlnaHQ9M0QiMTAwJSI+CgoK aHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzUyM2Zj MmZkMzM2MC8KQ2hhbmdlc2V0OiAgIDUyM2ZjMmZkMzM2MApVc2VyOiAgICAgICAgZXJhc2NoZTIK RGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEZpeGVk IEpTIGJvb2xlYW4gY29udmVyc2lvbgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDc0Zjcy MTYyMzA3YWQ3NTMyNWQ0ODBiN2MwM2QxNTIxNWU2ZTE0Y2EgLXIgNTIzZmMyZmQzMzYwODQwZjM0 MTRmOWI9CjFlYWJjYjcwZDRhNGZmOTFmIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2llLm1ha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCkBAIC0xNDQsMTIgKzE0NCwxMiBAQAog JT48LyVkZWY+Cj0yMAotPCVkZWYgbmFtZT0zRCJqYXZhc2NyaXB0X2Jvb2xlYW4obGVuZ3RoKSI+ Cis8JWRlZiBuYW1lPTNEImphdmFzY3JpcHRfYm9vbGVhbihweXRob25fYm9vbGVhbikiPjwlCiAg ICAgIiIiCiAgICAgICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYm9vbGVhbiBm b3IgdXNlIGluIEpTCiAgICAgIiIiCi0gICAgaWYgYm9vbGVhbjoKKyAgICBpZiBweXRob25fYm9v bGVhbjoKICAgICAgICAgcmV0dXJuICJ0cnVlIjsKICAgICBlbHNlOgogICAgICAgICByZXR1cm4g ImZhbHNlIgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29t bWl0cy8yOTc5MTMxYzJhYTIvCkNoYW5nZXNldDogICAyOTc5MTMxYzJhYTIKVXNlcjogICAgICAg IGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6 ICAgICBDb2RlIHJlb3JnIG1vc3RseSBkb25lCkFmZmVjdGVkICM6ICAyIGZpbGVzCgpkaWZmIC1y IDUyM2ZjMmZkMzM2MDg0MGYzNDE0ZjliMWVhYmNiNzBkNGE0ZmY5MWYgLXIgMjk3OTEzMWMyYWEy ZTllZmRmODU4NzA9CjM1NWFkZmU0ZTJiY2RiYTU2IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vc3RhdGljL2llLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vc3RhdGljL2llLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vc3RhdGljL2llLmpzCkBAIC00LDkgKzQsOSBAQAogICovCiBmdW5jdGlvbiBh cHBlbmRfbm90ZWJvb2sodXJsKXsKICAgICBjbGVhcl9tYWluX2FyZWEoKTsKLSAgICAvLyQoJyNt YWluJykuYXBwZW5kKCc8b2JqZWN0IGRhdGE9M0QiJyArIHVybCArICciIGhlaWdodD0zRCI5NSUi IHdpZHRoPQo9M0QiMTAwJSI+JwotICAgIC8vKyc8ZW1iZWQgc3JjPTNEIicgKyB1cmwgKyAnIiBo ZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSIvPjwvb2JqZWM9CnQ+JwotICAgIC8vKTsKKyAg ICAkKCcjbWFpbicpLmFwcGVuZCgnPG9iamVjdCBkYXRhPTNEIicgKyB1cmwgKyAnIiBoZWlnaHQ9 M0QiOTUlIiB3aWR0aD0KPTNEIjEwMCUiPicKKyAgICArJzxlbWJlZCBzcmM9M0QiJyArIHVybCAr ICciIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAlIi8+PC9vYmplY3Q+JworICAgICk7CiB9 Cj0yMAogZnVuY3Rpb24gY2xlYXJfbWFpbl9hcmVhKCl7CkBAIC0yMCw4ICsyMCwxMSBAQAo9MjAK PTIwCiAvKioKLSAqIEluaXRpYWwgdmVyc2lvbiBvZiBmdW5jdGlvbiB0byB0ZXN0IGF2YWlsYWJp bGl0eSBvZiBVUkwvcmVzb3VyY2UKKyAqIFRlc3QgYXZhaWxhYmlsaXR5IG9mIGEgVVJMLCBhbmQg Y2FsbCBhIGNhbGxiYWNrIHdoZW4gZG9uZS4KICAqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9x LzI1MzkwMjA2LzM0NzM2OAorICogQHBhcmFtIHtTdHJpbmd9IHVybDogVVJMIHRvIHRlc3QgYXZh aWxhYmlsaXR5IG9mLiBNdXN0IHJldHVybiBhIDIwMCAoMzA9CjItPjIwMCBpcyBPSykuCisgKiBA cGFyYW0ge1N0cmluZ30gY2FsbGJhY2s6IGZ1bmN0aW9uIHRvIGNhbGwgb25jZSBzdWNjZXNzZnVs bHkgY29ubmVjdGVkLgorICoKICAqLwogZnVuY3Rpb24gdGVzdF9pZV9hdmFpbGFiaWxpdHkodXJs LCBzdWNjZXNzX2NhbGxiYWNrKXsKICAgICB2YXIgcmVxdWVzdF9jb3VudCA9M0QgMDsKQEAgLTI5 LDcgKzMyLDYgQEAKICAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAg ICAgICAgJC5hamF4KHsKICAgICAgICAgICAgIHR5cGU6ICJHRVQiLAotICAgICAgICAgICAgdXJs OiB1cmwgKyAiP2llX3Rlc3Q9M0QxIiwKICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7 CiAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgICAg ICAgc3VjY2Vzc19jYWxsYmFjaygpOwpAQCAtMzksMjQgKzQxLDEzIEBACiAgICAgICAgICAgICAg ICAgaWYocmVxdWVzdF9jb3VudCA+IDMwKXsKICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl cnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgICAgIGNsZWFyX21haW5fYXJlYSgpOwot ICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiR2F2ZSB1cCBhZnRlciAxNSBzZWNvbmRz Iik7CisgICAgICAgICAgICAgICAgICAgIHRvYXN0ci5lcnJvcigKKyAgICAgICAgICAgICAgICAg ICAgICAgICJDb3VsZCBub3QgY29ubmVjdCB0byBJRSwgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0 PQpvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IiLAorICAgICAgICAgICAgICAg ICAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rp c209Cmlzcyc6IGZhbHNlfQorICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfSwgNTAwKTsKIH0KLQotLyoqCi0g KiBMb2FkIGFuIGludGVyYWN0aXZlIGVudmlyb25tZW50IChJRSkgZnJvbSBhIHJlbW90ZSBVUkwK LSAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZDogcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNh dGUgdG8gdGhlIHJlbW90ZSByPQplc291cmNlCi0gKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tf bG9naW5fdXJsOiBVUkwgdGhhdCBzaG91bGQgYmUgUE9TVGVkIHRvIGZvciBsbz0KZ2luCi0gKiBA cGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfYWNjZXNzX3VybDogdGhlIFVSTCBlbWJlZGVkIGluIHRo ZSBwYWdlIGFuZCBsbz0KYWRlZAotICoKLSAqLwotZnVuY3Rpb24gbG9hZF9ub3RlYm9vayhwYXNz d29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsLCA9CmNhbGxiYWNr X2Z1bmN0aW9uKXsKLSAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgICAg ICB0ZXN0X2llX2F2YWlsYWJpbGl0eShub3RlYm9va19hY2Nlc3NfdXJsLCBmdW5jdGlvbigpewot ICAgICAgICAgICAgY2FsbGJhY2tfZnVuY3Rpb24obm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9v a19hY2Nlc3NfdXJsKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19CgpkaWZmIC1yIDUyM2ZjMmZk MzM2MDg0MGYzNDE0ZjliMWVhYmNiNzBkNGE0ZmY5MWYgLXIgMjk3OTEzMWMyYWEyZTllZmRmODU4 NzA9CjM1NWFkZmU0ZTJiY2RiYTU2IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRo b24vc3RhdGljL2lweXRob24uanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi9zdGF0aWMvaXB5dGhvbi5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy9pcHl0aG9uL3N0YXRpYy9pcHl0aG9uLmpzCkBAIC0zMiw2ICszMiw4IEBACiAgKi8KIGZ1 bmN0aW9uIGxvYWRfbm90ZWJvb2socGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJv b2tfYWNjZXNzX3VybCl7CiAgICAgJCggZG9jdW1lbnQgKS5yZWFkeShmdW5jdGlvbigpIHsKKyAg ICAgICAgLy8gVGVzdCBub3RlYm9va19sb2dpbl91cmwgZm9yIGFjY2Vzc2liaWxpdHksIGV4ZWN1 dGluZyB0aGUgbG9naW4rPQpsb2FkIGZ1bmN0aW9uIHdoZW5ldmVyCisgICAgICAgIC8vIHdlJ3Zl IHN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQgdG8gdGhlIElFLgogICAgICAgICB0ZXN0X2llX2F2YWls YWJpbGl0eShub3RlYm9va19sb2dpbl91cmwsIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBfaGFu ZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJv bz0Ka19hY2Nlc3NfdXJsKTsKICAgICAgICAgfSk7CkBAIC00Miw3ICs0NCw2IEBACiAgKiBNdXN0 IGJlIGltcGxlbWVudGVkIGJ5IElFcwogICovCiBmdW5jdGlvbiBfaGFuZGxlX25vdGVib29rX2xv YWRpbmcocGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYT0KY2Nlc3NfdXJs KXsKLSAgICBjb25zb2xlLmxvZyhpZV9wYXNzd29yZF9hdXRoKTsKICAgICBpZiAoIGllX3Bhc3N3 b3JkX2F1dGggKSB7CiAgICAgICAgIC8vIE1ha2UgYW4gQUpBWCBQT1NUCiAgICAgICAgICQuYWph eCh7CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRz LzEzOThmMzk1YmI4My8KQ2hhbmdlc2V0OiAgIDEzOThmMzk1YmI4MwpVc2VyOiAgICAgICAgZXJh c2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAg IEluY3JlYXNpbmcgZGVsYXkgcmVtb3ZlcyBtdWx0aXBsZSByZXF1ZXN0IGlzc3VlCkFwcGFyZW50 bHkgdGhlIEdFVCByZXF1ZXN0cyB3ZXJlbid0IGNvbXBsZXRpbmcgYnkgdGhlIHRpbWUgdGhlIG5l eHQgd2FzIHNlbj0KdCwgbGVhZGluZyB0byBtdWx0aXBsZQpsb2dpbnMgaW4gc2hvcnQgc3VjY2Vz c2lvbiB3aGVuIHRoZSBwYWdlIHN0YXJ0ZWQgcmVzb2x2aW5nIHByb3Blcmx5LgpBZmZlY3RlZCAj OiAgMSBmaWxlCgpkaWZmIC1yIDI5NzkxMzFjMmFhMmU5ZWZkZjg1ODcwMzU1YWRmZTRlMmJjZGJh NTYgLXIgMTM5OGYzOTViYjgzODU1NjEzMjQwOTk9CjY4M2Q3YzliNGY3ZDMyYTdmIGNvbmZpZy9w bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCi0tLSBhL2NvbmZpZy9w bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCisrKyBiL2NvbmZpZy9w bHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2llLmpzCkBAIC00OSw1ICs0OSw1 IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9KTsKLSAgICB9 LCA1MDApOworICAgIH0sIDEwMDApOwogfQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy9mNjdjOGIzNzRiYzcvCkNoYW5nZXNldDogICBmNjdjOGIz NzRiYzcKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4 OjA0KzAwOjAwClN1bW1hcnk6ICAgICBGaXhlcyAjMjUKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlm ZiAtciAxMzk4ZjM5NWJiODM4NTU2MTMyNDA5OTY4M2Q3YzliNGY3ZDMyYTdmIC1yIGY2N2M4YjM3 NGJjN2YwODE4YjdhZTEyPQo2ZTFmNmNlNDQzMTI5ODYxNSBjb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm09CmFrbwotLS0gYS9jb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28KKysrIGIv Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5t YWtvCkBAIC0zMCw3ICszMCw3IEBACiAjIyBHZW5lcmFsIElFIHNwZWNpZmljCiAjIEFjY2VzcyBV UkxzIGZvciB0aGUgbm90ZWJvb2sgZnJvbSB3aXRoaW4gZ2FsYXh5Lgogbm90ZWJvb2tfYWNjZXNz X3VybCA9M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1RPfTovLyR7SE9TVH0vaXB5dGhvbi8ke1BP UlQ9Cn0vbm90ZWJvb2tzL2lweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5iJykKLW5vdGVib29r X2xvZ2luX3VybCA9M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1RPfTovLyR7SE9TVH0vaXB5dGhv bi8ke1BPUlR9PQovbG9naW4nKQorbm90ZWJvb2tfbG9naW5fdXJsID0zRCBpZS51cmxfdGVtcGxh dGUoJyR7UFJPVE99Oi8vJHtIT1NUfS9pcHl0aG9uLyR7UE9SVH09Ci9sb2dpbj9uZXh0PTNEJTJG aXB5dGhvbiUyRiR7UE9SVH0lMkZ0cmVlJykKPTIwCiBkb2NrZXJfY21kID0zRCBpZS5kb2NrZXJf Y21kKHRlbXBfZGlyKQogc3VicHJvY2Vzcy5jYWxsKGRvY2tlcl9jbWQsIHNoZWxsPTNEVHJ1ZSkK CgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMDUy YjE5MDE5YmRlLwpDaGFuZ2VzZXQ6ICAgMDUyYjE5MDE5YmRlClVzZXI6ICAgICAgICBlcmFzY2hl MgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgTW92 ZWQgSlMgZmlsZXMgdG8gc3ViZGlyZWN0b3J5CkFmZmVjdGVkICM6ICA1IGZpbGVzCgpkaWZmIC1y IGY2N2M4YjM3NGJjN2YwODE4YjdhZTEyNmUxZjZjZTQ0MzEyOTg2MTUgLXIgMDUyYjE5MDE5YmRl ZTVlMWZiODQxNzE9Cjc4ZmI1NGQ2NGYxYjExNmRhIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vc3RhdGljL2llLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp b25zL2lweXRob24vc3RhdGljL2llLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAot LyoqCi0gKiBJbnRlcm5hbCBmdW5jdGlvbiB0byByZW1vdmUgY29udGVudCBmcm9tIHRoZSBtYWlu IGFyZWEgYW5kIGFkZCB0aGUgbm90ZT0KYm9vay4KLSAqIE5vdCBpZGVtcG90ZW50Ci0gKi8KLWZ1 bmN0aW9uIGFwcGVuZF9ub3RlYm9vayh1cmwpewotICAgIGNsZWFyX21haW5fYXJlYSgpOwotICAg ICQoJyNtYWluJykuYXBwZW5kKCc8b2JqZWN0IGRhdGE9M0QiJyArIHVybCArICciIGhlaWdodD0z RCI5NSUiIHdpZHRoPQo9M0QiMTAwJSI+JwotICAgICsnPGVtYmVkIHNyYz0zRCInICsgdXJsICsg JyIgaGVpZ2h0PTNEIjEwMCUiIHdpZHRoPTNEIjEwMCUiLz48L29iamVjdD4nCi0gICAgKTsKLX0K LQotZnVuY3Rpb24gY2xlYXJfbWFpbl9hcmVhKCl7Ci0gICAgJCgnI3NwaW5uZXInKS5yZW1vdmUo KTsKLSAgICAkKCcjbWFpbicpLmNoaWxkcmVuKCkucmVtb3ZlKCk7Ci19Ci0KLWZ1bmN0aW9uIGRp c3BsYXlfc3Bpbm5lcigpewotICAgICAgICAkKCcjbWFpbicpLmFwcGVuZCgnPGltZyBpZD0zRCJz cGlubmVyIiBzcmM9M0QiJyArIGdhbGF4eV9yb290ICsgJy89CnN0YXRpYy9zdHlsZS9sYXJnZXNw aW5uZXIuZ2lmIiBzdHlsZT0zRCJwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW46YXV0bzt0b3A6MD0K O2xlZnQ6MDtyaWdodDowO2JvdHRvbTowOyI+Jyk7Ci19Ci0KLQotLyoqCi0gKiBUZXN0IGF2YWls YWJpbGl0eSBvZiBhIFVSTCwgYW5kIGNhbGwgYSBjYWxsYmFjayB3aGVuIGRvbmUuCi0gKiBodHRw Oi8vc3RhY2tvdmVyZmxvdy5jb20vcS8yNTM5MDIwNi8zNDczNjgKLSAqIEBwYXJhbSB7U3RyaW5n fSB1cmw6IFVSTCB0byB0ZXN0IGF2YWlsYWJpbGl0eSBvZi4gTXVzdCByZXR1cm4gYSAyMDAgKDMw PQoyLT4yMDAgaXMgT0spLgotICogQHBhcmFtIHtTdHJpbmd9IGNhbGxiYWNrOiBmdW5jdGlvbiB0 byBjYWxsIG9uY2Ugc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZC4KLSAqCi0gKi8KLWZ1bmN0aW9uIHRl c3RfaWVfYXZhaWxhYmlsaXR5KHVybCwgc3VjY2Vzc19jYWxsYmFjayl7Ci0gICAgdmFyIHJlcXVl c3RfY291bnQgPTNEIDA7Ci0gICAgZGlzcGxheV9zcGlubmVyKCk7Ci0gICAgaW50ZXJ2YWwgPTNE IHNldEludGVydmFsKGZ1bmN0aW9uKCl7Ci0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB0 eXBlOiAiR0VUIiwKLSAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7Ci0gICAgICAgICAg ICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgc3VjY2Vzc19j YWxsYmFjaygpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigp ewotICAgICAgICAgICAgICAgIHJlcXVlc3RfY291bnQrKzsKLSAgICAgICAgICAgICAgICBpZihy ZXF1ZXN0X2NvdW50ID4gMzApewotICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGlu dGVydmFsKTsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJfbWFpbl9hcmVhKCk7Ci0gICAgICAg ICAgICAgICAgICAgIHRvYXN0ci5lcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb3Vs ZCBub3QgY29ubmVjdCB0byBJRSwgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0PQpvciIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAiRXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgeydj bG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rpc209Cmlzcyc6IGZh bHNlfQotICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgIH0KLSAgICAgICAgfSk7Ci0gICAgfSwgMTAwMCk7Ci19CgpkaWZmIC1yIGY2N2M4YjM3NGJj N2YwODE4YjdhZTEyNmUxZjZjZTQ0MzEyOTg2MTUgLXIgMDUyYjE5MDE5YmRlZTVlMWZiODQxNzE9 Cjc4ZmI1NGQ2NGYxYjExNmRhIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v c3RhdGljL2lweXRob24uanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi9zdGF0aWMvaXB5dGhvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLWZ1 bmN0aW9uIG1lc3NhZ2VfZmFpbGVkX2F1dGgocGFzc3dvcmQpewotICAgIHRvYXN0ci5pbmZvKAot ICAgICAgICAiQXV0b21hdGljIGF1dGhvcml6YXRpb24gZmFpbGVkLiBZb3UgY2FuIG1hbnVhbGx5 IGxvZ2luIHdpdGg6PGJyPiI9CiArIHBhc3N3b3JkICsgIjxicj48YSBocmVmPTNEJ2h0dHBzOi8v Z2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vdz0KaWtpL0F1dG9tYXRpYy1BdXRo b3JpemF0aW9uLUZhaWxlZCcgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4i LAotICAgICAgICAiUGxlYXNlIGxvZ2luIG1hbnVhbGx5IiwKLSAgICAgICAgeydjbG9zZUJ1dHRv bic6IHRydWUsICd0aW1lT3V0JzogMTAwMDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9Ci0gICAg KTsKLX0KLQotZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfY29ubmVjdGlvbigpewotICAgIHRvYXN0 ci5lcnJvcigKLSAgICAgICAgIkNvdWxkIG5vdCBjb25uZWN0IHRvIElQeXRob24gTm90ZWJvb2su IFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pPQpzdHJhdG9yLiA8YSBocmVmPTNEJ2h0dHBzOi8v Z2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vd2lraS9Db3VsZC09Cm5vdC1jb25u ZWN0LXRvLUlQeXRob24tTm90ZWJvb2snIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0YWlscyAu Li48L2E+IiwKLSAgICAiU2VjdXJpdHkgd2FybmluZyIsCi0gICAgICAgIHsnY2xvc2VCdXR0b24n OiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtaXNzJzogdHJ1ZX0KLSAgICApOwot fQotCi1mdW5jdGlvbiBtZXNzYWdlX25vX2F1dGgoKXsKLSAgICB0b2FzdHIud2FybmluZygKLSAg ICAgICAgIklQeXRob24gTm90ZWJvb2sgd2FzIGx1bmNoZWQgd2l0aG91dCBhdXRoZW50aWNhdGlv bi4gVGhpcyBpcyBhIHNlPQpjdXJpdHkgaXNzdWUuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIu Y29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93aWtpL0k9ClB5dGhvbi1Ob3RlYm9vay13YXMt bHVuY2hlZC13aXRob3V0LWF1dGhlbnRpY2F0aW9uJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlID0K ZGV0YWlscyAuLi48L2E+IiwKLSAgICAgICAgIlNlY3VyaXR5IHdhcm5pbmciLAotICAgICAgICB7 J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwgJ3RhcFRvRGlzbWlzcyc6IGZh bHNlfQotICAgICk7Ci19Ci0KLQotLyoqCi0gKiBMb2FkIGFuIGludGVyYWN0aXZlIGVudmlyb25t ZW50IChJRSkgZnJvbSBhIHJlbW90ZSBVUkwKLSAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZDog cGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUgdG8gdGhlIHJlbW90ZSByPQplc291cmNlCi0g KiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfbG9naW5fdXJsOiBVUkwgdGhhdCBzaG91bGQgYmUg UE9TVGVkIHRvIGZvciBsbz0KZ2luCi0gKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfYWNjZXNz X3VybDogdGhlIFVSTCBlbWJlZGVkIGluIHRoZSBwYWdlIGFuZCBsbz0KYWRlZAotICoKLSAqLwot ZnVuY3Rpb24gbG9hZF9ub3RlYm9vayhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3Rl Ym9va19hY2Nlc3NfdXJsKXsKLSAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgewot ICAgICAgICAvLyBUZXN0IG5vdGVib29rX2xvZ2luX3VybCBmb3IgYWNjZXNzaWJpbGl0eSwgZXhl Y3V0aW5nIHRoZSBsb2dpbis9CmxvYWQgZnVuY3Rpb24gd2hlbmV2ZXIKLSAgICAgICAgLy8gd2Un dmUgc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byB0aGUgSUUuCi0gICAgICAgIHRlc3RfaWVfYXZh aWxhYmlsaXR5KG5vdGVib29rX2xvZ2luX3VybCwgZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIF9o YW5kbGVfbm90ZWJvb2tfbG9hZGluZyhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3Rl Ym9vPQprX2FjY2Vzc191cmwpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotLyoqCi0gKiBN dXN0IGJlIGltcGxlbWVudGVkIGJ5IElFcwotICovCi1mdW5jdGlvbiBfaGFuZGxlX25vdGVib29r X2xvYWRpbmcocGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYT0KY2Nlc3Nf dXJsKXsKLSAgICBpZiAoIGllX3Bhc3N3b3JkX2F1dGggKSB7Ci0gICAgICAgIC8vIE1ha2UgYW4g QUpBWCBQT1NUCi0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB0eXBlOiAiUE9TVCIsCi0g ICAgICAgICAgICAvLyB0byB0aGUgTG9naW4gVVJMCi0gICAgICAgICAgICB1cmw6IG5vdGVib29r X2xvZ2luX3VybCwKLSAgICAgICAgICAgIC8vIFdpdGggb3VyIHBhc3N3b3JkCi0gICAgICAgICAg ICBkYXRhOiB7Ci0gICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJzogcGFzc3dvcmQKLSAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICB4aHJGaWVsZHM6IHsKLSAgICAgICAgICAgICAgICB3aXRoQ3Jl ZGVudGlhbHM6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBJZiB0aGF0IGlz IHN1Y2Nlc3NmdWwsIGxvYWQgdGhlIG5vdGVib29rCi0gICAgICAgICAgICBzdWNjZXNzOiBmdW5j dGlvbigpewotICAgICAgICAgICAgICAgIGFwcGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3Nf dXJsKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oanF4aHIs IHN0YXR1cywgZXJyb3IpewotICAgICAgICAgICAgICAgIGlmKGllX3Bhc3N3b3JkX2F1dGggJiYg IWllX2FwYWNoZV91cmxzKXsKLSAgICAgICAgICAgICAgICAgICAgLy8gRmFpbHVyZSBoYXBwZW5z IGR1ZSB0byBDT1JTCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfZmFpbGVkX2F1dGgocGFz c3dvcmQpOwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNj ZXNzX3VybCk7Ci0gICAgICAgICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICAgICAgICAgIG1l c3NhZ2VfZmFpbGVkX2Nvbm5lY3Rpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gRG8gd2Ug d2FudCB0byB0cnkgYW5kIGxvYWQgdGhlIG5vdGVib29rIGFueXdheT8gSnVzPQp0IGluIGNhc2U/ Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3NfdXJs KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0K LSAgICBlbHNlIHsKLSAgICAgICAgLy8gTm90IHVzaW5nIHBhc3N3b3JkIGF1dGgsIGp1c3QgZW1i ZWQgaXQgdG8gYXZvaWQgY29udGVudC1vcmlnaW4gPQppc3N1ZXMuCi0gICAgICAgIG1lc3NhZ2Vf bm9fYXV0aCgpOwotICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7 Ci0gICAgfQotfQoKZGlmZiAtciBmNjdjOGIzNzRiYzdmMDgxOGI3YWUxMjZlMWY2Y2U0NDMxMjk4 NjE1IC1yIDA1MmIxOTAxOWJkZWU1ZTFmYjg0MTcxPQo3OGZiNTRkNjRmMWIxMTZkYSBjb25maWcv cGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwotLS0gL2Rldi9u dWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2pz L2llLmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8qKgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcmVt b3ZlIGNvbnRlbnQgZnJvbSB0aGUgbWFpbiBhcmVhIGFuZCBhZGQgdGhlIG5vdGU9CmJvb2suCisg KiBOb3QgaWRlbXBvdGVudAorICovCitmdW5jdGlvbiBhcHBlbmRfbm90ZWJvb2sodXJsKXsKKyAg ICBjbGVhcl9tYWluX2FyZWEoKTsKKyAgICAkKCcjbWFpbicpLmFwcGVuZCgnPG9iamVjdCBkYXRh PTNEIicgKyB1cmwgKyAnIiBoZWlnaHQ9M0QiOTUlIiB3aWR0aD0KPTNEIjEwMCUiPicKKyAgICAr JzxlbWJlZCBzcmM9M0QiJyArIHVybCArICciIGhlaWdodD0zRCIxMDAlIiB3aWR0aD0zRCIxMDAl Ii8+PC9vYmplY3Q+JworICAgICk7Cit9CisKK2Z1bmN0aW9uIGNsZWFyX21haW5fYXJlYSgpewor ICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7CisgICAgJCgnI21haW4nKS5jaGlsZHJlbigpLnJl bW92ZSgpOworfQorCitmdW5jdGlvbiBkaXNwbGF5X3NwaW5uZXIoKXsKKyAgICAgICAgJCgnI21h aW4nKS5hcHBlbmQoJzxpbWcgaWQ9M0Qic3Bpbm5lciIgc3JjPTNEIicgKyBnYWxheHlfcm9vdCAr ICcvPQpzdGF0aWMvc3R5bGUvbGFyZ2VzcGlubmVyLmdpZiIgc3R5bGU9M0QicG9zaXRpb246YWJz b2x1dGU7bWFyZ2luOmF1dG87dG9wOjA9CjtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsiPicpOwor fQorCisKKy8qKgorICogVGVzdCBhdmFpbGFiaWxpdHkgb2YgYSBVUkwsIGFuZCBjYWxsIGEgY2Fs bGJhY2sgd2hlbiBkb25lLgorICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMjUzOTAyMDYv MzQ3MzY4CisgKiBAcGFyYW0ge1N0cmluZ30gdXJsOiBVUkwgdG8gdGVzdCBhdmFpbGFiaWxpdHkg b2YuIE11c3QgcmV0dXJuIGEgMjAwICgzMD0KMi0+MjAwIGlzIE9LKS4KKyAqIEBwYXJhbSB7U3Ry aW5nfSBjYWxsYmFjazogZnVuY3Rpb24gdG8gY2FsbCBvbmNlIHN1Y2Nlc3NmdWxseSBjb25uZWN0 ZWQuCisgKgorICovCitmdW5jdGlvbiB0ZXN0X2llX2F2YWlsYWJpbGl0eSh1cmwsIHN1Y2Nlc3Nf Y2FsbGJhY2speworICAgIHZhciByZXF1ZXN0X2NvdW50ID0zRCAwOworICAgIGRpc3BsYXlfc3Bp bm5lcigpOworICAgIGludGVydmFsID0zRCBzZXRJbnRlcnZhbChmdW5jdGlvbigpeworICAgICAg ICAkLmFqYXgoeworICAgICAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgICAgICBzdWNjZXNz OiBmdW5jdGlvbigpeworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwor ICAgICAgICAgICAgICAgIHN1Y2Nlc3NfY2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0sCisgICAg ICAgICAgICBlcnJvcjogZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICByZXF1ZXN0X2NvdW50 Kys7CisgICAgICAgICAgICAgICAgaWYocmVxdWVzdF9jb3VudCA+IDMwKXsKKyAgICAgICAgICAg ICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGNs ZWFyX21haW5fYXJlYSgpOworICAgICAgICAgICAgICAgICAgICB0b2FzdHIuZXJyb3IoCisgICAg ICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSUUsIGNvbnRhY3QgeW91 ciBhZG1pbmlzdHJhdD0Kb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIw MDAwLCAndGFwVG9EaXNtPQppc3MnOiBmYWxzZX0KKyAgICAgICAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sIDEwMDAp OworfQoKZGlmZiAtciBmNjdjOGIzNzRiYzdmMDgxOGI3YWUxMjZlMWY2Y2U0NDMxMjk4NjE1IC1y IDA1MmIxOTAxOWJkZWU1ZTFmYjg0MTcxPQo3OGZiNTRkNjRmMWIxMTZkYSBjb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pcHl0aG9uLmpzCi0tLSAvZGV2L251 bGwKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvanMv aXB5dGhvbi5qcwpAQCAtMCwwICsxLDgyIEBACitmdW5jdGlvbiBtZXNzYWdlX2ZhaWxlZF9hdXRo KHBhc3N3b3JkKXsKKyAgICB0b2FzdHIuaW5mbygKKyAgICAgICAgIkF1dG9tYXRpYyBhdXRob3Jp emF0aW9uIGZhaWxlZC4gWW91IGNhbiBtYW51YWxseSBsb2dpbiB3aXRoOjxicj4iPQogKyBwYXNz d29yZCArICI8YnI+PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4 eS1pcHl0aG9uL3c9CmlraS9BdXRvbWF0aWMtQXV0aG9yaXphdGlvbi1GYWlsZWQnIHRhcmdldD0z RCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKKyAgICAgICAgIlBsZWFzZSBsb2dpbiBt YW51YWxseSIsCisgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDEwMDAw MCwgJ3RhcFRvRGlzbWlzcyc6IGZhbHNlfQorICAgICk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2Vf ZmFpbGVkX2Nvbm5lY3Rpb24oKXsKKyAgICB0b2FzdHIuZXJyb3IoCisgICAgICAgICJDb3VsZCBu b3QgY29ubmVjdCB0byBJUHl0aG9uIE5vdGVib29rLiBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWlu aT0Kc3RyYXRvci4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4 eS1pcHl0aG9uL3dpa2kvQ291bGQtPQpub3QtY29ubmVjdC10by1JUHl0aG9uLU5vdGVib29rJyB0 YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCisgICAgIlNlY3VyaXR5IHdh cm5pbmciLAorICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwg J3RhcFRvRGlzbWlzcyc6IHRydWV9CisgICAgKTsKK30KKworZnVuY3Rpb24gbWVzc2FnZV9ub19h dXRoKCl7CisgICAgdG9hc3RyLndhcm5pbmcoCisgICAgICAgICJJUHl0aG9uIE5vdGVib29rIHdh cyBsdW5jaGVkIHdpdGhvdXQgYXV0aGVudGljYXRpb24uIFRoaXMgaXMgYSBzZT0KY3VyaXR5IGlz c3VlLiA8YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRo b24vd2lraS9JPQpQeXRob24tTm90ZWJvb2std2FzLWx1bmNoZWQtd2l0aG91dC1hdXRoZW50aWNh dGlvbicgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSA9CmRldGFpbHMgLi4uPC9hPiIsCisgICAgICAg ICJTZWN1cml0eSB3YXJuaW5nIiwKKyAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1l T3V0JzogMjAwMDAsICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KKyAgICApOworfQorCisKKy8qKgor ICogTG9hZCBhbiBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCAoSUUpIGZyb20gYSByZW1vdGUgVVJM CisgKiBAcGFyYW0ge1N0cmluZ30gcGFzc3dvcmQ6IHBhc3N3b3JkIHVzZWQgdG8gYXV0aGVudGlj YXRlIHRvIHRoZSByZW1vdGUgcj0KZXNvdXJjZQorICogQHBhcmFtIHtTdHJpbmd9IG5vdGVib29r X2xvZ2luX3VybDogVVJMIHRoYXQgc2hvdWxkIGJlIFBPU1RlZCB0byBmb3IgbG89CmdpbgorICog QHBhcmFtIHtTdHJpbmd9IG5vdGVib29rX2FjY2Vzc191cmw6IHRoZSBVUkwgZW1iZWRlZCBpbiB0 aGUgcGFnZSBhbmQgbG89CmFkZWQKKyAqCisgKi8KK2Z1bmN0aW9uIGxvYWRfbm90ZWJvb2socGFz c3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzX3VybCl7CisgICAgJCgg ZG9jdW1lbnQgKS5yZWFkeShmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gVGVzdCBub3RlYm9va19s b2dpbl91cmwgZm9yIGFjY2Vzc2liaWxpdHksIGV4ZWN1dGluZyB0aGUgbG9naW4rPQpsb2FkIGZ1 bmN0aW9uIHdoZW5ldmVyCisgICAgICAgIC8vIHdlJ3ZlIHN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQg dG8gdGhlIElFLgorICAgICAgICB0ZXN0X2llX2F2YWlsYWJpbGl0eShub3RlYm9va19sb2dpbl91 cmwsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBfaGFuZGxlX25vdGVib29rX2xvYWRpbmcocGFz c3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvbz0Ka19hY2Nlc3NfdXJsKTsKKyAgICAg ICAgfSk7CisgICAgfSk7Cit9CisKKy8qKgorICogTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBJRXMK KyAqLworZnVuY3Rpb24gX2hhbmRsZV9ub3RlYm9va19sb2FkaW5nKHBhc3N3b3JkLCBub3RlYm9v a19sb2dpbl91cmwsIG5vdGVib29rX2E9CmNjZXNzX3VybCl7CisgICAgaWYgKCBpZV9wYXNzd29y ZF9hdXRoICkgeworICAgICAgICAvLyBNYWtlIGFuIEFKQVggUE9TVAorICAgICAgICAkLmFqYXgo eworICAgICAgICAgICAgdHlwZTogIlBPU1QiLAorICAgICAgICAgICAgLy8gdG8gdGhlIExvZ2lu IFVSTAorICAgICAgICAgICAgdXJsOiBub3RlYm9va19sb2dpbl91cmwsCisgICAgICAgICAgICAv LyBXaXRoIG91ciBwYXNzd29yZAorICAgICAgICAgICAgZGF0YTogeworICAgICAgICAgICAgICAg ICdwYXNzd29yZCc6IHBhc3N3b3JkCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeGhyRmll bGRzOiB7CisgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlCisgICAgICAgICAg ICB9LAorICAgICAgICAgICAgLy8gSWYgdGhhdCBpcyBzdWNjZXNzZnVsLCBsb2FkIHRoZSBub3Rl Ym9vaworICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICBh cHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsKKyAgICAgICAg ICAgICAgICBpZihpZV9wYXNzd29yZF9hdXRoICYmICFpZV9hcGFjaGVfdXJscyl7CisgICAgICAg ICAgICAgICAgICAgIC8vIEZhaWx1cmUgaGFwcGVucyBkdWUgdG8gQ09SUworICAgICAgICAgICAg ICAgICAgICBtZXNzYWdlX2ZhaWxlZF9hdXRoKHBhc3N3b3JkKTsKKyAgICAgICAgICAgICAgICAg ICAgYXBwZW5kX25vdGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOworICAgICAgICAgICAgICAg IH1lbHNleworICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX2ZhaWxlZF9jb25uZWN0aW9uKCk7 CisgICAgICAgICAgICAgICAgICAgIC8vIERvIHdlIHdhbnQgdG8gdHJ5IGFuZCBsb2FkIHRoZSBu b3RlYm9vayBhbnl3YXk/IEp1cz0KdCBpbiBjYXNlPworICAgICAgICAgICAgICAgICAgICBhcHBl bmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8vIE5v dCB1c2luZyBwYXNzd29yZCBhdXRoLCBqdXN0IGVtYmVkIGl0IHRvIGF2b2lkIGNvbnRlbnQtb3Jp Z2luID0KaXNzdWVzLgorICAgICAgICBtZXNzYWdlX25vX2F1dGgoKTsKKyAgICAgICAgYXBwZW5k X25vdGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOworICAgIH0KK30KCmRpZmYgLXIgZjY3Yzhi Mzc0YmM3ZjA4MThiN2FlMTI2ZTFmNmNlNDQzMTI5ODYxNSAtciAwNTJiMTkwMTliZGVlNWUxZmI4 NDE3MT0KNzhmYjU0ZDY0ZjFiMTE2ZGEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFs aXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVn aW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNTAs NyArNTAsNyBAQAogcmVxdWlyZS5jb25maWcoewogICAgIGJhc2VVcmw6IGFwcF9yb290LAogICAg IHBhdGhzOiB7Ci0gICAgICAgICJwbHVnaW4iIDogYXBwX3Jvb3QsCisgICAgICAgICJwbHVnaW4i IDogYXBwX3Jvb3QgKyAianMvIiwKICAgICB9LAogfSk7CiByZXF1aXJlanMoWydwbHVnaW4vaWUn LCAncGx1Z2luL2lweXRob24nXSwgZnVuY3Rpb24oKXsKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcv Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZGY4NTYzZGYxYTJhLwpDaGFuZ2VzZXQ6ICAg ZGY4NTYzZGYxYTJhClVzZXI6ICAgICAgICBCam9lcm5HcnVlbmluZwpEYXRlOiAgICAgICAgMjAx NC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgTWlncmF0ZSBmcm9tIDxvYmplY3Q+ IHRvIDxpZnJhbWU+LiBPYmplY3RzIHNlZW1zIHRvIGhhdmUgc29tZSA9CmJ1Z3MgaW4gRkYzMi4K Q29uZmxpY3RzOgoJc3RhdGljL2pzL2lweXRob24uanMKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlm ZiAtciAwNTJiMTkwMTliZGVlNWUxZmI4NDE3MTc4ZmI1NGQ2NGYxYjExNmRhIC1yIGRmODU2M2Rm MWEyYTBiOThhNjkxMTM4PQpjZDNkZjQwZDdiMTU2YWM5YSBjb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcworKysgYi9jb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwpAQCAtNCw4ICs0LDcgQEAKICAq LwogZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKHVybCl7CiAgICAgY2xlYXJfbWFpbl9hcmVhKCk7 Ci0gICAgJCgnI21haW4nKS5hcHBlbmQoJzxvYmplY3QgZGF0YT0zRCInICsgdXJsICsgJyIgaGVp Z2h0PTNEIjk1JSIgd2lkdGg9Cj0zRCIxMDAlIj4nCi0gICAgKyc8ZW1iZWQgc3JjPTNEIicgKyB1 cmwgKyAnIiBoZWlnaHQ9M0QiMTAwJSIgd2lkdGg9M0QiMTAwJSIvPjwvb2JqZWN0PicKKyAgICAk KCcjbWFpbicpLmFwcGVuZCgnPGlmcmFtZSBmcmFtZUJvcmRlcj0zRCIwIiBzZWFtbGVzcz0zRCJz ZWFtbGVzcyIgc3R5PQpsZT0zRCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzpo aWRkZW47IiBzY3JvbGxpbmc9M0Qibm8iIHNyYz0zRCI9CicrIHVybCArJyI+PC9pZnJhbWU+Jwog ICAgICk7CiB9Cj0yMAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvY29tbWl0cy85YTU0ODg2NzZlYTkvCkNoYW5nZXNldDogICA5YTU0ODg2NzZlYTkKVXNlcjog ICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4OjA0KzAwOjAwClN1 bW1hcnk6ICAgICBQYXRjaCByZXF1ZXN0ZWQgYnkgQmpvZXJuClRlc3RlZCwgd29ya3MuCkFmZmVj dGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZGY4NTYzZGYxYTJhMGI5OGE2OTExMzhjZDNkZjQwZDdi MTU2YWM5YSAtciA5YTU0ODg2NzZlYTkxOTczZDUzZTA3Mj0KMjJjOTYwMWJhZmM4NjY0OTggY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0g YS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtv CisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2ll Lm1ha28KQEAgLTM4LDExICszOCw3IEBACiAgICAgc2VsZi5hdHRyLlNTTF9VUkxTID0zRCBzZWxm LmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzbCIpCiAgICAgc2VsZi5hdHRy LlBPUlQgPTNEIHNlbGYucHJveHlfcmVxdWVzdF9wb3J0KCkKPTIwCi0gICAgSE9TVCA9M0QgcmVx dWVzdC5ob3N0Ci0gICAgIyBTdHJpcCBvdXQgcG9ydCwgd2UganVzdCB3YW50IHRoZSBVUkwgdGhp cyBnYWxheHkgc2VydmVyIHdhcyBhY2Nlc3NlZD0KIGF0LgotICAgIGlmICc6JyBpbiBIT1NUOgot ICAgICAgICBIT1NUID0zRCBIT1NUWzA6SE9TVC5pbmRleCgnOicpXQotICAgIHNlbGYuYXR0ci5I T1NUID0zRCBIT1NUCisgICAgc2VsZi5hdHRyLkhPU1QgPTNEIHJlcXVlc3QuaG9zdC5yc3BsaXQo JzonLCAxKVswXQogJT48LyVkZWY+Cj0yMAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy8yODIxODZjMzkzYjQvCkNoYW5nZXNldDogICAyODIxODZj MzkzYjQKVXNlcjogICAgICAgIGVyYXNjaGUyCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4IDIyOjM4 OjA0KzAwOjAwClN1bW1hcnk6ICAgICBSZW1vdmVkIHVudXNlZCBpbXBvcnRzCkFmZmVjdGVkICM6 ICAxIGZpbGUKCmRpZmYgLXIgOWE1NDg4Njc2ZWE5MTk3M2Q1M2UwNzIyMmM5NjAxYmFmYzg2NjQ5 OCAtciAyODIxODZjMzkzYjQ2MjRhNWNjMzFlOD0KM2RlNzdiNzZkMTkwOGQ5OGQgY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBi L2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28K QEAgLTEsMTMgKzEsMTAgQEAKIDwlIQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGlt ZQogaW1wb3J0IHlhbWwKIGltcG9ydCBzaGxleAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNodXRp bAogaW1wb3J0IGhhc2hsaWIKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKIGlt cG9ydCBDb25maWdQYXJzZXIKPTIwCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxh eHktY2VudHJhbC9jb21taXRzLzEwMDk4Mjc3NTRjMi8KQ2hhbmdlc2V0OiAgIDEwMDk4Mjc3NTRj MgpVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQr MDA6MDAKU3VtbWFyeTogICAgIE1pc3NpbmcgVVJMIG9uIGFqYXggcmVxdWVzdApUaGlzIHdhcyBj YXVzaW5nIHNlcmlvdXMgaGF2b2NrIHdpdGggdGhlIFJTdHVkaW8gdmVyc2lvbiwgbm90IHN1cmUg d2h5IHRoZSA9CnByb2JsZW1zIHdlcmVuJ3QKcHJlc2VudGluZyBhcyBiYWRseSBoZXJlLiBXaXRo b3V0IGEgVVJMLCB0aGUgYWpheCByZXF1ZXN0IHJlcXVlc3RzIHRoZSBwYWdlPQogeW91J3JlIG9u LCBzcGF3bmluZwpkb3plbnMgYW5kIGRvemVucyBvZiBkb2NrZXIgY29udGFpbmVycy4KQWZmZWN0 ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAyODIxODZjMzkzYjQ2MjRhNWNjMzFlODNkZTc3Yjc2ZDE5 MDhkOThkIC1yIDEwMDk4Mjc3NTRjMjgzODBlYTA4ZGMyPQpjMmM5N2NkYmZhOWMzMzAyMyBjb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwotLS0gYS9j b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcworKysg Yi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwpA QCAtMzAsNiArMzAsNyBAQAogICAgIGRpc3BsYXlfc3Bpbm5lcigpOwogICAgIGludGVydmFsID0z RCBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAg dXJsOiB1cmwsCiAgICAgICAgICAgICB0eXBlOiAiR0VUIiwKICAgICAgICAgICAgIHN1Y2Nlc3M6 IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CgoK aHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzVjYWI4 MDQzNjAyYS8KQ2hhbmdlc2V0OiAgIDVjYWI4MDQzNjAyYQpVc2VyOiAgICAgICAgZXJhc2NoZTIK RGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEZpeGVz ICMyNwpBZmZlY3RlZCAjOiAgMiBmaWxlcwoKZGlmZiAtciAxMDA5ODI3NzU0YzI4MzgwZWEwOGRj MmMyYzk3Y2RiZmE5YzMzMDIzIC1yIDVjYWI4MDQzNjAyYTVlYmRkYmJmOTJlPQo2MmFkYjFiNmI4 YTdiMTAxNiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p ZS5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxh dGVzL2llLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90 ZW1wbGF0ZXMvaWUubWFrbwpAQCAtMjIsMTMgKzIyLDEzIEBACiAgICAgc2VsZi5hdHRyLmdhbGF4 eV9jb25maWcgPTNEIHRyYW5zLmFwcC5jb25maWcKICAgICBzZWxmLmF0dHIuZ2FsYXh5X3Jvb3Rf ZGlyID0zRCBvcy5wYXRoLmFic3BhdGgoc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuPQpyb290KQog ICAgIHNlbGYuYXR0ci5yb290ID0zRCBoLnVybF9mb3IoIi8iKQotICAgIHNlbGYuYXR0ci5hcHBf cm9vdCA9M0Qgc2VsZi5hdHRyLnJvb3QgKyAicGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG89 Cm4vc3RhdGljLyIKKyAgICBzZWxmLmF0dHIuYXBwX3Jvb3QgPTNEIHNlbGYuYXR0ci5yb290ICsg InBsdWdpbnMvdmlzdWFsaXphdGlvbnMvIiArIHNlPQpsZi5hdHRyLnZpel9pZCArICIvc3RhdGlj LyIKPTIwCiAgICAgIyBTdG9yZSBvdXIgdGVtcGxhdGUgYW5kIGNvbmZpZ3VyYXRpb24gcGF0aAog ICAgIHNlbGYuYXR0ci5vdXJfY29uZmlnX2RpciA9M0Qgb3MucGF0aC5qb2luKHBsdWdpbl9wYXRo LCAiY29uZmlnIikKICAgICBzZWxmLmF0dHIub3VyX3RlbXBsYXRlX2RpciA9M0Qgb3MucGF0aC5q b2luKHBsdWdpbl9wYXRoLCAidGVtcGxhdGVzIikKICAgICBzZWxmLmF0dHIudml6X2NvbmZpZyA9 M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoZGVmYXVsdF9kaWN0KQotICAgIHNlbGYu YXR0ci52aXpfY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggc2VsZi5hdHRyLm91cl9jb25maWdf ZGlyLCAiaXA9Cnl0aG9uLmNvbmYiICkgKQorICAgIHNlbGYuYXR0ci52aXpfY29uZmlnLnJlYWQo IG9zLnBhdGguam9pbiggc2VsZi5hdHRyLm91cl9jb25maWdfZGlyLCBzZWw9CmYuYXR0ci52aXpf aWQgKyAiLmNvbmYiICkgKQogICAgICMgU3RvcmUgc29tZSB2YXJpYWJsZXMgd2Ugd2FudCBieSBk ZWZhdWx0CiAgICAgc2VsZi5hdHRyLlBBU1NXT1JEX0FVVEggPTNEIHNlbGYuYXR0ci52aXpfY29u ZmlnLmdldGJvb2xlYW4oIm1haW4iLCAicD0KYXNzd29yZF9hdXRoIikKICAgICBzZWxmLmF0dHIu QVBBQ0hFX1VSTFMgPTNEIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAi YXBhPQpjaGVfdXJscyIpCkBAIC0zOSw3ICszOSw3IEBACiAlPjwvJWRlZj4KPTIwCi08JWRlZiBu YW1lPTNEIndyaXRlX2NvbmZfZmlsZShvdXRwdXRfZGlyZWN0b3J5KSI+Cis8JWRlZiBuYW1lPTNE IndyaXRlX2NvbmZfZmlsZShvdXRwdXRfZGlyZWN0b3J5LCBleHRyYT0zRHt9KSI+PCUKICAgICAi IiIKICAgICAgICAgQnVpbGQgdXAgYSBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBzdGFuZGFy ZCBmb3IgQUxMIElFcy4KQEAgLTY4LDYgKzY4LDEwIEBACiAgICAgZWxzZToKICAgICAgICAgbm90 ZWJvb2tfcHcgPTNEICJOb25lIgo9MjAKKyAgICAjIFNvbWUgd2lsbCBuZWVkIHRvIHBhc3MgZXh0 cmEgZGF0YQorICAgIGZvciBleHRyYV9rZXkgaW4gZXh0cmE6CisgICAgICAgIGNvbmZfZmlsZVtl eHRyYV9rZXldID0zRCBleHRyYVtleHRyYV9rZXldCisKICAgICBzZWxmLmF0dHIubm90ZWJvb2tf cHcgPTNEIG5vdGVib29rX3B3CiAgICAgIyBXcml0ZSBjb25mCiAgICAgd2l0aCBvcGVuKCBvcy5w YXRoLmpvaW4oIG91dHB1dF9kaXJlY3RvcnksICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYT0K bmRsZToKQEAgLTE4OCw5ICsxOTIsOSBAQAogICAgICIiIgogICAgICAgICBHZW5lcmF0ZSBhbmQg cmV0dXJuIHRoZSBkb2NrZXIgY29tbWFuZCB0byBleGVjdXRlCiAgICAgIiIiCi0gICAgcmV0dXJu ICclcyBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOjY3ODkgLXYgIiVzOi9pbXBvcnQv IiAlcycgJT0KIFwKLSAgICAgICAgKHNlbGYuYXR0ci52aXpfY29uZmlnLmdldCgiZG9ja2VyIiwg ImNvbW1hbmQiKSwgc2VsZi5hdHRyLlBPUlQsIHRlPQptcF9kaXIsCi0gICAgICAgICBzZWxmLmF0 dHIudml6X2NvbmZpZy5nZXQoImRvY2tlciIsICJpbWFnZSIpKQorICAgIHJldHVybiAnJXMgcnVu IC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczolcyAtdiAiJXM6L2ltcG9ydC8iICVzJyAlIFwK KyAgICAgICAgKHNlbGYuYXR0ci52aXpfY29uZmlnLmdldCgiZG9ja2VyIiwgImNvbW1hbmQiKSwg c2VsZi5hdHRyLlBPUlQsIHNlPQpsZi5hdHRyLmRvY2tlcl9wb3J0LAorICAgICAgICAgdGVtcF9k aXIsIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldCgiZG9ja2VyIiwgImltYWdlIikpCiAlPjwvJWRl Zj4KPTIwCkBAIC0yMDAsNyArMjA0LDYgQEAKIGllX3Bhc3N3b3JkX2F1dGggPTNEICR7IHNlbGYu amF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIKSB9OwogaWVfYXBhY2hl X3VybHMgPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5BUEFDSEVfVVJM UykgfTsKIGllX3Bhc3N3b3JkID0zRCAnJHsgc2VsZi5hdHRyLm5vdGVib29rX3B3IH0nOwotLy8g RG8gdGhlc2UgbmVlZCB0byBiZSBnbG9iYWwgYXMgd2VsbD8/CiB2YXIgZ2FsYXh5X3Jvb3QgPTNE ICckeyBzZWxmLmF0dHIucm9vdCB9JzsKIHZhciBhcHBfcm9vdCA9M0QgJyR7IHNlbGYuYXR0ci5h cHBfcm9vdCB9JzsKIDwvJWRlZj4KCmRpZmYgLXIgMTAwOTgyNzc1NGMyODM4MGVhMDhkYzJjMmM5 N2NkYmZhOWMzMzAyMyAtciA1Y2FiODA0MzYwMmE1ZWJkZGJiZjkyZT0KNjJhZGIxYjZiOGE3YjEw MTYgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhv bi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtNyw2ICs3LDcgQEAKPTIwCiAjIFNldHMg SUQgYW5kIHNldHMgdXAgYSBsb3Qgb2Ygb3RoZXIgdmFyaWFibGVzCiBpZS5zZXRfaWQoImlweXRo b24iKQoraWUuYXR0ci5kb2NrZXJfcG9ydCA9M0QgNjc4OQogIyBDcmVhdGUgdGVtcGRpciBpbiBn YWxheHkKIHRlbXBfZGlyID0zRCBvcy5wYXRoLmFic3BhdGgoIHRlbXBmaWxlLm1rZHRlbXAoKSAp CiAjIFdyaXRlIG91dCBjb25mIGZpbGUuLi5uZWVkcyB3b3JrCgoKaHR0cHM6Ly9iaXRidWNrZXQu b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2I1MDYxNTU3M2RlZC8KQ2hhbmdlc2V0 OiAgIGI1MDYxNTU3M2RlZApVc2VyOiAgICAgICAgZXJhc2NoZTIKRGF0ZTogICAgICAgIDIwMTQt MTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFNldCB0aW1lb3V0IGxvd2VyIHRoYW4g dGltZSBiZXR3ZWVuIHJlcXVlc3RzCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgNWNhYjgw NDM2MDJhNWViZGRiYmY5MmU2MmFkYjFiNmI4YTdiMTAxNiAtciBiNTA2MTU1NzNkZWRlZDRjMDY3 ZDI0Nj0KODllMmEwYmM4YWI1NWUzN2YgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi9zdGF0aWMvanMvaWUuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi9zdGF0aWMvanMvaWUuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlv bnMvaXB5dGhvbi9zdGF0aWMvanMvaWUuanMKQEAgLTMyLDEyICszMiwxNSBAQAogICAgICAgICAk LmFqYXgoewogICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICB0eXBlOiAiR0VUIiwK KyAgICAgICAgICAgIHRpbWVvdXQ6IDUwMCwKICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9u KCl7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkNvbm5lY3RlZCB0byBJRSwgcmV0dXJu aW5nIik7CiAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAg ICAgICAgICAgc3VjY2Vzc19jYWxsYmFjaygpOwogICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IGVycm9yOiBmdW5jdGlvbigpeworICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBz dGF0dXMsIGVycm9yKXsKICAgICAgICAgICAgICAgICByZXF1ZXN0X2NvdW50Kys7CisgICAgICAg ICAgICAgICAgY29uc29sZS5sb2coIlJlcXVlc3QgIiArIHJlcXVlc3RfY291bnQpOwogICAgICAg ICAgICAgICAgIGlmKHJlcXVlc3RfY291bnQgPiAzMCl7CiAgICAgICAgICAgICAgICAgICAgIGNs ZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgICAgICBjbGVhcl9tYWluX2Fy ZWEoKTsKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1p dHMvNTNlOTJlNWJlN2FiLwpDaGFuZ2VzZXQ6ICAgNTNlOTJlNWJlN2FiClVzZXI6ICAgICAgICBq bWNoaWx0b24KRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTog ICAgIEZpeCBjb25mIC0+IGNvbmZpZyBoYWNrIGluIElQeXRob24gZm9yIGhpc3RvcnkgcmV3cml0 ZS4KQWZmZWN0ZWQgIzogIDQgZmlsZXMKCmRpZmYgLXIgYjUwNjE1NTczZGVkZWQ0YzA2N2QyNDY4 OWUyYTBiYzhhYjU1ZTM3ZiAtciA1M2U5MmU1YmU3YWIyYWY1MDMyZTZmMz0KYWU4ODEyNDQwNGY5 YWU0YjQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9jb25mL2lweXRob24u Y29uZgotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5 dGhvbi5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1bbWFpbl0KLWFwYWNoZV91 cmxzID0zRCBGYWxzZQotcGFzc3dvcmRfYXV0aCA9M0QgRmFsc2UKLXNzbCA9M0QgRmFsc2UKLQot W2RvY2tlcl0KLWNvbW1hbmQgPTNEIGRvY2tlcgotaW1hZ2UgPTNEIGJncnVlbmluZy9kb2NrZXIt aXB5dGhvbi1ub3RlYm9vawotCgpkaWZmIC1yIGI1MDYxNTU3M2RlZGVkNGMwNjdkMjQ2ODllMmEw YmM4YWI1NWUzN2YgLXIgNTNlOTJlNWJlN2FiMmFmNTAzMmU2ZjM9CmFlODgxMjQ0MDRmOWFlNGI0 IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vY29uZi9pcHl0aG9uLnhtbAot LS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmYvaXB5dGhvbi54 bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPTNEIjEuMCIg ZW5jb2Rpbmc9M0QiVVRGLTgiPz4KLTwhRE9DVFlQRSB2aXN1YWxpemF0aW9uIFNZU1RFTSAiLi4v Li4vdmlzdWFsaXphdGlvbi5kdGQiPgotPHZpc3VhbGl6YXRpb24gbmFtZT0zRCJJUHl0aG9uIj4K LSAgICA8ZGF0YV9zb3VyY2VzPgotICAgICAgICA8ZGF0YV9zb3VyY2U+Ci0gICAgICAgICAgICA8 bW9kZWxfY2xhc3M+SGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbjwvbW9kZWxfY2xhc3M+Ci0gICAg ICAgICAgICA8dGVzdCB0eXBlPTNEImlzaW5zdGFuY2UiIHRlc3RfYXR0cj0zRCJkYXRhdHlwZSIg cmVzdWx0X3R5cGU9Cj0zRCJkYXRhdHlwZSI+dGFidWxhci5UYWJ1bGFyPC90ZXN0PgotICAgICAg ICAgICAgPHRlc3QgdHlwZT0zRCJpc2luc3RhbmNlIiB0ZXN0X2F0dHI9M0QiZGF0YXR5cGUiIHJl c3VsdF90eXBlPQo9M0QiZGF0YXR5cGUiPmRhdGEuVGV4dDwvdGVzdD4KLSAgICAgICAgICAgIDx0 b19wYXJhbSBwYXJhbV9hdHRyPTNEImlkIj5kYXRhc2V0X2lkPC90b19wYXJhbT4KLSAgICAgICAg PC9kYXRhX3NvdXJjZT4KLSAgICA8L2RhdGFfc291cmNlcz4KLSAgICA8cGFyYW1zPgotICAgICAg ICA8cGFyYW0gdHlwZT0zRCJkYXRhc2V0IiB2YXJfbmFtZV9pbl90ZW1wbGF0ZT0zRCJoZGEiIHJl cXVpcmVkPTNEInQ9CnJ1ZSI+ZGF0YXNldF9pZDwvcGFyYW0+Ci0gICAgPC9wYXJhbXM+Ci0gICAg PHRlbXBsYXRlPmlweXRob24ubWFrbzwvdGVtcGxhdGU+Ci08L3Zpc3VhbGl6YXRpb24+CgpkaWZm IC1yIGI1MDYxNTU3M2RlZGVkNGMwNjdkMjQ2ODllMmEwYmM4YWI1NWUzN2YgLXIgNTNlOTJlNWJl N2FiMmFmNTAzMmU2ZjM9CmFlODgxMjQ0MDRmOWFlNGI0IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vY29uZmlnL2lweXRob24uY29uZgotLS0gL2Rldi9udWxsCisrKyBiL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vY29uZmlnL2lweXRob24uY29uZgpA QCAtMCwwICsxLDkgQEAKK1ttYWluXQorYXBhY2hlX3VybHMgPTNEIEZhbHNlCitwYXNzd29yZF9h dXRoID0zRCBGYWxzZQorc3NsID0zRCBGYWxzZQorCitbZG9ja2VyXQorY29tbWFuZCA9M0QgZG9j a2VyCitpbWFnZSA9M0QgYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLW5vdGVib29rCisKCmRpZmYg LXIgYjUwNjE1NTczZGVkZWQ0YzA2N2QyNDY4OWUyYTBiYzhhYjU1ZTM3ZiAtciA1M2U5MmU1YmU3 YWIyYWY1MDMyZTZmMz0KYWU4ODEyNDQwNGY5YWU0YjQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi54bWwKLS0tIC9kZXYvbnVsbAorKysgYi9jb25m aWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmZpZy9pcHl0aG9uLnhtbApAQCAt MCwwICsxLDE2IEBACis8P3htbCB2ZXJzaW9uPTNEIjEuMCIgZW5jb2Rpbmc9M0QiVVRGLTgiPz4K KzwhRE9DVFlQRSB2aXN1YWxpemF0aW9uIFNZU1RFTSAiLi4vLi4vdmlzdWFsaXphdGlvbi5kdGQi PgorPHZpc3VhbGl6YXRpb24gbmFtZT0zRCJJUHl0aG9uIj4KKyAgICA8ZGF0YV9zb3VyY2VzPgor ICAgICAgICA8ZGF0YV9zb3VyY2U+CisgICAgICAgICAgICA8bW9kZWxfY2xhc3M+SGlzdG9yeURh dGFzZXRBc3NvY2lhdGlvbjwvbW9kZWxfY2xhc3M+CisgICAgICAgICAgICA8dGVzdCB0eXBlPTNE ImlzaW5zdGFuY2UiIHRlc3RfYXR0cj0zRCJkYXRhdHlwZSIgcmVzdWx0X3R5cGU9Cj0zRCJkYXRh dHlwZSI+dGFidWxhci5UYWJ1bGFyPC90ZXN0PgorICAgICAgICAgICAgPHRlc3QgdHlwZT0zRCJp c2luc3RhbmNlIiB0ZXN0X2F0dHI9M0QiZGF0YXR5cGUiIHJlc3VsdF90eXBlPQo9M0QiZGF0YXR5 cGUiPmRhdGEuVGV4dDwvdGVzdD4KKyAgICAgICAgICAgIDx0b19wYXJhbSBwYXJhbV9hdHRyPTNE ImlkIj5kYXRhc2V0X2lkPC90b19wYXJhbT4KKyAgICAgICAgPC9kYXRhX3NvdXJjZT4KKyAgICA8 L2RhdGFfc291cmNlcz4KKyAgICA8cGFyYW1zPgorICAgICAgICA8cGFyYW0gdHlwZT0zRCJkYXRh c2V0IiB2YXJfbmFtZV9pbl90ZW1wbGF0ZT0zRCJoZGEiIHJlcXVpcmVkPTNEInQ9CnJ1ZSI+ZGF0 YXNldF9pZDwvcGFyYW0+CisgICAgPC9wYXJhbXM+CisgICAgPHRlbXBsYXRlPmlweXRob24ubWFr bzwvdGVtcGxhdGU+Cis8L3Zpc3VhbGl6YXRpb24+CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2E3YjllYjNkZjM3ZC8KQ2hhbmdlc2V0OiAgIGE3 YjllYjNkZjM3ZApVc2VyOiAgICAgICAgam1jaGlsdG9uCkRhdGU6ICAgICAgICAyMDE0LTEwLTE4 IDIyOjM4OjA0KzAwOjAwClN1bW1hcnk6ICAgICBEeW5hbWljIEdhbGF4eSBzZXNzaW9uIGF3YXJl IHByb3h5IGZvciBJUHl0aG9uLCBvdGhlciBzdWNoIHBsdT0KZ2lucy4KVGhpcyBpcyB2ZXJ5IG11 Y2ggYW4gZXhwZXJtaW50YWwgY29tcG9uZW50IGFuZCBwbHVnaW4gZGV2ZWxvcGVycyBzaG91bGRu J3QgPQpleHBlY3QgdGhlIEFQSSB0byBiZSBzdGFibGUgYXQgdGhpcyBwb2ludC4gVGhpcyBhbGxv d3MgcGx1Z2luIGRldmVsb3BlcnMgdG89CiBlbnN1cmUgSFRUUCBhY2Nlc3MgdG8gYSBzaW5nbGUg cG9ydCBpcyByb3V0ZXMgdG8gdmFyaW91cyBwb3J0cyBpbnRlcm5hbGx5ID0KYmFzZWQgb24gdGhl IEdhbGF4eSBzZXNzaW9uIG9mIHRoZSB1c2VyIGFjY2Vzc2luZyB0aGUgcmVzb3VyY2UuCgpJdCBp cyBmcnVzdHJhdGluZyB0aGF0IEkgbmVlZCB0byB1c2UgYSBub2RlLWJhc2VkIGNvbXBvbmVudCBm b3IgdGhpcyBidXQgYWY9CnRlciBuaWdodHMgb2YgdHJ5aW5nIEkgd2FzIHVuYWJsZSB0byByZXBy b2R1Y2UgYSBwcm94eSB0aGF0IHdvcmtzIGJvdGggZHluYT0KbWljYWxseSBhbmQgd2l0aCB3ZWIg c29ja2V0cyBpbiBhbnkgUHl0aG9uIGJhc2VkIHdlYiBmcmFtZXdvcmsuIEkgdHJpZWQgdHdpPQpz dGVkLCB1d3NnaSwgdG9ybmFkby4gTXkgZGVjaXNpb24gdG8gdXNlIG5vZGUgd2FzIGJ1dHRyZXNz ZWQgYnkgdGhlIElQeXRob249CiB0ZWFtIHV0aWxpemluZyB0aGUgc2FtZSBmcmFtZXdvcmsgZm9y IHRoZSBzYW1lIHJlYXNvbnMgZm9yIHRoZWlyIHdvcmsgb24gSj0KdXlwdGVyIC0gaHR0cHM6Ly9n aXRodWIuY29tL2p1cHl0ZXIvanVweXRlcmh1Yi4KClRoaXMgaXMgc3RpbGwgdmVyeSBtdWNoIGEg d29yayBpbiBwcm9ncmVzcyBidXQgaXQgd2FzIGxhbmd1aXNoaW5nIGluIG15IGdpdD0KaHViIHJl cG9zaXRvcnkgYW5kIEkgYW0gd2FudCB0byBnZXQgaXQgY29tbWl0dGVkIHNvIGNvbW11bml0eSBj YW4gaGFjayBvbiBpPQp0IGFuZCBzdWdnZXN0IChvciBzdXBwbHkpIGltcHJvdmVtZW50cy4KClRP RE8KLSBSZXBsYWNlIGZpbGUgb3BlcmF0aW9ucyB3aXRoIHNxbGl0ZSBkYXRhYmFzZSArIHdyaXRl IGZpbGUgbG9jayAoZm9yIG11bHRpPQotcHJvY2VzcyBHYWxheGllcykuCi0gRG9jdW1lbnQgY29u ZmlndXJhdGlvbi4KLSBVcGRhdGUgZ2FsYXh5LWlweXRob24gdG8gc3VwcG9ydCBzb21ldGhpbmcg bGlrZSBwcm94eS1wcmVmaXggLSBjb25maWd1cmUgPQphbG9uZyB3aXRoIHRoZSByZXN0IG9mIHRo aXMuCkFmZmVjdGVkICM6ICAxNCBmaWxlcwoKZGlmZiAtciA1M2U5MmU1YmU3YWIyYWY1MDMyZTZm M2FlODgxMjQ0MDRmOWFlNGI0IC1yIGE3YjllYjNkZjM3ZDA0MTQ1ODM5NzU2PQo0MmYzYTBiZTAx YjMxNDZiMSBsaWIvZ2FsYXh5L2FwcC5weQotLS0gYS9saWIvZ2FsYXh5L2FwcC5weQorKysgYi9s aWIvZ2FsYXh5L2FwcC5weQpAQCAtMTcsNiArMTcsNyBAQAogZnJvbSBnYWxheHkudG9vbHMuZGF0 YV9tYW5hZ2VyLm1hbmFnZXIgaW1wb3J0IERhdGFNYW5hZ2VycwogZnJvbSBnYWxheHkuam9icyBp bXBvcnQgbWV0cmljcyBhcyBqb2JfbWV0cmljcwogZnJvbSBnYWxheHkud2ViLmJhc2UgaW1wb3J0 IHBsdWdpbmZyYW1ld29yaworZnJvbSBnYWxheHkud2ViLnByb3h5IGltcG9ydCBQcm94eU1hbmFn ZXIKIGZyb20gZ2FsYXh5LnF1ZXVlX3dvcmtlciBpbXBvcnQgR2FsYXh5UXVldWVXb3JrZXIKIGZy b20gdG9vbF9zaGVkLmdhbGF4eV9pbnN0YWxsIGltcG9ydCB1cGRhdGVfcmVwb3NpdG9yeV9tYW5h Z2VyCj0yMApAQCAtMTM4LDYgKzEzOSw3IEBACiAgICAgICAgICMgRklYTUU6IFRoZXNlIGFyZSBl eHBvc2VkIGRpcmVjdGx5IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAgICAgICAgIHNlbGYu am9iX3F1ZXVlID0zRCBzZWxmLmpvYl9tYW5hZ2VyLmpvYl9xdWV1ZQogICAgICAgICBzZWxmLmpv Yl9zdG9wX3F1ZXVlID0zRCBzZWxmLmpvYl9tYW5hZ2VyLmpvYl9zdG9wX3F1ZXVlCisgICAgICAg IHNlbGYucHJveHlfbWFuYWdlciA9M0QgUHJveHlNYW5hZ2VyKCBzZWxmLmNvbmZpZyApCiAgICAg ICAgICMgSW5pdGlhbGl6ZSB0aGUgZXh0ZXJuYWwgc2VydmljZSB0eXBlcwogICAgICAgICBzZWxm LmV4dGVybmFsX3NlcnZpY2VfdHlwZXMgPTNEIGV4dGVybmFsX3NlcnZpY2VfdHlwZXMuRXh0ZXJu YWxTZXI9CnZpY2VUeXBlc0NvbGxlY3Rpb24oIHNlbGYuY29uZmlnLmV4dGVybmFsX3NlcnZpY2Vf dHlwZV9jb25maWdfZmlsZSwgc2VsZi5jbz0KbmZpZy5leHRlcm5hbF9zZXJ2aWNlX3R5cGVfcGF0 aCwgc2VsZiApCiAgICAgICAgIHNlbGYubW9kZWwuZW5naW5lLmRpc3Bvc2UoKQoKZGlmZiAtciA1 M2U5MmU1YmU3YWIyYWY1MDMyZTZmM2FlODgxMjQ0MDRmOWFlNGI0IC1yIGE3YjllYjNkZjM3ZDA0 MTQ1ODM5NzU2PQo0MmYzYTBiZTAxYjMxNDZiMSBsaWIvZ2FsYXh5L2NvbmZpZy5weQotLS0gYS9s aWIvZ2FsYXh5L2NvbmZpZy5weQorKysgYi9saWIvZ2FsYXh5L2NvbmZpZy5weQpAQCAtMzU3LDYg KzM1NywxMSBAQAogICAgICAgICAjIGRpcmVjdG9yeSB3aGVyZSB0aGUgdmlzdWFsaXphdGlvbi9y ZWdpc3RyeSBzZWFyY2hlcyBmb3IgcGx1Z2lucwogICAgICAgICBzZWxmLnZpc3VhbGl6YXRpb25f cGx1Z2luc19kaXJlY3RvcnkgPTNEIGt3YXJncy5nZXQoCiAgICAgICAgICAgICAndmlzdWFsaXph dGlvbl9wbHVnaW5zX2RpcmVjdG9yeScsICdjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aT0Kb25z JyApCisgICAgICAgIHNlbGYucHJveHlfc2Vzc2lvbl9tYXAgPTNEIHNlbGYucmVzb2x2ZV9wYXRo KCBrd2FyZ3MuZ2V0KCAiZHluYW1pYz0KX3Byb3h5X3Nlc3Npb25fbWFwIiwgImRhdGFiYXNlL3Nl c3Npb25fbWFwLmpzb24iICkgKQorICAgICAgICBzZWxmLm1hbmFnZV9keW5hbWljX3Byb3h5ID0z RCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdldCggImR5bmFtaWM9Cl9wcm94eV9tYW5hZ2UiLCAi VHJ1ZSIgKSApICAjIFNldCB0byBmYWxzZSBpZiBiZWluZyBsYXVuY2hlZCBleHRlcm5hbGx5Cisg ICAgICAgIHNlbGYuZHluYW1pY19wcm94eV9iaW5kX3BvcnQgPTNEIGludCgga3dhcmdzLmdldCgg ImR5bmFtaWNfcHJveHlfYj0KaW5kX3BvcnQiLCAiODgwMCIgKSApCisgICAgICAgIHNlbGYuZHlu YW1pY19wcm94eV9iaW5kX2lwID0zRCBrd2FyZ3MuZ2V0KCAiZHluYW1pY19wcm94eV9iaW5kX2lw Ij0KLCAiMC4wLjAuMCIgKQorCiAgICAgICAgICMgRGVmYXVsdCBjaHVuayBzaXplIGZvciBjaHVu a2FibGUgZGF0YXR5cGVzIC0tIDY0awogICAgICAgICBzZWxmLmRpc3BsYXlfY2h1bmtfc2l6ZSA9 M0QgaW50KCBrd2FyZ3MuZ2V0KCAnZGlzcGxheV9jaHVua19zaXplJyw9CiA2NTUzNikgKQo9MjAK CmRpZmYgLXIgNTNlOTJlNWJlN2FiMmFmNTAzMmU2ZjNhZTg4MTI0NDA0ZjlhZTRiNCAtciBhN2I5 ZWIzZGYzN2QwNDE0NTgzOTc1Nj0KNDJmM2EwYmUwMWIzMTQ2YjEgbGliL2dhbGF4eS91dGlsL2xh enlfcHJvY2Vzcy5weQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvdXRpbC9sYXp5X3By b2Nlc3MucHkKQEAgLTAsMCArMSw1NyBAQAoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUK K2ltcG9ydCBzdWJwcm9jZXNzCisKKworY2xhc3MgTGF6eVByb2Nlc3MoIG9iamVjdCApOgorICAg ICIiIiBBYnN0cmFjdGlvbiBkZXNjcmliaW5nIGEgY29tbWFuZCBsaW5lIGxhdW5jaGluZyBhIHNl cnZpY2UgLSBwcm9iYWI9Cmx5CisgICAgYXMgbmVlZGVkIGFzIGZ1bmN0aW9uYWxpdHkgaXMgYWNj ZXNzZWQgaW4gR2FsYXh5LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBjb21t YW5kX2FuZF9hcmdzICk6CisgICAgICAgIHNlbGYuY29tbWFuZF9hbmRfYXJncyA9M0QgY29tbWFu ZF9hbmRfYXJncworICAgICAgICBzZWxmLnRocmVhZF9sb2NrID0zRCB0aHJlYWRpbmcuTG9jaygp CisgICAgICAgIHNlbGYuYWxsb3dfcHJvY2Vzc19yZXF1ZXN0ID0zRCBUcnVlCisgICAgICAgIHNl bGYucHJvY2VzcyA9M0QgTm9uZQorCisgICAgZGVmIHN0YXJ0X3Byb2Nlc3MoIHNlbGYgKToKKyAg ICAgICAgd2l0aCBzZWxmLnRocmVhZF9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19w cm9jZXNzX3JlcXVlc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5hbGxvd19wcm9jZXNzX3JlcXVl c3QgPTNEIEZhbHNlCisgICAgICAgICAgICAgICAgdCA9M0QgdGhyZWFkaW5nLlRocmVhZCh0YXJn ZXQ9M0RzZWxmLl9fc3RhcnQpCisgICAgICAgICAgICAgICAgdC5kYWVtb24gPTNEIFRydWUKKyAg ICAgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgIGRlZiBfX3N0YXJ0KHNlbGYpOgorICAgICAg ICB3aXRoIHNlbGYudGhyZWFkX2xvY2s6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3MgPTNEIHN1 YnByb2Nlc3MuUG9wZW4oIHNlbGYuY29tbWFuZF9hbmRfYXJncywgY2xvcz0KZV9mZHM9M0RUcnVl ICkKKworICAgIGRlZiBzaHV0ZG93biggc2VsZiApOgorICAgICAgICB3aXRoIHNlbGYudGhyZWFk X2xvY2s6CisgICAgICAgICAgICBzZWxmLmFsbG93X3Byb2Nlc3NfcmVxdWVzdCA9M0QgRmFsc2UK KyAgICAgICAgaWYgc2VsZi5ydW5uaW5nOgorICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1p bmF0ZSgpCisgICAgICAgICAgICB0aW1lLnNsZWVwKC4wMSkKKyAgICAgICAgICAgIGlmIHNlbGYu cnVubmluZzoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Mua2lsbCgpCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgcnVubmluZyggc2VsZiApOgorICAgICAgICByZXR1cm4gc2VsZi5wcm9j ZXNzIGFuZCBub3Qgc2VsZi5wcm9jZXNzLnBvbGwoKQorCisKK2NsYXNzIE5vT3BMYXp5UHJvY2Vz cyggb2JqZWN0ICk6CisgICAgIiIiIExhenlQcm9jZXNzIGFic3RyYWN0aW9uIG1lYW50IHRvIGRl c2NyaWJlIHBvdGVudGlhbGx5IG9wdGlvbmFsCisgICAgc2VydmljZXMsIGluIHRob3NlIGNhc2Vz IHdoZXJlIG9uZSBpcyBub3QgY29uZmlndXJlZCBvciB2YWxpZCwgdGhpcworICAgIGNsYXNzIGNh biBiZSB1c2VkIGluIHBsYWNlIG9mIExhenlQcm9jZXNzLgorICAgICIiIgorCisgICAgZGVmIHN0 YXJ0X3Byb2Nlc3MoIHNlbGYgKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgc2h1dGRvd24o IHNlbGYgKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcnVubmlu Zyggc2VsZiApOgorICAgICAgICByZXR1cm4gRmFsc2UKCmRpZmYgLXIgNTNlOTJlNWJlN2FiMmFm NTAzMmU2ZjNhZTg4MTI0NDA0ZjlhZTRiNCAtciBhN2I5ZWIzZGYzN2QwNDE0NTgzOTc1Nj0KNDJm M2EwYmUwMWIzMTQ2YjEgbGliL2dhbGF4eS91dGlsL3NvY2tldHMucHkKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvZ2FsYXh5L3V0aWwvc29ja2V0cy5weQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQg c29ja2V0CisKKworZGVmIHVudXNlZF9wb3J0KCk6CisgICAgIyBUT0RPOiBBbGxvdyByYW5nZXMg KHRob3VnaCB0aGVuIG5lZWQgdG8gZ3Vlc3MgYW5kIGNoZWNrKS4uLgorICAgIHMgPTNEIHNvY2tl dC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICBzLmJpbmQo KCdsb2NhbGhvc3QnLCAwKSkKKyAgICBhZGRyLCBwb3J0ID0zRCBzLmdldHNvY2tuYW1lKCkKKyAg ICBzLmNsb3NlKCkKKyAgICByZXR1cm4gcG9ydAoKZGlmZiAtciA1M2U5MmU1YmU3YWIyYWY1MDMy ZTZmM2FlODgxMjQ0MDRmOWFlNGI0IC1yIGE3YjllYjNkZjM3ZDA0MTQ1ODM5NzU2PQo0MmYzYTBi ZTAxYjMxNDZiMSBsaWIvZ2FsYXh5L3dlYi9wcm94eS9fX2luaXRfXy5weQotLS0gL2Rldi9udWxs CisrKyBiL2xpYi9nYWxheHkvd2ViL3Byb3h5L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTM3IEBA CitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQganNvbgorCitmcm9tIC5maWxlbG9j ayBpbXBvcnQgRmlsZUxvY2sKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNvY2tldHMKK2Zyb20g Z2FsYXh5LnV0aWwubGF6eV9wcm9jZXNzIGltcG9ydCBMYXp5UHJvY2VzcywgTm9PcExhenlQcm9j ZXNzCisKK2xvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKKworCitERUZBVUxU X1BST1hZX1RPX0hPU1QgPTNEICJsb2NhbGhvc3QiCitTRUNVUkVfQ09PS0lFID0zRCAiZ2FsYXh5 c2Vzc2lvbiIKKworCitjbGFzcyBQcm94eU1hbmFnZXIob2JqZWN0KToKKworICAgIGRlZiBfX2lu aXRfXyggc2VsZiwgY29uZmlnICk6CisgICAgICAgIGZvciBvcHRpb24gaW4gWyAibWFuYWdlX2R5 bmFtaWNfcHJveHkiLCAiZHluYW1pY19wcm94eV9iaW5kX3BvcnQiLD0KICJkeW5hbWljX3Byb3h5 X2JpbmRfaXAiIF06CisgICAgICAgICAgICBzZXRhdHRyKCBzZWxmLCBvcHRpb24sIGdldGF0dHIo IGNvbmZpZywgb3B0aW9uICkgKQorICAgICAgICBzZWxmLmxhdW5jaF9ieSA9M0QgIm5vZGUiICAj IFRPRE86IFN1cHBvcnQgZG9ja2VyCisgICAgICAgIGlmIHNlbGYubWFuYWdlX2R5bmFtaWNfcHJv eHk6CisgICAgICAgICAgICBzZWxmLmxhenlfcHJvY2VzcyA9M0Qgc2VsZi5fX3NldHVwX2xhenlf cHJvY2VzcyggY29uZmlnICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubGF6eV9w cm9jZXNzID0zRCBOb09wTGF6eVByb2Nlc3MoKQorICAgICAgICBzZWxmLnByb3h5X2lwYyA9M0Qg cHJveHlfaXBjKGNvbmZpZykKKworICAgIGRlZiBzaHV0ZG93biggc2VsZiApOgorICAgICAgICBz ZWxmLmxhenlfcHJvY2Vzcy5zaHV0ZG93bigpCisKKyAgICBkZWYgc2V0dXBfcHJveHkoIHNlbGYs IHRyYW5zLCBob3N0PTNEREVGQVVMVF9QUk9YWV9UT19IT1NULCBwb3J0PTNETm9uPQplICk6Cisg ICAgICAgIGlmIHNlbGYubWFuYWdlX2R5bmFtaWNfcHJveHk6CisgICAgICAgICAgICBsb2cuaW5m bygiQXR0ZW1wdGluZyB0byBzdGFydCBkeW5hbWljIHByb3h5IHByb2Nlc3MiKQorICAgICAgICAg ICAgc2VsZi5sYXp5X3Byb2Nlc3Muc3RhcnRfcHJvY2VzcygpCisKKyAgICAgICAgYXV0aGVudGlj YXRpb24gPTNEIEF1dGhlbnRpY2F0aW9uVG9rZW4odHJhbnMpCisgICAgICAgIHByb3h5X3JlcXVl c3RzID0zRCBQcm94eVJlcXVlc3RzKGhvc3Q9M0Rob3N0LCBwb3J0PTNEcG9ydCkKKyAgICAgICAg c2VsZi5wcm94eV9pcGMuaGFuZGxlX3JlcXVlc3RzKGF1dGhlbnRpY2F0aW9uLCBwcm94eV9yZXF1 ZXN0cykKKyAgICAgICAgIyBUT0RPOiBUaGVzZSBzaG91bGRuJ3QgbmVlZCB0byBiZSByZXF1ZXN0 Lmhvc3QgYW5kIHJlcXVlc3Quc2NoZW1lPQogLQorICAgICAgICAjIHRob3VnaCB0aGV5IGFyZSBy ZWFzb25hYmxlIGRlZmF1bHRzLgorICAgICAgICBob3N0ID0zRCB0cmFucy5yZXF1ZXN0Lmhvc3QK KyAgICAgICAgaWYgJzonIGluIGhvc3Q6CisgICAgICAgICAgICBob3N0ID0zRCBob3N0WzA6aG9z dC5pbmRleCgnOicpXQorICAgICAgICBzY2hlbWUgPTNEIHRyYW5zLnJlcXVlc3Quc2NoZW1lCisg ICAgICAgIHByb3h5X3VybCA9M0QgJyVzOi8vJXM6JWQnICUgKHNjaGVtZSwgaG9zdCwgc2VsZi5k eW5hbWljX3Byb3h5X2Jpbj0KZF9wb3J0KQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAg J3Byb3h5X3VybCc6IHByb3h5X3VybCwKKyAgICAgICAgICAgICdwcm94aWVkX3BvcnQnOiBwcm94 eV9yZXF1ZXN0cy5wb3J0LAorICAgICAgICAgICAgJ3Byb3hpZWRfaG9zdCc6IHByb3h5X3JlcXVl c3RzLmhvc3QsCisgICAgICAgIH0KKworICAgIGRlZiBfX3NldHVwX2xhenlfcHJvY2Vzcyggc2Vs ZiwgY29uZmlnICk6CisgICAgICAgIGxhdW5jaGVyID0zRCBwcm94eV9sYXVuY2hlcihzZWxmKQor ICAgICAgICBjb21tYW5kID0zRCBsYXVuY2hlci5sYXVuY2hfcHJveHlfY29tbWFuZChjb25maWcp CisgICAgICAgIHJldHVybiBMYXp5UHJvY2Vzcyhjb21tYW5kKQorCisKK2RlZiBwcm94eV9sYXVu Y2hlcihjb25maWcpOgorICAgIHJldHVybiBOb2RlUHJveHlMYXVuY2hlcigpCisKKworY2xhc3Mg UHJveHlMYXVuY2hlcihvYmplY3QpOgorCisgICAgZGVmIGxhdW5jaF9wcm94eV9jb21tYW5kKHNl bGYsIGNvbmZpZyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisKK2Ns YXNzIE5vZGVQcm94eUxhdW5jaGVyKG9iamVjdCk6CisKKyAgICBkZWYgbGF1bmNoX3Byb3h5X2Nv bW1hbmQoc2VsZiwgY29uZmlnKToKKyAgICAgICAgYXJncyA9M0QgWworICAgICAgICAgICAgIi0t c2Vzc2lvbnMiLCBjb25maWcucHJveHlfc2Vzc2lvbl9tYXAsCisgICAgICAgICAgICAiLS1pcCIs IGNvbmZpZy5keW5hbWljX3Byb3h5X2JpbmRfaXAsCisgICAgICAgICAgICAiLS1wb3J0Iiwgc3Ry KGNvbmZpZy5keW5hbWljX3Byb3h5X2JpbmRfcG9ydCksCisgICAgICAgIF0KKyAgICAgICAgcGFy ZW50X2RpcmVjdG9yeSA9M0Qgb3MucGF0aC5kaXJuYW1lKCBfX2ZpbGVfXyApCisgICAgICAgIHBh dGhfdG9fYXBwbGljYXRpb24gPTNEIG9zLnBhdGguam9pbiggcGFyZW50X2RpcmVjdG9yeSwgImpz IiwgImxpYj0KIiwgIm1haW4uanMiICkKKyAgICAgICAgY29tbWFuZCA9M0QgWyBwYXRoX3RvX2Fw cGxpY2F0aW9uIF0gKyBhcmdzCisgICAgICAgIHJldHVybiBjb21tYW5kCisKKworY2xhc3MgQXV0 aGVudGljYXRpb25Ub2tlbihvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5z KToKKyAgICAgICAgc2VsZi5jb29raWVfbmFtZSA9M0QgU0VDVVJFX0NPT0tJRQorICAgICAgICBz ZWxmLmNvb2tpZV92YWx1ZSA9M0QgdHJhbnMuZ2V0X2Nvb2tpZSggc2VsZi5jb29raWVfbmFtZSAp CisKKworY2xhc3MgUHJveHlSZXF1ZXN0cyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsIGhvc3Q9M0ROb25lLCBwb3J0PTNETm9uZSk6CisgICAgICAgIGlmIGhvc3QgaXMgTm9uZToK KyAgICAgICAgICAgIGhvc3QgPTNEIERFRkFVTFRfUFJPWFlfVE9fSE9TVAorICAgICAgICBpZiBw b3J0IGlzIE5vbmU6CisgICAgICAgICAgICBwb3J0ID0zRCBzb2NrZXRzLnVudXNlZF9wb3J0KCkK KyAgICAgICAgICAgIGxvZy5pbmZvKCJPYnRhaW5lZCB1bnVzZWQgcG9ydCAlZCIgJSBwb3J0KQor ICAgICAgICBzZWxmLmhvc3QgPTNEIGhvc3QKKyAgICAgICAgc2VsZi5wb3J0ID0zRCBwb3J0CisK KworZGVmIHByb3h5X2lwYyhjb25maWcpOgorICAgIHByb3h5X3Nlc3Npb25fbWFwID0zRCBjb25m aWcucHJveHlfc2Vzc2lvbl9tYXAKKyAgICByZXR1cm4gSnNvbkZpbGVQcm94eUlwYyhwcm94eV9z ZXNzaW9uX21hcCkKKworCitjbGFzcyBQcm94eUlwYyhvYmplY3QpOgorCisgICAgZGVmIGhhbmRs ZV9yZXF1ZXN0cyhzZWxmLCBjb29raWUsIGhvc3QsIHBvcnQpOgorICAgICAgICByYWlzZSBOb3RJ bXBsZW1lbnRlZEVycm9yKCkKKworCitjbGFzcyBKc29uRmlsZVByb3h5SXBjKG9iamVjdCk6CisK KyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJveHlfc2Vzc2lvbl9tYXApOgorICAgICAgICBzZWxm LnByb3h5X3Nlc3Npb25fbWFwID0zRCBwcm94eV9zZXNzaW9uX21hcAorCisgICAgZGVmIGhhbmRs ZV9yZXF1ZXN0cyhzZWxmLCBhdXRoZW50aWNhdGlvbiwgcHJveHlfcmVxdWVzdHMpOgorICAgICAg ICBrZXkgPTNEICIlczolcyIgJSAoIHByb3h5X3JlcXVlc3RzLmhvc3QsIHByb3h5X3JlcXVlc3Rz LnBvcnQgKQorICAgICAgICBzZWN1cmVfaWQgPTNEIGF1dGhlbnRpY2F0aW9uLmNvb2tpZV92YWx1 ZQorICAgICAgICB3aXRoIEZpbGVMb2NrKCBzZWxmLnByb3h5X3Nlc3Npb25fbWFwICk6CisgICAg ICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIHNlbGYucHJveHlfc2Vzc2lvbl9tYXAgKToK KyAgICAgICAgICAgICAgICBvcGVuKCBzZWxmLnByb3h5X3Nlc3Npb25fbWFwLCAidyIgKS53cml0 ZSggInt9IiApCisgICAgICAgICAgICBqc29uX2RhdGEgPTNEIG9wZW4oIHNlbGYucHJveHlfc2Vz c2lvbl9tYXAsICJyIiApLnJlYWQoKQorICAgICAgICAgICAgc2Vzc2lvbl9tYXAgPTNEIGpzb24u bG9hZHMoIGpzb25fZGF0YSApCisgICAgICAgICAgICB0b19yZW1vdmUgPTNEIFtdCisgICAgICAg ICAgICBmb3IgaywgdmFsdWUgaW4gc2Vzc2lvbl9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgICAg ICBpZiB2YWx1ZSA9M0Q9M0Qgc2VjdXJlX2lkOgorICAgICAgICAgICAgICAgICAgICB0b19yZW1v dmUuYXBwZW5kKCBrICkKKyAgICAgICAgICAgIGZvciBrIGluIHRvX3JlbW92ZToKKyAgICAgICAg ICAgICAgICBkZWwgc2Vzc2lvbl9tYXBbIGsgXQorICAgICAgICAgICAgc2Vzc2lvbl9tYXBbIGtl eSBdID0zRCBzZWN1cmVfaWQKKyAgICAgICAgICAgIG5ld19qc29uX2RhdGEgPTNEIGpzb24uZHVt cHMoIHNlc3Npb25fbWFwICkKKyAgICAgICAgICAgIG9wZW4oIHNlbGYucHJveHlfc2Vzc2lvbl9t YXAsICJ3IiApLndyaXRlKCBuZXdfanNvbl9kYXRhICkKKworCisjIFRPRE86IHNxbGl0ZWZpbGVp cGMKKyMgVE9ETzogUkVTVGZ1bCBBUEkgZHJpdmVuIHByb3h5CgpkaWZmIC1yIDUzZTkyZTViZTdh YjJhZjUwMzJlNmYzYWU4ODEyNDQwNGY5YWU0YjQgLXIgYTdiOWViM2RmMzdkMDQxNDU4Mzk3NTY9 CjQyZjNhMGJlMDFiMzE0NmIxIGxpYi9nYWxheHkvd2ViL3Byb3h5L2ZpbGVsb2NrLnB5Ci0tLSAv ZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS93ZWIvcHJveHkvZmlsZWxvY2sucHkKQEAgLTAsMCAr MSw4MiBAQAorIiIiIENvZGUgb2J0YWluZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZG1mcmV5 L0ZpbGVMb2NrCisKK1NlZSBmdWxsIGxpY2Vuc2UgYXQ6CisKK2h0dHBzOi8vZ2l0aHViLmNvbS9k bWZyZXkvRmlsZUxvY2svYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQKKworIiIiCitpbXBvcnQgb3MK K2ltcG9ydCB0aW1lCitpbXBvcnQgZXJybm8KKworCitjbGFzcyBGaWxlTG9ja0V4Y2VwdGlvbihF eGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBGaWxlTG9jayhvYmplY3QpOgorICAgICIi IiBBIGZpbGUgbG9ja2luZyBtZWNoYW5pc20gdGhhdCBoYXMgY29udGV4dC1tYW5hZ2VyIHN1cHBv cnQgc28KKyAgICAgICAgeW91IGNhbiB1c2UgaXQgaW4gYSB3aXRoIHN0YXRlbWVudC4gVGhpcyBz aG91bGQgYmUgcmVsYXRpdmVseSBjcm9zcworICAgICAgICBjb21wYXRpYmxlIGFzIGl0IGRvZXNu J3QgcmVseSBvbiBtc3ZjcnQgb3IgZmNudGwgZm9yIHRoZSBsb2NraW5nLgorICAgICIiIgorCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfbmFtZSwgdGltZW91dD0zRDEwLCBkZWxheT0zRC4w NSk6CisgICAgICAgICIiIiBQcmVwYXJlIHRoZSBmaWxlIGxvY2tlci4gU3BlY2lmeSB0aGUgZmls ZSB0byBsb2NrIGFuZCBvcHRpb25hbD0KbHkKKyAgICAgICAgICAgIHRoZSBtYXhpbXVtIHRpbWVv dXQgYW5kIHRoZSBkZWxheSBiZXR3ZWVuIGVhY2ggYXR0ZW1wdCB0byBsb2NrLgorICAgICAgICAi IiIKKyAgICAgICAgc2VsZi5pc19sb2NrZWQgPTNEIEZhbHNlCisgICAgICAgIGZ1bGxfcGF0aCA9 M0Qgb3MucGF0aC5hYnNwYXRoKGZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5sb2NrZmlsZSA9M0Qg IiVzLmxvY2siICUgZnVsbF9wYXRoCisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0zRCBmdWxsX3Bh dGgKKyAgICAgICAgc2VsZi50aW1lb3V0ID0zRCB0aW1lb3V0CisgICAgICAgIHNlbGYuZGVsYXkg PTNEIGRlbGF5CisKKyAgICBkZWYgYWNxdWlyZShzZWxmKToKKyAgICAgICAgIiIiIEFjcXVpcmUg dGhlIGxvY2ssIGlmIHBvc3NpYmxlLiBJZiB0aGUgbG9jayBpcyBpbiB1c2UsIGl0IGNoZWNrPQog YWdhaW4KKyAgICAgICAgICAgIGV2ZXJ5IGB3YWl0YCBzZWNvbmRzLiBJdCBkb2VzIHRoaXMgdW50 aWwgaXQgZWl0aGVyIGdldHMgdGhlIGxvPQpjayBvcgorICAgICAgICAgICAgZXhjZWVkcyBgdGlt ZW91dGAgbnVtYmVyIG9mIHNlY29uZHMsIGluIHdoaWNoIGNhc2UgaXQgdGhyb3dzCisgICAgICAg ICAgICBhbiBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICBzdGFydF90aW1lID0zRCB0 aW1lLnRpbWUoKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAg ICAgICAgICAgIHNlbGYuZmQgPTNEIG9zLm9wZW4oc2VsZi5sb2NrZmlsZSwgb3MuT19DUkVBVCB8 IG9zLk9fRVhDTCA9Cnwgb3MuT19SRFdSKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg ICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0z RCBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAg ICAgaWYgKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgPj0zRCBzZWxmLnRpbWVvdXQ6CisgICAg ICAgICAgICAgICAgICAgIHJhaXNlIEZpbGVMb2NrRXhjZXB0aW9uKCJUaW1lb3V0IG9jY3VyZWQu IikKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHNlbGYuZGVsYXkpCisgICAgICAgIHNlbGYu aXNfbG9ja2VkID0zRCBUcnVlCisKKyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgIiIi IEdldCByaWQgb2YgdGhlIGxvY2sgYnkgZGVsZXRpbmcgdGhlIGxvY2tmaWxlLgorICAgICAgICAg ICAgV2hlbiB3b3JraW5nIGluIGEgYHdpdGhgIHN0YXRlbWVudCwgdGhpcyBnZXRzIGF1dG9tYXRp Y2FsbHkKKyAgICAgICAgICAgIGNhbGxlZCBhdCB0aGUgZW5kLgorICAgICAgICAiIiIKKyAgICAg ICAgaWYgc2VsZi5pc19sb2NrZWQ6CisgICAgICAgICAgICBvcy5jbG9zZShzZWxmLmZkKQorICAg ICAgICAgICAgb3MudW5saW5rKHNlbGYubG9ja2ZpbGUpCisgICAgICAgICAgICBzZWxmLmlzX2xv Y2tlZCA9M0QgRmFsc2UKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICIiIiBB Y3RpdmF0ZWQgd2hlbiB1c2VkIGluIHRoZSB3aXRoIHN0YXRlbWVudC4KKyAgICAgICAgICAgIFNo b3VsZCBhdXRvbWF0aWNhbGx5IGFjcXVpcmUgYSBsb2NrIHRvIGJlIHVzZWQgaW4gdGhlIHdpdGgg YmxvPQpjay4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmlzX2xvY2tlZDoKKyAg ICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYg X19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICIiIiBBY3Rp dmF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgd2l0aCBzdGF0ZW1lbnQuCisgICAgICAgICAgICBJdCBh dXRvbWF0aWNhbGx5IHJlbGVhc2VzIHRoZSBsb2NrIGlmIGl0IGlzbid0IGxvY2tlZC4KKyAgICAg ICAgIiIiCisgICAgICAgIGlmIHNlbGYuaXNfbG9ja2VkOgorICAgICAgICAgICAgc2VsZi5yZWxl YXNlKCkKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAiIiIgTWFrZSBzdXJlIHRo YXQgdGhlIEZpbGVMb2NrIGluc3RhbmNlIGRvZXNuJ3QgbGVhdmUgYSBsb2NrZmlsZQorICAgICAg ICAgICAgbHlpbmcgYXJvdW5kLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZWxlYXNlKCkK CmRpZmYgLXIgNTNlOTJlNWJlN2FiMmFmNTAzMmU2ZjNhZTg4MTI0NDA0ZjlhZTRiNCAtciBhN2I5 ZWIzZGYzN2QwNDE0NTgzOTc1Nj0KNDJmM2EwYmUwMWIzMTQ2YjEgbGliL2dhbGF4eS93ZWIvcHJv eHkvanMvRG9ja2VyZmlsZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvd2ViL3Byb3h5 L2pzL0RvY2tlcmZpbGUKQEAgLTAsMCArMSwxOCBAQAorIyBIYXZlIG5vdCB5ZXQgZ290dGVuIHRo aXMgdG8gd29yayAtIGdvYWwgd2FzIHRvIGxhdW5jaCB0aGUgcHJveCBpbiBhIERvY2s9CmVyIGNv bnRhaW5lci4KKyMgTmV0d29ya2luZyBpcyBhIGJpdCB0cmlja3kgdGhvdWdoIC0gY291bGQgbm90 IGdldCB0aGUgY2hpbGQgcHJveHkgdG8gdGFsPQprIHRvIHRoZSBjaGlsZAorIyBJUHl0aG9uIGNv bnRhaW5lci4KKworCisjIHN1ZG8gZG9ja2VyIGJ1aWxkIC0tbm8tY2FjaGU9M0R0cnVlIC10IGd4 cHJveHkgLgorIyBzdWRvIGRvY2tlciBydW4gLS1uZXQgaG9zdCAtdiAvaG9tZS9qb2huL3dvcmtz cGFjZS9nYWxheHktY2VudHJhbC9kYXRhYmE9CnNlOi92YXIvZ3hwcm94eSAtcCA4ODAwOjg4MDAg LXQgZ3hwcm94eSBsaWIvbWFpbi5qcyAtLXNlc3Npb25zIC92YXIvZ3hwcm94eT0KL3Nlc3Npb25f bWFwLmpzb24gLS1pcCAwLjAuMC4wIC0tcG9ydCA4ODAwCisKK0ZST00gbm9kZTowLjExLjEzCisK K1JVTiBta2RpciAtcCAvdXNyL3NyYy9neHByb3h5CitXT1JLRElSIC91c3Ivc3JjL2d4cHJveHkK KworQUREIHBhY2thZ2UuanNvbiAvdXNyL3NyYy9neHByb3h5LworUlVOIG5wbSBpbnN0YWxsCitB REQgLiAvdXNyL3NyYy9neHByb3h5CisKK0NNRCBbICJsaWIvbWFpbi5qcyIgXQoKZGlmZiAtciA1 M2U5MmU1YmU3YWIyYWY1MDMyZTZmM2FlODgxMjQ0MDRmOWFlNGI0IC1yIGE3YjllYjNkZjM3ZDA0 MTQ1ODM5NzU2PQo0MmYzYTBiZTAxYjMxNDZiMSBsaWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9SRUFE TUUubWQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9SRUFETUUu bWQKQEAgLTAsMCArMSwyIEBACisjIEEgZHluYW1pYyBjb25maWd1cmFibGUgcmV2ZXJzZSBwcm94 eSBmb3IgdXNlIHdpdGhpbiBHYWxheHkKKwoKZGlmZiAtciA1M2U5MmU1YmU3YWIyYWY1MDMyZTZm M2FlODgxMjQ0MDRmOWFlNGI0IC1yIGE3YjllYjNkZjM3ZDA0MTQ1ODM5NzU2PQo0MmYzYTBiZTAx YjMxNDZiMSBsaWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvbWFpbi5qcwotLS0gL2Rldi9udWxs CisrKyBiL2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9tYWluLmpzCkBAIC0wLDAgKzEsNDEg QEAKKyMhL3Vzci9iaW4vZW52IG5vZGUKKy8qCitJbnNwaXJhdGlvbiB0YWtlbiBmcm9tPTIwCisJ aHR0cHM6Ly9naXRodWIuY29tL2p1cHl0ZXIvbXVsdGl1c2VyLXNlcnZlci9ibG9iL21hc3Rlci9t dWx0aXVzZXIvanMvbWFpbj0KLmpzCisqLwordmFyIGZzID0zRCByZXF1aXJlKCdmcycpOwordmFy IGFyZ3MgPTNEIHJlcXVpcmUoJ2NvbW1hbmRlcicpOworCitwYWNrYWdlX2luZm8gPTNEIHJlcXVp cmUoJy4uL3BhY2thZ2UnKQorCithcmdzCisJLnZlcnNpb24ocGFja2FnZV9pbmZvKQorICAgIC5v cHRpb24oJy0taXAgPG4+JywgJ1B1YmxpYy1mYWNpbmcgSVAgb2YgdGhlIHByb3h5JywgJ2xvY2Fs aG9zdCcpCisgICAgLm9wdGlvbignLS1wb3J0IDxuPicsICdQdWJsaWMtZmFjaW5nIHBvcnQgb2Yg dGhlIHByb3h5JywgcGFyc2VJbnQpCisgICAgLm9wdGlvbignLS1jb29raWUgPGNvb2tpZW5hbWU+ JywgJ0Nvb2tpZSBwcm92aW5nIGF1dGhlbnRpY2F0aW9uJywgJ2dhbD0KYXh5c2Vzc2lvbicpCisg ICAgLm9wdGlvbignLS1zZXNzaW9ucyA8ZmlsZT4nLCAnUm91dGVzIGZpbGUgdG8gbW9uaXRvcicp CisgICAgLm9wdGlvbignLS12ZXJib3NlJykKKworYXJncy5wYXJzZShwcm9jZXNzLmFyZ3YpOwor Cit2YXIgRHluYW1pY1Byb3h5ID0zRCByZXF1aXJlKCcuL3Byb3h5LmpzJykuRHluYW1pY1Byb3h5 OwordmFyIG1hcEZvciA9M0QgcmVxdWlyZSgnLi9tYXBwZXIuanMnKS5tYXBGb3I7CisKK3ZhciBz ZXNzaW9ucyA9M0QgbWFwRm9yKGFyZ3Muc2Vzc2lvbnMpOworCit2YXIgZHluYW1pY19wcm94eV9v cHRpb25zID0zRCB7CisgIHNlc3Npb25Db29raWU6IGFyZ3NbJ2Nvb2tpZSddLAorICBzZXNzaW9u TWFwOiBzZXNzaW9ucywKKyAgdmVyYm9zZTogYXJncy52ZXJib3NlCit9CisKK3ZhciBkeW5hbWlj X3Byb3h5ID0zRCBuZXcgRHluYW1pY1Byb3h5KGR5bmFtaWNfcHJveHlfb3B0aW9ucyk7CisKK3Zh ciBsaXN0ZW4gPTNEIHt9OworbGlzdGVuLnBvcnQgPTNEIGFyZ3MucG9ydCB8fCA4MDAwOworbGlz dGVuLmlwID0zRCBhcmdzLmlwOworCitpZihhcmdzLnZlcmJvc2UpIHsKKwljb25zb2xlLmxvZygi TGlzdGVuaW5nIG9uICIgKyBsaXN0ZW4uaXAgKyAiOiIgKyBsaXN0ZW4ucG9ydCk7Cit9CitkeW5h bWljX3Byb3h5LnByb3h5X3NlcnZlci5saXN0ZW4obGlzdGVuLnBvcnQsIGxpc3Rlbi5pcCk7Cgpk aWZmIC1yIDUzZTkyZTViZTdhYjJhZjUwMzJlNmYzYWU4ODEyNDQwNGY5YWU0YjQgLXIgYTdiOWVi M2RmMzdkMDQxNDU4Mzk3NTY9CjQyZjNhMGJlMDFiMzE0NmIxIGxpYi9nYWxheHkvd2ViL3Byb3h5 L2pzL2xpYi9tYXBwZXIuanMKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5L3dlYi9wcm94 eS9qcy9saWIvbWFwcGVyLmpzCkBAIC0wLDAgKzEsMzMgQEAKK3ZhciBmcyA9M0QgcmVxdWlyZSgn ZnMnKTsKKworCit2YXIgbWFwRm9yID0zRCBmdW5jdGlvbihwYXRoKSB7CisJdmFyIG1hcCA9M0Qg e307CisKKwl2YXIgbG9hZE1hcCA9M0QgZnVuY3Rpb24oKSB7CisgCQl2YXIgY29udGVudCA9M0Qg ZnMucmVhZEZpbGVTeW5jKHBhdGgsICd1dGY4Jyk7CisgCQl2YXIga2V5VG9TZXNzaW9uID0zRCBK U09OLnBhcnNlKGNvbnRlbnQpOworIAkJdmFyIG5ld1Nlc3Npb25zID0zRCB7fTsKKyAJCWZvcih2 YXIga2V5IGluIGtleVRvU2Vzc2lvbikgeworIAkJCXZhciBob3N0QW5kUG9ydCA9M0Qga2V5LnNw bGl0KCI6Iik7CisgCQkJLy8gJ2hvc3QnOiBob3N0QW5kUG9ydFswXSwKKyAJCQluZXdTZXNzaW9u c1trZXlUb1Nlc3Npb25ba2V5XV0gPTNEIHsndGFyZ2V0Jzogeydob3N0JzogaG9zdEFuZFBvcnRb MF0sPQogJ3BvcnQnOiBwYXJzZUludChob3N0QW5kUG9ydFsxXSl9fTsKKyAJCX0KKwkJZm9yKHZh ciBvbGRTZXNzaW9uIGluIG1hcCkgeworCQkJaWYoIShvbGRTZXNzaW9uIGluIG5ld1Nlc3Npb25z KSkgeworCQkJCWRlbGV0ZSBtYXBbIG9sZFNlc3Npb24gXTsKKwkJCX0KKwkJfQorCQlmb3IodmFy IG5ld1Nlc3Npb24gaW4gbmV3U2Vzc2lvbnMpIHsKKwkJCW1hcFtuZXdTZXNzaW9uXSA9M0QgbmV3 U2Vzc2lvbnNbbmV3U2Vzc2lvbl07CisJCX0KKwl9CisKKwljb25zb2xlLmxvZygiV2F0Y2hpbmcg cGF0aCAiICsgcGF0aCk7CisJbG9hZE1hcCgpOworCWZzLndhdGNoKHBhdGgsIGxvYWRNYXApOwor CisJcmV0dXJuIG1hcDsKK30KKworZXhwb3J0cy5tYXBGb3IgPTNEIG1hcEZvcjsKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDUzZTkyZTViZTdhYjJhZjUwMzJlNmYzYWU4ODEy NDQwNGY5YWU0YjQgLXIgYTdiOWViM2RmMzdkMDQxNDU4Mzk3NTY9CjQyZjNhMGJlMDFiMzE0NmIx IGxpYi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9wcm94eS5qcwotLS0gL2Rldi9udWxsCisrKyBi L2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9wcm94eS5qcwpAQCAtMCwwICsxLDExNCBAQAor dmFyIGh0dHAgPTNEIHJlcXVpcmUoJ2h0dHAnKSwKKyAgICBodHRwUHJveHkgPTNEIHJlcXVpcmUo J2h0dHAtcHJveHknKTsKKwordmFyIGJvdW5kID0zRCBmdW5jdGlvbiAodGhhdCwgbWV0aG9kKSB7 CisgICAgLy8gYmluZCBhIG1ldGhvZCwgdG8gZW5zdXJlIGB0aGlzPTNEdGhhdGAgd2hlbiBpdCBp cyBjYWxsZWQKKyAgICAvLyBiZWNhdXNlIHByb3RvdHlwZSBsYW5ndWFnZXMgYXJlIGJhZAorICAg IHJldHVybiBmdW5jdGlvbiAoKSB7CisgICAgICAgIG1ldGhvZC5hcHBseSh0aGF0LCBhcmd1bWVu dHMpOworICAgIH07Cit9OworCit2YXIgRHluYW1pY1Byb3h5ID0zRCBmdW5jdGlvbihvcHRpb25z KSB7CisJdmFyIGR5bmFtaWNQcm94eSA9M0QgdGhpczsKKwl0aGlzLnNlc3Npb25Db29raWUgPTNE IG9wdGlvbnMuc2Vzc2lvbkNvb2tpZTsKKwl0aGlzLnNlc3Npb25NYXAgPTNEIG9wdGlvbnMuc2Vz c2lvbk1hcDsKKworICAgIHZhciBsb2dfZXJyb3JzID0zRCBmdW5jdGlvbihoYW5kbGVyKSB7Cisg ICAgICAgIHJldHVybiBmdW5jdGlvbiAocmVxLCByZXMpIHsKKyAgICAgICAgICAgIHRyeSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIuYXBwbHkoZHluYW1pY1Byb3h5LCBhcmd1bWVu dHMpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGNvbnNvbGUu bG9nKCJFcnJvciBpbiBoYW5kbGVyIGZvciAiICsgcmVxLm1ldGhvZCArICcgJyArIHI9CmVxLnVy bCArICc6ICcsIGUpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH07CisKKyAgICB2 YXIgcHJveHkgPTNEIHRoaXMucHJveHkgPTNEIGh0dHBQcm94eS5jcmVhdGVQcm94eVNlcnZlcih7 CisgICAgICAgIHdzIDogdHJ1ZSwKKyAgICB9KTsKKworICAgIHRoaXMucHJveHlfc2VydmVyID0z RCBodHRwLmNyZWF0ZVNlcnZlcigKKyAgICAJbG9nX2Vycm9ycyhkeW5hbWljUHJveHkuaGFuZGxl UHJveHlSZXF1ZXN0KQorICAgICk7CisJdGhpcy5wcm94eV9zZXJ2ZXIub24oJ3VwZ3JhZGUnLCBi b3VuZCh0aGlzLCB0aGlzLmhhbmRsZVdzKSk7Cit9OworCitEeW5hbWljUHJveHkucHJvdG90eXBl LnJld3JpdGVSZXF1ZXN0ID0zRCBmdW5jdGlvbihyZXF1ZXN0KSB7Cit9CisKK0R5bmFtaWNQcm94 eS5wcm90b3R5cGUudGFyZ2V0Rm9yUmVxdWVzdCA9M0QgZnVuY3Rpb24ocmVxdWVzdCkgeworICAg IC8vIHJldHVybiBwcm94eSB0YXJnZXQgZm9yIGEgZ2l2ZW4gdXJsCisgICAgdmFyIHNlc3Npb24g PTNEIHRoaXMuZmluZFNlc3Npb24ocmVxdWVzdCk7CisgICAgZm9yICh2YXIgbWFwcGVkU2Vzc2lv biBpbiB0aGlzLnNlc3Npb25NYXApIHsKKyAgICAJaWYoc2Vzc2lvbiA9M0Q9M0QgbWFwcGVkU2Vz c2lvbikgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbk1hcFtzZXNzaW9uXS50YXJn ZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsKK307CisKK0R5bmFtaWNQ cm94eS5wcm90b3R5cGUuZmluZFNlc3Npb24gPTNEIGZ1bmN0aW9uKHJlcXVlc3QpIHsKKyAgICB2 YXIgc2Vzc2lvbkNvb2tpZSA9M0QgdGhpcy5zZXNzaW9uQ29va2llOworICAgICAgICByYyA9M0Qg cmVxdWVzdC5oZWFkZXJzLmNvb2tpZTsKKyAgICBpZighcmMpIHsKKyAgICAgICAgcmV0dXJuIG51 bGw7CisgICAgfQorICAgIHZhciBjb29raWVzID0zRCByYy5zcGxpdCgnOycpOworICAgIGZvcih2 YXIgY29va2llSW5kZXggaW4gY29va2llcykgeworICAgIAl2YXIgY29va2llID0zRCBjb29raWVz W2Nvb2tpZUluZGV4XTsKKyAgICAgICAgdmFyIHBhcnRzID0zRCBjb29raWUuc3BsaXQoJz0zRCcp OworCQl2YXIgcGFydE5hbWUgPTNEIHBhcnRzLnNoaWZ0KCkudHJpbSgpOworICAgICAgICBpZihw YXJ0TmFtZSA9M0Q9M0Qgc2Vzc2lvbkNvb2tpZSkgeworICAgICAgICAJcmV0dXJuIHVuZXNjYXBl KHBhcnRzLmpvaW4oJz0zRCcpKQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7 Cit9OworCitEeW5hbWljUHJveHkucHJvdG90eXBlLmhhbmRsZVByb3h5UmVxdWVzdCA9M0QgZnVu Y3Rpb24ocmVxLCByZXMpIHsKKyAgICB2YXIgdGFyZ2V0ID0zRCB0aGlzLnRhcmdldEZvclJlcXVl c3QocmVxKTsKKyAgICBjb25zb2xlLmxvZygiUFJPWFkgIiArIHJlcS5tZXRob2QgKyAiICIgKyBy ZXEudXJsICsgIiB0byAiICsgdGFyZ2V0KTsKKyAgICB2YXIgb3JpZ2luID0zRCByZXEuaGVhZGVy cy5vcmlnaW47CisgICAgdGhpcy5yZXdyaXRlUmVxdWVzdChyZXEpOworICAgIHJlcy5vbGRXcml0 ZUhlYWQgPTNEIHJlcy53cml0ZUhlYWQ7CisgICAgcmVzLndyaXRlSGVhZCA9M0QgZnVuY3Rpb24o c3RhdHVzQ29kZSwgaGVhZGVycykgeworICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29u dHJvbC1BbGxvdy1PcmlnaW4nLCBvcmlnaW4pOworICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nl c3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscycsICd0cnVlJyk7CisgICAgICAgIHJlcy5vbGRX cml0ZUhlYWQoc3RhdHVzQ29kZSwgaGVhZGVycyk7CisgICAgfQorICAgIHRoaXMucHJveHkud2Vi KHJlcSwgcmVzLCB7CisgICAgICAgIHRhcmdldDogdGFyZ2V0CisgICAgfSwgZnVuY3Rpb24gKGUp IHsKKyAgICAgICAgY29uc29sZS5sb2coIlByb3h5IGVycm9yOiAiLCBlKTsKKyAgICAgICAgcmVz LndyaXRlSGVhZCg1MDIpOworICAgICAgICByZXMud3JpdGUoIlByb3h5IHRhcmdldCBtaXNzaW5n Iik7CisgICAgICAgIHJlcy5lbmQoKTsKKyAgICB9KTsKK307CisKK0R5bmFtaWNQcm94eS5wcm90 b3R5cGUuaGFuZGxlV3MgPTNEIGZ1bmN0aW9uKHJlcSwgcmVzLCBoZWFkKSB7CisgICAgLy8gbm8g bG9jYWwgcm91dGUgZm91bmQsIHRpbWUgdG8gcHJveHkKKyAgICB2YXIgdGFyZ2V0ID0zRCB0aGlz LnRhcmdldEZvclJlcXVlc3QocmVxKTsKKyAgICBjb25zb2xlLmxvZygiUFJPWFkgV1MgIiArIHJl cS51cmwgKyAiIHRvICIgKyByZXEudXJsKTsKKyAgICB2YXIgb3JpZ2luID0zRCByZXEuaGVhZGVy cy5vcmlnaW47CisgICAgdGhpcy5yZXdyaXRlUmVxdWVzdChyZXEpOworICAgIHJlcy5vbGRXcml0 ZUhlYWQgPTNEIHJlcy53cml0ZUhlYWQ7CisgICAgcmVzLndyaXRlSGVhZCA9M0QgZnVuY3Rpb24o c3RhdHVzQ29kZSwgaGVhZGVycykgeworICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nlc3MtQ29u dHJvbC1BbGxvdy1PcmlnaW4nLCBvcmlnaW4pOworICAgICAgICByZXMuc2V0SGVhZGVyKCdBY2Nl c3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFscycsICd0cnVlJyk7CisgICAgICAgIHJlcy5vbGRX cml0ZUhlYWQoc3RhdHVzQ29kZSwgaGVhZGVycyk7CisgICAgfQorICAgIHRoaXMucHJveHkud3Mo cmVxLCByZXMsIGhlYWQsIHsKKyAgICAgICAgdGFyZ2V0OiB0YXJnZXQKKyAgICB9LCBmdW5jdGlv biAoZSkgeworICAgICAgICBjb25zb2xlLmxvZygiUHJveHkgZXJyb3I6ICIsIGUpOworICAgICAg ICByZXMud3JpdGVIZWFkKDUwMik7CisgICAgICAgIHJlcy53cml0ZSgiUHJveHkgdGFyZ2V0IG1p c3NpbmciKTsKKyAgICAgICAgcmVzLmVuZCgpOworICAgIH0pOworfTsKKworZXhwb3J0cy5EeW5h bWljUHJveHkgPTNEIER5bmFtaWNQcm94eTsKCmRpZmYgLXIgNTNlOTJlNWJlN2FiMmFmNTAzMmU2 ZjNhZTg4MTI0NDA0ZjlhZTRiNCAtciBhN2I5ZWIzZGYzN2QwNDE0NTgzOTc1Nj0KNDJmM2EwYmUw MWIzMTQ2YjEgbGliL2dhbGF4eS93ZWIvcHJveHkvanMvcGFja2FnZS5qc29uCi0tLSAvZGV2L251 bGwKKysrIGIvbGliL2dhbGF4eS93ZWIvcHJveHkvanMvcGFja2FnZS5qc29uCkBAIC0wLDAgKzEs MTcgQEAKK3sKKyAgIm5hbWUiOiAiZ2FsYXh5LXByb3h5IiwKKyAgInZlcnNpb24iOiAiMC4wLjEi LAorICAiZGVzY3JpcHRpb24iOiAiQSBkeW5hbWljIHJldmVyc2UgcHJveHkgZm9yIHVzZSB3aXRo aW4gR2FsYXh5IiwKKyAgIm1haW4iOiAiaW5kZXguanMiLAorICAiYXV0aG9yIjogIkpvaG4gQ2hp bHRvbiIsCisgICJsaWNlbnNlIjogIkFGTCB2MyIsCisgICJyZWFkbWVGaWxlbmFtZSI6ICJSRUFE TUUubWQiLAorICAicmVwb3NpdG9yeSI6IHsKKyAgICAidHlwZSI6ICJtZXJjdXJpYWwiLAorICAg ICJ1cmwiOiAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbCIKKyAg fSwKKyAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAiaHR0cC1wcm94eSI6ICJ+MS4xIiwKKyAgICAi Y29tbWFuZGVyIjogIn4yLjIiCisgIH0KK30KCmRpZmYgLXIgNTNlOTJlNWJlN2FiMmFmNTAzMmU2 ZjNhZTg4MTI0NDA0ZjlhZTRiNCAtciBhN2I5ZWIzZGYzN2QwNDE0NTgzOTc1Nj0KNDJmM2EwYmUw MWIzMTQ2YjEgdGVzdC91bml0L3Rlc3RfbGF6eV9wcm9jZXNzLnB5Ci0tLSAvZGV2L251bGwKKysr IGIvdGVzdC91bml0L3Rlc3RfbGF6eV9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMTkgQEAKK2ltcG9y dCBvcworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQorCitmcm9tIGdhbGF4eS51dGlsLmxh enlfcHJvY2VzcyBpbXBvcnQgTGF6eVByb2Nlc3MKKworCitkZWYgdGVzdF9sYXp5X3Byb2Nlc3Mo KToKKyAgICB0ID0zRCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgIG9zLnJlbW92 ZSh0Lm5hbWUpCisgICAgbGF6eV9wcm9jZXNzID0zRCBMYXp5UHJvY2VzcyhbImJhc2giLCAiLWMi LCAidG91Y2ggJXM7IHNsZWVwIDEwMCIgJSB0Lj0KbmFtZV0pCisgICAgYXNzZXJ0IG5vdCBvcy5w YXRoLmV4aXN0cyh0Lm5hbWUpCisgICAgbGF6eV9wcm9jZXNzLnN0YXJ0X3Byb2Nlc3MoKQorICAg IHRpbWUuc2xlZXAoLjAyKQorICAgIGFzc2VydCBsYXp5X3Byb2Nlc3MucHJvY2Vzcy5wb2xsKCkg aXMgTm9uZQorICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyh0Lm5hbWUpCisgICAgbGF6eV9wcm9j ZXNzLnNodXRkb3duKCkKKyAgICB0aW1lLnNsZWVwKC4wMikKKyAgICBhc3NlcnQgbGF6eV9wcm9j ZXNzLnByb2Nlc3MucG9sbCgpCgpkaWZmIC1yIDUzZTkyZTViZTdhYjJhZjUwMzJlNmYzYWU4ODEy NDQwNGY5YWU0YjQgLXIgYTdiOWViM2RmMzdkMDQxNDU4Mzk3NTY9CjQyZjNhMGJlMDFiMzE0NmIx IHRlc3QvdW5pdC90ZXN0X3NvY2tldHMucHkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3VuaXQv dGVzdF9zb2NrZXRzLnB5CkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCBzb2NrZXQKK2Zyb20gZ2Fs YXh5LnV0aWwgaW1wb3J0IHNvY2tldHMKKworCitkZWYgdGVzdF91bnVzZWRfZnJlZV9wb3J0X3Vu Y29uc3RyYWluZWQoKToKKyAgICBwb3J0ID0zRCBzb2NrZXRzLnVudXNlZF9wb3J0KCkKKworICAg IHMgPTNEIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkK KyAgICAjIHdvdWxkIHRocm93IGV4Y2VwdGlvbiBpZiBwb3J0IHdhcyBub3QgZnJlZS4KKyAgICBz LmJpbmQoKCdsb2NhbGhvc3QnLCBwb3J0KSkKKyAgICBzLmNsb3NlKCkKKwoKCmh0dHBzOi8vYml0 YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8xMjk0NTdkMGNjNDEvCkNo YW5nZXNldDogICAxMjk0NTdkMGNjNDEKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAg ICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQWRhcHQgSVB5dGhvbi9J RSBmcmFtZXdvcmsgZm9yIGR5bmFtaWMgR2FsYXh5IHByb3h5LgpBZmZlY3RlZCAjOiAgNCBmaWxl cwoKZGlmZiAtciBhN2I5ZWIzZGYzN2QwNDE0NTgzOTc1NjQyZjNhMGJlMDFiMzE0NmIxIC1yIDEy OTQ1N2QwY2M0MTkzYTZiOTcyYTk5PQpjMjBiYzliZTZkODkxNGE4ZSBjb25maWcvcGx1Z2lucy92 aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwotLS0gYS9jb25maWcvcGx1Z2lu cy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcworKysgYi9jb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pZS5qcwpAQCAtMzEsNiArMzEs OSBAQAogICAgIGludGVydmFsID0zRCBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICAgICAk LmFqYXgoewogICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICB4aHJGaWVsZHM6IHsK KyAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUKKyAgICAgICAgICAgIH0sCiAg ICAgICAgICAgICB0eXBlOiAiR0VUIiwKICAgICAgICAgICAgIHRpbWVvdXQ6IDUwMCwKICAgICAg ICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7CgpkaWZmIC1yIGE3YjllYjNkZjM3ZDA0MTQ1ODM5 NzU2NDJmM2EwYmUwMWIzMTQ2YjEgLXIgMTI5NDU3ZDBjYzQxOTNhNmI5NzJhOTk9CmMyMGJjOWJl NmQ4OTE0YThlIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2pz L2lweXRob24uanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9z dGF0aWMvanMvaXB5dGhvbi5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9p cHl0aG9uL3N0YXRpYy9qcy9pcHl0aG9uLmpzCkBAIC0xNSwxMSArMTUsMTQgQEAKIH0KPTIwCiBm dW5jdGlvbiBtZXNzYWdlX25vX2F1dGgoKXsKKyAgICAvLyBObyBsb25nZXIgYSBzZWN1cml0eSBp c3N1ZSwgcHJveHkgdmFsaWRhdGVzIEdhbGF4eSBzZXNzaW9uIHRva2VuLgorICAgIC8qCiAgICAg dG9hc3RyLndhcm5pbmcoCiAgICAgICAgICJJUHl0aG9uIE5vdGVib29rIHdhcyBsdW5jaGVkIHdp dGhvdXQgYXV0aGVudGljYXRpb24uIFRoaXMgaXMgYSBzZT0KY3VyaXR5IGlzc3VlLiA8YSBocmVm PTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vd2lraS9JPQpQ eXRob24tTm90ZWJvb2std2FzLWx1bmNoZWQtd2l0aG91dC1hdXRoZW50aWNhdGlvbicgdGFyZ2V0 PTNEJ19ibGFuayc+TW9yZSA9CmRldGFpbHMgLi4uPC9hPiIsCiAgICAgICAgICJTZWN1cml0eSB3 YXJuaW5nIiwKICAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAs ICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KICAgICApOworICAgICovCiB9Cj0yMAo9MjAKCmRpZmYg LXIgYTdiOWViM2RmMzdkMDQxNDU4Mzk3NTY0MmYzYTBiZTAxYjMxNDZiMSAtciAxMjk0NTdkMGNj NDE5M2E2Yjk3MmE5OT0KYzIwYmM5YmU2ZDg5MTRhOGUgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1 YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTE5LDYgKzE5LDgg QEAKICAgICAiIiIKICAgICBzZWxmLmF0dHIudml6X2lkID0zRCBuYW1lCiAgICAgc2VsZi5hdHRy Lmhpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5p ZCApCisgICAgc2VsZi5hdHRyLnByb3h5X3JlcXVlc3QgPTNEIHRyYW5zLmFwcC5wcm94eV9tYW5h Z2VyLnNldHVwX3Byb3h5KCB0cmFucz0KICkKKyAgICBzZWxmLmF0dHIucHJveHlfdXJsID0zRCBz ZWxmLmF0dHIucHJveHlfcmVxdWVzdFsgJ3Byb3h5X3VybCcgXQogICAgIHNlbGYuYXR0ci5nYWxh eHlfY29uZmlnID0zRCB0cmFucy5hcHAuY29uZmlnCiAgICAgc2VsZi5hdHRyLmdhbGF4eV9yb290 X2RpciA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuYXR0ci5nYWxheHlfY29uZmlnLj0Kcm9vdCkK ICAgICBzZWxmLmF0dHIucm9vdCA9M0QgaC51cmxfZm9yKCIvIikKQEAgLTMzLDggKzM1LDcgQEAK ICAgICBzZWxmLmF0dHIuUEFTU1dPUkRfQVVUSCA9M0Qgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0 Ym9vbGVhbigibWFpbiIsICJwPQphc3N3b3JkX2F1dGgiKQogICAgIHNlbGYuYXR0ci5BUEFDSEVf VVJMUyA9M0Qgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJhcGE9CmNo ZV91cmxzIikKICAgICBzZWxmLmF0dHIuU1NMX1VSTFMgPTNEIHNlbGYuYXR0ci52aXpfY29uZmln LmdldGJvb2xlYW4oIm1haW4iLCAic3NsIikKLSAgICBzZWxmLmF0dHIuUE9SVCA9M0Qgc2VsZi5w cm94eV9yZXF1ZXN0X3BvcnQoKQotCisgICAgc2VsZi5hdHRyLlBPUlQgPTNEIHNlbGYuYXR0ci5w cm94eV9yZXF1ZXN0WyAncHJveGllZF9wb3J0JyBdCiAgICAgc2VsZi5hdHRyLkhPU1QgPTNEIHJl cXVlc3QuaG9zdC5yc3BsaXQoJzonLCAxKVswXQogJT48LyVkZWY+CkBAIC05NywzMiArOTgsNiBA QAogICAlPjwvJWRlZj4KPTIwCi08JWRlZiBuYW1lPTNEInByb3h5X3JlcXVlc3RfcG9ydCgpIj4K LTwlCi0gICAgIiIiCi0gICAgICAgIFJlZmFjdG9yIG9mIG91ciBwb3J0IGdldHRpbmcuLi5ldmVu dHVhbGx5IHRoaXMgd2lsbCBiZSByZXBsYWNlZCB3aT0KdGggYW4gQVBJIGNhbGwgaW5zdGVhZC4K LSAgICAiIiIKLSAgICAjIEZpbmQgYWxsIHBvcnRzIHRoYXQgYXJlIGFscmVhZHkgb2NjdXBpZWQK LSAgICBjbWRfbmV0c3RhdCA9M0Qgc2hsZXguc3BsaXQoIm5ldHN0YXQgLXR1bG4iKQotICAgIHAx ID0zRCBzdWJwcm9jZXNzLlBvcGVuKGNtZF9uZXRzdGF0LCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJ UEUpCi0KLSAgICBvY2N1cGllZF9wb3J0cyA9M0Qgc2V0KCkKLSAgICBmb3IgbGluZSBpbiBwMS5z dGRvdXQucmVhZCgpLnNwbGl0KCdcbicpOgotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3Rj cCcpIG9yIGxpbmUuc3RhcnRzd2l0aCgndGNwNicpOgotICAgICAgICAgICAgY29sID0zRCBsaW5l LnNwbGl0KCkKLSAgICAgICAgICAgIGxvY2FsX2FkZHJlc3MgPTNEIGNvbFszXQotICAgICAgICAg ICAgbG9jYWxfcG9ydCA9M0QgbG9jYWxfYWRkcmVzcy5zcGxpdCgnOicpWy0xXQotICAgICAgICAg ICAgb2NjdXBpZWRfcG9ydHMuYWRkKCBpbnQobG9jYWxfcG9ydCkgKQotCi0gICAgIyBHZW5lcmF0 ZSByYW5kb20gZnJlZSBwb3J0IG51bWJlciBmb3Igb3VyIGRvY2tlciBjb250YWluZXIKLSAgICB3 aGlsZSBUcnVlOgotICAgICAgICBwb3J0ID0zRCByYW5kb20ucmFuZHJhbmdlKDEwMDAwLDE1MDAw KQotICAgICAgICBpZiBwb3J0IG5vdCBpbiBvY2N1cGllZF9wb3J0czoKLSAgICAgICAgICAgIGJy ZWFrCi0gICAgcmV0dXJuIHBvcnQKLSU+Ci08LyVkZWY+Ci0KIDwlZGVmIG5hbWU9M0QiZ2VuZXJh dGVfaGV4KGxlbmd0aCkiPjwlCiAgICAgIiIiCkBAIC0xNjEsMjYgKzEzNiwxMCBAQAo9MjAKICAg ICAgICAgVGhlcmUgYXJlIHNldmVyYWwgdmFyaWFibGVzIGFjY2Vzc2libGUgdG8gdGhlIHVzZXI6 Cj0yMAotICAgICAgICAgICAgLSAke1BST1RPfSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggcHJvdG9j b2wgKGh0dHAvaHR0cHMpCi0gICAgICAgICAgICAtICR7SE9TVH0gd2lsbCBiZSByZXBsYWNlZCB3 aXRoIHRoZSBjb3JyZWN0IGhvc3RuYW1lCisgICAgICAgICAgICAtICR7UFJPWFlfVVJMfSB3aWxs IGJlIHJlcGxhY2VkIHdpdGggZHluYW1pY2FsbHkgY3JlYXRlIHByb3h5CiAgICAgICAgICAgICAt ICR7UE9SVH0gd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBwb3J0IHRoZSBkb2NrZXIgaW1hZ2Ug aXMgYT0KdHRhY2hlZCB0bwotCi0gICAgICAgIEluIHRoZSBjYXNlIHRoYXQgYGFwYWNoZV91cmxz ID0zRCBGYWxzZWAsIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBITz0KU1QgaGFzIGEgUE9SVCBhcHBl bmVkZWQgdG8KLSAgICAgICAgaXQsIHNvIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSB0byB0ZW1wbGF0 ZSAyeCB1cmxzLgogICAgICIiIgotICAgICMgRmlndXJlIG91dCBvdXIgc3Vic3RpdHV0aW9ucwot ICAgIGlmIHNlbGYuYXR0ci5TU0xfVVJMUzoKLSAgICAgICAgcHJvdG9jb2wgPTNEICdodHRwcycK LSAgICBlbHNlOgotICAgICAgICBwcm90b2NvbCA9M0QgJ2h0dHAnCi0KLSAgICBpZiBub3Qgc2Vs Zi5hdHRyLkFQQUNIRV9VUkxTOgotICAgICAgICAjIElmIHRoZXkgYXJlIG5vdCB1c2luZyBhcGFj aGUgVVJMcywgdGhhdCBpbXBsaWVzIHRoZXJlJ3MgYSBwb3J0IGE9CnR0YWNoZWQgdG8gdGhlIGhv c3QKLSAgICAgICAgIyBzdHJpbmcsIHRodXMgd2UgcmVwbGFjZSBqdXN0IHRoZSBmaXJzdCBpbnN0 YW5jZSBvZiBob3N0IHRoYXQgd2UgPQpzZWUuCi0gICAgICAgIHVybF90ZW1wbGF0ZSA9M0QgdXJs X3RlbXBsYXRlLnJlcGxhY2UoJyR7SE9TVH0nLCAnJHtIT1NUfToke1BPUlR9Jz0KLCAxKQotCi0g ICAgdXJsID0zRCB1cmxfdGVtcGxhdGUucmVwbGFjZSgnJHtQUk9UT30nLCBwcm90b2NvbCkgXAot ICAgICAgICAgICAgLnJlcGxhY2UoJyR7SE9TVH0nLCBzZWxmLmF0dHIuSE9TVCkgXAorICAgIHVy bCA9M0QgdXJsX3RlbXBsYXRlLnJlcGxhY2UoJyR7UFJPWFlfVVJMfScsIHN0cihzZWxmLmF0dHIu cHJveHlfdXJsKSk9CiBcCiAgICAgICAgICAgICAucmVwbGFjZSgnJHtQT1JUfScsIHN0cihzZWxm LmF0dHIuUE9SVCkpCiAgICAgcmV0dXJuIHVybAogJT4KCmRpZmYgLXIgYTdiOWViM2RmMzdkMDQx NDU4Mzk3NTY0MmYzYTBiZTAxYjMxNDZiMSAtciAxMjk0NTdkMGNjNDE5M2E2Yjk3MmE5OT0KYzIw YmM5YmU2ZDg5MTRhOGUgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1w bGF0ZXMvaXB5dGhvbi5tPQpha28KLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpAQCAtMzAsOCArMzAsOCBA QAo9MjAKICMjIEdlbmVyYWwgSUUgc3BlY2lmaWMKICMgQWNjZXNzIFVSTHMgZm9yIHRoZSBub3Rl Ym9vayBmcm9tIHdpdGhpbiBnYWxheHkuCi1ub3RlYm9va19hY2Nlc3NfdXJsID0zRCBpZS51cmxf dGVtcGxhdGUoJyR7UFJPVE99Oi8vJHtIT1NUfS9pcHl0aG9uLyR7UE9SVD0KfS9ub3RlYm9va3Mv aXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmInKQotbm90ZWJvb2tfbG9naW5fdXJsID0zRCBp ZS51cmxfdGVtcGxhdGUoJyR7UFJPVE99Oi8vJHtIT1NUfS9pcHl0aG9uLyR7UE9SVH09Ci9sb2dp bj9uZXh0PTNEJTJGaXB5dGhvbiUyRiR7UE9SVH0lMkZ0cmVlJykKK25vdGVib29rX2FjY2Vzc191 cmwgPTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9YWV9VUkx9L2lweXRob24vJHtQT1JUfS9ub3Rl PQpib29rcy9pcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYicpCitub3RlYm9va19sb2dpbl91 cmwgPTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9YWV9VUkx9L2lweXRob24vJHtQT1JUfS9sb2dp bj0KP25leHQ9M0QlMkZpcHl0aG9uJTJGJHtQT1JUfSUyRnRyZWUnKQo9MjAKIGRvY2tlcl9jbWQg PTNEIGllLmRvY2tlcl9jbWQodGVtcF9kaXIpCiBzdWJwcm9jZXNzLmNhbGwoZG9ja2VyX2NtZCwg c2hlbGw9M0RUcnVlKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvY29tbWl0cy9mZTIxYmQ0MmYzNWMvCkNoYW5nZXNldDogICBmZTIxYmQ0MmYzNWMKVXNlcjog ICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApT dW1tYXJ5OiAgICAgVXBkYXRlZCBtb3JlIGNvcnJlY3QgZGlzY292ZXJ5IG9mIEdhbGF4eSBjb25m aWcgZmlsZS4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAxMjk0NTdkMGNjNDE5M2E2Yjk3 MmE5OWMyMGJjOWJlNmQ4OTE0YThlIC1yIGZlMjFiZDQyZjM1YzM3Y2ViMGE4MzI4PQoxMjA1M2I4 ZjI3N2E0NjQ2YyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRl cy9pZS5tYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vdGVt cGxhdGVzL2llLm1ha28KKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvaWUubWFrbwpAQCAtODcsNyArODcsOSBAQAogICAgICAgICBHZXQgcG9ydCBn YWxheHkgaXMgcnVubmluZyBvbiAoaWYgcnVubmluZyB1bmRlciBwYXN0ZXIpCiAgICAgIiIiCiAg ICAgY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQnOiAnODA4 MCd9KQotICAgIGNvbmZpZy5yZWFkKCBvcy5wYXRoLmpvaW4oIGdhbGF4eV9yb290X2RpciwgJ3Vu aXZlcnNlX3dzZ2kuaW5pJyApICkKKyAgICBjb25maWdfZmlsZSA9M0QgZ2FsYXh5X2NvbmZpZy5j b25maWdfZmlsZQorICAgIGlmIGNvbmZpZ19maWxlOgorICAgICAgICBjb25maWcucmVhZCggY29u ZmlnX2ZpbGUgKQo9MjAKICAgICAjIHVXU0dJIGdhbGF4eSBpbnN0YWxsYXRpb25zIGRvbid0IHVz ZSBwYXN0ZXIgYW5kIG9ubHkgc3BlYWsgdVdTR0kgbm90PQogaHR0cAogICAgIHRyeToKCgpodHRw czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNDM0ODYxOGI0 YjhkLwpDaGFuZ2VzZXQ6ICAgNDM0ODYxOGI0YjhkClVzZXI6ICAgICAgICBqbWNoaWx0b24KRGF0 ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIEltcGxlbWVu dCBnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsIGNvbmZpZyBvcHRpb24uLi4KQWxsb3dzIEdhbGF4 eSB0byBrbm93IGhvdyB0byBzcGVjaWZ5IG90aGVyIGNvbXBvbmVudHMgc2hvdWxkIGNvbW11bmlj YXRlIHdpPQp0aCBpdHMgQVBJLiBVc2VkIGltbWVkaWF0ZWx5IGFzIGEgcmVhc29uYWJsZSBkZWZh dWx0IGZvciBQdWxzYXIgTVEgbW9kZSBhbmQ9CiB3aWxsIGJlIHVzZWQgbGF0ZXIgYnkgdGhlIERv Y2tlciBJUHl0aG9uIHN0dWZmIGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlID0KQVBJIGFuZCBm b3IgdGhpcyBjYXJkIGh0dHBzOi8vdHJlbGxvLmNvbS9jL2hMNE5Zc1NwLgpBZmZlY3RlZCAjOiAg NCBmaWxlcwoKZGlmZiAtciBmZTIxYmQ0MmYzNWMzN2NlYjBhODMyODEyMDUzYjhmMjc3YTQ2NDZj IC1yIDQzNDg2MThiNGI4ZGQ1ZjBjNmQ2Y2NhPQo1OTVlMWZmMGFmZmI2YjNlMSBjb25maWcvZ2Fs YXh5LmluaS5zYW1wbGUKLS0tIGEvY29uZmlnL2dhbGF4eS5pbmkuc2FtcGxlCisrKyBiL2NvbmZp Zy9nYWxheHkuaW5pLnNhbXBsZQpAQCAtNDIxLDYgKzQyMSwxMSBAQAogIyAtICRpc284NjAxIChj b21wbGV0ZSBmb3JtYXQgc3RyaW5nIGFzIHNwZWNpZmllZCBieSBJU08gODYwMSBpbnRlcm5hdGlv bmE9Cmwgc3RhbmRhcmQpLgogIyBwcmV0dHlfZGF0ZXRpbWVfZm9ybWF0ID0zRCAkbG9jYWxlIChV VEMpCj0yMAorIyBVUkwgKHdpdGggc2NoZW1hIGh0dHAvaHR0cHMpIG9mIHRoZSBHYWxheHkgaW5z dGFuY2UgYXMgYWNjZXNzaWJsZSB3aXRoaW49CiB5b3VyIGxvY2FsCisjIG5ldHdvcmsgLSBpZiBz cGVjaWZpZWQgdXNlZCBhcyBhIGRlZmF1bHQgYnkgcHVsc2FyIGZpbGUgc3RhZ2luZyBhbmQgSVB5 dD0KaG9uIGRvY2tlcgorIyBjb250YWluZXIgZm9yIGNvbW11bmljYXRpbmcgYmFjayB3aXRoIEdh bGF4eSB2aWEgdGhlIEFQSS4KKyNnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsID0zRCBodHRwOi8v bG9jYWxob3N0OjgwODAKKwogIyBUaGUgVVJMIG9mIHRoZSBwYWdlIHRvIGRpc3BsYXkgaW4gR2Fs YXh5J3MgbWlkZGxlIHBhbmUgd2hlbiBsb2FkZWQuIFRoaXM9CiBjYW4gYmU9MjAKICMgYW4gYWJz b2x1dGUgb3IgcmVsYXRpdmUgVVJMLgogI3dlbGNvbWVfdXJsID0zRCAvc3RhdGljL3dlbGNvbWUu aHRtbAoKZGlmZiAtciBmZTIxYmQ0MmYzNWMzN2NlYjBhODMyODEyMDUzYjhmMjc3YTQ2NDZjIC1y IDQzNDg2MThiNGI4ZGQ1ZjBjNmQ2Y2NhPQo1OTVlMWZmMGFmZmI2YjNlMSBjb25maWcvam9iX2Nv bmYueG1sLnNhbXBsZV9hZHZhbmNlZAotLS0gYS9jb25maWcvam9iX2NvbmYueG1sLnNhbXBsZV9h ZHZhbmNlZAorKysgYi9jb25maWcvam9iX2NvbmYueG1sLnNhbXBsZV9hZHZhbmNlZApAQCAtNTAs NyArNTAsOSBAQAogICAgICAgICAgIDwhLS0gQU1RUCBVUkwgdG8gY29ubmVjdCB0by4gLS0+PHBh cmFtIGlkPTNEImFtcXBfdXJsIj5hbXFwOi8vZ3U9CmVzdDpndWVzdEBsb2NhbGhvc3Q6NTY3Mi8v PC9wYXJhbT48IS0tIFVSTCByZW1vdGUgUHVsc2FyIGFwcHMgc2hvdWxkIHRyYW5zZj0KZXIgZmls ZXMgdG8gdGhpcyBHYWxheHkKLSAgICAgICAgICAgICAgIGluc3RhbmNlIHRvL2Zyb20uIC0tPgor ICAgICAgICAgICAgICAgaW5zdGFuY2UgdG8vZnJvbS4gVGhpcyBjYW4gYmUgdW5zcGVjaWZpZWQv ZW1wdHkgaWYKKyAgICAgICAgICAgICAgIGdhbGF4eV9pbmZyYXN0cnVjdHVyZV91cmwgaXMgc2V0 IGluIGdhbGF4eS5pbmkuCisgICAgICAgICAgLS0+PHBhcmFtIGlkPTNEImdhbGF4eV91cmwiPmh0 dHA6Ly9sb2NhbGhvc3Q6ODA4MDwvcGFyYW0+PCEtLSBQdT0KbHNhciBqb2IgbWFuYWdlciB0byBj b21tdW5pY2F0ZSB3aXRoIChzZWUgUHVsc2FyCiAgICAgICAgICAgICAgICBkb2NzIGZvciBpbmZv cm1hdGlvbiBvbiBqb2IgbWFuYWdlcnMpLiAtLT4KCmRpZmYgLXIgZmUyMWJkNDJmMzVjMzdjZWIw YTgzMjgxMjA1M2I4ZjI3N2E0NjQ2YyAtciA0MzQ4NjE4YjRiOGRkNWYwYzZkNmNjYT0KNTk1ZTFm ZjBhZmZiNmIzZTEgbGliL2dhbGF4eS9jb25maWcucHkKLS0tIGEvbGliL2dhbGF4eS9jb25maWcu cHkKKysrIGIvbGliL2dhbGF4eS9jb25maWcucHkKQEAgLTE4LDYgKzE4LDggQEAKIGZyb20gZ2Fs YXh5LnV0aWwuZGJrZXlzIGltcG9ydCBHZW5vbWVCdWlsZHMKIGZyb20gZ2FsYXh5IGltcG9ydCBl Z2dzCj0yMAoraW1wb3J0IENvbmZpZ1BhcnNlcgorCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2Vy KCBfX25hbWVfXyApCj0yMAo9MjAKQEAgLTI5Niw2ICsyOTgsMjMgQEAKICAgICAgICAgZm9yIHNl Y3Rpb24gaW4gZ2xvYmFsX2NvbmZfcGFyc2VyLnNlY3Rpb25zKCk6CiAgICAgICAgICAgICBpZiBz ZWN0aW9uLnN0YXJ0c3dpdGgoJ3NlcnZlcjonKToKICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl cl9uYW1lcy5hcHBlbmQoc2VjdGlvbi5yZXBsYWNlKCdzZXJ2ZXI6JywgJycsIDEpKQorCisgICAg ICAgICMgRGVmYXVsdCBVUkwgKHdpdGggc2NoZW1hIGh0dHAvaHR0cHMpIG9mIHRoZSBHYWxheHkg aW5zdGFuY2Ugd2l0aD0KaW4gdGhlCisgICAgICAgICMgbG9jYWwgbmV0d29yayAtIHVzZWQgdG8g cmVtb3RlbHkgY29tbXVuaWNhdGUgd2l0aCB0aGUgR2FsYXh5IEFQSS4KKyAgICAgICAgZ2FsYXh5 X2luZnJhc3RydWN0dXJlX3VybCA9M0Qga3dhcmdzLmdldCggJ2dhbGF4eV9pbmZyYXN0cnVjdHVy ZV91PQpybCcsIE5vbmUgKQorICAgICAgICBnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsX3NldCA9 M0QgVHJ1ZQorICAgICAgICBpZiBnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsIGlzIE5vbmU6Cisg ICAgICAgICAgICAjIFN0aWxsIHByb3ZpZGUgYSBkZWZhdWx0IGJ1dCBpbmRpY2F0ZSBpdCB3YXMg bm90IGV4cGxpY2l0bHkgcz0KZXQKKyAgICAgICAgICAgICMgc28gZGVwZW5kZW5kaW5nIG9uIHRo ZSBjb250ZXh0IGEgYmV0dGVyIGRlZmF1bHQgY2FuIGJlIHVzZWQgKAorICAgICAgICAgICAgIyBy ZXF1ZXN0IHVybCBpbiBhIHdlYiB0aHJlYWQsIERvY2tlciBwYXJlbnQgaW4gSUUgc3R1ZmYsIGV0 Yy49Ci4uKQorICAgICAgICAgICAgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybCA9M0QgImh0dHA6 Ly9sb2NhbGhvc3QiCisgICAgICAgICAgICBwb3J0ID0zRCBzZWxmLmd1ZXNzX2dhbGF4eV9wb3J0 KCkKKyAgICAgICAgICAgIGlmIHBvcnQ6CisgICAgICAgICAgICAgICAgZ2FsYXh5X2luZnJhc3Ry dWN0dXJlX3VybCArPTNEICI6JXMiICUgKHBvcnQpCisgICAgICAgICAgICBnYWxheHlfaW5mcmFz dHJ1Y3R1cmVfdXJsX3NldCA9M0QgRmFsc2UKKyAgICAgICAgc2VsZi5nYWxheHlfaW5mcmFzdHJ1 Y3R1cmVfdXJsID0zRCBnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsCisgICAgICAgIHNlbGYuZ2Fs YXh5X2luZnJhc3RydWN0dXJlX3VybF9zZXQgPTNEIGdhbGF4eV9pbmZyYXN0cnVjdHVyZV91cmxf cz0KZXQKKwogICAgICAgICAjIFN0b3JlIGFkdmFuY2VkIGpvYiBtYW5hZ2VtZW50IGNvbmZpZwog ICAgICAgICBzZWxmLmpvYl9tYW5hZ2VyID0zRCBrd2FyZ3MuZ2V0KCdqb2JfbWFuYWdlcicsIHNl bGYuc2VydmVyX25hbWUpLnM9CnRyaXAoKQogICAgICAgICBzZWxmLmpvYl9oYW5kbGVycyA9M0Qg WyB4LnN0cmlwKCkgZm9yIHggaW4ga3dhcmdzLmdldCgnam9iX2hhbmRsZXI9CnMnLCBzZWxmLnNl cnZlcl9uYW1lKS5zcGxpdCgnLCcpIF0KQEAgLTU0OCw2ICs1NjcsMTkgQEAKICAgICAgICAgIiIi CiAgICAgICAgIHJldHVybiByZXNvbHZlX3BhdGgoIHBhdGgsIHNlbGYucm9vdCApCj0yMAorICAg IGRlZiBndWVzc19nYWxheHlfcG9ydChzZWxmKToKKyAgICAgICAgIyBDb2RlIGRlcml2ZWQgZnJv bSBJUHl0aG9uIHdvcmsgaWUubWFrbworICAgICAgICBjb25maWcgPTNEIENvbmZpZ1BhcnNlci5T YWZlQ29uZmlnUGFyc2VyKHsncG9ydCc6ICc4MDgwJ30pCisgICAgICAgIGlmIHNlbGYuY29uZmln X2ZpbGU6CisgICAgICAgICAgICBjb25maWcucmVhZCggc2VsZi5jb25maWdfZmlsZSApCisKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgcG9ydCA9M0QgY29uZmlnLmdldGludCgnc2VydmVyOiVz JyAlIHNlbGYuc2VydmVyX25hbWUsICdwb3J0JykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAg ICAgIyB1V1NHSSBnYWxheHkgaW5zdGFsbGF0aW9ucyBkb24ndCB1c2UgcGFzdGVyIGFuZCBvbmx5 IHNwZWFrIHU9CldTR0kgbm90IGh0dHAKKyAgICAgICAgICAgIHBvcnQgPTNEIE5vbmUKKyAgICAg ICAgcmV0dXJuIHBvcnQKKwo9MjAKIGRlZiBnZXRfZGF0YWJhc2VfZW5naW5lX29wdGlvbnMoIGt3 YXJncywgbW9kZWxfcHJlZml4PTNEJycgKToKICAgICAiIiIKCmRpZmYgLXIgZmUyMWJkNDJmMzVj MzdjZWIwYTgzMjgxMjA1M2I4ZjI3N2E0NjQ2YyAtciA0MzQ4NjE4YjRiOGRkNWYwYzZkNmNjYT0K NTk1ZTFmZjBhZmZiNmIzZTEgbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvcHVsc2FyLnB5Ci0tLSBh L2xpYi9nYWxheHkvam9icy9ydW5uZXJzL3B1bHNhci5weQorKysgYi9saWIvZ2FsYXh5L2pvYnMv cnVubmVycy9wdWxzYXIucHkKQEAgLTUzLDcgKzUzLDcgQEAKICAgICApLAogICAgIGdhbGF4eV91 cmw9M0RkaWN0KAogICAgICAgICBtYXA9M0RzcGVjcy50b19zdHJfb3Jfbm9uZSwKLSAgICAgICAg ZGVmYXVsdD0zRERFRkFVTFRfR0FMQVhZX1VSTCwKKyAgICAgICAgZGVmYXVsdD0zRE5vbmUsCiAg ICAgKSwKICAgICBtYW5hZ2VyPTNEZGljdCgKICAgICAgICAgbWFwPTNEc3BlY3MudG9fc3RyX29y X25vbmUsCkBAIC0xMjksNiArMTI5LDggQEAKICAgICAgICAgc3VwZXIoIFB1bHNhckpvYlJ1bm5l ciwgc2VsZiApLl9faW5pdF9fKCBhcHAsIG53b3JrZXJzLCBydW5uZXJfcGFyPQphbV9zcGVjcz0z RFBVTFNBUl9QQVJBTV9TUEVDUywgKiprd2RzICkKICAgICAgICAgc2VsZi5faW5pdF93b3JrZXJf dGhyZWFkcygpCiAgICAgICAgIGdhbGF4eV91cmwgPTNEIHNlbGYucnVubmVyX3BhcmFtcy5nYWxh eHlfdXJsCisgICAgICAgIGlmIG5vdCBnYWxheHlfdXJsOgorICAgICAgICAgICAgZ2FsYXh5X3Vy bCA9M0QgYXBwLmNvbmZpZy5nYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsCiAgICAgICAgIGlmIGdh bGF4eV91cmw6CiAgICAgICAgICAgICBnYWxheHlfdXJsID0zRCBnYWxheHlfdXJsLnJzdHJpcCgi LyIpCiAgICAgICAgIHNlbGYuZ2FsYXh5X3VybCA9M0QgZ2FsYXh5X3VybAoKCmh0dHBzOi8vYml0 YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wZWFmMjg3MzFjYjMvCkNo YW5nZXNldDogICAwZWFmMjg3MzFjYjMKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAg ICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgVXBkYXRlIGllLm1ha28g dG8gdXNlIGdhbGF4eV9pbmZyYXN0cnVjdHVyZV91cmwgaWYgYXZhaWxhYmxlLi4uCkFsc28gdXNl IHRoZSBtZXRob2QgZ3Vlc3NfZ2FsYXh5X3BvcnQgb24gR2FsYXh5J3MgY29uZmlnIG9iamVjdCB0 aGF0IHdhcyBtbz0KdmVkIHRoZXJlIGZyb20gaWUubWFrbyBpbiBhIHByZXZpb3VzIEdhbGF4eSBj b21taXQuCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgNDM0ODYxOGI0YjhkZDVmMGM2ZDZj Y2E1OTVlMWZmMGFmZmI2YjNlMSAtciAwZWFmMjg3MzFjYjNjZDE4YjM5OTJjOT0KZGI5N2Y1NDI5 Y2NmNzNkZDEgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMv aWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBs YXRlcy9pZS5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v dGVtcGxhdGVzL2llLm1ha28KQEAgLTQ5LDE1ICs0OSwxOCBAQAogICAgICIiIgogICAgIGNvbmZf ZmlsZSA9M0QgewogICAgICAgICAnaGlzdG9yeV9pZCc6IHNlbGYuYXR0ci5oaXN0b3J5X2lkLAot ICAgICAgICAnZ2FsYXh5X3VybCc6IHJlcXVlc3QuYXBwbGljYXRpb25fdXJsLnJzdHJpcCgnLycp ICsgJy8nLAogICAgICAgICAnYXBpX2tleSc6IGdldF9hcGlfa2V5KCksCiAgICAgICAgICdyZW1v dGVfaG9zdCc6IHJlcXVlc3QucmVtb3RlX2FkZHIsCi0gICAgICAgICdnYWxheHlfcGFzdGVyX3Bv cnQnOiBzZWxmLmdldF9nYWxheHlfcGFzdGVyX3BvcnQoc2VsZi5hdHRyLmdhbGF4eT0KX3Jvb3Rf ZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuYXR0ci5nYWxheHk9Cl9jb25maWcpLAogICAgICAgICAnZG9ja2VyX3BvcnQn OiBzZWxmLmF0dHIuUE9SVCwKICAgICAgICAgJ2NvcnNfb3JpZ2luJzogcmVxdWVzdC5ob3N0X3Vy bCwKICAgICB9Cj0yMAorICAgIGlmIHNlbGYuYXR0ci5nYWxheHlfY29uZmlnLmdhbGF4eV9pbmZy YXN0cnVjdHVyZV91cmxfc2V0OgorICAgICAgICBjb25mX2ZpbGVbJ2dhbGF4eV91cmwnXSA9M0Qg c2VsZi5hdHRyLmdhbGF4eV9jb25maWcuZ2FsYXh5X2luZnJhc3Q9CnJ1Y3R1cmVfdXJsLnJzdHJp cCgnLycpICsgJy8nCisgICAgZWxzZToKKyAgICAgICAgY29uZl9maWxlWydnYWxheHlfdXJsJ10g PTNEIHJlcXVlc3QuYXBwbGljYXRpb25fdXJsLnJzdHJpcCgnLycpICsgPQonLycKKyAgICAgICAg Y29uZl9maWxlWydnYWxheHlfcGFzdGVyX3BvcnQnXSA9M0Qgc2VsZi5hdHRyLmdhbGF4eV9jb25m aWcuZ3Vlc3NfPQpnYWxheHlfcG9ydCgpCisKICAgICBpZiBzZWxmLmF0dHIuUEFTU1dPUkRfQVVU SDoKICAgICAgICAgIyBHZW5lcmF0ZSBhIHJhbmRvbSBwYXNzd29yZCArIHNhbHQKICAgICAgICAg bm90ZWJvb2tfcHdfc2FsdCA9M0Qgc2VsZi5nZW5lcmF0ZV9wYXNzd29yZChsZW5ndGg9M0QxMikK QEAgLTgxLDI1ICs4NCw2IEBACiAlPjwvJWRlZj4KPTIwCi08JWRlZiBuYW1lPTNEImdldF9nYWxh eHlfcGFzdGVyX3BvcnQoZ2FsYXh5X3Jvb3RfZGlyLCBnYWxheHlfY29uZmlnKSI+Ci0gIDwlCi0g ICAgIiIiCi0gICAgICAgIEdldCBwb3J0IGdhbGF4eSBpcyBydW5uaW5nIG9uIChpZiBydW5uaW5n IHVuZGVyIHBhc3RlcikKLSAgICAiIiIKLSAgICBjb25maWcgPTNEIENvbmZpZ1BhcnNlci5TYWZl Q29uZmlnUGFyc2VyKHsncG9ydCc6ICc4MDgwJ30pCi0gICAgY29uZmlnX2ZpbGUgPTNEIGdhbGF4 eV9jb25maWcuY29uZmlnX2ZpbGUKLSAgICBpZiBjb25maWdfZmlsZToKLSAgICAgICAgY29uZmln LnJlYWQoIGNvbmZpZ19maWxlICkKLQotICAgICMgdVdTR0kgZ2FsYXh5IGluc3RhbGxhdGlvbnMg ZG9uJ3QgdXNlIHBhc3RlciBhbmQgb25seSBzcGVhayB1V1NHSSBub3Q9CiBodHRwCi0gICAgdHJ5 OgotICAgICAgICBwb3J0ID0zRCBjb25maWcuZ2V0aW50KCdzZXJ2ZXI6JXMnICUgZ2FsYXh5X2Nv bmZpZy5zZXJ2ZXJfbmFtZSwgJ3A9Cm9ydCcpCi0gICAgZXhjZXB0OgotICAgICAgICBwb3J0ID0z RCBOb25lCi0gICAgcmV0dXJuIHBvcnQKLSAgJT4KLTwvJWRlZj4KLQogPCVkZWYgbmFtZT0zRCJn ZW5lcmF0ZV9oZXgobGVuZ3RoKSI+PCUKICAgICAiIiIKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcv Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvYWE2NDFlN2Y4NWQyLwpDaGFuZ2VzZXQ6ICAg YWE2NDFlN2Y4NWQyClVzZXI6ICAgICAgICBqbWNoaWx0b24KRGF0ZTogICAgICAgIDIwMTQtMTAt MTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFJlZmFjdG9yIHByb3h5IEphdmFTY3JpcHQg YWhlYWQgb2YgZml4ZXMuCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgMGVhZjI4NzMxY2Iz Y2QxOGIzOTkyYzlkYjk3ZjU0MjljY2Y3M2RkMSAtciBhYTY0MWU3Zjg1ZDI3ZWJhOGE2MGE1MD0K NzA0ZDhkYTRjZDJjNDMxNzAgbGliL2dhbGF4eS93ZWIvcHJveHkvanMvbGliL21hcHBlci5qcwot LS0gYS9saWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvbWFwcGVyLmpzCisrKyBiL2xpYi9nYWxh eHkvd2ViL3Byb3h5L2pzL2xpYi9tYXBwZXIuanMKQEAgLTEsMzMgKzEsMzQgQEAKIHZhciBmcyA9 M0QgcmVxdWlyZSgnZnMnKTsKPTIwCit2YXIgdXBkYXRlRnJvbUpzb24gPTNEIGZ1bmN0aW9uKHBh dGgsIG1hcCkgeworICAgIHZhciBjb250ZW50ID0zRCBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0 ZjgnKTsKKyAgICB2YXIga2V5VG9TZXNzaW9uID0zRCBKU09OLnBhcnNlKGNvbnRlbnQpOworICAg IHZhciBuZXdTZXNzaW9ucyA9M0Qge307CisgICAgZm9yKHZhciBrZXkgaW4ga2V5VG9TZXNzaW9u KSB7CisgICAgICAgIHZhciBob3N0QW5kUG9ydCA9M0Qga2V5LnNwbGl0KCI6Iik7CisgICAgICAg IC8vICdob3N0JzogaG9zdEFuZFBvcnRbMF0sCisgICAgICAgIG5ld1Nlc3Npb25zW2tleVRvU2Vz c2lvbltrZXldXSA9M0Qgeyd0YXJnZXQnOiB7J2hvc3QnOiBob3N0QW5kUG9ydD0KWzBdLCAncG9y dCc6IHBhcnNlSW50KGhvc3RBbmRQb3J0WzFdKX19OworICAgIH0KKyAgICBmb3IodmFyIG9sZFNl c3Npb24gaW4gbWFwKSB7CisgICAgICAgIGlmKCEob2xkU2Vzc2lvbiBpbiBuZXdTZXNzaW9ucykp IHsKKyAgICAgICAgICAgIGRlbGV0ZSBtYXBbIG9sZFNlc3Npb24gXTsKKyAgICAgICAgfQorICAg IH0KKyAgICBmb3IodmFyIG5ld1Nlc3Npb24gaW4gbmV3U2Vzc2lvbnMpIHsKKyAgICAgICAgbWFw W25ld1Nlc3Npb25dID0zRCBuZXdTZXNzaW9uc1tuZXdTZXNzaW9uXTsKKyAgICB9Cit9CisKPTIw CiB2YXIgbWFwRm9yID0zRCBmdW5jdGlvbihwYXRoKSB7Ci0JdmFyIG1hcCA9M0Qge307Ci0KLQl2 YXIgbG9hZE1hcCA9M0QgZnVuY3Rpb24oKSB7Ci0gCQl2YXIgY29udGVudCA9M0QgZnMucmVhZEZp bGVTeW5jKHBhdGgsICd1dGY4Jyk7Ci0gCQl2YXIga2V5VG9TZXNzaW9uID0zRCBKU09OLnBhcnNl KGNvbnRlbnQpOwotIAkJdmFyIG5ld1Nlc3Npb25zID0zRCB7fTsKLSAJCWZvcih2YXIga2V5IGlu IGtleVRvU2Vzc2lvbikgewotIAkJCXZhciBob3N0QW5kUG9ydCA9M0Qga2V5LnNwbGl0KCI6Iik7 Ci0gCQkJLy8gJ2hvc3QnOiBob3N0QW5kUG9ydFswXSwKLSAJCQluZXdTZXNzaW9uc1trZXlUb1Nl c3Npb25ba2V5XV0gPTNEIHsndGFyZ2V0Jzogeydob3N0JzogaG9zdEFuZFBvcnRbMF0sPQogJ3Bv cnQnOiBwYXJzZUludChob3N0QW5kUG9ydFsxXSl9fTsKLSAJCX0KLQkJZm9yKHZhciBvbGRTZXNz aW9uIGluIG1hcCkgewotCQkJaWYoIShvbGRTZXNzaW9uIGluIG5ld1Nlc3Npb25zKSkgewotCQkJ CWRlbGV0ZSBtYXBbIG9sZFNlc3Npb24gXTsKLQkJCX0KLQkJfQotCQlmb3IodmFyIG5ld1Nlc3Np b24gaW4gbmV3U2Vzc2lvbnMpIHsKLQkJCW1hcFtuZXdTZXNzaW9uXSA9M0QgbmV3U2Vzc2lvbnNb bmV3U2Vzc2lvbl07Ci0JCX0KLQl9Ci0KLQljb25zb2xlLmxvZygiV2F0Y2hpbmcgcGF0aCAiICsg cGF0aCk7Ci0JbG9hZE1hcCgpOwotCWZzLndhdGNoKHBhdGgsIGxvYWRNYXApOwotCi0JcmV0dXJu IG1hcDsKKyAgICB2YXIgbWFwID0zRCB7fTsKKyAgICBsb2FkTWFwID0zRCBmdW5jdGlvbigpIHsK KyAgICAJdXBkYXRlRnJvbUpzb24ocGF0aCwgbWFwKTsKKyAgICB9CisgICAgY29uc29sZS5sb2co IldhdGNoaW5nIHBhdGggIiArIHBhdGgpOworICAgIGxvYWRNYXAoKTsKKyAgICBmcy53YXRjaChw YXRoLCBsb2FkTWFwKTsKKyAgICByZXR1cm4gbWFwOwogfQo9MjAKIGV4cG9ydHMubWFwRm9yID0z RCBtYXBGb3I7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKCmh0dHBzOi8vYml0YnVja2V0 Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8zOTI1YTAzY2RhNWEvCkNoYW5nZXNl dDogICAzOTI1YTAzY2RhNWEKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAx NC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgU2xpZ2h0bHkgY2xlYW5lciBzcWxp dGUgYmFzZWQgSVBDIGZvciBHYWxheHkgUHJveHkuCkFmZmVjdGVkICM6ICA0IGZpbGVzCgpkaWZm IC1yIGFhNjQxZTdmODVkMjdlYmE4YTYwYTUwNzA0ZDhkYTRjZDJjNDMxNzAgLXIgMzkyNWEwM2Nk YTVhZTc3N2U0MWRkMTc9CjgxNTkwN2Q3NGUxYzBiYmMzIGxpYi9nYWxheHkvY29uZmlnLnB5Ci0t LSBhL2xpYi9nYWxheHkvY29uZmlnLnB5CisrKyBiL2xpYi9nYWxheHkvY29uZmlnLnB5CkBAIC0z NzYsNyArMzc2LDcgQEAKICAgICAgICAgIyBkaXJlY3Rvcnkgd2hlcmUgdGhlIHZpc3VhbGl6YXRp b24vcmVnaXN0cnkgc2VhcmNoZXMgZm9yIHBsdWdpbnMKICAgICAgICAgc2VsZi52aXN1YWxpemF0 aW9uX3BsdWdpbnNfZGlyZWN0b3J5ID0zRCBrd2FyZ3MuZ2V0KAogICAgICAgICAgICAgJ3Zpc3Vh bGl6YXRpb25fcGx1Z2luc19kaXJlY3RvcnknLCAnY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGk9 Cm9ucycgKQotICAgICAgICBzZWxmLnByb3h5X3Nlc3Npb25fbWFwID0zRCBzZWxmLnJlc29sdmVf cGF0aCgga3dhcmdzLmdldCggImR5bmFtaWM9Cl9wcm94eV9zZXNzaW9uX21hcCIsICJkYXRhYmFz ZS9zZXNzaW9uX21hcC5qc29uIiApICkKKyAgICAgICAgc2VsZi5wcm94eV9zZXNzaW9uX21hcCA9 M0Qgc2VsZi5yZXNvbHZlX3BhdGgoIGt3YXJncy5nZXQoICJkeW5hbWljPQpfcHJveHlfc2Vzc2lv bl9tYXAiLCAiZGF0YWJhc2Uvc2Vzc2lvbl9tYXAuc3FsaXRlIiApICkKICAgICAgICAgc2VsZi5t YW5hZ2VfZHluYW1pY19wcm94eSA9M0Qgc3RyaW5nX2FzX2Jvb2woIGt3YXJncy5nZXQoICJkeW5h bWljPQpfcHJveHlfbWFuYWdlIiwgIlRydWUiICkgKSAgIyBTZXQgdG8gZmFsc2UgaWYgYmVpbmcg bGF1bmNoZWQgZXh0ZXJuYWxseQogICAgICAgICBzZWxmLmR5bmFtaWNfcHJveHlfYmluZF9wb3J0 ID0zRCBpbnQoIGt3YXJncy5nZXQoICJkeW5hbWljX3Byb3h5X2I9CmluZF9wb3J0IiwgIjg4MDAi ICkgKQogICAgICAgICBzZWxmLmR5bmFtaWNfcHJveHlfYmluZF9pcCA9M0Qga3dhcmdzLmdldCgg ImR5bmFtaWNfcHJveHlfYmluZF9pcCI9CiwgIjAuMC4wLjAiICkKCmRpZmYgLXIgYWE2NDFlN2Y4 NWQyN2ViYThhNjBhNTA3MDRkOGRhNGNkMmM0MzE3MCAtciAzOTI1YTAzY2RhNWFlNzc3ZTQxZGQx Nz0KODE1OTA3ZDc0ZTFjMGJiYzMgbGliL2dhbGF4eS93ZWIvcHJveHkvX19pbml0X18ucHkKLS0t IGEvbGliL2dhbGF4eS93ZWIvcHJveHkvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS93ZWIv cHJveHkvX19pbml0X18ucHkKQEAgLTUsNiArNSw3IEBACiBmcm9tIC5maWxlbG9jayBpbXBvcnQg RmlsZUxvY2sKIGZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNvY2tldHMKIGZyb20gZ2FsYXh5LnV0 aWwubGF6eV9wcm9jZXNzIGltcG9ydCBMYXp5UHJvY2VzcywgTm9PcExhenlQcm9jZXNzCitmcm9t IGdhbGF4eS51dGlsIGltcG9ydCBzcWxpdGUKPTIwCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2Vy KCBfX25hbWVfXyApCj0yMApAQCAtMTAwLDcgKzEwMSwxMCBAQAo9MjAKIGRlZiBwcm94eV9pcGMo Y29uZmlnKToKICAgICBwcm94eV9zZXNzaW9uX21hcCA9M0QgY29uZmlnLnByb3h5X3Nlc3Npb25f bWFwCi0gICAgcmV0dXJuIEpzb25GaWxlUHJveHlJcGMocHJveHlfc2Vzc2lvbl9tYXApCisgICAg aWYgcHJveHlfc2Vzc2lvbl9tYXAuZW5kc3dpdGgoIi5zcWxpdGUiKToKKyAgICAgICAgcmV0dXJu IFNxbGl0ZVByb3h5SXBjKHByb3h5X3Nlc3Npb25fbWFwKQorICAgIGVsc2U6CisgICAgICAgIHJl dHVybiBKc29uRmlsZVByb3h5SXBjKHByb3h5X3Nlc3Npb25fbWFwKQo9MjAKPTIwCiBjbGFzcyBQ cm94eUlwYyhvYmplY3QpOgpAQCAtMTMzLDUgKzEzNywzMCBAQAogICAgICAgICAgICAgb3Blbigg c2VsZi5wcm94eV9zZXNzaW9uX21hcCwgInciICkud3JpdGUoIG5ld19qc29uX2RhdGEgKQo9MjAK PTIwCi0jIFRPRE86IHNxbGl0ZWZpbGVpcGMKLSMgVE9ETzogUkVTVGZ1bCBBUEkgZHJpdmVuIHBy b3h5CitjbGFzcyBTcWxpdGVQcm94eUlwYyhvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsIHByb3h5X3Nlc3Npb25fbWFwKToKKyAgICAgICAgc2VsZi5wcm94eV9zZXNzaW9uX21hcCA9 M0QgcHJveHlfc2Vzc2lvbl9tYXAKKworICAgIGRlZiBoYW5kbGVfcmVxdWVzdHMoc2VsZiwgYXV0 aGVudGljYXRpb24sIHByb3h5X3JlcXVlc3RzKToKKyAgICAgICAga2V5ID0zRCAiJXM6JXMiICUg KCBwcm94eV9yZXF1ZXN0cy5ob3N0LCBwcm94eV9yZXF1ZXN0cy5wb3J0ICkKKyAgICAgICAgc2Vj dXJlX2lkID0zRCBhdXRoZW50aWNhdGlvbi5jb29raWVfdmFsdWUKKyAgICAgICAgd2l0aCBGaWxl TG9jayggc2VsZi5wcm94eV9zZXNzaW9uX21hcCApOgorICAgICAgICAgICAgY29ubiA9M0Qgc3Fs aXRlLmNvbm5lY3Qoc2VsZi5wcm94eV9zZXNzaW9uX21hcCkKKyAgICAgICAgICAgIHRyeToKKyAg ICAgICAgICAgICAgICBjID0zRCBjb25uLmN1cnNvcigpCisgICAgICAgICAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSB0YWJsZQorICAgICAgICAgICAgICAgICAgICBj LmV4ZWN1dGUoJycnQ1JFQVRFIFRBQkxFIGd4cHJveHkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChrZXkgdGV4dCBQUklNQVJZX0tFWSwgc2VjcmV0IHRleHQpJycnKQorICAgICAg ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAg ICAgICAgICAgICAgICBpbnNlcnRfdG1wbCA9M0QgJycnSU5TRVJUIElOVE8gZ3hwcm94eSAoa2V5 LCBzZWNyZXQpIFZBTFVFPQpTICgnJXMnLCAnJXMnKTsnJycKKyAgICAgICAgICAgICAgICBpbnNl cnQgPTNEIGluc2VydF90bXBsICUgKGtleSwgc2VjdXJlX2lkKQorICAgICAgICAgICAgICAgIGMu ZXhlY3V0ZShpbnNlcnQpCisgICAgICAgICAgICAgICAgY29ubi5jb21taXQoKQorICAgICAgICAg ICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKKworIyBUT0RPOiBSRVNU ZnVsIEFQSSBkcml2ZW4gcHJveHk/CisjIFRPRE86IE1RIGRpdmVuIHByb3h5PwoKZGlmZiAtciBh YTY0MWU3Zjg1ZDI3ZWJhOGE2MGE1MDcwNGQ4ZGE0Y2QyYzQzMTcwIC1yIDM5MjVhMDNjZGE1YWU3 NzdlNDFkZDE3PQo4MTU5MDdkNzRlMWMwYmJjMyBsaWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIv bWFwcGVyLmpzCi0tLSBhL2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9tYXBwZXIuanMKKysr IGIvbGliL2dhbGF4eS93ZWIvcHJveHkvanMvbGliL21hcHBlci5qcwpAQCAtMSw0ICsxLDE0IEBA CiB2YXIgZnMgPTNEIHJlcXVpcmUoJ2ZzJyk7Cit2YXIgc3FsaXRlMyA9M0QgcmVxdWlyZSgnc3Fs aXRlMycpCisKKwordmFyIGVuZHNXaXRoID0zRCBmdW5jdGlvbihzdWJqZWN0U3RyaW5nLCBzZWFy Y2hTdHJpbmcpIHsKKyAgICB2YXIgcG9zaXRpb24gPTNEIHN1YmplY3RTdHJpbmcubGVuZ3RoOwor ICAgIHBvc2l0aW9uIC09M0Qgc2VhcmNoU3RyaW5nLmxlbmd0aDsKKyAgICB2YXIgbGFzdEluZGV4 ID0zRCBzdWJqZWN0U3RyaW5nLmluZGV4T2Yoc2VhcmNoU3RyaW5nLCBwb3NpdGlvbik7CisgICAg cmV0dXJuIGxhc3RJbmRleCAhPTNEPTNEIC0xICYmIGxhc3RJbmRleCA9M0Q9M0Q9M0QgcG9zaXRp b247Cit9OworCj0yMAogdmFyIHVwZGF0ZUZyb21Kc29uID0zRCBmdW5jdGlvbihwYXRoLCBtYXAp IHsKICAgICB2YXIgY29udGVudCA9M0QgZnMucmVhZEZpbGVTeW5jKHBhdGgsICd1dGY4Jyk7CkBA IC0xOSwxNiArMjksNTMgQEAKICAgICB9CiB9Cj0yMAordmFyIHVwZGF0ZUZyb21TcWxpdGUgPTNE IGZ1bmN0aW9uKHBhdGgsIG1hcCkgeworICAgIHZhciBuZXdTZXNzaW9ucyA9M0Qge307CisgICAg dmFyIGxvYWRTZXNzaW9ucyA9M0QgZnVuY3Rpb24oKSB7CisgICAgICAgIGRiLmVhY2goIlNFTEVD VCBrZXksIHNlY3JldCBGUk9NIGd4cHJveHkiLCBmdW5jdGlvbihlcnIsIHJvdykgeworICAgICAg ICAgICAgdmFyIGtleSA9M0Qgcm93WydrZXknXTsKKyAgICAgICAgICAgIHZhciBzZWNyZXQgPTNE IHJvd1snc2VjcmV0J107CisgICAgICAgICAgICB2YXIgaG9zdEFuZFBvcnQgPTNEIGtleS5zcGxp dCgiOiIpOworICAgICAgICAgICAgdmFyIHRhcmdldCA9M0Qgeydob3N0JzogaG9zdEFuZFBvcnRb MF0sICdwb3J0JzogcGFyc2VJbnQoaG9zdEE9Cm5kUG9ydFsxXSl9OworICAgICAgICAgICAgbmV3 U2Vzc2lvbnNbc2VjcmV0XSA9M0Qgeyd0YXJnZXQnOiB0YXJnZXR9OworICAgICAgICB9LCBmaW5p c2gpOworICAgIH07CisKKyAgICB2YXIgZmluaXNoID0zRCBmdW5jdGlvbigpIHsKKyAgICAgICAg Zm9yKHZhciBvbGRTZXNzaW9uIGluIG1hcCkgeworICAgICAgICAgICAgaWYoIShvbGRTZXNzaW9u IGluIG5ld1Nlc3Npb25zKSkgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBtYXBbIG9sZFNlc3Np b24gXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IodmFyIG5ld1Nlc3Np b24gaW4gbmV3U2Vzc2lvbnMpIHsKKyAgICAgICAgICAgIG1hcFtuZXdTZXNzaW9uXSA9M0QgbmV3 U2Vzc2lvbnNbbmV3U2Vzc2lvbl07CisgICAgICAgIH0KKyAgICAgICAgZGIuY2xvc2UoKTsKKyAg ICB9OworCisgICAgdmFyIGRiID0zRCBuZXcgc3FsaXRlMy5EYXRhYmFzZShwYXRoLCBsb2FkU2Vz c2lvbnMpOworICAgIGNvbnNvbGUubG9nKCJhZnRlciBkYiBzZXNzaW9uIik7CisgICAgY29uc29s ZS5sb2cobmV3U2Vzc2lvbnMpOworCit9OworCj0yMAogdmFyIG1hcEZvciA9M0QgZnVuY3Rpb24o cGF0aCkgewogICAgIHZhciBtYXAgPTNEIHt9OwotICAgIGxvYWRNYXAgPTNEIGZ1bmN0aW9uKCkg ewotICAgIAl1cGRhdGVGcm9tSnNvbihwYXRoLCBtYXApOworICAgIHZhciBsb2FkTWFwOworICAg IGlmKGVuZHNXaXRoKHBhdGgsICcuc3FsaXRlJykpIHsKKyAgICAgICAgbG9hZE1hcCA9M0QgZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICB1cGRhdGVGcm9tU3FsaXRlKHBhdGgsIG1hcCk7CisgICAg ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBsb2FkTWFwID0zRCBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgIHVwZGF0ZUZyb21Kc29uKHBhdGgsIG1hcCk7CisgICAgICAgIH0KICAgICB9CiAg ICAgY29uc29sZS5sb2coIldhdGNoaW5nIHBhdGggIiArIHBhdGgpOwogICAgIGxvYWRNYXAoKTsK ICAgICBmcy53YXRjaChwYXRoLCBsb2FkTWFwKTsKICAgICByZXR1cm4gbWFwOwotfQorfTsKPTIw CiBleHBvcnRzLm1hcEZvciA9M0QgbWFwRm9yOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK CmRpZmYgLXIgYWE2NDFlN2Y4NWQyN2ViYThhNjBhNTA3MDRkOGRhNGNkMmM0MzE3MCAtciAzOTI1 YTAzY2RhNWFlNzc3ZTQxZGQxNz0KODE1OTA3ZDc0ZTFjMGJiYzMgbGliL2dhbGF4eS93ZWIvcHJv eHkvanMvcGFja2FnZS5qc29uCi0tLSBhL2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL3BhY2thZ2Uu anNvbgorKysgYi9saWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9wYWNrYWdlLmpzb24KQEAgLTEyLDYg KzEyLDcgQEAKICAgfSwKICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAiaHR0cC1wcm94eSI6ICJ+ MS4xIiwKLSAgICAiY29tbWFuZGVyIjogIn4yLjIiCisgICAgImNvbW1hbmRlciI6ICJ+Mi4yIiwK KyAgICAic3FsaXRlMyI6ICIzLjAuMiIKICAgfQogfQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy83NzRmOTk0OTBmMmMvCkNoYW5nZXNldDogICA3 NzRmOTk0OTBmMmMKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0x OCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQWRkIGRvY3VtZW50YXRpb24gZm9yIGR5bmFt aWMgcHJveHkgY29uZmlndXJhdGlvbi4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAzOTI1 YTAzY2RhNWFlNzc3ZTQxZGQxNzgxNTkwN2Q3NGUxYzBiYmMzIC1yIDc3NGY5OTQ5MGYyY2ExOTc1 MWFiNDM1PQoyNmE5NDdlNjU2NzcxMGU3MiBjb25maWcvZ2FsYXh5LmluaS5zYW1wbGUKLS0tIGEv Y29uZmlnL2dhbGF4eS5pbmkuc2FtcGxlCisrKyBiL2NvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQpA QCAtNTIyLDYgKzUyMiwyNCBAQAogIyByZXF1ZXN0cy4KICNuZ2lueF91cGxvYWRfcGF0aCA9M0Qg RmFsc2UKPTIwCisjIEhhdmUgR2FsYXh5IG1hbmFnZSBkeW5hbWljIHByb3h5IGNvbXBvbmVudCBm b3Igcm91dGluZyByZXF1ZXN0cyB0byBvdGhlcgorIyBzZXJ2aWNlcyBiYXNlZCBvbiBHYWxheHkn cyBzZXNzaW9uIGNvb2tpZS4gSXQgd2lsbCBhdHRlbXB0IHRvIGRvIHRoaXMgYnkKKyMgZGVmYXVs dCB0aG91Z2ggeW91IGRvIG5lZWQgdG8gaW5zdGFsbCBub2RlK25wbSBhbmQgZG8gYW4gbnBtIGlu c3RhbGwgZnJvbQorIyBgbGliL2dhbGF4eS93ZWIvcHJveHkvanNgLiBJdCBpcyBnZW5lcmFsbHkg bW9yZSByb2J1c3QgdG8gY29uZmlndXJlIHRoaXMKKyMgZXh0ZXJuYWxseSBtYW5hZ2luZyBpdCBo b3dldmVyIEdhbGF4eSBpcyBtYW5hZ2VkLiBJZiBUcnVlIEdhbGF4eSB3aWxsIG9uPQpseQorIyBs YXVuY2ggdGhlIHByb3h5IGlmIGl0IGlzIGFjdHVhbGx5IGdvaW5nIHRvIGJlIHVzZWQgKGUuZy4g Zm9yIElQeXRob24pLgorI2R5bmFtaWNfcHJveHlfbWFuYWdlPTNEVHJ1ZQorCisjIER5bmFtaWMg cHJveHkgY2FuIHVzZSBhbiBTUUxpdGUgZGF0YWJhc2Ugb3IgYSBKU09OIGZpbGUgZm9yIElQQywg c2V0IHRoYXQKKyMgaGVyZS4KKyNkeW5hbWljX3Byb3h5X3Nlc3Npb25fbWFwPTNEZGF0YWJhc2Uv c2Vzc2lvbl9tYXAuc3FsaXRlCisKKyMgU2V0IHRoZSBwb3J0IGFuZCBJUCBmb3IgdGhlIHRoZSBk eW5hbWljIHByb3h5IHRvIGJpbmQgdG8sIHRoaXMgbXVzdCBtYXRjaAorIyB0aGUgZXh0ZXJuYWwg Y29uZmlndXJhdGlvbiBpZiBkeW5hbWljX3Byb3h5X21hbmFnZSBpcyBGYWxzZS4KKyNkeW5hbWlj X3Byb3h5X2JpbmRfcG9ydD0zRDg4MDAKKyNkeW5hbWljX3Byb3h5X2JpbmRfaXA9M0QwLjAuMC4w CisKKwogIyAtLSBMb2dnaW5nIGFuZCBEZWJ1Z2dpbmcKPTIwCiAjIFZlcmJvc2l0eSBvZiBjb25z b2xlIGxvZyBtZXNzYWdlcy4gIEFjY2VwdGFibGUgdmFsdWVzIGNhbiBiZSBmb3VuZCBoZXJlOgoK Cmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy83Nzg1 NzBlZmNjZTgvCkNoYW5nZXNldDogICA3Nzg1NzBlZmNjZTgKVXNlcjogICAgICAgIGptY2hpbHRv bgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgQWRk IElQeXRob24gTm90ZWJvb2sgYW5kIEpTT04gZGF0YXR5cGVzCkJhc2VkIG9uIHdvcmsgZnJvbSBC am9lcm4gYW5kIEVyaWMuIE1hZGUgc29tZSBtb2RpZmljYXRpb25zIHRvIGVuc3VyZSB0aGV5ID0K ZG8gbm90IGF0dGVtcHQgdG8gcmVhZCBhbGwgb2YgdmVyeSBsYXJnZSBmaWxlcyBhbmQgYWRkZWQg YSBjb25maWd1cmF0aW9uIG9wPQp0aW9uIHRoYXQgbXVzdCBiZSBlbmFibGVkIHRvIHVzZSBmYW5j eSBub3RlYm9vayB2aWV3aW5nLgoKVG8gZW5hYmxlIGZhbmN5IG5vdGVib29rcyBvbmUgYWxzbyBu ZWVkcyB0byAtIGBwaXAgaW5zdGFsbCBqaW5qYTIgcHlnbWVudHMgPQppcHl0aG9uYCBpbnRvIEdh bGF4eSdzIHZpcnR1YWxlbnYuCkFmZmVjdGVkICM6ICA1IGZpbGVzCgpkaWZmIC1yIDc3NGY5OTQ5 MGYyY2ExOTc1MWFiNDM1MjZhOTQ3ZTY1Njc3MTBlNzIgLXIgNzc4NTcwZWZjY2U4MDk2NWE4MThm Yjk9CjAwYTMxNmViYzYzMGYzNzQ0IGNvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwuc2FtcGxlCi0t LSBhL2NvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwuc2FtcGxlCisrKyBiL2NvbmZpZy9kYXRhdHlw ZXNfY29uZi54bWwuc2FtcGxlCkBAIC0yNDksNiArMjQ5LDggQEAKICAgICA8ZGF0YXR5cGUgZXh0 ZW5zaW9uPTNEInNucG1hdHJpeCIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLmdlbmV0aWNzOlNO PQpQTWF0cml4IiBkaXNwbGF5X2luX3VwbG9hZD0zRCJ0cnVlIi8+PGRhdGF0eXBlIGV4dGVuc2lv bj0zRCJ4bHMiIHR5cGU9M0QiZ2E9CmxheHkuZGF0YXR5cGVzLnRhYnVsYXI6VGFidWxhciIvPjwh LS0gRW5kIFJHZW5ldGljcyBEYXRhdHlwZXMgLS0+CisgICAgPGRhdGF0eXBlIGV4dGVuc2lvbj0z RCJpcHluYiIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLnRleHQ6SXB5bmIiIGRpcz0KcGxheV9p bl91cGxvYWQ9M0QiVHJ1ZSIgLz4KKyAgICA8ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEImpzb24iIHR5 cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0Okpzb24iIGRpc3BsPQpheV9pbl91cGxvYWQ9M0Qi VHJ1ZSIgLz48IS0tIGdyYXBoIGRhdGF0eXBlcyAtLT48ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEInhn bW09CmwiIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5ncmFwaDpYZ21tbCIgZGlzcGxheV9pbl91 cGxvYWQ9M0QidHJ1ZSIvPjxkYXRhdD0KeXBlIGV4dGVuc2lvbj0zRCJzaWYiIHR5cGU9M0QiZ2Fs YXh5LmRhdGF0eXBlcy5ncmFwaDpTaWYiIGRpc3BsYXlfaW5fdXBsb2FkPQo9M0QidHJ1ZSIvPgpA QCAtMjkyLDYgKzI5NCw4IEBACiAgICAgPHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVz LnRhYnVsYXI6U2FtIi8+PHNuaWZmZXIgdHlwZT0zRCJnYWxheD0KeS5kYXRhdHlwZXMuZGF0YTpO ZXdpY2siLz48c25pZmZlciB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuZGF0YTpOZXh1cyIvPgor ICAgIDxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0OklweW5iIi8+CisgICAg PHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLnRleHQ6SnNvbiIvPjxzbmlmZmVyIHR5 cGU9M0QiZ2FsYXh5Lj0KZGF0YXR5cGVzLmltYWdlczpKcGciLz48c25pZmZlciB0eXBlPTNEImdh bGF4eS5kYXRhdHlwZXMuaW1hZ2VzOlBuZyIvPjxzbmlmPQpmZXIgdHlwZT0zRCJnYWxheHkuZGF0 YXR5cGVzLmltYWdlczpUaWZmIi8+CgpkaWZmIC1yIDc3NGY5OTQ5MGYyY2ExOTc1MWFiNDM1MjZh OTQ3ZTY1Njc3MTBlNzIgLXIgNzc4NTcwZWZjY2U4MDk2NWE4MThmYjk9CjAwYTMxNmViYzYzMGYz NzQ0IGNvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQotLS0gYS9jb25maWcvZ2FsYXh5LmluaS5zYW1w bGUKKysrIGIvY29uZmlnL2dhbGF4eS5pbmkuc2FtcGxlCkBAIC01NzIsNiArNTcyLDEyIEBACiAj IGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8gVHJ1ZS4KICNzZXJ2ZV94c3NfdnVs bmVyYWJsZV9taW1ldHlwZXMgPTNEIEZhbHNlCj0yMAorIyBTZXQgdGhlIGZvbGxvd2luZyB0byBU cnVlIHRvIHVzZSBpcHl0aG9uIG5iY29udmVydCB0byBidWlsZCBIVE1MIGZyb20gSVA9Cnl0aG9u CisjIG5vdGVib29rcyBpbiBHYWxheHkgaGlzdG9yaWVzLiBUaGlzIHByb2Nlc3MgbWF5IGFsbG93 IHVzZXJzIHRvIGV4ZWN1dGUgYT0KcmJpdHJhcnkKKyMgY29kZSBvciBzZXJ2ZSBhcmJpdHJhcnkg SFRNTC4gSWYgZW5hYmxlZCBpcHl0aG9uIG11c3QgYmUgYXZhaWxhYmxlIGFuZCBvPQpuIEdhbGF4 eSdzCisjIFBBVEgsIHRvIGRvIHRoaXMgcnVuIGBwaXAgaW5zdGFsbCBqaW5qYTIgcHlnbWVudHMg aXB5dGhvbmAgaW4gR2FsYXh5J3Mgdj0KaXJ0dWFsZW52LgorI3RydXN0X2lweXRob25fbm90ZWJv b2tfY29udmVyc2lvbiA9M0QgRmFsc2UKKwogIyBEZWJ1ZyBlbmFibGVzIGFjY2VzcyB0byB2YXJp b3VzIGNvbmZpZyBvcHRpb25zIHVzZWZ1bCBmb3IgZGV2ZWxvcG1lbnQgYW5kCiAjIGRlYnVnZ2lu ZzogdXNlX2xpbnQsIHVzZV9wcm9maWxlLCB1c2VfcHJpbnRkZWJ1ZyBhbmQgdXNlX2ludGVyYWN0 aXZlLiAgSXQKICMgYWxzbyBjYXVzZXMgdGhlIGZpbGVzIHVzZWQgYnkgUEJTL1NHRSAoc3VibWlz c2lvbiBzY3JpcHQsIG91dHB1dCwgYW5kIGVyPQpyb3IpCgpkaWZmIC1yIDc3NGY5OTQ5MGYyY2Ex OTc1MWFiNDM1MjZhOTQ3ZTY1Njc3MTBlNzIgLXIgNzc4NTcwZWZjY2U4MDk2NWE4MThmYjk9CjAw YTMxNmViYzYzMGYzNzQ0IGxpYi9nYWxheHkvY29uZmlnLnB5Ci0tLSBhL2xpYi9nYWxheHkvY29u ZmlnLnB5CisrKyBiL2xpYi9nYWxheHkvY29uZmlnLnB5CkBAIC0yMTAsNiArMjEwLDcgQEAKICAg ICAgICAgc2VsZi5sb2dfZXZlbnRzID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdldCggJ2xv Z19ldmVudHMnLCAnRmFsPQpzZScgKSApCiAgICAgICAgIHNlbGYuc2FuaXRpemVfYWxsX2h0bWwg PTNEIHN0cmluZ19hc19ib29sKCBrd2FyZ3MuZ2V0KCAnc2FuaXRpemVfYT0KbGxfaHRtbCcsIFRy dWUgKSApCiAgICAgICAgIHNlbGYuc2VydmVfeHNzX3Z1bG5lcmFibGVfbWltZXR5cGVzID0zRCBz dHJpbmdfYXNfYm9vbCgga3dhcmdzLmdldD0KKCAnc2VydmVfeHNzX3Z1bG5lcmFibGVfbWltZXR5 cGVzJywgRmFsc2UgKSApCisgICAgICAgIHNlbGYudHJ1c3RfaXB5dGhvbl9ub3RlYm9va19jb252 ZXJzaW9uID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLj0KZ2V0KCAndHJ1c3RfaXB5dGhvbl9u b3RlYm9va19jb252ZXJzaW9uJywgRmFsc2UgKSApCiAgICAgICAgIHNlbGYuZW5hYmxlX29sZF9k aXNwbGF5X2FwcGxpY2F0aW9ucyA9M0Qgc3RyaW5nX2FzX2Jvb2woIGt3YXJncy5nZT0KdCggImVu YWJsZV9vbGRfZGlzcGxheV9hcHBsaWNhdGlvbnMiLCAiVHJ1ZSIgKSApCiAgICAgICAgIHNlbGYu YnJhbmQgPTNEIGt3YXJncy5nZXQoICdicmFuZCcsIE5vbmUgKQogICAgICAgICBzZWxmLndlbGNv bWVfdXJsID0zRCBrd2FyZ3MuZ2V0KCAnd2VsY29tZV91cmwnLCAnL3N0YXRpYy93ZWxjb21lLmg9 CnRtbCcgKQoKZGlmZiAtciA3NzRmOTk0OTBmMmNhMTk3NTFhYjQzNTI2YTk0N2U2NTY3NzEwZTcy IC1yIDc3ODU3MGVmY2NlODA5NjVhODE4ZmI5PQowMGEzMTZlYmM2MzBmMzc0NCBsaWIvZ2FsYXh5 L2RhdGF0eXBlcy9yZWdpc3RyeS5weQotLS0gYS9saWIvZ2FsYXh5L2RhdGF0eXBlcy9yZWdpc3Ry eS5weQorKysgYi9saWIvZ2FsYXh5L2RhdGF0eXBlcy9yZWdpc3RyeS5weQpAQCAtMjIsNiArMjIs NyBAQAogaW1wb3J0IGFzc2VtYmx5CiBpbXBvcnQgbmdzaW5kZXgKIGltcG9ydCBncmFwaAoraW1w b3J0IHRleHQKIGltcG9ydCBnYWxheHkudXRpbAogZnJvbSBnYWxheHkudXRpbC5vZGljdCBpbXBv cnQgb2RpY3QKIGZyb20gZGlzcGxheV9hcHBsaWNhdGlvbnMuYXBwbGljYXRpb24gaW1wb3J0IERp c3BsYXlBcHBsaWNhdGlvbgoKZGlmZiAtciA3NzRmOTk0OTBmMmNhMTk3NTFhYjQzNTI2YTk0N2U2 NTY3NzEwZTcyIC1yIDc3ODU3MGVmY2NlODA5NjVhODE4ZmI5PQowMGEzMTZlYmM2MzBmMzc0NCBs aWIvZ2FsYXh5L2RhdGF0eXBlcy90ZXh0LnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dhbGF4 eS9kYXRhdHlwZXMvdGV4dC5weQpAQCAtMCwwICsxLDEyMSBAQAorIyAtKi0gY29kaW5nOiB1dGYt OCAtKi0KKyIiIiBDbGVhcmluZyBob3VzZSBmb3IgZ2VuZXJpYyB0ZXh0IGRhdGF0eXBlcyB0aGF0 IGFyZSBub3QgWE1MIG9yIHRhYnVsYXIuCisiIiIKKworCitmcm9tIGdhbGF4eS5kYXRhdHlwZXMu ZGF0YSBpbXBvcnQgVGV4dAorZnJvbSBnYWxheHkuZGF0YXR5cGVzLmRhdGEgaW1wb3J0IGdldF9m aWxlX3BlZWsKK2Zyb20gZ2FsYXh5LmRhdGF0eXBlcy5kYXRhIGltcG9ydCBuaWNlX3NpemUKK2Zy b20gZ2FsYXh5IGltcG9ydCB1dGlsCisKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nl c3MKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKKworaW1wb3J0IGxvZ2dpbmcKK2xvZyA9M0QgbG9n Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgSnNvbiggVGV4dCApOgorICAgIGZp bGVfZXh0ID0zRCAianNvbiIKKworICAgIGRlZiBzZXRfcGVlayggc2VsZiwgZGF0YXNldCwgaXNf bXVsdGlfYnl0ZT0zREZhbHNlICk6CisgICAgICAgIGlmIG5vdCBkYXRhc2V0LmRhdGFzZXQucHVy Z2VkOgorICAgICAgICAgICAgZGF0YXNldC5wZWVrID0zRCBnZXRfZmlsZV9wZWVrKCBkYXRhc2V0 LmZpbGVfbmFtZSwgaXNfbXVsdGlfYnk9CnRlPTNEaXNfbXVsdGlfYnl0ZSApCisgICAgICAgICAg ICBkYXRhc2V0LmJsdXJiID0zRCAiSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24gKEpTT04pIgor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YXNldC5wZWVrID0zRCAnZmlsZSBkb2VzIG5v dCBleGlzdCcKKyAgICAgICAgICAgIGRhdGFzZXQuYmx1cmIgPTNEICdmaWxlIHB1cmdlZCBmcm9t IGRpc2MnCisKKyAgICBkZWYgc25pZmYoIHNlbGYsIGZpbGVuYW1lICk6CisgICAgICAgICIiIgor ICAgICAgICAgICAgVHJ5IHRvIGxvYWQgdGhlIHN0cmluZyB3aXRoIHRoZSBqc29uIG1vZHVsZS4g SWYgc3VjY2Vzc2Z1bCBpdCc9CnMgYSBqc29uIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBy ZXR1cm4gc2VsZi5fbG9va3NfbGlrZV9qc29uKCBmaWxlbmFtZSApCisKKyAgICBkZWYgX2xvb2tz X2xpa2VfanNvbiggc2VsZiwgZmlsZW5hbWUgKToKKyAgICAgICAgIyBQYXR0ZXJuIHVzZWQgYnkg U2VxdWVuY2VTcGxpdExvY2F0aW9ucworICAgICAgICBpZiBvcy5wYXRoLmdldHNpemUoZmlsZW5h bWUpIDwgNTAwMDA6CisgICAgICAgICAgICAjIElmIHRoZSBmaWxlIGlzIHNtYWxsIGVub3VnaCAt IGRvbid0IGd1ZXNzIGp1c3QgY2hlY2suCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg ICAganNvbi5sb2FkKCBvcGVuKGZpbGVuYW1lLCAiciIpICkKKyAgICAgICAgICAgICAgICByZXR1 cm4gVHJ1ZQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFt ZSwgInIiKSBhcyBmaDoKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAg ICAgICAgICBsaW5lID0zRCBmaC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgIGxpbmUg PTNEIGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAg ICAgICAgICAgICAgICAgIyBzaW1wbGUgdHlwZXMgYXJlIHZhbGlkIEpTT04gYXMgd2VsbCAtIGJ1 dCB3b3VsZCA9CnN1Y2ggYSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIGludGVy ZXN0aW5nIGFzIEpTT04gaW4gR2FsYXh5PworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGxpbmUuc3RhcnRzd2l0aCgiWyIpIG9yIGxpbmUuc3RhcnRzd2l0aCgieyIpCisgICAgICAgICAg ICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBkaXNwbGF5X3BlZWsoIHNlbGYsIGRhdGFzZXQgKToK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGRhdGFzZXQucGVlaworICAgICAgICBl eGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gIkpTT04gZmlsZSAoJXMpIiAlICggbmljZV9zaXpl KCBkYXRhc2V0LmdldF9zaXplKCkgKSApCisKKworY2xhc3MgSXB5bmIoIEpzb24gKToKKyAgICBm aWxlX2V4dCA9M0QgImlweW5iIgorCisgICAgZGVmIHNldF9wZWVrKCBzZWxmLCBkYXRhc2V0LCBp c19tdWx0aV9ieXRlPTNERmFsc2UgKToKKyAgICAgICAgaWYgbm90IGRhdGFzZXQuZGF0YXNldC5w dXJnZWQ6CisgICAgICAgICAgICBkYXRhc2V0LnBlZWsgPTNEIGdldF9maWxlX3BlZWsoIGRhdGFz ZXQuZmlsZV9uYW1lLCBpc19tdWx0aV9ieT0KdGU9M0Rpc19tdWx0aV9ieXRlICkKKyAgICAgICAg ICAgIGRhdGFzZXQuYmx1cmIgPTNEICJJUHl0aG9uIE5vdGVib29rIgorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgZGF0YXNldC5wZWVrID0zRCAnZmlsZSBkb2VzIG5vdCBleGlzdCcKKyAgICAg ICAgICAgIGRhdGFzZXQuYmx1cmIgPTNEICdmaWxlIHB1cmdlZCBmcm9tIGRpc2MnCisKKyAgICBk ZWYgc25pZmYoIHNlbGYsIGZpbGVuYW1lICk6CisgICAgICAgICIiIgorICAgICAgICAgICAgVHJ5 IHRvIGxvYWQgdGhlIHN0cmluZyB3aXRoIHRoZSBqc29uIG1vZHVsZS4gSWYgc3VjY2Vzc2Z1bCBp dCc9CnMgYSBqc29uIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9sb29rc19s aWtlX2pzb24oIGZpbGVuYW1lICk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg aXB5bmIgPTNEIGpzb24ubG9hZCggb3BlbihmaWxlbmFtZSkgKQorICAgICAgICAgICAgICAgIGlm IGlweW5iLmdldCgnbmJmb3JtYXQnLCBGYWxzZSkgaXMgbm90IEZhbHNlIGFuZCBpcHluYi5nZXQ9 CignbWV0YWRhdGEnLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisg ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg ICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBk ZWYgZGlzcGxheV9kYXRhKHNlbGYsIHRyYW5zLCBkYXRhc2V0LCBwcmV2aWV3PTNERmFsc2UsIGZp bGVuYW1lPTNETm9uPQplLCB0b19leHQ9M0ROb25lLCBjaHVuaz0zRE5vbmUsICoqa3dkKToKKyAg ICAgICAgY29uZmlnID0zRCB0cmFucy5hcHAuY29uZmlnCisgICAgICAgIHRydXN0ID0zRCBnZXRh dHRyKCBjb25maWcsICd0cnVzdF9pcHl0aG9uX25vdGVib29rX2NvbnZlcnNpb24nLCBGYT0KbHNl ICkKKyAgICAgICAgaWYgdHJ1c3Q6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGlzcGxheV9k YXRhX3RydXN0ZWQodHJhbnMsIGRhdGFzZXQsIHByZXZpZXc9M0Rwcj0KZXZpZXcsIGZpbGVhbWU9 M0RmaWxlbmFtZSwgdG9fZXh0PTNEdG9fZXh0LCBjaHVuaz0zRGNodW5rLCAqKmt3ZCkKKyAgICAg ICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihJcHluYiwgc2VsZikuZGlzcGxheV9k YXRhKCB0cmFucywgZGF0YXNldCwgcHJldmllPQp3PTNEcHJldmlldywgZmlsZWFtZT0zRGZpbGVu YW1lLCB0b19leHQ9M0R0b19leHQsIGNodW5rPTNEY2h1bmssICoqa3dkICkKKworICAgIGRlZiBf ZGlzcGxheV9kYXRhX3RydXN0ZWQoc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHByZXZpZXc9M0RGYWxz ZSwgZmlsZW49CmFtZT0zRE5vbmUsIHRvX2V4dD0zRE5vbmUsIGNodW5rPTNETm9uZSwgKiprd2Qp OgorICAgICAgICBwcmV2aWV3ID0zRCB1dGlsLnN0cmluZ19hc19ib29sKCBwcmV2aWV3ICkKKyAg ICAgICAgaWYgY2h1bms6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY2h1bmsodHJhbnMs IGRhdGFzZXQsIGNodW5rKQorICAgICAgICBlbGlmIHRvX2V4dCBvciBub3QgcHJldmlldzoKKyAg ICAgICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZV9yYXcodHJhbnMsIGRhdGFzZXQsIHRvX2V4dCkK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9maWxlX2hhbmRsZSA9M0QgdGVtcGZpbGUuTmFt ZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT0zREZhbHNlKQorICAgICAgICAgICAgb2ZpbGVuYW1lID0z RCBvZmlsZV9oYW5kbGUubmFtZQorICAgICAgICAgICAgb2ZpbGVfaGFuZGxlLmNsb3NlKCkKKyAg ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjbWQgPTNEICdpcHl0aG9uIG5iY29udmVy dCAtLXRvIGh0bWwgLS10ZW1wbGF0ZSBiYXNpYyAlcyAtPQotb3V0cHV0ICVzJyAlIChkYXRhc2V0 LmZpbGVfbmFtZSwgb2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJDYWxsaW5n IGNvbW1hbmQgJXMiICUgY21kKQorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChjbWQs IHNoZWxsPTNEVHJ1ZSkKKyAgICAgICAgICAgICAgICBvZmlsZW5hbWUgPTNEICclcy5odG1sJyAl IG9maWxlbmFtZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIG9maWxlbmFt ZSA9M0QgZGF0YXNldC5maWxlX25hbWUKKyAgICAgICAgICAgICAgICBsb2cuZXhjZXB0aW9uKCAn Q29tbWFuZCAiJXMiIGZhaWxlZC4gQ291bGQgbm90IGNvbnZlcnQgdGhlPQogSVB5dGhvbiBOb3Rl Ym9vayB0byBIVE1MLCBkZWZhdWx0aW5nIHRvIHBsYWluIHRleHQuJyAlIGNtZCApCisgICAgICAg ICAgICByZXR1cm4gb3Blbiggb2ZpbGVuYW1lICkKKworICAgIGRlZiBzZXRfbWV0YSggc2VsZiwg ZGF0YXNldCwgKiprd2QgKToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB0aGUgbnVtYmVyIG9m IG1vZGVscyBpbiBkYXRhc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcwoKCmh0dHBzOi8v Yml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8zYzRmMmVjMjIyNDUv CkNoYW5nZXNldDogICAzYzRmMmVjMjIyNDUKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAg ICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgTW92ZSB0aGUgSVB5 dGhvbiBwb3J0IHJhbmdlIHN0dWZmIGludG8gc29ja2V0IHV0aWwuClNob3VsZCBiZSBwb3NzaWJs ZSB0byB1c2UgdGhpcyAtIGJ1dCBub3QgYSB0b24gcmVhc29uIHdpdGggdGhlIGR5bmFtaWMgcHJv eD0KeS4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA3Nzg1NzBlZmNjZTgwOTY1YTgxOGZi OTAwYTMxNmViYzYzMGYzNzQ0IC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2ZGMwPQowNjIyODJiNzYz YjQ2NGQwYiBsaWIvZ2FsYXh5L3V0aWwvc29ja2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L3V0aWwv c29ja2V0cy5weQorKysgYi9saWIvZ2FsYXh5L3V0aWwvc29ja2V0cy5weQpAQCAtMSwxMCArMSw0 MyBAQAoraW1wb3J0IHNobGV4CiBpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1w b3J0IHJhbmRvbQo9MjAKPTIwCi1kZWYgdW51c2VkX3BvcnQoKToKK2RlZiB1bnVzZWRfcG9ydChy YW5nZT0zRE5vbmUpOgorICAgIGlmIHJhbmdlOgorICAgICAgICByZXR1cm4gX191bnVzZWRfcG9y dF9vbl9yYW5nZShyYW5nZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX191bnVzZWRfcG9y dF9yYW5nZWxlc3MoKQorCisKK2RlZiBfX3VudXNlZF9wb3J0X3JhbmdlbGVzcygpOgogICAgICMg VE9ETzogQWxsb3cgcmFuZ2VzICh0aG91Z2ggdGhlbiBuZWVkIHRvIGd1ZXNzIGFuZCBjaGVjayku Li4KICAgICBzID0zRCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19T VFJFQU0pCiAgICAgcy5iaW5kKCgnbG9jYWxob3N0JywgMCkpCiAgICAgYWRkciwgcG9ydCA9M0Qg cy5nZXRzb2NrbmFtZSgpCiAgICAgcy5jbG9zZSgpCiAgICAgcmV0dXJuIHBvcnQKKworCitkZWYg X191bnVzZWRfcG9ydF9vbl9yYW5nZShyYW5nZSk6CisgICAgYXNzZXJ0IHJhbmdlWzBdIGFuZCBy YW5nZVsxXQorCisgICAgIyBGaW5kIGFsbCBwb3J0cyB0aGF0IGFyZSBhbHJlYWR5IG9jY3VwaWVk CisgICAgY21kX25ldHN0YXQgPTNEIHNobGV4LnNwbGl0KCJuZXRzdGF0IHR1bG4iKQorICAgIHAx ID0zRCBzdWJwcm9jZXNzLlBvcGVuKGNtZF9uZXRzdGF0LCBzdGRvdXQ9M0RzdWJwcm9jZXNzLlBJ UEUpCisKKyAgICBvY2N1cGllZF9wb3J0cyA9M0Qgc2V0KCkKKyAgICBmb3IgbGluZSBpbiBwMS5z dGRvdXQucmVhZCgpLnNwbGl0KCdcbicpOgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3Rj cCcpIG9yIGxpbmUuc3RhcnRzd2l0aCgndGNwNicpOgorICAgICAgICAgICAgY29sID0zRCBsaW5l LnNwbGl0KCkKKyAgICAgICAgICAgIGxvY2FsX2FkZHJlc3MgPTNEIGNvbFszXQorICAgICAgICAg ICAgbG9jYWxfcG9ydCA9M0QgbG9jYWxfYWRkcmVzcy5zcGxpdCgnOicpWzFdCisgICAgICAgICAg ICBvY2N1cGllZF9wb3J0cy5hZGQoIGludChsb2NhbF9wb3J0KSApCisKKyAgICAjIEdlbmVyYXRl IHJhbmRvbSBmcmVlIHBvcnQgbnVtYmVyLgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHBvcnQg PTNEIHJhbmRvbS5yYW5kcmFuZ2UocmFuZ2VbMF0sIHJhbmdlWzFdKQorICAgICAgICBpZiBwb3J0 IG5vdCBpbiBvY2N1cGllZF9wb3J0czoKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIHBv cnQKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMv NDBmN2Y5NDQwOTAwLwpDaGFuZ2VzZXQ6ICAgNDBmN2Y5NDQwOTAwClVzZXI6ICAgICAgICBqbWNo aWx0b24KRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAg IFNwbGl0IGludGVyYWN0aXZlX2Vudmlyb25tZW50cyBvdXQgaW50byB0aGVpciBvd24gcGx1Z2lu IGRpcmVjPQp0b3J5LgpQcmFnbWF0aWNhbGx5IHRoaXMgYWxsb3dzIHZpc3VhbGl6YXRpb25zIHRv IGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBidXQgbm90IEk9ClB5dGhvbiBzdHVmZiBhbmQgcHJvdmlk ZXMgYSBzcG90IHRvIHB1dCBhIHdhcm5pbmcgYWJvdXQgc2VjdXJpdHkgaXNzdWVzLiBNbz0KcmUg YWJzdHJhY3RseSBJIHRoaW5rIGl0IHByb3ZpZGVzIGEgbmljZSBzZXBhcmF0aW9uIChpbml0aWFs bHkgdGhvdWdoIHN1cGVyPQpmaWNpYWwpIGJldHdlZW4gdGhlc2UgcGx1Z2luIHR5cGVzLgpBZmZl Y3RlZCAjOiAgMjkgZmlsZXMKCmRpZmYgLXIgM2M0ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIyODJi NzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBhOWIg Y29uZmlnL2dhbGF4eS5pbmkuc2FtcGxlCi0tLSBhL2NvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQor KysgYi9jb25maWcvZ2FsYXh5LmluaS5zYW1wbGUKQEAgLTIyMSw5ICsyMjEsMTUgQEAKPTIwCiAj IFZpc3VhbGl6YXRpb25zIGNvbmZpZyBkaXJlY3Rvcnk6IHdoZXJlIHRvIGxvb2sgZm9yIGluZGl2 aWR1YWwgdmlzdWFsaXphdD0KaW9uIHBsdWdpbnMuCiAjIFRoZSBwYXRoIGlzIHJlbGF0aXZlIHRv IHRoZSBHYWxheHkgcm9vdCBkaXIuIFRvIHVzZSBhbiBhYnNvbHV0ZSBwYXRoIGJlZz0KaW4gdGhl IHBhdGgKLSMgd2l0aCAnLycuIERlZmF1bHRzIHRvICJjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucyIuCisjIHdpdGggJy8nLiBUaGlzIGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3QuIERlZmF1 bHRzIHRvICJjb25maWcvcGx1Z2lucy92aT0Kc3VhbGl6YXRpb25zIi4KICN2aXN1YWxpemF0aW9u X3BsdWdpbnNfZGlyZWN0b3J5ID0zRCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucwo9MjAK KyMgSW50ZXJhY3RpdmUgZW52aXJvbm1lbnQgcGx1Z2lucyByb290IGRpcmVjdG9yeTogd2hlcmUg dG8gbG9vayBmb3IgaW50ZXJhPQpjdGl2ZSBlbnZpcm9ubWVudAorIyBwbHVnaW5zLiBCeSBkZWZh dWx0IG5vbmUgd2lsbCBiZSBsb2FkZWQuIFNldCB0byBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGk9 CnZlX2Vudmlyb25tZW50cworIyB0byBsb2FkIEdhbGF4eSdzIHN0b2NrIHBsdWdpbnMgKGN1cnJl bnRseSBqdXN0IElQeXRob24pLiBUaGVzZSB3aWxsIHJlcXU9CmlyZSBEb2NrZXIKKyMgdG8gYmUg Y29uZmlndXJlZCBhbmQgaGF2ZSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucyBzbyBwcm9jZWVkIHdp dGggY2F1dGlvPQpuLgorI2ludGVyYWN0aXZlX2Vudmlyb25tZW50X3BsdWdpbnNfZGlyZWN0b3J5 ID0zRD0yMAorCiAjIEVhY2ggam9iIGlzIGdpdmVuIGEgdW5pcXVlIGVtcHR5IGRpcmVjdG9yeSBh cyBpdHMgY3VycmVudCB3b3JraW5nIGRpcmVjdD0Kb3J5LgogIyBUaGlzIG9wdGlvbiBkZWZpbmVz IGluIHdoYXQgcGFyZW50IGRpcmVjdG9yeSB0aG9zZSBkaXJlY3RvcmllcyB3aWxsIGJlCiAjIGNy ZWF0ZWQuCgpkaWZmIC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIg LXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVn aW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pbnRlcmFjdGl2ZV9lbnZpcj0Kb25tZW50cy5k dGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9u bWVudHMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmR0ZApAQCAtMCwwICsxLDEgQEAKKy4uL3Zp c3VhbGl6YXRpb25zL3Zpc3VhbGl6YXRpb24uZHRkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQoKZGlmZiAtciAzYzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBiIC1yIDQw ZjdmOTQ0MDkwMDc5ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1Z2lucy9p bnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi8uZ2l0aWdub3JlCi0tLSAvZGV2L251bGwK KysrIGIvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vLmdp dGlnbm9yZQpAQCAtMCwwICsxLDU0IEBACisjIEJ5dGUtY29tcGlsZWQgLyBvcHRpbWl6ZWQgLyBE TEwgZmlsZXMKK19fcHljYWNoZV9fLworKi5weVtjb2RdCisKKyMgQyBleHRlbnNpb25zCisqLnNv CisKKyMgRGlzdHJpYnV0aW9uIC8gcGFja2FnaW5nCisuUHl0aG9uCitlbnYvCitiaW4vCitidWls ZC8KK2RldmVsb3AtZWdncy8KK2Rpc3QvCitlZ2dzLworbGliLworbGliNjQvCitwYXJ0cy8KK3Nk aXN0LwordmFyLworKi5lZ2ctaW5mby8KKy5pbnN0YWxsZWQuY2ZnCisqLmVnZworCisjIEluc3Rh bGxlciBsb2dzCitwaXAtbG9nLnR4dAorcGlwLWRlbGV0ZS10aGlzLWRpcmVjdG9yeS50eHQKKwor IyBVbml0IHRlc3QgLyBjb3ZlcmFnZSByZXBvcnRzCitodG1sY292LworLnRveC8KKy5jb3ZlcmFn ZQorLmNhY2hlCitub3NldGVzdHMueG1sCitjb3ZlcmFnZS54bWwKKworIyBUcmFuc2xhdGlvbnMK KyoubW8KKworIyBNciBEZXZlbG9wZXIKKy5tci5kZXZlbG9wZXIuY2ZnCisucHJvamVjdAorLnB5 ZGV2cHJvamVjdAorCisjIFJvcGUKKy5yb3BlcHJvamVjdAorCisjIERqYW5nbyBzdHVmZjoKKyou bG9nCisqLnBvdAorCisjIFNwaGlueCBkb2N1bWVudGF0aW9uCitkb2NzL19idWlsZC8KKwoKZGlm ZiAtciAzYzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBiIC1yIDQwZjdmOTQ0 MDkwMDc5ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1Z2lucy9pbnRlcmFj dGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9JTlNUQUxMLm1kCi0tLSAvZGV2L251bGwKKysrIGIv Y29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vSU5TVEFMTC5t ZApAQCAtMCwwICsxLDYzIEBACisjIEluc3RhbGxhdGlvbgorCitXZSd2ZSBkZXZlbG9wZWQgdGhl IHRlbXBsYXRlcyBhbmQgY29udGFpbmVycyBzdWNoIHRoYXQgdGhleSBjYW4gYmUgcnVuIHRocj0K b3VnaCBhbiBBcGFjaGUgcHJveHkgdXNpbmcKK1NTTC4gVGhpcyByZXF1aXJlcyBzb21lIG5vbi10 cml2aWFsIGFwYWNoZSBjb25maWd1cmF0aW9uIHRvIHN1cHBvcnQuCisKKyMjIFJlcXVpcmVtZW50 cworCisgKiBbbW9kX2hlYWRlcnNdKGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21v ZC9tb2RfaGVhZGVycy5odG1sKQorICogW21vZF9wcm94eV0oaHR0cDovL2h0dHBkLmFwYWNoZS5v cmcvZG9jcy8yLjQvbW9kL21vZF9wcm94eS5odG1sKQorICogW21vZF9wcm94eV9odHRwXShodHRw Oi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Byb3h5X2h0dHAuaHQ9Cm1sKQor ICogW21vZF9wcm94eV93c3R1bm5lbF0oaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQv bW9kL21vZF9wcm94eV93c3Q9CnVubmVsLmh0bWwpCisgKiBbbW9kX3Jld3JpdGVdKGh0dHA6Ly9o dHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2RfcmV3cml0ZS5odG1sKQorICogW21vZF9z ZXRlbnZpZl0oaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbW9kL21vZF9zZXRlbnZp Zi5odG1sKQorCitJUHl0aG9uIG1ha2VzIHVzZSBvZiBXZWJTb2NrZXRzIHdoaWNoIHdlIG5lZWQg dG8gcHJveHkgaW4gYXBhY2hlLiBTdXBwb3J0ID0Kd2FzIGFkZGVkIHRvIGBhcGFjaGUyLjRgCitm b3IgdGhpcywgd2hpY2ggaXMgYXZhaWxhYmxlIGluIGBVYnVudHUgMTQuMDRgLiBUaGVyZSBhcmUg dHV0b3JpYWxzIG9uIHRoZT0KIGludGVybmV0IGZvciBiYWNrcG9ydGluZwordGhlIHdlYnNvY2tl dHMgbW9kdWxlLCBhbmQgaW5zdGFsbGluZyBgYXBhY2hlMi40YCBQUEFzLgorCisjIyBBcGFjaGUg Q29uZmlndXJhdGlvbgorCitIZXJlIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uCisKK2Bg YGFwYWNoZQorUmV3cml0ZUVuZ2luZSBPbgorU2V0RW52SWYgUmVxdWVzdF9VUkkgIi9pcHl0aG9u LyhbMC05XSspL2FwaS9rZXJuZWxzLyIgRE9DS0VSX1BPUlQ9M0QkMQorUmV3cml0ZVJ1bGUgICAg IF4vaXB5dGhvbi8oWzAtOV0rKS9hcGkva2VybmVscy8oLiopJCAgIHdzOi8vMTI3LjAuMC4xOiQx L2k9CnB5dGhvbi8kMS9hcGkva2VybmVscy8kMiBbUCxMXQorUmV3cml0ZVJ1bGUgICAgIF4vaXB5 dGhvbi8oWzAtOV0rKS8oLiopJCAgICAgICAgICAgICBodHRwOi8vbG9jYWxob3N0OiQxL2k9CnB5 dGhvbi8kMS8kMiBbUCxMXQorPExvY2F0aW9uIC9pcHl0aG9uLz4KKyAgICAgICAgIyBzcG9vZiBo ZWFkZXJzIHRvIG1ha2Ugbm90ZXBhZCBhY2NlcHQgdGhlIHJlcXVlc3QgYXMgY29taW5nIGZyb20g PQp0aGUgc2FtZSBvcmlnaW4KKyAgICAgICAgSGVhZGVyIHNldCBPcmlnaW4gImh0dHA6Ly8xMjcu MC4wLjE6JXtET0NLRVJfUE9SVH1lIgorICAgICAgICBSZXF1ZXN0SGVhZGVyIHNldCBPcmlnaW4g Imh0dHA6Ly8xMjcuMC4wLjE6JXtET0NLRVJfUE9SVH1lIgorPC9Mb2NhdGlvbj4KKzwvVmlydHVh bEhvc3Q+CitgYGAKKworV2UnbGwgc3RlcCB0aHJvdWdoIGxpbmUtYnktbGluZSBmb3IgY2xhcml0 eS4KKworYGBgYXBhY2hlCitTZXRFbnZJZiBSZXF1ZXN0X1VSSSAiL2lweXRob24vKFswLTldKykv YXBpL2tlcm5lbHMvIiBET0NLRVJfUE9SVD0zRCQxCitgYGAKKworSGVyZSB3ZSBjaGVjayB0aGUg YFJlcXVlc3RfVVJJYCBmb3IgdGhlIHByZXNlbmNlIGZvciB0aGUga2VybmVsIHJlcXVlc3QuIFc9 CmUgZG8gdGhpcyBvbmx5IGZvciB0aGUgYGFwaS9rZXJuZWxgIHN1YmNhbGwsIGFzIHRoZSBvbmx5 IGNvbmZpZ3VyYXRpb24gd2hpYz0KaCBuZWVkcyBhY2Nlc3MgdG8gYERPQ0tFUl9QT1JUYCBpcyBr ZXJuZWwgY2FsbHMuCisKK2BgYGFwYWNoZQorUmV3cml0ZVJ1bGUgXi9pcHl0aG9uLyhbMC05XSsp L2FwaS9rZXJuZWxzLyguKikkICAgd3M6Ly8xMjcuMC4wLjE6JDEvaXB5dGg9Cm9uLyQxL2FwaS9r ZXJuZWxzLyQyIFtQLExdCitSZXdyaXRlUnVsZSBeL2lweXRob24vKFswLTldKykvKC4qKSQgICAg ICAgICAgICAgaHR0cDovL2xvY2FsaG9zdDokMS9pcHl0aD0Kb24vJDEvJDIgW1AsTF0KK2BgYAor CitUaGVzZSB0d28gcnVsZXMgcHJveHkgYF4vaXB5dGhvbi9gIHJlcXVlc3RzIHRvIHRoZWlyIGNv cnJlY3QgbG9jYXRpb25zLiBBUD0KSSByZXF1ZXN0cyBmb3IgdGhlIElQeXRob24ga2VybmVsIGFy ZSByb3V0ZWQgdGhyb3VnaCB0aGUgd3N0dW5uZWwgKFdlYlNvY2tlPQp0KSBwcm94eSwgd2hpbGUg YWxsIG90aGVyIHJlcXVlc3RzIGdvIHRocm91Z2ggSFRUUC4gVGhlcmUgYXJlIG1vZGlmaWVkIGxp c3Q9CmVkIGFmdGVyIGJvdGgsIGBbUCxMXWAuIGBQYCBzcGVjaWZpZXMgYSBwcm94eSwgYW5kIGBM YCBzcGVjaWZpZXMgdGhpcyBpcyB0aD0KZSBsYXN0IHJ1bGUsIHRvIHByZXZlbnQgdGhlIHNlY29u ZCByZXdyaXRlIHN0YXRlbWVudCBmcm9tIG1hdGNoaW5nIGFsbCBrZXJuPQplbCBjYWxscy4KKwor YGBgYXBhY2hlCis8TG9jYXRpb24gL2lweXRob24vPgorICAgICAgICAjIHNwb29mIGhlYWRlcnMg dG8gbWFrZSBub3RlcGFkIGFjY2VwdCB0aGUgcmVxdWVzdCBhcyBjb21pbmcgZnJvbSA9CnRoZSBz YW1lIG9yaWdpbgorICAgICAgICBIZWFkZXIgc2V0IE9yaWdpbiAiaHR0cDovLzEyNy4wLjAuMTol e0RPQ0tFUl9QT1JUfWUiCisgICAgICAgIFJlcXVlc3RIZWFkZXIgc2V0IE9yaWdpbiAiaHR0cDov LzEyNy4wLjAuMTole0RPQ0tFUl9QT1JUfWUiCis8L0xvY2F0aW9uPgorYGBgCisKK1RoZSBXZWJT b2NrZXQgc2VydmVyIGluIElQeXRob24gcGF5cyBhdHRlbnRpb24gdG8gQ3Jvc3MtT3JpZ2luLVJl cXVlc3RzIGFuPQpkIHdpbGwgdGhyb3VnaCB1cCBhIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3Ig KGluIGRvY2tlcikgaWYgeW91IGF0dGVtcHQgdG89CiBzZW5kIGl0IGJhZCBkYXRhLiBUaHVzLCB3 ZSB1c2UgdGhlIGV4dHJhY3RlZCBwb3J0IG51bWJlciBmcm9tIHRoZSBlYXJsaWVyID0KYFNldEVu dklmYCByZXF1ZXN0IGluIG9yZGVyIHRvIG9idGFpbiB0aGUgcG9ydCB0aGF0IElQeXRob24gd2ls bCBhY3R1YWxseSByPQplY2VpdmUgY29ubmVjdGlvbnMgZnJvbS4KKworIyMgTmdpbnggQ29uZmln dXJhdGlvbgorCitQbGVhc2Ugc3VibWl0IGl0IGlmIHlvdSB3cml0ZSBpdCEKCmRpZmYgLXIgM2M0 ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIyODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0 NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBhOWIgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52 aXJvbm1lbnRzL2lweXRob24vTElDRU5TRQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVn aW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL0xJQ0VOU0UKQEAgLTAsMCArMSwy MSBAQAorVGhlIE1JVCBMaWNlbnNlIChNSVQpCisKK0NvcHlyaWdodCAoYykgMjAxNCBCaj1DMz1C NnJuIEdyPUMzPUJDbmluZworCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjbz0KcHkKK29mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0 byBkPQplYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdoPQp0cwordG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAorY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3 YXJlIGlzCitmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbj0KIGFsbAorY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RyBGUj0KT00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOID0KVEhFCitTT0ZUV0FSRS4KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2 M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9CjI5NDUwOWVjNDhhODgwYTliIGNv bmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL1JFQURNRS5tZAot LS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50 cy9pcHl0aG9uL1JFQURNRS5tZApAQCAtMCwwICsxLDE0NCBAQAorR2FsYXh5IElQeXRob24gSW50 ZWdyYXRpb24KKz0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNECisKK1RoaXMgcHJvamVjdHMgaW50ZWdy YXRlcyBbSVB5dGhvbiBOb3RlYm9va10oaHR0cDovL2lweXRob24ub3JnL25vdGVib29rLmh0PQpt bCksIGEgaW50ZXJhY3RpdmUgY29tcHV0YXRpb25hbCBlbnZpcm9ubWVudCwgd2l0aCBbR2FsYXh5 XShodHRwOi8vZ2FsYXh5cHI9Cm9qZWN0Lm9yZykuPTIwCitXZSBob3BlIHRvIG1ha2UgR2FsYXh5 IG1vcmUgYXR0cmFjdGl2ZSBmb3IgYmlvaW5mb3JtYXRpY2lhbnMgYW5kIHRvIGNvbWJpbj0KZSB0 aGUgcG93ZXIgb2YgYm90aCBwcm9qZWN0cyB0byB1bmxvY2sgY3JlYXRpdml0eSBpbiBkYXRhIGFu YWx5c2lzLCBidXQgYWxzPQpvIGluIE5leHQtR2VuZXJhdGlvbi1UcmFpbmluZyBjb3Vyc2VzLgor CishW0lQeXRob24gaW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20v YmdydWVuaW5nL2dhbGF4eS1pcD0KeXRob24vbWFzdGVyL3N0YXRpYy9pbWFnZXMvaXB5dGhvbl9p bl9nYWxheHkucG5nKQorCitbIVtJTUFHRSBBTFQgVEVYVCBIRVJFXShodHRwOi8vaW1nLnlvdXR1 YmUuY29tL3ZpL2pRRHlUdVlubjFrLzAuanBnKV0oaHR0cD0KOi8vd3d3LnlvdXR1YmUuY29tL3dh dGNoP3Y9M0RqUUR5VHVZbm4xaykKKworCitSZXF1aXJlbWVudHMKKz0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRAorCitUaGUgb25seSByZXF1aXJlbWVudCBpcyB0byBoYXZlIFtE b2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20pIGluc3RhbGxlZD0KIG9uIHlvdXIgc3lzdGVt LgorRm9yIGEgZGV0YWlsZWQgaW5zdHJ1Y3Rpb24gaG93IHRvIGluc3RhbGwgZG9ja2VyLCBwbGVh c2UgbG9vayBhdCB0aGUgW2RvY2s9CmVyIHdlYnNpdGVdKGh0dHBzOi8vZG9jcy5kb2NrZXIuY29t L2luc3RhbGxhdGlvbi8pLgorCisKK0luc3RhbGxhdGlvbgorPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNECisKK0NvcHkgdGhlIHRlbXBsYXRlIGFuZCBjb25maWcgZm9sZGVyIGlu IHlvdXIgYGBHQUxBWFlfUk9PVC9jb25maWcvcGx1Z2lucy92PQppc3VhbGl6YXRpb25zL2lweXRo b25gYCBmb2xkZXIgYW5kIHJlc3RhcnQgR2FsYXh5LgorQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBj bG9uZSB0aGUgcmVwb3NpdG9yeSB3aXRoCisKK2BgYGJhc2gKK2dpdCBjbG9uZSBodHRwczovL2dp dGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uLmdpdCBjb25maWcvcGx1Z2lucy92PQpp c3VhbGl6YXRpb25zL2lweXRob24KK2BgYGAKKworVGhlIElQeXRob24gdmlzdWFsaXNhdGlvbiBv cHRpb24gc2hvdWxkIGJlIHZpc2libGUgbmV4dCB0byB0aGUgdXN1YWwgQ2hhcnQ9CnMgb3IgVHJh Y2tzdGVyIG9wdGlvbnMgaW4geW91ciB2aXN1YWxpc2F0aW9uIG1lbnVlLgorCishW1N0YXJ0aW5n IElQeXRob24gaW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmdy dWVuaW5nLz0KZ2FsYXh5LWlweXRob24vbWFzdGVyL3N0YXRpYy9pbWFnZXMvc3RhcnRfaXB5dGhv bi5wbmcpCisKKworRmVhdHVyZXMKKz0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorCisgKiBydW4g SVB5dGhvbiBkaXJlY3RseSBpbiB5b3VyIEdhbGF4eSBtYWluIHdpbmRvdyBvciBpbiBHYWxheHkg U2NyYXRjaGJvb2sKKyAqIGNvbXBsZXRlIGVuY2Fwc3VsYXRlZCBweXRob24gZW52aXJvbm1lbnQg d2l0aCBtYXRwbG90bGliLCBwYW5kYXMgYW5kIGZyPQppZW5kcyBpbnN0YWxsZWQKKyAqIGFjY2Vz cyB0byBhbGwgZGF0YXNldHMgZnJvbSB5b3VyIGN1cnJlbnQgaGlzdG9yeSB2aWEgcHJlLWRlZmlu ZWQgSVB5dGhvPQpuIGZ1bmN0aW9uCisgKiBtYW5pcHVsYXRlIGFuZCBwbG90IGRhdGEgYXMgeW91 IGxpa2UgYW5kIGV4cG9ydCB5b3VyIG5ldyBmaWxlcyBiYWNrIGludD0KbyB0aGUgR2FsYXh5IGhp c3RvcnkKKyAqIGFjY2VzcyB5b3VyIEdhbGF4eSBpbnN0YW5jZSBmcm9tIElQeXRob24gd2l0aCBi aW9ibGVuZCBhbmQgcmVkZWZpbmVkIGZ1PQpuY3Rpb25zCisgKiBzYXZlIHRoZSBJUHl0aG9uIE5v dGVib29rIGludG8geW91ciBHYWxheHkgaGlzdG9yeQorICogbm90ZWJvb2sgcGVyc2lzdGVuY2Ug YWNyb3NzIHNlc3Npb25zCisgKiBzYXZlZCBJUHl0aG9uIE5vdGVib29rIGZpbGVzIGNhbiBiZSB2 aWV3ZWQgaW4gSFRNTCBhbmQgcmUtb3BlbmVkCisgKiBzZWxmLWNsb3NpbmcgYW5kIGNsZWFuaW5n IElQeXRob24gZG9ja2VyIGNvbnRhaW5lcgorCitIb3cgZG9lcyBpdCB3b3JrCis9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKKworVGhlIG1ha28gdGVtcGxh dGUgZnJvbSB0aGUgR2FsYXh5IHZpc3VhbGlzYXRpb24gZnJhbWV3b3JrIHJlbmRlcnMgdGhlIGlu dGU9CnJmYWNlIGFuZCBidWlsZHMgYWxsIGZpbGVzIGFuZCBjb21tYW5kcyBuZWVkZWQgdG8gbHVu Y2ggdGhlIGRvY2tlciBjb250YWluZT0Kci4gQSBjb25maWcgZmlsZSBpcyBzYXZlZCB1bmRlciBg YC9pbXBvcnQvYGAgaW5zaWRlIHRoZSBkb2NrZXIgY29udGFpbmVyLiBUPQpoZSBJUHl0aG9uIHdl YnBhZ2UgcnVubmluZyBpbiBkb2NrZXIgd2lsbCBiZSBpbmNsdWRlZCBpbiBhIEhUTUwgb2JqZWN0 IGFuZCA9CmRpc3BsYXllZCB0byB0aGUgdXNlci49MjAKK0RlcGVuZGluZyBvbiB5b3VyIGNvbmZp Z3VyYXRpb24gc29tZSBKYXZhU2NyaXB0IG1hZ2ljIGlzIGRvbmUgdG8gYWRkIGFuIG9iPQpqZWN0 IHRvIHRoZSBET00sIHdoaWNoIHdpbGwgYmUgbG9hZGVkIGJ5IHRoZSBicm93c2VyIGFuZCBjb25k aXRpb25hbGx5IGhhbmQ9CmxlcyBsb2dpbi4KK0lzaWRlIG9mIGRvY2tlciBUQ1AgY29ubmVjdGlv bnMgYXJlIG1vbml0b3JlZCB1c2luZyBjcm9uLiBBcyBzb29uIGFzIHRoZSB1PQpzZXIgcXVpdHMg dXNpbmcgdGhlIG5vdGVib29rLCB0aGUgZHJvcHBpbmcgVENQIGNvbm5lY3Rpb25zIGFyZSByZWNv Z25pc2VkIGE9Cm5kIHRoZSBjb3RhaW5lciBjbGVhbnMgdXAgYWZ0ZXIgaXRzZWxmIGFuZCBraWxs cyBpdHNlbGYuCisKKworCitGdW5jdGlvbnMgYW5kIHZhcmlhYmxlcworPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECisK K0ZvciB5b3VyIGNvbnZpZW5jZSwgd2UgaGF2ZSBhZGRlZCBhIGZldyBwcmUtZGVmaW5lZCBmdW5j dGlvbnMgdG8gdGhlIElQeXRoPQpvbiBwcm9maWxlLgorCisjIyMgZ2V0CisKKyAgIFRoZSBnZXQg ZnVuY3Rpb24gd2lsbCBjb3B5IGEgZGF0YXNldCwgaWRlbnRpZmllZCBieSB0aGUgaGlzdG9yeV9p ZCwgZnJvPQptIHlvdXIgY3VycmVudCBHYWxheHk9MjAKKyAgIGludG8gdGhlIGRvY2tlciBjb250 YWluZXIuIEl0IHdpbGwgcmV0dXJuIHRoZSBmaWxlIHBhdGggdG8gdGhlIGNvcGllZCBmPQppbGUu CisKKyAgICpFeGFtcGxlKjoKKyAgIGBgYHB5dGhvbgorICAgICAgd2l0aCBvcGVuKCBnZXQoIDQ0 ICksICdyJykgYXMgaGFuZGxlOgorICAgICAgICAgZm9yIGxpbmUgaW4gaGFuZGxlOgorICAgICAg ICAgICAgcHJpbnQoIGxpbmUgKQorICAgYGBgPTIwCisKKyMjIyBwdXQKKworICAgVGhlIHB1dCBm dW5jdGlvbiB0YWtlcyBhIGZpbGUgcGF0aCBhbmQgdHJhbnNmZXJzIHRoZSBmaWxlIHRvIHRoZSBj dXJyZW49CnQgaGlzdG9yeSBvZiB5b3VyIEdhbGF4eSBzZXNzaW9uLgorCisgICAqRXhhbXBsZSo6 CisgICBgYGBweXRob24KKyAgICAgIHB1dCggJy4vbXlfZmlsZS50c3YnLCBmaWxlX3R5cGUgPTNE ICd0YWJ1bGFyJykKKyAgIGBgYAorCisjIyMgSElTVE9SWV9JRAorCisgICBBY2Nlc3NpbmcgeW91 ciBjdXJyZW50IGhpc3RvcnkgaXMgcG9zc2libGUgd2l0aCB0aGUgcHJlLWRlZmluZWQgSElTVE9S WT0KX0lEIHZhcmlhYmxlLgorICA9MjAKKworIyMjIGNvbm5lY3QgdG8gR2FsYXh5CisKKyAgIElm IHlvdSB3YW50IHRvIGNvbW11bmljYXRlIHdpdGggR2FsYXh5IHlvdSBjYW4gdXNlIGBgYGdldF9n YWxheHlfY29ubmVjPQp0aW9uKClgYGAgdG8gZ2V0IGFuIFtiaW9ibGVuZCBHYWxheHlJbnN0YW5j ZSBvYmplY3RdKGh0dHA6Ly9iaW9ibGVuZC5yZWFkdGg9CmVkb2NzLm9yZy9lbi9sYXRlc3QvYXBp X2RvY3MvZ2FsYXh5L2FsbC5odG1sP2hpZ2hsaWdodD0zRGdhbGF4eWluc3RhbmNlKS4KKworICAg KkV4YW1wbGUqOgorICAgYGBgcHl0aG9uCisgICAgICBmcm9tIGJpb2JsZW5kLmdhbGF4eS5oaXN0 b3JpZXMgaW1wb3J0IEhpc3RvcnlDbGllbnQKKyAgICAgIGdpID0zRCBnZXRfZ2FsYXh5X2Nvbm5l Y3Rpb24oKQorICAgICAgaGMgPTNEIEhpc3RvcnlDbGllbnQoIGdpICkKKyAgICAgIGZvciBkYXRh c2V0IGluIGhjLnNob3dfaGlzdG9yeSggSElTVE9SWV9JRCAsIGNvbnRlbnRzPTNEVHJ1ZSkgKToK KyAgICAgICAgIHByaW50KCBkYXRhc2V0WydpZCddICkKKyAgIGBgYAorCisKK1NlY3VyaXR5Cis9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKKworQnkgZGVmYXVsdCwgbm8gc2VjdXJpdHkgdHVybmVk IG9uLiBUbyBkbyB0aGlzLCB5b3UgbXVzdCBhZGp1c3QgdHdvIHZhcmlhYmw9CmVzLCBgYXBhY2hl X3VybHNgIGFuZAorYHBhc3N3b3JkX2F1dGhgIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgKGBj b25maWcvaXB5dGhvbi5jb25mYCkuPTIwCisKK1RoZSBgYXBhY2hlX3VybHNgIHZhcmlhYmxlIHNo b3VsZCBiZSBzZXQgdG8gYFRydWVgLCBhbmQgY29udGFpbmVycyBzaG91bGQgPQpiZSBzZWN1cmVk IHZpYSBBcGFjaGUrU1NMIGZvciBwcm9kdWN0aW9uIHVzYWdlLiBQbGVhc2Ugc2VlIHRoZSBbc2V0 dXBdKElOU1Q9CkFMTC5tZCkgZG9jdW1lbnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK1RoZSBg cGFzc3dvcmRfYXV0aGAgdmFyaWFibGUgc2hvdWxkIGJlIHNldCB0byBgVHJ1ZWAuIEl0IGZ1bmN0 aW9ucyBieSBnZW5lPQpyYXRpbmcgYSByYW5kb20gcGFzc3dvcmQgd2hpY2ggaXMgb25seSBzaGFy ZWQgd2l0aCB0aGUgZG9ja2VyLCBhbmQgdGhlIHVzZXI9CidzIGJyb3dzZXIgdGhyb3VnaCBHYWxh eHkuIEluIHRoZW9yeSB0aGlzIHNob3VsZCBiZSBhIHNlY3VyZSBzeXN0ZW0gKG9yIGF0ID0KbGVh c3QgYXMgc2VjdXJlIGFzIHRoZSB3ZWFrZXN0IGxpbmspLCBob3dldmVyIGlmIHlvdSBmaW5kIGEg dnVsbmVyYWJpbGl0eSBpPQpuIHRoZSBzeXN0ZW0gd2UndmUgZGV2aXNlZCwgcGxlYXNlIGNvbnRh Y3QgdXMgYW5kIHdlJ2xsIHBhdGNoIGl0IGFzIHNvb24gYXM9CiBwb3NzaWJsZSEKKworCitBdXRo b3JzCis9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKKworICogQmo9QzM9QjZybiBHcj1DMz1CQ25pbmcg PGJqb2Vybi5ncnVlbmluZ0BnbWFpbC5jb20+CisgKiBFcmljIFJhc2NoZSA8cmFzY2hlLmVyaWNA eWFuZGV4LnJ1PgorCisKK0hpc3RvcnkKKz0zRD0zRD0zRD0zRD0zRD0zRD0zRAorCistIHYwLjE6 IEluaXRpYWwgcHVibGljIHJlbGVhc2UgKDAxLjA4LjIwMTQpCisKKworTGljZW5jZSAoTUlUKQor PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECisKK1Blcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh IGNvPQpweQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGQ9CmVhbAoraW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2g9CnRzCit0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsIGFuZC9vciBzZWxsCitjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKK2Z1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCithbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUj0KT00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09G VFdBUkUuCgpkaWZmIC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIg LXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVn aW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL2NvbmZpZy9pcD0KeXRob24uY29u ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25t ZW50cy9pcHl0aG9uL2NvbmZpZy9pcHl0aG9uLmNvbmYKQEAgLTAsMCArMSw5IEBACitbbWFpbl0K K2FwYWNoZV91cmxzID0zRCBGYWxzZQorcGFzc3dvcmRfYXV0aCA9M0QgRmFsc2UKK3NzbCA9M0Qg RmFsc2UKKworW2RvY2tlcl0KK2NvbW1hbmQgPTNEIGRvY2tlcgoraW1hZ2UgPTNEIGJncnVlbmlu Zy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vaworCgpkaWZmIC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2 ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9CjI5NDUwOWVj NDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9u L2NvbmZpZy9pcD0KeXRob24ueG1sCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnL3BsdWdpbnMv aW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vY29uZmlnL2lweXRob24ueG1sCkBAIC0w LDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249M0QiMS4wIiBlbmNvZGluZz0zRCJVVEYtOCI/Pgor PCFET0NUWVBFIHZpc3VhbGl6YXRpb24gU1lTVEVNICIuLi8uLi9pbnRlcmFjdGl2ZV9lbnZpcm9u bWVudHMuZHRkIj4KKzx2aXN1YWxpemF0aW9uIG5hbWU9M0QiSVB5dGhvbiI+CisgICAgPGRhdGFf c291cmNlcz4KKyAgICAgICAgPGRhdGFfc291cmNlPgorICAgICAgICAgICAgPG1vZGVsX2NsYXNz Pkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb248L21vZGVsX2NsYXNzPgorICAgICAgICAgICAgPHRl c3QgdHlwZT0zRCJpc2luc3RhbmNlIiB0ZXN0X2F0dHI9M0QiZGF0YXR5cGUiIHJlc3VsdF90eXBl PQo9M0QiZGF0YXR5cGUiPnRhYnVsYXIuVGFidWxhcjwvdGVzdD4KKyAgICAgICAgICAgIDx0ZXN0 IHR5cGU9M0QiaXNpbnN0YW5jZSIgdGVzdF9hdHRyPTNEImRhdGF0eXBlIiByZXN1bHRfdHlwZT0K PTNEImRhdGF0eXBlIj5kYXRhLlRleHQ8L3Rlc3Q+CisgICAgICAgICAgICA8dG9fcGFyYW0gcGFy YW1fYXR0cj0zRCJpZCI+ZGF0YXNldF9pZDwvdG9fcGFyYW0+CisgICAgICAgIDwvZGF0YV9zb3Vy Y2U+CisgICAgPC9kYXRhX3NvdXJjZXM+CisgICAgPHBhcmFtcz4KKyAgICAgICAgPHBhcmFtIHR5 cGU9M0QiZGF0YXNldCIgdmFyX25hbWVfaW5fdGVtcGxhdGU9M0QiaGRhIiByZXF1aXJlZD0zRCJ0 PQpydWUiPmRhdGFzZXRfaWQ8L3BhcmFtPgorICAgIDwvcGFyYW1zPgorICAgIDx0ZW1wbGF0ZT5p cHl0aG9uLm1ha288L3RlbXBsYXRlPgorPC92aXN1YWxpemF0aW9uPgoKZGlmZiAtciAzYzRmMmVj MjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBiIC1yIDQwZjdmOTQ0MDkwMDc5ZDQ0YjQ3 ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9u bWVudHMvaXB5dGhvbi9zdGF0aWMvaW09CmFnZXMvaXB5dGhvbl9pbl9nYWxheHkucG5nCkJpbmFy eSBmaWxlIGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3N0 YXRpYy9pbWFnZXMvaT0KcHl0aG9uX2luX2dhbGF4eS5wbmcgaGFzIGNoYW5nZWQKCmRpZmYgLXIg M2M0ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIyODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3 OWQ0NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBhOWIgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVf ZW52aXJvbm1lbnRzL2lweXRob24vc3RhdGljL2ltPQphZ2VzL3N0YXJ0X2lweXRob24ucG5nCkJp bmFyeSBmaWxlIGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9u L3N0YXRpYy9pbWFnZXMvcz0KdGFydF9pcHl0aG9uLnBuZyBoYXMgY2hhbmdlZAoKZGlmZiAtciAz YzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBiIC1yIDQwZjdmOTQ0MDkwMDc5 ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9l bnZpcm9ubWVudHMvaXB5dGhvbi9zdGF0aWMvanM9Ci9pZS5qcwotLS0gL2Rldi9udWxsCisrKyBi L2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3N0YXRpYy9q cy9pZS5qcwpAQCAtMCwwICsxLDU5IEBACisvKioKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHJl bW92ZSBjb250ZW50IGZyb20gdGhlIG1haW4gYXJlYSBhbmQgYWRkIHRoZSBub3RlPQpib29rLgor ICogTm90IGlkZW1wb3RlbnQKKyAqLworZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKHVybCl7Cisg ICAgY2xlYXJfbWFpbl9hcmVhKCk7CisgICAgJCgnI21haW4nKS5hcHBlbmQoJzxpZnJhbWUgZnJh bWVCb3JkZXI9M0QiMCIgc2VhbWxlc3M9M0Qic2VhbWxlc3MiIHN0eT0KbGU9M0Qid2lkdGg6IDEw MCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyIgc2Nyb2xsaW5nPTNEIm5vIiBzcmM9 M0QiPQonKyB1cmwgKyciPjwvaWZyYW1lPicKKyAgICApOworfQorCitmdW5jdGlvbiBjbGVhcl9t YWluX2FyZWEoKXsKKyAgICAkKCcjc3Bpbm5lcicpLnJlbW92ZSgpOworICAgICQoJyNtYWluJyku Y2hpbGRyZW4oKS5yZW1vdmUoKTsKK30KKworZnVuY3Rpb24gZGlzcGxheV9zcGlubmVyKCl7Cisg ICAgICAgICQoJyNtYWluJykuYXBwZW5kKCc8aW1nIGlkPTNEInNwaW5uZXIiIHNyYz0zRCInICsg Z2FsYXh5X3Jvb3QgKyAnLz0Kc3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0eWxlPTNE InBvc2l0aW9uOmFic29sdXRlO21hcmdpbjphdXRvO3RvcDowPQo7bGVmdDowO3JpZ2h0OjA7Ym90 dG9tOjA7Ij4nKTsKK30KKworCisvKioKKyAqIFRlc3QgYXZhaWxhYmlsaXR5IG9mIGEgVVJMLCBh bmQgY2FsbCBhIGNhbGxiYWNrIHdoZW4gZG9uZS4KKyAqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNv bS9xLzI1MzkwMjA2LzM0NzM2OAorICogQHBhcmFtIHtTdHJpbmd9IHVybDogVVJMIHRvIHRlc3Qg YXZhaWxhYmlsaXR5IG9mLiBNdXN0IHJldHVybiBhIDIwMCAoMzA9CjItPjIwMCBpcyBPSykuCisg KiBAcGFyYW0ge1N0cmluZ30gY2FsbGJhY2s6IGZ1bmN0aW9uIHRvIGNhbGwgb25jZSBzdWNjZXNz ZnVsbHkgY29ubmVjdGVkLgorICoKKyAqLworZnVuY3Rpb24gdGVzdF9pZV9hdmFpbGFiaWxpdHko dXJsLCBzdWNjZXNzX2NhbGxiYWNrKXsKKyAgICB2YXIgcmVxdWVzdF9jb3VudCA9M0QgMDsKKyAg ICBkaXNwbGF5X3NwaW5uZXIoKTsKKyAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwoZnVuY3Rp b24oKXsKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIHVybDogdXJsLAorICAgICAgICAg ICAgeGhyRmllbGRzOiB7CisgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlCisg ICAgICAgICAgICB9LAorICAgICAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgICAgICB0aW1l b3V0OiA1MDAsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpeworICAgICAgICAgICAg ICAgIGNvbnNvbGUubG9nKCJDb25uZWN0ZWQgdG8gSUUsIHJldHVybmluZyIpOworICAgICAgICAg ICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3Nf Y2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24o anF4aHIsIHN0YXR1cywgZXJyb3IpeworICAgICAgICAgICAgICAgIHJlcXVlc3RfY291bnQrKzsK KyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUmVxdWVzdCAiICsgcmVxdWVzdF9jb3VudCk7 CisgICAgICAgICAgICAgICAgaWYocmVxdWVzdF9jb3VudCA+IDMwKXsKKyAgICAgICAgICAgICAg ICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy X21haW5fYXJlYSgpOworICAgICAgICAgICAgICAgICAgICB0b2FzdHIuZXJyb3IoCisgICAgICAg ICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSUUsIGNvbnRhY3QgeW91ciBh ZG1pbmlzdHJhdD0Kb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAw LCAndGFwVG9EaXNtPQppc3MnOiBmYWxzZX0KKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sIDEwMDApOwor fQoKZGlmZiAtciAzYzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBiIC1yIDQw ZjdmOTQ0MDkwMDc5ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1Z2lucy9p bnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9zdGF0aWMvanM9Ci9pcHl0aG9uLmpzCi0t LSAvZGV2L251bGwKKysrIGIvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRz L2lweXRob24vc3RhdGljL2pzL2lweXRob24uanMKQEAgLTAsMCArMSw4NSBAQAorZnVuY3Rpb24g bWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29yZCl7CisgICAgdG9hc3RyLmluZm8oCisgICAgICAg ICJBdXRvbWF0aWMgYXV0aG9yaXphdGlvbiBmYWlsZWQuIFlvdSBjYW4gbWFudWFsbHkgbG9naW4g d2l0aDo8YnI+Ij0KICsgcGFzc3dvcmQgKyAiPGJyPjxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIu Y29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93PQppa2kvQXV0b21hdGljLUF1dGhvcml6YXRp b24tRmFpbGVkJyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCisgICAg ICAgICJQbGVhc2UgbG9naW4gbWFudWFsbHkiLAorICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1 ZSwgJ3RpbWVPdXQnOiAxMDAwMDAsICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KKyAgICApOworfQor CitmdW5jdGlvbiBtZXNzYWdlX2ZhaWxlZF9jb25uZWN0aW9uKCl7CisgICAgdG9hc3RyLmVycm9y KAorICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSVB5dGhvbiBOb3RlYm9vay4gUGxlYXNl IGNvbnRhY3QgeW91ciBhZG1pbmk9CnN0cmF0b3IuIDxhIGhyZWY9M0QnaHR0cHM6Ly9naXRodWIu Y29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93aWtpL0NvdWxkLT0Kbm90LWNvbm5lY3QtdG8t SVB5dGhvbi1Ob3RlYm9vaycgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4uLjwvYT4i LAorICAgICJTZWN1cml0eSB3YXJuaW5nIiwKKyAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUs ICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rpc21pc3MnOiB0cnVlfQorICAgICk7Cit9CisKK2Z1 bmN0aW9uIG1lc3NhZ2Vfbm9fYXV0aCgpeworICAgIC8vIE5vIGxvbmdlciBhIHNlY3VyaXR5IGlz c3VlLCBwcm94eSB2YWxpZGF0ZXMgR2FsYXh5IHNlc3Npb24gdG9rZW4uCisgICAgLyoKKyAgICB0 b2FzdHIud2FybmluZygKKyAgICAgICAgIklQeXRob24gTm90ZWJvb2sgd2FzIGx1bmNoZWQgd2l0 aG91dCBhdXRoZW50aWNhdGlvbi4gVGhpcyBpcyBhIHNlPQpjdXJpdHkgaXNzdWUuIDxhIGhyZWY9 M0QnaHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi93aWtpL0k9ClB5 dGhvbi1Ob3RlYm9vay13YXMtbHVuY2hlZC13aXRob3V0LWF1dGhlbnRpY2F0aW9uJyB0YXJnZXQ9 M0QnX2JsYW5rJz5Nb3JlID0KZGV0YWlscyAuLi48L2E+IiwKKyAgICAgICAgIlNlY3VyaXR5IHdh cm5pbmciLAorICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwg J3RhcFRvRGlzbWlzcyc6IGZhbHNlfQorICAgICk7CisgICAgKi8KK30KKworCisvKioKKyAqIExv YWQgYW4gaW50ZXJhY3RpdmUgZW52aXJvbm1lbnQgKElFKSBmcm9tIGEgcmVtb3RlIFVSTAorICog QHBhcmFtIHtTdHJpbmd9IHBhc3N3b3JkOiBwYXNzd29yZCB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0 byB0aGUgcmVtb3RlIHI9CmVzb3VyY2UKKyAqIEBwYXJhbSB7U3RyaW5nfSBub3RlYm9va19sb2dp bl91cmw6IFVSTCB0aGF0IHNob3VsZCBiZSBQT1NUZWQgdG8gZm9yIGxvPQpnaW4KKyAqIEBwYXJh bSB7U3RyaW5nfSBub3RlYm9va19hY2Nlc3NfdXJsOiB0aGUgVVJMIGVtYmVkZWQgaW4gdGhlIHBh Z2UgYW5kIGxvPQphZGVkCisgKgorICovCitmdW5jdGlvbiBsb2FkX25vdGVib29rKHBhc3N3b3Jk LCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vzc191cmwpeworICAgICQoIGRvY3Vt ZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRlc3Qgbm90ZWJvb2tfbG9naW5f dXJsIGZvciBhY2Nlc3NpYmlsaXR5LCBleGVjdXRpbmcgdGhlIGxvZ2luKz0KbG9hZCBmdW5jdGlv biB3aGVuZXZlcgorICAgICAgICAvLyB3ZSd2ZSBzdWNjZXNzZnVsbHkgY29ubmVjdGVkIHRvIHRo ZSBJRS4KKyAgICAgICAgdGVzdF9pZV9hdmFpbGFiaWxpdHkobm90ZWJvb2tfbG9naW5fdXJsLCBm dW5jdGlvbigpeworICAgICAgICAgICAgX2hhbmRsZV9ub3RlYm9va19sb2FkaW5nKHBhc3N3b3Jk LCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVib289CmtfYWNjZXNzX3VybCk7CisgICAgICAgIH0p OworICAgIH0pOworfQorCisvKioKKyAqIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgSUVzCisgKi8K K2Z1bmN0aW9uIF9oYW5kbGVfbm90ZWJvb2tfbG9hZGluZyhwYXNzd29yZCwgbm90ZWJvb2tfbG9n aW5fdXJsLCBub3RlYm9va19hPQpjY2Vzc191cmwpeworICAgIGlmICggaWVfcGFzc3dvcmRfYXV0 aCApIHsKKyAgICAgICAgLy8gTWFrZSBhbiBBSkFYIFBPU1QKKyAgICAgICAgJC5hamF4KHsKKyAg ICAgICAgICAgIHR5cGU6ICJQT1NUIiwKKyAgICAgICAgICAgIC8vIHRvIHRoZSBMb2dpbiBVUkwK KyAgICAgICAgICAgIHVybDogbm90ZWJvb2tfbG9naW5fdXJsLAorICAgICAgICAgICAgLy8gV2l0 aCBvdXIgcGFzc3dvcmQKKyAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICAncGFz c3dvcmQnOiBwYXNzd29yZAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHhockZpZWxkczog eworICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZQorICAgICAgICAgICAgfSwK KyAgICAgICAgICAgIC8vIElmIHRoYXQgaXMgc3VjY2Vzc2Z1bCwgbG9hZCB0aGUgbm90ZWJvb2sK KyAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgYXBwZW5k X25vdGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOworICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIGVycm9yOiBmdW5jdGlvbihqcXhociwgc3RhdHVzLCBlcnJvcil7CisgICAgICAgICAgICAg ICAgaWYoaWVfcGFzc3dvcmRfYXV0aCAmJiAhaWVfYXBhY2hlX3VybHMpeworICAgICAgICAgICAg ICAgICAgICAvLyBGYWlsdXJlIGhhcHBlbnMgZHVlIHRvIENPUlMKKyAgICAgICAgICAgICAgICAg ICAgbWVzc2FnZV9mYWlsZWRfYXV0aChwYXNzd29yZCk7CisgICAgICAgICAgICAgICAgICAgIGFw cGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKKyAgICAgICAgICAgICAgICB9ZWxz ZXsKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV9mYWlsZWRfY29ubmVjdGlvbigpOworICAg ICAgICAgICAgICAgICAgICAvLyBEbyB3ZSB3YW50IHRvIHRyeSBhbmQgbG9hZCB0aGUgbm90ZWJv b2sgYW55d2F5PyBKdXM9CnQgaW4gY2FzZT8KKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kX25v dGVib29rKG5vdGVib29rX2FjY2Vzc191cmwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvLyBOb3QgdXNp bmcgcGFzc3dvcmQgYXV0aCwganVzdCBlbWJlZCBpdCB0byBhdm9pZCBjb250ZW50LW9yaWdpbiA9 Cmlzc3Vlcy4KKyAgICAgICAgbWVzc2FnZV9ub19hdXRoKCk7CisgICAgICAgIGFwcGVuZF9ub3Rl Ym9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKKyAgICB9Cit9CgpkaWZmIC1yIDNjNGYyZWMyMjI0 NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9 CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50 cy9pcHl0aG9uL3RlbXBsYXRlcz0KL2llLm1ha28KLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcv cGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFr bwpAQCAtMCwwICsxLDE2MiBAQAorPCUhCitpbXBvcnQgb3MKK2ltcG9ydCB5YW1sCitpbXBvcnQg c2hsZXgKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBoYXNobGliCitpbXBv cnQgc3VicHJvY2VzcworaW1wb3J0IENvbmZpZ1BhcnNlcgorCislPgorCis8JWRlZiBuYW1lPTNE InNldF9pZChuYW1lKSI+Cis8JQorICAgICIiIgorICAgICAgICBJRXMgbXVzdCByZWdpc3RlciB0 aGVpciBuYW1lLCBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjb25zdHJ1Y3Rpbmcgc3Q9CnJpbmdzCisK KyAgICAgICAgQWRkaXRpb25hbGx5IHRoaXMgbWV0aG9kIHN0b3JlcyBsb3RzIG9mIGNvbmZpZyBv cHRpb25zIHdlIHdhbnQgdG8gPQphY2Nlc3MgZWxzZXdoZXJlLgorICAgICIiIgorICAgIHNlbGYu YXR0ci52aXpfaWQgPTNEIG5hbWUKKyAgICBzZWxmLmF0dHIuaGlzdG9yeV9pZCA9M0QgdHJhbnMu c2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkICkKKyAgICBzZWxmLmF0dHIucHJv eHlfcmVxdWVzdCA9M0QgdHJhbnMuYXBwLnByb3h5X21hbmFnZXIuc2V0dXBfcHJveHkoIHRyYW5z PQogKQorICAgIHNlbGYuYXR0ci5wcm94eV91cmwgPTNEIHNlbGYuYXR0ci5wcm94eV9yZXF1ZXN0 WyAncHJveHlfdXJsJyBdCisgICAgc2VsZi5hdHRyLmdhbGF4eV9jb25maWcgPTNEIHRyYW5zLmFw cC5jb25maWcKKyAgICBzZWxmLmF0dHIuZ2FsYXh5X3Jvb3RfZGlyID0zRCBvcy5wYXRoLmFic3Bh dGgoc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuPQpyb290KQorICAgIHNlbGYuYXR0ci5yb290ID0z RCBoLnVybF9mb3IoIi8iKQorICAgIHNlbGYuYXR0ci5hcHBfcm9vdCA9M0Qgc2VsZi5hdHRyLnJv b3QgKyAicGx1Z2lucy92aXN1YWxpemF0aW9ucy8iICsgc2U9CmxmLmF0dHIudml6X2lkICsgIi9z dGF0aWMvIgorCisgICAgIyBTdG9yZSBvdXIgdGVtcGxhdGUgYW5kIGNvbmZpZ3VyYXRpb24gcGF0 aAorICAgIHNlbGYuYXR0ci5vdXJfY29uZmlnX2RpciA9M0Qgb3MucGF0aC5qb2luKHBsdWdpbl9w YXRoLCAiY29uZmlnIikKKyAgICBzZWxmLmF0dHIub3VyX3RlbXBsYXRlX2RpciA9M0Qgb3MucGF0 aC5qb2luKHBsdWdpbl9wYXRoLCAidGVtcGxhdGVzIikKKyAgICBzZWxmLmF0dHIudml6X2NvbmZp ZyA9M0QgQ29uZmlnUGFyc2VyLlNhZmVDb25maWdQYXJzZXIoZGVmYXVsdF9kaWN0KQorICAgIHNl bGYuYXR0ci52aXpfY29uZmlnLnJlYWQoIG9zLnBhdGguam9pbiggc2VsZi5hdHRyLm91cl9jb25m aWdfZGlyLCBzZWw9CmYuYXR0ci52aXpfaWQgKyAiLmNvbmYiICkgKQorICAgICMgU3RvcmUgc29t ZSB2YXJpYWJsZXMgd2Ugd2FudCBieSBkZWZhdWx0CisgICAgc2VsZi5hdHRyLlBBU1NXT1JEX0FV VEggPTNEIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldGJvb2xlYW4oIm1haW4iLCAicD0KYXNzd29y ZF9hdXRoIikKKyAgICBzZWxmLmF0dHIuQVBBQ0hFX1VSTFMgPTNEIHNlbGYuYXR0ci52aXpfY29u ZmlnLmdldGJvb2xlYW4oIm1haW4iLCAiYXBhPQpjaGVfdXJscyIpCisgICAgc2VsZi5hdHRyLlNT TF9VUkxTID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzbCIp CisgICAgc2VsZi5hdHRyLlBPUlQgPTNEIHNlbGYuYXR0ci5wcm94eV9yZXF1ZXN0WyAncHJveGll ZF9wb3J0JyBdCisgICAgc2VsZi5hdHRyLkhPU1QgPTNEIHJlcXVlc3QuaG9zdC5yc3BsaXQoJzon LCAxKVswXQorJT4KKzwvJWRlZj4KKworPCVkZWYgbmFtZT0zRCJ3cml0ZV9jb25mX2ZpbGUob3V0 cHV0X2RpcmVjdG9yeSwgZXh0cmE9M0R7fSkiPgorPCUKKyAgICAiIiIKKyAgICAgICAgQnVpbGQg dXAgYSBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCBpcyBzdGFuZGFyZCBmb3IgQUxMIElFcy4KKwor ICAgICAgICBUT0RPOiByZXBsYWNlIGhhc2hlZCBwYXNzd29yZCB3aXRoIHBsYWludGV4dC4KKyAg ICAiIiIKKyAgICBjb25mX2ZpbGUgPTNEIHsKKyAgICAgICAgJ2hpc3RvcnlfaWQnOiBzZWxmLmF0 dHIuaGlzdG9yeV9pZCwKKyAgICAgICAgJ2FwaV9rZXknOiBnZXRfYXBpX2tleSgpLAorICAgICAg ICAncmVtb3RlX2hvc3QnOiByZXF1ZXN0LnJlbW90ZV9hZGRyLAorICAgICAgICAnZG9ja2VyX3Bv cnQnOiBzZWxmLmF0dHIuUE9SVCwKKyAgICAgICAgJ2NvcnNfb3JpZ2luJzogcmVxdWVzdC5ob3N0 X3VybCwKKyAgICB9CisKKyAgICBpZiBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy5nYWxheHlfaW5m cmFzdHJ1Y3R1cmVfdXJsX3NldDoKKyAgICAgICAgY29uZl9maWxlWydnYWxheHlfdXJsJ10gPTNE IHNlbGYuYXR0ci5nYWxheHlfY29uZmlnLmdhbGF4eV9pbmZyYXN0PQpydWN0dXJlX3VybC5yc3Ry aXAoJy8nKSArICcvJworICAgIGVsc2U6CisgICAgICAgIGNvbmZfZmlsZVsnZ2FsYXh5X3VybCdd ID0zRCByZXF1ZXN0LmFwcGxpY2F0aW9uX3VybC5yc3RyaXAoJy8nKSArID0KJy8nCisgICAgICAg IGNvbmZfZmlsZVsnZ2FsYXh5X3Bhc3Rlcl9wb3J0J10gPTNEIHNlbGYuYXR0ci5nYWxheHlfY29u ZmlnLmd1ZXNzXz0KZ2FsYXh5X3BvcnQoKQorCisgICAgaWYgc2VsZi5hdHRyLlBBU1NXT1JEX0FV VEg6CisgICAgICAgICMgR2VuZXJhdGUgYSByYW5kb20gcGFzc3dvcmQgKyBzYWx0CisgICAgICAg IG5vdGVib29rX3B3X3NhbHQgPTNEIHNlbGYuZ2VuZXJhdGVfcGFzc3dvcmQobGVuZ3RoPTNEMTIp CisgICAgICAgIG5vdGVib29rX3B3ID0zRCBzZWxmLmdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0z RDI0KQorICAgICAgICBtID0zRCBoYXNobGliLnNoYTEoKQorICAgICAgICBtLnVwZGF0ZSggbm90 ZWJvb2tfcHcgKyBub3RlYm9va19wd19zYWx0ICkKKyAgICAgICAgY29uZl9maWxlWydub3RlYm9v a19wYXNzd29yZCddID0zRCAnc2hhMTolczolcycgJSAobm90ZWJvb2tfcHdfc2FsPQp0LCBtLmhl eGRpZ2VzdCgpKQorICAgICAgICAjIFNob3VsZCB3ZSB1c2UgcGFzc3dvcmQgYmFzZWQgY29ubmVj dGlvbiBvciAiZGVmYXVsdCIgY29ubmVjdGlvbiA9CnN0eWxlIGluIGdhbGF4eQorICAgIGVsc2U6 CisgICAgICAgIG5vdGVib29rX3B3ID0zRCAiTm9uZSIKKworICAgICMgU29tZSB3aWxsIG5lZWQg dG8gcGFzcyBleHRyYSBkYXRhCisgICAgZm9yIGV4dHJhX2tleSBpbiBleHRyYToKKyAgICAgICAg Y29uZl9maWxlW2V4dHJhX2tleV0gPTNEIGV4dHJhW2V4dHJhX2tleV0KKworICAgIHNlbGYuYXR0 ci5ub3RlYm9va19wdyA9M0Qgbm90ZWJvb2tfcHcKKyAgICAjIFdyaXRlIGNvbmYKKyAgICB3aXRo IG9wZW4oIG9zLnBhdGguam9pbiggb3V0cHV0X2RpcmVjdG9yeSwgJ2NvbmYueWFtbCcgKSwgJ3di JyApIGFzIGhhPQpuZGxlOgorICAgICAgICBoYW5kbGUud3JpdGUoIHlhbWwuZHVtcChjb25mX2Zp bGUsIGRlZmF1bHRfZmxvd19zdHlsZT0zREZhbHNlKSApCisKKyU+Cis8LyVkZWY+CisKKzwlZGVm IG5hbWU9M0QiZ2VuZXJhdGVfaGV4KGxlbmd0aCkiPgorPCUKKyAgICAiIiIKKyAgICAgICAgR2Vu ZXJhdGUgYSBoZXggc3RyaW5nCisgICAgIiIiCisgICAgcmV0dXJuICcnLmpvaW4ocmFuZG9tLmNo b2ljZSgnMDEyMzQ1Njc4OWFiY2RlZicpIGZvciBfIGluIHJhbmdlKGxlbmd0aD0KKSkKKyU+Cis8 LyVkZWY+CisKKzwlZGVmIG5hbWU9M0QiZ2VuZXJhdGVfcGFzc3dvcmQobGVuZ3RoKSI+Cis8JQor ICAgICIiIgorICAgICAgICBHZW5lcmF0ZSBhIHJhbmRvbSBhbHBoYW51bWVyaWMgcGFzc3dvcmQK KyAgICAiIiIKKyAgICByZXR1cm4gJycuam9pbihyYW5kb20uY2hvaWNlKCcwMTIzNDU2Nzg5YWJj ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKSBmPQpvciBfIGluIHJhbmdlKGxlbmd0aCkpCislPgor PC8lZGVmPgorCis8JWRlZiBuYW1lPTNEImphdmFzY3JpcHRfYm9vbGVhbihweXRob25fYm9vbGVh bikiPgorPCUKKyAgICAiIiIKKyAgICAgICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY29udmVy dCBib29sZWFuIGZvciB1c2UgaW4gSlMKKyAgICAiIiIKKyAgICBpZiBweXRob25fYm9vbGVhbjoK KyAgICAgICAgcmV0dXJuICJ0cnVlIjsKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gImZhbHNl IgorJT4KKzwvJWRlZj4KKworCis8JWRlZiBuYW1lPTNEInVybF90ZW1wbGF0ZSh1cmxfdGVtcGxh dGUpIj4KKzwlCisgICAgIiIiCisgICAgICAgIFByb2Nlc3MgYSBVUkwgdGVtcGxhdGUKKworICAg ICAgICBUaGVyZSBhcmUgc2V2ZXJhbCB2YXJpYWJsZXMgYWNjZXNzaWJsZSB0byB0aGUgdXNlcjoK KworICAgICAgICAgICAgLSAke1BST1hZX1VSTH0gd2lsbCBiZSByZXBsYWNlZCB3aXRoIGR5bmFt aWNhbGx5IGNyZWF0ZSBwcm94eQorICAgICAgICAgICAgLSAke1BPUlR9IHdpbGwgYmUgcmVwbGFj ZWQgd2l0aCB0aGUgcG9ydCB0aGUgZG9ja2VyIGltYWdlIGlzIGE9CnR0YWNoZWQgdG8KKyAgICAi IiIKKyAgICB1cmwgPTNEIHVybF90ZW1wbGF0ZS5yZXBsYWNlKCcke1BST1hZX1VSTH0nLCBzdHIo c2VsZi5hdHRyLnByb3h5X3VybCkpPQogXAorICAgICAgICAgICAgLnJlcGxhY2UoJyR7UE9SVH0n LCBzdHIoc2VsZi5hdHRyLlBPUlQpKQorICAgIHJldHVybiB1cmwKKyU+Cis8LyVkZWY+CisKKwor PCVkZWYgbmFtZT0zRCJkb2NrZXJfY21kKHRlbXBfZGlyKSI+Cis8JQorICAgICIiIgorICAgICAg ICBHZW5lcmF0ZSBhbmQgcmV0dXJuIHRoZSBkb2NrZXIgY29tbWFuZCB0byBleGVjdXRlCisgICAg IiIiCisgICAgcmV0dXJuICclcyBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOiVzIC12 ICIlczovaW1wb3J0LyIgJXMnICUgXAorICAgICAgICAoc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0 KCJkb2NrZXIiLCAiY29tbWFuZCIpLCBzZWxmLmF0dHIuUE9SVCwgc2U9CmxmLmF0dHIuZG9ja2Vy X3BvcnQsCisgICAgICAgICB0ZW1wX2Rpciwgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0KCJkb2Nr ZXIiLCAiaW1hZ2UiKSkKKyU+Cis8LyVkZWY+CisKKworPCVkZWYgbmFtZT0zRCJkZWZhdWx0X2ph dmFzY3JpcHRfdmFyaWFibGVzKCkiPgorLy8gR2xvYmFscworaWVfcGFzc3dvcmRfYXV0aCA9M0Qg JHsgc2VsZi5qYXZhc2NyaXB0X2Jvb2xlYW4oc2VsZi5hdHRyLlBBU1NXT1JEX0FVVEgpIH07Citp ZV9hcGFjaGVfdXJscyA9M0QgJHsgc2VsZi5qYXZhc2NyaXB0X2Jvb2xlYW4oc2VsZi5hdHRyLkFQ QUNIRV9VUkxTKSB9OworaWVfcGFzc3dvcmQgPTNEICckeyBzZWxmLmF0dHIubm90ZWJvb2tfcHcg fSc7Cit2YXIgZ2FsYXh5X3Jvb3QgPTNEICckeyBzZWxmLmF0dHIucm9vdCB9JzsKK3ZhciBhcHBf cm9vdCA9M0QgJyR7IHNlbGYuYXR0ci5hcHBfcm9vdCB9JzsKKzwvJWRlZj4KKworCis8JWRlZiBu YW1lPTNEImxvYWRfZGVmYXVsdF9qcygpIj4KKyR7aC5jc3MoICdiYXNlJyApIH0KKyR7aC5qcygg J2xpYnMvanF1ZXJ5L2pxdWVyeScsCisgICAgICAgICdsaWJzL3RvYXN0cicsCisgICAgICAgICds aWJzL3JlcXVpcmUnKX0KKzwvJWRlZj4KCmRpZmYgLXIgM2M0ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAw NjIyODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYz0KMjk0NTA5ZWM0OGE4 ODBhOWIgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vdGVt cGxhdGVzPQovaXB5dGhvbi5tYWtvCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnL3BsdWdpbnMv aW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbwpA QCAtMCwwICsxLDY0IEBACis8JW5hbWVzcGFjZSBmaWxlPTNEImllLm1ha28iIG5hbWU9M0QiaWUi Lz4KKzwlCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0 IHN1YnByb2Nlc3MKKworIyBTZXRzIElEIGFuZCBzZXRzIHVwIGEgbG90IG9mIG90aGVyIHZhcmlh YmxlcworaWUuc2V0X2lkKCJpcHl0aG9uIikKK2llLmF0dHIuZG9ja2VyX3BvcnQgPTNEIDY3ODkK KyMgQ3JlYXRlIHRlbXBkaXIgaW4gZ2FsYXh5Cit0ZW1wX2RpciA9M0Qgb3MucGF0aC5hYnNwYXRo KCB0ZW1wZmlsZS5ta2R0ZW1wKCkgKQorIyBXcml0ZSBvdXQgY29uZiBmaWxlLi4ubmVlZHMgd29y aworaWUud3JpdGVfY29uZl9maWxlKHRlbXBfZGlyKQorCisjIyBJUHl0aG9uIFNwZWNpZmljCisj IFByZXBhcmUgYW4gZW1wdHkgbm90ZWJvb2sKK25vdGVib29rX2lkID0zRCBpZS5nZW5lcmF0ZV9o ZXgoNjQpCit3aXRoIG9wZW4oIG9zLnBhdGguam9pbiggaWUuYXR0ci5vdXJfdGVtcGxhdGVfZGly LCAnbm90ZWJvb2suaXB5bmInICksICdyJz0KKSBhcyBuYl9oYW5kbGU6CisgICAgZW1wdHlfbmIg PTNEIG5iX2hhbmRsZS5yZWFkKCkKK2VtcHR5X25iID0zRCBlbXB0eV9uYiAlIG5vdGVib29rX2lk CisjIENvcHkgb3ZlciBkZWZhdWx0IG5vdGVib29rLCB1bmxlc3MgdGhlIGRhdGFzZXQgdGhpcyB2 aXogaXMgcnVubmluZyBvbiBpcz0KIGEgbm90ZWJvb2sKK2VtcHR5X25iX3BhdGggPTNEIG9zLnBh dGguam9pbih0ZW1wX2RpciwgJ2lweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5iJykKK2lmIGhk YS5kYXRhdHlwZS5fX2NsYXNzX18uX19uYW1lX18gIT0zRCAiSXB5bmIiOgorICAgIHdpdGggb3Bl biggZW1wdHlfbmJfcGF0aCwgJ3crJyApIGFzIGhhbmRsZToKKyAgICAgICAgaGFuZGxlLndyaXRl KCBlbXB0eV9uYiApCitlbHNlOgorICAgIHNodXRpbC5jb3B5KCBoZGEuZmlsZV9uYW1lLCBlbXB0 eV9uYl9wYXRoICkKKworCisjIyBHZW5lcmFsIElFIHNwZWNpZmljCisjIEFjY2VzcyBVUkxzIGZv ciB0aGUgbm90ZWJvb2sgZnJvbSB3aXRoaW4gZ2FsYXh5Lgorbm90ZWJvb2tfYWNjZXNzX3VybCA9 M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1hZX1VSTH0vaXB5dGhvbi8ke1BPUlR9L25vdGU9CmJv b2tzL2lweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5iJykKK25vdGVib29rX2xvZ2luX3VybCA9 M0QgaWUudXJsX3RlbXBsYXRlKCcke1BST1hZX1VSTH0vaXB5dGhvbi8ke1BPUlR9L2xvZ2luPQo/ bmV4dD0zRCUyRmlweXRob24lMkYke1BPUlR9JTJGdHJlZScpCisKK2RvY2tlcl9jbWQgPTNEIGll LmRvY2tlcl9jbWQodGVtcF9kaXIpCitzdWJwcm9jZXNzLmNhbGwoZG9ja2VyX2NtZCwgc2hlbGw9 M0RUcnVlKQorJT4KKzxodG1sPgorPGhlYWQ+CiskeyBpZS5sb2FkX2RlZmF1bHRfanMoKSB9Cis8 L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+CiskeyBp ZS5kZWZhdWx0X2phdmFzY3JpcHRfdmFyaWFibGVzKCkgfQordmFyIG5vdGVib29rX2xvZ2luX3Vy bCA9M0QgJyR7IG5vdGVib29rX2xvZ2luX3VybCB9JzsKK3ZhciBub3RlYm9va19hY2Nlc3NfdXJs ID0zRCAnJHsgbm90ZWJvb2tfYWNjZXNzX3VybCB9JzsKKy8vIExvYWQgbm90ZWJvb2sKKworcmVx dWlyZS5jb25maWcoeworICAgIGJhc2VVcmw6IGFwcF9yb290LAorICAgIHBhdGhzOiB7CisgICAg ICAgICJwbHVnaW4iIDogYXBwX3Jvb3QgKyAianMvIiwKKyAgICB9LAorfSk7CityZXF1aXJlanMo WydwbHVnaW4vaWUnLCAncGx1Z2luL2lweXRob24nXSwgZnVuY3Rpb24oKXsKKyAgICBsb2FkX25v dGVib29rKGllX3Bhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVib29rX2FjY2Vzc191 cmwpOworfSk7Cis8L3NjcmlwdD4KKzxkaXYgaWQ9M0QibWFpbiIgd2lkdGg9M0QiMTAwJSIgaGVp Z2h0PTNEIjEwMCUiPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CgpkaWZmIC1yIDNjNGYyZWMy MjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdk M2M9CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25t ZW50cy9pcHl0aG9uL3RlbXBsYXRlcz0KL25vdGVib29rLmlweW5iCi0tLSAvZGV2L251bGwKKysr IGIvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vdGVtcGxh dGVzL25vdGVib29rLmlwPQp5bmIKQEAgLTAsMCArMSw0MyBAQAoreworICJtZXRhZGF0YSI6IHsK KyAgIm5hbWUiOiAiIiwKKyAgInNpZ25hdHVyZSI6ICJzaGEyNTY6JXMiCisgfSwKKyAibmJmb3Jt YXQiOiAzLAorICJuYmZvcm1hdF9taW5vciI6IDAsCisgIndvcmtzaGVldHMiOiBbCisgIHsKKyAg ICJjZWxscyI6IFsKKyAgICB7CisgICAgICJjZWxsX3R5cGUiOiAiaGVhZGluZyIsCisgICAgICJs ZXZlbCI6IDEsCisgICAgICJtZXRhZGF0YSI6IHt9LAorICAgICAic291cmNlIjogWworICAgICAg IldlbGNvbWUgdG8gdGhlIGludGVyYWN0aXZlIEdhbGF4eSBJUHl0aG9uIE5vdGVib29rLiIKKyAg ICAgXQorICAgIH0sCisgICAgeworICAgICAiY2VsbF90eXBlIjogIm1hcmtkb3duIiwKKyAgICAg Im1ldGFkYXRhIjoge30sCisgICAgICJzb3VyY2UiOiBbCisgICAgICAiWW91IGNhbiBhY2Nlc3Mg eW91ciBkYXRhIHZpYSB0aGUgZGF0YXNldCBudW1iZXIuIEZvciBleGFtcGxlLCBgYGhhbj0KZGxl ID0zRCBnZXQoNDIpYGAuIiwKKyAgICAgICJUbyBzYXZlIGRhdGEsIHdyaXRlIHlvdXIgZGF0YSB0 byBhIGZpbGUsIGFuZCB0aGVuIGNhbGwgYGBwdXQoJ2ZpbGVuPQphbWUudHh0JylgYC4gVGhlIGRh dGFzZXQgd2lsbCB0aGVuIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGdhbGF4eSBoaXN0b3J5LiIsCisg ICAgICAiTm90ZWJvb2tzIGNhbiBiZSBzYXZlZCB0byBHYWxheHkgYnkgY2xpY2tpbmcgdGhlIGxh cmdlIGdyZWVuIGJ1dHRvbj0KIGF0IHRoZSB0b3AgcmlnaHQgb2YgdGhlIElQeXRob24gaW50ZXJm YWNlLjxicj4iLAorICAgICAgIk1vcmUgaGVscCBhbmQgaW5mb3JtYXRpb25zIGNhbiBiZSBmb3Vu ZCBvbiB0aGUgcHJvamVjdCBbd2Vic2l0ZV0oaHQ9CnRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5n L2dhbGF4eS1pcHl0aG9uKS4iCisgICAgIF0KKyAgICB9LAorICAgIHsKKyAgICAgImNlbGxfdHlw ZSI6ICJjb2RlIiwKKyAgICAgImNvbGxhcHNlZCI6IGZhbHNlLAorICAgICAiaW5wdXQiOiBbCisg ICAgIF0sCisgICAgICJsYW5ndWFnZSI6ICJweXRob24iLAorICAgICAibWV0YWRhdGEiOiB7fSwK KyAgICAgIm91dHB1dHMiOiBbXSwKKyAgICAgInByb21wdF9udW1iZXIiOiAxCisgICAgfQorICAg XSwKKyAgICJtZXRhZGF0YSI6IHt9CisgIH0KKyBdCit9CgpkaWZmIC1yIDNjNGYyZWMyMjI0NWQ2 MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9CjI5 NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vLmdp dGlnbm9yZQotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uLy5naXRp Z25vcmUKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0jIEJ5dGUtY29tcGlsZWQgLyBv cHRpbWl6ZWQgLyBETEwgZmlsZXMKLV9fcHljYWNoZV9fLwotKi5weVtjb2RdCi0KLSMgQyBleHRl bnNpb25zCi0qLnNvCi0KLSMgRGlzdHJpYnV0aW9uIC8gcGFja2FnaW5nCi0uUHl0aG9uCi1lbnYv Ci1iaW4vCi1idWlsZC8KLWRldmVsb3AtZWdncy8KLWRpc3QvCi1lZ2dzLwotbGliLwotbGliNjQv Ci1wYXJ0cy8KLXNkaXN0LwotdmFyLwotKi5lZ2ctaW5mby8KLS5pbnN0YWxsZWQuY2ZnCi0qLmVn ZwotCi0jIEluc3RhbGxlciBsb2dzCi1waXAtbG9nLnR4dAotcGlwLWRlbGV0ZS10aGlzLWRpcmVj dG9yeS50eHQKLQotIyBVbml0IHRlc3QgLyBjb3ZlcmFnZSByZXBvcnRzCi1odG1sY292LwotLnRv eC8KLS5jb3ZlcmFnZQotLmNhY2hlCi1ub3NldGVzdHMueG1sCi1jb3ZlcmFnZS54bWwKLQotIyBU cmFuc2xhdGlvbnMKLSoubW8KLQotIyBNciBEZXZlbG9wZXIKLS5tci5kZXZlbG9wZXIuY2ZnCi0u cHJvamVjdAotLnB5ZGV2cHJvamVjdAotCi0jIFJvcGUKLS5yb3BlcHJvamVjdAotCi0jIERqYW5n byBzdHVmZjoKLSoubG9nCi0qLnBvdAotCi0jIFNwaGlueCBkb2N1bWVudGF0aW9uCi1kb2NzL19i dWlsZC8KLQoKZGlmZiAtciAzYzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBi IC1yIDQwZjdmOTQ0MDkwMDc5ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL0lOU1RBTEwubWQKLS0tIGEvY29uZmlnL3BsdWdp bnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9JTlNUQUxMLm1kCisrKyAvZGV2L251bGwKQEAgLTEs NjMgKzAsMCBAQAotIyBJbnN0YWxsYXRpb24KLQotV2UndmUgZGV2ZWxvcGVkIHRoZSB0ZW1wbGF0 ZXMgYW5kIGNvbnRhaW5lcnMgc3VjaCB0aGF0IHRoZXkgY2FuIGJlIHJ1biB0aHI9Cm91Z2ggYW4g QXBhY2hlIHByb3h5IHVzaW5nCi1TU0wuIFRoaXMgcmVxdWlyZXMgc29tZSBub24tdHJpdmlhbCBh cGFjaGUgY29uZmlndXJhdGlvbiB0byBzdXBwb3J0LgotCi0jIyBSZXF1aXJlbWVudHMKLQotICog W21vZF9oZWFkZXJzXShodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX2hl YWRlcnMuaHRtbCkKLSAqIFttb2RfcHJveHldKGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3Mv Mi40L21vZC9tb2RfcHJveHkuaHRtbCkKLSAqIFttb2RfcHJveHlfaHR0cF0oaHR0cDovL2h0dHBk LmFwYWNoZS5vcmcvZG9jcy8yLjQvbW9kL21vZF9wcm94eV9odHRwLmh0PQptbCkKLSAqIFttb2Rf cHJveHlfd3N0dW5uZWxdKGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2Rf cHJveHlfd3N0PQp1bm5lbC5odG1sKQotICogW21vZF9yZXdyaXRlXShodHRwOi8vaHR0cGQuYXBh Y2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Jld3JpdGUuaHRtbCkKLSAqIFttb2Rfc2V0ZW52aWZd KGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2Rfc2V0ZW52aWYuaHRtbCkK LQotSVB5dGhvbiBtYWtlcyB1c2Ugb2YgV2ViU29ja2V0cyB3aGljaCB3ZSBuZWVkIHRvIHByb3h5 IGluIGFwYWNoZS4gU3VwcG9ydCA9CndhcyBhZGRlZCB0byBgYXBhY2hlMi40YAotZm9yIHRoaXMs IHdoaWNoIGlzIGF2YWlsYWJsZSBpbiBgVWJ1bnR1IDE0LjA0YC4gVGhlcmUgYXJlIHR1dG9yaWFs cyBvbiB0aGU9CiBpbnRlcm5ldCBmb3IgYmFja3BvcnRpbmcKLXRoZSB3ZWJzb2NrZXRzIG1vZHVs ZSwgYW5kIGluc3RhbGxpbmcgYGFwYWNoZTIuNGAgUFBBcy4KLQotIyMgQXBhY2hlIENvbmZpZ3Vy YXRpb24KLQotSGVyZSBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbgotCi1gYGBhcGFjaGUK LVJld3JpdGVFbmdpbmUgT24KLVNldEVudklmIFJlcXVlc3RfVVJJICIvaXB5dGhvbi8oWzAtOV0r KS9hcGkva2VybmVscy8iIERPQ0tFUl9QT1JUPTNEJDEKLVJld3JpdGVSdWxlICAgICBeL2lweXRo b24vKFswLTldKykvYXBpL2tlcm5lbHMvKC4qKSQgICB3czovLzEyNy4wLjAuMTokMS9pPQpweXRo b24vJDEvYXBpL2tlcm5lbHMvJDIgW1AsTF0KLVJld3JpdGVSdWxlICAgICBeL2lweXRob24vKFsw LTldKykvKC4qKSQgICAgICAgICAgICAgaHR0cDovL2xvY2FsaG9zdDokMS9pPQpweXRob24vJDEv JDIgW1AsTF0KLTxMb2NhdGlvbiAvaXB5dGhvbi8+Ci0gICAgICAgICMgc3Bvb2YgaGVhZGVycyB0 byBtYWtlIG5vdGVwYWQgYWNjZXB0IHRoZSByZXF1ZXN0IGFzIGNvbWluZyBmcm9tID0KdGhlIHNh bWUgb3JpZ2luCi0gICAgICAgIEhlYWRlciBzZXQgT3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOiV7 RE9DS0VSX1BPUlR9ZSIKLSAgICAgICAgUmVxdWVzdEhlYWRlciBzZXQgT3JpZ2luICJodHRwOi8v MTI3LjAuMC4xOiV7RE9DS0VSX1BPUlR9ZSIKLTwvTG9jYXRpb24+Ci08L1ZpcnR1YWxIb3N0Pgot YGBgCi0KLVdlJ2xsIHN0ZXAgdGhyb3VnaCBsaW5lLWJ5LWxpbmUgZm9yIGNsYXJpdHkuCi0KLWBg YGFwYWNoZQotU2V0RW52SWYgUmVxdWVzdF9VUkkgIi9pcHl0aG9uLyhbMC05XSspL2FwaS9rZXJu ZWxzLyIgRE9DS0VSX1BPUlQ9M0QkMQotYGBgCi0KLUhlcmUgd2UgY2hlY2sgdGhlIGBSZXF1ZXN0 X1VSSWAgZm9yIHRoZSBwcmVzZW5jZSBmb3IgdGhlIGtlcm5lbCByZXF1ZXN0LiBXPQplIGRvIHRo aXMgb25seSBmb3IgdGhlIGBhcGkva2VybmVsYCBzdWJjYWxsLCBhcyB0aGUgb25seSBjb25maWd1 cmF0aW9uIHdoaWM9CmggbmVlZHMgYWNjZXNzIHRvIGBET0NLRVJfUE9SVGAgaXMga2VybmVsIGNh bGxzLgotCi1gYGBhcGFjaGUKLVJld3JpdGVSdWxlIF4vaXB5dGhvbi8oWzAtOV0rKS9hcGkva2Vy bmVscy8oLiopJCAgIHdzOi8vMTI3LjAuMC4xOiQxL2lweXRoPQpvbi8kMS9hcGkva2VybmVscy8k MiBbUCxMXQotUmV3cml0ZVJ1bGUgXi9pcHl0aG9uLyhbMC05XSspLyguKikkICAgICAgICAgICAg IGh0dHA6Ly9sb2NhbGhvc3Q6JDEvaXB5dGg9Cm9uLyQxLyQyIFtQLExdCi1gYGAKLQotVGhlc2Ug dHdvIHJ1bGVzIHByb3h5IGBeL2lweXRob24vYCByZXF1ZXN0cyB0byB0aGVpciBjb3JyZWN0IGxv Y2F0aW9ucy4gQVA9CkkgcmVxdWVzdHMgZm9yIHRoZSBJUHl0aG9uIGtlcm5lbCBhcmUgcm91dGVk IHRocm91Z2ggdGhlIHdzdHVubmVsIChXZWJTb2NrZT0KdCkgcHJveHksIHdoaWxlIGFsbCBvdGhl ciByZXF1ZXN0cyBnbyB0aHJvdWdoIEhUVFAuIFRoZXJlIGFyZSBtb2RpZmllZCBsaXN0PQplZCBh ZnRlciBib3RoLCBgW1AsTF1gLiBgUGAgc3BlY2lmaWVzIGEgcHJveHksIGFuZCBgTGAgc3BlY2lm aWVzIHRoaXMgaXMgdGg9CmUgbGFzdCBydWxlLCB0byBwcmV2ZW50IHRoZSBzZWNvbmQgcmV3cml0 ZSBzdGF0ZW1lbnQgZnJvbSBtYXRjaGluZyBhbGwga2Vybj0KZWwgY2FsbHMuCi0KLWBgYGFwYWNo ZQotPExvY2F0aW9uIC9pcHl0aG9uLz4KLSAgICAgICAgIyBzcG9vZiBoZWFkZXJzIHRvIG1ha2Ug bm90ZXBhZCBhY2NlcHQgdGhlIHJlcXVlc3QgYXMgY29taW5nIGZyb20gPQp0aGUgc2FtZSBvcmln aW4KLSAgICAgICAgSGVhZGVyIHNldCBPcmlnaW4gImh0dHA6Ly8xMjcuMC4wLjE6JXtET0NLRVJf UE9SVH1lIgotICAgICAgICBSZXF1ZXN0SGVhZGVyIHNldCBPcmlnaW4gImh0dHA6Ly8xMjcuMC4w LjE6JXtET0NLRVJfUE9SVH1lIgotPC9Mb2NhdGlvbj4KLWBgYAotCi1UaGUgV2ViU29ja2V0IHNl cnZlciBpbiBJUHl0aG9uIHBheXMgYXR0ZW50aW9uIHRvIENyb3NzLU9yaWdpbi1SZXF1ZXN0cyBh bj0KZCB3aWxsIHRocm91Z2ggdXAgYSA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yIChpbiBkb2Nr ZXIpIGlmIHlvdSBhdHRlbXB0IHRvPQogc2VuZCBpdCBiYWQgZGF0YS4gVGh1cywgd2UgdXNlIHRo ZSBleHRyYWN0ZWQgcG9ydCBudW1iZXIgZnJvbSB0aGUgZWFybGllciA9CmBTZXRFbnZJZmAgcmVx dWVzdCBpbiBvcmRlciB0byBvYnRhaW4gdGhlIHBvcnQgdGhhdCBJUHl0aG9uIHdpbGwgYWN0dWFs bHkgcj0KZWNlaXZlIGNvbm5lY3Rpb25zIGZyb20uCi0KLSMjIE5naW54IENvbmZpZ3VyYXRpb24K LQotUGxlYXNlIHN1Ym1pdCBpdCBpZiB5b3Ugd3JpdGUgaXQhCgpkaWZmIC1yIDNjNGYyZWMyMjI0 NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9 CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24v TElDRU5TRQotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL0xJQ0VO U0UKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgTUlUIExpY2Vuc2UgKE1JVCkK LQotQ29weXJpZ2h0IChjKSAyMDE0IEJqPUMzPUI2cm4gR3I9QzM9QkNuaW5nCi0KLVBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhIGNvPQpweQotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGQ9CmVhbAotaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2g9 CnRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu PQogYWxsCi1jb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgot Ci1USEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgotSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi1GSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK LUFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZSPQpPTSwKLU9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4g PQpUSEUKLVNPRlRXQVJFLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgM2M0 ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIyODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0 NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBhOWIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMv aXB5dGhvbi9SRUFETUUubWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5 dGhvbi9SRUFETUUubWQKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotR2FsYXh5IElQ eXRob24gSW50ZWdyYXRpb24KLT0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNECi0KLVRoaXMgcHJvamVj dHMgaW50ZWdyYXRlcyBbSVB5dGhvbiBOb3RlYm9va10oaHR0cDovL2lweXRob24ub3JnL25vdGVi b29rLmh0PQptbCksIGEgaW50ZXJhY3RpdmUgY29tcHV0YXRpb25hbCBlbnZpcm9ubWVudCwgd2l0 aCBbR2FsYXh5XShodHRwOi8vZ2FsYXh5cHI9Cm9qZWN0Lm9yZykuPTIwCi1XZSBob3BlIHRvIG1h a2UgR2FsYXh5IG1vcmUgYXR0cmFjdGl2ZSBmb3IgYmlvaW5mb3JtYXRpY2lhbnMgYW5kIHRvIGNv bWJpbj0KZSB0aGUgcG93ZXIgb2YgYm90aCBwcm9qZWN0cyB0byB1bmxvY2sgY3JlYXRpdml0eSBp biBkYXRhIGFuYWx5c2lzLCBidXQgYWxzPQpvIGluIE5leHQtR2VuZXJhdGlvbi1UcmFpbmluZyBj b3Vyc2VzLgotCi0hW0lQeXRob24gaW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29u dGVudC5jb20vYmdydWVuaW5nL2dhbGF4eS1pcD0KeXRob24vbWFzdGVyL3N0YXRpYy9pbWFnZXMv aXB5dGhvbl9pbl9nYWxheHkucG5nKQotCi1bIVtJTUFHRSBBTFQgVEVYVCBIRVJFXShodHRwOi8v aW1nLnlvdXR1YmUuY29tL3ZpL2pRRHlUdVlubjFrLzAuanBnKV0oaHR0cD0KOi8vd3d3LnlvdXR1 YmUuY29tL3dhdGNoP3Y9M0RqUUR5VHVZbm4xaykKLQotCi1SZXF1aXJlbWVudHMKLT0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAotCi1UaGUgb25seSByZXF1aXJlbWVudCBpcyB0 byBoYXZlIFtEb2NrZXJdKGh0dHBzOi8vd3d3LmRvY2tlci5jb20pIGluc3RhbGxlZD0KIG9uIHlv dXIgc3lzdGVtLgotRm9yIGEgZGV0YWlsZWQgaW5zdHJ1Y3Rpb24gaG93IHRvIGluc3RhbGwgZG9j a2VyLCBwbGVhc2UgbG9vayBhdCB0aGUgW2RvY2s9CmVyIHdlYnNpdGVdKGh0dHBzOi8vZG9jcy5k b2NrZXIuY29tL2luc3RhbGxhdGlvbi8pLgotCi0KLUluc3RhbGxhdGlvbgotPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0KLUNvcHkgdGhlIHRlbXBsYXRlIGFuZCBjb25maWcg Zm9sZGVyIGluIHlvdXIgYGBHQUxBWFlfUk9PVC9jb25maWcvcGx1Z2lucy92PQppc3VhbGl6YXRp b25zL2lweXRob25gYCBmb2xkZXIgYW5kIHJlc3RhcnQgR2FsYXh5LgotQWx0ZXJuYXRpdmVseSwg eW91IGNhbiBjbG9uZSB0aGUgcmVwb3NpdG9yeSB3aXRoCi0KLWBgYGJhc2gKLWdpdCBjbG9uZSBo dHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uLmdpdCBjb25maWcvcGx1 Z2lucy92PQppc3VhbGl6YXRpb25zL2lweXRob24KLWBgYGAKLQotVGhlIElQeXRob24gdmlzdWFs aXNhdGlvbiBvcHRpb24gc2hvdWxkIGJlIHZpc2libGUgbmV4dCB0byB0aGUgdXN1YWwgQ2hhcnQ9 CnMgb3IgVHJhY2tzdGVyIG9wdGlvbnMgaW4geW91ciB2aXN1YWxpc2F0aW9uIG1lbnVlLgotCi0h W1N0YXJ0aW5nIElQeXRob24gaW4gR2FsYXh5XShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVu dC5jb20vYmdydWVuaW5nLz0KZ2FsYXh5LWlweXRob24vbWFzdGVyL3N0YXRpYy9pbWFnZXMvc3Rh cnRfaXB5dGhvbi5wbmcpCi0KLQotRmVhdHVyZXMKLT0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAot Ci0gKiBydW4gSVB5dGhvbiBkaXJlY3RseSBpbiB5b3VyIEdhbGF4eSBtYWluIHdpbmRvdyBvciBp biBHYWxheHkgU2NyYXRjaGJvb2sKLSAqIGNvbXBsZXRlIGVuY2Fwc3VsYXRlZCBweXRob24gZW52 aXJvbm1lbnQgd2l0aCBtYXRwbG90bGliLCBwYW5kYXMgYW5kIGZyPQppZW5kcyBpbnN0YWxsZWQK LSAqIGFjY2VzcyB0byBhbGwgZGF0YXNldHMgZnJvbSB5b3VyIGN1cnJlbnQgaGlzdG9yeSB2aWEg cHJlLWRlZmluZWQgSVB5dGhvPQpuIGZ1bmN0aW9uCi0gKiBtYW5pcHVsYXRlIGFuZCBwbG90IGRh dGEgYXMgeW91IGxpa2UgYW5kIGV4cG9ydCB5b3VyIG5ldyBmaWxlcyBiYWNrIGludD0KbyB0aGUg R2FsYXh5IGhpc3RvcnkKLSAqIGFjY2VzcyB5b3VyIEdhbGF4eSBpbnN0YW5jZSBmcm9tIElQeXRo b24gd2l0aCBiaW9ibGVuZCBhbmQgcmVkZWZpbmVkIGZ1PQpuY3Rpb25zCi0gKiBzYXZlIHRoZSBJ UHl0aG9uIE5vdGVib29rIGludG8geW91ciBHYWxheHkgaGlzdG9yeQotICogbm90ZWJvb2sgcGVy c2lzdGVuY2UgYWNyb3NzIHNlc3Npb25zCi0gKiBzYXZlZCBJUHl0aG9uIE5vdGVib29rIGZpbGVz IGNhbiBiZSB2aWV3ZWQgaW4gSFRNTCBhbmQgcmUtb3BlbmVkCi0gKiBzZWxmLWNsb3NpbmcgYW5k IGNsZWFuaW5nIElQeXRob24gZG9ja2VyIGNvbnRhaW5lcgotCi1Ib3cgZG9lcyBpdCB3b3JrCi09 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKLQotVGhlIG1h a28gdGVtcGxhdGUgZnJvbSB0aGUgR2FsYXh5IHZpc3VhbGlzYXRpb24gZnJhbWV3b3JrIHJlbmRl cnMgdGhlIGludGU9CnJmYWNlIGFuZCBidWlsZHMgYWxsIGZpbGVzIGFuZCBjb21tYW5kcyBuZWVk ZWQgdG8gbHVuY2ggdGhlIGRvY2tlciBjb250YWluZT0Kci4gQSBjb25maWcgZmlsZSBpcyBzYXZl ZCB1bmRlciBgYC9pbXBvcnQvYGAgaW5zaWRlIHRoZSBkb2NrZXIgY29udGFpbmVyLiBUPQpoZSBJ UHl0aG9uIHdlYnBhZ2UgcnVubmluZyBpbiBkb2NrZXIgd2lsbCBiZSBpbmNsdWRlZCBpbiBhIEhU TUwgb2JqZWN0IGFuZCA9CmRpc3BsYXllZCB0byB0aGUgdXNlci49MjAKLURlcGVuZGluZyBvbiB5 b3VyIGNvbmZpZ3VyYXRpb24gc29tZSBKYXZhU2NyaXB0IG1hZ2ljIGlzIGRvbmUgdG8gYWRkIGFu IG9iPQpqZWN0IHRvIHRoZSBET00sIHdoaWNoIHdpbGwgYmUgbG9hZGVkIGJ5IHRoZSBicm93c2Vy IGFuZCBjb25kaXRpb25hbGx5IGhhbmQ9CmxlcyBsb2dpbi4KLUlzaWRlIG9mIGRvY2tlciBUQ1Ag Y29ubmVjdGlvbnMgYXJlIG1vbml0b3JlZCB1c2luZyBjcm9uLiBBcyBzb29uIGFzIHRoZSB1PQpz ZXIgcXVpdHMgdXNpbmcgdGhlIG5vdGVib29rLCB0aGUgZHJvcHBpbmcgVENQIGNvbm5lY3Rpb25z IGFyZSByZWNvZ25pc2VkIGE9Cm5kIHRoZSBjb3RhaW5lciBjbGVhbnMgdXAgYWZ0ZXIgaXRzZWxm IGFuZCBraWxscyBpdHNlbGYuCi0KLQotCi1GdW5jdGlvbnMgYW5kIHZhcmlhYmxlcwotPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNECi0KLUZvciB5b3VyIGNvbnZpZW5jZSwgd2UgaGF2ZSBhZGRlZCBhIGZldyBwcmUtZGVm aW5lZCBmdW5jdGlvbnMgdG8gdGhlIElQeXRoPQpvbiBwcm9maWxlLgotCi0jIyMgZ2V0Ci0KLSAg IFRoZSBnZXQgZnVuY3Rpb24gd2lsbCBjb3B5IGEgZGF0YXNldCwgaWRlbnRpZmllZCBieSB0aGUg aGlzdG9yeV9pZCwgZnJvPQptIHlvdXIgY3VycmVudCBHYWxheHk9MjAKLSAgIGludG8gdGhlIGRv Y2tlciBjb250YWluZXIuIEl0IHdpbGwgcmV0dXJuIHRoZSBmaWxlIHBhdGggdG8gdGhlIGNvcGll ZCBmPQppbGUuCi0KLSAgICpFeGFtcGxlKjoKLSAgIGBgYHB5dGhvbgotICAgICAgd2l0aCBvcGVu KCBnZXQoIDQ0ICksICdyJykgYXMgaGFuZGxlOgotICAgICAgICAgZm9yIGxpbmUgaW4gaGFuZGxl OgotICAgICAgICAgICAgcHJpbnQoIGxpbmUgKQotICAgYGBgPTIwCi0KLSMjIyBwdXQKLQotICAg VGhlIHB1dCBmdW5jdGlvbiB0YWtlcyBhIGZpbGUgcGF0aCBhbmQgdHJhbnNmZXJzIHRoZSBmaWxl IHRvIHRoZSBjdXJyZW49CnQgaGlzdG9yeSBvZiB5b3VyIEdhbGF4eSBzZXNzaW9uLgotCi0gICAq RXhhbXBsZSo6Ci0gICBgYGBweXRob24KLSAgICAgIHB1dCggJy4vbXlfZmlsZS50c3YnLCBmaWxl X3R5cGUgPTNEICd0YWJ1bGFyJykKLSAgIGBgYAotCi0jIyMgSElTVE9SWV9JRAotCi0gICBBY2Nl c3NpbmcgeW91ciBjdXJyZW50IGhpc3RvcnkgaXMgcG9zc2libGUgd2l0aCB0aGUgcHJlLWRlZmlu ZWQgSElTVE9SWT0KX0lEIHZhcmlhYmxlLgotICA9MjAKLQotIyMjIGNvbm5lY3QgdG8gR2FsYXh5 Ci0KLSAgIElmIHlvdSB3YW50IHRvIGNvbW11bmljYXRlIHdpdGggR2FsYXh5IHlvdSBjYW4gdXNl IGBgYGdldF9nYWxheHlfY29ubmVjPQp0aW9uKClgYGAgdG8gZ2V0IGFuIFtiaW9ibGVuZCBHYWxh eHlJbnN0YW5jZSBvYmplY3RdKGh0dHA6Ly9iaW9ibGVuZC5yZWFkdGg9CmVkb2NzLm9yZy9lbi9s YXRlc3QvYXBpX2RvY3MvZ2FsYXh5L2FsbC5odG1sP2hpZ2hsaWdodD0zRGdhbGF4eWluc3RhbmNl KS4KLQotICAgKkV4YW1wbGUqOgotICAgYGBgcHl0aG9uCi0gICAgICBmcm9tIGJpb2JsZW5kLmdh bGF4eS5oaXN0b3JpZXMgaW1wb3J0IEhpc3RvcnlDbGllbnQKLSAgICAgIGdpID0zRCBnZXRfZ2Fs YXh5X2Nvbm5lY3Rpb24oKQotICAgICAgaGMgPTNEIEhpc3RvcnlDbGllbnQoIGdpICkKLSAgICAg IGZvciBkYXRhc2V0IGluIGhjLnNob3dfaGlzdG9yeSggSElTVE9SWV9JRCAsIGNvbnRlbnRzPTNE VHJ1ZSkgKToKLSAgICAgICAgIHByaW50KCBkYXRhc2V0WydpZCddICkKLSAgIGBgYAotCi0KLVNl Y3VyaXR5Ci09M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKLQotQnkgZGVmYXVsdCwgbm8gc2VjdXJp dHkgdHVybmVkIG9uLiBUbyBkbyB0aGlzLCB5b3UgbXVzdCBhZGp1c3QgdHdvIHZhcmlhYmw9CmVz LCBgYXBhY2hlX3VybHNgIGFuZAotYHBhc3N3b3JkX2F1dGhgIGluIHRoZSBjb25maWd1cmF0aW9u IGZpbGUgKGBjb25maWcvaXB5dGhvbi5jb25mYCkuPTIwCi0KLVRoZSBgYXBhY2hlX3VybHNgIHZh cmlhYmxlIHNob3VsZCBiZSBzZXQgdG8gYFRydWVgLCBhbmQgY29udGFpbmVycyBzaG91bGQgPQpi ZSBzZWN1cmVkIHZpYSBBcGFjaGUrU1NMIGZvciBwcm9kdWN0aW9uIHVzYWdlLiBQbGVhc2Ugc2Vl IHRoZSBbc2V0dXBdKElOU1Q9CkFMTC5tZCkgZG9jdW1lbnQgZm9yIG1vcmUgaW5mb3JtYXRpb24u Ci0KLVRoZSBgcGFzc3dvcmRfYXV0aGAgdmFyaWFibGUgc2hvdWxkIGJlIHNldCB0byBgVHJ1ZWAu IEl0IGZ1bmN0aW9ucyBieSBnZW5lPQpyYXRpbmcgYSByYW5kb20gcGFzc3dvcmQgd2hpY2ggaXMg b25seSBzaGFyZWQgd2l0aCB0aGUgZG9ja2VyLCBhbmQgdGhlIHVzZXI9CidzIGJyb3dzZXIgdGhy b3VnaCBHYWxheHkuIEluIHRoZW9yeSB0aGlzIHNob3VsZCBiZSBhIHNlY3VyZSBzeXN0ZW0gKG9y IGF0ID0KbGVhc3QgYXMgc2VjdXJlIGFzIHRoZSB3ZWFrZXN0IGxpbmspLCBob3dldmVyIGlmIHlv dSBmaW5kIGEgdnVsbmVyYWJpbGl0eSBpPQpuIHRoZSBzeXN0ZW0gd2UndmUgZGV2aXNlZCwgcGxl YXNlIGNvbnRhY3QgdXMgYW5kIHdlJ2xsIHBhdGNoIGl0IGFzIHNvb24gYXM9CiBwb3NzaWJsZSEK LQotCi1BdXRob3JzCi09M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKLQotICogQmo9QzM9QjZybiBHcj1D Mz1CQ25pbmcgPGJqb2Vybi5ncnVlbmluZ0BnbWFpbC5jb20+Ci0gKiBFcmljIFJhc2NoZSA8cmFz Y2hlLmVyaWNAeWFuZGV4LnJ1PgotCi0KLUhpc3RvcnkKLT0zRD0zRD0zRD0zRD0zRD0zRD0zRAot Ci0tIHYwLjE6IEluaXRpYWwgcHVibGljIHJlbGVhc2UgKDAxLjA4LjIwMTQpCi0KLQotTGljZW5j ZSAoTUlUKQotPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0KLVBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhIGNvPQpweQotb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGQ9CmVhbAotaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJp Z2g9CnRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk IGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4K LQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF Ci1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUj0KT00sCi1PVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO Ci1USEUgU09GVFdBUkUuCgpkaWZmIC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2 M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRiNDdkM2M9CjI5NDUwOWVjNDhhODgwYTliIGNv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vY29uZmlnL2lweXRob24uY29uZgot LS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL2NvbmZpZy9pcHl0aG9u LmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVttYWluXQotYXBhY2hlX3VybHMg PTNEIEZhbHNlCi1wYXNzd29yZF9hdXRoID0zRCBGYWxzZQotc3NsID0zRCBGYWxzZQotCi1bZG9j a2VyXQotY29tbWFuZCA9M0QgZG9ja2VyCi1pbWFnZSA9M0QgYmdydWVuaW5nL2RvY2tlci1pcHl0 aG9uLW5vdGVib29rCi0KCmRpZmYgLXIgM2M0ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIyODJiNzYz YjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBhOWIgY29u ZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi54bWwKLS0t IGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi54 bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08P3htbCB2ZXJzaW9uPTNEIjEuMCIg ZW5jb2Rpbmc9M0QiVVRGLTgiPz4KLTwhRE9DVFlQRSB2aXN1YWxpemF0aW9uIFNZU1RFTSAiLi4v Li4vdmlzdWFsaXphdGlvbi5kdGQiPgotPHZpc3VhbGl6YXRpb24gbmFtZT0zRCJJUHl0aG9uIj4K LSAgICA8ZGF0YV9zb3VyY2VzPgotICAgICAgICA8ZGF0YV9zb3VyY2U+Ci0gICAgICAgICAgICA8 bW9kZWxfY2xhc3M+SGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbjwvbW9kZWxfY2xhc3M+Ci0gICAg ICAgICAgICA8dGVzdCB0eXBlPTNEImlzaW5zdGFuY2UiIHRlc3RfYXR0cj0zRCJkYXRhdHlwZSIg cmVzdWx0X3R5cGU9Cj0zRCJkYXRhdHlwZSI+dGFidWxhci5UYWJ1bGFyPC90ZXN0PgotICAgICAg ICAgICAgPHRlc3QgdHlwZT0zRCJpc2luc3RhbmNlIiB0ZXN0X2F0dHI9M0QiZGF0YXR5cGUiIHJl c3VsdF90eXBlPQo9M0QiZGF0YXR5cGUiPmRhdGEuVGV4dDwvdGVzdD4KLSAgICAgICAgICAgIDx0 b19wYXJhbSBwYXJhbV9hdHRyPTNEImlkIj5kYXRhc2V0X2lkPC90b19wYXJhbT4KLSAgICAgICAg PC9kYXRhX3NvdXJjZT4KLSAgICA8L2RhdGFfc291cmNlcz4KLSAgICA8cGFyYW1zPgotICAgICAg ICA8cGFyYW0gdHlwZT0zRCJkYXRhc2V0IiB2YXJfbmFtZV9pbl90ZW1wbGF0ZT0zRCJoZGEiIHJl cXVpcmVkPTNEInQ9CnJ1ZSI+ZGF0YXNldF9pZDwvcGFyYW0+Ci0gICAgPC9wYXJhbXM+Ci0gICAg PHRlbXBsYXRlPmlweXRob24ubWFrbzwvdGVtcGxhdGU+Ci08L3Zpc3VhbGl6YXRpb24+CgpkaWZm IC1yIDNjNGYyZWMyMjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQw OTAwNzlkNDRiNDdkM2M9CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6 YXRpb25zL2lweXRob24vc3RhdGljL2ltYWdlcy9pcHl0aD0Kb25faW5fZ2FsYXh5LnBuZwpCaW5h cnkgZmlsZSBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9pbWFn ZXMvaXB5dGhvbl9pbl89CmdhbGF4eS5wbmcgaGFzIGNoYW5nZWQKCmRpZmYgLXIgM2M0ZjJlYzIy MjQ1ZDYwNzUyNDZkYzAwNjIyODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2Qz Yz0KMjk0NTA5ZWM0OGE4ODBhOWIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi9zdGF0aWMvaW1hZ2VzL3N0YXJ0PQpfaXB5dGhvbi5wbmcKQmluYXJ5IGZpbGUgY29uZmlnL3Bs dWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvaW1hZ2VzL3N0YXJ0X2lweXRoPQpv bi5wbmcgaGFzIGNoYW5nZWQKCmRpZmYgLXIgM2M0ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIyODJi NzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBhOWIg Y29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvanMvaWUuanMKLS0t IGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi9zdGF0aWMvanMvaWUuanMK KysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKioKLSAqIEludGVybmFsIGZ1bmN0aW9u IHRvIHJlbW92ZSBjb250ZW50IGZyb20gdGhlIG1haW4gYXJlYSBhbmQgYWRkIHRoZSBub3RlPQpi b29rLgotICogTm90IGlkZW1wb3RlbnQKLSAqLwotZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKHVy bCl7Ci0gICAgY2xlYXJfbWFpbl9hcmVhKCk7Ci0gICAgJCgnI21haW4nKS5hcHBlbmQoJzxpZnJh bWUgZnJhbWVCb3JkZXI9M0QiMCIgc2VhbWxlc3M9M0Qic2VhbWxlc3MiIHN0eT0KbGU9M0Qid2lk dGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyIgc2Nyb2xsaW5nPTNEIm5v IiBzcmM9M0QiPQonKyB1cmwgKyciPjwvaWZyYW1lPicKLSAgICApOwotfQotCi1mdW5jdGlvbiBj bGVhcl9tYWluX2FyZWEoKXsKLSAgICAkKCcjc3Bpbm5lcicpLnJlbW92ZSgpOwotICAgICQoJyNt YWluJykuY2hpbGRyZW4oKS5yZW1vdmUoKTsKLX0KLQotZnVuY3Rpb24gZGlzcGxheV9zcGlubmVy KCl7Ci0gICAgICAgICQoJyNtYWluJykuYXBwZW5kKCc8aW1nIGlkPTNEInNwaW5uZXIiIHNyYz0z RCInICsgZ2FsYXh5X3Jvb3QgKyAnLz0Kc3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0 eWxlPTNEInBvc2l0aW9uOmFic29sdXRlO21hcmdpbjphdXRvO3RvcDowPQo7bGVmdDowO3JpZ2h0 OjA7Ym90dG9tOjA7Ij4nKTsKLX0KLQotCi0vKioKLSAqIFRlc3QgYXZhaWxhYmlsaXR5IG9mIGEg VVJMLCBhbmQgY2FsbCBhIGNhbGxiYWNrIHdoZW4gZG9uZS4KLSAqIGh0dHA6Ly9zdGFja292ZXJm bG93LmNvbS9xLzI1MzkwMjA2LzM0NzM2OAotICogQHBhcmFtIHtTdHJpbmd9IHVybDogVVJMIHRv IHRlc3QgYXZhaWxhYmlsaXR5IG9mLiBNdXN0IHJldHVybiBhIDIwMCAoMzA9CjItPjIwMCBpcyBP SykuCi0gKiBAcGFyYW0ge1N0cmluZ30gY2FsbGJhY2s6IGZ1bmN0aW9uIHRvIGNhbGwgb25jZSBz dWNjZXNzZnVsbHkgY29ubmVjdGVkLgotICoKLSAqLwotZnVuY3Rpb24gdGVzdF9pZV9hdmFpbGFi aWxpdHkodXJsLCBzdWNjZXNzX2NhbGxiYWNrKXsKLSAgICB2YXIgcmVxdWVzdF9jb3VudCA9M0Qg MDsKLSAgICBkaXNwbGF5X3NwaW5uZXIoKTsKLSAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwo ZnVuY3Rpb24oKXsKLSAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgIHVybDogdXJsLAotICAg ICAgICAgICAgeGhyRmllbGRzOiB7Ci0gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0 cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgdHlwZTogIkdFVCIsCi0gICAgICAgICAg ICB0aW1lb3V0OiA1MDAsCi0gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpewotICAgICAg ICAgICAgICAgIGNvbnNvbGUubG9nKCJDb25uZWN0ZWQgdG8gSUUsIHJldHVybmluZyIpOwotICAg ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwotICAgICAgICAgICAgICAgIHN1 Y2Nlc3NfY2FsbGJhY2soKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBlcnJvcjogZnVu Y3Rpb24oanF4aHIsIHN0YXR1cywgZXJyb3IpewotICAgICAgICAgICAgICAgIHJlcXVlc3RfY291 bnQrKzsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUmVxdWVzdCAiICsgcmVxdWVzdF9j b3VudCk7Ci0gICAgICAgICAgICAgICAgaWYocmVxdWVzdF9jb3VudCA+IDMwKXsKLSAgICAgICAg ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7Ci0gICAgICAgICAgICAgICAgICAg IGNsZWFyX21haW5fYXJlYSgpOwotICAgICAgICAgICAgICAgICAgICB0b2FzdHIuZXJyb3IoCi0g ICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSUUsIGNvbnRhY3Qg eW91ciBhZG1pbmlzdHJhdD0Kb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIiwK LSAgICAgICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6 IDIwMDAwLCAndGFwVG9EaXNtPQppc3MnOiBmYWxzZX0KLSAgICAgICAgICAgICAgICAgICAgKTsK LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0sIDEw MDApOwotfQoKZGlmZiAtciAzYzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0ZDBi IC1yIDQwZjdmOTQ0MDkwMDc5ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3N0YXRpYy9qcy9pcHl0aG9uLmpzCi0tLSBhL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lweXRob24vc3RhdGljL2pzL2lweXRob24uanMK KysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1mdW5jdGlvbiBtZXNzYWdlX2ZhaWxlZF9h dXRoKHBhc3N3b3JkKXsKLSAgICB0b2FzdHIuaW5mbygKLSAgICAgICAgIkF1dG9tYXRpYyBhdXRo b3JpemF0aW9uIGZhaWxlZC4gWW91IGNhbiBtYW51YWxseSBsb2dpbiB3aXRoOjxicj4iPQogKyBw YXNzd29yZCArICI8YnI+PGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dh bGF4eS1pcHl0aG9uL3c9CmlraS9BdXRvbWF0aWMtQXV0aG9yaXphdGlvbi1GYWlsZWQnIHRhcmdl dD0zRCdfYmxhbmsnPk1vcmUgZGV0YWlscyAuLi48L2E+IiwKLSAgICAgICAgIlBsZWFzZSBsb2dp biBtYW51YWxseSIsCi0gICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDEw MDAwMCwgJ3RhcFRvRGlzbWlzcyc6IGZhbHNlfQotICAgICk7Ci19Ci0KLWZ1bmN0aW9uIG1lc3Nh Z2VfZmFpbGVkX2Nvbm5lY3Rpb24oKXsKLSAgICB0b2FzdHIuZXJyb3IoCi0gICAgICAgICJDb3Vs ZCBub3QgY29ubmVjdCB0byBJUHl0aG9uIE5vdGVib29rLiBQbGVhc2UgY29udGFjdCB5b3VyIGFk bWluaT0Kc3RyYXRvci4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1Yi5jb20vYmdydWVuaW5nL2dh bGF4eS1pcHl0aG9uL3dpa2kvQ291bGQtPQpub3QtY29ubmVjdC10by1JUHl0aG9uLU5vdGVib29r JyB0YXJnZXQ9M0QnX2JsYW5rJz5Nb3JlIGRldGFpbHMgLi4uPC9hPiIsCi0gICAgIlNlY3VyaXR5 IHdhcm5pbmciLAotICAgICAgICB7J2Nsb3NlQnV0dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAw MCwgJ3RhcFRvRGlzbWlzcyc6IHRydWV9Ci0gICAgKTsKLX0KLQotZnVuY3Rpb24gbWVzc2FnZV9u b19hdXRoKCl7Ci0gICAgLy8gTm8gbG9uZ2VyIGEgc2VjdXJpdHkgaXNzdWUsIHByb3h5IHZhbGlk YXRlcyBHYWxheHkgc2Vzc2lvbiB0b2tlbi4KLSAgICAvKgotICAgIHRvYXN0ci53YXJuaW5nKAot ICAgICAgICAiSVB5dGhvbiBOb3RlYm9vayB3YXMgbHVuY2hlZCB3aXRob3V0IGF1dGhlbnRpY2F0 aW9uLiBUaGlzIGlzIGEgc2U9CmN1cml0eSBpc3N1ZS4gPGEgaHJlZj0zRCdodHRwczovL2dpdGh1 Yi5jb20vYmdydWVuaW5nL2dhbGF4eS1pcHl0aG9uL3dpa2kvST0KUHl0aG9uLU5vdGVib29rLXdh cy1sdW5jaGVkLXdpdGhvdXQtYXV0aGVudGljYXRpb24nIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUg PQpkZXRhaWxzIC4uLjwvYT4iLAotICAgICAgICAiU2VjdXJpdHkgd2FybmluZyIsCi0gICAgICAg IHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtaXNzJzog ZmFsc2V9Ci0gICAgKTsKLSAgICAqLwotfQotCi0KLS8qKgotICogTG9hZCBhbiBpbnRlcmFjdGl2 ZSBlbnZpcm9ubWVudCAoSUUpIGZyb20gYSByZW1vdGUgVVJMCi0gKiBAcGFyYW0ge1N0cmluZ30g cGFzc3dvcmQ6IHBhc3N3b3JkIHVzZWQgdG8gYXV0aGVudGljYXRlIHRvIHRoZSByZW1vdGUgcj0K ZXNvdXJjZQotICogQHBhcmFtIHtTdHJpbmd9IG5vdGVib29rX2xvZ2luX3VybDogVVJMIHRoYXQg c2hvdWxkIGJlIFBPU1RlZCB0byBmb3IgbG89CmdpbgotICogQHBhcmFtIHtTdHJpbmd9IG5vdGVi b29rX2FjY2Vzc191cmw6IHRoZSBVUkwgZW1iZWRlZCBpbiB0aGUgcGFnZSBhbmQgbG89CmFkZWQK LSAqCi0gKi8KLWZ1bmN0aW9uIGxvYWRfbm90ZWJvb2socGFzc3dvcmQsIG5vdGVib29rX2xvZ2lu X3VybCwgbm90ZWJvb2tfYWNjZXNzX3VybCl7Ci0gICAgJCggZG9jdW1lbnQgKS5yZWFkeShmdW5j dGlvbigpIHsKLSAgICAgICAgLy8gVGVzdCBub3RlYm9va19sb2dpbl91cmwgZm9yIGFjY2Vzc2li aWxpdHksIGV4ZWN1dGluZyB0aGUgbG9naW4rPQpsb2FkIGZ1bmN0aW9uIHdoZW5ldmVyCi0gICAg ICAgIC8vIHdlJ3ZlIHN1Y2Nlc3NmdWxseSBjb25uZWN0ZWQgdG8gdGhlIElFLgotICAgICAgICB0 ZXN0X2llX2F2YWlsYWJpbGl0eShub3RlYm9va19sb2dpbl91cmwsIGZ1bmN0aW9uKCl7Ci0gICAg ICAgICAgICBfaGFuZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmQsIG5vdGVib29rX2xvZ2lu X3VybCwgbm90ZWJvbz0Ka19hY2Nlc3NfdXJsKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0K LS8qKgotICogTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBJRXMKLSAqLwotZnVuY3Rpb24gX2hhbmRs ZV9ub3RlYm9va19sb2FkaW5nKHBhc3N3b3JkLCBub3RlYm9va19sb2dpbl91cmwsIG5vdGVib29r X2E9CmNjZXNzX3VybCl7Ci0gICAgaWYgKCBpZV9wYXNzd29yZF9hdXRoICkgewotICAgICAgICAv LyBNYWtlIGFuIEFKQVggUE9TVAotICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgdHlwZTog IlBPU1QiLAotICAgICAgICAgICAgLy8gdG8gdGhlIExvZ2luIFVSTAotICAgICAgICAgICAgdXJs OiBub3RlYm9va19sb2dpbl91cmwsCi0gICAgICAgICAgICAvLyBXaXRoIG91ciBwYXNzd29yZAot ICAgICAgICAgICAgZGF0YTogewotICAgICAgICAgICAgICAgICdwYXNzd29yZCc6IHBhc3N3b3Jk Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgeGhyRmllbGRzOiB7Ci0gICAgICAgICAgICAg ICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8g SWYgdGhhdCBpcyBzdWNjZXNzZnVsLCBsb2FkIHRoZSBub3RlYm9vawotICAgICAgICAgICAgc3Vj Y2VzczogZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJv b2tfYWNjZXNzX3VybCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZXJyb3I6IGZ1bmN0 aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsKLSAgICAgICAgICAgICAgICBpZihpZV9wYXNzd29y ZF9hdXRoICYmICFpZV9hcGFjaGVfdXJscyl7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZhaWx1 cmUgaGFwcGVucyBkdWUgdG8gQ09SUwotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlX2ZhaWxl ZF9hdXRoKHBhc3N3b3JkKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kX25vdGVib29rKG5v dGVib29rX2FjY2Vzc191cmwpOwotICAgICAgICAgICAgICAgIH1lbHNlewotICAgICAgICAgICAg ICAgICAgICBtZXNzYWdlX2ZhaWxlZF9jb25uZWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg IC8vIERvIHdlIHdhbnQgdG8gdHJ5IGFuZCBsb2FkIHRoZSBub3RlYm9vayBhbnl3YXk/IEp1cz0K dCBpbiBjYXNlPwotICAgICAgICAgICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tf YWNjZXNzX3VybCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9 KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIE5vdCB1c2luZyBwYXNzd29yZCBhdXRo LCBqdXN0IGVtYmVkIGl0IHRvIGF2b2lkIGNvbnRlbnQtb3JpZ2luID0KaXNzdWVzLgotICAgICAg ICBtZXNzYWdlX25vX2F1dGgoKTsKLSAgICAgICAgYXBwZW5kX25vdGVib29rKG5vdGVib29rX2Fj Y2Vzc191cmwpOwotICAgIH0KLX0KCmRpZmYgLXIgM2M0ZjJlYzIyMjQ1ZDYwNzUyNDZkYzAwNjIy ODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYz0KMjk0NTA5ZWM0OGE4ODBh OWIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFr bwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9p ZS5tYWtvCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLTwlIQotaW1wb3J0IG9zCi1p bXBvcnQgeWFtbAotaW1wb3J0IHNobGV4Ci1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgc2h1dGlsCi1p bXBvcnQgaGFzaGxpYgotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBDb25maWdQYXJzZXIKLQot JT4KLQotPCVkZWYgbmFtZT0zRCJzZXRfaWQobmFtZSkiPgotPCUKLSAgICAiIiIKLSAgICAgICAg SUVzIG11c3QgcmVnaXN0ZXIgdGhlaXIgbmFtZSwgc28gaXQgY2FuIGJlIHVzZWQgaW4gY29uc3Ry dWN0aW5nIHN0PQpyaW5ncwotCi0gICAgICAgIEFkZGl0aW9uYWxseSB0aGlzIG1ldGhvZCBzdG9y ZXMgbG90cyBvZiBjb25maWcgb3B0aW9ucyB3ZSB3YW50IHRvID0KYWNjZXNzIGVsc2V3aGVyZS4K LSAgICAiIiIKLSAgICBzZWxmLmF0dHIudml6X2lkID0zRCBuYW1lCi0gICAgc2VsZi5hdHRyLmhp c3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCAp Ci0gICAgc2VsZi5hdHRyLnByb3h5X3JlcXVlc3QgPTNEIHRyYW5zLmFwcC5wcm94eV9tYW5hZ2Vy LnNldHVwX3Byb3h5KCB0cmFucz0KICkKLSAgICBzZWxmLmF0dHIucHJveHlfdXJsID0zRCBzZWxm LmF0dHIucHJveHlfcmVxdWVzdFsgJ3Byb3h5X3VybCcgXQotICAgIHNlbGYuYXR0ci5nYWxheHlf Y29uZmlnID0zRCB0cmFucy5hcHAuY29uZmlnCi0gICAgc2VsZi5hdHRyLmdhbGF4eV9yb290X2Rp ciA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuYXR0ci5nYWxheHlfY29uZmlnLj0Kcm9vdCkKLSAg ICBzZWxmLmF0dHIucm9vdCA9M0QgaC51cmxfZm9yKCIvIikKLSAgICBzZWxmLmF0dHIuYXBwX3Jv b3QgPTNEIHNlbGYuYXR0ci5yb290ICsgInBsdWdpbnMvdmlzdWFsaXphdGlvbnMvIiArIHNlPQps Zi5hdHRyLnZpel9pZCArICIvc3RhdGljLyIKLQotICAgICMgU3RvcmUgb3VyIHRlbXBsYXRlIGFu ZCBjb25maWd1cmF0aW9uIHBhdGgKLSAgICBzZWxmLmF0dHIub3VyX2NvbmZpZ19kaXIgPTNEIG9z LnBhdGguam9pbihwbHVnaW5fcGF0aCwgImNvbmZpZyIpCi0gICAgc2VsZi5hdHRyLm91cl90ZW1w bGF0ZV9kaXIgPTNEIG9zLnBhdGguam9pbihwbHVnaW5fcGF0aCwgInRlbXBsYXRlcyIpCi0gICAg c2VsZi5hdHRyLnZpel9jb25maWcgPTNEIENvbmZpZ1BhcnNlci5TYWZlQ29uZmlnUGFyc2VyKGRl ZmF1bHRfZGljdCkKLSAgICBzZWxmLmF0dHIudml6X2NvbmZpZy5yZWFkKCBvcy5wYXRoLmpvaW4o IHNlbGYuYXR0ci5vdXJfY29uZmlnX2Rpciwgc2VsPQpmLmF0dHIudml6X2lkICsgIi5jb25mIiAp ICkKLSAgICAjIFN0b3JlIHNvbWUgdmFyaWFibGVzIHdlIHdhbnQgYnkgZGVmYXVsdAotICAgIHNl bGYuYXR0ci5QQVNTV09SRF9BVVRIID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFu KCJtYWluIiwgInA9CmFzc3dvcmRfYXV0aCIpCi0gICAgc2VsZi5hdHRyLkFQQUNIRV9VUkxTID0z RCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgImFwYT0KY2hlX3VybHMi KQotICAgIHNlbGYuYXR0ci5TU0xfVVJMUyA9M0Qgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0Ym9v bGVhbigibWFpbiIsICJzc2wiKQotICAgIHNlbGYuYXR0ci5QT1JUID0zRCBzZWxmLmF0dHIucHJv eHlfcmVxdWVzdFsgJ3Byb3hpZWRfcG9ydCcgXQotICAgIHNlbGYuYXR0ci5IT1NUID0zRCByZXF1 ZXN0Lmhvc3QucnNwbGl0KCc6JywgMSlbMF0KLSU+Ci08LyVkZWY+Ci0KLTwlZGVmIG5hbWU9M0Qi d3JpdGVfY29uZl9maWxlKG91dHB1dF9kaXJlY3RvcnksIGV4dHJhPTNEe30pIj4KLTwlCi0gICAg IiIiCi0gICAgICAgIEJ1aWxkIHVwIGEgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgaXMgc3RhbmRh cmQgZm9yIEFMTCBJRXMuCi0KLSAgICAgICAgVE9ETzogcmVwbGFjZSBoYXNoZWQgcGFzc3dvcmQg d2l0aCBwbGFpbnRleHQuCi0gICAgIiIiCi0gICAgY29uZl9maWxlID0zRCB7Ci0gICAgICAgICdo aXN0b3J5X2lkJzogc2VsZi5hdHRyLmhpc3RvcnlfaWQsCi0gICAgICAgICdhcGlfa2V5JzogZ2V0 X2FwaV9rZXkoKSwKLSAgICAgICAgJ3JlbW90ZV9ob3N0JzogcmVxdWVzdC5yZW1vdGVfYWRkciwK LSAgICAgICAgJ2RvY2tlcl9wb3J0Jzogc2VsZi5hdHRyLlBPUlQsCi0gICAgICAgICdjb3JzX29y aWdpbic6IHJlcXVlc3QuaG9zdF91cmwsCi0gICAgfQotCi0gICAgaWYgc2VsZi5hdHRyLmdhbGF4 eV9jb25maWcuZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybF9zZXQ6Ci0gICAgICAgIGNvbmZfZmls ZVsnZ2FsYXh5X3VybCddID0zRCBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy5nYWxheHlfaW5mcmFz dD0KcnVjdHVyZV91cmwucnN0cmlwKCcvJykgKyAnLycKLSAgICBlbHNlOgotICAgICAgICBjb25m X2ZpbGVbJ2dhbGF4eV91cmwnXSA9M0QgcmVxdWVzdC5hcHBsaWNhdGlvbl91cmwucnN0cmlwKCcv JykgKyA9CicvJwotICAgICAgICBjb25mX2ZpbGVbJ2dhbGF4eV9wYXN0ZXJfcG9ydCddID0zRCBz ZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy5ndWVzc189CmdhbGF4eV9wb3J0KCkKLQotICAgIGlmIHNl bGYuYXR0ci5QQVNTV09SRF9BVVRIOgotICAgICAgICAjIEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3 b3JkICsgc2FsdAotICAgICAgICBub3RlYm9va19wd19zYWx0ID0zRCBzZWxmLmdlbmVyYXRlX3Bh c3N3b3JkKGxlbmd0aD0zRDEyKQotICAgICAgICBub3RlYm9va19wdyA9M0Qgc2VsZi5nZW5lcmF0 ZV9wYXNzd29yZChsZW5ndGg9M0QyNCkKLSAgICAgICAgbSA9M0QgaGFzaGxpYi5zaGExKCkKLSAg ICAgICAgbS51cGRhdGUoIG5vdGVib29rX3B3ICsgbm90ZWJvb2tfcHdfc2FsdCApCi0gICAgICAg IGNvbmZfZmlsZVsnbm90ZWJvb2tfcGFzc3dvcmQnXSA9M0QgJ3NoYTE6JXM6JXMnICUgKG5vdGVi b29rX3B3X3NhbD0KdCwgbS5oZXhkaWdlc3QoKSkKLSAgICAgICAgIyBTaG91bGQgd2UgdXNlIHBh c3N3b3JkIGJhc2VkIGNvbm5lY3Rpb24gb3IgImRlZmF1bHQiIGNvbm5lY3Rpb24gPQpzdHlsZSBp biBnYWxheHkKLSAgICBlbHNlOgotICAgICAgICBub3RlYm9va19wdyA9M0QgIk5vbmUiCi0KLSAg ICAjIFNvbWUgd2lsbCBuZWVkIHRvIHBhc3MgZXh0cmEgZGF0YQotICAgIGZvciBleHRyYV9rZXkg aW4gZXh0cmE6Ci0gICAgICAgIGNvbmZfZmlsZVtleHRyYV9rZXldID0zRCBleHRyYVtleHRyYV9r ZXldCi0KLSAgICBzZWxmLmF0dHIubm90ZWJvb2tfcHcgPTNEIG5vdGVib29rX3B3Ci0gICAgIyBX cml0ZSBjb25mCi0gICAgd2l0aCBvcGVuKCBvcy5wYXRoLmpvaW4oIG91dHB1dF9kaXJlY3Rvcnks ICdjb25mLnlhbWwnICksICd3YicgKSBhcyBoYT0KbmRsZToKLSAgICAgICAgaGFuZGxlLndyaXRl KCB5YW1sLmR1bXAoY29uZl9maWxlLCBkZWZhdWx0X2Zsb3dfc3R5bGU9M0RGYWxzZSkgKQotCi0l PgotPC8lZGVmPgotCi08JWRlZiBuYW1lPTNEImdlbmVyYXRlX2hleChsZW5ndGgpIj4KLTwlCi0g ICAgIiIiCi0gICAgICAgIEdlbmVyYXRlIGEgaGV4IHN0cmluZwotICAgICIiIgotICAgIHJldHVy biAnJy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWYnKSBmb3IgXyBpbiByYW5n ZShsZW5ndGg9CikpCi0lPgotPC8lZGVmPgotCi08JWRlZiBuYW1lPTNEImdlbmVyYXRlX3Bhc3N3 b3JkKGxlbmd0aCkiPgotPCUKLSAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgYSByYW5kb20gYWxw aGFudW1lcmljIHBhc3N3b3JkCi0gICAgIiIiCi0gICAgcmV0dXJuICcnLmpvaW4ocmFuZG9tLmNo b2ljZSgnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JykgZj0Kb3IgXyBpbiBy YW5nZShsZW5ndGgpKQotJT4KLTwvJWRlZj4KLQotPCVkZWYgbmFtZT0zRCJqYXZhc2NyaXB0X2Jv b2xlYW4ocHl0aG9uX2Jvb2xlYW4pIj4KLTwlCi0gICAgIiIiCi0gICAgICAgIENvbnZlbmllbmNl IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYm9vbGVhbiBmb3IgdXNlIGluIEpTCi0gICAgIiIiCi0gICAg aWYgcHl0aG9uX2Jvb2xlYW46Ci0gICAgICAgIHJldHVybiAidHJ1ZSI7Ci0gICAgZWxzZToKLSAg ICAgICAgcmV0dXJuICJmYWxzZSIKLSU+Ci08LyVkZWY+Ci0KLQotPCVkZWYgbmFtZT0zRCJ1cmxf dGVtcGxhdGUodXJsX3RlbXBsYXRlKSI+Ci08JQotICAgICIiIgotICAgICAgICBQcm9jZXNzIGEg VVJMIHRlbXBsYXRlCi0KLSAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwgdmFyaWFibGVzIGFjY2Vz c2libGUgdG8gdGhlIHVzZXI6Ci0KLSAgICAgICAgICAgIC0gJHtQUk9YWV9VUkx9IHdpbGwgYmUg cmVwbGFjZWQgd2l0aCBkeW5hbWljYWxseSBjcmVhdGUgcHJveHkKLSAgICAgICAgICAgIC0gJHtQ T1JUfSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHBvcnQgdGhlIGRvY2tlciBpbWFnZSBpcyBh PQp0dGFjaGVkIHRvCi0gICAgIiIiCi0gICAgdXJsID0zRCB1cmxfdGVtcGxhdGUucmVwbGFjZSgn JHtQUk9YWV9VUkx9Jywgc3RyKHNlbGYuYXR0ci5wcm94eV91cmwpKT0KIFwKLSAgICAgICAgICAg IC5yZXBsYWNlKCcke1BPUlR9Jywgc3RyKHNlbGYuYXR0ci5QT1JUKSkKLSAgICByZXR1cm4gdXJs Ci0lPgotPC8lZGVmPgotCi0KLTwlZGVmIG5hbWU9M0QiZG9ja2VyX2NtZCh0ZW1wX2RpcikiPgot PCUKLSAgICAiIiIKLSAgICAgICAgR2VuZXJhdGUgYW5kIHJldHVybiB0aGUgZG9ja2VyIGNvbW1h bmQgdG8gZXhlY3V0ZQotICAgICIiIgotICAgIHJldHVybiAnJXMgcnVuIC1kIC0tc2lnLXByb3h5 PTNEdHJ1ZSAtcCAlczolcyAtdiAiJXM6L2ltcG9ydC8iICVzJyAlIFwKLSAgICAgICAgKHNlbGYu YXR0ci52aXpfY29uZmlnLmdldCgiZG9ja2VyIiwgImNvbW1hbmQiKSwgc2VsZi5hdHRyLlBPUlQs IHNlPQpsZi5hdHRyLmRvY2tlcl9wb3J0LAotICAgICAgICAgdGVtcF9kaXIsIHNlbGYuYXR0ci52 aXpfY29uZmlnLmdldCgiZG9ja2VyIiwgImltYWdlIikpCi0lPgotPC8lZGVmPgotCi0KLTwlZGVm IG5hbWU9M0QiZGVmYXVsdF9qYXZhc2NyaXB0X3ZhcmlhYmxlcygpIj4KLS8vIEdsb2JhbHMKLWll X3Bhc3N3b3JkX2F1dGggPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5Q QVNTV09SRF9BVVRIKSB9OwotaWVfYXBhY2hlX3VybHMgPTNEICR7IHNlbGYuamF2YXNjcmlwdF9i b29sZWFuKHNlbGYuYXR0ci5BUEFDSEVfVVJMUykgfTsKLWllX3Bhc3N3b3JkID0zRCAnJHsgc2Vs Zi5hdHRyLm5vdGVib29rX3B3IH0nOwotdmFyIGdhbGF4eV9yb290ID0zRCAnJHsgc2VsZi5hdHRy LnJvb3QgfSc7Ci12YXIgYXBwX3Jvb3QgPTNEICckeyBzZWxmLmF0dHIuYXBwX3Jvb3QgfSc7Ci08 LyVkZWY+Ci0KLQotPCVkZWYgbmFtZT0zRCJsb2FkX2RlZmF1bHRfanMoKSI+Ci0ke2guY3NzKCAn YmFzZScgKSB9Ci0ke2guanMoICdsaWJzL2pxdWVyeS9qcXVlcnknLAotICAgICAgICAnbGlicy90 b2FzdHInLAotICAgICAgICAnbGlicy9yZXF1aXJlJyl9Ci08LyVkZWY+CgpkaWZmIC1yIDNjNGYy ZWMyMjI0NWQ2MDc1MjQ2ZGMwMDYyMjgyYjc2M2I0NjRkMGIgLXIgNDBmN2Y5NDQwOTAwNzlkNDRi NDdkM2M9CjI5NDUwOWVjNDhhODgwYTliIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2lw eXRob24vdGVtcGxhdGVzL2lweXRob24ubT0KYWtvCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh bGl6YXRpb25zL2lweXRob24vdGVtcGxhdGVzL2lweXRob24ubWFrbworKysgL2Rldi9udWxsCkBA IC0xLDY0ICswLDAgQEAKLTwlbmFtZXNwYWNlIGZpbGU9M0QiaWUubWFrbyIgbmFtZT0zRCJpZSIv PgotPCUKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQg c3VicHJvY2VzcwotCi0jIFNldHMgSUQgYW5kIHNldHMgdXAgYSBsb3Qgb2Ygb3RoZXIgdmFyaWFi bGVzCi1pZS5zZXRfaWQoImlweXRob24iKQotaWUuYXR0ci5kb2NrZXJfcG9ydCA9M0QgNjc4OQot IyBDcmVhdGUgdGVtcGRpciBpbiBnYWxheHkKLXRlbXBfZGlyID0zRCBvcy5wYXRoLmFic3BhdGgo IHRlbXBmaWxlLm1rZHRlbXAoKSApCi0jIFdyaXRlIG91dCBjb25mIGZpbGUuLi5uZWVkcyB3b3Jr Ci1pZS53cml0ZV9jb25mX2ZpbGUodGVtcF9kaXIpCi0KLSMjIElQeXRob24gU3BlY2lmaWMKLSMg UHJlcGFyZSBhbiBlbXB0eSBub3RlYm9vawotbm90ZWJvb2tfaWQgPTNEIGllLmdlbmVyYXRlX2hl eCg2NCkKLXdpdGggb3Blbiggb3MucGF0aC5qb2luKCBpZS5hdHRyLm91cl90ZW1wbGF0ZV9kaXIs ICdub3RlYm9vay5pcHluYicgKSwgJ3InPQopIGFzIG5iX2hhbmRsZToKLSAgICBlbXB0eV9uYiA9 M0QgbmJfaGFuZGxlLnJlYWQoKQotZW1wdHlfbmIgPTNEIGVtcHR5X25iICUgbm90ZWJvb2tfaWQK LSMgQ29weSBvdmVyIGRlZmF1bHQgbm90ZWJvb2ssIHVubGVzcyB0aGUgZGF0YXNldCB0aGlzIHZp eiBpcyBydW5uaW5nIG9uIGlzPQogYSBub3RlYm9vawotZW1wdHlfbmJfcGF0aCA9M0Qgb3MucGF0 aC5qb2luKHRlbXBfZGlyLCAnaXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmInKQotaWYgaGRh LmRhdGF0eXBlLl9fY2xhc3NfXy5fX25hbWVfXyAhPTNEICJJcHluYiI6Ci0gICAgd2l0aCBvcGVu KCBlbXB0eV9uYl9wYXRoLCAndysnICkgYXMgaGFuZGxlOgotICAgICAgICBoYW5kbGUud3JpdGUo IGVtcHR5X25iICkKLWVsc2U6Ci0gICAgc2h1dGlsLmNvcHkoIGhkYS5maWxlX25hbWUsIGVtcHR5 X25iX3BhdGggKQotCi0KLSMjIEdlbmVyYWwgSUUgc3BlY2lmaWMKLSMgQWNjZXNzIFVSTHMgZm9y IHRoZSBub3RlYm9vayBmcm9tIHdpdGhpbiBnYWxheHkuCi1ub3RlYm9va19hY2Nlc3NfdXJsID0z RCBpZS51cmxfdGVtcGxhdGUoJyR7UFJPWFlfVVJMfS9pcHl0aG9uLyR7UE9SVH0vbm90ZT0KYm9v a3MvaXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmInKQotbm90ZWJvb2tfbG9naW5fdXJsID0z RCBpZS51cmxfdGVtcGxhdGUoJyR7UFJPWFlfVVJMfS9pcHl0aG9uLyR7UE9SVH0vbG9naW49Cj9u ZXh0PTNEJTJGaXB5dGhvbiUyRiR7UE9SVH0lMkZ0cmVlJykKLQotZG9ja2VyX2NtZCA9M0QgaWUu ZG9ja2VyX2NtZCh0ZW1wX2RpcikKLXN1YnByb2Nlc3MuY2FsbChkb2NrZXJfY21kLCBzaGVsbD0z RFRydWUpCi0lPgotPGh0bWw+Ci08aGVhZD4KLSR7IGllLmxvYWRfZGVmYXVsdF9qcygpIH0KLTwv aGVhZD4KLTxib2R5PgotCi08c2NyaXB0IHR5cGU9M0QidGV4dC9qYXZhc2NyaXB0Ij4KLSR7IGll LmRlZmF1bHRfamF2YXNjcmlwdF92YXJpYWJsZXMoKSB9Ci12YXIgbm90ZWJvb2tfbG9naW5fdXJs ID0zRCAnJHsgbm90ZWJvb2tfbG9naW5fdXJsIH0nOwotdmFyIG5vdGVib29rX2FjY2Vzc191cmwg PTNEICckeyBub3RlYm9va19hY2Nlc3NfdXJsIH0nOwotLy8gTG9hZCBub3RlYm9vawotCi1yZXF1 aXJlLmNvbmZpZyh7Ci0gICAgYmFzZVVybDogYXBwX3Jvb3QsCi0gICAgcGF0aHM6IHsKLSAgICAg ICAgInBsdWdpbiIgOiBhcHBfcm9vdCArICJqcy8iLAotICAgIH0sCi19KTsKLXJlcXVpcmVqcyhb J3BsdWdpbi9pZScsICdwbHVnaW4vaXB5dGhvbiddLCBmdW5jdGlvbigpewotICAgIGxvYWRfbm90 ZWJvb2soaWVfcGFzc3dvcmQsIG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYWNjZXNzX3Vy bCk7Ci19KTsKLTwvc2NyaXB0PgotPGRpdiBpZD0zRCJtYWluIiB3aWR0aD0zRCIxMDAlIiBoZWln aHQ9M0QiMTAwJSI+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KCmRpZmYgLXIgM2M0ZjJlYzIy MjQ1ZDYwNzUyNDZkYzAwNjIyODJiNzYzYjQ2NGQwYiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2Qz Yz0KMjk0NTA5ZWM0OGE4ODBhOWIgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvaXB5dGhv bi90ZW1wbGF0ZXMvbm90ZWJvb2suPQppcHluYgotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxp emF0aW9ucy9pcHl0aG9uL3RlbXBsYXRlcy9ub3RlYm9vay5pcHluYgorKysgL2Rldi9udWxsCkBA IC0xLDQzICswLDAgQEAKLXsKLSAibWV0YWRhdGEiOiB7Ci0gICJuYW1lIjogIiIsCi0gICJzaWdu YXR1cmUiOiAic2hhMjU2OiVzIgotIH0sCi0gIm5iZm9ybWF0IjogMywKLSAibmJmb3JtYXRfbWlu b3IiOiAwLAotICJ3b3Jrc2hlZXRzIjogWwotICB7Ci0gICAiY2VsbHMiOiBbCi0gICAgewotICAg ICAiY2VsbF90eXBlIjogImhlYWRpbmciLAotICAgICAibGV2ZWwiOiAxLAotICAgICAibWV0YWRh dGEiOiB7fSwKLSAgICAgInNvdXJjZSI6IFsKLSAgICAgICJXZWxjb21lIHRvIHRoZSBpbnRlcmFj dGl2ZSBHYWxheHkgSVB5dGhvbiBOb3RlYm9vay4iCi0gICAgIF0KLSAgICB9LAotICAgIHsKLSAg ICAgImNlbGxfdHlwZSI6ICJtYXJrZG93biIsCi0gICAgICJtZXRhZGF0YSI6IHt9LAotICAgICAi c291cmNlIjogWwotICAgICAgIllvdSBjYW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhlIGRhdGFz ZXQgbnVtYmVyLiBGb3IgZXhhbXBsZSwgYGBoYW49CmRsZSA9M0QgZ2V0KDQyKWBgLiIsCi0gICAg ICAiVG8gc2F2ZSBkYXRhLCB3cml0ZSB5b3VyIGRhdGEgdG8gYSBmaWxlLCBhbmQgdGhlbiBjYWxs IGBgcHV0KCdmaWxlbj0KYW1lLnR4dCcpYGAuIFRoZSBkYXRhc2V0IHdpbGwgdGhlbiBiZSBhdmFp bGFibGUgaW4geW91ciBnYWxheHkgaGlzdG9yeS4iLAotICAgICAgIk5vdGVib29rcyBjYW4gYmUg c2F2ZWQgdG8gR2FsYXh5IGJ5IGNsaWNraW5nIHRoZSBsYXJnZSBncmVlbiBidXR0b249CiBhdCB0 aGUgdG9wIHJpZ2h0IG9mIHRoZSBJUHl0aG9uIGludGVyZmFjZS48YnI+IiwKLSAgICAgICJNb3Jl IGhlbHAgYW5kIGluZm9ybWF0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIHByb2plY3QgW3dlYnNp dGVdKGh0PQp0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbikuIgotICAg ICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICJjZWxsX3R5cGUiOiAiY29kZSIsCi0gICAgICJjb2xs YXBzZWQiOiBmYWxzZSwKLSAgICAgImlucHV0IjogWwotICAgICBdLAotICAgICAibGFuZ3VhZ2Ui OiAicHl0aG9uIiwKLSAgICAgIm1ldGFkYXRhIjoge30sCi0gICAgICJvdXRwdXRzIjogW10sCi0g ICAgICJwcm9tcHRfbnVtYmVyIjogMQotICAgIH0KLSAgIF0sCi0gICAibWV0YWRhdGEiOiB7fQot ICB9Ci0gXQotfQoKZGlmZiAtciAzYzRmMmVjMjIyNDVkNjA3NTI0NmRjMDA2MjI4MmI3NjNiNDY0 ZDBiIC1yIDQwZjdmOTQ0MDkwMDc5ZDQ0YjQ3ZDNjPQoyOTQ1MDllYzQ4YTg4MGE5YiBsaWIvZ2Fs YXh5L2NvbmZpZy5weQotLS0gYS9saWIvZ2FsYXh5L2NvbmZpZy5weQorKysgYi9saWIvZ2FsYXh5 L2NvbmZpZy5weQpAQCAtMzc3LDYgKzM3NywxMiBAQAogICAgICAgICAjIGRpcmVjdG9yeSB3aGVy ZSB0aGUgdmlzdWFsaXphdGlvbi9yZWdpc3RyeSBzZWFyY2hlcyBmb3IgcGx1Z2lucwogICAgICAg ICBzZWxmLnZpc3VhbGl6YXRpb25fcGx1Z2luc19kaXJlY3RvcnkgPTNEIGt3YXJncy5nZXQoCiAg ICAgICAgICAgICAndmlzdWFsaXphdGlvbl9wbHVnaW5zX2RpcmVjdG9yeScsICdjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aT0Kb25zJyApCisgICAgICAgIGllX2RpcnMgPTNEIGt3YXJncy5nZXQo ICdpbnRlcmFjdGl2ZV9lbnZpcm9ubWVudF9wbHVnaW5zX2RpcmVjdG9yeT0KJywgTm9uZSApCisg ICAgICAgIGlmIGllX2RpcnMgYW5kIG5vdCBzZWxmLnZpc3VhbGl6YXRpb25fcGx1Z2luc19kaXJl Y3Rvcnk6CisgICAgICAgICAgICBzZWxmLnZpc3VhbGl6YXRpb25fcGx1Z2luc19kaXJlY3Rvcnkg PTNEIGllX2RpcnMKKyAgICAgICAgZWxpZiBpZV9kaXJzOgorICAgICAgICAgICAgc2VsZi52aXN1 YWxpemF0aW9uX3BsdWdpbnNfZGlyZWN0b3J5ICs9M0QgIiwlcyIgJSBpZV9kaXJzCisKICAgICAg ICAgc2VsZi5wcm94eV9zZXNzaW9uX21hcCA9M0Qgc2VsZi5yZXNvbHZlX3BhdGgoIGt3YXJncy5n ZXQoICJkeW5hbWljPQpfcHJveHlfc2Vzc2lvbl9tYXAiLCAiZGF0YWJhc2Uvc2Vzc2lvbl9tYXAu c3FsaXRlIiApICkKICAgICAgICAgc2VsZi5tYW5hZ2VfZHluYW1pY19wcm94eSA9M0Qgc3RyaW5n X2FzX2Jvb2woIGt3YXJncy5nZXQoICJkeW5hbWljPQpfcHJveHlfbWFuYWdlIiwgIlRydWUiICkg KSAgIyBTZXQgdG8gZmFsc2UgaWYgYmVpbmcgbGF1bmNoZWQgZXh0ZXJuYWxseQogICAgICAgICBz ZWxmLmR5bmFtaWNfcHJveHlfYmluZF9wb3J0ID0zRCBpbnQoIGt3YXJncy5nZXQoICJkeW5hbWlj X3Byb3h5X2I9CmluZF9wb3J0IiwgIjg4MDAiICkgKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy81OTFmOGZhZTYwMTYvCkNoYW5nZXNldDogICA1 OTFmOGZhZTYwMTYKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0x OCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgVXNlIG5ld2VyLXN0eWxlIEdhbGF4eSBjb25m aWd1cmF0aW9uIG9mIGludGVyYWN0aXZlIGVudmlyb25tZW49CnRzLgpTZXR1cCBhIHNhbXBsZSBm aWxlIGFuZCBmYWxsYmFjayBvbiBpdCBpZiBhIG1hdGVyaWFsaXplZCAuaW5pIGlzbid0IHByZXNl bnQ9Ci4gVXNlIC5pbmkgaW5zdGVhZCBvZiAuY29uZiBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUg cmVzdCBvZiB0aGUgY29uZmlnIGRpcj0KZWN0b3J5LgpBZmZlY3RlZCAjOiAgMyBmaWxlcwoKZGlm ZiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYzI5NDUwOWVjNDhhODgwYTliIC1yIDU5MWY4ZmFl NjAxNjUxZjIzYTA5YzQxPQo5OTY2MmU2NzVkYTVhMjdjNyBjb25maWcvcGx1Z2lucy9pbnRlcmFj dGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXA9Cnl0aG9uLmNvbmYKLS0tIGEvY29u ZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vY29uZmlnL2lweXRo b24uY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotW21haW5dCi1hcGFjaGVfdXJs cyA9M0QgRmFsc2UKLXBhc3N3b3JkX2F1dGggPTNEIEZhbHNlCi1zc2wgPTNEIEZhbHNlCi0KLVtk b2NrZXJdCi1jb21tYW5kID0zRCBkb2NrZXIKLWltYWdlID0zRCBiZ3J1ZW5pbmcvZG9ja2VyLWlw eXRob24tbm90ZWJvb2sKLQoKZGlmZiAtciA0MGY3Zjk0NDA5MDA3OWQ0NGI0N2QzYzI5NDUwOWVj NDhhODgwYTliIC1yIDU5MWY4ZmFlNjAxNjUxZjIzYTA5YzQxPQo5OTY2MmU2NzVkYTVhMjdjNyBj b25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXA9 Cnl0aG9uLmluaS5zYW1wbGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvcGx1Z2lucy9pbnRl cmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi5pbmkuc2E9Cm1wbGUK QEAgLTAsMCArMSw5IEBACitbbWFpbl0KK2FwYWNoZV91cmxzID0zRCBGYWxzZQorcGFzc3dvcmRf YXV0aCA9M0QgRmFsc2UKK3NzbCA9M0QgRmFsc2UKKworW2RvY2tlcl0KK2NvbW1hbmQgPTNEIGRv Y2tlcgoraW1hZ2UgPTNEIGJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vaworCgpkaWZm IC1yIDQwZjdmOTQ0MDkwMDc5ZDQ0YjQ3ZDNjMjk0NTA5ZWM0OGE4ODBhOWIgLXIgNTkxZjhmYWU2 MDE2NTFmMjNhMDljNDE9Cjk5NjYyZTY3NWRhNWEyN2M3IGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0 aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3RlbXBsYXRlcz0KL2llLm1ha28KLS0tIGEvY29uZmln L3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vdGVtcGxhdGVzL2llLm1h a28KKysrIGIvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24v dGVtcGxhdGVzL2llLm1ha28KQEAgLTMwLDcgKzMwLDEwIEBACiAgICAgc2VsZi5hdHRyLm91cl9j b25maWdfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2luX3BhdGgsICJjb25maWciKQogICAgIHNl bGYuYXR0ci5vdXJfdGVtcGxhdGVfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2luX3BhdGgsICJ0 ZW1wbGF0ZXMiKQogICAgIHNlbGYuYXR0ci52aXpfY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2Fm ZUNvbmZpZ1BhcnNlcihkZWZhdWx0X2RpY3QpCi0gICAgc2VsZi5hdHRyLnZpel9jb25maWcucmVh ZCggb3MucGF0aC5qb2luKCBzZWxmLmF0dHIub3VyX2NvbmZpZ19kaXIsIHNlbD0KZi5hdHRyLnZp el9pZCArICIuY29uZiIgKSApCisgICAgY29uZl9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIHNlbGYu YXR0ci5vdXJfY29uZmlnX2Rpciwgc2VsZi5hdHRyLnZpel9pZD0KICsgIi5pbmkiICkKKyAgICBp ZiBub3Qgb3MucGF0aC5leGlzdHMoIGNvbmZfcGF0aCApOgorICAgICAgICBjb25mX3BhdGggPTNE ICIlcy5zYW1wbGUiICUgY29uZl9wYXRoCisgICAgc2VsZi5hdHRyLnZpel9jb25maWcucmVhZCgg Y29uZl9wYXRoICkKICAgICAjIFN0b3JlIHNvbWUgdmFyaWFibGVzIHdlIHdhbnQgYnkgZGVmYXVs dAogICAgIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5n ZXRib29sZWFuKCJtYWluIiwgInA9CmFzc3dvcmRfYXV0aCIpCiAgICAgc2VsZi5hdHRyLkFQQUNI RV9VUkxTID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgImFwYT0K Y2hlX3VybHMiKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy9kMTc5ZGY3NDFmZjUvCkNoYW5nZXNldDogICBkMTc5ZGY3NDFmZjUKVXNlcjogICAg ICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOCAyMjozODowNCswMDowMApTdW1t YXJ5OiAgICAgVXBkYXRlIHBsdWdpbiBmcmFtZXdvcmsgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB2 aXogYW5kIElFIGZyYW09CmV3b3Jrcy4KVXBkYXRlIElQeXRob24gYWNjb3JkaW5nbHkuCkFmZmVj dGVkICM6ICAzIGZpbGVzCgpkaWZmIC1yIDU5MWY4ZmFlNjAxNjUxZjIzYTA5YzQxOTk2NjJlNjc1 ZGE1YTI3YzcgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgyYTY9CjRmMmFhYTgxN2U0NDA1MDQ3IGNv bmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL2NvbmZpZy9pcD0K eXRob24ueG1sCi0tLSBhL2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9p cHl0aG9uL2NvbmZpZy9pcHl0aG9uLnhtbAorKysgYi9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2 ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi54bWwKQEAgLTEsNiArMSw2IEBA CiA8P3htbCB2ZXJzaW9uPTNEIjEuMCIgZW5jb2Rpbmc9M0QiVVRGLTgiPz4KLTwhRE9DVFlQRSB2 aXN1YWxpemF0aW9uIFNZU1RFTSAiLi4vLi4vaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmR0ZCI+ Ci08dmlzdWFsaXphdGlvbiBuYW1lPTNEIklQeXRob24iPgorPCFET0NUWVBFIGludGVyYWN0aXZl X2Vudmlyb25tZW50IFNZU1RFTSAiLi4vLi4vaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmQ9CnRk Ij4KKzxpbnRlcmFjdGl2ZV9lbnZpcm9ubWVudCBuYW1lPTNEIklQeXRob24iPjxkYXRhX3NvdXJj ZXM+PGRhdGFfc291cmNlPjxtb2RlPQpsX2NsYXNzPkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb248 L21vZGVsX2NsYXNzPgpAQCAtMTMsNCArMTMsNCBAQAogICAgICAgICA8cGFyYW0gdHlwZT0zRCJk YXRhc2V0IiB2YXJfbmFtZV9pbl90ZW1wbGF0ZT0zRCJoZGEiIHJlcXVpcmVkPTNEInQ9CnJ1ZSI+ ZGF0YXNldF9pZDwvcGFyYW0+PC9wYXJhbXM+PHRlbXBsYXRlPmlweXRob24ubWFrbzwvdGVtcGxh dGU+Ci08L3Zpc3VhbGl6YXRpb24+Cis8L2ludGVyYWN0aXZlX2Vudmlyb25tZW50PgoKZGlmZiAt ciA1OTFmOGZhZTYwMTY1MWYyM2EwOWM0MTk5NjYyZTY3NWRhNWEyN2M3IC1yIGQxNzlkZjc0MWZm NTE4ZjA5ZmM4MmE2PQo0ZjJhYWE4MTdlNDQwNTA0NyBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0 aW9ucy92aXN1YWxpemF0aW9uLmR0ZAotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9u cy92aXN1YWxpemF0aW9uLmR0ZAorKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy92 aXN1YWxpemF0aW9uLmR0ZApAQCAtMSw1ICsxLDYgQEAKIDwhLS0gZWFjaCB2aXN1YWxpemF0aW9u IG11c3QgaGF2ZSBhIHRlbXBsYXRlIChhbGwgb3RoZXIgZWxlbWVudHMgYXJlIG9wdGlvPQpuYWwp IC0tPjwhRUxFTUVOVCB2aXN1YWxpemF0aW9uIChkZXNjcmlwdGlvbiosZGF0YV9zb3VyY2VzKixw YXJhbXMqLHRlbXBsYXQ9CmVfcm9vdCosdGVtcGxhdGUscmVuZGVyX3RhcmdldCopPgorPCFFTEVN RU5UIGludGVyYWN0aXZlX2Vudmlyb25tZW50IChkZXNjcmlwdGlvbiosZGF0YV9zb3VyY2VzKixw YXJhbXMqLHRlbXA9CmxhdGVfcm9vdCosdGVtcGxhdGUscmVuZGVyX3RhcmdldCopPjwhLS0gdmlz dWFsaXphdGlvbgogICAgICAgICBuYW1lOiB0aGUgdGl0bGUvZGlzcGxheSBuYW1lIG9mIHRoZSB2 aXN1YWxpemF0aW9uIChlLmcuICdUcmFja3N0ZXI9CicsICdGYXN0cSBTdGF0cycsIGV0Yy4pIFJF UVVJUkVECiAgICAgICAgIGRpc2FibGVkOiBpZiBpbmNsdWRlZCAodmFsdWUgZG9lcyBub3QgbWF0 dGVyKSwgdGhpcyBhdHRyaWJ1dGUgd2lsbD0KIHByZXZlbnQgdGhlIHZpc3VhbGl6YXRpb24gYmVp bmcgbG9hZGVkCgpkaWZmIC1yIDU5MWY4ZmFlNjAxNjUxZjIzYTA5YzQxOTk2NjJlNjc1ZGE1YTI3 YzcgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgyYTY9CjRmMmFhYTgxN2U0NDA1MDQ3IGxpYi9nYWxh eHkvdmlzdWFsaXphdGlvbi9yZWdpc3RyeS5weQotLS0gYS9saWIvZ2FsYXh5L3Zpc3VhbGl6YXRp b24vcmVnaXN0cnkucHkKKysrIGIvbGliL2dhbGF4eS92aXN1YWxpemF0aW9uL3JlZ2lzdHJ5LnB5 CkBAIC00MDEsNiArNDAxLDEwIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm5lZCA9M0Qg e30KPTIwCisgICAgICAgICMgbWFpbiB0YWcgc3BlY2lmaWVzIHBsdWdpbiB0eXBlICh2aXN1YWxp emF0aW9uIG9yCisgICAgICAgICMgaW50ZXJhY3RpdmVfZW52aW9ybm1lbnQpLgorICAgICAgICBy ZXR1cm5lZFsgJ3BsdWdpbl90eXBlJyBdID0zRCB4bWxfdHJlZS50YWcKKwogICAgICAgICAjIGEg dGV4dCBkaXNwbGF5IG5hbWUgZm9yIGVuZCB1c2VyIGxpbmtzCiAgICAgICAgIHJldHVybmVkWyAn bmFtZScgXSA9M0QgeG1sX3RyZWUuYXR0cmliLmdldCggJ25hbWUnLCBOb25lICkKICAgICAgICAg aWYgbm90IHJldHVybmVkWyAnbmFtZScgXToKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5 L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvZWY0YTVlYzljNWNjLwpDaGFuZ2VzZXQ6ICAgZWY0YTVl YzljNWNjClVzZXI6ICAgICAgICBqbWNoaWx0b24KRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6 Mzg6MDQrMDA6MDAKU3VtbWFyeTogICAgIFJlZmFjdG9yIGludGVyYWN0aXZlIGVudmlyb25tZW50 IHBsdWdpbiBmcmFtZXdvcmsgb3V0IG9mIElQeXRoPQpvbiBhbmQgaW50byBHYWxheHkuClJlbHkg b24gbW9yZSBQeXRob24gYW5kIGxlc3Mgb24gbWFrbywgc2V0dXAgYSBzbWFsbCBzaGFyZWQgY29t bW9uIG1ha28gZmlsZT0KIGluIGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50 cy9jb21tb24vaWUubWFrby4gTW92ZSBpZS5qcyBpbnRvPQogY2xpZW50L2dhbGF4eS9zY3JpcHRz L2dhbGF4eS5pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMuanMgYW5kIGV4dHJhY3QgSVB5dGg9Cm9u J3MgcmVxdWlyZSBjb25maWcgb3V0IHNvIGl0IGRvZXNuJ3QgaGF2ZSB0byBkaXJlY3RseSByZWZl cmVuY2UgY2xpZW50L2dhbD0KYXh5L3NjcmlwdHMvZ2FsYXh5LmludGVyYWN0aXZlX2Vudmlyb25t ZW50cy5qcyAoSSBkb3VidCBpdCBpcyB3aGVyZSB0aGF0IGZpPQpsZSBhY3R1YWxseSBzaG91bGQg YmUpLgpBZmZlY3RlZCAjOiAgMTEgZmlsZXMKCmRpZmYgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgy YTY0ZjJhYWE4MTdlNDQwNTA0NyAtciBlZjRhNWVjOWM1Y2NhMDM4OTk4NzEyYj0KYmQ0MDczOTMx NjVjNWU4YjkgY2xpZW50L2dhbGF4eS9zY3JpcHRzL2dhbGF4eS5pbnRlcmFjdGl2ZV9lbnZpcm9u bWVudHMuanMKLS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvZ2FsYXh5 LmludGVyYWN0aXZlX2Vudmlyb25tZW50cy5qcwpAQCAtMCwwICsxLDU5IEBACisvKioKKyAqIElu dGVybmFsIGZ1bmN0aW9uIHRvIHJlbW92ZSBjb250ZW50IGZyb20gdGhlIG1haW4gYXJlYSBhbmQg YWRkIHRoZSBub3RlPQpib29rLgorICogTm90IGlkZW1wb3RlbnQKKyAqLworZnVuY3Rpb24gYXBw ZW5kX25vdGVib29rKHVybCl7CisgICAgY2xlYXJfbWFpbl9hcmVhKCk7CisgICAgJCgnI21haW4n KS5hcHBlbmQoJzxpZnJhbWUgZnJhbWVCb3JkZXI9M0QiMCIgc2VhbWxlc3M9M0Qic2VhbWxlc3Mi IHN0eT0KbGU9M0Qid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyIg c2Nyb2xsaW5nPTNEIm5vIiBzcmM9M0QiPQonKyB1cmwgKyciPjwvaWZyYW1lPicKKyAgICApOwor fQorCitmdW5jdGlvbiBjbGVhcl9tYWluX2FyZWEoKXsKKyAgICAkKCcjc3Bpbm5lcicpLnJlbW92 ZSgpOworICAgICQoJyNtYWluJykuY2hpbGRyZW4oKS5yZW1vdmUoKTsKK30KKworZnVuY3Rpb24g ZGlzcGxheV9zcGlubmVyKCl7CisgICAgICAgICQoJyNtYWluJykuYXBwZW5kKCc8aW1nIGlkPTNE InNwaW5uZXIiIHNyYz0zRCInICsgZ2FsYXh5X3Jvb3QgKyAnLz0Kc3RhdGljL3N0eWxlL2xhcmdl c3Bpbm5lci5naWYiIHN0eWxlPTNEInBvc2l0aW9uOmFic29sdXRlO21hcmdpbjphdXRvO3RvcDow PQo7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7Ij4nKTsKK30KKworCisvKioKKyAqIFRlc3QgYXZh aWxhYmlsaXR5IG9mIGEgVVJMLCBhbmQgY2FsbCBhIGNhbGxiYWNrIHdoZW4gZG9uZS4KKyAqIGh0 dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xLzI1MzkwMjA2LzM0NzM2OAorICogQHBhcmFtIHtTdHJp bmd9IHVybDogVVJMIHRvIHRlc3QgYXZhaWxhYmlsaXR5IG9mLiBNdXN0IHJldHVybiBhIDIwMCAo MzA9CjItPjIwMCBpcyBPSykuCisgKiBAcGFyYW0ge1N0cmluZ30gY2FsbGJhY2s6IGZ1bmN0aW9u IHRvIGNhbGwgb25jZSBzdWNjZXNzZnVsbHkgY29ubmVjdGVkLgorICoKKyAqLworZnVuY3Rpb24g dGVzdF9pZV9hdmFpbGFiaWxpdHkodXJsLCBzdWNjZXNzX2NhbGxiYWNrKXsKKyAgICB2YXIgcmVx dWVzdF9jb3VudCA9M0QgMDsKKyAgICBkaXNwbGF5X3NwaW5uZXIoKTsKKyAgICBpbnRlcnZhbCA9 M0Qgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAg IHVybDogdXJsLAorICAgICAgICAgICAgeGhyRmllbGRzOiB7CisgICAgICAgICAgICAgICAgd2l0 aENyZWRlbnRpYWxzOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdHlwZTogIkdF VCIsCisgICAgICAgICAgICB0aW1lb3V0OiA1MDAsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5j dGlvbigpeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJDb25uZWN0ZWQgdG8gSUUsIHJl dHVybmluZyIpOworICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAg ICAgICAgICAgICAgIHN1Y2Nlc3NfY2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg ICAgICBlcnJvcjogZnVuY3Rpb24oanF4aHIsIHN0YXR1cywgZXJyb3IpeworICAgICAgICAgICAg ICAgIHJlcXVlc3RfY291bnQrKzsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUmVxdWVz dCAiICsgcmVxdWVzdF9jb3VudCk7CisgICAgICAgICAgICAgICAgaWYocmVxdWVzdF9jb3VudCA+ IDMwKXsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAg ICAgICAgICAgICAgICAgIGNsZWFyX21haW5fYXJlYSgpOworICAgICAgICAgICAgICAgICAgICB0 b2FzdHIuZXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGNvbm5lY3Qg dG8gSUUsIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdD0Kb3IiLAorICAgICAgICAgICAgICAgICAg ICAgICAgIkVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0 cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtPQppc3MnOiBmYWxzZX0KKyAgICAgICAg ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg IH0pOworICAgIH0sIDEwMDApOworfQoKZGlmZiAtciBkMTc5ZGY3NDFmZjUxOGYwOWZjODJhNjRm MmFhYTgxN2U0NDA1MDQ3IC1yIGVmNGE1ZWM5YzVjY2EwMzg5OTg3MTJiPQpiZDQwNzM5MzE2NWM1 ZThiOSBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvY29tbW9uL3RlbXBs YXRlcy89CmllLm1ha28KLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvcGx1Z2lucy9pbnRlcmFj dGl2ZV9lbnZpcm9ubWVudHMvY29tbW9uL3RlbXBsYXRlcy9pZS5tYWtvCkBAIC0wLDAgKzEsMzEg QEAKKzwlZGVmIG5hbWU9M0QiZGVmYXVsdF9qYXZhc2NyaXB0X3ZhcmlhYmxlcygpIj4KKy8vIEds b2JhbHMKKworLy8gRm9sbG93aW5nIHRocmVlIGFyZSBmb3Igb2xkZXItc3R5bGUgSUUgcHJveGll cywgbmV3ZXIgZHluYW1pYyBHYWxheHkgcHI9Cm94eQorLy8gZG9lcyBub3QgdXNlIHRoZXNlLgor aWVfcGFzc3dvcmRfYXV0aCA9M0QgJHsgaWVfcmVxdWVzdC5qYXZhc2NyaXB0X2Jvb2xlYW4oaWVf cmVxdWVzdC5hdHRyLlBBU1M9CldPUkRfQVVUSCkgfTsKK2llX2FwYWNoZV91cmxzID0zRCAkeyBp ZV9yZXF1ZXN0LmphdmFzY3JpcHRfYm9vbGVhbihpZV9yZXF1ZXN0LmF0dHIuQVBBQ0hFPQpfVVJM UykgfTsKK2llX3Bhc3N3b3JkID0zRCAnJHsgaWVfcmVxdWVzdC5hdHRyLm5vdGVib29rX3B3IH0n OworCisKK3ZhciBnYWxheHlfcm9vdCA9M0QgJyR7IGllX3JlcXVlc3QuYXR0ci5yb290IH0nOwor dmFyIGFwcF9yb290ID0zRCAnJHsgaWVfcmVxdWVzdC5hdHRyLmFwcF9yb290IH0nOworPC8lZGVm PgorCisKKzwlZGVmIG5hbWU9M0QibG9hZF9kZWZhdWx0X2pzKCkiPgorJHtoLmNzcyggJ2Jhc2Un ICkgfQorJHtoLmpzKCAnbGlicy9qcXVlcnkvanF1ZXJ5JywKKyAgICAgICAgJ2xpYnMvdG9hc3Ry JywKKyAgICAgICAgJ2xpYnMvcmVxdWlyZScpfQorPC8lZGVmPgorCis8JWRlZiBuYW1lPTNEInBs dWdpbl9yZXF1aXJlX2NvbmZpZygpIj4KK3JlcXVpcmUuY29uZmlnKHsKKyAgICBiYXNlVXJsOiBh cHBfcm9vdCwKKyAgICBwYXRoczogeworICAgICAgICAicGx1Z2luIiA6IGFwcF9yb290ICsgImpz LyIsCisgICAgICAgICJpbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMiOiAiJHtoLnVybF9mb3IoJy9z dGF0aWMvc2NyaXB0cy9nYWxheHkuaT0KbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMnKX0iLAorICAg IH0sCit9KTsKKzwvJWRlZj4KCmRpZmYgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgyYTY0ZjJhYWE4 MTdlNDQwNTA0NyAtciBlZjRhNWVjOWM1Y2NhMDM4OTk4NzEyYj0KYmQ0MDczOTMxNjVjNWU4Yjkg Y29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vc3RhdGljL2pz PQovaWUuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lw eXRob24vc3RhdGljL2pzL2llLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoq Ci0gKiBJbnRlcm5hbCBmdW5jdGlvbiB0byByZW1vdmUgY29udGVudCBmcm9tIHRoZSBtYWluIGFy ZWEgYW5kIGFkZCB0aGUgbm90ZT0KYm9vay4KLSAqIE5vdCBpZGVtcG90ZW50Ci0gKi8KLWZ1bmN0 aW9uIGFwcGVuZF9ub3RlYm9vayh1cmwpewotICAgIGNsZWFyX21haW5fYXJlYSgpOwotICAgICQo JyNtYWluJykuYXBwZW5kKCc8aWZyYW1lIGZyYW1lQm9yZGVyPTNEIjAiIHNlYW1sZXNzPTNEInNl YW1sZXNzIiBzdHk9CmxlPTNEIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG92ZXJmbG93Omhp ZGRlbjsiIHNjcm9sbGluZz0zRCJubyIgc3JjPTNEIj0KJysgdXJsICsnIj48L2lmcmFtZT4nCi0g ICAgKTsKLX0KLQotZnVuY3Rpb24gY2xlYXJfbWFpbl9hcmVhKCl7Ci0gICAgJCgnI3NwaW5uZXIn KS5yZW1vdmUoKTsKLSAgICAkKCcjbWFpbicpLmNoaWxkcmVuKCkucmVtb3ZlKCk7Ci19Ci0KLWZ1 bmN0aW9uIGRpc3BsYXlfc3Bpbm5lcigpewotICAgICAgICAkKCcjbWFpbicpLmFwcGVuZCgnPGlt ZyBpZD0zRCJzcGlubmVyIiBzcmM9M0QiJyArIGdhbGF4eV9yb290ICsgJy89CnN0YXRpYy9zdHls ZS9sYXJnZXNwaW5uZXIuZ2lmIiBzdHlsZT0zRCJwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW46YXV0 bzt0b3A6MD0KO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowOyI+Jyk7Ci19Ci0KLQotLyoqCi0gKiBU ZXN0IGF2YWlsYWJpbGl0eSBvZiBhIFVSTCwgYW5kIGNhbGwgYSBjYWxsYmFjayB3aGVuIGRvbmUu Ci0gKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8yNTM5MDIwNi8zNDczNjgKLSAqIEBwYXJh bSB7U3RyaW5nfSB1cmw6IFVSTCB0byB0ZXN0IGF2YWlsYWJpbGl0eSBvZi4gTXVzdCByZXR1cm4g YSAyMDAgKDMwPQoyLT4yMDAgaXMgT0spLgotICogQHBhcmFtIHtTdHJpbmd9IGNhbGxiYWNrOiBm dW5jdGlvbiB0byBjYWxsIG9uY2Ugc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZC4KLSAqCi0gKi8KLWZ1 bmN0aW9uIHRlc3RfaWVfYXZhaWxhYmlsaXR5KHVybCwgc3VjY2Vzc19jYWxsYmFjayl7Ci0gICAg dmFyIHJlcXVlc3RfY291bnQgPTNEIDA7Ci0gICAgZGlzcGxheV9zcGlubmVyKCk7Ci0gICAgaW50 ZXJ2YWwgPTNEIHNldEludGVydmFsKGZ1bmN0aW9uKCl7Ci0gICAgICAgICQuYWpheCh7Ci0gICAg ICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgICAgIHhockZpZWxkczogewotICAgICAgICAgICAg ICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHR5 cGU6ICJHRVQiLAotICAgICAgICAgICAgdGltZW91dDogNTAwLAotICAgICAgICAgICAgc3VjY2Vz czogZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiQ29ubmVjdGVkIHRv IElFLCByZXR1cm5pbmciKTsKLSAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFs KTsKLSAgICAgICAgICAgICAgICBzdWNjZXNzX2NhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9LAot ICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKGpxeGhyLCBzdGF0dXMsIGVycm9yKXsKLSAgICAg ICAgICAgICAgICByZXF1ZXN0X2NvdW50Kys7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2co IlJlcXVlc3QgIiArIHJlcXVlc3RfY291bnQpOwotICAgICAgICAgICAgICAgIGlmKHJlcXVlc3Rf Y291bnQgPiAzMCl7Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwp OwotICAgICAgICAgICAgICAgICAgICBjbGVhcl9tYWluX2FyZWEoKTsKLSAgICAgICAgICAgICAg ICAgICAgdG9hc3RyLmVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBj b25uZWN0IHRvIElFLCBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXQ9Cm9yIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICJFcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICB7J2Nsb3NlQnV0 dG9uJzogdHJ1ZSwgJ3RpbWVPdXQnOiAyMDAwMCwgJ3RhcFRvRGlzbT0KaXNzJzogZmFsc2V9Ci0g ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot ICAgICAgICB9KTsKLSAgICB9LCAxMDAwKTsKLX0KCmRpZmYgLXIgZDE3OWRmNzQxZmY1MThmMDlm YzgyYTY0ZjJhYWE4MTdlNDQwNTA0NyAtciBlZjRhNWVjOWM1Y2NhMDM4OTk4NzEyYj0KYmQ0MDcz OTMxNjVjNWU4YjkgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRo b24vdGVtcGxhdGVzPQovaWUubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9l bnZpcm9ubWVudHMvaXB5dGhvbi90ZW1wbGF0ZXMvaWUubWFrbworKysgL2Rldi9udWxsCkBAIC0x LDE2NSArMCwwIEBACi08JSEKLWltcG9ydCBvcwotaW1wb3J0IHlhbWwKLWltcG9ydCBzaGxleAot aW1wb3J0IHJhbmRvbQotaW1wb3J0IHNodXRpbAotaW1wb3J0IGhhc2hsaWIKLWltcG9ydCBzdWJw cm9jZXNzCi1pbXBvcnQgQ29uZmlnUGFyc2VyCi0KLSU+Ci0KLTwlZGVmIG5hbWU9M0Qic2V0X2lk KG5hbWUpIj4KLTwlCi0gICAgIiIiCi0gICAgICAgIElFcyBtdXN0IHJlZ2lzdGVyIHRoZWlyIG5h bWUsIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNvbnN0cnVjdGluZyBzdD0KcmluZ3MKLQotICAgICAg ICBBZGRpdGlvbmFsbHkgdGhpcyBtZXRob2Qgc3RvcmVzIGxvdHMgb2YgY29uZmlnIG9wdGlvbnMg d2Ugd2FudCB0byA9CmFjY2VzcyBlbHNld2hlcmUuCi0gICAgIiIiCi0gICAgc2VsZi5hdHRyLnZp el9pZCA9M0QgbmFtZQotICAgIHNlbGYuYXR0ci5oaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0 eS5lbmNvZGVfaWQoIHRyYW5zLmhpc3RvcnkuaWQgKQotICAgIHNlbGYuYXR0ci5wcm94eV9yZXF1 ZXN0ID0zRCB0cmFucy5hcHAucHJveHlfbWFuYWdlci5zZXR1cF9wcm94eSggdHJhbnM9CiApCi0g ICAgc2VsZi5hdHRyLnByb3h5X3VybCA9M0Qgc2VsZi5hdHRyLnByb3h5X3JlcXVlc3RbICdwcm94 eV91cmwnIF0KLSAgICBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZyA9M0QgdHJhbnMuYXBwLmNvbmZp ZwotICAgIHNlbGYuYXR0ci5nYWxheHlfcm9vdF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aChzZWxm LmF0dHIuZ2FsYXh5X2NvbmZpZy49CnJvb3QpCi0gICAgc2VsZi5hdHRyLnJvb3QgPTNEIGgudXJs X2ZvcigiLyIpCi0gICAgc2VsZi5hdHRyLmFwcF9yb290ID0zRCBzZWxmLmF0dHIucm9vdCArICJw bHVnaW5zL3Zpc3VhbGl6YXRpb25zLyIgKyBzZT0KbGYuYXR0ci52aXpfaWQgKyAiL3N0YXRpYy8i Ci0KLSAgICAjIFN0b3JlIG91ciB0ZW1wbGF0ZSBhbmQgY29uZmlndXJhdGlvbiBwYXRoCi0gICAg c2VsZi5hdHRyLm91cl9jb25maWdfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2luX3BhdGgsICJj b25maWciKQotICAgIHNlbGYuYXR0ci5vdXJfdGVtcGxhdGVfZGlyID0zRCBvcy5wYXRoLmpvaW4o cGx1Z2luX3BhdGgsICJ0ZW1wbGF0ZXMiKQotICAgIHNlbGYuYXR0ci52aXpfY29uZmlnID0zRCBD b25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcihkZWZhdWx0X2RpY3QpCi0gICAgY29uZl9wYXRo ID0zRCBvcy5wYXRoLmpvaW4oIHNlbGYuYXR0ci5vdXJfY29uZmlnX2Rpciwgc2VsZi5hdHRyLnZp el9pZD0KICsgIi5pbmkiICkKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIGNvbmZfcGF0aCAp OgotICAgICAgICBjb25mX3BhdGggPTNEICIlcy5zYW1wbGUiICUgY29uZl9wYXRoCi0gICAgc2Vs Zi5hdHRyLnZpel9jb25maWcucmVhZCggY29uZl9wYXRoICkKLSAgICAjIFN0b3JlIHNvbWUgdmFy aWFibGVzIHdlIHdhbnQgYnkgZGVmYXVsdAotICAgIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIID0z RCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInA9CmFzc3dvcmRfYXV0 aCIpCi0gICAgc2VsZi5hdHRyLkFQQUNIRV9VUkxTID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5n ZXRib29sZWFuKCJtYWluIiwgImFwYT0KY2hlX3VybHMiKQotICAgIHNlbGYuYXR0ci5TU0xfVVJM UyA9M0Qgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJzc2wiKQotICAg IHNlbGYuYXR0ci5QT1JUID0zRCBzZWxmLmF0dHIucHJveHlfcmVxdWVzdFsgJ3Byb3hpZWRfcG9y dCcgXQotICAgIHNlbGYuYXR0ci5IT1NUID0zRCByZXF1ZXN0Lmhvc3QucnNwbGl0KCc6JywgMSlb MF0KLSU+Ci08LyVkZWY+Ci0KLTwlZGVmIG5hbWU9M0Qid3JpdGVfY29uZl9maWxlKG91dHB1dF9k aXJlY3RvcnksIGV4dHJhPTNEe30pIj4KLTwlCi0gICAgIiIiCi0gICAgICAgIEJ1aWxkIHVwIGEg Y29uZmlndXJhdGlvbiBmaWxlIHRoYXQgaXMgc3RhbmRhcmQgZm9yIEFMTCBJRXMuCi0KLSAgICAg ICAgVE9ETzogcmVwbGFjZSBoYXNoZWQgcGFzc3dvcmQgd2l0aCBwbGFpbnRleHQuCi0gICAgIiIi Ci0gICAgY29uZl9maWxlID0zRCB7Ci0gICAgICAgICdoaXN0b3J5X2lkJzogc2VsZi5hdHRyLmhp c3RvcnlfaWQsCi0gICAgICAgICdhcGlfa2V5JzogZ2V0X2FwaV9rZXkoKSwKLSAgICAgICAgJ3Jl bW90ZV9ob3N0JzogcmVxdWVzdC5yZW1vdGVfYWRkciwKLSAgICAgICAgJ2RvY2tlcl9wb3J0Jzog c2VsZi5hdHRyLlBPUlQsCi0gICAgICAgICdjb3JzX29yaWdpbic6IHJlcXVlc3QuaG9zdF91cmws Ci0gICAgfQotCi0gICAgaWYgc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuZ2FsYXh5X2luZnJhc3Ry dWN0dXJlX3VybF9zZXQ6Ci0gICAgICAgIGNvbmZfZmlsZVsnZ2FsYXh5X3VybCddID0zRCBzZWxm LmF0dHIuZ2FsYXh5X2NvbmZpZy5nYWxheHlfaW5mcmFzdD0KcnVjdHVyZV91cmwucnN0cmlwKCcv JykgKyAnLycKLSAgICBlbHNlOgotICAgICAgICBjb25mX2ZpbGVbJ2dhbGF4eV91cmwnXSA9M0Qg cmVxdWVzdC5hcHBsaWNhdGlvbl91cmwucnN0cmlwKCcvJykgKyA9CicvJwotICAgICAgICBjb25m X2ZpbGVbJ2dhbGF4eV9wYXN0ZXJfcG9ydCddID0zRCBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy5n dWVzc189CmdhbGF4eV9wb3J0KCkKLQotICAgIGlmIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIOgot ICAgICAgICAjIEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkICsgc2FsdAotICAgICAgICBub3Rl Ym9va19wd19zYWx0ID0zRCBzZWxmLmdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0zRDEyKQotICAg ICAgICBub3RlYm9va19wdyA9M0Qgc2VsZi5nZW5lcmF0ZV9wYXNzd29yZChsZW5ndGg9M0QyNCkK LSAgICAgICAgbSA9M0QgaGFzaGxpYi5zaGExKCkKLSAgICAgICAgbS51cGRhdGUoIG5vdGVib29r X3B3ICsgbm90ZWJvb2tfcHdfc2FsdCApCi0gICAgICAgIGNvbmZfZmlsZVsnbm90ZWJvb2tfcGFz c3dvcmQnXSA9M0QgJ3NoYTE6JXM6JXMnICUgKG5vdGVib29rX3B3X3NhbD0KdCwgbS5oZXhkaWdl c3QoKSkKLSAgICAgICAgIyBTaG91bGQgd2UgdXNlIHBhc3N3b3JkIGJhc2VkIGNvbm5lY3Rpb24g b3IgImRlZmF1bHQiIGNvbm5lY3Rpb24gPQpzdHlsZSBpbiBnYWxheHkKLSAgICBlbHNlOgotICAg ICAgICBub3RlYm9va19wdyA9M0QgIk5vbmUiCi0KLSAgICAjIFNvbWUgd2lsbCBuZWVkIHRvIHBh c3MgZXh0cmEgZGF0YQotICAgIGZvciBleHRyYV9rZXkgaW4gZXh0cmE6Ci0gICAgICAgIGNvbmZf ZmlsZVtleHRyYV9rZXldID0zRCBleHRyYVtleHRyYV9rZXldCi0KLSAgICBzZWxmLmF0dHIubm90 ZWJvb2tfcHcgPTNEIG5vdGVib29rX3B3Ci0gICAgIyBXcml0ZSBjb25mCi0gICAgd2l0aCBvcGVu KCBvcy5wYXRoLmpvaW4oIG91dHB1dF9kaXJlY3RvcnksICdjb25mLnlhbWwnICksICd3YicgKSBh cyBoYT0KbmRsZToKLSAgICAgICAgaGFuZGxlLndyaXRlKCB5YW1sLmR1bXAoY29uZl9maWxlLCBk ZWZhdWx0X2Zsb3dfc3R5bGU9M0RGYWxzZSkgKQotCi0lPgotPC8lZGVmPgotCi08JWRlZiBuYW1l PTNEImdlbmVyYXRlX2hleChsZW5ndGgpIj4KLTwlCi0gICAgIiIiCi0gICAgICAgIEdlbmVyYXRl IGEgaGV4IHN0cmluZwotICAgICIiIgotICAgIHJldHVybiAnJy5qb2luKHJhbmRvbS5jaG9pY2Uo JzAxMjM0NTY3ODlhYmNkZWYnKSBmb3IgXyBpbiByYW5nZShsZW5ndGg9CikpCi0lPgotPC8lZGVm PgotCi08JWRlZiBuYW1lPTNEImdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aCkiPgotPCUKLSAgICAi IiIKLSAgICAgICAgR2VuZXJhdGUgYSByYW5kb20gYWxwaGFudW1lcmljIHBhc3N3b3JkCi0gICAg IiIiCi0gICAgcmV0dXJuICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2RlZmdo aWprbG1ub3BxcnN0dXZ3eHl6JykgZj0Kb3IgXyBpbiByYW5nZShsZW5ndGgpKQotJT4KLTwvJWRl Zj4KLQotPCVkZWYgbmFtZT0zRCJqYXZhc2NyaXB0X2Jvb2xlYW4ocHl0aG9uX2Jvb2xlYW4pIj4K LTwlCi0gICAgIiIiCi0gICAgICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYm9v bGVhbiBmb3IgdXNlIGluIEpTCi0gICAgIiIiCi0gICAgaWYgcHl0aG9uX2Jvb2xlYW46Ci0gICAg ICAgIHJldHVybiAidHJ1ZSI7Ci0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICJmYWxzZSIKLSU+ Ci08LyVkZWY+Ci0KLQotPCVkZWYgbmFtZT0zRCJ1cmxfdGVtcGxhdGUodXJsX3RlbXBsYXRlKSI+ Ci08JQotICAgICIiIgotICAgICAgICBQcm9jZXNzIGEgVVJMIHRlbXBsYXRlCi0KLSAgICAgICAg VGhlcmUgYXJlIHNldmVyYWwgdmFyaWFibGVzIGFjY2Vzc2libGUgdG8gdGhlIHVzZXI6Ci0KLSAg ICAgICAgICAgIC0gJHtQUk9YWV9VUkx9IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBkeW5hbWljYWxs eSBjcmVhdGUgcHJveHkKLSAgICAgICAgICAgIC0gJHtQT1JUfSB3aWxsIGJlIHJlcGxhY2VkIHdp dGggdGhlIHBvcnQgdGhlIGRvY2tlciBpbWFnZSBpcyBhPQp0dGFjaGVkIHRvCi0gICAgIiIiCi0g ICAgdXJsID0zRCB1cmxfdGVtcGxhdGUucmVwbGFjZSgnJHtQUk9YWV9VUkx9Jywgc3RyKHNlbGYu YXR0ci5wcm94eV91cmwpKT0KIFwKLSAgICAgICAgICAgIC5yZXBsYWNlKCcke1BPUlR9Jywgc3Ry KHNlbGYuYXR0ci5QT1JUKSkKLSAgICByZXR1cm4gdXJsCi0lPgotPC8lZGVmPgotCi0KLTwlZGVm IG5hbWU9M0QiZG9ja2VyX2NtZCh0ZW1wX2RpcikiPgotPCUKLSAgICAiIiIKLSAgICAgICAgR2Vu ZXJhdGUgYW5kIHJldHVybiB0aGUgZG9ja2VyIGNvbW1hbmQgdG8gZXhlY3V0ZQotICAgICIiIgot ICAgIHJldHVybiAnJXMgcnVuIC1kIC0tc2lnLXByb3h5PTNEdHJ1ZSAtcCAlczolcyAtdiAiJXM6 L2ltcG9ydC8iICVzJyAlIFwKLSAgICAgICAgKHNlbGYuYXR0ci52aXpfY29uZmlnLmdldCgiZG9j a2VyIiwgImNvbW1hbmQiKSwgc2VsZi5hdHRyLlBPUlQsIHNlPQpsZi5hdHRyLmRvY2tlcl9wb3J0 LAotICAgICAgICAgdGVtcF9kaXIsIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldCgiZG9ja2VyIiwg ImltYWdlIikpCi0lPgotPC8lZGVmPgotCi0KLTwlZGVmIG5hbWU9M0QiZGVmYXVsdF9qYXZhc2Ny aXB0X3ZhcmlhYmxlcygpIj4KLS8vIEdsb2JhbHMKLWllX3Bhc3N3b3JkX2F1dGggPTNEICR7IHNl bGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIKSB9OwotaWVfYXBh Y2hlX3VybHMgPTNEICR7IHNlbGYuamF2YXNjcmlwdF9ib29sZWFuKHNlbGYuYXR0ci5BUEFDSEVf VVJMUykgfTsKLWllX3Bhc3N3b3JkID0zRCAnJHsgc2VsZi5hdHRyLm5vdGVib29rX3B3IH0nOwot dmFyIGdhbGF4eV9yb290ID0zRCAnJHsgc2VsZi5hdHRyLnJvb3QgfSc7Ci12YXIgYXBwX3Jvb3Qg PTNEICckeyBzZWxmLmF0dHIuYXBwX3Jvb3QgfSc7Ci08LyVkZWY+Ci0KLQotPCVkZWYgbmFtZT0z RCJsb2FkX2RlZmF1bHRfanMoKSI+Ci0ke2guY3NzKCAnYmFzZScgKSB9Ci0ke2guanMoICdsaWJz L2pxdWVyeS9qcXVlcnknLAotICAgICAgICAnbGlicy90b2FzdHInLAotICAgICAgICAnbGlicy9y ZXF1aXJlJyl9Ci08LyVkZWY+CgpkaWZmIC1yIGQxNzlkZjc0MWZmNTE4ZjA5ZmM4MmE2NGYyYWFh ODE3ZTQ0MDUwNDcgLXIgZWY0YTVlYzljNWNjYTAzODk5ODcxMmI9CmJkNDA3MzkzMTY1YzVlOGI5 IGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3RlbXBsYXRl cz0KL2lweXRob24ubWFrbwotLS0gYS9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9u bWVudHMvaXB5dGhvbi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCisrKyBiL2NvbmZpZy9wbHVnaW5z L2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3RlbXBsYXRlcy9pcHl0aG9uLm1ha28K QEAgLTEsNCArMSw1IEBACi08JW5hbWVzcGFjZSBmaWxlPTNEImllLm1ha28iIG5hbWU9M0QiaWUi Lz4KKyA8JW5hbWVzcGFjZSBuYW1lPTNEImllIiBmaWxlPTNEImllLm1ha28iIC8+CisKIDwlCiBp bXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKQEAgLTYsMTcgKzcsMTcgQEAKIGltcG9ydCBzdWJwcm9j ZXNzCj0yMAogIyBTZXRzIElEIGFuZCBzZXRzIHVwIGEgbG90IG9mIG90aGVyIHZhcmlhYmxlcwot aWUuc2V0X2lkKCJpcHl0aG9uIikKLWllLmF0dHIuZG9ja2VyX3BvcnQgPTNEIDY3ODkKK2llX3Jl cXVlc3QubG9hZF9kZXBsb3lfY29uZmlnKCkKK2llX3JlcXVlc3QuYXR0ci5kb2NrZXJfcG9ydCA9 M0QgNjc4OQogIyBDcmVhdGUgdGVtcGRpciBpbiBnYWxheHkKIHRlbXBfZGlyID0zRCBvcy5wYXRo LmFic3BhdGgoIHRlbXBmaWxlLm1rZHRlbXAoKSApCiAjIFdyaXRlIG91dCBjb25mIGZpbGUuLi5u ZWVkcyB3b3JrCi1pZS53cml0ZV9jb25mX2ZpbGUodGVtcF9kaXIpCitpZV9yZXF1ZXN0LndyaXRl X2NvbmZfZmlsZSh0ZW1wX2RpcikKPTIwCiAjIyBJUHl0aG9uIFNwZWNpZmljCiAjIFByZXBhcmUg YW4gZW1wdHkgbm90ZWJvb2sKLW5vdGVib29rX2lkID0zRCBpZS5nZW5lcmF0ZV9oZXgoNjQpCi13 aXRoIG9wZW4oIG9zLnBhdGguam9pbiggaWUuYXR0ci5vdXJfdGVtcGxhdGVfZGlyLCAnbm90ZWJv b2suaXB5bmInICksICdyJz0KKSBhcyBuYl9oYW5kbGU6Citub3RlYm9va19pZCA9M0QgaWVfcmVx dWVzdC5nZW5lcmF0ZV9oZXgoNjQpCit3aXRoIG9wZW4oIG9zLnBhdGguam9pbiggaWVfcmVxdWVz dC5hdHRyLm91cl90ZW1wbGF0ZV9kaXIsICdub3RlYm9vay5pcHluYj0KJyApLCAncicpIGFzIG5i X2hhbmRsZToKICAgICBlbXB0eV9uYiA9M0QgbmJfaGFuZGxlLnJlYWQoKQogZW1wdHlfbmIgPTNE IGVtcHR5X25iICUgbm90ZWJvb2tfaWQKICMgQ29weSBvdmVyIGRlZmF1bHQgbm90ZWJvb2ssIHVu bGVzcyB0aGUgZGF0YXNldCB0aGlzIHZpeiBpcyBydW5uaW5nIG9uIGlzPQogYSBub3RlYm9vawpA QCAtMzAsMTAgKzMxLDEwIEBACj0yMAogIyMgR2VuZXJhbCBJRSBzcGVjaWZpYwogIyBBY2Nlc3Mg VVJMcyBmb3IgdGhlIG5vdGVib29rIGZyb20gd2l0aGluIGdhbGF4eS4KLW5vdGVib29rX2FjY2Vz c191cmwgPTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9YWV9VUkx9L2lweXRob24vJHtQT1JUfS9u b3RlPQpib29rcy9pcHl0aG9uX2dhbGF4eV9ub3RlYm9vay5pcHluYicpCi1ub3RlYm9va19sb2dp bl91cmwgPTNEIGllLnVybF90ZW1wbGF0ZSgnJHtQUk9YWV9VUkx9L2lweXRob24vJHtQT1JUfS9s b2dpbj0KP25leHQ9M0QlMkZpcHl0aG9uJTJGJHtQT1JUfSUyRnRyZWUnKQorbm90ZWJvb2tfYWNj ZXNzX3VybCA9M0QgaWVfcmVxdWVzdC51cmxfdGVtcGxhdGUoJyR7UFJPWFlfVVJMfS9pcHl0aG9u LyR7UE89ClJUfS9ub3RlYm9va3MvaXB5dGhvbl9nYWxheHlfbm90ZWJvb2suaXB5bmInKQorbm90 ZWJvb2tfbG9naW5fdXJsID0zRCBpZV9yZXF1ZXN0LnVybF90ZW1wbGF0ZSgnJHtQUk9YWV9VUkx9 L2lweXRob24vJHtQT1I9ClR9L2xvZ2luP25leHQ9M0QlMkZpcHl0aG9uJTJGJHtQT1JUfSUyRnRy ZWUnKQo9MjAKLWRvY2tlcl9jbWQgPTNEIGllLmRvY2tlcl9jbWQodGVtcF9kaXIpCitkb2NrZXJf Y21kID0zRCBpZV9yZXF1ZXN0LmRvY2tlcl9jbWQodGVtcF9kaXIpCiBzdWJwcm9jZXNzLmNhbGwo ZG9ja2VyX2NtZCwgc2hlbGw9M0RUcnVlKQogJT48aHRtbD4KQEAgLTQ2LDE1ICs0NywxMSBAQAog JHsgaWUuZGVmYXVsdF9qYXZhc2NyaXB0X3ZhcmlhYmxlcygpIH0KIHZhciBub3RlYm9va19sb2dp bl91cmwgPTNEICckeyBub3RlYm9va19sb2dpbl91cmwgfSc7CiB2YXIgbm90ZWJvb2tfYWNjZXNz X3VybCA9M0QgJyR7IG5vdGVib29rX2FjY2Vzc191cmwgfSc7CiskeyBpZS5wbHVnaW5fcmVxdWly ZV9jb25maWcoKSB9CisKIC8vIExvYWQgbm90ZWJvb2sKPTIwCi1yZXF1aXJlLmNvbmZpZyh7Ci0g ICAgYmFzZVVybDogYXBwX3Jvb3QsCi0gICAgcGF0aHM6IHsKLSAgICAgICAgInBsdWdpbiIgOiBh cHBfcm9vdCArICJqcy8iLAotICAgIH0sCi19KTsKLXJlcXVpcmVqcyhbJ3BsdWdpbi9pZScsICdw bHVnaW4vaXB5dGhvbiddLCBmdW5jdGlvbigpeworcmVxdWlyZWpzKFsnaW50ZXJhY3RpdmVfZW52 aXJvbm1lbnRzJywgJ3BsdWdpbi9pcHl0aG9uJ10sIGZ1bmN0aW9uKCl7CiAgICAgbG9hZF9ub3Rl Ym9vayhpZV9wYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJs KTsKIH0pOwogPC9zY3JpcHQ+CgpkaWZmIC1yIGQxNzlkZjc0MWZmNTE4ZjA5ZmM4MmE2NGYyYWFh ODE3ZTQ0MDUwNDcgLXIgZWY0YTVlYzljNWNjYTAzODk5ODcxMmI9CmJkNDA3MzkzMTY1YzVlOGI5 IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2FkZGl0aW9uYWxfdGVtcGxhdGVfcGF0aHMu eD0KbWwKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvYWRkaXRpb25hbF90ZW1w bGF0ZV9wYXRocy54bWwKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvYWRkaXRp b25hbF90ZW1wbGF0ZV9wYXRocy54bWwKQEAgLTIsNCArMiw1IEBACiA8IS0tIHRoZXNlIHJlbGF0 aXZlIHBhdGhzIGNhbiBjb250YWluIGNvbW1vbiB0ZW1wbGF0ZXMgaW1wb3J0YWJsZSBieSBhbGwg dj0KaXN1YWxpemF0aW9uIHBsdWdpbnMgLS0+PHBhdGhzPjxwYXRoPmNvbW1vbi90ZW1wbGF0ZXM8 L3BhdGg+CisgICAgPHBhdGg+Li4vaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2NvbW1vbi90ZW1w bGF0ZXM8L3BhdGg+PC9wYXRocz4KCmRpZmYgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgyYTY0ZjJh YWE4MTdlNDQwNTA0NyAtciBlZjRhNWVjOWM1Y2NhMDM4OTk4NzEyYj0KYmQ0MDczOTMxNjVjNWU4 YjkgbGliL2dhbGF4eS92aXN1YWxpemF0aW9uL3JlZ2lzdHJ5LnB5Ci0tLSBhL2xpYi9nYWxheHkv dmlzdWFsaXphdGlvbi9yZWdpc3RyeS5weQorKysgYi9saWIvZ2FsYXh5L3Zpc3VhbGl6YXRpb24v cmVnaXN0cnkucHkKQEAgLTM0NCw2ICszNDQsMTAgQEAKICAgICAgICAgIyBUT0RPOiBBcyBwYXJ0 IG9mIGEgZnV0dXJlIG5vdGUgcGx1Z2luIHJlZ2lzdHJ5IGVmZm9ydCAtIG1vdmUgdGhpcwogICAg ICAgICAjIG92ZXJyaWRlIGFuZCBsZXQgVmlzdWFsaXphdGlvbnNSZWdpc3RyeSBqdXN0IHJldmVy dCB0byB1c2luZyBwYXI9CmVudCdzCiAgICAgICAgICMgZmlsbF90ZW1wbGF0ZS4KKworICAgICAg ICAjIE5vIGxvbmdlciBuZWVkZWQgYnV0IGJlaW5nIGxlZnQgYXJvdW5kIGZvciBhIGZldyByZWxl YXNlcyBhcyBpcHk9CnRob24tZ2FsYXh5CisgICAgICAgICMgYXMgYW4gZXh0ZXJuYWwgdmlzdWFs aXphdGlvbiBwbHVnaW4gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjbz0KcmUgaW50ZXJhY3Rp dmUKKyAgICAgICAgIyBlbnZpcm9ubWVudCBwbHVnaW4uCiAgICAgICAgIGlmICdnZXRfYXBpX2tl eScgbm90IGluIGt3YXJnczoKPTIwCiAgICAgICAgICAgICBkZWYgZ2V0X2FwaV9rZXkoKToKCmRp ZmYgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgyYTY0ZjJhYWE4MTdlNDQwNTA0NyAtciBlZjRhNWVj OWM1Y2NhMDM4OTk4NzEyYj0KYmQ0MDczOTMxNjVjNWU4YjkgbGliL2dhbGF4eS93ZWIvYmFzZS9p bnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMucHkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5 L3dlYi9iYXNlL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy5weQpAQCAtMCwwICsxLDE1NCBAQAor aW1wb3J0IENvbmZpZ1BhcnNlcgorCitpbXBvcnQgaGFzaGxpYgoraW1wb3J0IG9zCitpbXBvcnQg cmFuZG9tCisKK2Zyb20gZ2FsYXh5LnV0aWwuYnVuY2ggaW1wb3J0IEJ1bmNoCitmcm9tIGdhbGF4 eSBpbXBvcnQgd2ViCitpbXBvcnQgeWFtbAorZnJvbSBnYWxheHkubWFuYWdlcnMgaW1wb3J0IGFw aV9rZXlzCisKKworY2xhc3MgSW50ZXJhY3RpdmVFbnZpb3JubWVudFJlcXVlc3Qob2JqZWN0KToK KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFucywgcGx1Z2luKToKKyAgICAgICAgcGx1Z2lu X2NvbmZpZyA9M0QgcGx1Z2luLmNvbmZpZworCisgICAgICAgIHNlbGYudHJhbnMgPTNEIHRyYW5z CisKKyAgICAgICAgc2VsZi5hdHRyID0zRCBCdW5jaCgpCisgICAgICAgIHNlbGYuYXR0ci52aXpf aWQgPTNEIHBsdWdpbl9jb25maWdbIm5hbWUiXS5sb3dlcigpCisgICAgICAgIHNlbGYuYXR0ci5o aXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHRyYW5zLmhpc3RvcnkuaT0K ZCApCisgICAgICAgIHNlbGYuYXR0ci5wcm94eV9yZXF1ZXN0ID0zRCB0cmFucy5hcHAucHJveHlf bWFuYWdlci5zZXR1cF9wcm94eSggdD0KcmFucyApCisgICAgICAgIHNlbGYuYXR0ci5wcm94eV91 cmwgPTNEIHNlbGYuYXR0ci5wcm94eV9yZXF1ZXN0WyAncHJveHlfdXJsJyBdCisgICAgICAgIHNl bGYuYXR0ci5nYWxheHlfY29uZmlnID0zRCB0cmFucy5hcHAuY29uZmlnCisgICAgICAgIHNlbGYu YXR0ci5nYWxheHlfcm9vdF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aChzZWxmLmF0dHIuZ2FsYXh5 X2Nvbj0KZmlnLnJvb3QpCisKKyAgICAgICAgc2VsZi5hdHRyLnJvb3QgPTNEIHdlYi51cmxfZm9y KCIvIikKKyAgICAgICAgc2VsZi5hdHRyLmFwcF9yb290ID0zRCBzZWxmLmF0dHIucm9vdCArICJw bHVnaW5zL3Zpc3VhbGl6YXRpb25zLyIgPQorIHNlbGYuYXR0ci52aXpfaWQgKyAiL3N0YXRpYy8i CisKKyAgICAgICAgcGx1Z2luX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0aCggcGx1Z2luLnBhdGgg KQorCisgICAgICAgICMgU3RvcmUgb3VyIHRlbXBsYXRlIGFuZCBjb25maWd1cmF0aW9uIHBhdGgK KyAgICAgICAgc2VsZi5hdHRyLm91cl9jb25maWdfZGlyID0zRCBvcy5wYXRoLmpvaW4ocGx1Z2lu X3BhdGgsICJjb25maWciKQorICAgICAgICBzZWxmLmF0dHIub3VyX3RlbXBsYXRlX2RpciA9M0Qg b3MucGF0aC5qb2luKHBsdWdpbl9wYXRoLCAidGVtcGxhdGU9CnMiKQorICAgICAgICBzZWxmLmF0 dHIuSE9TVCA9M0QgdHJhbnMucmVxdWVzdC5ob3N0LnJzcGxpdCgnOicsIDEpWzBdCisgICAgICAg IHNlbGYuYXR0ci5QT1JUID0zRCBzZWxmLmF0dHIucHJveHlfcmVxdWVzdFsgJ3Byb3hpZWRfcG9y dCcgXQorCisgICAgZGVmIGxvYWRfZGVwbG95X2NvbmZpZyhzZWxmLCBkZWZhdWx0X2RpY3Q9M0R7 fSk6CisgICAgICAgIHZpel9jb25maWcgPTNEIENvbmZpZ1BhcnNlci5TYWZlQ29uZmlnUGFyc2Vy KGRlZmF1bHRfZGljdCkKKyAgICAgICAgY29uZl9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIHNlbGYu YXR0ci5vdXJfY29uZmlnX2Rpciwgc2VsZi5hdHRyLnZpPQp6X2lkICsgIi5pbmkiICkKKyAgICAg ICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCBjb25mX3BhdGggKToKKyAgICAgICAgICAgIGNvbmZf cGF0aCA9M0QgIiVzLnNhbXBsZSIgJSBjb25mX3BhdGgKKyAgICAgICAgdml6X2NvbmZpZy5yZWFk KCBjb25mX3BhdGggKQorICAgICAgICBzZWxmLmF0dHIudml6X2NvbmZpZyA9M0Qgdml6X2NvbmZp ZworCisgICAgICAgICMgT2xkZXIgc3R5bGUgcG9ydCByYW5nZSBwcm94eWluZyAtIG5vdCBzdXJl IHdlIHdhbnQgdG8ga2VlcCB0aGVzZT0KIGFyb3VuZCBvciBzaG91bGQKKyAgICAgICAgIyB3ZSBh bHdheXMgYXNzdW1lIHVzZSBvZiBHYWxheHkgZHluYW1pYyBwcm94eT8gTm9uZSBvZiB0aGVzZSBu ZWVkPQogdG8gYmUgc3BlY2lmaWVkCisgICAgICAgICMgaWYgdXNpbmcgdGhlIEdhbGF4eSBkeW5h bWljIHByb3h5LgorICAgICAgICBzZWxmLmF0dHIuUEFTU1dPUkRfQVVUSCA9M0Qgc2VsZi5hdHRy LnZpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiI9CiwgInBhc3N3b3JkX2F1dGgiKQorICAgICAg ICBzZWxmLmF0dHIuQVBBQ0hFX1VSTFMgPTNEIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldGJvb2xl YW4oIm1haW4iLCA9CiJhcGFjaGVfdXJscyIpCisgICAgICAgIHNlbGYuYXR0ci5TU0xfVVJMUyA9 M0Qgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0Ym9vbGVhbigibWFpbiIsICJzcz0KbCIpCisKKyAg ICBkZWYgd3JpdGVfY29uZl9maWxlKHNlbGYsIG91dHB1dF9kaXJlY3RvcnksIGV4dHJhPTNEe30p OgorICAgICAgICAiIiIKKyAgICAgICAgICAgIEJ1aWxkIHVwIGEgY29uZmlndXJhdGlvbiBmaWxl IHRoYXQgaXMgc3RhbmRhcmQgZm9yIEFMTCBJRXMuCisKKyAgICAgICAgICAgIFRPRE86IHJlcGxh Y2UgaGFzaGVkIHBhc3N3b3JkIHdpdGggcGxhaW50ZXh0LgorICAgICAgICAiIiIKKyAgICAgICAg dHJhbnMgPTNEIHNlbGYudHJhbnMKKyAgICAgICAgcmVxdWVzdCA9M0QgdHJhbnMucmVxdWVzdAor ICAgICAgICBhcGlfa2V5ID0zRCBhcGlfa2V5cy5BcGlLZXlNYW5hZ2VyKCB0cmFucy5hcHAgKS5n ZXRfb3JfY3JlYXRlX2FwaV89CmtleSggdHJhbnMudXNlciApCisgICAgICAgIGNvbmZfZmlsZSA9 M0QgeworICAgICAgICAgICAgJ2hpc3RvcnlfaWQnOiBzZWxmLmF0dHIuaGlzdG9yeV9pZCwKKyAg ICAgICAgICAgICdhcGlfa2V5JzogYXBpX2tleSwKKyAgICAgICAgICAgICdyZW1vdGVfaG9zdCc6 IHJlcXVlc3QucmVtb3RlX2FkZHIsCisgICAgICAgICAgICAnZG9ja2VyX3BvcnQnOiBzZWxmLmF0 dHIuUE9SVCwKKyAgICAgICAgICAgICdjb3JzX29yaWdpbic6IHJlcXVlc3QuaG9zdF91cmwsCisg ICAgICAgIH0KKworICAgICAgICBpZiBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy5nYWxheHlfaW5m cmFzdHJ1Y3R1cmVfdXJsX3NldDoKKyAgICAgICAgICAgIGNvbmZfZmlsZVsnZ2FsYXh5X3VybCdd ID0zRCBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZy5nYWxheHlfaW5mPQpyYXN0cnVjdHVyZV91cmwu cnN0cmlwKCcvJykgKyAnLycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZfZmlsZVsn Z2FsYXh5X3VybCddID0zRCByZXF1ZXN0LmFwcGxpY2F0aW9uX3VybC5yc3RyaXAoJy8nPQopICsg Jy8nCisgICAgICAgICAgICBjb25mX2ZpbGVbJ2dhbGF4eV9wYXN0ZXJfcG9ydCddID0zRCBzZWxm LmF0dHIuZ2FsYXh5X2NvbmZpZy5ndT0KZXNzX2dhbGF4eV9wb3J0KCkKKworICAgICAgICBpZiBz ZWxmLmF0dHIuUEFTU1dPUkRfQVVUSDoKKyAgICAgICAgICAgICMgR2VuZXJhdGUgYSByYW5kb20g cGFzc3dvcmQgKyBzYWx0CisgICAgICAgICAgICBub3RlYm9va19wd19zYWx0ID0zRCBzZWxmLmdl bmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0zRDEyKQorICAgICAgICAgICAgbm90ZWJvb2tfcHcgPTNE IHNlbGYuZ2VuZXJhdGVfcGFzc3dvcmQobGVuZ3RoPTNEMjQpCisgICAgICAgICAgICBtID0zRCBo YXNobGliLnNoYTEoKQorICAgICAgICAgICAgbS51cGRhdGUoIG5vdGVib29rX3B3ICsgbm90ZWJv b2tfcHdfc2FsdCApCisgICAgICAgICAgICBjb25mX2ZpbGVbJ25vdGVib29rX3Bhc3N3b3JkJ10g PTNEICdzaGExOiVzOiVzJyAlIChub3RlYm9va19wdz0KX3NhbHQsIG0uaGV4ZGlnZXN0KCkpCisg ICAgICAgICAgICAjIFNob3VsZCB3ZSB1c2UgcGFzc3dvcmQgYmFzZWQgY29ubmVjdGlvbiBvciAi ZGVmYXVsdCIgY29ubmVjdD0KaW9uIHN0eWxlIGluIGdhbGF4eQorICAgICAgICBlbHNlOgorICAg ICAgICAgICAgbm90ZWJvb2tfcHcgPTNEICJOb25lIgorCisgICAgICAgICMgU29tZSB3aWxsIG5l ZWQgdG8gcGFzcyBleHRyYSBkYXRhCisgICAgICAgIGZvciBleHRyYV9rZXkgaW4gZXh0cmE6Cisg ICAgICAgICAgICBjb25mX2ZpbGVbZXh0cmFfa2V5XSA9M0QgZXh0cmFbZXh0cmFfa2V5XQorCisg ICAgICAgIHNlbGYuYXR0ci5ub3RlYm9va19wdyA9M0Qgbm90ZWJvb2tfcHcKKyAgICAgICAgIyBX cml0ZSBjb25mCisgICAgICAgIHdpdGggb3Blbiggb3MucGF0aC5qb2luKCBvdXRwdXRfZGlyZWN0 b3J5LCAnY29uZi55YW1sJyApLCAnd2InICkgYT0KcyBoYW5kbGU6CisgICAgICAgICAgICBoYW5k bGUud3JpdGUoIHlhbWwuZHVtcChjb25mX2ZpbGUsIGRlZmF1bHRfZmxvd19zdHlsZT0zREZhbHNl KT0KICkKKworICAgIGRlZiBnZW5lcmF0ZV9oZXgoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgcmV0 dXJuICcnLmpvaW4ocmFuZG9tLmNob2ljZSgnMDEyMzQ1Njc4OWFiY2RlZicpIGZvciBfIGluIHJh bmdlKGxlPQpuZ3RoKSkKKworICAgIGRlZiBnZW5lcmF0ZV9wYXNzd29yZChzZWxmLCBsZW5ndGgp OgorICAgICAgICAiIiIKKyAgICAgICAgICAgIEdlbmVyYXRlIGEgcmFuZG9tIGFscGhhbnVtZXJp YyBwYXNzd29yZAorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmFuZG9tLmNo b2ljZSgnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6PQonKSBmb3IgXyBpbiBy YW5nZShsZW5ndGgpKQorCisgICAgZGVmIGphdmFzY3JpcHRfYm9vbGVhbihzZWxmLCBweXRob25f Ym9vbGVhbik6CisgICAgICAgICIiIgorICAgICAgICAgICAgQ29udmVuaWVuY2UgZnVuY3Rpb24g dG8gY29udmVydCBib29sZWFuIGZvciB1c2UgaW4gSlMKKyAgICAgICAgIiIiCisgICAgICAgIGlm IHB5dGhvbl9ib29sZWFuOgorICAgICAgICAgICAgcmV0dXJuICJ0cnVlIgorICAgICAgICBlbHNl OgorICAgICAgICAgICAgcmV0dXJuICJmYWxzZSIKKworICAgIGRlZiB1cmxfdGVtcGxhdGUoc2Vs ZiwgdXJsX3RlbXBsYXRlKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBQcm9jZXNzIGEgVVJM IHRlbXBsYXRlCisKKyAgICAgICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIHZhcmlhYmxlcyBhY2Nl c3NpYmxlIHRvIHRoZSB1c2VyOgorCisgICAgICAgICAgICAgICAgLSAke1BST1hZX1VSTH0gd2ls bCBiZSByZXBsYWNlZCB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0ZSBwcj0Kb3h5CisgICAgICAgICAg ICAgICAgLSAke1BPUlR9IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcG9ydCB0aGUgZG9ja2Vy IGltYWdlID0KaXMgYXR0YWNoZWQgdG8KKyAgICAgICAgIiIiCisgICAgICAgICMgRmlndXJlIG91 dCBvdXIgc3Vic3RpdHV0aW9ucworCisgICAgICAgICMgTmV4dCBzZXZlcmFsIGxpbmVzIGZvciBv bGRlciBzdHlsZSByZXBsYWNlbWVudHMgKG5vdCB1c2VkIHdpdGggRz0KYWxheHkgZHluYW1pYwor ICAgICAgICAjIHByb3h5KQorCisgICAgICAgIGlmIHNlbGYuYXR0ci5TU0xfVVJMUzoKKyAgICAg ICAgICAgIHByb3RvY29sID0zRCAnaHR0cHMnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBw cm90b2NvbCA9M0QgJ2h0dHAnCisKKyAgICAgICAgaWYgbm90IHNlbGYuYXR0ci5BUEFDSEVfVVJM UzoKKyAgICAgICAgICAgICMgSWYgdGhleSBhcmUgbm90IHVzaW5nIGFwYWNoZSBVUkxzLCB0aGF0 IGltcGxpZXMgdGhlcmUncyBhIHBvPQpydCBhdHRhY2hlZCB0byB0aGUgaG9zdAorICAgICAgICAg ICAgIyBzdHJpbmcsIHRodXMgd2UgcmVwbGFjZSBqdXN0IHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBo b3N0IHRoYXQ9CiB3ZSBzZWUuCisgICAgICAgICAgICB1cmxfdGVtcGxhdGUgPTNEIHVybF90ZW1w bGF0ZS5yZXBsYWNlKCcke0hPU1R9JywgJyR7SE9TVH06JHtQTz0KUlR9JywgMSkKKworICAgICAg ICB1cmxfdGVtcGxhdGUgPTNEIHVybF90ZW1wbGF0ZS5yZXBsYWNlKCcke1BST1RPfScsIHByb3Rv Y29sKSBcCisgICAgICAgICAgICAucmVwbGFjZSgnJHtIT1NUfScsIHNlbGYuYXR0ci5IT1NUKQor CisgICAgICAgICMgT25seSB0aGUgZm9sbG93aW5nIHJlcGxhY2VtZW50cyBhcmUgdXNlZCB3aXRo IEdhbGF4eSBkeW5hbWljIHBybz0KeHkKKyAgICAgICAgIyBVUkxzCisgICAgICAgIHVybCA9M0Qg dXJsX3RlbXBsYXRlLnJlcGxhY2UoJyR7UFJPWFlfVVJMfScsIHN0cihzZWxmLmF0dHIucHJveHlf dT0KcmwpKSBcCisgICAgICAgICAgICAucmVwbGFjZSgnJHtQT1JUfScsIHN0cihzZWxmLmF0dHIu UE9SVCkpCisgICAgICAgIHJldHVybiB1cmwKKworICAgIGRlZiBkb2NrZXJfY21kKHNlbGYsIHRl bXBfZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBHZW5lcmF0ZSBhbmQgcmV0dXJuIHRo ZSBkb2NrZXIgY29tbWFuZCB0byBleGVjdXRlCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g JyVzIHJ1biAtZCAtLXNpZy1wcm94eT0zRHRydWUgLXAgJXM6JXMgLXYgIiVzOi9pbXBvcnQvIiAl cyc9CiAlIFwKKyAgICAgICAgICAgIChzZWxmLmF0dHIudml6X2NvbmZpZy5nZXQoImRvY2tlciIs ICJjb21tYW5kIiksIHNlbGYuYXR0ci5QT1JUPQosIHNlbGYuYXR0ci5kb2NrZXJfcG9ydCwKKyAg ICAgICAgICAgICB0ZW1wX2Rpciwgc2VsZi5hdHRyLnZpel9jb25maWcuZ2V0KCJkb2NrZXIiLCAi aW1hZ2UiKSkKCmRpZmYgLXIgZDE3OWRmNzQxZmY1MThmMDlmYzgyYTY0ZjJhYWE4MTdlNDQwNTA0 NyAtciBlZjRhNWVjOWM1Y2NhMDM4OTk4NzEyYj0KYmQ0MDczOTMxNjVjNWU4YjkgbGliL2dhbGF4 eS93ZWIvYmFzZS9wbHVnaW5mcmFtZXdvcmsucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvYmFzZS9w bHVnaW5mcmFtZXdvcmsucHkKKysrIGIvbGliL2dhbGF4eS93ZWIvYmFzZS9wbHVnaW5mcmFtZXdv cmsucHkKQEAgLTIwLDYgKzIwLDggQEAKIGZyb20gZ2FsYXh5IGltcG9ydCB1dGlsCiBmcm9tIGdh bGF4eS51dGlsIGltcG9ydCBvZGljdAogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgYnVuY2gKK2Zy b20gLmludGVyYWN0aXZlX2Vudmlyb25tZW50cyBpbXBvcnQgSW50ZXJhY3RpdmVFbnZpb3JubWVu dFJlcXVlc3QKKwo9MjAKIGltcG9ydCBsb2dnaW5nCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2Vy KCBfX25hbWVfXyApCkBAIC01OTAsNiArNTkyLDExIEBACiAgICAgICAgIGlmICdwbHVnaW5fcGF0 aCcgbm90IGluIGt3YXJnczoKICAgICAgICAgICAgIGt3YXJnc1sgJ3BsdWdpbl9wYXRoJ10gPTNE IG9zLnBhdGguYWJzcGF0aCggcGx1Z2luLnBhdGggKQo9MjAKKyAgICAgICAgcGx1Z2luX3R5cGUg PTNEIHBsdWdpbi5jb25maWdbInBsdWdpbl90eXBlIl0KKyAgICAgICAgaWYgcGx1Z2luX3R5cGUg PTNEPTNEICJpbnRlcmFjdGl2ZV9lbnZpcm9ubWVudCI6CisgICAgICAgICAgICByZXF1ZXN0ID0z RCBJbnRlcmFjdGl2ZUVudmlvcm5tZW50UmVxdWVzdCh0cmFucywgcGx1Z2luKQorICAgICAgICAg ICAga3dhcmdzWyJpZV9yZXF1ZXN0Il0gPTNEIHJlcXVlc3QKKwogICAgICAgICAjIGRlZmluZWQg aGVyZSB0byBiZSBvdmVycmlkZGVuCiAgICAgICAgIHJldHVybiB0cmFucy5maWxsX3RlbXBsYXRl KCB0ZW1wbGF0ZV9maWxlbmFtZSwgdGVtcGxhdGVfbG9va3VwPTNEcD0KbHVnaW4udGVtcGxhdGVf bG9va3VwLCAqKmt3YXJncyApCj0yMAoKZGlmZiAtciBkMTc5ZGY3NDFmZjUxOGYwOWZjODJhNjRm MmFhYTgxN2U0NDA1MDQ3IC1yIGVmNGE1ZWM5YzVjY2EwMzg5OTg3MTJiPQpiZDQwNzM5MzE2NWM1 ZThiOSBzdGF0aWMvc2NyaXB0cy9nYWxheHkuaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmpzCi0t LSAvZGV2L251bGwKKysrIGIvc3RhdGljL3NjcmlwdHMvZ2FsYXh5LmludGVyYWN0aXZlX2Vudmly b25tZW50cy5qcwpAQCAtMCwwICsxLDU5IEBACisvKioKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRv IHJlbW92ZSBjb250ZW50IGZyb20gdGhlIG1haW4gYXJlYSBhbmQgYWRkIHRoZSBub3RlPQpib29r LgorICogTm90IGlkZW1wb3RlbnQKKyAqLworZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKHVybCl7 CisgICAgY2xlYXJfbWFpbl9hcmVhKCk7CisgICAgJCgnI21haW4nKS5hcHBlbmQoJzxpZnJhbWUg ZnJhbWVCb3JkZXI9M0QiMCIgc2VhbWxlc3M9M0Qic2VhbWxlc3MiIHN0eT0KbGU9M0Qid2lkdGg6 IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6aGlkZGVuOyIgc2Nyb2xsaW5nPTNEIm5vIiBz cmM9M0QiPQonKyB1cmwgKyciPjwvaWZyYW1lPicKKyAgICApOworfQorCitmdW5jdGlvbiBjbGVh cl9tYWluX2FyZWEoKXsKKyAgICAkKCcjc3Bpbm5lcicpLnJlbW92ZSgpOworICAgICQoJyNtYWlu JykuY2hpbGRyZW4oKS5yZW1vdmUoKTsKK30KKworZnVuY3Rpb24gZGlzcGxheV9zcGlubmVyKCl7 CisgICAgICAgICQoJyNtYWluJykuYXBwZW5kKCc8aW1nIGlkPTNEInNwaW5uZXIiIHNyYz0zRCIn ICsgZ2FsYXh5X3Jvb3QgKyAnLz0Kc3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0eWxl PTNEInBvc2l0aW9uOmFic29sdXRlO21hcmdpbjphdXRvO3RvcDowPQo7bGVmdDowO3JpZ2h0OjA7 Ym90dG9tOjA7Ij4nKTsKK30KKworCisvKioKKyAqIFRlc3QgYXZhaWxhYmlsaXR5IG9mIGEgVVJM LCBhbmQgY2FsbCBhIGNhbGxiYWNrIHdoZW4gZG9uZS4KKyAqIGh0dHA6Ly9zdGFja292ZXJmbG93 LmNvbS9xLzI1MzkwMjA2LzM0NzM2OAorICogQHBhcmFtIHtTdHJpbmd9IHVybDogVVJMIHRvIHRl c3QgYXZhaWxhYmlsaXR5IG9mLiBNdXN0IHJldHVybiBhIDIwMCAoMzA9CjItPjIwMCBpcyBPSyku CisgKiBAcGFyYW0ge1N0cmluZ30gY2FsbGJhY2s6IGZ1bmN0aW9uIHRvIGNhbGwgb25jZSBzdWNj ZXNzZnVsbHkgY29ubmVjdGVkLgorICoKKyAqLworZnVuY3Rpb24gdGVzdF9pZV9hdmFpbGFiaWxp dHkodXJsLCBzdWNjZXNzX2NhbGxiYWNrKXsKKyAgICB2YXIgcmVxdWVzdF9jb3VudCA9M0QgMDsK KyAgICBkaXNwbGF5X3NwaW5uZXIoKTsKKyAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwoZnVu Y3Rpb24oKXsKKyAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgIHVybDogdXJsLAorICAgICAg ICAgICAgeGhyRmllbGRzOiB7CisgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVl CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgICAgICB0 aW1lb3V0OiA1MDAsCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpeworICAgICAgICAg ICAgICAgIGNvbnNvbGUubG9nKCJDb25uZWN0ZWQgdG8gSUUsIHJldHVybmluZyIpOworICAgICAg ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIHN1Y2Nl c3NfY2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcjogZnVuY3Rp b24oanF4aHIsIHN0YXR1cywgZXJyb3IpeworICAgICAgICAgICAgICAgIHJlcXVlc3RfY291bnQr KzsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiUmVxdWVzdCAiICsgcmVxdWVzdF9jb3Vu dCk7CisgICAgICAgICAgICAgICAgaWYocmVxdWVzdF9jb3VudCA+IDMwKXsKKyAgICAgICAgICAg ICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGNs ZWFyX21haW5fYXJlYSgpOworICAgICAgICAgICAgICAgICAgICB0b2FzdHIuZXJyb3IoCisgICAg ICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSUUsIGNvbnRhY3QgeW91 ciBhZG1pbmlzdHJhdD0Kb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIw MDAwLCAndGFwVG9EaXNtPQppc3MnOiBmYWxzZX0KKyAgICAgICAgICAgICAgICAgICAgKTsKKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sIDEwMDAp OworfQoKZGlmZiAtciBkMTc5ZGY3NDFmZjUxOGYwOWZjODJhNjRmMmFhYTgxN2U0NDA1MDQ3IC1y IGVmNGE1ZWM5YzVjY2EwMzg5OTg3MTJiPQpiZDQwNzM5MzE2NWM1ZThiOSBzdGF0aWMvc2NyaXB0 cy9wYWNrZWQvZ2FsYXh5LmludGVyYWN0aXZlX2Vudmlyb25tZW50cy5qcwotLS0gL2Rldi9udWxs CisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9nYWxheHkuaW50ZXJhY3RpdmVfZW52aXJvbm1l bnRzLmpzCkBAIC0wLDAgKzEsMSBAQAorZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKGEpe2NsZWFy X21haW5fYXJlYSgpOyQoIiNtYWluIikuYXBwZW5kKCc8aWZyYW1lIGY9CnJhbWVCb3JkZXI9M0Qi MCIgc2VhbWxlc3M9M0Qic2VhbWxlc3MiIHN0eWxlPTNEIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEw MCU7ID0Kb3ZlcmZsb3c6aGlkZGVuOyIgc2Nyb2xsaW5nPTNEIm5vIiBzcmM9M0QiJythKyciPjwv aWZyYW1lPicpfWZ1bmN0aW9uIGNsZWFyPQpfbWFpbl9hcmVhKCl7JCgiI3NwaW5uZXIiKS5yZW1v dmUoKTskKCIjbWFpbiIpLmNoaWxkcmVuKCkucmVtb3ZlKCl9ZnVuY3Rpb249CiBkaXNwbGF5X3Nw aW5uZXIoKXskKCIjbWFpbiIpLmFwcGVuZCgnPGltZyBpZD0zRCJzcGlubmVyIiBzcmM9M0QiJytn YWxheHlfcj0Kb290Kycvc3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0eWxlPTNEInBv c2l0aW9uOmFic29sdXRlO21hcmdpbjphdXRvPQo7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9t OjA7Ij4nKX1mdW5jdGlvbiB0ZXN0X2llX2F2YWlsYWJpbGl0eShiLGMpe3ZhciA9CmE9M0QwO2Rp c3BsYXlfc3Bpbm5lcigpO2ludGVydmFsPTNEc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXskLmFqYXgo e3VybDpiLHhocj0KRmllbGRzOnt3aXRoQ3JlZGVudGlhbHM6dHJ1ZX0sdHlwZToiR0VUIix0aW1l b3V0OjUwMCxzdWNjZXNzOmZ1bmN0aW9uKCl7Y29uPQpzb2xlLmxvZygiQ29ubmVjdGVkIHRvIElF LCByZXR1cm5pbmciKTtjbGVhckludGVydmFsKGludGVydmFsKTtjKCl9LGVycm9yOmY9CnVuY3Rp b24oZixkLGUpe2ErKztjb25zb2xlLmxvZygiUmVxdWVzdCAiK2EpO2lmKGE+MzApe2NsZWFySW50 ZXJ2YWwoaW50ZXJ2YT0KbCk7Y2xlYXJfbWFpbl9hcmVhKCk7dG9hc3RyLmVycm9yKCJDb3VsZCBu b3QgY29ubmVjdCB0byBJRSwgY29udGFjdCB5b3VyIGFkPQptaW5pc3RyYXRvciIsIkVycm9yIix7 Y2xvc2VCdXR0b246dHJ1ZSx0aW1lT3V0OjIwMDAwLHRhcFRvRGlzbWlzczpmYWxzZX0pfX09Cn0p fSwxMDAwKX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKCmh0dHBzOi8vYml0YnVja2V0 Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9iN2UzNjk0ZjEwODEvCkNoYW5nZXNl dDogICBiN2UzNjk0ZjEwODEKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAx NC0xMC0xOCAyMjozODowNCswMDowMApTdW1tYXJ5OiAgICAgTWFrZSBkeW5hbWljIHByb3h5IGxl c3Mgbm9pc3kgYnV0IGFkZCBvcHRpb24gZHluYW1pY19wcm94eV9kZWI9CnVnIHRvIHJlLWVuYWJs ZSBmb3IgZGVidWdnaW5nLgpBZmZlY3RlZCAjOiAgNSBmaWxlcwoKZGlmZiAtciBlZjRhNWVjOWM1 Y2NhMDM4OTk4NzEyYmJkNDA3MzkzMTY1YzVlOGI5IC1yIGI3ZTM2OTRmMTA4MWI2OTg3OTJmZjAz PQo5ZDhiYjU4OGViNGQ4MmJjMSBjb25maWcvZ2FsYXh5LmluaS5zYW1wbGUKLS0tIGEvY29uZmln L2dhbGF4eS5pbmkuc2FtcGxlCisrKyBiL2NvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQpAQCAtNTQ1 LDYgKzU0NSw4IEBACiAjZHluYW1pY19wcm94eV9iaW5kX3BvcnQ9M0Q4ODAwCiAjZHluYW1pY19w cm94eV9iaW5kX2lwPTNEMC4wLjAuMAo9MjAKKyMgRW5hYmxlIHZlcmJvc2UgZGVidWdnaW5nIG9m IEdhbGF4eS1tYW5hZ2VkIGR5bmFtaWMgcHJveHkuCisjZHluYW1pY19wcm94eV9kZWJ1Zz0zREZh bHNlCj0yMAogIyAtLSBMb2dnaW5nIGFuZCBEZWJ1Z2dpbmcKPTIwCgpkaWZmIC1yIGVmNGE1ZWM5 YzVjY2EwMzg5OTg3MTJiYmQ0MDczOTMxNjVjNWU4YjkgLXIgYjdlMzY5NGYxMDgxYjY5ODc5MmZm MDM9CjlkOGJiNTg4ZWI0ZDgyYmMxIGxpYi9nYWxheHkvY29uZmlnLnB5Ci0tLSBhL2xpYi9nYWxh eHkvY29uZmlnLnB5CisrKyBiL2xpYi9nYWxheHkvY29uZmlnLnB5CkBAIC0zODUsNiArMzg1LDcg QEAKPTIwCiAgICAgICAgIHNlbGYucHJveHlfc2Vzc2lvbl9tYXAgPTNEIHNlbGYucmVzb2x2ZV9w YXRoKCBrd2FyZ3MuZ2V0KCAiZHluYW1pYz0KX3Byb3h5X3Nlc3Npb25fbWFwIiwgImRhdGFiYXNl L3Nlc3Npb25fbWFwLnNxbGl0ZSIgKSApCiAgICAgICAgIHNlbGYubWFuYWdlX2R5bmFtaWNfcHJv eHkgPTNEIHN0cmluZ19hc19ib29sKCBrd2FyZ3MuZ2V0KCAiZHluYW1pYz0KX3Byb3h5X21hbmFn ZSIsICJUcnVlIiApICkgICMgU2V0IHRvIGZhbHNlIGlmIGJlaW5nIGxhdW5jaGVkIGV4dGVybmFs bHkKKyAgICAgICAgc2VsZi5keW5hbWljX3Byb3h5X2RlYnVnID0zRCBzdHJpbmdfYXNfYm9vbCgg a3dhcmdzLmdldCggImR5bmFtaWNfPQpwcm94eV9kZWJ1ZyIsICJGYWxzZSIgKSApCiAgICAgICAg IHNlbGYuZHluYW1pY19wcm94eV9iaW5kX3BvcnQgPTNEIGludCgga3dhcmdzLmdldCggImR5bmFt aWNfcHJveHlfYj0KaW5kX3BvcnQiLCAiODgwMCIgKSApCiAgICAgICAgIHNlbGYuZHluYW1pY19w cm94eV9iaW5kX2lwID0zRCBrd2FyZ3MuZ2V0KCAiZHluYW1pY19wcm94eV9iaW5kX2lwIj0KLCAi MC4wLjAuMCIgKQo9MjAKCmRpZmYgLXIgZWY0YTVlYzljNWNjYTAzODk5ODcxMmJiZDQwNzM5MzE2 NWM1ZThiOSAtciBiN2UzNjk0ZjEwODFiNjk4NzkyZmYwMz0KOWQ4YmI1ODhlYjRkODJiYzEgbGli L2dhbGF4eS93ZWIvcHJveHkvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvcHJveHkv X19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS93ZWIvcHJveHkvX19pbml0X18ucHkKQEAgLTE3 LDcgKzE3LDcgQEAKIGNsYXNzIFByb3h5TWFuYWdlcihvYmplY3QpOgo9MjAKICAgICBkZWYgX19p bml0X18oIHNlbGYsIGNvbmZpZyApOgotICAgICAgICBmb3Igb3B0aW9uIGluIFsgIm1hbmFnZV9k eW5hbWljX3Byb3h5IiwgImR5bmFtaWNfcHJveHlfYmluZF9wb3J0Iiw9CiAiZHluYW1pY19wcm94 eV9iaW5kX2lwIiBdOgorICAgICAgICBmb3Igb3B0aW9uIGluIFsgIm1hbmFnZV9keW5hbWljX3By b3h5IiwgImR5bmFtaWNfcHJveHlfYmluZF9wb3J0Iiw9CiAiZHluYW1pY19wcm94eV9iaW5kX2lw IiwgImR5bmFtaWNfcHJveHlfZGVidWciIF06CiAgICAgICAgICAgICBzZXRhdHRyKCBzZWxmLCBv cHRpb24sIGdldGF0dHIoIGNvbmZpZywgb3B0aW9uICkgKQogICAgICAgICBzZWxmLmxhdW5jaF9i eSA9M0QgIm5vZGUiICAjIFRPRE86IFN1cHBvcnQgZG9ja2VyCiAgICAgICAgIGlmIHNlbGYubWFu YWdlX2R5bmFtaWNfcHJveHk6CkBAIC03NCw2ICs3NCw5IEBACiAgICAgICAgICAgICAiLS1pcCIs IGNvbmZpZy5keW5hbWljX3Byb3h5X2JpbmRfaXAsCiAgICAgICAgICAgICAiLS1wb3J0Iiwgc3Ry KGNvbmZpZy5keW5hbWljX3Byb3h5X2JpbmRfcG9ydCksCiAgICAgICAgIF0KKyAgICAgICAgaWYg Y29uZmlnLmR5bmFtaWNfcHJveHlfZGVidWc6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS12 ZXJib3NlIikKKwogICAgICAgICBwYXJlbnRfZGlyZWN0b3J5ID0zRCBvcy5wYXRoLmRpcm5hbWUo IF9fZmlsZV9fICkKICAgICAgICAgcGF0aF90b19hcHBsaWNhdGlvbiA9M0Qgb3MucGF0aC5qb2lu KCBwYXJlbnRfZGlyZWN0b3J5LCAianMiLCAibGliPQoiLCAibWFpbi5qcyIgKQogICAgICAgICBj b21tYW5kID0zRCBbIHBhdGhfdG9fYXBwbGljYXRpb24gXSArIGFyZ3MKCmRpZmYgLXIgZWY0YTVl YzljNWNjYTAzODk5ODcxMmJiZDQwNzM5MzE2NWM1ZThiOSAtciBiN2UzNjk0ZjEwODFiNjk4Nzky ZmYwMz0KOWQ4YmI1ODhlYjRkODJiYzEgbGliL2dhbGF4eS93ZWIvcHJveHkvanMvbGliL21hcHBl ci5qcwotLS0gYS9saWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvbWFwcGVyLmpzCisrKyBiL2xp Yi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9tYXBwZXIuanMKQEAgLTU0LDkgKzU0LDYgQEAKICAg ICB9Owo9MjAKICAgICB2YXIgZGIgPTNEIG5ldyBzcWxpdGUzLkRhdGFiYXNlKHBhdGgsIGxvYWRT ZXNzaW9ucyk7Ci0gICAgY29uc29sZS5sb2coImFmdGVyIGRiIHNlc3Npb24iKTsKLSAgICBjb25z b2xlLmxvZyhuZXdTZXNzaW9ucyk7Ci0KIH07Cj0yMAo9MjAKCmRpZmYgLXIgZWY0YTVlYzljNWNj YTAzODk5ODcxMmJiZDQwNzM5MzE2NWM1ZThiOSAtciBiN2UzNjk0ZjEwODFiNjk4NzkyZmYwMz0K OWQ4YmI1ODhlYjRkODJiYzEgbGliL2dhbGF4eS93ZWIvcHJveHkvanMvbGliL3Byb3h5LmpzCi0t LSBhL2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9wcm94eS5qcworKysgYi9saWIvZ2FsYXh5 L3dlYi9wcm94eS9qcy9saWIvcHJveHkuanMKQEAgLTEzLDYgKzEzLDcgQEAKIAl2YXIgZHluYW1p Y1Byb3h5ID0zRCB0aGlzOwogCXRoaXMuc2Vzc2lvbkNvb2tpZSA9M0Qgb3B0aW9ucy5zZXNzaW9u Q29va2llOwogCXRoaXMuc2Vzc2lvbk1hcCA9M0Qgb3B0aW9ucy5zZXNzaW9uTWFwOworICAgIHRo aXMuZGVidWcgPTNEIG9wdGlvbnMudmVyYm9zZTsKPTIwCiAgICAgdmFyIGxvZ19lcnJvcnMgPTNE IGZ1bmN0aW9uKGhhbmRsZXIpIHsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChyZXEsIHJlcykg ewpAQCAtNzAsNyArNzEsOSBAQAo9MjAKIER5bmFtaWNQcm94eS5wcm90b3R5cGUuaGFuZGxlUHJv eHlSZXF1ZXN0ID0zRCBmdW5jdGlvbihyZXEsIHJlcykgewogICAgIHZhciB0YXJnZXQgPTNEIHRo aXMudGFyZ2V0Rm9yUmVxdWVzdChyZXEpOwotICAgIGNvbnNvbGUubG9nKCJQUk9YWSAiICsgcmVx Lm1ldGhvZCArICIgIiArIHJlcS51cmwgKyAiIHRvICIgKyB0YXJnZXQpOworICAgIGlmKHRoaXMu ZGVidWcpIHsKKyAgICAgICAgY29uc29sZS5sb2coIlBST1hZICIgKyByZXEubWV0aG9kICsgIiAi ICsgcmVxLnVybCArICIgdG8gIiArIHRhcmdlPQp0KTsKKyAgICB9CiAgICAgdmFyIG9yaWdpbiA9 M0QgcmVxLmhlYWRlcnMub3JpZ2luOwogICAgIHRoaXMucmV3cml0ZVJlcXVlc3QocmVxKTsKICAg ICByZXMub2xkV3JpdGVIZWFkID0zRCByZXMud3JpdGVIZWFkOwpAQCAtOTIsNyArOTUsOSBAQAog RHluYW1pY1Byb3h5LnByb3RvdHlwZS5oYW5kbGVXcyA9M0QgZnVuY3Rpb24ocmVxLCByZXMsIGhl YWQpIHsKICAgICAvLyBubyBsb2NhbCByb3V0ZSBmb3VuZCwgdGltZSB0byBwcm94eQogICAgIHZh ciB0YXJnZXQgPTNEIHRoaXMudGFyZ2V0Rm9yUmVxdWVzdChyZXEpOwotICAgIGNvbnNvbGUubG9n KCJQUk9YWSBXUyAiICsgcmVxLnVybCArICIgdG8gIiArIHJlcS51cmwpOworICAgIGlmKHRoaXMu ZGVidWcpIHsKKyAgICAgICAgY29uc29sZS5sb2coIlBST1hZIFdTICIgKyByZXEudXJsICsgIiB0 byAiICsgcmVxLnVybCk7CisgICAgfQogICAgIHZhciBvcmlnaW4gPTNEIHJlcS5oZWFkZXJzLm9y aWdpbjsKICAgICB0aGlzLnJld3JpdGVSZXF1ZXN0KHJlcSk7CiAgICAgcmVzLm9sZFdyaXRlSGVh ZCA9M0QgcmVzLndyaXRlSGVhZDsKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4 eS1jZW50cmFsL2NvbW1pdHMvZjcwZWYyMWM0ODU1LwpDaGFuZ2VzZXQ6ICAgZjcwZWYyMWM0ODU1 ClVzZXI6ICAgICAgICBqbWNoaWx0b24KRGF0ZTogICAgICAgIDIwMTQtMTAtMTggMjI6Mzg6MDQr MDA6MDAKU3VtbWFyeTogICAgIEltcHJvdmVtZW50cyB0byBJUHl0aG9uIGNvbmZpZ3VyYXRpb24g c2FtcGxlLgpBbGxvdyBvdmVyaWRpbmcgZ2FsYXh5X3VybCBkaXJlY3RseSAoZG9uJ3QgZG8gdGhp cyAtIHVzZSBnYWxheHlfaW5mcmFzdHJ1Y3Q9CnVyZV91cmwgLSBidXQgdGhlcmUgd2lsbCBiZSBk ZXBsb3ltZW50cykuIERvbid0IHJlcXVpcmUgc2V0dGluZyBvbGRlciBwb3J0ID0KcmFuZ2UgZGVw bG95bWVudCBvcHRpb25zLgpBZmZlY3RlZCAjOiAgMiBmaWxlcwoKZGlmZiAtciBiN2UzNjk0ZjEw ODFiNjk4NzkyZmYwMzlkOGJiNTg4ZWI0ZDgyYmMxIC1yIGY3MGVmMjFjNDg1NTkwYTlkMWIxZWM5 PQoyYzIyYzFiMTUyNDI3NTY0NCBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVu dHMvaXB5dGhvbi9jb25maWcvaXA9Cnl0aG9uLmluaS5zYW1wbGUKLS0tIGEvY29uZmlnL3BsdWdp bnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vY29uZmlnL2lweXRob24uaW5pLnNh PQptcGxlCisrKyBiL2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0 aG9uL2NvbmZpZy9pcHl0aG9uLmluaS5zYT0KbXBsZQpAQCAtMSw5ICsxLDE2IEBACiBbbWFpbl0K LWFwYWNoZV91cmxzID0zRCBGYWxzZQotcGFzc3dvcmRfYXV0aCA9M0QgRmFsc2UKLXNzbCA9M0Qg RmFsc2UKKworIyBGb2xsb3dpbmcgb3B0aW9ucyBhcmUgaWdub3JlZCBpZiB1c2luZyB0aGUgR2Fs YXh5IGR5bmFtaWMgcHJveHkgYnV0CisjIGFyZSB1c2VmdWwgaWYgbWFwcGluZyBhIHJhbmdlIG9m IHBvcnRzIGZvciBlbnZpcm9ubWVudCBjb25zdW1wdGlvbi4KKyNhcGFjaGVfdXJscyA9M0QgRmFs c2UKKyNwYXNzd29yZF9hdXRoID0zRCBGYWxzZQorI3NzbCA9M0QgRmFsc2UKPTIwCiBbZG9ja2Vy XQogY29tbWFuZCA9M0QgZG9ja2VyCiBpbWFnZSA9M0QgYmdydWVuaW5nL2RvY2tlci1pcHl0aG9u LW5vdGVib29rCj0yMAorIyBVUkwgdG8gYWNjZXNzIHRoZSBHYWxheHkgQVBJIHdpdGggZnJvbSB0 aGUgc3Bhd24gRG9ja2VyIGNvbnRhaW50ZXIsIGlmIGU9Cm1wdHkKKyMgdGhpcyBmYWxscyBiYWNr IHRvIGdhbGF4eS5pbmkncyBnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsIGFuZCBmaW5hbGx5IHRv PQogdGhlCisjIERvY2tlciBob3N0IG9mIHRoZSBzcGF3bmVkIGNvbnRhaW5lciBpZiB0aGF0IGlz IGFsc28gbm90IHNldC4KKyNnYWxheHlfdXJsID0zRD0yMAoKZGlmZiAtciBiN2UzNjk0ZjEwODFi Njk4NzkyZmYwMzlkOGJiNTg4ZWI0ZDgyYmMxIC1yIGY3MGVmMjFjNDg1NTkwYTlkMWIxZWM5PQoy YzIyYzFiMTUyNDI3NTY0NCBsaWIvZ2FsYXh5L3dlYi9iYXNlL2ludGVyYWN0aXZlX2Vudmlyb25t ZW50cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYi9iYXNlL2ludGVyYWN0aXZlX2Vudmlyb25tZW50 cy5weQorKysgYi9saWIvZ2FsYXh5L3dlYi9iYXNlL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy5w eQpAQCAtNDQsMTIgKzQ0LDE4IEBACiAgICAgICAgIHZpel9jb25maWcucmVhZCggY29uZl9wYXRo ICkKICAgICAgICAgc2VsZi5hdHRyLnZpel9jb25maWcgPTNEIHZpel9jb25maWcKPTIwCisgICAg ICAgIGRlZiBfYm9vbGVhbl9vcHRpb24ob3B0aW9uLCBkZWZhdWx0PTNERmFsc2UpOgorICAgICAg ICAgICAgaWYgc2VsZi5hdHRyLnZpel9jb25maWcuaGFzX29wdGlvbigibWFpbiIsIG9wdGlvbik6 CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldGJvb2xlYW4o Im1haW4iLCBvcHRpb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVy biBkZWZhdWx0CisKICAgICAgICAgIyBPbGRlciBzdHlsZSBwb3J0IHJhbmdlIHByb3h5aW5nIC0g bm90IHN1cmUgd2Ugd2FudCB0byBrZWVwIHRoZXNlPQogYXJvdW5kIG9yIHNob3VsZAogICAgICAg ICAjIHdlIGFsd2F5cyBhc3N1bWUgdXNlIG9mIEdhbGF4eSBkeW5hbWljIHByb3h5PyBOb25lIG9m IHRoZXNlIG5lZWQ9CiB0byBiZSBzcGVjaWZpZWQKICAgICAgICAgIyBpZiB1c2luZyB0aGUgR2Fs YXh5IGR5bmFtaWMgcHJveHkuCi0gICAgICAgIHNlbGYuYXR0ci5QQVNTV09SRF9BVVRIID0zRCBz ZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIj0KLCAicGFzc3dvcmRfYXV0aCIp Ci0gICAgICAgIHNlbGYuYXR0ci5BUEFDSEVfVVJMUyA9M0Qgc2VsZi5hdHRyLnZpel9jb25maWcu Z2V0Ym9vbGVhbigibWFpbiIsID0KImFwYWNoZV91cmxzIikKLSAgICAgICAgc2VsZi5hdHRyLlNT TF9VUkxTID0zRCBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgInNzPQps IikKKyAgICAgICAgc2VsZi5hdHRyLlBBU1NXT1JEX0FVVEggPTNEIF9ib29sZWFuX29wdGlvbigi cGFzc3dvcmRfYXV0aCIpCisgICAgICAgIHNlbGYuYXR0ci5BUEFDSEVfVVJMUyA9M0QgX2Jvb2xl YW5fb3B0aW9uKCJhcGFjaGVfdXJscyIpCisgICAgICAgIHNlbGYuYXR0ci5TU0xfVVJMUyA9M0Qg X2Jvb2xlYW5fb3B0aW9uKCJzc2wiKQo9MjAKICAgICBkZWYgd3JpdGVfY29uZl9maWxlKHNlbGYs IG91dHB1dF9kaXJlY3RvcnksIGV4dHJhPTNEe30pOgogICAgICAgICAiIiIKQEAgLTY4LDcgKzc0 LDkgQEAKICAgICAgICAgICAgICdjb3JzX29yaWdpbic6IHJlcXVlc3QuaG9zdF91cmwsCiAgICAg ICAgIH0KPTIwCi0gICAgICAgIGlmIHNlbGYuYXR0ci5nYWxheHlfY29uZmlnLmdhbGF4eV9pbmZy YXN0cnVjdHVyZV91cmxfc2V0OgorICAgICAgICBpZiBzZWxmLmF0dHIudml6X2NvbmZpZy5oYXNf b3B0aW9uKCJkb2NrZXIiLCAiZ2FsYXh5X3VybCIpOgorICAgICAgICAgICAgY29uZl9maWxlWydn YWxheHlfdXJsJ10gPTNEIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldHN0cmluZygiZG89CmNrZXIi LCAiZ2FsYXh5X3VybCIpCisgICAgICAgIGVsaWYgc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuZ2Fs YXh5X2luZnJhc3RydWN0dXJlX3VybF9zZXQ6CiAgICAgICAgICAgICBjb25mX2ZpbGVbJ2dhbGF4 eV91cmwnXSA9M0Qgc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuZ2FsYXh5X2luZj0KcmFzdHJ1Y3R1 cmVfdXJsLnJzdHJpcCgnLycpICsgJy8nCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25m X2ZpbGVbJ2dhbGF4eV91cmwnXSA9M0QgcmVxdWVzdC5hcHBsaWNhdGlvbl91cmwucnN0cmlwKCcv Jz0KKSArICcvJwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy80YjJlZmI3MDNlODYvCkNoYW5nZXNldDogICA0YjJlZmI3MDNlODYKVXNlcjogICAg ICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0xOSAyMTozODozMCswMDowMApTdW1t YXJ5OiAgICAgUmVtb3ZlIGZpbGVzIGluZGljYXRlZCBieSBCam9lcm4uCk5vIG5lZWQgdG8gTElD RU5TRSB0aGlzIGRpZmZlcmVudGx5LCBJTlNUQUxMLm1kIHByb2JhYmx5IHNob3VsZCBiZSByZXdy aXR0ZT0KbiwgYW5kIC5naXRpZ25vcmUgaXMgbm93IHBvaW50bGVzcy4KCmh0dHBzOi8vYml0YnVj a2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvcHVsbC1yZXF1ZXN0LzUzMy4KQWZmZWN0ZWQg IzogIDYgZmlsZXMKCmRpZmYgLXIgZjcwZWYyMWM0ODU1OTBhOWQxYjFlYzkyYzIyYzFiMTUyNDI3 NTY0NCAtciA0YjJlZmI3MDNlODYyYzFjOGQ3ZDJhMz0KOWRmNmFkOTc4ZWEwNGFmN2QgY29uZmln L3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vLmdpdGlnbm9yZQotLS0g YS9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi8uZ2l0aWdu b3JlCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotIyBCeXRlLWNvbXBpbGVkIC8gb3B0 aW1pemVkIC8gRExMIGZpbGVzCi1fX3B5Y2FjaGVfXy8KLSoucHlbY29kXQotCi0jIEMgZXh0ZW5z aW9ucwotKi5zbwotCi0jIERpc3RyaWJ1dGlvbiAvIHBhY2thZ2luZwotLlB5dGhvbgotZW52Lwot YmluLwotYnVpbGQvCi1kZXZlbG9wLWVnZ3MvCi1kaXN0LwotZWdncy8KLWxpYi8KLWxpYjY0Lwot cGFydHMvCi1zZGlzdC8KLXZhci8KLSouZWdnLWluZm8vCi0uaW5zdGFsbGVkLmNmZwotKi5lZ2cK LQotIyBJbnN0YWxsZXIgbG9ncwotcGlwLWxvZy50eHQKLXBpcC1kZWxldGUtdGhpcy1kaXJlY3Rv cnkudHh0Ci0KLSMgVW5pdCB0ZXN0IC8gY292ZXJhZ2UgcmVwb3J0cwotaHRtbGNvdi8KLS50b3gv Ci0uY292ZXJhZ2UKLS5jYWNoZQotbm9zZXRlc3RzLnhtbAotY292ZXJhZ2UueG1sCi0KLSMgVHJh bnNsYXRpb25zCi0qLm1vCi0KLSMgTXIgRGV2ZWxvcGVyCi0ubXIuZGV2ZWxvcGVyLmNmZwotLnBy b2plY3QKLS5weWRldnByb2plY3QKLQotIyBSb3BlCi0ucm9wZXByb2plY3QKLQotIyBEamFuZ28g c3R1ZmY6Ci0qLmxvZwotKi5wb3QKLQotIyBTcGhpbnggZG9jdW1lbnRhdGlvbgotZG9jcy9fYnVp bGQvCi0KCmRpZmYgLXIgZjcwZWYyMWM0ODU1OTBhOWQxYjFlYzkyYzIyYzFiMTUyNDI3NTY0NCAt ciA0YjJlZmI3MDNlODYyYzFjOGQ3ZDJhMz0KOWRmNmFkOTc4ZWEwNGFmN2QgY29uZmlnL3BsdWdp bnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vSU5TVEFMTC5tZAotLS0gYS9jb25m aWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9JTlNUQUxMLm1kCisr KyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyBJbnN0YWxsYXRpb24KLQotV2UndmUgZGV2 ZWxvcGVkIHRoZSB0ZW1wbGF0ZXMgYW5kIGNvbnRhaW5lcnMgc3VjaCB0aGF0IHRoZXkgY2FuIGJl IHJ1biB0aHI9Cm91Z2ggYW4gQXBhY2hlIHByb3h5IHVzaW5nCi1TU0wuIFRoaXMgcmVxdWlyZXMg c29tZSBub24tdHJpdmlhbCBhcGFjaGUgY29uZmlndXJhdGlvbiB0byBzdXBwb3J0LgotCi0jIyBS ZXF1aXJlbWVudHMKLQotICogW21vZF9oZWFkZXJzXShodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9k b2NzLzIuNC9tb2QvbW9kX2hlYWRlcnMuaHRtbCkKLSAqIFttb2RfcHJveHldKGh0dHA6Ly9odHRw ZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9tb2RfcHJveHkuaHRtbCkKLSAqIFttb2RfcHJveHlf aHR0cF0oaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbW9kL21vZF9wcm94eV9odHRw Lmh0PQptbCkKLSAqIFttb2RfcHJveHlfd3N0dW5uZWxdKGh0dHA6Ly9odHRwZC5hcGFjaGUub3Jn L2RvY3MvMi40L21vZC9tb2RfcHJveHlfd3N0PQp1bm5lbC5odG1sKQotICogW21vZF9yZXdyaXRl XShodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9tb2QvbW9kX3Jld3JpdGUuaHRtbCkK LSAqIFttb2Rfc2V0ZW52aWZdKGh0dHA6Ly9odHRwZC5hcGFjaGUub3JnL2RvY3MvMi40L21vZC9t b2Rfc2V0ZW52aWYuaHRtbCkKLQotSVB5dGhvbiBtYWtlcyB1c2Ugb2YgV2ViU29ja2V0cyB3aGlj aCB3ZSBuZWVkIHRvIHByb3h5IGluIGFwYWNoZS4gU3VwcG9ydCA9CndhcyBhZGRlZCB0byBgYXBh Y2hlMi40YAotZm9yIHRoaXMsIHdoaWNoIGlzIGF2YWlsYWJsZSBpbiBgVWJ1bnR1IDE0LjA0YC4g VGhlcmUgYXJlIHR1dG9yaWFscyBvbiB0aGU9CiBpbnRlcm5ldCBmb3IgYmFja3BvcnRpbmcKLXRo ZSB3ZWJzb2NrZXRzIG1vZHVsZSwgYW5kIGluc3RhbGxpbmcgYGFwYWNoZTIuNGAgUFBBcy4KLQot IyMgQXBhY2hlIENvbmZpZ3VyYXRpb24KLQotSGVyZSBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJh dGlvbgotCi1gYGBhcGFjaGUKLVJld3JpdGVFbmdpbmUgT24KLVNldEVudklmIFJlcXVlc3RfVVJJ ICIvaXB5dGhvbi8oWzAtOV0rKS9hcGkva2VybmVscy8iIERPQ0tFUl9QT1JUPTNEJDEKLVJld3Jp dGVSdWxlICAgICBeL2lweXRob24vKFswLTldKykvYXBpL2tlcm5lbHMvKC4qKSQgICB3czovLzEy Ny4wLjAuMTokMS9pPQpweXRob24vJDEvYXBpL2tlcm5lbHMvJDIgW1AsTF0KLVJld3JpdGVSdWxl ICAgICBeL2lweXRob24vKFswLTldKykvKC4qKSQgICAgICAgICAgICAgaHR0cDovL2xvY2FsaG9z dDokMS9pPQpweXRob24vJDEvJDIgW1AsTF0KLTxMb2NhdGlvbiAvaXB5dGhvbi8+Ci0gICAgICAg ICMgc3Bvb2YgaGVhZGVycyB0byBtYWtlIG5vdGVwYWQgYWNjZXB0IHRoZSByZXF1ZXN0IGFzIGNv bWluZyBmcm9tID0KdGhlIHNhbWUgb3JpZ2luCi0gICAgICAgIEhlYWRlciBzZXQgT3JpZ2luICJo dHRwOi8vMTI3LjAuMC4xOiV7RE9DS0VSX1BPUlR9ZSIKLSAgICAgICAgUmVxdWVzdEhlYWRlciBz ZXQgT3JpZ2luICJodHRwOi8vMTI3LjAuMC4xOiV7RE9DS0VSX1BPUlR9ZSIKLTwvTG9jYXRpb24+ Ci08L1ZpcnR1YWxIb3N0PgotYGBgCi0KLVdlJ2xsIHN0ZXAgdGhyb3VnaCBsaW5lLWJ5LWxpbmUg Zm9yIGNsYXJpdHkuCi0KLWBgYGFwYWNoZQotU2V0RW52SWYgUmVxdWVzdF9VUkkgIi9pcHl0aG9u LyhbMC05XSspL2FwaS9rZXJuZWxzLyIgRE9DS0VSX1BPUlQ9M0QkMQotYGBgCi0KLUhlcmUgd2Ug Y2hlY2sgdGhlIGBSZXF1ZXN0X1VSSWAgZm9yIHRoZSBwcmVzZW5jZSBmb3IgdGhlIGtlcm5lbCBy ZXF1ZXN0LiBXPQplIGRvIHRoaXMgb25seSBmb3IgdGhlIGBhcGkva2VybmVsYCBzdWJjYWxsLCBh cyB0aGUgb25seSBjb25maWd1cmF0aW9uIHdoaWM9CmggbmVlZHMgYWNjZXNzIHRvIGBET0NLRVJf UE9SVGAgaXMga2VybmVsIGNhbGxzLgotCi1gYGBhcGFjaGUKLVJld3JpdGVSdWxlIF4vaXB5dGhv bi8oWzAtOV0rKS9hcGkva2VybmVscy8oLiopJCAgIHdzOi8vMTI3LjAuMC4xOiQxL2lweXRoPQpv bi8kMS9hcGkva2VybmVscy8kMiBbUCxMXQotUmV3cml0ZVJ1bGUgXi9pcHl0aG9uLyhbMC05XSsp LyguKikkICAgICAgICAgICAgIGh0dHA6Ly9sb2NhbGhvc3Q6JDEvaXB5dGg9Cm9uLyQxLyQyIFtQ LExdCi1gYGAKLQotVGhlc2UgdHdvIHJ1bGVzIHByb3h5IGBeL2lweXRob24vYCByZXF1ZXN0cyB0 byB0aGVpciBjb3JyZWN0IGxvY2F0aW9ucy4gQVA9CkkgcmVxdWVzdHMgZm9yIHRoZSBJUHl0aG9u IGtlcm5lbCBhcmUgcm91dGVkIHRocm91Z2ggdGhlIHdzdHVubmVsIChXZWJTb2NrZT0KdCkgcHJv eHksIHdoaWxlIGFsbCBvdGhlciByZXF1ZXN0cyBnbyB0aHJvdWdoIEhUVFAuIFRoZXJlIGFyZSBt b2RpZmllZCBsaXN0PQplZCBhZnRlciBib3RoLCBgW1AsTF1gLiBgUGAgc3BlY2lmaWVzIGEgcHJv eHksIGFuZCBgTGAgc3BlY2lmaWVzIHRoaXMgaXMgdGg9CmUgbGFzdCBydWxlLCB0byBwcmV2ZW50 IHRoZSBzZWNvbmQgcmV3cml0ZSBzdGF0ZW1lbnQgZnJvbSBtYXRjaGluZyBhbGwga2Vybj0KZWwg Y2FsbHMuCi0KLWBgYGFwYWNoZQotPExvY2F0aW9uIC9pcHl0aG9uLz4KLSAgICAgICAgIyBzcG9v ZiBoZWFkZXJzIHRvIG1ha2Ugbm90ZXBhZCBhY2NlcHQgdGhlIHJlcXVlc3QgYXMgY29taW5nIGZy b20gPQp0aGUgc2FtZSBvcmlnaW4KLSAgICAgICAgSGVhZGVyIHNldCBPcmlnaW4gImh0dHA6Ly8x MjcuMC4wLjE6JXtET0NLRVJfUE9SVH1lIgotICAgICAgICBSZXF1ZXN0SGVhZGVyIHNldCBPcmln aW4gImh0dHA6Ly8xMjcuMC4wLjE6JXtET0NLRVJfUE9SVH1lIgotPC9Mb2NhdGlvbj4KLWBgYAot Ci1UaGUgV2ViU29ja2V0IHNlcnZlciBpbiBJUHl0aG9uIHBheXMgYXR0ZW50aW9uIHRvIENyb3Nz LU9yaWdpbi1SZXF1ZXN0cyBhbj0KZCB3aWxsIHRocm91Z2ggdXAgYSA1MDAgSW50ZXJuYWwgU2Vy dmVyIEVycm9yIChpbiBkb2NrZXIpIGlmIHlvdSBhdHRlbXB0IHRvPQogc2VuZCBpdCBiYWQgZGF0 YS4gVGh1cywgd2UgdXNlIHRoZSBleHRyYWN0ZWQgcG9ydCBudW1iZXIgZnJvbSB0aGUgZWFybGll ciA9CmBTZXRFbnZJZmAgcmVxdWVzdCBpbiBvcmRlciB0byBvYnRhaW4gdGhlIHBvcnQgdGhhdCBJ UHl0aG9uIHdpbGwgYWN0dWFsbHkgcj0KZWNlaXZlIGNvbm5lY3Rpb25zIGZyb20uCi0KLSMjIE5n aW54IENvbmZpZ3VyYXRpb24KLQotUGxlYXNlIHN1Ym1pdCBpdCBpZiB5b3Ugd3JpdGUgaXQhCgpk aWZmIC1yIGY3MGVmMjFjNDg1NTkwYTlkMWIxZWM5MmMyMmMxYjE1MjQyNzU2NDQgLXIgNGIyZWZi NzAzZTg2MmMxYzhkN2QyYTM9CjlkZjZhZDk3OGVhMDRhZjdkIGNvbmZpZy9wbHVnaW5zL2ludGVy YWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL0xJQ0VOU0UKLS0tIGEvY29uZmlnL3BsdWdpbnMv aW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vTElDRU5TRQorKysgL2Rldi9udWxsCkBA IC0xLDIxICswLDAgQEAKLVRoZSBNSVQgTGljZW5zZSAoTUlUKQotCi1Db3B5cmlnaHQgKGMpIDIw MTQgQmo9QzM9QjZybiBHcj1DMz1CQ25pbmcKLQotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY289CnB5Ci1vZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwgdG8gZD0KZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaD0KdHMKLXRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl bGwKLWNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZSBTb2Z0d2FyZSBpcwotZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKLQotVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW49CiBhbGwKLWNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S Ci1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcgRlI9Ck9NLAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiA9ClRIRQotU09GVFdBUkUuClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciBmNzBlZjIxYzQ4NTU5MGE5ZDFiMWVj OTJjMjJjMWIxNTI0Mjc1NjQ0IC1yIDRiMmVmYjcwM2U4NjJjMWM4ZDdkMmEzPQo5ZGY2YWQ5Nzhl YTA0YWY3ZCBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9S RUFETUUubWQKLS0tIGEvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lw eXRob24vUkVBRE1FLm1kCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLUdhbGF4eSBJ UHl0aG9uIEludGVncmF0aW9uCi09M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRAotCi1UaGlzIHByb2pl Y3RzIGludGVncmF0ZXMgW0lQeXRob24gTm90ZWJvb2tdKGh0dHA6Ly9pcHl0aG9uLm9yZy9ub3Rl Ym9vay5odD0KbWwpLCBhIGludGVyYWN0aXZlIGNvbXB1dGF0aW9uYWwgZW52aXJvbm1lbnQsIHdp dGggW0dhbGF4eV0oaHR0cDovL2dhbGF4eXByPQpvamVjdC5vcmcpLj0yMAotV2UgaG9wZSB0byBt YWtlIEdhbGF4eSBtb3JlIGF0dHJhY3RpdmUgZm9yIGJpb2luZm9ybWF0aWNpYW5zIGFuZCB0byBj b21iaW49CmUgdGhlIHBvd2VyIG9mIGJvdGggcHJvamVjdHMgdG8gdW5sb2NrIGNyZWF0aXZpdHkg aW4gZGF0YSBhbmFseXNpcywgYnV0IGFscz0KbyBpbiBOZXh0LUdlbmVyYXRpb24tVHJhaW5pbmcg Y291cnNlcy4KLQotIVtJUHl0aG9uIGluIEdhbGF4eV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNv bnRlbnQuY29tL2JncnVlbmluZy9nYWxheHktaXA9Cnl0aG9uL21hc3Rlci9zdGF0aWMvaW1hZ2Vz L2lweXRob25faW5fZ2FsYXh5LnBuZykKLQotWyFbSU1BR0UgQUxUIFRFWFQgSEVSRV0oaHR0cDov L2ltZy55b3V0dWJlLmNvbS92aS9qUUR5VHVZbm4xay8wLmpwZyldKGh0dHA9CjovL3d3dy55b3V0 dWJlLmNvbS93YXRjaD92PTNEalFEeVR1WW5uMWspCi0KLQotUmVxdWlyZW1lbnRzCi09M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKLQotVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMg dG8gaGF2ZSBbRG9ja2VyXShodHRwczovL3d3dy5kb2NrZXIuY29tKSBpbnN0YWxsZWQ9CiBvbiB5 b3VyIHN5c3RlbS4KLUZvciBhIGRldGFpbGVkIGluc3RydWN0aW9uIGhvdyB0byBpbnN0YWxsIGRv Y2tlciwgcGxlYXNlIGxvb2sgYXQgdGhlIFtkb2NrPQplciB3ZWJzaXRlXShodHRwczovL2RvY3Mu ZG9ja2VyLmNvbS9pbnN0YWxsYXRpb24vKS4KLQotCi1JbnN0YWxsYXRpb24KLT0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAotCi1Db3B5IHRoZSB0ZW1wbGF0ZSBhbmQgY29uZmln IGZvbGRlciBpbiB5b3VyIGBgR0FMQVhZX1JPT1QvY29uZmlnL3BsdWdpbnMvdj0KaXN1YWxpemF0 aW9ucy9pcHl0aG9uYGAgZm9sZGVyIGFuZCByZXN0YXJ0IEdhbGF4eS4KLUFsdGVybmF0aXZlbHks IHlvdSBjYW4gY2xvbmUgdGhlIHJlcG9zaXRvcnkgd2l0aAotCi1gYGBiYXNoCi1naXQgY2xvbmUg aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbi5naXQgY29uZmlnL3Bs dWdpbnMvdj0KaXN1YWxpemF0aW9ucy9pcHl0aG9uCi1gYGBgCi0KLVRoZSBJUHl0aG9uIHZpc3Vh bGlzYXRpb24gb3B0aW9uIHNob3VsZCBiZSB2aXNpYmxlIG5leHQgdG8gdGhlIHVzdWFsIENoYXJ0 PQpzIG9yIFRyYWNrc3RlciBvcHRpb25zIGluIHlvdXIgdmlzdWFsaXNhdGlvbiBtZW51ZS4KLQot IVtTdGFydGluZyBJUHl0aG9uIGluIEdhbGF4eV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRl bnQuY29tL2JncnVlbmluZy89CmdhbGF4eS1pcHl0aG9uL21hc3Rlci9zdGF0aWMvaW1hZ2VzL3N0 YXJ0X2lweXRob24ucG5nKQotCi0KLUZlYXR1cmVzCi09M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QK LQotICogcnVuIElQeXRob24gZGlyZWN0bHkgaW4geW91ciBHYWxheHkgbWFpbiB3aW5kb3cgb3Ig aW4gR2FsYXh5IFNjcmF0Y2hib29rCi0gKiBjb21wbGV0ZSBlbmNhcHN1bGF0ZWQgcHl0aG9uIGVu dmlyb25tZW50IHdpdGggbWF0cGxvdGxpYiwgcGFuZGFzIGFuZCBmcj0KaWVuZHMgaW5zdGFsbGVk Ci0gKiBhY2Nlc3MgdG8gYWxsIGRhdGFzZXRzIGZyb20geW91ciBjdXJyZW50IGhpc3Rvcnkgdmlh IHByZS1kZWZpbmVkIElQeXRobz0KbiBmdW5jdGlvbgotICogbWFuaXB1bGF0ZSBhbmQgcGxvdCBk YXRhIGFzIHlvdSBsaWtlIGFuZCBleHBvcnQgeW91ciBuZXcgZmlsZXMgYmFjayBpbnQ9Cm8gdGhl IEdhbGF4eSBoaXN0b3J5Ci0gKiBhY2Nlc3MgeW91ciBHYWxheHkgaW5zdGFuY2UgZnJvbSBJUHl0 aG9uIHdpdGggYmlvYmxlbmQgYW5kIHJlZGVmaW5lZCBmdT0KbmN0aW9ucwotICogc2F2ZSB0aGUg SVB5dGhvbiBOb3RlYm9vayBpbnRvIHlvdXIgR2FsYXh5IGhpc3RvcnkKLSAqIG5vdGVib29rIHBl cnNpc3RlbmNlIGFjcm9zcyBzZXNzaW9ucwotICogc2F2ZWQgSVB5dGhvbiBOb3RlYm9vayBmaWxl cyBjYW4gYmUgdmlld2VkIGluIEhUTUwgYW5kIHJlLW9wZW5lZAotICogc2VsZi1jbG9zaW5nIGFu ZCBjbGVhbmluZyBJUHl0aG9uIGRvY2tlciBjb250YWluZXIKLQotSG93IGRvZXMgaXQgd29yawot PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0KLVRoZSBt YWtvIHRlbXBsYXRlIGZyb20gdGhlIEdhbGF4eSB2aXN1YWxpc2F0aW9uIGZyYW1ld29yayByZW5k ZXJzIHRoZSBpbnRlPQpyZmFjZSBhbmQgYnVpbGRzIGFsbCBmaWxlcyBhbmQgY29tbWFuZHMgbmVl ZGVkIHRvIGx1bmNoIHRoZSBkb2NrZXIgY29udGFpbmU9CnIuIEEgY29uZmlnIGZpbGUgaXMgc2F2 ZWQgdW5kZXIgYGAvaW1wb3J0L2BgIGluc2lkZSB0aGUgZG9ja2VyIGNvbnRhaW5lci4gVD0KaGUg SVB5dGhvbiB3ZWJwYWdlIHJ1bm5pbmcgaW4gZG9ja2VyIHdpbGwgYmUgaW5jbHVkZWQgaW4gYSBI VE1MIG9iamVjdCBhbmQgPQpkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuPTIwCi1EZXBlbmRpbmcgb24g eW91ciBjb25maWd1cmF0aW9uIHNvbWUgSmF2YVNjcmlwdCBtYWdpYyBpcyBkb25lIHRvIGFkZCBh biBvYj0KamVjdCB0byB0aGUgRE9NLCB3aGljaCB3aWxsIGJlIGxvYWRlZCBieSB0aGUgYnJvd3Nl ciBhbmQgY29uZGl0aW9uYWxseSBoYW5kPQpsZXMgbG9naW4uCi1Jc2lkZSBvZiBkb2NrZXIgVENQ IGNvbm5lY3Rpb25zIGFyZSBtb25pdG9yZWQgdXNpbmcgY3Jvbi4gQXMgc29vbiBhcyB0aGUgdT0K c2VyIHF1aXRzIHVzaW5nIHRoZSBub3RlYm9vaywgdGhlIGRyb3BwaW5nIFRDUCBjb25uZWN0aW9u cyBhcmUgcmVjb2duaXNlZCBhPQpuZCB0aGUgY290YWluZXIgY2xlYW5zIHVwIGFmdGVyIGl0c2Vs ZiBhbmQga2lsbHMgaXRzZWxmLgotCi0KLQotRnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMKLT0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRAotCi1Gb3IgeW91ciBjb252aWVuY2UsIHdlIGhhdmUgYWRkZWQgYSBmZXcgcHJlLWRl ZmluZWQgZnVuY3Rpb25zIHRvIHRoZSBJUHl0aD0Kb24gcHJvZmlsZS4KLQotIyMjIGdldAotCi0g ICBUaGUgZ2V0IGZ1bmN0aW9uIHdpbGwgY29weSBhIGRhdGFzZXQsIGlkZW50aWZpZWQgYnkgdGhl IGhpc3RvcnlfaWQsIGZybz0KbSB5b3VyIGN1cnJlbnQgR2FsYXh5PTIwCi0gICBpbnRvIHRoZSBk b2NrZXIgY29udGFpbmVyLiBJdCB3aWxsIHJldHVybiB0aGUgZmlsZSBwYXRoIHRvIHRoZSBjb3Bp ZWQgZj0KaWxlLgotCi0gICAqRXhhbXBsZSo6Ci0gICBgYGBweXRob24KLSAgICAgIHdpdGggb3Bl biggZ2V0KCA0NCApLCAncicpIGFzIGhhbmRsZToKLSAgICAgICAgIGZvciBsaW5lIGluIGhhbmRs ZToKLSAgICAgICAgICAgIHByaW50KCBsaW5lICkKLSAgIGBgYD0yMAotCi0jIyMgcHV0Ci0KLSAg IFRoZSBwdXQgZnVuY3Rpb24gdGFrZXMgYSBmaWxlIHBhdGggYW5kIHRyYW5zZmVycyB0aGUgZmls ZSB0byB0aGUgY3VycmVuPQp0IGhpc3Rvcnkgb2YgeW91ciBHYWxheHkgc2Vzc2lvbi4KLQotICAg KkV4YW1wbGUqOgotICAgYGBgcHl0aG9uCi0gICAgICBwdXQoICcuL215X2ZpbGUudHN2JywgZmls ZV90eXBlID0zRCAndGFidWxhcicpCi0gICBgYGAKLQotIyMjIEhJU1RPUllfSUQKLQotICAgQWNj ZXNzaW5nIHlvdXIgY3VycmVudCBoaXN0b3J5IGlzIHBvc3NpYmxlIHdpdGggdGhlIHByZS1kZWZp bmVkIEhJU1RPUlk9Cl9JRCB2YXJpYWJsZS4KLSAgPTIwCi0KLSMjIyBjb25uZWN0IHRvIEdhbGF4 eQotCi0gICBJZiB5b3Ugd2FudCB0byBjb21tdW5pY2F0ZSB3aXRoIEdhbGF4eSB5b3UgY2FuIHVz ZSBgYGBnZXRfZ2FsYXh5X2Nvbm5lYz0KdGlvbigpYGBgIHRvIGdldCBhbiBbYmlvYmxlbmQgR2Fs YXh5SW5zdGFuY2Ugb2JqZWN0XShodHRwOi8vYmlvYmxlbmQucmVhZHRoPQplZG9jcy5vcmcvZW4v bGF0ZXN0L2FwaV9kb2NzL2dhbGF4eS9hbGwuaHRtbD9oaWdobGlnaHQ9M0RnYWxheHlpbnN0YW5j ZSkuCi0KLSAgICpFeGFtcGxlKjoKLSAgIGBgYHB5dGhvbgotICAgICAgZnJvbSBiaW9ibGVuZC5n YWxheHkuaGlzdG9yaWVzIGltcG9ydCBIaXN0b3J5Q2xpZW50Ci0gICAgICBnaSA9M0QgZ2V0X2dh bGF4eV9jb25uZWN0aW9uKCkKLSAgICAgIGhjID0zRCBIaXN0b3J5Q2xpZW50KCBnaSApCi0gICAg ICBmb3IgZGF0YXNldCBpbiBoYy5zaG93X2hpc3RvcnkoIEhJU1RPUllfSUQgLCBjb250ZW50cz0z RFRydWUpICk6Ci0gICAgICAgICBwcmludCggZGF0YXNldFsnaWQnXSApCi0gICBgYGAKLQotCi1T ZWN1cml0eQotPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0KLUJ5IGRlZmF1bHQsIG5vIHNlY3Vy aXR5IHR1cm5lZCBvbi4gVG8gZG8gdGhpcywgeW91IG11c3QgYWRqdXN0IHR3byB2YXJpYWJsPQpl cywgYGFwYWNoZV91cmxzYCBhbmQKLWBwYXNzd29yZF9hdXRoYCBpbiB0aGUgY29uZmlndXJhdGlv biBmaWxlIChgY29uZmlnL2lweXRob24uY29uZmApLj0yMAotCi1UaGUgYGFwYWNoZV91cmxzYCB2 YXJpYWJsZSBzaG91bGQgYmUgc2V0IHRvIGBUcnVlYCwgYW5kIGNvbnRhaW5lcnMgc2hvdWxkID0K YmUgc2VjdXJlZCB2aWEgQXBhY2hlK1NTTCBmb3IgcHJvZHVjdGlvbiB1c2FnZS4gUGxlYXNlIHNl ZSB0aGUgW3NldHVwXShJTlNUPQpBTEwubWQpIGRvY3VtZW50IGZvciBtb3JlIGluZm9ybWF0aW9u LgotCi1UaGUgYHBhc3N3b3JkX2F1dGhgIHZhcmlhYmxlIHNob3VsZCBiZSBzZXQgdG8gYFRydWVg LiBJdCBmdW5jdGlvbnMgYnkgZ2VuZT0KcmF0aW5nIGEgcmFuZG9tIHBhc3N3b3JkIHdoaWNoIGlz IG9ubHkgc2hhcmVkIHdpdGggdGhlIGRvY2tlciwgYW5kIHRoZSB1c2VyPQoncyBicm93c2VyIHRo cm91Z2ggR2FsYXh5LiBJbiB0aGVvcnkgdGhpcyBzaG91bGQgYmUgYSBzZWN1cmUgc3lzdGVtIChv ciBhdCA9CmxlYXN0IGFzIHNlY3VyZSBhcyB0aGUgd2Vha2VzdCBsaW5rKSwgaG93ZXZlciBpZiB5 b3UgZmluZCBhIHZ1bG5lcmFiaWxpdHkgaT0KbiB0aGUgc3lzdGVtIHdlJ3ZlIGRldmlzZWQsIHBs ZWFzZSBjb250YWN0IHVzIGFuZCB3ZSdsbCBwYXRjaCBpdCBhcyBzb29uIGFzPQogcG9zc2libGUh Ci0KLQotQXV0aG9ycwotPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0KLSAqIEJqPUMzPUI2cm4gR3I9 QzM9QkNuaW5nIDxiam9lcm4uZ3J1ZW5pbmdAZ21haWwuY29tPgotICogRXJpYyBSYXNjaGUgPHJh c2NoZS5lcmljQHlhbmRleC5ydT4KLQotCi1IaXN0b3J5Ci09M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QK LQotLSB2MC4xOiBJbml0aWFsIHB1YmxpYyByZWxlYXNlICgwMS4wOC4yMDE0KQotCi0KLUxpY2Vu Y2UgKE1JVCkKLT0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAotCi1QZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYSBjbz0KcHkKLW9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkPQplYWwKLWluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy aWdoPQp0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl ZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu Ci0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlI9Ck9NLAotT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ TgotVEhFIFNPRlRXQVJFLgoKZGlmZiAtciBmNzBlZjIxYzQ4NTU5MGE5ZDFiMWVjOTJjMjJjMWIx NTI0Mjc1NjQ0IC1yIDRiMmVmYjcwM2U4NjJjMWM4ZDdkMmEzPQo5ZGY2YWQ5NzhlYTA0YWY3ZCBj b25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9zdGF0aWMvaW09 CmFnZXMvaXB5dGhvbl9pbl9nYWxheHkucG5nCkJpbmFyeSBmaWxlIGNvbmZpZy9wbHVnaW5zL2lu dGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3N0YXRpYy9pbWFnZXMvaT0KcHl0aG9uX2lu X2dhbGF4eS5wbmcgaGFzIGNoYW5nZWQKCmRpZmYgLXIgZjcwZWYyMWM0ODU1OTBhOWQxYjFlYzky YzIyYzFiMTUyNDI3NTY0NCAtciA0YjJlZmI3MDNlODYyYzFjOGQ3ZDJhMz0KOWRmNmFkOTc4ZWEw NGFmN2QgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vc3Rh dGljL2ltPQphZ2VzL3N0YXJ0X2lweXRob24ucG5nCkJpbmFyeSBmaWxlIGNvbmZpZy9wbHVnaW5z L2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3N0YXRpYy9pbWFnZXMvcz0KdGFydF9p cHl0aG9uLnBuZyBoYXMgY2hhbmdlZAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2Fs YXh5LWNlbnRyYWwvY29tbWl0cy83MGY3ZmY4YzZhOTYvCkNoYW5nZXNldDogICA3MGY3ZmY4YzZh OTYKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNC0xMC0yMCAyMToyMjoy NyswMDowMApTdW1tYXJ5OiAgICAgTWVyZ2VkIGluIGptY2hpbHRvbi9nYWxheHktY2VudHJhbC1p ZSAocHVsbCByZXF1ZXN0ICM1MzMpCgpJbnRlcmFjdGl2ZSBFbnZpcm9ubWVudHMgUGx1Z2luIEZy YW1ld29yayB3aXRoIElQeXRob24gUGx1Z2luCkFmZmVjdGVkICM6ICAzNSBmaWxlcwoKZGlmZiAt ciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5 NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvZ2Fs YXh5LmludGVyYWN0aXZlX2Vudmlyb25tZW50cy5qcwotLS0gL2Rldi9udWxsCisrKyBiL2NsaWVu dC9nYWxheHkvc2NyaXB0cy9nYWxheHkuaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmpzCkBAIC0w LDAgKzEsNTkgQEAKKy8qKgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcmVtb3ZlIGNvbnRlbnQg ZnJvbSB0aGUgbWFpbiBhcmVhIGFuZCBhZGQgdGhlIG5vdGU9CmJvb2suCisgKiBOb3QgaWRlbXBv dGVudAorICovCitmdW5jdGlvbiBhcHBlbmRfbm90ZWJvb2sodXJsKXsKKyAgICBjbGVhcl9tYWlu X2FyZWEoKTsKKyAgICAkKCcjbWFpbicpLmFwcGVuZCgnPGlmcmFtZSBmcmFtZUJvcmRlcj0zRCIw IiBzZWFtbGVzcz0zRCJzZWFtbGVzcyIgc3R5PQpsZT0zRCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAx MDAlOyBvdmVyZmxvdzpoaWRkZW47IiBzY3JvbGxpbmc9M0Qibm8iIHNyYz0zRCI9CicrIHVybCAr JyI+PC9pZnJhbWU+JworICAgICk7Cit9CisKK2Z1bmN0aW9uIGNsZWFyX21haW5fYXJlYSgpewor ICAgICQoJyNzcGlubmVyJykucmVtb3ZlKCk7CisgICAgJCgnI21haW4nKS5jaGlsZHJlbigpLnJl bW92ZSgpOworfQorCitmdW5jdGlvbiBkaXNwbGF5X3NwaW5uZXIoKXsKKyAgICAgICAgJCgnI21h aW4nKS5hcHBlbmQoJzxpbWcgaWQ9M0Qic3Bpbm5lciIgc3JjPTNEIicgKyBnYWxheHlfcm9vdCAr ICcvPQpzdGF0aWMvc3R5bGUvbGFyZ2VzcGlubmVyLmdpZiIgc3R5bGU9M0QicG9zaXRpb246YWJz b2x1dGU7bWFyZ2luOmF1dG87dG9wOjA9CjtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDsiPicpOwor fQorCisKKy8qKgorICogVGVzdCBhdmFpbGFiaWxpdHkgb2YgYSBVUkwsIGFuZCBjYWxsIGEgY2Fs bGJhY2sgd2hlbiBkb25lLgorICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMjUzOTAyMDYv MzQ3MzY4CisgKiBAcGFyYW0ge1N0cmluZ30gdXJsOiBVUkwgdG8gdGVzdCBhdmFpbGFiaWxpdHkg b2YuIE11c3QgcmV0dXJuIGEgMjAwICgzMD0KMi0+MjAwIGlzIE9LKS4KKyAqIEBwYXJhbSB7U3Ry aW5nfSBjYWxsYmFjazogZnVuY3Rpb24gdG8gY2FsbCBvbmNlIHN1Y2Nlc3NmdWxseSBjb25uZWN0 ZWQuCisgKgorICovCitmdW5jdGlvbiB0ZXN0X2llX2F2YWlsYWJpbGl0eSh1cmwsIHN1Y2Nlc3Nf Y2FsbGJhY2speworICAgIHZhciByZXF1ZXN0X2NvdW50ID0zRCAwOworICAgIGRpc3BsYXlfc3Bp bm5lcigpOworICAgIGludGVydmFsID0zRCBzZXRJbnRlcnZhbChmdW5jdGlvbigpeworICAgICAg ICAkLmFqYXgoeworICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICB4aHJGaWVsZHM6 IHsKKyAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUKKyAgICAgICAgICAgIH0s CisgICAgICAgICAgICB0eXBlOiAiR0VUIiwKKyAgICAgICAgICAgIHRpbWVvdXQ6IDUwMCwKKyAg ICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCl7CisgICAgICAgICAgICAgICAgY29uc29sZS5s b2coIkNvbm5lY3RlZCB0byBJRSwgcmV0dXJuaW5nIik7CisgICAgICAgICAgICAgICAgY2xlYXJJ bnRlcnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgc3VjY2Vzc19jYWxsYmFjaygpOwor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihqcXhociwgc3RhdHVz LCBlcnJvcil7CisgICAgICAgICAgICAgICAgcmVxdWVzdF9jb3VudCsrOworICAgICAgICAgICAg ICAgIGNvbnNvbGUubG9nKCJSZXF1ZXN0ICIgKyByZXF1ZXN0X2NvdW50KTsKKyAgICAgICAgICAg ICAgICBpZihyZXF1ZXN0X2NvdW50ID4gMzApeworICAgICAgICAgICAgICAgICAgICBjbGVhcklu dGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJfbWFpbl9hcmVhKCk7 CisgICAgICAgICAgICAgICAgICAgIHRvYXN0ci5lcnJvcigKKyAgICAgICAgICAgICAgICAgICAg ICAgICJDb3VsZCBub3QgY29ubmVjdCB0byBJRSwgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0PQpv ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3IiLAorICAgICAgICAgICAgICAgICAg ICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMjAwMDAsICd0YXBUb0Rpc209 Cmlzcyc6IGZhbHNlfQorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSwgMTAwMCk7Cit9CgpkaWZmIC1yIDM1 YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRl NmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGNvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwuc2Ft cGxlCi0tLSBhL2NvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwuc2FtcGxlCisrKyBiL2NvbmZpZy9k YXRhdHlwZXNfY29uZi54bWwuc2FtcGxlCkBAIC0yNDksNiArMjQ5LDggQEAKICAgICA8ZGF0YXR5 cGUgZXh0ZW5zaW9uPTNEInNucG1hdHJpeCIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLmdlbmV0 aWNzOlNOPQpQTWF0cml4IiBkaXNwbGF5X2luX3VwbG9hZD0zRCJ0cnVlIi8+PGRhdGF0eXBlIGV4 dGVuc2lvbj0zRCJ4bHMiIHR5cGU9M0QiZ2E9CmxheHkuZGF0YXR5cGVzLnRhYnVsYXI6VGFidWxh ciIvPjwhLS0gRW5kIFJHZW5ldGljcyBEYXRhdHlwZXMgLS0+CisgICAgPGRhdGF0eXBlIGV4dGVu c2lvbj0zRCJpcHluYiIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLnRleHQ6SXB5bmIiIGRpcz0K cGxheV9pbl91cGxvYWQ9M0QiVHJ1ZSIgLz4KKyAgICA8ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEImpz b24iIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0Okpzb24iIGRpc3BsPQpheV9pbl91cGxv YWQ9M0QiVHJ1ZSIgLz48IS0tIGdyYXBoIGRhdGF0eXBlcyAtLT48ZGF0YXR5cGUgZXh0ZW5zaW9u PTNEInhnbW09CmwiIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5ncmFwaDpYZ21tbCIgZGlzcGxh eV9pbl91cGxvYWQ9M0QidHJ1ZSIvPjxkYXRhdD0KeXBlIGV4dGVuc2lvbj0zRCJzaWYiIHR5cGU9 M0QiZ2FsYXh5LmRhdGF0eXBlcy5ncmFwaDpTaWYiIGRpc3BsYXlfaW5fdXBsb2FkPQo9M0QidHJ1 ZSIvPgpAQCAtMjkyLDYgKzI5NCw4IEBACiAgICAgPHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuZGF0 YXR5cGVzLnRhYnVsYXI6U2FtIi8+PHNuaWZmZXIgdHlwZT0zRCJnYWxheD0KeS5kYXRhdHlwZXMu ZGF0YTpOZXdpY2siLz48c25pZmZlciB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuZGF0YTpOZXh1 cyIvPgorICAgIDxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0OklweW5iIi8+ CisgICAgPHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLnRleHQ6SnNvbiIvPjxzbmlm ZmVyIHR5cGU9M0QiZ2FsYXh5Lj0KZGF0YXR5cGVzLmltYWdlczpKcGciLz48c25pZmZlciB0eXBl PTNEImdhbGF4eS5kYXRhdHlwZXMuaW1hZ2VzOlBuZyIvPjxzbmlmPQpmZXIgdHlwZT0zRCJnYWxh eHkuZGF0YXR5cGVzLmltYWdlczpUaWZmIi8+CgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRi ZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUy Y2M1YWQyYjA0IGNvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQotLS0gYS9jb25maWcvZ2FsYXh5Lmlu aS5zYW1wbGUKKysrIGIvY29uZmlnL2dhbGF4eS5pbmkuc2FtcGxlCkBAIC0yMjEsOSArMjIxLDE1 IEBACj0yMAogIyBWaXN1YWxpemF0aW9ucyBjb25maWcgZGlyZWN0b3J5OiB3aGVyZSB0byBsb29r IGZvciBpbmRpdmlkdWFsIHZpc3VhbGl6YXQ9CmlvbiBwbHVnaW5zLgogIyBUaGUgcGF0aCBpcyBy ZWxhdGl2ZSB0byB0aGUgR2FsYXh5IHJvb3QgZGlyLiBUbyB1c2UgYW4gYWJzb2x1dGUgcGF0aCBi ZWc9CmluIHRoZSBwYXRoCi0jIHdpdGggJy8nLiBEZWZhdWx0cyB0byAiY29uZmlnL3BsdWdpbnMv dmlzdWFsaXphdGlvbnMiLgorIyB3aXRoICcvJy4gVGhpcyBpcyBhIGNvbW1hIHNlcGFyYXRlZCBs aXN0LiBEZWZhdWx0cyB0byAiY29uZmlnL3BsdWdpbnMvdmk9CnN1YWxpemF0aW9ucyIuCiAjdmlz dWFsaXphdGlvbl9wbHVnaW5zX2RpcmVjdG9yeSA9M0QgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXph dGlvbnMKPTIwCisjIEludGVyYWN0aXZlIGVudmlyb25tZW50IHBsdWdpbnMgcm9vdCBkaXJlY3Rv cnk6IHdoZXJlIHRvIGxvb2sgZm9yIGludGVyYT0KY3RpdmUgZW52aXJvbm1lbnQKKyMgcGx1Z2lu cy4gQnkgZGVmYXVsdCBub25lIHdpbGwgYmUgbG9hZGVkLiBTZXQgdG8gY29uZmlnL3BsdWdpbnMv aW50ZXJhY3RpPQp2ZV9lbnZpcm9ubWVudHMKKyMgdG8gbG9hZCBHYWxheHkncyBzdG9jayBwbHVn aW5zIChjdXJyZW50bHkganVzdCBJUHl0aG9uKS4gVGhlc2Ugd2lsbCByZXF1PQppcmUgRG9ja2Vy CisjIHRvIGJlIGNvbmZpZ3VyZWQgYW5kIGhhdmUgc2VjdXJpdHkgY29uc2lkZXJhdGlvbnMgc28g cHJvY2VlZCB3aXRoIGNhdXRpbz0Kbi4KKyNpbnRlcmFjdGl2ZV9lbnZpcm9ubWVudF9wbHVnaW5z X2RpcmVjdG9yeSA9M0Q9MjAKKwogIyBFYWNoIGpvYiBpcyBnaXZlbiBhIHVuaXF1ZSBlbXB0eSBk aXJlY3RvcnkgYXMgaXRzIGN1cnJlbnQgd29ya2luZyBkaXJlY3Q9Cm9yeS4KICMgVGhpcyBvcHRp b24gZGVmaW5lcyBpbiB3aGF0IHBhcmVudCBkaXJlY3RvcnkgdGhvc2UgZGlyZWN0b3JpZXMgd2ls bCBiZQogIyBjcmVhdGVkLgpAQCAtNDIxLDYgKzQyNywxMSBAQAogIyAtICRpc284NjAxIChjb21w bGV0ZSBmb3JtYXQgc3RyaW5nIGFzIHNwZWNpZmllZCBieSBJU08gODYwMSBpbnRlcm5hdGlvbmE9 Cmwgc3RhbmRhcmQpLgogIyBwcmV0dHlfZGF0ZXRpbWVfZm9ybWF0ID0zRCAkbG9jYWxlIChVVEMp Cj0yMAorIyBVUkwgKHdpdGggc2NoZW1hIGh0dHAvaHR0cHMpIG9mIHRoZSBHYWxheHkgaW5zdGFu Y2UgYXMgYWNjZXNzaWJsZSB3aXRoaW49CiB5b3VyIGxvY2FsCisjIG5ldHdvcmsgLSBpZiBzcGVj aWZpZWQgdXNlZCBhcyBhIGRlZmF1bHQgYnkgcHVsc2FyIGZpbGUgc3RhZ2luZyBhbmQgSVB5dD0K aG9uIGRvY2tlcgorIyBjb250YWluZXIgZm9yIGNvbW11bmljYXRpbmcgYmFjayB3aXRoIEdhbGF4 eSB2aWEgdGhlIEFQSS4KKyNnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsID0zRCBodHRwOi8vbG9j YWxob3N0OjgwODAKKwogIyBUaGUgVVJMIG9mIHRoZSBwYWdlIHRvIGRpc3BsYXkgaW4gR2FsYXh5 J3MgbWlkZGxlIHBhbmUgd2hlbiBsb2FkZWQuIFRoaXM9CiBjYW4gYmU9MjAKICMgYW4gYWJzb2x1 dGUgb3IgcmVsYXRpdmUgVVJMLgogI3dlbGNvbWVfdXJsID0zRCAvc3RhdGljL3dlbGNvbWUuaHRt bApAQCAtNTE3LDYgKzUyOCwyNiBAQAogIyByZXF1ZXN0cy4KICNuZ2lueF91cGxvYWRfcGF0aCA9 M0QgRmFsc2UKPTIwCisjIEhhdmUgR2FsYXh5IG1hbmFnZSBkeW5hbWljIHByb3h5IGNvbXBvbmVu dCBmb3Igcm91dGluZyByZXF1ZXN0cyB0byBvdGhlcgorIyBzZXJ2aWNlcyBiYXNlZCBvbiBHYWxh eHkncyBzZXNzaW9uIGNvb2tpZS4gSXQgd2lsbCBhdHRlbXB0IHRvIGRvIHRoaXMgYnkKKyMgZGVm YXVsdCB0aG91Z2ggeW91IGRvIG5lZWQgdG8gaW5zdGFsbCBub2RlK25wbSBhbmQgZG8gYW4gbnBt IGluc3RhbGwgZnJvbQorIyBgbGliL2dhbGF4eS93ZWIvcHJveHkvanNgLiBJdCBpcyBnZW5lcmFs bHkgbW9yZSByb2J1c3QgdG8gY29uZmlndXJlIHRoaXMKKyMgZXh0ZXJuYWxseSBtYW5hZ2luZyBp dCBob3dldmVyIEdhbGF4eSBpcyBtYW5hZ2VkLiBJZiBUcnVlIEdhbGF4eSB3aWxsIG9uPQpseQor IyBsYXVuY2ggdGhlIHByb3h5IGlmIGl0IGlzIGFjdHVhbGx5IGdvaW5nIHRvIGJlIHVzZWQgKGUu Zy4gZm9yIElQeXRob24pLgorI2R5bmFtaWNfcHJveHlfbWFuYWdlPTNEVHJ1ZQorCisjIER5bmFt aWMgcHJveHkgY2FuIHVzZSBhbiBTUUxpdGUgZGF0YWJhc2Ugb3IgYSBKU09OIGZpbGUgZm9yIElQ Qywgc2V0IHRoYXQKKyMgaGVyZS4KKyNkeW5hbWljX3Byb3h5X3Nlc3Npb25fbWFwPTNEZGF0YWJh c2Uvc2Vzc2lvbl9tYXAuc3FsaXRlCisKKyMgU2V0IHRoZSBwb3J0IGFuZCBJUCBmb3IgdGhlIHRo ZSBkeW5hbWljIHByb3h5IHRvIGJpbmQgdG8sIHRoaXMgbXVzdCBtYXRjaAorIyB0aGUgZXh0ZXJu YWwgY29uZmlndXJhdGlvbiBpZiBkeW5hbWljX3Byb3h5X21hbmFnZSBpcyBGYWxzZS4KKyNkeW5h bWljX3Byb3h5X2JpbmRfcG9ydD0zRDg4MDAKKyNkeW5hbWljX3Byb3h5X2JpbmRfaXA9M0QwLjAu MC4wCisKKyMgRW5hYmxlIHZlcmJvc2UgZGVidWdnaW5nIG9mIEdhbGF4eS1tYW5hZ2VkIGR5bmFt aWMgcHJveHkuCisjZHluYW1pY19wcm94eV9kZWJ1Zz0zREZhbHNlCisKICMgLS0gTG9nZ2luZyBh bmQgRGVidWdnaW5nCj0yMAogIyBWZXJib3NpdHkgb2YgY29uc29sZSBsb2cgbWVzc2FnZXMuICBB Y2NlcHRhYmxlIHZhbHVlcyBjYW4gYmUgZm91bmQgaGVyZToKQEAgLTU0OSw2ICs1ODAsMTIgQEAK ICMgYnkgc2V0dGluZyB0aGUgZm9sbG93aW5nIG9wdGlvbiB0byBUcnVlLgogI3NlcnZlX3hzc192 dWxuZXJhYmxlX21pbWV0eXBlcyA9M0QgRmFsc2UKPTIwCisjIFNldCB0aGUgZm9sbG93aW5nIHRv IFRydWUgdG8gdXNlIGlweXRob24gbmJjb252ZXJ0IHRvIGJ1aWxkIEhUTUwgZnJvbSBJUD0KeXRo b24KKyMgbm90ZWJvb2tzIGluIEdhbGF4eSBoaXN0b3JpZXMuIFRoaXMgcHJvY2VzcyBtYXkgYWxs b3cgdXNlcnMgdG8gZXhlY3V0ZSBhPQpyYml0cmFyeQorIyBjb2RlIG9yIHNlcnZlIGFyYml0cmFy eSBIVE1MLiBJZiBlbmFibGVkIGlweXRob24gbXVzdCBiZSBhdmFpbGFibGUgYW5kIG89Cm4gR2Fs YXh5J3MKKyMgUEFUSCwgdG8gZG8gdGhpcyBydW4gYHBpcCBpbnN0YWxsIGppbmphMiBweWdtZW50 cyBpcHl0aG9uYCBpbiBHYWxheHkncyB2PQppcnR1YWxlbnYuCisjdHJ1c3RfaXB5dGhvbl9ub3Rl Ym9va19jb252ZXJzaW9uID0zRCBGYWxzZQorCiAjIERlYnVnIGVuYWJsZXMgYWNjZXNzIHRvIHZh cmlvdXMgY29uZmlnIG9wdGlvbnMgdXNlZnVsIGZvciBkZXZlbG9wbWVudCBhbmQKICMgZGVidWdn aW5nOiB1c2VfbGludCwgdXNlX3Byb2ZpbGUsIHVzZV9wcmludGRlYnVnIGFuZCB1c2VfaW50ZXJh Y3RpdmUuICBJdAogIyBhbHNvIGNhdXNlcyB0aGUgZmlsZXMgdXNlZCBieSBQQlMvU0dFIChzdWJt aXNzaW9uIHNjcmlwdCwgb3V0cHV0LCBhbmQgZXI9CnJvcikKCmRpZmYgLXIgMzVjMTM5MmIwNDlj YmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0K NjJkNjQxNTJjYzVhZDJiMDQgY29uZmlnL2pvYl9jb25mLnhtbC5zYW1wbGVfYWR2YW5jZWQKLS0t IGEvY29uZmlnL2pvYl9jb25mLnhtbC5zYW1wbGVfYWR2YW5jZWQKKysrIGIvY29uZmlnL2pvYl9j b25mLnhtbC5zYW1wbGVfYWR2YW5jZWQKQEAgLTUwLDcgKzUwLDkgQEAKICAgICAgICAgICA8IS0t IEFNUVAgVVJMIHRvIGNvbm5lY3QgdG8uIC0tPjxwYXJhbSBpZD0zRCJhbXFwX3VybCI+YW1xcDov L2d1PQplc3Q6Z3Vlc3RAbG9jYWxob3N0OjU2NzIvLzwvcGFyYW0+PCEtLSBVUkwgcmVtb3RlIFB1 bHNhciBhcHBzIHNob3VsZCB0cmFuc2Y9CmVyIGZpbGVzIHRvIHRoaXMgR2FsYXh5Ci0gICAgICAg ICAgICAgICBpbnN0YW5jZSB0by9mcm9tLiAtLT4KKyAgICAgICAgICAgICAgIGluc3RhbmNlIHRv L2Zyb20uIFRoaXMgY2FuIGJlIHVuc3BlY2lmaWVkL2VtcHR5IGlmCisgICAgICAgICAgICAgICBn YWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJsIGlzIHNldCBpbiBnYWxheHkuaW5pLgorICAgICAgICAg IC0tPjxwYXJhbSBpZD0zRCJnYWxheHlfdXJsIj5odHRwOi8vbG9jYWxob3N0OjgwODA8L3BhcmFt PjwhLS0gUHU9CmxzYXIgam9iIG1hbmFnZXIgdG8gY29tbXVuaWNhdGUgd2l0aCAoc2VlIFB1bHNh cgogICAgICAgICAgICAgICAgZG9jcyBmb3IgaW5mb3JtYXRpb24gb24gam9iIG1hbmFnZXJzKS4g LS0+CgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIg NzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGNvbmZpZy9wbHVnaW5z L2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9jb21tb24vdGVtcGxhdGVzLz0KaWUubWFrbwotLS0g L2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9j b21tb24vdGVtcGxhdGVzL2llLm1ha28KQEAgLTAsMCArMSwzMSBAQAorPCVkZWYgbmFtZT0zRCJk ZWZhdWx0X2phdmFzY3JpcHRfdmFyaWFibGVzKCkiPgorLy8gR2xvYmFscworCisvLyBGb2xsb3dp bmcgdGhyZWUgYXJlIGZvciBvbGRlci1zdHlsZSBJRSBwcm94aWVzLCBuZXdlciBkeW5hbWljIEdh bGF4eSBwcj0Kb3h5CisvLyBkb2VzIG5vdCB1c2UgdGhlc2UuCitpZV9wYXNzd29yZF9hdXRoID0z RCAkeyBpZV9yZXF1ZXN0LmphdmFzY3JpcHRfYm9vbGVhbihpZV9yZXF1ZXN0LmF0dHIuUEFTUz0K V09SRF9BVVRIKSB9OworaWVfYXBhY2hlX3VybHMgPTNEICR7IGllX3JlcXVlc3QuamF2YXNjcmlw dF9ib29sZWFuKGllX3JlcXVlc3QuYXR0ci5BUEFDSEU9Cl9VUkxTKSB9OworaWVfcGFzc3dvcmQg PTNEICckeyBpZV9yZXF1ZXN0LmF0dHIubm90ZWJvb2tfcHcgfSc7CisKKwordmFyIGdhbGF4eV9y b290ID0zRCAnJHsgaWVfcmVxdWVzdC5hdHRyLnJvb3QgfSc7Cit2YXIgYXBwX3Jvb3QgPTNEICck eyBpZV9yZXF1ZXN0LmF0dHIuYXBwX3Jvb3QgfSc7Cis8LyVkZWY+CisKKworPCVkZWYgbmFtZT0z RCJsb2FkX2RlZmF1bHRfanMoKSI+Ciske2guY3NzKCAnYmFzZScgKSB9Ciske2guanMoICdsaWJz L2pxdWVyeS9qcXVlcnknLAorICAgICAgICAnbGlicy90b2FzdHInLAorICAgICAgICAnbGlicy9y ZXF1aXJlJyl9Cis8LyVkZWY+CisKKzwlZGVmIG5hbWU9M0QicGx1Z2luX3JlcXVpcmVfY29uZmln KCkiPgorcmVxdWlyZS5jb25maWcoeworICAgIGJhc2VVcmw6IGFwcF9yb290LAorICAgIHBhdGhz OiB7CisgICAgICAgICJwbHVnaW4iIDogYXBwX3Jvb3QgKyAianMvIiwKKyAgICAgICAgImludGVy YWN0aXZlX2Vudmlyb25tZW50cyI6ICIke2gudXJsX2ZvcignL3N0YXRpYy9zY3JpcHRzL2dhbGF4 eS5pPQpudGVyYWN0aXZlX2Vudmlyb25tZW50cycpfSIsCisgICAgfSwKK30pOworPC8lZGVmPgoK ZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1yIDcwZjdm ZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBjb25maWcvcGx1Z2lucy9pbnRl cmFjdGl2ZV9lbnZpcm9ubWVudHMvaW50ZXJhY3RpdmVfZW52aXI9Cm9ubWVudHMuZHRkCi0tLSAv ZGV2L251bGwKKysrIGIvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lu dGVyYWN0aXZlX2Vudmlyb25tZW50cy5kdGQKQEAgLTAsMCArMSwxIEBACisuLi92aXN1YWxpemF0 aW9ucy92aXN1YWxpemF0aW9uLmR0ZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYg LXIgMzVjMTM5MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZh OTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3Rp dmVfZW52aXJvbm1lbnRzL2lweXRob24vY29uZmlnL2lwPQp5dGhvbi5pbmkuc2FtcGxlCi0tLSAv ZGV2L251bGwKKysrIGIvY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lw eXRob24vY29uZmlnL2lweXRob24uaW5pLnNhPQptcGxlCkBAIC0wLDAgKzEsMTYgQEAKK1ttYWlu XQorCisjIEZvbGxvd2luZyBvcHRpb25zIGFyZSBpZ25vcmVkIGlmIHVzaW5nIHRoZSBHYWxheHkg ZHluYW1pYyBwcm94eSBidXQKKyMgYXJlIHVzZWZ1bCBpZiBtYXBwaW5nIGEgcmFuZ2Ugb2YgcG9y dHMgZm9yIGVudmlyb25tZW50IGNvbnN1bXB0aW9uLgorI2FwYWNoZV91cmxzID0zRCBGYWxzZQor I3Bhc3N3b3JkX2F1dGggPTNEIEZhbHNlCisjc3NsID0zRCBGYWxzZQorCitbZG9ja2VyXQorY29t bWFuZCA9M0QgZG9ja2VyCitpbWFnZSA9M0QgYmdydWVuaW5nL2RvY2tlci1pcHl0aG9uLW5vdGVi b29rCisKKyMgVVJMIHRvIGFjY2VzcyB0aGUgR2FsYXh5IEFQSSB3aXRoIGZyb20gdGhlIHNwYXdu IERvY2tlciBjb250YWludGVyLCBpZiBlPQptcHR5CisjIHRoaXMgZmFsbHMgYmFjayB0byBnYWxh eHkuaW5pJ3MgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybCBhbmQgZmluYWxseSB0bz0KIHRoZQor IyBEb2NrZXIgaG9zdCBvZiB0aGUgc3Bhd25lZCBjb250YWluZXIgaWYgdGhhdCBpcyBhbHNvIG5v dCBzZXQuCisjZ2FsYXh5X3VybCA9M0Q9MjAKCmRpZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0NGJl MWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJj YzVhZDJiMDQgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24v Y29uZmlnL2lwPQp5dGhvbi54bWwKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWcvcGx1Z2lucy9p bnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi54bWwKQEAgLTAs MCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0zRCIxLjAiIGVuY29kaW5nPTNEIlVURi04Ij8+Cis8 IURPQ1RZUEUgaW50ZXJhY3RpdmVfZW52aXJvbm1lbnQgU1lTVEVNICIuLi8uLi9pbnRlcmFjdGl2 ZV9lbnZpcm9ubWVudHMuZD0KdGQiPgorPGludGVyYWN0aXZlX2Vudmlyb25tZW50IG5hbWU9M0Qi SVB5dGhvbiI+CisgICAgPGRhdGFfc291cmNlcz4KKyAgICAgICAgPGRhdGFfc291cmNlPgorICAg ICAgICAgICAgPG1vZGVsX2NsYXNzPkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb248L21vZGVsX2Ns YXNzPgorICAgICAgICAgICAgPHRlc3QgdHlwZT0zRCJpc2luc3RhbmNlIiB0ZXN0X2F0dHI9M0Qi ZGF0YXR5cGUiIHJlc3VsdF90eXBlPQo9M0QiZGF0YXR5cGUiPnRhYnVsYXIuVGFidWxhcjwvdGVz dD4KKyAgICAgICAgICAgIDx0ZXN0IHR5cGU9M0QiaXNpbnN0YW5jZSIgdGVzdF9hdHRyPTNEImRh dGF0eXBlIiByZXN1bHRfdHlwZT0KPTNEImRhdGF0eXBlIj5kYXRhLlRleHQ8L3Rlc3Q+CisgICAg ICAgICAgICA8dG9fcGFyYW0gcGFyYW1fYXR0cj0zRCJpZCI+ZGF0YXNldF9pZDwvdG9fcGFyYW0+ CisgICAgICAgIDwvZGF0YV9zb3VyY2U+CisgICAgPC9kYXRhX3NvdXJjZXM+CisgICAgPHBhcmFt cz4KKyAgICAgICAgPHBhcmFtIHR5cGU9M0QiZGF0YXNldCIgdmFyX25hbWVfaW5fdGVtcGxhdGU9 M0QiaGRhIiByZXF1aXJlZD0zRCJ0PQpydWUiPmRhdGFzZXRfaWQ8L3BhcmFtPgorICAgIDwvcGFy YW1zPgorICAgIDx0ZW1wbGF0ZT5pcHl0aG9uLm1ha288L3RlbXBsYXRlPgorPC9pbnRlcmFjdGl2 ZV9lbnZpcm9ubWVudD4KCmRpZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1Zjgz MTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQgY29u ZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vc3RhdGljL2pzPQov aXB5dGhvbi5qcwotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZl X2Vudmlyb25tZW50cy9pcHl0aG9uL3N0YXRpYy9qcy9pcHl0aG9uLmpzCkBAIC0wLDAgKzEsODUg QEAKK2Z1bmN0aW9uIG1lc3NhZ2VfZmFpbGVkX2F1dGgocGFzc3dvcmQpeworICAgIHRvYXN0ci5p bmZvKAorICAgICAgICAiQXV0b21hdGljIGF1dGhvcml6YXRpb24gZmFpbGVkLiBZb3UgY2FuIG1h bnVhbGx5IGxvZ2luIHdpdGg6PGJyPiI9CiArIHBhc3N3b3JkICsgIjxicj48YSBocmVmPTNEJ2h0 dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vdz0KaWtpL0F1dG9tYXRp Yy1BdXRob3JpemF0aW9uLUZhaWxlZCcgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSBkZXRhaWxzIC4u LjwvYT4iLAorICAgICAgICAiUGxlYXNlIGxvZ2luIG1hbnVhbGx5IiwKKyAgICAgICAgeydjbG9z ZUJ1dHRvbic6IHRydWUsICd0aW1lT3V0JzogMTAwMDAwLCAndGFwVG9EaXNtaXNzJzogZmFsc2V9 CisgICAgKTsKK30KKworZnVuY3Rpb24gbWVzc2FnZV9mYWlsZWRfY29ubmVjdGlvbigpeworICAg IHRvYXN0ci5lcnJvcigKKyAgICAgICAgIkNvdWxkIG5vdCBjb25uZWN0IHRvIElQeXRob24gTm90 ZWJvb2suIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pPQpzdHJhdG9yLiA8YSBocmVmPTNEJ2h0 dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRob24vd2lraS9Db3VsZC09Cm5v dC1jb25uZWN0LXRvLUlQeXRob24tTm90ZWJvb2snIHRhcmdldD0zRCdfYmxhbmsnPk1vcmUgZGV0 YWlscyAuLi48L2E+IiwKKyAgICAiU2VjdXJpdHkgd2FybmluZyIsCisgICAgICAgIHsnY2xvc2VC dXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtaXNzJzogdHJ1ZX0KKyAg ICApOworfQorCitmdW5jdGlvbiBtZXNzYWdlX25vX2F1dGgoKXsKKyAgICAvLyBObyBsb25nZXIg YSBzZWN1cml0eSBpc3N1ZSwgcHJveHkgdmFsaWRhdGVzIEdhbGF4eSBzZXNzaW9uIHRva2VuLgor ICAgIC8qCisgICAgdG9hc3RyLndhcm5pbmcoCisgICAgICAgICJJUHl0aG9uIE5vdGVib29rIHdh cyBsdW5jaGVkIHdpdGhvdXQgYXV0aGVudGljYXRpb24uIFRoaXMgaXMgYSBzZT0KY3VyaXR5IGlz c3VlLiA8YSBocmVmPTNEJ2h0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmcvZ2FsYXh5LWlweXRo b24vd2lraS9JPQpQeXRob24tTm90ZWJvb2std2FzLWx1bmNoZWQtd2l0aG91dC1hdXRoZW50aWNh dGlvbicgdGFyZ2V0PTNEJ19ibGFuayc+TW9yZSA9CmRldGFpbHMgLi4uPC9hPiIsCisgICAgICAg ICJTZWN1cml0eSB3YXJuaW5nIiwKKyAgICAgICAgeydjbG9zZUJ1dHRvbic6IHRydWUsICd0aW1l T3V0JzogMjAwMDAsICd0YXBUb0Rpc21pc3MnOiBmYWxzZX0KKyAgICApOworICAgICovCit9CisK KworLyoqCisgKiBMb2FkIGFuIGludGVyYWN0aXZlIGVudmlyb25tZW50IChJRSkgZnJvbSBhIHJl bW90ZSBVUkwKKyAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZDogcGFzc3dvcmQgdXNlZCB0byBh dXRoZW50aWNhdGUgdG8gdGhlIHJlbW90ZSByPQplc291cmNlCisgKiBAcGFyYW0ge1N0cmluZ30g bm90ZWJvb2tfbG9naW5fdXJsOiBVUkwgdGhhdCBzaG91bGQgYmUgUE9TVGVkIHRvIGZvciBsbz0K Z2luCisgKiBAcGFyYW0ge1N0cmluZ30gbm90ZWJvb2tfYWNjZXNzX3VybDogdGhlIFVSTCBlbWJl ZGVkIGluIHRoZSBwYWdlIGFuZCBsbz0KYWRlZAorICoKKyAqLworZnVuY3Rpb24gbG9hZF9ub3Rl Ym9vayhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsKXsK KyAgICAkKCBkb2N1bWVudCApLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgICAgICAvLyBUZXN0IG5v dGVib29rX2xvZ2luX3VybCBmb3IgYWNjZXNzaWJpbGl0eSwgZXhlY3V0aW5nIHRoZSBsb2dpbis9 CmxvYWQgZnVuY3Rpb24gd2hlbmV2ZXIKKyAgICAgICAgLy8gd2UndmUgc3VjY2Vzc2Z1bGx5IGNv bm5lY3RlZCB0byB0aGUgSUUuCisgICAgICAgIHRlc3RfaWVfYXZhaWxhYmlsaXR5KG5vdGVib29r X2xvZ2luX3VybCwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIF9oYW5kbGVfbm90ZWJvb2tfbG9h ZGluZyhwYXNzd29yZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9vPQprX2FjY2Vzc191cmwp OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworLyoqCisgKiBNdXN0IGJlIGltcGxlbWVudGVk IGJ5IElFcworICovCitmdW5jdGlvbiBfaGFuZGxlX25vdGVib29rX2xvYWRpbmcocGFzc3dvcmQs IG5vdGVib29rX2xvZ2luX3VybCwgbm90ZWJvb2tfYT0KY2Nlc3NfdXJsKXsKKyAgICBpZiAoIGll X3Bhc3N3b3JkX2F1dGggKSB7CisgICAgICAgIC8vIE1ha2UgYW4gQUpBWCBQT1NUCisgICAgICAg ICQuYWpheCh7CisgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCisgICAgICAgICAgICAvLyB0byB0 aGUgTG9naW4gVVJMCisgICAgICAgICAgICB1cmw6IG5vdGVib29rX2xvZ2luX3VybCwKKyAgICAg ICAgICAgIC8vIFdpdGggb3VyIHBhc3N3b3JkCisgICAgICAgICAgICBkYXRhOiB7CisgICAgICAg ICAgICAgICAgJ3Bhc3N3b3JkJzogcGFzc3dvcmQKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg ICB4aHJGaWVsZHM6IHsKKyAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUKKyAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAvLyBJZiB0aGF0IGlzIHN1Y2Nlc3NmdWwsIGxvYWQg dGhlIG5vdGVib29rCisgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpeworICAgICAgICAg ICAgICAgIGFwcGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKKyAgICAgICAgICAg IH0sCisgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oanF4aHIsIHN0YXR1cywgZXJyb3Ipewor ICAgICAgICAgICAgICAgIGlmKGllX3Bhc3N3b3JkX2F1dGggJiYgIWllX2FwYWNoZV91cmxzKXsK KyAgICAgICAgICAgICAgICAgICAgLy8gRmFpbHVyZSBoYXBwZW5zIGR1ZSB0byBDT1JTCisgICAg ICAgICAgICAgICAgICAgIG1lc3NhZ2VfZmFpbGVkX2F1dGgocGFzc3dvcmQpOworICAgICAgICAg ICAgICAgICAgICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgICAg ICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VfZmFpbGVkX2Nvbm5l Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gd2Ugd2FudCB0byB0cnkgYW5kIGxv YWQgdGhlIG5vdGVib29rIGFueXdheT8gSnVzPQp0IGluIGNhc2U/CisgICAgICAgICAgICAgICAg ICAgIGFwcGVuZF9ub3RlYm9vayhub3RlYm9va19hY2Nlc3NfdXJsKTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAg ICAgLy8gTm90IHVzaW5nIHBhc3N3b3JkIGF1dGgsIGp1c3QgZW1iZWQgaXQgdG8gYXZvaWQgY29u dGVudC1vcmlnaW4gPQppc3N1ZXMuCisgICAgICAgIG1lc3NhZ2Vfbm9fYXV0aCgpOworICAgICAg ICBhcHBlbmRfbm90ZWJvb2sobm90ZWJvb2tfYWNjZXNzX3VybCk7CisgICAgfQorfQoKZGlmZiAt ciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5 NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2 ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi90ZW1wbGF0ZXM9Ci9pcHl0aG9uLm1ha28KLS0tIC9kZXYv bnVsbAorKysgYi9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhv bi90ZW1wbGF0ZXMvaXB5dGhvbi5tYWtvCkBAIC0wLDAgKzEsNjEgQEAKKyA8JW5hbWVzcGFjZSBu YW1lPTNEImllIiBmaWxlPTNEImllLm1ha28iIC8+CisKKzwlCitpbXBvcnQgb3MKK2ltcG9ydCBz aHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKKworIyBTZXRzIElEIGFu ZCBzZXRzIHVwIGEgbG90IG9mIG90aGVyIHZhcmlhYmxlcworaWVfcmVxdWVzdC5sb2FkX2RlcGxv eV9jb25maWcoKQoraWVfcmVxdWVzdC5hdHRyLmRvY2tlcl9wb3J0ID0zRCA2Nzg5CisjIENyZWF0 ZSB0ZW1wZGlyIGluIGdhbGF4eQordGVtcF9kaXIgPTNEIG9zLnBhdGguYWJzcGF0aCggdGVtcGZp bGUubWtkdGVtcCgpICkKKyMgV3JpdGUgb3V0IGNvbmYgZmlsZS4uLm5lZWRzIHdvcmsKK2llX3Jl cXVlc3Qud3JpdGVfY29uZl9maWxlKHRlbXBfZGlyKQorCisjIyBJUHl0aG9uIFNwZWNpZmljCisj IFByZXBhcmUgYW4gZW1wdHkgbm90ZWJvb2sKK25vdGVib29rX2lkID0zRCBpZV9yZXF1ZXN0Lmdl bmVyYXRlX2hleCg2NCkKK3dpdGggb3Blbiggb3MucGF0aC5qb2luKCBpZV9yZXF1ZXN0LmF0dHIu b3VyX3RlbXBsYXRlX2RpciwgJ25vdGVib29rLmlweW5iPQonICksICdyJykgYXMgbmJfaGFuZGxl OgorICAgIGVtcHR5X25iID0zRCBuYl9oYW5kbGUucmVhZCgpCitlbXB0eV9uYiA9M0QgZW1wdHlf bmIgJSBub3RlYm9va19pZAorIyBDb3B5IG92ZXIgZGVmYXVsdCBub3RlYm9vaywgdW5sZXNzIHRo ZSBkYXRhc2V0IHRoaXMgdml6IGlzIHJ1bm5pbmcgb24gaXM9CiBhIG5vdGVib29rCitlbXB0eV9u Yl9wYXRoID0zRCBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICdpcHl0aG9uX2dhbGF4eV9ub3RlYm9v ay5pcHluYicpCitpZiBoZGEuZGF0YXR5cGUuX19jbGFzc19fLl9fbmFtZV9fICE9M0QgIklweW5i IjoKKyAgICB3aXRoIG9wZW4oIGVtcHR5X25iX3BhdGgsICd3KycgKSBhcyBoYW5kbGU6CisgICAg ICAgIGhhbmRsZS53cml0ZSggZW1wdHlfbmIgKQorZWxzZToKKyAgICBzaHV0aWwuY29weSggaGRh LmZpbGVfbmFtZSwgZW1wdHlfbmJfcGF0aCApCisKKworIyMgR2VuZXJhbCBJRSBzcGVjaWZpYwor IyBBY2Nlc3MgVVJMcyBmb3IgdGhlIG5vdGVib29rIGZyb20gd2l0aGluIGdhbGF4eS4KK25vdGVi b29rX2FjY2Vzc191cmwgPTNEIGllX3JlcXVlc3QudXJsX3RlbXBsYXRlKCcke1BST1hZX1VSTH0v aXB5dGhvbi8ke1BPPQpSVH0vbm90ZWJvb2tzL2lweXRob25fZ2FsYXh5X25vdGVib29rLmlweW5i JykKK25vdGVib29rX2xvZ2luX3VybCA9M0QgaWVfcmVxdWVzdC51cmxfdGVtcGxhdGUoJyR7UFJP WFlfVVJMfS9pcHl0aG9uLyR7UE9SPQpUfS9sb2dpbj9uZXh0PTNEJTJGaXB5dGhvbiUyRiR7UE9S VH0lMkZ0cmVlJykKKworZG9ja2VyX2NtZCA9M0QgaWVfcmVxdWVzdC5kb2NrZXJfY21kKHRlbXBf ZGlyKQorc3VicHJvY2Vzcy5jYWxsKGRvY2tlcl9jbWQsIHNoZWxsPTNEVHJ1ZSkKKyU+Cis8aHRt bD4KKzxoZWFkPgorJHsgaWUubG9hZF9kZWZhdWx0X2pzKCkgfQorPC9oZWFkPgorPGJvZHk+CisK KzxzY3JpcHQgdHlwZT0zRCJ0ZXh0L2phdmFzY3JpcHQiPgorJHsgaWUuZGVmYXVsdF9qYXZhc2Ny aXB0X3ZhcmlhYmxlcygpIH0KK3ZhciBub3RlYm9va19sb2dpbl91cmwgPTNEICckeyBub3RlYm9v a19sb2dpbl91cmwgfSc7Cit2YXIgbm90ZWJvb2tfYWNjZXNzX3VybCA9M0QgJyR7IG5vdGVib29r X2FjY2Vzc191cmwgfSc7CiskeyBpZS5wbHVnaW5fcmVxdWlyZV9jb25maWcoKSB9CisKKy8vIExv YWQgbm90ZWJvb2sKKworcmVxdWlyZWpzKFsnaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzJywgJ3Bs dWdpbi9pcHl0aG9uJ10sIGZ1bmN0aW9uKCl7CisgICAgbG9hZF9ub3RlYm9vayhpZV9wYXNzd29y ZCwgbm90ZWJvb2tfbG9naW5fdXJsLCBub3RlYm9va19hY2Nlc3NfdXJsKTsKK30pOworPC9zY3Jp cHQ+Cis8ZGl2IGlkPTNEIm1haW4iIHdpZHRoPTNEIjEwMCUiIGhlaWdodD0zRCIxMDAlIj4KKzwv ZGl2PgorPC9ib2R5PgorPC9odG1sPgoKZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNm MmQwNTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFk MmIwNCBjb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMvaXB5dGhvbi90ZW1w bGF0ZXM9Ci9ub3RlYm9vay5pcHluYgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy9wbHVnaW5z L2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL3RlbXBsYXRlcy9ub3RlYm9vay5pcD0K eW5iCkBAIC0wLDAgKzEsNDMgQEAKK3sKKyAibWV0YWRhdGEiOiB7CisgICJuYW1lIjogIiIsCisg ICJzaWduYXR1cmUiOiAic2hhMjU2OiVzIgorIH0sCisgIm5iZm9ybWF0IjogMywKKyAibmJmb3Jt YXRfbWlub3IiOiAwLAorICJ3b3Jrc2hlZXRzIjogWworICB7CisgICAiY2VsbHMiOiBbCisgICAg eworICAgICAiY2VsbF90eXBlIjogImhlYWRpbmciLAorICAgICAibGV2ZWwiOiAxLAorICAgICAi bWV0YWRhdGEiOiB7fSwKKyAgICAgInNvdXJjZSI6IFsKKyAgICAgICJXZWxjb21lIHRvIHRoZSBp bnRlcmFjdGl2ZSBHYWxheHkgSVB5dGhvbiBOb3RlYm9vay4iCisgICAgIF0KKyAgICB9LAorICAg IHsKKyAgICAgImNlbGxfdHlwZSI6ICJtYXJrZG93biIsCisgICAgICJtZXRhZGF0YSI6IHt9LAor ICAgICAic291cmNlIjogWworICAgICAgIllvdSBjYW4gYWNjZXNzIHlvdXIgZGF0YSB2aWEgdGhl IGRhdGFzZXQgbnVtYmVyLiBGb3IgZXhhbXBsZSwgYGBoYW49CmRsZSA9M0QgZ2V0KDQyKWBgLiIs CisgICAgICAiVG8gc2F2ZSBkYXRhLCB3cml0ZSB5b3VyIGRhdGEgdG8gYSBmaWxlLCBhbmQgdGhl biBjYWxsIGBgcHV0KCdmaWxlbj0KYW1lLnR4dCcpYGAuIFRoZSBkYXRhc2V0IHdpbGwgdGhlbiBi ZSBhdmFpbGFibGUgaW4geW91ciBnYWxheHkgaGlzdG9yeS4iLAorICAgICAgIk5vdGVib29rcyBj YW4gYmUgc2F2ZWQgdG8gR2FsYXh5IGJ5IGNsaWNraW5nIHRoZSBsYXJnZSBncmVlbiBidXR0b249 CiBhdCB0aGUgdG9wIHJpZ2h0IG9mIHRoZSBJUHl0aG9uIGludGVyZmFjZS48YnI+IiwKKyAgICAg ICJNb3JlIGhlbHAgYW5kIGluZm9ybWF0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIHByb2plY3Qg W3dlYnNpdGVdKGh0PQp0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZy9nYWxheHktaXB5dGhvbiku IgorICAgICBdCisgICAgfSwKKyAgICB7CisgICAgICJjZWxsX3R5cGUiOiAiY29kZSIsCisgICAg ICJjb2xsYXBzZWQiOiBmYWxzZSwKKyAgICAgImlucHV0IjogWworICAgICBdLAorICAgICAibGFu Z3VhZ2UiOiAicHl0aG9uIiwKKyAgICAgIm1ldGFkYXRhIjoge30sCisgICAgICJvdXRwdXRzIjog W10sCisgICAgICJwcm9tcHRfbnVtYmVyIjogMQorICAgIH0KKyAgIF0sCisgICAibWV0YWRhdGEi OiB7fQorICB9CisgXQorfQoKZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVm ODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBj b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9hZGRpdGlvbmFsX3RlbXBsYXRlX3BhdGhzLng9 Cm1sCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2FkZGl0aW9uYWxfdGVtcGxh dGVfcGF0aHMueG1sCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2FkZGl0aW9u YWxfdGVtcGxhdGVfcGF0aHMueG1sCkBAIC0yLDQgKzIsNSBAQAogPCEtLSB0aGVzZSByZWxhdGl2 ZSBwYXRocyBjYW4gY29udGFpbiBjb21tb24gdGVtcGxhdGVzIGltcG9ydGFibGUgYnkgYWxsIHY9 CmlzdWFsaXphdGlvbiBwbHVnaW5zIC0tPjxwYXRocz48cGF0aD5jb21tb24vdGVtcGxhdGVzPC9w YXRoPgorICAgIDxwYXRoPi4uL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9jb21tb24vdGVtcGxh dGVzPC9wYXRoPjwvcGF0aHM+CgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1 NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0 IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL3Zpc3VhbGl6YXRpb24uZHRkCi0tLSBhL2Nv bmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL3Zpc3VhbGl6YXRpb24uZHRkCisrKyBiL2NvbmZp Zy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL3Zpc3VhbGl6YXRpb24uZHRkCkBAIC0xLDUgKzEsNiBA QAogPCEtLSBlYWNoIHZpc3VhbGl6YXRpb24gbXVzdCBoYXZlIGEgdGVtcGxhdGUgKGFsbCBvdGhl ciBlbGVtZW50cyBhcmUgb3B0aW89Cm5hbCkgLS0+PCFFTEVNRU5UIHZpc3VhbGl6YXRpb24gKGRl c2NyaXB0aW9uKixkYXRhX3NvdXJjZXMqLHBhcmFtcyosdGVtcGxhdD0KZV9yb290Kix0ZW1wbGF0 ZSxyZW5kZXJfdGFyZ2V0Kik+Cis8IUVMRU1FTlQgaW50ZXJhY3RpdmVfZW52aXJvbm1lbnQgKGRl c2NyaXB0aW9uKixkYXRhX3NvdXJjZXMqLHBhcmFtcyosdGVtcD0KbGF0ZV9yb290Kix0ZW1wbGF0 ZSxyZW5kZXJfdGFyZ2V0Kik+PCEtLSB2aXN1YWxpemF0aW9uCiAgICAgICAgIG5hbWU6IHRoZSB0 aXRsZS9kaXNwbGF5IG5hbWUgb2YgdGhlIHZpc3VhbGl6YXRpb24gKGUuZy4gJ1RyYWNrc3Rlcj0K JywgJ0Zhc3RxIFN0YXRzJywgZXRjLikgUkVRVUlSRUQKICAgICAgICAgZGlzYWJsZWQ6IGlmIGlu Y2x1ZGVkICh2YWx1ZSBkb2VzIG5vdCBtYXR0ZXIpLCB0aGlzIGF0dHJpYnV0ZSB3aWxsPQogcHJl dmVudCB0aGUgdmlzdWFsaXphdGlvbiBiZWluZyBsb2FkZWQKCmRpZmYgLXIgMzVjMTM5MmIwNDlj YmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0K NjJkNjQxNTJjYzVhZDJiMDQgbGliL2dhbGF4eS9hcHAucHkKLS0tIGEvbGliL2dhbGF4eS9hcHAu cHkKKysrIGIvbGliL2dhbGF4eS9hcHAucHkKQEAgLTE3LDYgKzE3LDcgQEAKIGZyb20gZ2FsYXh5 LnRvb2xzLmRhdGFfbWFuYWdlci5tYW5hZ2VyIGltcG9ydCBEYXRhTWFuYWdlcnMKIGZyb20gZ2Fs YXh5LmpvYnMgaW1wb3J0IG1ldHJpY3MgYXMgam9iX21ldHJpY3MKIGZyb20gZ2FsYXh5LndlYi5i YXNlIGltcG9ydCBwbHVnaW5mcmFtZXdvcmsKK2Zyb20gZ2FsYXh5LndlYi5wcm94eSBpbXBvcnQg UHJveHlNYW5hZ2VyCiBmcm9tIGdhbGF4eS5xdWV1ZV93b3JrZXIgaW1wb3J0IEdhbGF4eVF1ZXVl V29ya2VyCiBmcm9tIHRvb2xfc2hlZC5nYWxheHlfaW5zdGFsbCBpbXBvcnQgdXBkYXRlX3JlcG9z aXRvcnlfbWFuYWdlcgo9MjAKQEAgLTEzOCw2ICsxMzksNyBAQAogICAgICAgICAjIEZJWE1FOiBU aGVzZSBhcmUgZXhwb3NlZCBkaXJlY3RseSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAg ICAgICBzZWxmLmpvYl9xdWV1ZSA9M0Qgc2VsZi5qb2JfbWFuYWdlci5qb2JfcXVldWUKICAgICAg ICAgc2VsZi5qb2Jfc3RvcF9xdWV1ZSA9M0Qgc2VsZi5qb2JfbWFuYWdlci5qb2Jfc3RvcF9xdWV1 ZQorICAgICAgICBzZWxmLnByb3h5X21hbmFnZXIgPTNEIFByb3h5TWFuYWdlciggc2VsZi5jb25m aWcgKQogICAgICAgICAjIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIHNlcnZpY2UgdHlwZXMKICAg ICAgICAgc2VsZi5leHRlcm5hbF9zZXJ2aWNlX3R5cGVzID0zRCBleHRlcm5hbF9zZXJ2aWNlX3R5 cGVzLkV4dGVybmFsU2VyPQp2aWNlVHlwZXNDb2xsZWN0aW9uKCBzZWxmLmNvbmZpZy5leHRlcm5h bF9zZXJ2aWNlX3R5cGVfY29uZmlnX2ZpbGUsIHNlbGYuY289Cm5maWcuZXh0ZXJuYWxfc2Vydmlj ZV90eXBlX3BhdGgsIHNlbGYgKQogICAgICAgICBzZWxmLm1vZGVsLmVuZ2luZS5kaXNwb3NlKCkK CmRpZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3 ZmY4YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQgbGliL2dhbGF4eS9jb25maWcu cHkKLS0tIGEvbGliL2dhbGF4eS9jb25maWcucHkKKysrIGIvbGliL2dhbGF4eS9jb25maWcucHkK QEAgLTE4LDYgKzE4LDggQEAKIGZyb20gZ2FsYXh5LnV0aWwuZGJrZXlzIGltcG9ydCBHZW5vbWVC dWlsZHMKIGZyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCj0yMAoraW1wb3J0IENvbmZpZ1BhcnNlcgor CiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAo9MjAKQEAgLTIwOCw2 ICsyMTAsNyBAQAogICAgICAgICBzZWxmLmxvZ19ldmVudHMgPTNEIHN0cmluZ19hc19ib29sKCBr d2FyZ3MuZ2V0KCAnbG9nX2V2ZW50cycsICdGYWw9CnNlJyApICkKICAgICAgICAgc2VsZi5zYW5p dGl6ZV9hbGxfaHRtbCA9M0Qgc3RyaW5nX2FzX2Jvb2woIGt3YXJncy5nZXQoICdzYW5pdGl6ZV9h PQpsbF9odG1sJywgVHJ1ZSApICkKICAgICAgICAgc2VsZi5zZXJ2ZV94c3NfdnVsbmVyYWJsZV9t aW1ldHlwZXMgPTNEIHN0cmluZ19hc19ib29sKCBrd2FyZ3MuZ2V0PQooICdzZXJ2ZV94c3NfdnVs bmVyYWJsZV9taW1ldHlwZXMnLCBGYWxzZSApICkKKyAgICAgICAgc2VsZi50cnVzdF9pcHl0aG9u X25vdGVib29rX2NvbnZlcnNpb24gPTNEIHN0cmluZ19hc19ib29sKCBrd2FyZ3MuPQpnZXQoICd0 cnVzdF9pcHl0aG9uX25vdGVib29rX2NvbnZlcnNpb24nLCBGYWxzZSApICkKICAgICAgICAgc2Vs Zi5lbmFibGVfb2xkX2Rpc3BsYXlfYXBwbGljYXRpb25zID0zRCBzdHJpbmdfYXNfYm9vbCgga3dh cmdzLmdlPQp0KCAiZW5hYmxlX29sZF9kaXNwbGF5X2FwcGxpY2F0aW9ucyIsICJUcnVlIiApICkK ICAgICAgICAgc2VsZi5icmFuZCA9M0Qga3dhcmdzLmdldCggJ2JyYW5kJywgTm9uZSApCiAgICAg ICAgIHNlbGYud2VsY29tZV91cmwgPTNEIGt3YXJncy5nZXQoICd3ZWxjb21lX3VybCcsICcvc3Rh dGljL3dlbGNvbWUuaD0KdG1sJyApCkBAIC0yOTYsNiArMjk5LDIzIEBACiAgICAgICAgIGZvciBz ZWN0aW9uIGluIGdsb2JhbF9jb25mX3BhcnNlci5zZWN0aW9ucygpOgogICAgICAgICAgICAgaWYg c2VjdGlvbi5zdGFydHN3aXRoKCdzZXJ2ZXI6Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJfbmFtZXMuYXBwZW5kKHNlY3Rpb24ucmVwbGFjZSgnc2VydmVyOicsICcnLCAxKSkKKworICAg ICAgICAjIERlZmF1bHQgVVJMICh3aXRoIHNjaGVtYSBodHRwL2h0dHBzKSBvZiB0aGUgR2FsYXh5 IGluc3RhbmNlIHdpdGg9CmluIHRoZQorICAgICAgICAjIGxvY2FsIG5ldHdvcmsgLSB1c2VkIHRv IHJlbW90ZWx5IGNvbW11bmljYXRlIHdpdGggdGhlIEdhbGF4eSBBUEkuCisgICAgICAgIGdhbGF4 eV9pbmZyYXN0cnVjdHVyZV91cmwgPTNEIGt3YXJncy5nZXQoICdnYWxheHlfaW5mcmFzdHJ1Y3R1 cmVfdT0KcmwnLCBOb25lICkKKyAgICAgICAgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybF9zZXQg PTNEIFRydWUKKyAgICAgICAgaWYgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybCBpcyBOb25lOgor ICAgICAgICAgICAgIyBTdGlsbCBwcm92aWRlIGEgZGVmYXVsdCBidXQgaW5kaWNhdGUgaXQgd2Fz IG5vdCBleHBsaWNpdGx5IHM9CmV0CisgICAgICAgICAgICAjIHNvIGRlcGVuZGVuZGluZyBvbiB0 aGUgY29udGV4dCBhIGJldHRlciBkZWZhdWx0IGNhbiBiZSB1c2VkICgKKyAgICAgICAgICAgICMg cmVxdWVzdCB1cmwgaW4gYSB3ZWIgdGhyZWFkLCBEb2NrZXIgcGFyZW50IGluIElFIHN0dWZmLCBl dGMuPQouLikKKyAgICAgICAgICAgIGdhbGF4eV9pbmZyYXN0cnVjdHVyZV91cmwgPTNEICJodHRw Oi8vbG9jYWxob3N0IgorICAgICAgICAgICAgcG9ydCA9M0Qgc2VsZi5ndWVzc19nYWxheHlfcG9y dCgpCisgICAgICAgICAgICBpZiBwb3J0OgorICAgICAgICAgICAgICAgIGdhbGF4eV9pbmZyYXN0 cnVjdHVyZV91cmwgKz0zRCAiOiVzIiAlIChwb3J0KQorICAgICAgICAgICAgZ2FsYXh5X2luZnJh c3RydWN0dXJlX3VybF9zZXQgPTNEIEZhbHNlCisgICAgICAgIHNlbGYuZ2FsYXh5X2luZnJhc3Ry dWN0dXJlX3VybCA9M0QgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybAorICAgICAgICBzZWxmLmdh bGF4eV9pbmZyYXN0cnVjdHVyZV91cmxfc2V0ID0zRCBnYWxheHlfaW5mcmFzdHJ1Y3R1cmVfdXJs X3M9CmV0CisKICAgICAgICAgIyBTdG9yZSBhZHZhbmNlZCBqb2IgbWFuYWdlbWVudCBjb25maWcK ICAgICAgICAgc2VsZi5qb2JfbWFuYWdlciA9M0Qga3dhcmdzLmdldCgnam9iX21hbmFnZXInLCBz ZWxmLnNlcnZlcl9uYW1lKS5zPQp0cmlwKCkKICAgICAgICAgc2VsZi5qb2JfaGFuZGxlcnMgPTNE IFsgeC5zdHJpcCgpIGZvciB4IGluIGt3YXJncy5nZXQoJ2pvYl9oYW5kbGVyPQpzJywgc2VsZi5z ZXJ2ZXJfbmFtZSkuc3BsaXQoJywnKSBdCkBAIC0zNTcsNiArMzc3LDE4IEBACiAgICAgICAgICMg ZGlyZWN0b3J5IHdoZXJlIHRoZSB2aXN1YWxpemF0aW9uL3JlZ2lzdHJ5IHNlYXJjaGVzIGZvciBw bHVnaW5zCiAgICAgICAgIHNlbGYudmlzdWFsaXphdGlvbl9wbHVnaW5zX2RpcmVjdG9yeSA9M0Qg a3dhcmdzLmdldCgKICAgICAgICAgICAgICd2aXN1YWxpemF0aW9uX3BsdWdpbnNfZGlyZWN0b3J5 JywgJ2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpPQpvbnMnICkKKyAgICAgICAgaWVfZGlycyA9 M0Qga3dhcmdzLmdldCggJ2ludGVyYWN0aXZlX2Vudmlyb25tZW50X3BsdWdpbnNfZGlyZWN0b3J5 PQonLCBOb25lICkKKyAgICAgICAgaWYgaWVfZGlycyBhbmQgbm90IHNlbGYudmlzdWFsaXphdGlv bl9wbHVnaW5zX2RpcmVjdG9yeToKKyAgICAgICAgICAgIHNlbGYudmlzdWFsaXphdGlvbl9wbHVn aW5zX2RpcmVjdG9yeSA9M0QgaWVfZGlycworICAgICAgICBlbGlmIGllX2RpcnM6CisgICAgICAg ICAgICBzZWxmLnZpc3VhbGl6YXRpb25fcGx1Z2luc19kaXJlY3RvcnkgKz0zRCAiLCVzIiAlIGll X2RpcnMKKworICAgICAgICBzZWxmLnByb3h5X3Nlc3Npb25fbWFwID0zRCBzZWxmLnJlc29sdmVf cGF0aCgga3dhcmdzLmdldCggImR5bmFtaWM9Cl9wcm94eV9zZXNzaW9uX21hcCIsICJkYXRhYmFz ZS9zZXNzaW9uX21hcC5zcWxpdGUiICkgKQorICAgICAgICBzZWxmLm1hbmFnZV9keW5hbWljX3By b3h5ID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdldCggImR5bmFtaWM9Cl9wcm94eV9tYW5h Z2UiLCAiVHJ1ZSIgKSApICAjIFNldCB0byBmYWxzZSBpZiBiZWluZyBsYXVuY2hlZCBleHRlcm5h bGx5CisgICAgICAgIHNlbGYuZHluYW1pY19wcm94eV9kZWJ1ZyA9M0Qgc3RyaW5nX2FzX2Jvb2wo IGt3YXJncy5nZXQoICJkeW5hbWljXz0KcHJveHlfZGVidWciLCAiRmFsc2UiICkgKQorICAgICAg ICBzZWxmLmR5bmFtaWNfcHJveHlfYmluZF9wb3J0ID0zRCBpbnQoIGt3YXJncy5nZXQoICJkeW5h bWljX3Byb3h5X2I9CmluZF9wb3J0IiwgIjg4MDAiICkgKQorICAgICAgICBzZWxmLmR5bmFtaWNf cHJveHlfYmluZF9pcCA9M0Qga3dhcmdzLmdldCggImR5bmFtaWNfcHJveHlfYmluZF9pcCI9Ciwg IjAuMC4wLjAiICkKKwogICAgICAgICAjIERlZmF1bHQgY2h1bmsgc2l6ZSBmb3IgY2h1bmthYmxl IGRhdGF0eXBlcyAtLSA2NGsKICAgICAgICAgc2VsZi5kaXNwbGF5X2NodW5rX3NpemUgPTNEIGlu dCgga3dhcmdzLmdldCggJ2Rpc3BsYXlfY2h1bmtfc2l6ZScsPQogNjU1MzYpICkKPTIwCkBAIC01 NDMsNiArNTc1LDE5IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gcmVzb2x2ZV9wYXRo KCBwYXRoLCBzZWxmLnJvb3QgKQo9MjAKKyAgICBkZWYgZ3Vlc3NfZ2FsYXh5X3BvcnQoc2VsZik6 CisgICAgICAgICMgQ29kZSBkZXJpdmVkIGZyb20gSVB5dGhvbiB3b3JrIGllLm1ha28KKyAgICAg ICAgY29uZmlnID0zRCBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcih7J3BvcnQnOiAnODA4 MCd9KQorICAgICAgICBpZiBzZWxmLmNvbmZpZ19maWxlOgorICAgICAgICAgICAgY29uZmlnLnJl YWQoIHNlbGYuY29uZmlnX2ZpbGUgKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvcnQg PTNEIGNvbmZpZy5nZXRpbnQoJ3NlcnZlcjolcycgJSBzZWxmLnNlcnZlcl9uYW1lLCAncG9ydCcp CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgdVdTR0kgZ2FsYXh5IGluc3RhbGxhdGlv bnMgZG9uJ3QgdXNlIHBhc3RlciBhbmQgb25seSBzcGVhayB1PQpXU0dJIG5vdCBodHRwCisgICAg ICAgICAgICBwb3J0ID0zRCBOb25lCisgICAgICAgIHJldHVybiBwb3J0CisKPTIwCiBkZWYgZ2V0 X2RhdGFiYXNlX2VuZ2luZV9vcHRpb25zKCBrd2FyZ3MsIG1vZGVsX3ByZWZpeD0zRCcnICk6CiAg ICAgIiIiCgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4MzE0ZTE2YWUg LXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGxpYi9nYWxheHkv ZGF0YXR5cGVzL3JlZ2lzdHJ5LnB5Ci0tLSBhL2xpYi9nYWxheHkvZGF0YXR5cGVzL3JlZ2lzdHJ5 LnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL3JlZ2lzdHJ5LnB5CkBAIC0yMiw2ICsyMiw3 IEBACiBpbXBvcnQgYXNzZW1ibHkKIGltcG9ydCBuZ3NpbmRleAogaW1wb3J0IGdyYXBoCitpbXBv cnQgdGV4dAogaW1wb3J0IGdhbGF4eS51dGlsCiBmcm9tIGdhbGF4eS51dGlsLm9kaWN0IGltcG9y dCBvZGljdAogZnJvbSBkaXNwbGF5X2FwcGxpY2F0aW9ucy5hcHBsaWNhdGlvbiBpbXBvcnQgRGlz cGxheUFwcGxpY2F0aW9uCgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4 MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGxp Yi9nYWxheHkvZGF0YXR5cGVzL3RleHQucHkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5 L2RhdGF0eXBlcy90ZXh0LnB5CkBAIC0wLDAgKzEsMTIxIEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04 IC0qLQorIiIiIENsZWFyaW5nIGhvdXNlIGZvciBnZW5lcmljIHRleHQgZGF0YXR5cGVzIHRoYXQg YXJlIG5vdCBYTUwgb3IgdGFidWxhci4KKyIiIgorCisKK2Zyb20gZ2FsYXh5LmRhdGF0eXBlcy5k YXRhIGltcG9ydCBUZXh0Citmcm9tIGdhbGF4eS5kYXRhdHlwZXMuZGF0YSBpbXBvcnQgZ2V0X2Zp bGVfcGVlaworZnJvbSBnYWxheHkuZGF0YXR5cGVzLmRhdGEgaW1wb3J0IG5pY2Vfc2l6ZQorZnJv bSBnYWxheHkgaW1wb3J0IHV0aWwKKworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc3VicHJvY2Vz cworaW1wb3J0IGpzb24KK2ltcG9ydCBvcworCitpbXBvcnQgbG9nZ2luZworbG9nID0zRCBsb2dn aW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBKc29uKCBUZXh0ICk6CisgICAgZmls ZV9leHQgPTNEICJqc29uIgorCisgICAgZGVmIHNldF9wZWVrKCBzZWxmLCBkYXRhc2V0LCBpc19t dWx0aV9ieXRlPTNERmFsc2UgKToKKyAgICAgICAgaWYgbm90IGRhdGFzZXQuZGF0YXNldC5wdXJn ZWQ6CisgICAgICAgICAgICBkYXRhc2V0LnBlZWsgPTNEIGdldF9maWxlX3BlZWsoIGRhdGFzZXQu ZmlsZV9uYW1lLCBpc19tdWx0aV9ieT0KdGU9M0Rpc19tdWx0aV9ieXRlICkKKyAgICAgICAgICAg IGRhdGFzZXQuYmx1cmIgPTNEICJKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbiAoSlNPTikiCisg ICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhc2V0LnBlZWsgPTNEICdmaWxlIGRvZXMgbm90 IGV4aXN0JworICAgICAgICAgICAgZGF0YXNldC5ibHVyYiA9M0QgJ2ZpbGUgcHVyZ2VkIGZyb20g ZGlzYycKKworICAgIGRlZiBzbmlmZiggc2VsZiwgZmlsZW5hbWUgKToKKyAgICAgICAgIiIiCisg ICAgICAgICAgICBUcnkgdG8gbG9hZCB0aGUgc3RyaW5nIHdpdGggdGhlIGpzb24gbW9kdWxlLiBJ ZiBzdWNjZXNzZnVsIGl0Jz0KcyBhIGpzb24gZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBzZWxmLl9sb29rc19saWtlX2pzb24oIGZpbGVuYW1lICkKKworICAgIGRlZiBfbG9va3Nf bGlrZV9qc29uKCBzZWxmLCBmaWxlbmFtZSApOgorICAgICAgICAjIFBhdHRlcm4gdXNlZCBieSBT ZXF1ZW5jZVNwbGl0TG9jYXRpb25zCisgICAgICAgIGlmIG9zLnBhdGguZ2V0c2l6ZShmaWxlbmFt ZSkgPCA1MDAwMDoKKyAgICAgICAgICAgICMgSWYgdGhlIGZpbGUgaXMgc21hbGwgZW5vdWdoIC0g ZG9uJ3QgZ3Vlc3MganVzdCBjaGVjay4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg ICBqc29uLmxvYWQoIG9wZW4oZmlsZW5hbWUsICJyIikgKQorICAgICAgICAgICAgICAgIHJldHVy biBUcnVlCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1l LCAiciIpIGFzIGZoOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAg ICAgICAgIGxpbmUgPTNEIGZoLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9 M0QgbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAg ICAgICAgICAgICAgICAjIHNpbXBsZSB0eXBlcyBhcmUgdmFsaWQgSlNPTiBhcyB3ZWxsIC0gYnV0 IHdvdWxkID0Kc3VjaCBhIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYmUgaW50ZXJl c3RpbmcgYXMgSlNPTiBpbiBHYWxheHk/CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g bGluZS5zdGFydHN3aXRoKCJbIikgb3IgbGluZS5zdGFydHN3aXRoKCJ7IikKKyAgICAgICAgICAg IHJldHVybiBGYWxzZQorCisgICAgZGVmIGRpc3BsYXlfcGVlayggc2VsZiwgZGF0YXNldCApOgor ICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gZGF0YXNldC5wZWVrCisgICAgICAgIGV4 Y2VwdDoKKyAgICAgICAgICAgIHJldHVybiAiSlNPTiBmaWxlICglcykiICUgKCBuaWNlX3NpemUo IGRhdGFzZXQuZ2V0X3NpemUoKSApICkKKworCitjbGFzcyBJcHluYiggSnNvbiApOgorICAgIGZp bGVfZXh0ID0zRCAiaXB5bmIiCisKKyAgICBkZWYgc2V0X3BlZWsoIHNlbGYsIGRhdGFzZXQsIGlz X211bHRpX2J5dGU9M0RGYWxzZSApOgorICAgICAgICBpZiBub3QgZGF0YXNldC5kYXRhc2V0LnB1 cmdlZDoKKyAgICAgICAgICAgIGRhdGFzZXQucGVlayA9M0QgZ2V0X2ZpbGVfcGVlayggZGF0YXNl dC5maWxlX25hbWUsIGlzX211bHRpX2J5PQp0ZT0zRGlzX211bHRpX2J5dGUgKQorICAgICAgICAg ICAgZGF0YXNldC5ibHVyYiA9M0QgIklQeXRob24gTm90ZWJvb2siCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBkYXRhc2V0LnBlZWsgPTNEICdmaWxlIGRvZXMgbm90IGV4aXN0JworICAgICAg ICAgICAgZGF0YXNldC5ibHVyYiA9M0QgJ2ZpbGUgcHVyZ2VkIGZyb20gZGlzYycKKworICAgIGRl ZiBzbmlmZiggc2VsZiwgZmlsZW5hbWUgKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBUcnkg dG8gbG9hZCB0aGUgc3RyaW5nIHdpdGggdGhlIGpzb24gbW9kdWxlLiBJZiBzdWNjZXNzZnVsIGl0 Jz0KcyBhIGpzb24gZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2xvb2tzX2xp a2VfanNvbiggZmlsZW5hbWUgKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBp cHluYiA9M0QganNvbi5sb2FkKCBvcGVuKGZpbGVuYW1lKSApCisgICAgICAgICAgICAgICAgaWYg aXB5bmIuZ2V0KCduYmZvcm1hdCcsIEZhbHNlKSBpcyBub3QgRmFsc2UgYW5kIGlweW5iLmdldD0K KCdtZXRhZGF0YScsIEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg ICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRl ZiBkaXNwbGF5X2RhdGEoc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHByZXZpZXc9M0RGYWxzZSwgZmls ZW5hbWU9M0ROb249CmUsIHRvX2V4dD0zRE5vbmUsIGNodW5rPTNETm9uZSwgKiprd2QpOgorICAg ICAgICBjb25maWcgPTNEIHRyYW5zLmFwcC5jb25maWcKKyAgICAgICAgdHJ1c3QgPTNEIGdldGF0 dHIoIGNvbmZpZywgJ3RydXN0X2lweXRob25fbm90ZWJvb2tfY29udmVyc2lvbicsIEZhPQpsc2Ug KQorICAgICAgICBpZiB0cnVzdDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9kaXNwbGF5X2Rh dGFfdHJ1c3RlZCh0cmFucywgZGF0YXNldCwgcHJldmlldz0zRHByPQpldmlldywgZmlsZWFtZT0z RGZpbGVuYW1lLCB0b19leHQ9M0R0b19leHQsIGNodW5rPTNEY2h1bmssICoqa3dkKQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKElweW5iLCBzZWxmKS5kaXNwbGF5X2Rh dGEoIHRyYW5zLCBkYXRhc2V0LCBwcmV2aWU9Cnc9M0RwcmV2aWV3LCBmaWxlYW1lPTNEZmlsZW5h bWUsIHRvX2V4dD0zRHRvX2V4dCwgY2h1bms9M0RjaHVuaywgKiprd2QgKQorCisgICAgZGVmIF9k aXNwbGF5X2RhdGFfdHJ1c3RlZChzZWxmLCB0cmFucywgZGF0YXNldCwgcHJldmlldz0zREZhbHNl LCBmaWxlbj0KYW1lPTNETm9uZSwgdG9fZXh0PTNETm9uZSwgY2h1bms9M0ROb25lLCAqKmt3ZCk6 CisgICAgICAgIHByZXZpZXcgPTNEIHV0aWwuc3RyaW5nX2FzX2Jvb2woIHByZXZpZXcgKQorICAg ICAgICBpZiBjaHVuazoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9jaHVuayh0cmFucywg ZGF0YXNldCwgY2h1bmspCisgICAgICAgIGVsaWYgdG9fZXh0IG9yIG5vdCBwcmV2aWV3OgorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuX3NlcnZlX3Jhdyh0cmFucywgZGF0YXNldCwgdG9fZXh0KQor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2ZpbGVfaGFuZGxlID0zRCB0ZW1wZmlsZS5OYW1l ZFRlbXBvcmFyeUZpbGUoZGVsZXRlPTNERmFsc2UpCisgICAgICAgICAgICBvZmlsZW5hbWUgPTNE IG9maWxlX2hhbmRsZS5uYW1lCisgICAgICAgICAgICBvZmlsZV9oYW5kbGUuY2xvc2UoKQorICAg ICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNtZCA9M0QgJ2lweXRob24gbmJjb252ZXJ0 IC0tdG8gaHRtbCAtLXRlbXBsYXRlIGJhc2ljICVzIC09Ci1vdXRwdXQgJXMnICUgKGRhdGFzZXQu ZmlsZV9uYW1lLCBvZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgbG9nLmluZm8oIkNhbGxpbmcg Y29tbWFuZCAlcyIgJSBjbWQpCisgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCwg c2hlbGw9M0RUcnVlKQorICAgICAgICAgICAgICAgIG9maWxlbmFtZSA9M0QgJyVzLmh0bWwnICUg b2ZpbGVuYW1lCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgb2ZpbGVuYW1l ID0zRCBkYXRhc2V0LmZpbGVfbmFtZQorICAgICAgICAgICAgICAgIGxvZy5leGNlcHRpb24oICdD b21tYW5kICIlcyIgZmFpbGVkLiBDb3VsZCBub3QgY29udmVydCB0aGU9CiBJUHl0aG9uIE5vdGVi b29rIHRvIEhUTUwsIGRlZmF1bHRpbmcgdG8gcGxhaW4gdGV4dC4nICUgY21kICkKKyAgICAgICAg ICAgIHJldHVybiBvcGVuKCBvZmlsZW5hbWUgKQorCisgICAgZGVmIHNldF9tZXRhKCBzZWxmLCBk YXRhc2V0LCAqKmt3ZCApOgorICAgICAgICAiIiIKKyAgICAgICAgU2V0IHRoZSBudW1iZXIgb2Yg bW9kZWxzIGluIGRhdGFzZXQuCisgICAgICAgICIiIgorICAgICAgICBwYXNzCgpkaWZmIC1yIDM1 YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRl NmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGxpYi9nYWxheHkvam9icy9ydW5uZXJzL3B1bHNh ci5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9wdWxzYXIucHkKKysrIGIvbGliL2dh bGF4eS9qb2JzL3J1bm5lcnMvcHVsc2FyLnB5CkBAIC01Myw3ICs1Myw3IEBACiAgICAgKSwKICAg ICBnYWxheHlfdXJsPTNEZGljdCgKICAgICAgICAgbWFwPTNEc3BlY3MudG9fc3RyX29yX25vbmUs Ci0gICAgICAgIGRlZmF1bHQ9M0RERUZBVUxUX0dBTEFYWV9VUkwsCisgICAgICAgIGRlZmF1bHQ9 M0ROb25lLAogICAgICksCiAgICAgbWFuYWdlcj0zRGRpY3QoCiAgICAgICAgIG1hcD0zRHNwZWNz LnRvX3N0cl9vcl9ub25lLApAQCAtMTI5LDYgKzEyOSw4IEBACiAgICAgICAgIHN1cGVyKCBQdWxz YXJKb2JSdW5uZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwLCBud29ya2VycywgcnVubmVyX3Bhcj0K YW1fc3BlY3M9M0RQVUxTQVJfUEFSQU1fU1BFQ1MsICoqa3dkcyApCiAgICAgICAgIHNlbGYuX2lu aXRfd29ya2VyX3RocmVhZHMoKQogICAgICAgICBnYWxheHlfdXJsID0zRCBzZWxmLnJ1bm5lcl9w YXJhbXMuZ2FsYXh5X3VybAorICAgICAgICBpZiBub3QgZ2FsYXh5X3VybDoKKyAgICAgICAgICAg IGdhbGF4eV91cmwgPTNEIGFwcC5jb25maWcuZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybAogICAg ICAgICBpZiBnYWxheHlfdXJsOgogICAgICAgICAgICAgZ2FsYXh5X3VybCA9M0QgZ2FsYXh5X3Vy bC5yc3RyaXAoIi8iKQogICAgICAgICBzZWxmLmdhbGF4eV91cmwgPTNEIGdhbGF4eV91cmwKCmRp ZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4 YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQgbGliL2dhbGF4eS91dGlsL2xhenlf cHJvY2Vzcy5weQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvdXRpbC9sYXp5X3Byb2Nl c3MucHkKQEAgLTAsMCArMSw1NyBAQAoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKK2lt cG9ydCBzdWJwcm9jZXNzCisKKworY2xhc3MgTGF6eVByb2Nlc3MoIG9iamVjdCApOgorICAgICIi IiBBYnN0cmFjdGlvbiBkZXNjcmliaW5nIGEgY29tbWFuZCBsaW5lIGxhdW5jaGluZyBhIHNlcnZp Y2UgLSBwcm9iYWI9Cmx5CisgICAgYXMgbmVlZGVkIGFzIGZ1bmN0aW9uYWxpdHkgaXMgYWNjZXNz ZWQgaW4gR2FsYXh5LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBjb21tYW5k X2FuZF9hcmdzICk6CisgICAgICAgIHNlbGYuY29tbWFuZF9hbmRfYXJncyA9M0QgY29tbWFuZF9h bmRfYXJncworICAgICAgICBzZWxmLnRocmVhZF9sb2NrID0zRCB0aHJlYWRpbmcuTG9jaygpCisg ICAgICAgIHNlbGYuYWxsb3dfcHJvY2Vzc19yZXF1ZXN0ID0zRCBUcnVlCisgICAgICAgIHNlbGYu cHJvY2VzcyA9M0QgTm9uZQorCisgICAgZGVmIHN0YXJ0X3Byb2Nlc3MoIHNlbGYgKToKKyAgICAg ICAgd2l0aCBzZWxmLnRocmVhZF9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5hbGxvd19wcm9j ZXNzX3JlcXVlc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5hbGxvd19wcm9jZXNzX3JlcXVlc3Qg PTNEIEZhbHNlCisgICAgICAgICAgICAgICAgdCA9M0QgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9 M0RzZWxmLl9fc3RhcnQpCisgICAgICAgICAgICAgICAgdC5kYWVtb24gPTNEIFRydWUKKyAgICAg ICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgIGRlZiBfX3N0YXJ0KHNlbGYpOgorICAgICAgICB3 aXRoIHNlbGYudGhyZWFkX2xvY2s6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3MgPTNEIHN1YnBy b2Nlc3MuUG9wZW4oIHNlbGYuY29tbWFuZF9hbmRfYXJncywgY2xvcz0KZV9mZHM9M0RUcnVlICkK KworICAgIGRlZiBzaHV0ZG93biggc2VsZiApOgorICAgICAgICB3aXRoIHNlbGYudGhyZWFkX2xv Y2s6CisgICAgICAgICAgICBzZWxmLmFsbG93X3Byb2Nlc3NfcmVxdWVzdCA9M0QgRmFsc2UKKyAg ICAgICAgaWYgc2VsZi5ydW5uaW5nOgorICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1pbmF0 ZSgpCisgICAgICAgICAgICB0aW1lLnNsZWVwKC4wMSkKKyAgICAgICAgICAgIGlmIHNlbGYucnVu bmluZzoKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Mua2lsbCgpCisKKyAgICBAcHJvcGVy dHkKKyAgICBkZWYgcnVubmluZyggc2VsZiApOgorICAgICAgICByZXR1cm4gc2VsZi5wcm9jZXNz IGFuZCBub3Qgc2VsZi5wcm9jZXNzLnBvbGwoKQorCisKK2NsYXNzIE5vT3BMYXp5UHJvY2Vzcygg b2JqZWN0ICk6CisgICAgIiIiIExhenlQcm9jZXNzIGFic3RyYWN0aW9uIG1lYW50IHRvIGRlc2Ny aWJlIHBvdGVudGlhbGx5IG9wdGlvbmFsCisgICAgc2VydmljZXMsIGluIHRob3NlIGNhc2VzIHdo ZXJlIG9uZSBpcyBub3QgY29uZmlndXJlZCBvciB2YWxpZCwgdGhpcworICAgIGNsYXNzIGNhbiBi ZSB1c2VkIGluIHBsYWNlIG9mIExhenlQcm9jZXNzLgorICAgICIiIgorCisgICAgZGVmIHN0YXJ0 X3Byb2Nlc3MoIHNlbGYgKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgc2h1dGRvd24oIHNl bGYgKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcnVubmluZygg c2VsZiApOgorICAgICAgICByZXR1cm4gRmFsc2UKCmRpZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0 NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQx NTJjYzVhZDJiMDQgbGliL2dhbGF4eS91dGlsL3NvY2tldHMucHkKLS0tIC9kZXYvbnVsbAorKysg Yi9saWIvZ2FsYXh5L3V0aWwvc29ja2V0cy5weQpAQCAtMCwwICsxLDQzIEBACitpbXBvcnQgc2hs ZXgKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgcmFuZG9tCisKKwor ZGVmIHVudXNlZF9wb3J0KHJhbmdlPTNETm9uZSk6CisgICAgaWYgcmFuZ2U6CisgICAgICAgIHJl dHVybiBfX3VudXNlZF9wb3J0X29uX3JhbmdlKHJhbmdlKQorICAgIGVsc2U6CisgICAgICAgIHJl dHVybiBfX3VudXNlZF9wb3J0X3JhbmdlbGVzcygpCisKKworZGVmIF9fdW51c2VkX3BvcnRfcmFu Z2VsZXNzKCk6CisgICAgIyBUT0RPOiBBbGxvdyByYW5nZXMgKHRob3VnaCB0aGVuIG5lZWQgdG8g Z3Vlc3MgYW5kIGNoZWNrKS4uLgorICAgIHMgPTNEIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lO RVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICBzLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAg ICBhZGRyLCBwb3J0ID0zRCBzLmdldHNvY2tuYW1lKCkKKyAgICBzLmNsb3NlKCkKKyAgICByZXR1 cm4gcG9ydAorCisKK2RlZiBfX3VudXNlZF9wb3J0X29uX3JhbmdlKHJhbmdlKToKKyAgICBhc3Nl cnQgcmFuZ2VbMF0gYW5kIHJhbmdlWzFdCisKKyAgICAjIEZpbmQgYWxsIHBvcnRzIHRoYXQgYXJl IGFscmVhZHkgb2NjdXBpZWQKKyAgICBjbWRfbmV0c3RhdCA9M0Qgc2hsZXguc3BsaXQoIm5ldHN0 YXQgdHVsbiIpCisgICAgcDEgPTNEIHN1YnByb2Nlc3MuUG9wZW4oY21kX25ldHN0YXQsIHN0ZG91 dD0zRHN1YnByb2Nlc3MuUElQRSkKKworICAgIG9jY3VwaWVkX3BvcnRzID0zRCBzZXQoKQorICAg IGZvciBsaW5lIGluIHAxLnN0ZG91dC5yZWFkKCkuc3BsaXQoJ1xuJyk6CisgICAgICAgIGlmIGxp bmUuc3RhcnRzd2l0aCgndGNwJykgb3IgbGluZS5zdGFydHN3aXRoKCd0Y3A2Jyk6CisgICAgICAg ICAgICBjb2wgPTNEIGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgbG9jYWxfYWRkcmVzcyA9M0Qg Y29sWzNdCisgICAgICAgICAgICBsb2NhbF9wb3J0ID0zRCBsb2NhbF9hZGRyZXNzLnNwbGl0KCc6 JylbMV0KKyAgICAgICAgICAgIG9jY3VwaWVkX3BvcnRzLmFkZCggaW50KGxvY2FsX3BvcnQpICkK KworICAgICMgR2VuZXJhdGUgcmFuZG9tIGZyZWUgcG9ydCBudW1iZXIuCisgICAgd2hpbGUgVHJ1 ZToKKyAgICAgICAgcG9ydCA9M0QgcmFuZG9tLnJhbmRyYW5nZShyYW5nZVswXSwgcmFuZ2VbMV0p CisgICAgICAgIGlmIHBvcnQgbm90IGluIG9jY3VwaWVkX3BvcnRzOgorICAgICAgICAgICAgYnJl YWsKKyAgICByZXR1cm4gcG9ydAoKZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQw NTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIw NCBsaWIvZ2FsYXh5L3Zpc3VhbGl6YXRpb24vcmVnaXN0cnkucHkKLS0tIGEvbGliL2dhbGF4eS92 aXN1YWxpemF0aW9uL3JlZ2lzdHJ5LnB5CisrKyBiL2xpYi9nYWxheHkvdmlzdWFsaXphdGlvbi9y ZWdpc3RyeS5weQpAQCAtMzQ0LDYgKzM0NCwxMCBAQAogICAgICAgICAjIFRPRE86IEFzIHBhcnQg b2YgYSBmdXR1cmUgbm90ZSBwbHVnaW4gcmVnaXN0cnkgZWZmb3J0IC0gbW92ZSB0aGlzCiAgICAg ICAgICMgb3ZlcnJpZGUgYW5kIGxldCBWaXN1YWxpemF0aW9uc1JlZ2lzdHJ5IGp1c3QgcmV2ZXJ0 IHRvIHVzaW5nIHBhcj0KZW50J3MKICAgICAgICAgIyBmaWxsX3RlbXBsYXRlLgorCisgICAgICAg ICMgTm8gbG9uZ2VyIG5lZWRlZCBidXQgYmVpbmcgbGVmdCBhcm91bmQgZm9yIGEgZmV3IHJlbGVh c2VzIGFzIGlweT0KdGhvbi1nYWxheHkKKyAgICAgICAgIyBhcyBhbiBleHRlcm5hbCB2aXN1YWxp emF0aW9uIHBsdWdpbiBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNvPQpyZSBpbnRlcmFjdGl2 ZQorICAgICAgICAjIGVudmlyb25tZW50IHBsdWdpbi4KICAgICAgICAgaWYgJ2dldF9hcGlfa2V5 JyBub3QgaW4ga3dhcmdzOgo9MjAKICAgICAgICAgICAgIGRlZiBnZXRfYXBpX2tleSgpOgpAQCAt NDAxLDYgKzQwNSwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuZWQgPTNEIHt9Cj0y MAorICAgICAgICAjIG1haW4gdGFnIHNwZWNpZmllcyBwbHVnaW4gdHlwZSAodmlzdWFsaXphdGlv biBvcgorICAgICAgICAjIGludGVyYWN0aXZlX2Vudmlvcm5tZW50KS4KKyAgICAgICAgcmV0dXJu ZWRbICdwbHVnaW5fdHlwZScgXSA9M0QgeG1sX3RyZWUudGFnCisKICAgICAgICAgIyBhIHRleHQg ZGlzcGxheSBuYW1lIGZvciBlbmQgdXNlciBsaW5rcwogICAgICAgICByZXR1cm5lZFsgJ25hbWUn IF0gPTNEIHhtbF90cmVlLmF0dHJpYi5nZXQoICduYW1lJywgTm9uZSApCiAgICAgICAgIGlmIG5v dCByZXR1cm5lZFsgJ25hbWUnIF06CgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2Yy ZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQy YjA0IGxpYi9nYWxheHkvd2ViL2Jhc2UvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLnB5Ci0tLSAv ZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS93ZWIvYmFzZS9pbnRlcmFjdGl2ZV9lbnZpcm9ubWVu dHMucHkKQEAgLTAsMCArMSwxNjIgQEAKK2ltcG9ydCBDb25maWdQYXJzZXIKKworaW1wb3J0IGhh c2hsaWIKK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQorCitmcm9tIGdhbGF4eS51dGlsLmJ1bmNo IGltcG9ydCBCdW5jaAorZnJvbSBnYWxheHkgaW1wb3J0IHdlYgoraW1wb3J0IHlhbWwKK2Zyb20g Z2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBhcGlfa2V5cworCisKK2NsYXNzIEludGVyYWN0aXZlRW52 aW9ybm1lbnRSZXF1ZXN0KG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHJhbnMs IHBsdWdpbik6CisgICAgICAgIHBsdWdpbl9jb25maWcgPTNEIHBsdWdpbi5jb25maWcKKworICAg ICAgICBzZWxmLnRyYW5zID0zRCB0cmFucworCisgICAgICAgIHNlbGYuYXR0ciA9M0QgQnVuY2go KQorICAgICAgICBzZWxmLmF0dHIudml6X2lkID0zRCBwbHVnaW5fY29uZmlnWyJuYW1lIl0ubG93 ZXIoKQorICAgICAgICBzZWxmLmF0dHIuaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5j b2RlX2lkKCB0cmFucy5oaXN0b3J5Lmk9CmQgKQorICAgICAgICBzZWxmLmF0dHIucHJveHlfcmVx dWVzdCA9M0QgdHJhbnMuYXBwLnByb3h5X21hbmFnZXIuc2V0dXBfcHJveHkoIHQ9CnJhbnMgKQor ICAgICAgICBzZWxmLmF0dHIucHJveHlfdXJsID0zRCBzZWxmLmF0dHIucHJveHlfcmVxdWVzdFsg J3Byb3h5X3VybCcgXQorICAgICAgICBzZWxmLmF0dHIuZ2FsYXh5X2NvbmZpZyA9M0QgdHJhbnMu YXBwLmNvbmZpZworICAgICAgICBzZWxmLmF0dHIuZ2FsYXh5X3Jvb3RfZGlyID0zRCBvcy5wYXRo LmFic3BhdGgoc2VsZi5hdHRyLmdhbGF4eV9jb249CmZpZy5yb290KQorCisgICAgICAgIHNlbGYu YXR0ci5yb290ID0zRCB3ZWIudXJsX2ZvcigiLyIpCisgICAgICAgIHNlbGYuYXR0ci5hcHBfcm9v dCA9M0Qgc2VsZi5hdHRyLnJvb3QgKyAicGx1Z2lucy92aXN1YWxpemF0aW9ucy8iID0KKyBzZWxm LmF0dHIudml6X2lkICsgIi9zdGF0aWMvIgorCisgICAgICAgIHBsdWdpbl9wYXRoID0zRCBvcy5w YXRoLmFic3BhdGgoIHBsdWdpbi5wYXRoICkKKworICAgICAgICAjIFN0b3JlIG91ciB0ZW1wbGF0 ZSBhbmQgY29uZmlndXJhdGlvbiBwYXRoCisgICAgICAgIHNlbGYuYXR0ci5vdXJfY29uZmlnX2Rp ciA9M0Qgb3MucGF0aC5qb2luKHBsdWdpbl9wYXRoLCAiY29uZmlnIikKKyAgICAgICAgc2VsZi5h dHRyLm91cl90ZW1wbGF0ZV9kaXIgPTNEIG9zLnBhdGguam9pbihwbHVnaW5fcGF0aCwgInRlbXBs YXRlPQpzIikKKyAgICAgICAgc2VsZi5hdHRyLkhPU1QgPTNEIHRyYW5zLnJlcXVlc3QuaG9zdC5y c3BsaXQoJzonLCAxKVswXQorICAgICAgICBzZWxmLmF0dHIuUE9SVCA9M0Qgc2VsZi5hdHRyLnBy b3h5X3JlcXVlc3RbICdwcm94aWVkX3BvcnQnIF0KKworICAgIGRlZiBsb2FkX2RlcGxveV9jb25m aWcoc2VsZiwgZGVmYXVsdF9kaWN0PTNEe30pOgorICAgICAgICB2aXpfY29uZmlnID0zRCBDb25m aWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcihkZWZhdWx0X2RpY3QpCisgICAgICAgIGNvbmZfcGF0 aCA9M0Qgb3MucGF0aC5qb2luKCBzZWxmLmF0dHIub3VyX2NvbmZpZ19kaXIsIHNlbGYuYXR0ci52 aT0Kel9pZCArICIuaW5pIiApCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyggY29uZl9w YXRoICk6CisgICAgICAgICAgICBjb25mX3BhdGggPTNEICIlcy5zYW1wbGUiICUgY29uZl9wYXRo CisgICAgICAgIHZpel9jb25maWcucmVhZCggY29uZl9wYXRoICkKKyAgICAgICAgc2VsZi5hdHRy LnZpel9jb25maWcgPTNEIHZpel9jb25maWcKKworICAgICAgICBkZWYgX2Jvb2xlYW5fb3B0aW9u KG9wdGlvbiwgZGVmYXVsdD0zREZhbHNlKToKKyAgICAgICAgICAgIGlmIHNlbGYuYXR0ci52aXpf Y29uZmlnLmhhc19vcHRpb24oIm1haW4iLCBvcHRpb24pOgorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmF0dHIudml6X2NvbmZpZy5nZXRib29sZWFuKCJtYWluIiwgb3B0aW9uKQorICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisgICAgICAgICMg T2xkZXIgc3R5bGUgcG9ydCByYW5nZSBwcm94eWluZyAtIG5vdCBzdXJlIHdlIHdhbnQgdG8ga2Vl cCB0aGVzZT0KIGFyb3VuZCBvciBzaG91bGQKKyAgICAgICAgIyB3ZSBhbHdheXMgYXNzdW1lIHVz ZSBvZiBHYWxheHkgZHluYW1pYyBwcm94eT8gTm9uZSBvZiB0aGVzZSBuZWVkPQogdG8gYmUgc3Bl Y2lmaWVkCisgICAgICAgICMgaWYgdXNpbmcgdGhlIEdhbGF4eSBkeW5hbWljIHByb3h5LgorICAg ICAgICBzZWxmLmF0dHIuUEFTU1dPUkRfQVVUSCA9M0QgX2Jvb2xlYW5fb3B0aW9uKCJwYXNzd29y ZF9hdXRoIikKKyAgICAgICAgc2VsZi5hdHRyLkFQQUNIRV9VUkxTID0zRCBfYm9vbGVhbl9vcHRp b24oImFwYWNoZV91cmxzIikKKyAgICAgICAgc2VsZi5hdHRyLlNTTF9VUkxTID0zRCBfYm9vbGVh bl9vcHRpb24oInNzbCIpCisKKyAgICBkZWYgd3JpdGVfY29uZl9maWxlKHNlbGYsIG91dHB1dF9k aXJlY3RvcnksIGV4dHJhPTNEe30pOgorICAgICAgICAiIiIKKyAgICAgICAgICAgIEJ1aWxkIHVw IGEgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgaXMgc3RhbmRhcmQgZm9yIEFMTCBJRXMuCisKKyAg ICAgICAgICAgIFRPRE86IHJlcGxhY2UgaGFzaGVkIHBhc3N3b3JkIHdpdGggcGxhaW50ZXh0Lgor ICAgICAgICAiIiIKKyAgICAgICAgdHJhbnMgPTNEIHNlbGYudHJhbnMKKyAgICAgICAgcmVxdWVz dCA9M0QgdHJhbnMucmVxdWVzdAorICAgICAgICBhcGlfa2V5ID0zRCBhcGlfa2V5cy5BcGlLZXlN YW5hZ2VyKCB0cmFucy5hcHAgKS5nZXRfb3JfY3JlYXRlX2FwaV89CmtleSggdHJhbnMudXNlciAp CisgICAgICAgIGNvbmZfZmlsZSA9M0QgeworICAgICAgICAgICAgJ2hpc3RvcnlfaWQnOiBzZWxm LmF0dHIuaGlzdG9yeV9pZCwKKyAgICAgICAgICAgICdhcGlfa2V5JzogYXBpX2tleSwKKyAgICAg ICAgICAgICdyZW1vdGVfaG9zdCc6IHJlcXVlc3QucmVtb3RlX2FkZHIsCisgICAgICAgICAgICAn ZG9ja2VyX3BvcnQnOiBzZWxmLmF0dHIuUE9SVCwKKyAgICAgICAgICAgICdjb3JzX29yaWdpbic6 IHJlcXVlc3QuaG9zdF91cmwsCisgICAgICAgIH0KKworICAgICAgICBpZiBzZWxmLmF0dHIudml6 X2NvbmZpZy5oYXNfb3B0aW9uKCJkb2NrZXIiLCAiZ2FsYXh5X3VybCIpOgorICAgICAgICAgICAg Y29uZl9maWxlWydnYWxheHlfdXJsJ10gPTNEIHNlbGYuYXR0ci52aXpfY29uZmlnLmdldHN0cmlu ZygiZG89CmNrZXIiLCAiZ2FsYXh5X3VybCIpCisgICAgICAgIGVsaWYgc2VsZi5hdHRyLmdhbGF4 eV9jb25maWcuZ2FsYXh5X2luZnJhc3RydWN0dXJlX3VybF9zZXQ6CisgICAgICAgICAgICBjb25m X2ZpbGVbJ2dhbGF4eV91cmwnXSA9M0Qgc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuZ2FsYXh5X2lu Zj0KcmFzdHJ1Y3R1cmVfdXJsLnJzdHJpcCgnLycpICsgJy8nCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICBjb25mX2ZpbGVbJ2dhbGF4eV91cmwnXSA9M0QgcmVxdWVzdC5hcHBsaWNhdGlvbl91 cmwucnN0cmlwKCcvJz0KKSArICcvJworICAgICAgICAgICAgY29uZl9maWxlWydnYWxheHlfcGFz dGVyX3BvcnQnXSA9M0Qgc2VsZi5hdHRyLmdhbGF4eV9jb25maWcuZ3U9CmVzc19nYWxheHlfcG9y dCgpCisKKyAgICAgICAgaWYgc2VsZi5hdHRyLlBBU1NXT1JEX0FVVEg6CisgICAgICAgICAgICAj IEdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkICsgc2FsdAorICAgICAgICAgICAgbm90ZWJvb2tf cHdfc2FsdCA9M0Qgc2VsZi5nZW5lcmF0ZV9wYXNzd29yZChsZW5ndGg9M0QxMikKKyAgICAgICAg ICAgIG5vdGVib29rX3B3ID0zRCBzZWxmLmdlbmVyYXRlX3Bhc3N3b3JkKGxlbmd0aD0zRDI0KQor ICAgICAgICAgICAgbSA9M0QgaGFzaGxpYi5zaGExKCkKKyAgICAgICAgICAgIG0udXBkYXRlKCBu b3RlYm9va19wdyArIG5vdGVib29rX3B3X3NhbHQgKQorICAgICAgICAgICAgY29uZl9maWxlWydu b3RlYm9va19wYXNzd29yZCddID0zRCAnc2hhMTolczolcycgJSAobm90ZWJvb2tfcHc9Cl9zYWx0 LCBtLmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgIyBTaG91bGQgd2UgdXNlIHBhc3N3b3JkIGJh c2VkIGNvbm5lY3Rpb24gb3IgImRlZmF1bHQiIGNvbm5lY3Q9CmlvbiBzdHlsZSBpbiBnYWxheHkK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vdGVib29rX3B3ID0zRCAiTm9uZSIKKworICAg ICAgICAjIFNvbWUgd2lsbCBuZWVkIHRvIHBhc3MgZXh0cmEgZGF0YQorICAgICAgICBmb3IgZXh0 cmFfa2V5IGluIGV4dHJhOgorICAgICAgICAgICAgY29uZl9maWxlW2V4dHJhX2tleV0gPTNEIGV4 dHJhW2V4dHJhX2tleV0KKworICAgICAgICBzZWxmLmF0dHIubm90ZWJvb2tfcHcgPTNEIG5vdGVi b29rX3B3CisgICAgICAgICMgV3JpdGUgY29uZgorICAgICAgICB3aXRoIG9wZW4oIG9zLnBhdGgu am9pbiggb3V0cHV0X2RpcmVjdG9yeSwgJ2NvbmYueWFtbCcgKSwgJ3diJyApIGE9CnMgaGFuZGxl OgorICAgICAgICAgICAgaGFuZGxlLndyaXRlKCB5YW1sLmR1bXAoY29uZl9maWxlLCBkZWZhdWx0 X2Zsb3dfc3R5bGU9M0RGYWxzZSk9CiApCisKKyAgICBkZWYgZ2VuZXJhdGVfaGV4KHNlbGYsIGxl bmd0aCk6CisgICAgICAgIHJldHVybiAnJy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlh YmNkZWYnKSBmb3IgXyBpbiByYW5nZShsZT0Kbmd0aCkpCisKKyAgICBkZWYgZ2VuZXJhdGVfcGFz c3dvcmQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBHZW5lcmF0ZSBh IHJhbmRvbSBhbHBoYW51bWVyaWMgcGFzc3dvcmQKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy biAnJy5qb2luKHJhbmRvbS5jaG9pY2UoJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2 d3h5ej0KJykgZm9yIF8gaW4gcmFuZ2UobGVuZ3RoKSkKKworICAgIGRlZiBqYXZhc2NyaXB0X2Jv b2xlYW4oc2VsZiwgcHl0aG9uX2Jvb2xlYW4pOgorICAgICAgICAiIiIKKyAgICAgICAgICAgIENv bnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYm9vbGVhbiBmb3IgdXNlIGluIEpTCisgICAg ICAgICIiIgorICAgICAgICBpZiBweXRob25fYm9vbGVhbjoKKyAgICAgICAgICAgIHJldHVybiAi dHJ1ZSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiZmFsc2UiCisKKyAgICBk ZWYgdXJsX3RlbXBsYXRlKHNlbGYsIHVybF90ZW1wbGF0ZSk6CisgICAgICAgICIiIgorICAgICAg ICAgICAgUHJvY2VzcyBhIFVSTCB0ZW1wbGF0ZQorCisgICAgICAgICAgICBUaGVyZSBhcmUgc2V2 ZXJhbCB2YXJpYWJsZXMgYWNjZXNzaWJsZSB0byB0aGUgdXNlcjoKKworICAgICAgICAgICAgICAg IC0gJHtQUk9YWV9VUkx9IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBkeW5hbWljYWxseSBjcmVhdGUg cHI9Cm94eQorICAgICAgICAgICAgICAgIC0gJHtQT1JUfSB3aWxsIGJlIHJlcGxhY2VkIHdpdGgg dGhlIHBvcnQgdGhlIGRvY2tlciBpbWFnZSA9CmlzIGF0dGFjaGVkIHRvCisgICAgICAgICIiIgor ICAgICAgICAjIEZpZ3VyZSBvdXQgb3VyIHN1YnN0aXR1dGlvbnMKKworICAgICAgICAjIE5leHQg c2V2ZXJhbCBsaW5lcyBmb3Igb2xkZXIgc3R5bGUgcmVwbGFjZW1lbnRzIChub3QgdXNlZCB3aXRo IEc9CmFsYXh5IGR5bmFtaWMKKyAgICAgICAgIyBwcm94eSkKKworICAgICAgICBpZiBzZWxmLmF0 dHIuU1NMX1VSTFM6CisgICAgICAgICAgICBwcm90b2NvbCA9M0QgJ2h0dHBzJworICAgICAgICBl bHNlOgorICAgICAgICAgICAgcHJvdG9jb2wgPTNEICdodHRwJworCisgICAgICAgIGlmIG5vdCBz ZWxmLmF0dHIuQVBBQ0hFX1VSTFM6CisgICAgICAgICAgICAjIElmIHRoZXkgYXJlIG5vdCB1c2lu ZyBhcGFjaGUgVVJMcywgdGhhdCBpbXBsaWVzIHRoZXJlJ3MgYSBwbz0KcnQgYXR0YWNoZWQgdG8g dGhlIGhvc3QKKyAgICAgICAgICAgICMgc3RyaW5nLCB0aHVzIHdlIHJlcGxhY2UganVzdCB0aGUg Zmlyc3QgaW5zdGFuY2Ugb2YgaG9zdCB0aGF0PQogd2Ugc2VlLgorICAgICAgICAgICAgdXJsX3Rl bXBsYXRlID0zRCB1cmxfdGVtcGxhdGUucmVwbGFjZSgnJHtIT1NUfScsICcke0hPU1R9OiR7UE89 ClJUfScsIDEpCisKKyAgICAgICAgdXJsX3RlbXBsYXRlID0zRCB1cmxfdGVtcGxhdGUucmVwbGFj ZSgnJHtQUk9UT30nLCBwcm90b2NvbCkgXAorICAgICAgICAgICAgLnJlcGxhY2UoJyR7SE9TVH0n LCBzZWxmLmF0dHIuSE9TVCkKKworICAgICAgICAjIE9ubHkgdGhlIGZvbGxvd2luZyByZXBsYWNl bWVudHMgYXJlIHVzZWQgd2l0aCBHYWxheHkgZHluYW1pYyBwcm89Cnh5CisgICAgICAgICMgVVJM cworICAgICAgICB1cmwgPTNEIHVybF90ZW1wbGF0ZS5yZXBsYWNlKCcke1BST1hZX1VSTH0nLCBz dHIoc2VsZi5hdHRyLnByb3h5X3U9CnJsKSkgXAorICAgICAgICAgICAgLnJlcGxhY2UoJyR7UE9S VH0nLCBzdHIoc2VsZi5hdHRyLlBPUlQpKQorICAgICAgICByZXR1cm4gdXJsCisKKyAgICBkZWYg ZG9ja2VyX2NtZChzZWxmLCB0ZW1wX2Rpcik6CisgICAgICAgICIiIgorICAgICAgICAgICAgR2Vu ZXJhdGUgYW5kIHJldHVybiB0aGUgZG9ja2VyIGNvbW1hbmQgdG8gZXhlY3V0ZQorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuICclcyBydW4gLWQgLS1zaWctcHJveHk9M0R0cnVlIC1wICVzOiVz IC12ICIlczovaW1wb3J0LyIgJXMnPQogJSBcCisgICAgICAgICAgICAoc2VsZi5hdHRyLnZpel9j b25maWcuZ2V0KCJkb2NrZXIiLCAiY29tbWFuZCIpLCBzZWxmLmF0dHIuUE9SVD0KLCBzZWxmLmF0 dHIuZG9ja2VyX3BvcnQsCisgICAgICAgICAgICAgdGVtcF9kaXIsIHNlbGYuYXR0ci52aXpfY29u ZmlnLmdldCgiZG9ja2VyIiwgImltYWdlIikpCgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRi ZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUy Y2M1YWQyYjA0IGxpYi9nYWxheHkvd2ViL2Jhc2UvcGx1Z2luZnJhbWV3b3JrLnB5Ci0tLSBhL2xp Yi9nYWxheHkvd2ViL2Jhc2UvcGx1Z2luZnJhbWV3b3JrLnB5CisrKyBiL2xpYi9nYWxheHkvd2Vi L2Jhc2UvcGx1Z2luZnJhbWV3b3JrLnB5CkBAIC0yMCw2ICsyMCw4IEBACiBmcm9tIGdhbGF4eSBp bXBvcnQgdXRpbAogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgb2RpY3QKIGZyb20gZ2FsYXh5LnV0 aWwgaW1wb3J0IGJ1bmNoCitmcm9tIC5pbnRlcmFjdGl2ZV9lbnZpcm9ubWVudHMgaW1wb3J0IElu dGVyYWN0aXZlRW52aW9ybm1lbnRSZXF1ZXN0CisKPTIwCiBpbXBvcnQgbG9nZ2luZwogbG9nID0z RCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQpAQCAtNTkwLDYgKzU5MiwxMSBAQAogICAg ICAgICBpZiAncGx1Z2luX3BhdGgnIG5vdCBpbiBrd2FyZ3M6CiAgICAgICAgICAgICBrd2FyZ3Nb ICdwbHVnaW5fcGF0aCddID0zRCBvcy5wYXRoLmFic3BhdGgoIHBsdWdpbi5wYXRoICkKPTIwCisg ICAgICAgIHBsdWdpbl90eXBlID0zRCBwbHVnaW4uY29uZmlnWyJwbHVnaW5fdHlwZSJdCisgICAg ICAgIGlmIHBsdWdpbl90eXBlID0zRD0zRCAiaW50ZXJhY3RpdmVfZW52aXJvbm1lbnQiOgorICAg ICAgICAgICAgcmVxdWVzdCA9M0QgSW50ZXJhY3RpdmVFbnZpb3JubWVudFJlcXVlc3QodHJhbnMs IHBsdWdpbikKKyAgICAgICAgICAgIGt3YXJnc1siaWVfcmVxdWVzdCJdID0zRCByZXF1ZXN0CisK ICAgICAgICAgIyBkZWZpbmVkIGhlcmUgdG8gYmUgb3ZlcnJpZGRlbgogICAgICAgICByZXR1cm4g dHJhbnMuZmlsbF90ZW1wbGF0ZSggdGVtcGxhdGVfZmlsZW5hbWUsIHRlbXBsYXRlX2xvb2t1cD0z RHA9Cmx1Z2luLnRlbXBsYXRlX2xvb2t1cCwgKiprd2FyZ3MgKQo9MjAKCmRpZmYgLXIgMzVjMTM5 MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQz OWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQgbGliL2dhbGF4eS93ZWIvcHJveHkvX19pbml0X18ucHkK LS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5L3dlYi9wcm94eS9fX2luaXRfXy5weQpAQCAt MCwwICsxLDE2OSBAQAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IGpzb24KKwor ZnJvbSAuZmlsZWxvY2sgaW1wb3J0IEZpbGVMb2NrCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBz b2NrZXRzCitmcm9tIGdhbGF4eS51dGlsLmxhenlfcHJvY2VzcyBpbXBvcnQgTGF6eVByb2Nlc3Ms IE5vT3BMYXp5UHJvY2VzcworZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3FsaXRlCisKK2xvZyA9 M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKKworCitERUZBVUxUX1BST1hZX1RPX0hP U1QgPTNEICJsb2NhbGhvc3QiCitTRUNVUkVfQ09PS0lFID0zRCAiZ2FsYXh5c2Vzc2lvbiIKKwor CitjbGFzcyBQcm94eU1hbmFnZXIob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwg Y29uZmlnICk6CisgICAgICAgIGZvciBvcHRpb24gaW4gWyAibWFuYWdlX2R5bmFtaWNfcHJveHki LCAiZHluYW1pY19wcm94eV9iaW5kX3BvcnQiLD0KICJkeW5hbWljX3Byb3h5X2JpbmRfaXAiLCAi ZHluYW1pY19wcm94eV9kZWJ1ZyIgXToKKyAgICAgICAgICAgIHNldGF0dHIoIHNlbGYsIG9wdGlv biwgZ2V0YXR0ciggY29uZmlnLCBvcHRpb24gKSApCisgICAgICAgIHNlbGYubGF1bmNoX2J5ID0z RCAibm9kZSIgICMgVE9ETzogU3VwcG9ydCBkb2NrZXIKKyAgICAgICAgaWYgc2VsZi5tYW5hZ2Vf ZHluYW1pY19wcm94eToKKyAgICAgICAgICAgIHNlbGYubGF6eV9wcm9jZXNzID0zRCBzZWxmLl9f c2V0dXBfbGF6eV9wcm9jZXNzKCBjb25maWcgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg c2VsZi5sYXp5X3Byb2Nlc3MgPTNEIE5vT3BMYXp5UHJvY2VzcygpCisgICAgICAgIHNlbGYucHJv eHlfaXBjID0zRCBwcm94eV9pcGMoY29uZmlnKQorCisgICAgZGVmIHNodXRkb3duKCBzZWxmICk6 CisgICAgICAgIHNlbGYubGF6eV9wcm9jZXNzLnNodXRkb3duKCkKKworICAgIGRlZiBzZXR1cF9w cm94eSggc2VsZiwgdHJhbnMsIGhvc3Q9M0RERUZBVUxUX1BST1hZX1RPX0hPU1QsIHBvcnQ9M0RO b249CmUgKToKKyAgICAgICAgaWYgc2VsZi5tYW5hZ2VfZHluYW1pY19wcm94eToKKyAgICAgICAg ICAgIGxvZy5pbmZvKCJBdHRlbXB0aW5nIHRvIHN0YXJ0IGR5bmFtaWMgcHJveHkgcHJvY2VzcyIp CisgICAgICAgICAgICBzZWxmLmxhenlfcHJvY2Vzcy5zdGFydF9wcm9jZXNzKCkKKworICAgICAg ICBhdXRoZW50aWNhdGlvbiA9M0QgQXV0aGVudGljYXRpb25Ub2tlbih0cmFucykKKyAgICAgICAg cHJveHlfcmVxdWVzdHMgPTNEIFByb3h5UmVxdWVzdHMoaG9zdD0zRGhvc3QsIHBvcnQ9M0Rwb3J0 KQorICAgICAgICBzZWxmLnByb3h5X2lwYy5oYW5kbGVfcmVxdWVzdHMoYXV0aGVudGljYXRpb24s IHByb3h5X3JlcXVlc3RzKQorICAgICAgICAjIFRPRE86IFRoZXNlIHNob3VsZG4ndCBuZWVkIHRv IGJlIHJlcXVlc3QuaG9zdCBhbmQgcmVxdWVzdC5zY2hlbWU9CiAtCisgICAgICAgICMgdGhvdWdo IHRoZXkgYXJlIHJlYXNvbmFibGUgZGVmYXVsdHMuCisgICAgICAgIGhvc3QgPTNEIHRyYW5zLnJl cXVlc3QuaG9zdAorICAgICAgICBpZiAnOicgaW4gaG9zdDoKKyAgICAgICAgICAgIGhvc3QgPTNE IGhvc3RbMDpob3N0LmluZGV4KCc6JyldCisgICAgICAgIHNjaGVtZSA9M0QgdHJhbnMucmVxdWVz dC5zY2hlbWUKKyAgICAgICAgcHJveHlfdXJsID0zRCAnJXM6Ly8lczolZCcgJSAoc2NoZW1lLCBo b3N0LCBzZWxmLmR5bmFtaWNfcHJveHlfYmluPQpkX3BvcnQpCisgICAgICAgIHJldHVybiB7Cisg ICAgICAgICAgICAncHJveHlfdXJsJzogcHJveHlfdXJsLAorICAgICAgICAgICAgJ3Byb3hpZWRf cG9ydCc6IHByb3h5X3JlcXVlc3RzLnBvcnQsCisgICAgICAgICAgICAncHJveGllZF9ob3N0Jzog cHJveHlfcmVxdWVzdHMuaG9zdCwKKyAgICAgICAgfQorCisgICAgZGVmIF9fc2V0dXBfbGF6eV9w cm9jZXNzKCBzZWxmLCBjb25maWcgKToKKyAgICAgICAgbGF1bmNoZXIgPTNEIHByb3h5X2xhdW5j aGVyKHNlbGYpCisgICAgICAgIGNvbW1hbmQgPTNEIGxhdW5jaGVyLmxhdW5jaF9wcm94eV9jb21t YW5kKGNvbmZpZykKKyAgICAgICAgcmV0dXJuIExhenlQcm9jZXNzKGNvbW1hbmQpCisKKworZGVm IHByb3h5X2xhdW5jaGVyKGNvbmZpZyk6CisgICAgcmV0dXJuIE5vZGVQcm94eUxhdW5jaGVyKCkK KworCitjbGFzcyBQcm94eUxhdW5jaGVyKG9iamVjdCk6CisKKyAgICBkZWYgbGF1bmNoX3Byb3h5 X2NvbW1hbmQoc2VsZiwgY29uZmlnKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv cigpCisKKworY2xhc3MgTm9kZVByb3h5TGF1bmNoZXIob2JqZWN0KToKKworICAgIGRlZiBsYXVu Y2hfcHJveHlfY29tbWFuZChzZWxmLCBjb25maWcpOgorICAgICAgICBhcmdzID0zRCBbCisgICAg ICAgICAgICAiLS1zZXNzaW9ucyIsIGNvbmZpZy5wcm94eV9zZXNzaW9uX21hcCwKKyAgICAgICAg ICAgICItLWlwIiwgY29uZmlnLmR5bmFtaWNfcHJveHlfYmluZF9pcCwKKyAgICAgICAgICAgICIt LXBvcnQiLCBzdHIoY29uZmlnLmR5bmFtaWNfcHJveHlfYmluZF9wb3J0KSwKKyAgICAgICAgXQor ICAgICAgICBpZiBjb25maWcuZHluYW1pY19wcm94eV9kZWJ1ZzoKKyAgICAgICAgICAgIGFyZ3Mu YXBwZW5kKCItLXZlcmJvc2UiKQorCisgICAgICAgIHBhcmVudF9kaXJlY3RvcnkgPTNEIG9zLnBh dGguZGlybmFtZSggX19maWxlX18gKQorICAgICAgICBwYXRoX3RvX2FwcGxpY2F0aW9uID0zRCBv cy5wYXRoLmpvaW4oIHBhcmVudF9kaXJlY3RvcnksICJqcyIsICJsaWI9CiIsICJtYWluLmpzIiAp CisgICAgICAgIGNvbW1hbmQgPTNEIFsgcGF0aF90b19hcHBsaWNhdGlvbiBdICsgYXJncworICAg ICAgICByZXR1cm4gY29tbWFuZAorCisKK2NsYXNzIEF1dGhlbnRpY2F0aW9uVG9rZW4ob2JqZWN0 KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFucyk6CisgICAgICAgIHNlbGYuY29va2ll X25hbWUgPTNEIFNFQ1VSRV9DT09LSUUKKyAgICAgICAgc2VsZi5jb29raWVfdmFsdWUgPTNEIHRy YW5zLmdldF9jb29raWUoIHNlbGYuY29va2llX25hbWUgKQorCisKK2NsYXNzIFByb3h5UmVxdWVz dHMob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PTNETm9uZSwgcG9ydD0z RE5vbmUpOgorICAgICAgICBpZiBob3N0IGlzIE5vbmU6CisgICAgICAgICAgICBob3N0ID0zRCBE RUZBVUxUX1BST1hZX1RPX0hPU1QKKyAgICAgICAgaWYgcG9ydCBpcyBOb25lOgorICAgICAgICAg ICAgcG9ydCA9M0Qgc29ja2V0cy51bnVzZWRfcG9ydCgpCisgICAgICAgICAgICBsb2cuaW5mbygi T2J0YWluZWQgdW51c2VkIHBvcnQgJWQiICUgcG9ydCkKKyAgICAgICAgc2VsZi5ob3N0ID0zRCBo b3N0CisgICAgICAgIHNlbGYucG9ydCA9M0QgcG9ydAorCisKK2RlZiBwcm94eV9pcGMoY29uZmln KToKKyAgICBwcm94eV9zZXNzaW9uX21hcCA9M0QgY29uZmlnLnByb3h5X3Nlc3Npb25fbWFwCisg ICAgaWYgcHJveHlfc2Vzc2lvbl9tYXAuZW5kc3dpdGgoIi5zcWxpdGUiKToKKyAgICAgICAgcmV0 dXJuIFNxbGl0ZVByb3h5SXBjKHByb3h5X3Nlc3Npb25fbWFwKQorICAgIGVsc2U6CisgICAgICAg IHJldHVybiBKc29uRmlsZVByb3h5SXBjKHByb3h5X3Nlc3Npb25fbWFwKQorCisKK2NsYXNzIFBy b3h5SXBjKG9iamVjdCk6CisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3RzKHNlbGYsIGNvb2tpZSwg aG9zdCwgcG9ydCk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisKK2Ns YXNzIEpzb25GaWxlUHJveHlJcGMob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw cm94eV9zZXNzaW9uX21hcCk6CisgICAgICAgIHNlbGYucHJveHlfc2Vzc2lvbl9tYXAgPTNEIHBy b3h5X3Nlc3Npb25fbWFwCisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3RzKHNlbGYsIGF1dGhlbnRp Y2F0aW9uLCBwcm94eV9yZXF1ZXN0cyk6CisgICAgICAgIGtleSA9M0QgIiVzOiVzIiAlICggcHJv eHlfcmVxdWVzdHMuaG9zdCwgcHJveHlfcmVxdWVzdHMucG9ydCApCisgICAgICAgIHNlY3VyZV9p ZCA9M0QgYXV0aGVudGljYXRpb24uY29va2llX3ZhbHVlCisgICAgICAgIHdpdGggRmlsZUxvY2so IHNlbGYucHJveHlfc2Vzc2lvbl9tYXAgKToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4 aXN0cyggc2VsZi5wcm94eV9zZXNzaW9uX21hcCApOgorICAgICAgICAgICAgICAgIG9wZW4oIHNl bGYucHJveHlfc2Vzc2lvbl9tYXAsICJ3IiApLndyaXRlKCAie30iICkKKyAgICAgICAgICAgIGpz b25fZGF0YSA9M0Qgb3Blbiggc2VsZi5wcm94eV9zZXNzaW9uX21hcCwgInIiICkucmVhZCgpCisg ICAgICAgICAgICBzZXNzaW9uX21hcCA9M0QganNvbi5sb2FkcygganNvbl9kYXRhICkKKyAgICAg ICAgICAgIHRvX3JlbW92ZSA9M0QgW10KKyAgICAgICAgICAgIGZvciBrLCB2YWx1ZSBpbiBzZXNz aW9uX21hcC5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIHZhbHVlID0zRD0zRCBzZWN1cmVf aWQ6CisgICAgICAgICAgICAgICAgICAgIHRvX3JlbW92ZS5hcHBlbmQoIGsgKQorICAgICAgICAg ICAgZm9yIGsgaW4gdG9fcmVtb3ZlOgorICAgICAgICAgICAgICAgIGRlbCBzZXNzaW9uX21hcFsg ayBdCisgICAgICAgICAgICBzZXNzaW9uX21hcFsga2V5IF0gPTNEIHNlY3VyZV9pZAorICAgICAg ICAgICAgbmV3X2pzb25fZGF0YSA9M0QganNvbi5kdW1wcyggc2Vzc2lvbl9tYXAgKQorICAgICAg ICAgICAgb3Blbiggc2VsZi5wcm94eV9zZXNzaW9uX21hcCwgInciICkud3JpdGUoIG5ld19qc29u X2RhdGEgKQorCisKK2NsYXNzIFNxbGl0ZVByb3h5SXBjKG9iamVjdCk6CisKKyAgICBkZWYgX19p bml0X18oc2VsZiwgcHJveHlfc2Vzc2lvbl9tYXApOgorICAgICAgICBzZWxmLnByb3h5X3Nlc3Np b25fbWFwID0zRCBwcm94eV9zZXNzaW9uX21hcAorCisgICAgZGVmIGhhbmRsZV9yZXF1ZXN0cyhz ZWxmLCBhdXRoZW50aWNhdGlvbiwgcHJveHlfcmVxdWVzdHMpOgorICAgICAgICBrZXkgPTNEICIl czolcyIgJSAoIHByb3h5X3JlcXVlc3RzLmhvc3QsIHByb3h5X3JlcXVlc3RzLnBvcnQgKQorICAg ICAgICBzZWN1cmVfaWQgPTNEIGF1dGhlbnRpY2F0aW9uLmNvb2tpZV92YWx1ZQorICAgICAgICB3 aXRoIEZpbGVMb2NrKCBzZWxmLnByb3h5X3Nlc3Npb25fbWFwICk6CisgICAgICAgICAgICBjb25u ID0zRCBzcWxpdGUuY29ubmVjdChzZWxmLnByb3h5X3Nlc3Npb25fbWFwKQorICAgICAgICAgICAg dHJ5OgorICAgICAgICAgICAgICAgIGMgPTNEIGNvbm4uY3Vyc29yKCkKKyAgICAgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIHRhYmxlCisgICAgICAgICAgICAg ICAgICAgIGMuZXhlY3V0ZSgnJydDUkVBVEUgVEFCTEUgZ3hwcm94eQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGtleSB0ZXh0IFBSSU1BUllfS0VZLCBzZWNyZXQgdGV4dCknJycp CisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAg cGFzcworICAgICAgICAgICAgICAgIGluc2VydF90bXBsID0zRCAnJydJTlNFUlQgSU5UTyBneHBy b3h5IChrZXksIHNlY3JldCkgVkFMVUU9ClMgKCclcycsICclcycpOycnJworICAgICAgICAgICAg ICAgIGluc2VydCA9M0QgaW5zZXJ0X3RtcGwgJSAoa2V5LCBzZWN1cmVfaWQpCisgICAgICAgICAg ICAgICAgYy5leGVjdXRlKGluc2VydCkKKyAgICAgICAgICAgICAgICBjb25uLmNvbW1pdCgpCisg ICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQorCisjIFRP RE86IFJFU1RmdWwgQVBJIGRyaXZlbiBwcm94eT8KKyMgVE9ETzogTVEgZGl2ZW4gcHJveHk/Cgpk aWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2Zm OGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGxpYi9nYWxheHkvd2ViL3Byb3h5 L2ZpbGVsb2NrLnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS93ZWIvcHJveHkvZmls ZWxvY2sucHkKQEAgLTAsMCArMSw4MiBAQAorIiIiIENvZGUgb2J0YWluZWQgZnJvbSBodHRwczov L2dpdGh1Yi5jb20vZG1mcmV5L0ZpbGVMb2NrCisKK1NlZSBmdWxsIGxpY2Vuc2UgYXQ6CisKK2h0 dHBzOi8vZ2l0aHViLmNvbS9kbWZyZXkvRmlsZUxvY2svYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQK KworIiIiCitpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCitpbXBvcnQgZXJybm8KKworCitjbGFzcyBG aWxlTG9ja0V4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBGaWxlTG9j ayhvYmplY3QpOgorICAgICIiIiBBIGZpbGUgbG9ja2luZyBtZWNoYW5pc20gdGhhdCBoYXMgY29u dGV4dC1tYW5hZ2VyIHN1cHBvcnQgc28KKyAgICAgICAgeW91IGNhbiB1c2UgaXQgaW4gYSB3aXRo IHN0YXRlbWVudC4gVGhpcyBzaG91bGQgYmUgcmVsYXRpdmVseSBjcm9zcworICAgICAgICBjb21w YXRpYmxlIGFzIGl0IGRvZXNuJ3QgcmVseSBvbiBtc3ZjcnQgb3IgZmNudGwgZm9yIHRoZSBsb2Nr aW5nLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfbmFtZSwgdGltZW91 dD0zRDEwLCBkZWxheT0zRC4wNSk6CisgICAgICAgICIiIiBQcmVwYXJlIHRoZSBmaWxlIGxvY2tl ci4gU3BlY2lmeSB0aGUgZmlsZSB0byBsb2NrIGFuZCBvcHRpb25hbD0KbHkKKyAgICAgICAgICAg IHRoZSBtYXhpbXVtIHRpbWVvdXQgYW5kIHRoZSBkZWxheSBiZXR3ZWVuIGVhY2ggYXR0ZW1wdCB0 byBsb2NrLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5pc19sb2NrZWQgPTNEIEZhbHNlCisg ICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKGZpbGVfbmFtZSkKKyAgICAgICAg c2VsZi5sb2NrZmlsZSA9M0QgIiVzLmxvY2siICUgZnVsbF9wYXRoCisgICAgICAgIHNlbGYuZmls ZV9uYW1lID0zRCBmdWxsX3BhdGgKKyAgICAgICAgc2VsZi50aW1lb3V0ID0zRCB0aW1lb3V0Cisg ICAgICAgIHNlbGYuZGVsYXkgPTNEIGRlbGF5CisKKyAgICBkZWYgYWNxdWlyZShzZWxmKToKKyAg ICAgICAgIiIiIEFjcXVpcmUgdGhlIGxvY2ssIGlmIHBvc3NpYmxlLiBJZiB0aGUgbG9jayBpcyBp biB1c2UsIGl0IGNoZWNrPQogYWdhaW4KKyAgICAgICAgICAgIGV2ZXJ5IGB3YWl0YCBzZWNvbmRz LiBJdCBkb2VzIHRoaXMgdW50aWwgaXQgZWl0aGVyIGdldHMgdGhlIGxvPQpjayBvcgorICAgICAg ICAgICAgZXhjZWVkcyBgdGltZW91dGAgbnVtYmVyIG9mIHNlY29uZHMsIGluIHdoaWNoIGNhc2Ug aXQgdGhyb3dzCisgICAgICAgICAgICBhbiBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAg ICBzdGFydF90aW1lID0zRCB0aW1lLnRpbWUoKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuZmQgPTNEIG9zLm9wZW4oc2VsZi5sb2Nr ZmlsZSwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCA9Cnwgb3MuT19SRFdSKQorICAgICAgICAgICAg ICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAg ICAgIGlmIGUuZXJybm8gIT0zRCBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICAgICAgICAgIHJh aXNlCisgICAgICAgICAgICAgICAgaWYgKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgPj0zRCBz ZWxmLnRpbWVvdXQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZpbGVMb2NrRXhjZXB0aW9u KCJUaW1lb3V0IG9jY3VyZWQuIikKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHNlbGYuZGVs YXkpCisgICAgICAgIHNlbGYuaXNfbG9ja2VkID0zRCBUcnVlCisKKyAgICBkZWYgcmVsZWFzZShz ZWxmKToKKyAgICAgICAgIiIiIEdldCByaWQgb2YgdGhlIGxvY2sgYnkgZGVsZXRpbmcgdGhlIGxv Y2tmaWxlLgorICAgICAgICAgICAgV2hlbiB3b3JraW5nIGluIGEgYHdpdGhgIHN0YXRlbWVudCwg dGhpcyBnZXRzIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgIGNhbGxlZCBhdCB0aGUgZW5kLgor ICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5pc19sb2NrZWQ6CisgICAgICAgICAgICBvcy5j bG9zZShzZWxmLmZkKQorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYubG9ja2ZpbGUpCisgICAg ICAgICAgICBzZWxmLmlzX2xvY2tlZCA9M0QgRmFsc2UKKworICAgIGRlZiBfX2VudGVyX18oc2Vs Zik6CisgICAgICAgICIiIiBBY3RpdmF0ZWQgd2hlbiB1c2VkIGluIHRoZSB3aXRoIHN0YXRlbWVu dC4KKyAgICAgICAgICAgIFNob3VsZCBhdXRvbWF0aWNhbGx5IGFjcXVpcmUgYSBsb2NrIHRvIGJl IHVzZWQgaW4gdGhlIHdpdGggYmxvPQpjay4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBz ZWxmLmlzX2xvY2tlZDoKKyAgICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCisgICAgICAgIHJldHVy biBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6 CisgICAgICAgICIiIiBBY3RpdmF0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgd2l0aCBzdGF0ZW1lbnQu CisgICAgICAgICAgICBJdCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VzIHRoZSBsb2NrIGlmIGl0IGlz bid0IGxvY2tlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuaXNfbG9ja2VkOgorICAg ICAgICAgICAgc2VsZi5yZWxlYXNlKCkKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAg ICAiIiIgTWFrZSBzdXJlIHRoYXQgdGhlIEZpbGVMb2NrIGluc3RhbmNlIGRvZXNuJ3QgbGVhdmUg YSBsb2NrZmlsZQorICAgICAgICAgICAgbHlpbmcgYXJvdW5kLgorICAgICAgICAiIiIKKyAgICAg ICAgc2VsZi5yZWxlYXNlKCkKCmRpZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1 ZjgzMTRlMTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQg bGliL2dhbGF4eS93ZWIvcHJveHkvanMvRG9ja2VyZmlsZQotLS0gL2Rldi9udWxsCisrKyBiL2xp Yi9nYWxheHkvd2ViL3Byb3h5L2pzL0RvY2tlcmZpbGUKQEAgLTAsMCArMSwxOCBAQAorIyBIYXZl IG5vdCB5ZXQgZ290dGVuIHRoaXMgdG8gd29yayAtIGdvYWwgd2FzIHRvIGxhdW5jaCB0aGUgcHJv eCBpbiBhIERvY2s9CmVyIGNvbnRhaW5lci4KKyMgTmV0d29ya2luZyBpcyBhIGJpdCB0cmlja3kg dGhvdWdoIC0gY291bGQgbm90IGdldCB0aGUgY2hpbGQgcHJveHkgdG8gdGFsPQprIHRvIHRoZSBj aGlsZAorIyBJUHl0aG9uIGNvbnRhaW5lci4KKworCisjIHN1ZG8gZG9ja2VyIGJ1aWxkIC0tbm8t Y2FjaGU9M0R0cnVlIC10IGd4cHJveHkgLgorIyBzdWRvIGRvY2tlciBydW4gLS1uZXQgaG9zdCAt diAvaG9tZS9qb2huL3dvcmtzcGFjZS9nYWxheHktY2VudHJhbC9kYXRhYmE9CnNlOi92YXIvZ3hw cm94eSAtcCA4ODAwOjg4MDAgLXQgZ3hwcm94eSBsaWIvbWFpbi5qcyAtLXNlc3Npb25zIC92YXIv Z3hwcm94eT0KL3Nlc3Npb25fbWFwLmpzb24gLS1pcCAwLjAuMC4wIC0tcG9ydCA4ODAwCisKK0ZS T00gbm9kZTowLjExLjEzCisKK1JVTiBta2RpciAtcCAvdXNyL3NyYy9neHByb3h5CitXT1JLRElS IC91c3Ivc3JjL2d4cHJveHkKKworQUREIHBhY2thZ2UuanNvbiAvdXNyL3NyYy9neHByb3h5Lwor UlVOIG5wbSBpbnN0YWxsCitBREQgLiAvdXNyL3NyYy9neHByb3h5CisKK0NNRCBbICJsaWIvbWFp bi5qcyIgXQoKZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFl IC1yIDcwZjdmZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBsaWIvZ2FsYXh5 L3dlYi9wcm94eS9qcy9SRUFETUUubWQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5L3dl Yi9wcm94eS9qcy9SRUFETUUubWQKQEAgLTAsMCArMSwyIEBACisjIEEgZHluYW1pYyBjb25maWd1 cmFibGUgcmV2ZXJzZSBwcm94eSBmb3IgdXNlIHdpdGhpbiBHYWxheHkKKwoKZGlmZiAtciAzNWMx MzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZl NDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBsaWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvbWFp bi5qcwotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9tYWlu LmpzCkBAIC0wLDAgKzEsNDEgQEAKKyMhL3Vzci9iaW4vZW52IG5vZGUKKy8qCitJbnNwaXJhdGlv biB0YWtlbiBmcm9tPTIwCisJaHR0cHM6Ly9naXRodWIuY29tL2p1cHl0ZXIvbXVsdGl1c2VyLXNl cnZlci9ibG9iL21hc3Rlci9tdWx0aXVzZXIvanMvbWFpbj0KLmpzCisqLwordmFyIGZzID0zRCBy ZXF1aXJlKCdmcycpOwordmFyIGFyZ3MgPTNEIHJlcXVpcmUoJ2NvbW1hbmRlcicpOworCitwYWNr YWdlX2luZm8gPTNEIHJlcXVpcmUoJy4uL3BhY2thZ2UnKQorCithcmdzCisJLnZlcnNpb24ocGFj a2FnZV9pbmZvKQorICAgIC5vcHRpb24oJy0taXAgPG4+JywgJ1B1YmxpYy1mYWNpbmcgSVAgb2Yg dGhlIHByb3h5JywgJ2xvY2FsaG9zdCcpCisgICAgLm9wdGlvbignLS1wb3J0IDxuPicsICdQdWJs aWMtZmFjaW5nIHBvcnQgb2YgdGhlIHByb3h5JywgcGFyc2VJbnQpCisgICAgLm9wdGlvbignLS1j b29raWUgPGNvb2tpZW5hbWU+JywgJ0Nvb2tpZSBwcm92aW5nIGF1dGhlbnRpY2F0aW9uJywgJ2dh bD0KYXh5c2Vzc2lvbicpCisgICAgLm9wdGlvbignLS1zZXNzaW9ucyA8ZmlsZT4nLCAnUm91dGVz IGZpbGUgdG8gbW9uaXRvcicpCisgICAgLm9wdGlvbignLS12ZXJib3NlJykKKworYXJncy5wYXJz ZShwcm9jZXNzLmFyZ3YpOworCit2YXIgRHluYW1pY1Byb3h5ID0zRCByZXF1aXJlKCcuL3Byb3h5 LmpzJykuRHluYW1pY1Byb3h5OwordmFyIG1hcEZvciA9M0QgcmVxdWlyZSgnLi9tYXBwZXIuanMn KS5tYXBGb3I7CisKK3ZhciBzZXNzaW9ucyA9M0QgbWFwRm9yKGFyZ3Muc2Vzc2lvbnMpOworCit2 YXIgZHluYW1pY19wcm94eV9vcHRpb25zID0zRCB7CisgIHNlc3Npb25Db29raWU6IGFyZ3NbJ2Nv b2tpZSddLAorICBzZXNzaW9uTWFwOiBzZXNzaW9ucywKKyAgdmVyYm9zZTogYXJncy52ZXJib3Nl Cit9CisKK3ZhciBkeW5hbWljX3Byb3h5ID0zRCBuZXcgRHluYW1pY1Byb3h5KGR5bmFtaWNfcHJv eHlfb3B0aW9ucyk7CisKK3ZhciBsaXN0ZW4gPTNEIHt9OworbGlzdGVuLnBvcnQgPTNEIGFyZ3Mu cG9ydCB8fCA4MDAwOworbGlzdGVuLmlwID0zRCBhcmdzLmlwOworCitpZihhcmdzLnZlcmJvc2Up IHsKKwljb25zb2xlLmxvZygiTGlzdGVuaW5nIG9uICIgKyBsaXN0ZW4uaXAgKyAiOiIgKyBsaXN0 ZW4ucG9ydCk7Cit9CitkeW5hbWljX3Byb3h5LnByb3h5X3NlcnZlci5saXN0ZW4obGlzdGVuLnBv cnQsIGxpc3Rlbi5pcCk7CgpkaWZmIC1yIDM1YzEzOTJiMDQ5Y2JmNDE4NDRiZTFmY2YyZDA1NWY4 MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9CjYyZDY0MTUyY2M1YWQyYjA0IGxp Yi9nYWxheHkvd2ViL3Byb3h5L2pzL2xpYi9tYXBwZXIuanMKLS0tIC9kZXYvbnVsbAorKysgYi9s aWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvbWFwcGVyLmpzCkBAIC0wLDAgKzEsNzggQEAKK3Zh ciBmcyA9M0QgcmVxdWlyZSgnZnMnKTsKK3ZhciBzcWxpdGUzID0zRCByZXF1aXJlKCdzcWxpdGUz JykKKworCit2YXIgZW5kc1dpdGggPTNEIGZ1bmN0aW9uKHN1YmplY3RTdHJpbmcsIHNlYXJjaFN0 cmluZykgeworICAgIHZhciBwb3NpdGlvbiA9M0Qgc3ViamVjdFN0cmluZy5sZW5ndGg7CisgICAg cG9zaXRpb24gLT0zRCBzZWFyY2hTdHJpbmcubGVuZ3RoOworICAgIHZhciBsYXN0SW5kZXggPTNE IHN1YmplY3RTdHJpbmcuaW5kZXhPZihzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKTsKKyAgICByZXR1 cm4gbGFzdEluZGV4ICE9M0Q9M0QgLTEgJiYgbGFzdEluZGV4ID0zRD0zRD0zRCBwb3NpdGlvbjsK K307CisKKwordmFyIHVwZGF0ZUZyb21Kc29uID0zRCBmdW5jdGlvbihwYXRoLCBtYXApIHsKKyAg ICB2YXIgY29udGVudCA9M0QgZnMucmVhZEZpbGVTeW5jKHBhdGgsICd1dGY4Jyk7CisgICAgdmFy IGtleVRvU2Vzc2lvbiA9M0QgSlNPTi5wYXJzZShjb250ZW50KTsKKyAgICB2YXIgbmV3U2Vzc2lv bnMgPTNEIHt9OworICAgIGZvcih2YXIga2V5IGluIGtleVRvU2Vzc2lvbikgeworICAgICAgICB2 YXIgaG9zdEFuZFBvcnQgPTNEIGtleS5zcGxpdCgiOiIpOworICAgICAgICAvLyAnaG9zdCc6IGhv c3RBbmRQb3J0WzBdLAorICAgICAgICBuZXdTZXNzaW9uc1trZXlUb1Nlc3Npb25ba2V5XV0gPTNE IHsndGFyZ2V0Jzogeydob3N0JzogaG9zdEFuZFBvcnQ9ClswXSwgJ3BvcnQnOiBwYXJzZUludCho b3N0QW5kUG9ydFsxXSl9fTsKKyAgICB9CisgICAgZm9yKHZhciBvbGRTZXNzaW9uIGluIG1hcCkg eworICAgICAgICBpZighKG9sZFNlc3Npb24gaW4gbmV3U2Vzc2lvbnMpKSB7CisgICAgICAgICAg ICBkZWxldGUgbWFwWyBvbGRTZXNzaW9uIF07CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yKHZh ciBuZXdTZXNzaW9uIGluIG5ld1Nlc3Npb25zKSB7CisgICAgICAgIG1hcFtuZXdTZXNzaW9uXSA9 M0QgbmV3U2Vzc2lvbnNbbmV3U2Vzc2lvbl07CisgICAgfQorfQorCit2YXIgdXBkYXRlRnJvbVNx bGl0ZSA9M0QgZnVuY3Rpb24ocGF0aCwgbWFwKSB7CisgICAgdmFyIG5ld1Nlc3Npb25zID0zRCB7 fTsKKyAgICB2YXIgbG9hZFNlc3Npb25zID0zRCBmdW5jdGlvbigpIHsKKyAgICAgICAgZGIuZWFj aCgiU0VMRUNUIGtleSwgc2VjcmV0IEZST00gZ3hwcm94eSIsIGZ1bmN0aW9uKGVyciwgcm93KSB7 CisgICAgICAgICAgICB2YXIga2V5ID0zRCByb3dbJ2tleSddOworICAgICAgICAgICAgdmFyIHNl Y3JldCA9M0Qgcm93WydzZWNyZXQnXTsKKyAgICAgICAgICAgIHZhciBob3N0QW5kUG9ydCA9M0Qg a2V5LnNwbGl0KCI6Iik7CisgICAgICAgICAgICB2YXIgdGFyZ2V0ID0zRCB7J2hvc3QnOiBob3N0 QW5kUG9ydFswXSwgJ3BvcnQnOiBwYXJzZUludChob3N0QT0KbmRQb3J0WzFdKX07CisgICAgICAg ICAgICBuZXdTZXNzaW9uc1tzZWNyZXRdID0zRCB7J3RhcmdldCc6IHRhcmdldH07CisgICAgICAg IH0sIGZpbmlzaCk7CisgICAgfTsKKworICAgIHZhciBmaW5pc2ggPTNEIGZ1bmN0aW9uKCkgewor ICAgICAgICBmb3IodmFyIG9sZFNlc3Npb24gaW4gbWFwKSB7CisgICAgICAgICAgICBpZighKG9s ZFNlc3Npb24gaW4gbmV3U2Vzc2lvbnMpKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIG1hcFsg b2xkU2Vzc2lvbiBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvcih2YXIg bmV3U2Vzc2lvbiBpbiBuZXdTZXNzaW9ucykgeworICAgICAgICAgICAgbWFwW25ld1Nlc3Npb25d ID0zRCBuZXdTZXNzaW9uc1tuZXdTZXNzaW9uXTsKKyAgICAgICAgfQorICAgICAgICBkYi5jbG9z ZSgpOworICAgIH07CisKKyAgICB2YXIgZGIgPTNEIG5ldyBzcWxpdGUzLkRhdGFiYXNlKHBhdGgs IGxvYWRTZXNzaW9ucyk7Cit9OworCisKK3ZhciBtYXBGb3IgPTNEIGZ1bmN0aW9uKHBhdGgpIHsK KyAgICB2YXIgbWFwID0zRCB7fTsKKyAgICB2YXIgbG9hZE1hcDsKKyAgICBpZihlbmRzV2l0aChw YXRoLCAnLnNxbGl0ZScpKSB7CisgICAgICAgIGxvYWRNYXAgPTNEIGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgdXBkYXRlRnJvbVNxbGl0ZShwYXRoLCBtYXApOworICAgICAgICB9CisgICAgfSBl bHNlIHsKKyAgICAgICAgbG9hZE1hcCA9M0QgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1cGRh dGVGcm9tSnNvbihwYXRoLCBtYXApOworICAgICAgICB9CisgICAgfQorICAgIGNvbnNvbGUubG9n KCJXYXRjaGluZyBwYXRoICIgKyBwYXRoKTsKKyAgICBsb2FkTWFwKCk7CisgICAgZnMud2F0Y2go cGF0aCwgbG9hZE1hcCk7CisgICAgcmV0dXJuIG1hcDsKK307CisKK2V4cG9ydHMubWFwRm9yID0z RCBtYXBGb3I7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciAzNWMxMzkyYjA0 OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZlNDM5YmVi PQo2MmQ2NDE1MmNjNWFkMmIwNCBsaWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvcHJveHkuanMK LS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5L3dlYi9wcm94eS9qcy9saWIvcHJveHkuanMK QEAgLTAsMCArMSwxMTkgQEAKK3ZhciBodHRwID0zRCByZXF1aXJlKCdodHRwJyksCisgICAgaHR0 cFByb3h5ID0zRCByZXF1aXJlKCdodHRwLXByb3h5Jyk7CisKK3ZhciBib3VuZCA9M0QgZnVuY3Rp b24gKHRoYXQsIG1ldGhvZCkgeworICAgIC8vIGJpbmQgYSBtZXRob2QsIHRvIGVuc3VyZSBgdGhp cz0zRHRoYXRgIHdoZW4gaXQgaXMgY2FsbGVkCisgICAgLy8gYmVjYXVzZSBwcm90b3R5cGUgbGFu Z3VhZ2VzIGFyZSBiYWQKKyAgICByZXR1cm4gZnVuY3Rpb24gKCkgeworICAgICAgICBtZXRob2Qu YXBwbHkodGhhdCwgYXJndW1lbnRzKTsKKyAgICB9OworfTsKKwordmFyIER5bmFtaWNQcm94eSA9 M0QgZnVuY3Rpb24ob3B0aW9ucykgeworCXZhciBkeW5hbWljUHJveHkgPTNEIHRoaXM7CisJdGhp cy5zZXNzaW9uQ29va2llID0zRCBvcHRpb25zLnNlc3Npb25Db29raWU7CisJdGhpcy5zZXNzaW9u TWFwID0zRCBvcHRpb25zLnNlc3Npb25NYXA7CisgICAgdGhpcy5kZWJ1ZyA9M0Qgb3B0aW9ucy52 ZXJib3NlOworCisgICAgdmFyIGxvZ19lcnJvcnMgPTNEIGZ1bmN0aW9uKGhhbmRsZXIpIHsKKyAg ICAgICAgcmV0dXJuIGZ1bmN0aW9uIChyZXEsIHJlcykgeworICAgICAgICAgICAgdHJ5IHsKKyAg ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5hcHBseShkeW5hbWljUHJveHksIGFyZ3VtZW50 cyk7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5s b2coIkVycm9yIGluIGhhbmRsZXIgZm9yICIgKyByZXEubWV0aG9kICsgJyAnICsgcj0KZXEudXJs ICsgJzogJywgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfTsKKworICAgIHZh ciBwcm94eSA9M0QgdGhpcy5wcm94eSA9M0QgaHR0cFByb3h5LmNyZWF0ZVByb3h5U2VydmVyKHsK KyAgICAgICAgd3MgOiB0cnVlLAorICAgIH0pOworCisgICAgdGhpcy5wcm94eV9zZXJ2ZXIgPTNE IGh0dHAuY3JlYXRlU2VydmVyKAorICAgIAlsb2dfZXJyb3JzKGR5bmFtaWNQcm94eS5oYW5kbGVQ cm94eVJlcXVlc3QpCisgICAgKTsKKwl0aGlzLnByb3h5X3NlcnZlci5vbigndXBncmFkZScsIGJv dW5kKHRoaXMsIHRoaXMuaGFuZGxlV3MpKTsKK307CisKK0R5bmFtaWNQcm94eS5wcm90b3R5cGUu cmV3cml0ZVJlcXVlc3QgPTNEIGZ1bmN0aW9uKHJlcXVlc3QpIHsKK30KKworRHluYW1pY1Byb3h5 LnByb3RvdHlwZS50YXJnZXRGb3JSZXF1ZXN0ID0zRCBmdW5jdGlvbihyZXF1ZXN0KSB7CisgICAg Ly8gcmV0dXJuIHByb3h5IHRhcmdldCBmb3IgYSBnaXZlbiB1cmwKKyAgICB2YXIgc2Vzc2lvbiA9 M0QgdGhpcy5maW5kU2Vzc2lvbihyZXF1ZXN0KTsKKyAgICBmb3IgKHZhciBtYXBwZWRTZXNzaW9u IGluIHRoaXMuc2Vzc2lvbk1hcCkgeworICAgIAlpZihzZXNzaW9uID0zRD0zRCBtYXBwZWRTZXNz aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uTWFwW3Nlc3Npb25dLnRhcmdl dDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBudWxsOworfTsKKworRHluYW1pY1By b3h5LnByb3RvdHlwZS5maW5kU2Vzc2lvbiA9M0QgZnVuY3Rpb24ocmVxdWVzdCkgeworICAgIHZh ciBzZXNzaW9uQ29va2llID0zRCB0aGlzLnNlc3Npb25Db29raWU7CisgICAgICAgIHJjID0zRCBy ZXF1ZXN0LmhlYWRlcnMuY29va2llOworICAgIGlmKCFyYykgeworICAgICAgICByZXR1cm4gbnVs bDsKKyAgICB9CisgICAgdmFyIGNvb2tpZXMgPTNEIHJjLnNwbGl0KCc7Jyk7CisgICAgZm9yKHZh ciBjb29raWVJbmRleCBpbiBjb29raWVzKSB7CisgICAgCXZhciBjb29raWUgPTNEIGNvb2tpZXNb Y29va2llSW5kZXhdOworICAgICAgICB2YXIgcGFydHMgPTNEIGNvb2tpZS5zcGxpdCgnPTNEJyk7 CisJCXZhciBwYXJ0TmFtZSA9M0QgcGFydHMuc2hpZnQoKS50cmltKCk7CisgICAgICAgIGlmKHBh cnROYW1lID0zRD0zRCBzZXNzaW9uQ29va2llKSB7CisgICAgICAgIAlyZXR1cm4gdW5lc2NhcGUo cGFydHMuam9pbignPTNEJykpCisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVsbDsK K307CisKK0R5bmFtaWNQcm94eS5wcm90b3R5cGUuaGFuZGxlUHJveHlSZXF1ZXN0ID0zRCBmdW5j dGlvbihyZXEsIHJlcykgeworICAgIHZhciB0YXJnZXQgPTNEIHRoaXMudGFyZ2V0Rm9yUmVxdWVz dChyZXEpOworICAgIGlmKHRoaXMuZGVidWcpIHsKKyAgICAgICAgY29uc29sZS5sb2coIlBST1hZ ICIgKyByZXEubWV0aG9kICsgIiAiICsgcmVxLnVybCArICIgdG8gIiArIHRhcmdlPQp0KTsKKyAg ICB9CisgICAgdmFyIG9yaWdpbiA9M0QgcmVxLmhlYWRlcnMub3JpZ2luOworICAgIHRoaXMucmV3 cml0ZVJlcXVlc3QocmVxKTsKKyAgICByZXMub2xkV3JpdGVIZWFkID0zRCByZXMud3JpdGVIZWFk OworICAgIHJlcy53cml0ZUhlYWQgPTNEIGZ1bmN0aW9uKHN0YXR1c0NvZGUsIGhlYWRlcnMpIHsK KyAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgb3Jp Z2luKTsKKyAgICAgICAgcmVzLnNldEhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVu dGlhbHMnLCAndHJ1ZScpOworICAgICAgICByZXMub2xkV3JpdGVIZWFkKHN0YXR1c0NvZGUsIGhl YWRlcnMpOworICAgIH0KKyAgICB0aGlzLnByb3h5LndlYihyZXEsIHJlcywgeworICAgICAgICB0 YXJnZXQ6IHRhcmdldAorICAgIH0sIGZ1bmN0aW9uIChlKSB7CisgICAgICAgIGNvbnNvbGUubG9n KCJQcm94eSBlcnJvcjogIiwgZSk7CisgICAgICAgIHJlcy53cml0ZUhlYWQoNTAyKTsKKyAgICAg ICAgcmVzLndyaXRlKCJQcm94eSB0YXJnZXQgbWlzc2luZyIpOworICAgICAgICByZXMuZW5kKCk7 CisgICAgfSk7Cit9OworCitEeW5hbWljUHJveHkucHJvdG90eXBlLmhhbmRsZVdzID0zRCBmdW5j dGlvbihyZXEsIHJlcywgaGVhZCkgeworICAgIC8vIG5vIGxvY2FsIHJvdXRlIGZvdW5kLCB0aW1l IHRvIHByb3h5CisgICAgdmFyIHRhcmdldCA9M0QgdGhpcy50YXJnZXRGb3JSZXF1ZXN0KHJlcSk7 CisgICAgaWYodGhpcy5kZWJ1ZykgeworICAgICAgICBjb25zb2xlLmxvZygiUFJPWFkgV1MgIiAr IHJlcS51cmwgKyAiIHRvICIgKyByZXEudXJsKTsKKyAgICB9CisgICAgdmFyIG9yaWdpbiA9M0Qg cmVxLmhlYWRlcnMub3JpZ2luOworICAgIHRoaXMucmV3cml0ZVJlcXVlc3QocmVxKTsKKyAgICBy ZXMub2xkV3JpdGVIZWFkID0zRCByZXMud3JpdGVIZWFkOworICAgIHJlcy53cml0ZUhlYWQgPTNE IGZ1bmN0aW9uKHN0YXR1c0NvZGUsIGhlYWRlcnMpIHsKKyAgICAgICAgcmVzLnNldEhlYWRlcign QWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJywgb3JpZ2luKTsKKyAgICAgICAgcmVzLnNldEhl YWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHMnLCAndHJ1ZScpOworICAgICAg ICByZXMub2xkV3JpdGVIZWFkKHN0YXR1c0NvZGUsIGhlYWRlcnMpOworICAgIH0KKyAgICB0aGlz LnByb3h5LndzKHJlcSwgcmVzLCBoZWFkLCB7CisgICAgICAgIHRhcmdldDogdGFyZ2V0CisgICAg fSwgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgY29uc29sZS5sb2coIlByb3h5IGVycm9yOiAiLCBl KTsKKyAgICAgICAgcmVzLndyaXRlSGVhZCg1MDIpOworICAgICAgICByZXMud3JpdGUoIlByb3h5 IHRhcmdldCBtaXNzaW5nIik7CisgICAgICAgIHJlcy5lbmQoKTsKKyAgICB9KTsKK307CisKK2V4 cG9ydHMuRHluYW1pY1Byb3h5ID0zRCBEeW5hbWljUHJveHk7CgpkaWZmIC1yIDM1YzEzOTJiMDQ5 Y2JmNDE4NDRiZTFmY2YyZDA1NWY4MzE0ZTE2YWUgLXIgNzBmN2ZmOGM2YTk2ZWRlNmU0MzliZWI9 CjYyZDY0MTUyY2M1YWQyYjA0IGxpYi9nYWxheHkvd2ViL3Byb3h5L2pzL3BhY2thZ2UuanNvbgot LS0gL2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvd2ViL3Byb3h5L2pzL3BhY2thZ2UuanNvbgpA QCAtMCwwICsxLDE4IEBACit7CisgICJuYW1lIjogImdhbGF4eS1wcm94eSIsCisgICJ2ZXJzaW9u IjogIjAuMC4xIiwKKyAgImRlc2NyaXB0aW9uIjogIkEgZHluYW1pYyByZXZlcnNlIHByb3h5IGZv ciB1c2Ugd2l0aGluIEdhbGF4eSIsCisgICJtYWluIjogImluZGV4LmpzIiwKKyAgImF1dGhvciI6 ICJKb2huIENoaWx0b24iLAorICAibGljZW5zZSI6ICJBRkwgdjMiLAorICAicmVhZG1lRmlsZW5h bWUiOiAiUkVBRE1FLm1kIiwKKyAgInJlcG9zaXRvcnkiOiB7CisgICAgInR5cGUiOiAibWVyY3Vy aWFsIiwKKyAgICAidXJsIjogImh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwiCisgIH0sCisgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgImh0dHAtcHJveHkiOiAifjEu MSIsCisgICAgImNvbW1hbmRlciI6ICJ+Mi4yIiwKKyAgICAic3FsaXRlMyI6ICIzLjAuMiIKKyAg fQorfQoKZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1y IDcwZjdmZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBzdGF0aWMvc2NyaXB0 cy9nYWxheHkuaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmpzCi0tLSAvZGV2L251bGwKKysrIGIv c3RhdGljL3NjcmlwdHMvZ2FsYXh5LmludGVyYWN0aXZlX2Vudmlyb25tZW50cy5qcwpAQCAtMCww ICsxLDU5IEBACisvKioKKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIHJlbW92ZSBjb250ZW50IGZy b20gdGhlIG1haW4gYXJlYSBhbmQgYWRkIHRoZSBub3RlPQpib29rLgorICogTm90IGlkZW1wb3Rl bnQKKyAqLworZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKHVybCl7CisgICAgY2xlYXJfbWFpbl9h cmVhKCk7CisgICAgJCgnI21haW4nKS5hcHBlbmQoJzxpZnJhbWUgZnJhbWVCb3JkZXI9M0QiMCIg c2VhbWxlc3M9M0Qic2VhbWxlc3MiIHN0eT0KbGU9M0Qid2lkdGg6IDEwMCU7IGhlaWdodDogMTAw JTsgb3ZlcmZsb3c6aGlkZGVuOyIgc2Nyb2xsaW5nPTNEIm5vIiBzcmM9M0QiPQonKyB1cmwgKyci PjwvaWZyYW1lPicKKyAgICApOworfQorCitmdW5jdGlvbiBjbGVhcl9tYWluX2FyZWEoKXsKKyAg ICAkKCcjc3Bpbm5lcicpLnJlbW92ZSgpOworICAgICQoJyNtYWluJykuY2hpbGRyZW4oKS5yZW1v dmUoKTsKK30KKworZnVuY3Rpb24gZGlzcGxheV9zcGlubmVyKCl7CisgICAgICAgICQoJyNtYWlu JykuYXBwZW5kKCc8aW1nIGlkPTNEInNwaW5uZXIiIHNyYz0zRCInICsgZ2FsYXh5X3Jvb3QgKyAn Lz0Kc3RhdGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0eWxlPTNEInBvc2l0aW9uOmFic29s dXRlO21hcmdpbjphdXRvO3RvcDowPQo7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7Ij4nKTsKK30K KworCisvKioKKyAqIFRlc3QgYXZhaWxhYmlsaXR5IG9mIGEgVVJMLCBhbmQgY2FsbCBhIGNhbGxi YWNrIHdoZW4gZG9uZS4KKyAqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xLzI1MzkwMjA2LzM0 NzM2OAorICogQHBhcmFtIHtTdHJpbmd9IHVybDogVVJMIHRvIHRlc3QgYXZhaWxhYmlsaXR5IG9m LiBNdXN0IHJldHVybiBhIDIwMCAoMzA9CjItPjIwMCBpcyBPSykuCisgKiBAcGFyYW0ge1N0cmlu Z30gY2FsbGJhY2s6IGZ1bmN0aW9uIHRvIGNhbGwgb25jZSBzdWNjZXNzZnVsbHkgY29ubmVjdGVk LgorICoKKyAqLworZnVuY3Rpb24gdGVzdF9pZV9hdmFpbGFiaWxpdHkodXJsLCBzdWNjZXNzX2Nh bGxiYWNrKXsKKyAgICB2YXIgcmVxdWVzdF9jb3VudCA9M0QgMDsKKyAgICBkaXNwbGF5X3NwaW5u ZXIoKTsKKyAgICBpbnRlcnZhbCA9M0Qgc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKKyAgICAgICAg JC5hamF4KHsKKyAgICAgICAgICAgIHVybDogdXJsLAorICAgICAgICAgICAgeGhyRmllbGRzOiB7 CisgICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlCisgICAgICAgICAgICB9LAor ICAgICAgICAgICAgdHlwZTogIkdFVCIsCisgICAgICAgICAgICB0aW1lb3V0OiA1MDAsCisgICAg ICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9n KCJDb25uZWN0ZWQgdG8gSUUsIHJldHVybmluZyIpOworICAgICAgICAgICAgICAgIGNsZWFySW50 ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgICAgIHN1Y2Nlc3NfY2FsbGJhY2soKTsKKyAg ICAgICAgICAgIH0sCisgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oanF4aHIsIHN0YXR1cywg ZXJyb3IpeworICAgICAgICAgICAgICAgIHJlcXVlc3RfY291bnQrKzsKKyAgICAgICAgICAgICAg ICBjb25zb2xlLmxvZygiUmVxdWVzdCAiICsgcmVxdWVzdF9jb3VudCk7CisgICAgICAgICAgICAg ICAgaWYocmVxdWVzdF9jb3VudCA+IDMwKXsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl cnZhbChpbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyX21haW5fYXJlYSgpOwor ICAgICAgICAgICAgICAgICAgICB0b2FzdHIuZXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAg ICAiQ291bGQgbm90IGNvbm5lY3QgdG8gSUUsIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdD0Kb3Ii LAorICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHsnY2xvc2VCdXR0b24nOiB0cnVlLCAndGltZU91dCc6IDIwMDAwLCAndGFwVG9EaXNtPQpp c3MnOiBmYWxzZX0KKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0sIDEwMDApOworfQoKZGlmZiAtciAzNWMx MzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQwNTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZl NDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIwNCBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvZ2FsYXh5Lmlu dGVyYWN0aXZlX2Vudmlyb25tZW50cy5qcwotLS0gL2Rldi9udWxsCisrKyBiL3N0YXRpYy9zY3Jp cHRzL3BhY2tlZC9nYWxheHkuaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzLmpzCkBAIC0wLDAgKzEs MSBAQAorZnVuY3Rpb24gYXBwZW5kX25vdGVib29rKGEpe2NsZWFyX21haW5fYXJlYSgpOyQoIiNt YWluIikuYXBwZW5kKCc8aWZyYW1lIGY9CnJhbWVCb3JkZXI9M0QiMCIgc2VhbWxlc3M9M0Qic2Vh bWxlc3MiIHN0eWxlPTNEIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7ID0Kb3ZlcmZsb3c6aGlk ZGVuOyIgc2Nyb2xsaW5nPTNEIm5vIiBzcmM9M0QiJythKyciPjwvaWZyYW1lPicpfWZ1bmN0aW9u IGNsZWFyPQpfbWFpbl9hcmVhKCl7JCgiI3NwaW5uZXIiKS5yZW1vdmUoKTskKCIjbWFpbiIpLmNo aWxkcmVuKCkucmVtb3ZlKCl9ZnVuY3Rpb249CiBkaXNwbGF5X3NwaW5uZXIoKXskKCIjbWFpbiIp LmFwcGVuZCgnPGltZyBpZD0zRCJzcGlubmVyIiBzcmM9M0QiJytnYWxheHlfcj0Kb290Kycvc3Rh dGljL3N0eWxlL2xhcmdlc3Bpbm5lci5naWYiIHN0eWxlPTNEInBvc2l0aW9uOmFic29sdXRlO21h cmdpbjphdXRvPQo7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7Ij4nKX1mdW5jdGlvbiB0 ZXN0X2llX2F2YWlsYWJpbGl0eShiLGMpe3ZhciA9CmE9M0QwO2Rpc3BsYXlfc3Bpbm5lcigpO2lu dGVydmFsPTNEc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXskLmFqYXgoe3VybDpiLHhocj0KRmllbGRz Ont3aXRoQ3JlZGVudGlhbHM6dHJ1ZX0sdHlwZToiR0VUIix0aW1lb3V0OjUwMCxzdWNjZXNzOmZ1 bmN0aW9uKCl7Y29uPQpzb2xlLmxvZygiQ29ubmVjdGVkIHRvIElFLCByZXR1cm5pbmciKTtjbGVh ckludGVydmFsKGludGVydmFsKTtjKCl9LGVycm9yOmY9CnVuY3Rpb24oZixkLGUpe2ErKztjb25z b2xlLmxvZygiUmVxdWVzdCAiK2EpO2lmKGE+MzApe2NsZWFySW50ZXJ2YWwoaW50ZXJ2YT0KbCk7 Y2xlYXJfbWFpbl9hcmVhKCk7dG9hc3RyLmVycm9yKCJDb3VsZCBub3QgY29ubmVjdCB0byBJRSwg Y29udGFjdCB5b3VyIGFkPQptaW5pc3RyYXRvciIsIkVycm9yIix7Y2xvc2VCdXR0b246dHJ1ZSx0 aW1lT3V0OjIwMDAwLHRhcFRvRGlzbWlzczpmYWxzZX0pfX09Cn0pfSwxMDAwKX07ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciAzNWMxMzkyYjA0OWNiZjQxODQ0YmUxZmNmMmQw NTVmODMxNGUxNmFlIC1yIDcwZjdmZjhjNmE5NmVkZTZlNDM5YmViPQo2MmQ2NDE1MmNjNWFkMmIw NCB0ZXN0L3VuaXQvdGVzdF9sYXp5X3Byb2Nlc3MucHkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0 L3VuaXQvdGVzdF9sYXp5X3Byb2Nlc3MucHkKQEAgLTAsMCArMSwxOSBAQAoraW1wb3J0IG9zCitp bXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0aW1lCisKK2Zyb20gZ2FsYXh5LnV0aWwubGF6eV9wcm9j ZXNzIGltcG9ydCBMYXp5UHJvY2VzcworCisKK2RlZiB0ZXN0X2xhenlfcHJvY2VzcygpOgorICAg IHQgPTNEIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgb3MucmVtb3ZlKHQubmFt ZSkKKyAgICBsYXp5X3Byb2Nlc3MgPTNEIExhenlQcm9jZXNzKFsiYmFzaCIsICItYyIsICJ0b3Vj aCAlczsgc2xlZXAgMTAwIiAlIHQuPQpuYW1lXSkKKyAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhp c3RzKHQubmFtZSkKKyAgICBsYXp5X3Byb2Nlc3Muc3RhcnRfcHJvY2VzcygpCisgICAgdGltZS5z bGVlcCguMDIpCisgICAgYXNzZXJ0IGxhenlfcHJvY2Vzcy5wcm9jZXNzLnBvbGwoKSBpcyBOb25l CisgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHQubmFtZSkKKyAgICBsYXp5X3Byb2Nlc3Muc2h1 dGRvd24oKQorICAgIHRpbWUuc2xlZXAoLjAyKQorICAgIGFzc2VydCBsYXp5X3Byb2Nlc3MucHJv Y2Vzcy5wb2xsKCkKCmRpZmYgLXIgMzVjMTM5MmIwNDljYmY0MTg0NGJlMWZjZjJkMDU1ZjgzMTRl MTZhZSAtciA3MGY3ZmY4YzZhOTZlZGU2ZTQzOWJlYj0KNjJkNjQxNTJjYzVhZDJiMDQgdGVzdC91 bml0L3Rlc3Rfc29ja2V0cy5weQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdW5pdC90ZXN0X3Nv Y2tldHMucHkKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHNvY2tldAorZnJvbSBnYWxheHkudXRp bCBpbXBvcnQgc29ja2V0cworCisKK2RlZiB0ZXN0X3VudXNlZF9mcmVlX3BvcnRfdW5jb25zdHJh aW5lZCgpOgorICAgIHBvcnQgPTNEIHNvY2tldHMudW51c2VkX3BvcnQoKQorCisgICAgcyA9M0Qg c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICMg d291bGQgdGhyb3cgZXhjZXB0aW9uIGlmIHBvcnQgd2FzIG5vdCBmcmVlLgorICAgIHMuYmluZCgo J2xvY2FsaG9zdCcsIHBvcnQpKQorICAgIHMuY2xvc2UoKQorCgpSZXBvc2l0b3J5IFVSTDogaHR0 cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC8KCi0tCgpUaGlzIGlzIGEg Y29tbWl0IG5vdGlmaWNhdGlvbiBmcm9tIGJpdGJ1Y2tldC5vcmcuIFlvdSBhcmUgcmVjZWl2aW5n CnRoaXMgYmVjYXVzZSB5b3UgaGF2ZSB0aGUgc2VydmljZSBlbmFibGVkLCBhZGRyZXNzaW5nIHRo ZSByZWNpcGllbnQgb2YKdGhpcyBlbWFpbC4K