1688054433
waR3U4bTeM%3Ac397bfd3ceef9aed0a372650c12ecf43-ebb399b697aa3339590c5aceb10f7eaf
s:126196:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MTg6IlRva2VuaXplcyBKUyBjb2RlLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTozOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTM6IkdyZWcgU2hlcndvb2QiO3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yRW1haWwiO3M6MTk6ImdzaGVyd29vZEBzcXVpei5uZXQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO31pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjk6ImNvcHlyaWdodCI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NDQ6IjIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo3OiJsaWNlbnNlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo4MDoiaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dCI6Mjp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZSI7czowOiIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6ImViYjM5OWI2OTdhYTMzMzk1OTBjNWFjZWIxMGY3ZWFmIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG5hbWUiO3M6NjoiSlMucGhwIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NTQ6InZlbmRvci9zcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyL3NyYy9Ub2tlbml6ZXJzL0pTLnBocCI7czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBzb3VyY2UiO3M6NTAxNzk6Ijw/cGhwCi8qKgogKiBUb2tlbml6ZXMgSlMgY29kZS4KICoKICogQGF1dGhvciAgICBHcmVnIFNoZXJ3b29kIDxnc2hlcndvb2RAc3F1aXoubmV0PgogKiBAY29weXJpZ2h0IDIwMDYtMjAxNSBTcXVpeiBQdHkgTHRkIChBQk4gNzcgMDg0IDY3MCA2MDApCiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9naXRodWIuY29tL3NxdWl6bGFicy9QSFBfQ29kZVNuaWZmZXIvYmxvYi9tYXN0ZXIvbGljZW5jZS50eHQgQlNEIExpY2VuY2UKICovCgpuYW1lc3BhY2UgUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnM7Cgp1c2UgUEhQX0NvZGVTbmlmZmVyXENvbmZpZzsKdXNlIFBIUF9Db2RlU25pZmZlclxFeGNlcHRpb25zXFRva2VuaXplckV4Y2VwdGlvbjsKdXNlIFBIUF9Db2RlU25pZmZlclxVdGlsOwoKY2xhc3MgSlMgZXh0ZW5kcyBUb2tlbml6ZXIKewoKICAgIC8qKgogICAgICogQSBsaXN0IG9mIHRva2VucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG9wZW4gYSBzY29wZS4KICAgICAqCiAgICAgKiBUaGlzIGFycmF5IGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBraW5kIG9mIHRva2VuIHRoZSBzY29wZQogICAgICogb3BlbmVyIHVzZXMgdG8gb3BlbiBhbmQgY2xvc2UgdGhlIHNjb3BlLCBpZiB0aGUgdG9rZW4gc3RyaWN0bHkgcmVxdWlyZXMKICAgICAqIGFuIG9wZW5lciwgaWYgdGhlIHRva2VuIGNhbiBzaGFyZSBhIHNjb3BlIGNsb3NlciwgYW5kIHdobyBpdCBjYW4gYmUgc2hhcmVkCiAgICAgKiB3aXRoLiBBbiBleGFtcGxlIG9mIGEgdG9rZW4gdGhhdCBzaGFyZXMgYSBzY29wZSBjbG9zZXIgaXMgYSBDQVNFIHNjb3BlLgogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICRzY29wZU9wZW5lcnMgPSBbCiAgICAgICAgVF9JRiAgICAgICA9PiBbCiAgICAgICAgICAgICdzdGFydCcgID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdlbmQnICAgID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwKICAgICAgICAgICAgJ3N0cmljdCcgPT4gZmFsc2UsCiAgICAgICAgICAgICdzaGFyZWQnID0+IGZhbHNlLAogICAgICAgICAgICAnd2l0aCcgICA9PiBbXSwKICAgICAgICBdLAogICAgICAgIFRfVFJZICAgICAgPT4gWwogICAgICAgICAgICAnc3RhcnQnICA9PiBbVF9PUEVOX0NVUkxZX0JSQUNLRVQgPT4gVF9PUEVOX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnZW5kJyAgICA9PiBbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdzdHJpY3QnID0+IHRydWUsCiAgICAgICAgICAgICdzaGFyZWQnID0+IGZhbHNlLAogICAgICAgICAgICAnd2l0aCcgICA9PiBbXSwKICAgICAgICBdLAogICAgICAgIFRfQ0FUQ0ggICAgPT4gWwogICAgICAgICAgICAnc3RhcnQnICA9PiBbVF9PUEVOX0NVUkxZX0JSQUNLRVQgPT4gVF9PUEVOX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnZW5kJyAgICA9PiBbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdzdHJpY3QnID0+IHRydWUsCiAgICAgICAgICAgICdzaGFyZWQnID0+IGZhbHNlLAogICAgICAgICAgICAnd2l0aCcgICA9PiBbXSwKICAgICAgICBdLAogICAgICAgIFRfRUxTRSAgICAgPT4gWwogICAgICAgICAgICAnc3RhcnQnICA9PiBbVF9PUEVOX0NVUkxZX0JSQUNLRVQgPT4gVF9PUEVOX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnZW5kJyAgICA9PiBbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdzdHJpY3QnID0+IGZhbHNlLAogICAgICAgICAgICAnc2hhcmVkJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3dpdGgnICAgPT4gW10sCiAgICAgICAgXSwKICAgICAgICBUX0ZPUiAgICAgID0+IFsKICAgICAgICAgICAgJ3N0YXJ0JyAgPT4gW1RfT1BFTl9DVVJMWV9CUkFDS0VUID0+IFRfT1BFTl9DVVJMWV9CUkFDS0VUXSwKICAgICAgICAgICAgJ2VuZCcgICAgPT4gW1RfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCA9PiBUX0NMT1NFX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnc3RyaWN0JyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3NoYXJlZCcgPT4gZmFsc2UsCiAgICAgICAgICAgICd3aXRoJyAgID0+IFtdLAogICAgICAgIF0sCiAgICAgICAgVF9DTEFTUyAgICA9PiBbCiAgICAgICAgICAgICdzdGFydCcgID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdlbmQnICAgID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwKICAgICAgICAgICAgJ3N0cmljdCcgPT4gdHJ1ZSwKICAgICAgICAgICAgJ3NoYXJlZCcgPT4gZmFsc2UsCiAgICAgICAgICAgICd3aXRoJyAgID0+IFtdLAogICAgICAgIF0sCiAgICAgICAgVF9GVU5DVElPTiA9PiBbCiAgICAgICAgICAgICdzdGFydCcgID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdlbmQnICAgID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwKICAgICAgICAgICAgJ3N0cmljdCcgPT4gZmFsc2UsCiAgICAgICAgICAgICdzaGFyZWQnID0+IGZhbHNlLAogICAgICAgICAgICAnd2l0aCcgICA9PiBbXSwKICAgICAgICBdLAogICAgICAgIFRfV0hJTEUgICAgPT4gWwogICAgICAgICAgICAnc3RhcnQnICA9PiBbVF9PUEVOX0NVUkxZX0JSQUNLRVQgPT4gVF9PUEVOX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnZW5kJyAgICA9PiBbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVF0sCiAgICAgICAgICAgICdzdHJpY3QnID0+IGZhbHNlLAogICAgICAgICAgICAnc2hhcmVkJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3dpdGgnICAgPT4gW10sCiAgICAgICAgXSwKICAgICAgICBUX0RPICAgICAgID0+IFsKICAgICAgICAgICAgJ3N0YXJ0JyAgPT4gW1RfT1BFTl9DVVJMWV9CUkFDS0VUID0+IFRfT1BFTl9DVVJMWV9CUkFDS0VUXSwKICAgICAgICAgICAgJ2VuZCcgICAgPT4gW1RfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCA9PiBUX0NMT1NFX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnc3RyaWN0JyA9PiB0cnVlLAogICAgICAgICAgICAnc2hhcmVkJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3dpdGgnICAgPT4gW10sCiAgICAgICAgXSwKICAgICAgICBUX1NXSVRDSCAgID0+IFsKICAgICAgICAgICAgJ3N0YXJ0JyAgPT4gW1RfT1BFTl9DVVJMWV9CUkFDS0VUID0+IFRfT1BFTl9DVVJMWV9CUkFDS0VUXSwKICAgICAgICAgICAgJ2VuZCcgICAgPT4gW1RfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCA9PiBUX0NMT1NFX0NVUkxZX0JSQUNLRVRdLAogICAgICAgICAgICAnc3RyaWN0JyA9PiB0cnVlLAogICAgICAgICAgICAnc2hhcmVkJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3dpdGgnICAgPT4gW10sCiAgICAgICAgXSwKICAgICAgICBUX0NBU0UgICAgID0+IFsKICAgICAgICAgICAgJ3N0YXJ0JyAgPT4gW1RfQ09MT04gPT4gVF9DT0xPTl0sCiAgICAgICAgICAgICdlbmQnICAgID0+IFsKICAgICAgICAgICAgICAgIFRfQlJFQUsgICAgPT4gVF9CUkVBSywKICAgICAgICAgICAgICAgIFRfUkVUVVJOICAgPT4gVF9SRVRVUk4sCiAgICAgICAgICAgICAgICBUX0NPTlRJTlVFID0+IFRfQ09OVElOVUUsCiAgICAgICAgICAgICAgICBUX1RIUk9XICAgID0+IFRfVEhST1csCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdzdHJpY3QnID0+IHRydWUsCiAgICAgICAgICAgICdzaGFyZWQnID0+IHRydWUsCiAgICAgICAgICAgICd3aXRoJyAgID0+IFsKICAgICAgICAgICAgICAgIFRfREVGQVVMVCA9PiBUX0RFRkFVTFQsCiAgICAgICAgICAgICAgICBUX0NBU0UgICAgPT4gVF9DQVNFLAogICAgICAgICAgICAgICAgVF9TV0lUQ0ggID0+IFRfU1dJVENILAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICAgICAgVF9ERUZBVUxUICA9PiBbCiAgICAgICAgICAgICdzdGFydCcgID0+IFtUX0NPTE9OID0+IFRfQ09MT05dLAogICAgICAgICAgICAnZW5kJyAgICA9PiBbCiAgICAgICAgICAgICAgICBUX0JSRUFLICAgID0+IFRfQlJFQUssCiAgICAgICAgICAgICAgICBUX1JFVFVSTiAgID0+IFRfUkVUVVJOLAogICAgICAgICAgICAgICAgVF9DT05USU5VRSA9PiBUX0NPTlRJTlVFLAogICAgICAgICAgICAgICAgVF9USFJPVyAgICA9PiBUX1RIUk9XLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnc3RyaWN0JyA9PiB0cnVlLAogICAgICAgICAgICAnc2hhcmVkJyA9PiB0cnVlLAogICAgICAgICAgICAnd2l0aCcgICA9PiBbCiAgICAgICAgICAgICAgICBUX0NBU0UgICA9PiBUX0NBU0UsCiAgICAgICAgICAgICAgICBUX1NXSVRDSCA9PiBUX1NXSVRDSCwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgXTsKCiAgICAvKioKICAgICAqIEEgbGlzdCBvZiB0b2tlbnMgdGhhdCBlbmQgdGhlIHNjb3BlLgogICAgICoKICAgICAqIFRoaXMgYXJyYXkgaXMganVzdCBhIHVuaXF1ZSBjb2xsZWN0aW9uIG9mIHRoZSBlbmQgdG9rZW5zCiAgICAgKiBmcm9tIHRoZSBfc2NvcGVPcGVuZXJzIGFycmF5LiBUaGUgZGF0YSBpcyBkdXBsaWNhdGVkIGhlcmUgdG8KICAgICAqIHNhdmUgdGltZSBkdXJpbmcgcGFyc2luZyBvZiB0aGUgZmlsZS4KICAgICAqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkZW5kU2NvcGVUb2tlbnMgPSBbCiAgICAgICAgVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCwKICAgICAgICBUX0JSRUFLICAgICAgICAgICAgICAgPT4gVF9CUkVBSywKICAgIF07CgogICAgLyoqCiAgICAgKiBBIGxpc3Qgb2Ygc3BlY2lhbCBKUyB0b2tlbnMgYW5kIHRoZWlyIHR5cGVzLgogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICR0b2tlblZhbHVlcyA9IFsKICAgICAgICAnY2xhc3MnICAgICA9PiAnVF9DTEFTUycsCiAgICAgICAgJ2Z1bmN0aW9uJyAgPT4gJ1RfRlVOQ1RJT04nLAogICAgICAgICdwcm90b3R5cGUnID0+ICdUX1BST1RPVFlQRScsCiAgICAgICAgJ3RyeScgICAgICAgPT4gJ1RfVFJZJywKICAgICAgICAnY2F0Y2gnICAgICA9PiAnVF9DQVRDSCcsCiAgICAgICAgJ3JldHVybicgICAgPT4gJ1RfUkVUVVJOJywKICAgICAgICAndGhyb3cnICAgICA9PiAnVF9USFJPVycsCiAgICAgICAgJ2JyZWFrJyAgICAgPT4gJ1RfQlJFQUsnLAogICAgICAgICdzd2l0Y2gnICAgID0+ICdUX1NXSVRDSCcsCiAgICAgICAgJ2NvbnRpbnVlJyAgPT4gJ1RfQ09OVElOVUUnLAogICAgICAgICdpZicgICAgICAgID0+ICdUX0lGJywKICAgICAgICAnZWxzZScgICAgICA9PiAnVF9FTFNFJywKICAgICAgICAnZG8nICAgICAgICA9PiAnVF9ETycsCiAgICAgICAgJ3doaWxlJyAgICAgPT4gJ1RfV0hJTEUnLAogICAgICAgICdmb3InICAgICAgID0+ICdUX0ZPUicsCiAgICAgICAgJ3ZhcicgICAgICAgPT4gJ1RfVkFSJywKICAgICAgICAnY2FzZScgICAgICA9PiAnVF9DQVNFJywKICAgICAgICAnZGVmYXVsdCcgICA9PiAnVF9ERUZBVUxUJywKICAgICAgICAndHJ1ZScgICAgICA9PiAnVF9UUlVFJywKICAgICAgICAnZmFsc2UnICAgICA9PiAnVF9GQUxTRScsCiAgICAgICAgJ251bGwnICAgICAgPT4gJ1RfTlVMTCcsCiAgICAgICAgJ3RoaXMnICAgICAgPT4gJ1RfVEhJUycsCiAgICAgICAgJ3R5cGVvZicgICAgPT4gJ1RfVFlQRU9GJywKICAgICAgICAnKCcgICAgICAgICA9PiAnVF9PUEVOX1BBUkVOVEhFU0lTJywKICAgICAgICAnKScgICAgICAgICA9PiAnVF9DTE9TRV9QQVJFTlRIRVNJUycsCiAgICAgICAgJ3snICAgICAgICAgPT4gJ1RfT1BFTl9DVVJMWV9CUkFDS0VUJywKICAgICAgICAnfScgICAgICAgICA9PiAnVF9DTE9TRV9DVVJMWV9CUkFDS0VUJywKICAgICAgICAnWycgICAgICAgICA9PiAnVF9PUEVOX1NRVUFSRV9CUkFDS0VUJywKICAgICAgICAnXScgICAgICAgICA9PiAnVF9DTE9TRV9TUVVBUkVfQlJBQ0tFVCcsCiAgICAgICAgJz8nICAgICAgICAgPT4gJ1RfSU5MSU5FX1RIRU4nLAogICAgICAgICcuJyAgICAgICAgID0+ICdUX09CSkVDVF9PUEVSQVRPUicsCiAgICAgICAgJysnICAgICAgICAgPT4gJ1RfUExVUycsCiAgICAgICAgJy0nICAgICAgICAgPT4gJ1RfTUlOVVMnLAogICAgICAgICcqJyAgICAgICAgID0+ICdUX01VTFRJUExZJywKICAgICAgICAnJScgICAgICAgICA9PiAnVF9NT0RVTFVTJywKICAgICAgICAnLycgICAgICAgICA9PiAnVF9ESVZJREUnLAogICAgICAgICdeJyAgICAgICAgID0+ICdUX0xPR0lDQUxfWE9SJywKICAgICAgICAnLCcgICAgICAgICA9PiAnVF9DT01NQScsCiAgICAgICAgJzsnICAgICAgICAgPT4gJ1RfU0VNSUNPTE9OJywKICAgICAgICAnOicgICAgICAgICA9PiAnVF9DT0xPTicsCiAgICAgICAgJzwnICAgICAgICAgPT4gJ1RfTEVTU19USEFOJywKICAgICAgICAnPicgICAgICAgICA9PiAnVF9HUkVBVEVSX1RIQU4nLAogICAgICAgICc8PCcgICAgICAgID0+ICdUX1NMJywKICAgICAgICAnPj4nICAgICAgICA9PiAnVF9TUicsCiAgICAgICAgJz4+PicgICAgICAgPT4gJ1RfWlNSJywKICAgICAgICAnPDw9JyAgICAgICA9PiAnVF9TTF9FUVVBTCcsCiAgICAgICAgJz4+PScgICAgICAgPT4gJ1RfU1JfRVFVQUwnLAogICAgICAgICc+Pj49JyAgICAgID0+ICdUX1pTUl9FUVVBTCcsCiAgICAgICAgJzw9JyAgICAgICAgPT4gJ1RfSVNfU01BTExFUl9PUl9FUVVBTCcsCiAgICAgICAgJz49JyAgICAgICAgPT4gJ1RfSVNfR1JFQVRFUl9PUl9FUVVBTCcsCiAgICAgICAgJz0+JyAgICAgICAgPT4gJ1RfRE9VQkxFX0FSUk9XJywKICAgICAgICAnIScgICAgICAgICA9PiAnVF9CT09MRUFOX05PVCcsCiAgICAgICAgJ3x8JyAgICAgICAgPT4gJ1RfQk9PTEVBTl9PUicsCiAgICAgICAgJyYmJyAgICAgICAgPT4gJ1RfQk9PTEVBTl9BTkQnLAogICAgICAgICd8JyAgICAgICAgID0+ICdUX0JJVFdJU0VfT1InLAogICAgICAgICcmJyAgICAgICAgID0+ICdUX0JJVFdJU0VfQU5EJywKICAgICAgICAnIT0nICAgICAgICA9PiAnVF9JU19OT1RfRVFVQUwnLAogICAgICAgICchPT0nICAgICAgID0+ICdUX0lTX05PVF9JREVOVElDQUwnLAogICAgICAgICc9JyAgICAgICAgID0+ICdUX0VRVUFMJywKICAgICAgICAnPT0nICAgICAgICA9PiAnVF9JU19FUVVBTCcsCiAgICAgICAgJz09PScgICAgICAgPT4gJ1RfSVNfSURFTlRJQ0FMJywKICAgICAgICAnLT0nICAgICAgICA9PiAnVF9NSU5VU19FUVVBTCcsCiAgICAgICAgJys9JyAgICAgICAgPT4gJ1RfUExVU19FUVVBTCcsCiAgICAgICAgJyo9JyAgICAgICAgPT4gJ1RfTVVMX0VRVUFMJywKICAgICAgICAnLz0nICAgICAgICA9PiAnVF9ESVZfRVFVQUwnLAogICAgICAgICclPScgICAgICAgID0+ICdUX01PRF9FUVVBTCcsCiAgICAgICAgJysrJyAgICAgICAgPT4gJ1RfSU5DJywKICAgICAgICAnLS0nICAgICAgICA9PiAnVF9ERUMnLAogICAgICAgICcvLycgICAgICAgID0+ICdUX0NPTU1FTlQnLAogICAgICAgICcvKicgICAgICAgID0+ICdUX0NPTU1FTlQnLAogICAgICAgICcvKionICAgICAgID0+ICdUX0RPQ19DT01NRU5UJywKICAgICAgICAnKi8nICAgICAgICA9PiAnVF9DT01NRU5UJywKICAgIF07CgogICAgLyoqCiAgICAgKiBBIGxpc3Qgc3RyaW5nIGRlbGltaXRlcnMuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHN0cmluZ1Rva2VucyA9IFsKICAgICAgICAnXCcnID0+ICdcJycsCiAgICAgICAgJyInICA9PiAnIicsCiAgICBdOwoKICAgIC8qKgogICAgICogQSBsaXN0IHRva2VucyB0aGF0IHN0YXJ0IGFuZCBlbmQgY29tbWVudHMuCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJGNvbW1lbnRUb2tlbnMgPSBbCiAgICAgICAgJy8vJyAgPT4gbnVsbCwKICAgICAgICAnLyonICA9PiAnKi8nLAogICAgICAgICcvKionID0+ICcqLycsCiAgICBdOwoKCiAgICAvKioKICAgICAqIEluaXRpYWxpc2UgdGhlIHRva2VuaXplci4KICAgICAqCiAgICAgKiBQcmUtY2hlY2tzIHRoZSBjb250ZW50IHRvIHNlZSBpZiBpdCBsb29rcyBtaW5pZmllZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgVGhlIGNvbnRlbnQgdG8gdG9rZW5pemUsCiAgICAgKiBAcGFyYW0gXFBIUF9Db2RlU25pZmZlclxDb25maWcgJGNvbmZpZyAgVGhlIGNvbmZpZyBkYXRhIGZvciB0aGUgcnVuLgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICRlb2xDaGFyIFRoZSBFT0wgY2hhciB1c2VkIGluIHRoZSBjb250ZW50LgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICogQHRocm93cyBcUEhQX0NvZGVTbmlmZmVyXEV4Y2VwdGlvbnNcVG9rZW5pemVyRXhjZXB0aW9uIElmIHRoZSBmaWxlIGFwcGVhcnMgdG8gYmUgbWluaWZpZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkY29udGVudCwgQ29uZmlnICRjb25maWcsICRlb2xDaGFyPSdcbicpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pc01pbmlmaWVkQ29udGVudCgkY29udGVudCwgJGVvbENoYXIpID09PSB0cnVlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUb2tlbml6ZXJFeGNlcHRpb24oJ0ZpbGUgYXBwZWFycyB0byBiZSBtaW5pZmllZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCcpOwogICAgICAgIH0KCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkY29udGVudCwgJGNvbmZpZywgJGVvbENoYXIpOwoKICAgIH0vL2VuZCBfX2NvbnN0cnVjdCgpCgoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0b2tlbnMgd2hlbiBnaXZlbiBzb21lIEpTIGNvZGUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFRoZSBzdHJpbmcgdG8gdG9rZW5pemUuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9rZW5pemUoJHN0cmluZykKICAgIHsKICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgZWNobyAiXHQqKiogU1RBUlQgSlMgVE9LRU5JWklORyAqKioiLlBIUF9FT0w7CiAgICAgICAgfQoKICAgICAgICAkbWF4VG9rZW5MZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT50b2tlblZhbHVlcyBhcyAkdG9rZW4gPT4gJHZhbHVlcykgewogICAgICAgICAgICBpZiAoc3RybGVuKCR0b2tlbikgPiAkbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgICAgICRtYXhUb2tlbkxlbmd0aCA9IHN0cmxlbigkdG9rZW4pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdG9rZW5zICAgICAgICAgID0gW107CiAgICAgICAgJGluU3RyaW5nICAgICAgICA9ICcnOwogICAgICAgICRzdHJpbmdDaGFyICAgICAgPSBudWxsOwogICAgICAgICRpbkNvbW1lbnQgICAgICAgPSAnJzsKICAgICAgICAkYnVmZmVyICAgICAgICAgID0gJyc7CiAgICAgICAgJHByZVN0cmluZ0J1ZmZlciA9ICcnOwogICAgICAgICRjbGVhbkJ1ZmZlciAgICAgPSBmYWxzZTsKCiAgICAgICAgJGNvbW1lbnRUb2tlbml6ZXIgPSBuZXcgQ29tbWVudCgpOwoKICAgICAgICAkdG9rZW5zW10gPSBbCiAgICAgICAgICAgICdjb2RlJyAgICA9PiBUX09QRU5fVEFHLAogICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfT1BFTl9UQUcnLAogICAgICAgICAgICAnY29udGVudCcgPT4gJycsCiAgICAgICAgXTsKCiAgICAgICAgLy8gQ29udmVydCBuZXdsaW5lcyB0byBzaW5nbGUgY2hhcmFjdGVycyBmb3IgZWFzZSBvZgogICAgICAgIC8vIHByb2Nlc3NpbmcuIFdlIHdpbGwgY2hhbmdlIHRoZW0gYmFjayBsYXRlci4KICAgICAgICAkc3RyaW5nID0gc3RyX3JlcGxhY2UoJHRoaXMtPmVvbENoYXIsICJcbiIsICRzdHJpbmcpOwoKICAgICAgICAkY2hhcnMgICAgPSBzdHJfc3BsaXQoJHN0cmluZyk7CiAgICAgICAgJG51bUNoYXJzID0gY291bnQoJGNoYXJzKTsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbnVtQ2hhcnM7ICRpKyspIHsKICAgICAgICAgICAgJGNoYXIgPSAkY2hhcnNbJGldOwoKICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAkY29udGVudCAgICAgICA9IFV0aWxcQ29tbW9uOjpwcmVwYXJlRm9yT3V0cHV0KCRjaGFyKTsKICAgICAgICAgICAgICAgICRidWZmZXJDb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGJ1ZmZlcik7CgogICAgICAgICAgICAgICAgaWYgKCRpblN0cmluZyAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICJcdCI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRpbkNvbW1lbnQgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVjaG8gIlx0UHJvY2VzcyBjaGFyICRpID0+ICRjb250ZW50IChidWZmZXI6ICRidWZmZXJDb250ZW50KSIuUEhQX0VPTDsKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICBpZiAoJGluU3RyaW5nID09PSAnJyAmJiAkaW5Db21tZW50ID09PSAnJyAmJiAkYnVmZmVyICE9PSAnJykgewogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBvbmx5IGhhcyB3aGl0ZXNwYWNlIGFuZCB3ZSBhcmUgYWJvdXQgdG8KICAgICAgICAgICAgICAgIC8vIGFkZCBhIGNoYXJhY3Rlciwgc3RvcmUgdGhlIHdoaXRlc3BhY2UgZmlyc3QuCiAgICAgICAgICAgICAgICBpZiAodHJpbSgkY2hhcikgIT09ICcnICYmIHRyaW0oJGJ1ZmZlcikgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgJHRva2Vuc1tdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gVF9XSElURVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfV0hJVEVTUEFDRScsCiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiBzdHJfcmVwbGFjZSgiXG4iLCAkdGhpcy0+ZW9sQ2hhciwgJGJ1ZmZlciksCiAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0PT4gQWRkZWQgdG9rZW4gVF9XSElURVNQQUNFICgkY29udGVudCkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyID0gJyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyBub3Qgd2hpdGVzcGFjZSBhbmQgd2UgYXJlIGFib3V0IHRvCiAgICAgICAgICAgICAgICAvLyBhZGQgYSB3aGl0ZXNwYWNlIGNoYXJhY3Rlciwgc3RvcmUgdGhlIGNvbnRlbnQgZmlyc3QuCiAgICAgICAgICAgICAgICBpZiAoJGluU3RyaW5nID09PSAnJwogICAgICAgICAgICAgICAgICAgICYmICRpbkNvbW1lbnQgPT09ICcnCiAgICAgICAgICAgICAgICAgICAgJiYgdHJpbSgkY2hhcikgPT09ICcnCiAgICAgICAgICAgICAgICAgICAgJiYgdHJpbSgkYnVmZmVyKSAhPT0gJycKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICR0b2tlbnNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfU1RSSU5HLAogICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfU1RSSU5HJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+IHN0cl9yZXBsYWNlKCJcbiIsICR0aGlzLT5lb2xDaGFyLCAkYnVmZmVyKSwKICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkYnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQ9PiBBZGRlZCB0b2tlbiBUX1NUUklORyAoJGNvbnRlbnQpIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciA9ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgIC8vIFByb2Nlc3Mgc3RyaW5ncy4KICAgICAgICAgICAgaWYgKCRpbkNvbW1lbnQgPT09ICcnICYmIGlzc2V0KCR0aGlzLT5zdHJpbmdUb2tlbnNbJGNoYXJdKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgaWYgKCRpblN0cmluZyA9PT0gJGNoYXIpIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgYnV0IG1ha2Ugc3VyZSBpdAogICAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBlc2NhcGVkIGZpcnN0LgogICAgICAgICAgICAgICAgICAgICRlc2NhcGVzID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgKCR4ID0gKCRpIC0gMSk7ICR4ID49IDA7ICR4LS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjaGFyc1skeF0gIT09ICdcXCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkZXNjYXBlcysrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCRlc2NhcGVzID09PSAwIHx8ICgkZXNjYXBlcyAlIDIpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGFuIGV2ZW4gbnVtYmVyIGVzY2FwZSBjaGFycywKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gdGhpcyBpcyBub3QgZXNjYXBlZCwgaXQgaXMgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgogICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5zW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gVF9DT05TVEFOVF9FTkNBUFNFRF9TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfQ09OU1RBTlRfRU5DQVBTRURfU1RSSU5HJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiBzdHJfcmVwbGFjZSgiXG4iLCAkdGhpcy0+ZW9sQ2hhciwgJGJ1ZmZlcikuJGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIGZvdW5kIGVuZCBvZiBzdHJpbmcgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGJ1ZmZlci4kY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEFkZGVkIHRva2VuIFRfQ09OU1RBTlRfRU5DQVBTRURfU1RSSU5HICgkY29udGVudCkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRidWZmZXIgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHByZVN0cmluZ0J1ZmZlciA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAkaW5TdHJpbmcgICAgICAgID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmdDaGFyICAgICAgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGluU3RyaW5nID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICRpblN0cmluZyAgICAgICAgPSAkY2hhcjsKICAgICAgICAgICAgICAgICAgICAkc3RyaW5nQ2hhciAgICAgID0gJGk7CiAgICAgICAgICAgICAgICAgICAgJHByZVN0cmluZ0J1ZmZlciA9ICRidWZmZXI7CgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBsb29raW5nIGZvciBzdHJpbmcgY2xvc2VyICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgaWYgKCRpblN0cmluZyAhPT0gJycgJiYgJGNoYXIgPT09ICJcbiIpIHsKICAgICAgICAgICAgICAgIC8vIFVubGVzcyB0aGlzIG5ld2xpbmUgY2hhcmFjdGVyIGlzIGVzY2FwZWQsIHRoZSBzdHJpbmcgZGlkIG5vdAogICAgICAgICAgICAgICAgLy8gZW5kIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBsaW5lLCB3aGljaCBtZWFucyBpdCBwcm9iYWJseQogICAgICAgICAgICAgICAgLy8gd2Fzbid0IGEgc3RyaW5nIGF0IGFsbCAobWF5YmUgYSByZWdleCkuCiAgICAgICAgICAgICAgICBpZiAoJGNoYXJzWygkaSAtIDEpXSAhPT0gJ1xcJykgewogICAgICAgICAgICAgICAgICAgICRpICAgICAgPSAkc3RyaW5nQ2hhcjsKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyID0gJHByZVN0cmluZ0J1ZmZlcjsKICAgICAgICAgICAgICAgICAgICAkcHJlU3RyaW5nQnVmZmVyID0gJyc7CiAgICAgICAgICAgICAgICAgICAgJGluU3RyaW5nICAgICAgICA9ICcnOwogICAgICAgICAgICAgICAgICAgICRzdHJpbmdDaGFyICAgICAgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICRjaGFyICAgICAgICAgICAgPSAkY2hhcnNbJGldOwoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogZm91bmQgbmV3bGluZSBiZWZvcmUgZW5kIG9mIHN0cmluZywgYmFpbGluZyAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJ1ZmZlciAuPSAkY2hhcjsKCiAgICAgICAgICAgIC8vIFdlIGRvbid0IGxvb2sgZm9yIHNwZWNpYWwgdG9rZW5zIGluc2lkZSBzdHJpbmdzLAogICAgICAgICAgICAvLyBzbyBpZiB3ZSBhcmUgaW4gYSBzdHJpbmcsIHdlIGNhbiBjb250aW51ZSBoZXJlIG5vdwogICAgICAgICAgICAvLyB0aGF0IHRoZSBjdXJyZW50IGNoYXIgaXMgaW4gdGhlIGJ1ZmZlci4KICAgICAgICAgICAgaWYgKCRpblN0cmluZyAhPT0gJycpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIFRfRElWSURFIHdoaWNoIGNhbiBhY3R1YWxseSBiZQogICAgICAgICAgICAvLyB0aGUgc3RhcnQgb2YgYSByZWd1bGFyIGV4cHJlc3Npb24uCiAgICAgICAgICAgIGlmICgkYnVmZmVyID09PSAkY2hhciAmJiAkY2hhciA9PT0gJy8nICYmICRjaGFyc1soJGkgKyAxKV0gIT09ICcqJykgewogICAgICAgICAgICAgICAgJHJlZ2V4ID0gJHRoaXMtPmdldFJlZ2V4VG9rZW4oJGksICRzdHJpbmcsICRjaGFycywgJHRva2Vucyk7CiAgICAgICAgICAgICAgICBpZiAoJHJlZ2V4ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJHRva2Vuc1tdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gVF9SRUdVTEFSX0VYUFJFU1NJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAnVF9SRUdVTEFSX0VYUFJFU1NJT04nLAogICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJHJlZ2V4Wydjb250ZW50J10sCiAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJHJlZ2V4Wydjb250ZW50J10pOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEFkZGVkIHRva2VuIFRfUkVHVUxBUl9FWFBSRVNTSU9OICgkY29udGVudCkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkaSAgICAgICAgICAgPSAkcmVnZXhbJ2VuZCddOwogICAgICAgICAgICAgICAgICAgICRidWZmZXIgICAgICA9ICcnOwogICAgICAgICAgICAgICAgICAgICRjbGVhbkJ1ZmZlciA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGtub3duIHRva2VucywgYnV0IGlnbm9yZSB0b2tlbnMgZm91bmQgdGhhdCBhcmUgbm90IGF0CiAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgYSBzdHJpbmcsIGxpa2UgRk9SIGFuZCB0aGlzLkZPUm1hdC4KICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlblZhbHVlc1tzdHJ0b2xvd2VyKCRidWZmZXIpXSkgPT09IHRydWUKICAgICAgICAgICAgICAgICYmIChwcmVnX21hdGNoKCd8W2EtekEtejAtOV9dfCcsICRjaGFyKSA9PT0gMAogICAgICAgICAgICAgICAgfHwgaXNzZXQoJGNoYXJzWygkaSArIDEpXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCBwcmVnX21hdGNoKCd8W2EtekEtejAtOV9dfCcsICRjaGFyc1soJGkgKyAxKV0pID09PSAwKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRtYXRjaGVkVG9rZW4gICAgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRsb29rQWhlYWRMZW5ndGggPSAoJG1heFRva2VuTGVuZ3RoIC0gc3RybGVuKCRidWZmZXIpKTsKCiAgICAgICAgICAgICAgICBpZiAoJGxvb2tBaGVhZExlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYnVmZmVyIGNvbnRhaW5zIGEgdG9rZW4gdHlwZSwgYnV0IHdlIG5lZWQKICAgICAgICAgICAgICAgICAgICAvLyB0byBsb29rIGFoZWFkIGF0IHRoZSBuZXh0IGNoYXJzIHRvIHNlZSBpZiB0aGlzIGlzCiAgICAgICAgICAgICAgICAgICAgLy8gYWN0dWFsbHkgcGFydCBvZiBhIGxhcmdlciB0b2tlbi4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAgICAgICAgLy8gRk9SIGFuZCBGT1JFQUNILgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBidWZmZXIgcG9zc2libHkgY29udGFpbnMgdG9rZW4sIGxvb2tpbmcgYWhlYWQgJGxvb2tBaGVhZExlbmd0aCBjaGFycyAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGNoYXJCdWZmZXIgPSAkYnVmZmVyOwogICAgICAgICAgICAgICAgICAgIGZvciAoJHggPSAxOyAkeCA8PSAkbG9va0FoZWFkTGVuZ3RoOyAkeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2hhcnNbKCRpICsgJHgpXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJCdWZmZXIgLj0gJGNoYXJzWygkaSArICR4KV07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGNoYXJCdWZmZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdD0+IExvb2tpbmcgYWhlYWQgJHggY2hhcnMgPT4gJGNvbnRlbnQiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkY2hhckJ1ZmZlcildKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgZm91bmQgc29tZXRoaW5nIGxhcmdlciB0aGF0IG1hdGNoZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIGNhbiBpZ25vcmUgdGhpcyBjaGFyLiBFeGNlcHQgZm9yIDEgdmVyeSBzcGVjaWZpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIGNvbW1lbnQgbGlrZSAvKiovIG5lZWRzIHRvIHRva2VuaXplIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUX0NPTU1FTlQgYW5kIG5vdCBUX0RPQ19DT01NRU5ULgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9sZFR5cGUgPSAkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkYnVmZmVyKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3VHlwZSA9ICR0aGlzLT50b2tlblZhbHVlc1tzdHJ0b2xvd2VyKCRjaGFyQnVmZmVyKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJG9sZFR5cGUgPT09ICdUX0NPTU1FTlQnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG5ld1R5cGUgPT09ICdUX0RPQ19DT01NRU5UJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRjaGFyc1soJGkgKyAkeCArIDEpXSA9PT0gJy8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogbG9vayBhaGVhZCBpZ25vcmVkIFRfRE9DX0NPTU1FTlQsIGNvbnRpbnVpbmcgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBsb29rIGFoZWFkIGZvdW5kIG1vcmUgc3BlY2lmaWMgdG9rZW4gKCRuZXdUeXBlKSwgaWdub3JpbmcgJGkgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXRjaGVkVG9rZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgICAgICAgICB9Ly9lbmQgZm9yCiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICAgICBpZiAoJG1hdGNoZWRUb2tlbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEgJiYgJGxvb2tBaGVhZExlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogbG9vayBhaGVhZCBmb3VuZCBub3RoaW5nICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkYnVmZmVyKV07CgogICAgICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgPT09ICdUX0ZVTkNUSU9OJyAmJiAkYnVmZmVyICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBrZXl3b3JkIG5lZWRzIHRvIGJlIGFsbCBsb3dlcmNhc2Ugb3IgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBpcyBqdXN0IGEgZnVuY3Rpb24gY2FsbGVkICJGdW5jdGlvbiIuCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICdUX1NUUklORyc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdG9rZW5zW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICdjb2RlJyAgICA9PiBjb25zdGFudCgkdmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkYnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQ9PiBBZGRlZCB0b2tlbiAkdmFsdWUgKCRjb250ZW50KSIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRjbGVhbkJ1ZmZlciA9IHRydWU7CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfSBlbHNlIGlmIChpc3NldCgkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkY2hhcildKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgLy8gTm8gbWF0dGVyIHdoYXQgdG9rZW4gd2UgZW5kIHVwIHVzaW5nLCB3ZSBkb24ndAogICAgICAgICAgICAgICAgLy8gbmVlZCB0aGUgY29udGVudCBpbiB0aGUgYnVmZmVyIGFueSBtb3JlIGJlY2F1c2Ugd2UgaGF2ZQogICAgICAgICAgICAgICAgLy8gZm91bmQgYSB2YWxpZCB0b2tlbi4KICAgICAgICAgICAgICAgICRuZXdDb250ZW50ID0gc3Vic3RyKHN0cl9yZXBsYWNlKCJcbiIsICR0aGlzLT5lb2xDaGFyLCAkYnVmZmVyKSwgMCwgLTEpOwogICAgICAgICAgICAgICAgaWYgKCRuZXdDb250ZW50ICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICR0b2tlbnNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfU1RSSU5HLAogICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfU1RSSU5HJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICRuZXdDb250ZW50LAogICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IFV0aWxcQ29tbW9uOjpwcmVwYXJlRm9yT3V0cHV0KHN1YnN0cigkYnVmZmVyLCAwLCAtMSkpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEFkZGVkIHRva2VuIFRfU1RSSU5HICgkY29udGVudCkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIGNoYXIgaXMgdG9rZW4sIGxvb2tpbmcgYWhlYWQgIi4oJG1heFRva2VuTGVuZ3RoIC0gMSkuJyBjaGFycyAqJy5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFRoZSBjaGFyIGlzIGEgdG9rZW4gdHlwZSwgYnV0IHdlIG5lZWQgdG8gbG9vayBhaGVhZCBhdCB0aGUKICAgICAgICAgICAgICAgIC8vIG5leHQgY2hhcnMgdG8gc2VlIGlmIHRoaXMgaXMgYWN0dWFsbHkgcGFydCBvZiBhIGxhcmdlciB0b2tlbi4KICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCA9IGFuZCA9PT0uCiAgICAgICAgICAgICAgICAkY2hhckJ1ZmZlciAgID0gJGNoYXI7CiAgICAgICAgICAgICAgICAkbWF0Y2hlZFRva2VuID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3IgKCR4ID0gMTsgJHggPD0gJG1heFRva2VuTGVuZ3RoOyAkeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjaGFyc1soJGkgKyAkeCldKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkY2hhckJ1ZmZlciAuPSAkY2hhcnNbKCRpICsgJHgpXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGNoYXJCdWZmZXIpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0PT4gTG9va2luZyBhaGVhZCAkeCBjaGFycyA9PiAkY29udGVudCIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkY2hhckJ1ZmZlcildKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBmb3VuZCBzb21ldGhpbmcgbGFyZ2VyIHRoYXQgbWF0Y2hlcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBjYW4gaWdub3JlIHRoaXMgY2hhci4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlblZhbHVlc1tzdHJ0b2xvd2VyKCRjaGFyQnVmZmVyKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBsb29rIGFoZWFkIGZvdW5kIG1vcmUgc3BlY2lmaWMgdG9rZW4gKCR0eXBlKSwgaWdub3JpbmcgJGkgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGNoZWRUb2tlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgICAgICAgICBpZiAoJG1hdGNoZWRUb2tlbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUgICAgPSAkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkY2hhcildOwogICAgICAgICAgICAgICAgICAgICR0b2tlbnNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IGNvbnN0YW50KCR2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAkdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiAkY2hhciwKICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogbG9vayBhaGVhZCBmb3VuZCBub3RoaW5nICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEFkZGVkIHRva2VuICR2YWx1ZSAoJGNvbnRlbnQpIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGNsZWFuQnVmZmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciA9ICRjaGFyOwogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiBjb250ZW50IGluc2lkZSBjb21tZW50cy4KICAgICAgICAgICAgaWYgKCRpbkNvbW1lbnQgPT09ICcnCiAgICAgICAgICAgICAgICAmJiBhcnJheV9rZXlfZXhpc3RzKCRidWZmZXIsICR0aGlzLT5jb21tZW50VG9rZW5zKSA9PT0gdHJ1ZQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHJlYWxseSBhIGNvbW1lbnQgaWYgdGhlIGNvbnRlbnQKICAgICAgICAgICAgICAgIC8vIGxvb2tzIGxpa2UgXC8vIChpLmUuLCBpdCBpcyBlc2NhcGVkKS4KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2hhcnNbKCRpIC0gMildKSA9PT0gdHJ1ZSAmJiAkY2hhcnNbKCRpIC0gMildID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgICAgJGxhc3RUb2tlbiAgID0gYXJyYXlfcG9wKCR0b2tlbnMpOwogICAgICAgICAgICAgICAgICAgICRsYXN0Q29udGVudCA9ICRsYXN0VG9rZW5bJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlICAgPSAkdGhpcy0+dG9rZW5WYWx1ZXNbc3RydG9sb3dlcigkbGFzdENvbnRlbnQpXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkbGFzdENvbnRlbnQpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IFJlbW92ZWQgdG9rZW4gJHZhbHVlICgkY29udGVudCkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkbGFzdENoYXJzICAgID0gc3RyX3NwbGl0KCRsYXN0Q29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgJGxhc3ROdW1DaGFycyA9IGNvdW50KCRsYXN0Q2hhcnMpOwogICAgICAgICAgICAgICAgICAgIGZvciAoJHggPSAwOyAkeCA8ICRsYXN0TnVtQ2hhcnM7ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RDaGFyID0gJGxhc3RDaGFyc1skeF07CiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSAgICA9ICR0aGlzLT50b2tlblZhbHVlc1tzdHJ0b2xvd2VyKCRsYXN0Q2hhcildOwogICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5zW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gY29uc3RhbnQoJHZhbHVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAkdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gJGxhc3RDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IFV0aWxcQ29tbW9uOjpwcmVwYXJlRm9yT3V0cHV0KCRsYXN0Q2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEFkZGVkIHRva2VuICR2YWx1ZSAoJGNvbnRlbnQpIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHN0YXJ0ZWQgYSBjb21tZW50LgogICAgICAgICAgICAgICAgICAgICRpbkNvbW1lbnQgPSAkYnVmZmVyOwoKICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogbG9va2luZyBmb3IgZW5kIG9mIGNvbW1lbnQgKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfSBlbHNlIGlmICgkaW5Db21tZW50ICE9PSAnJykgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5jb21tZW50VG9rZW5zWyRpbkNvbW1lbnRdID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gQ29tbWVudCBlbmRzIGF0IHRoZSBuZXh0IG5ld2xpbmUuCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkYnVmZmVyLCAiXG4iKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGluQ29tbWVudCA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5jb21tZW50VG9rZW5zWyRpbkNvbW1lbnRdID09PSAkYnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpbkNvbW1lbnQgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpbkNvbW1lbnQgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIGZvdW5kIGVuZCBvZiBjb21tZW50ICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkaW5Db21tZW50ID09PSAnJyAmJiAkY2xlYW5CdWZmZXIgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRva2Vuc1tdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAnY29kZScgICAgPT4gVF9TVFJJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAnVF9TVFJJTkcnLAogICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudCcgPT4gc3RyX3JlcGxhY2UoIlxuIiwgJHRoaXMtPmVvbENoYXIsICRidWZmZXIpLAogICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IFV0aWxcQ29tbW9uOjpwcmVwYXJlRm9yT3V0cHV0KCRidWZmZXIpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdD0+IEFkZGVkIHRva2VuIFRfU1RSSU5HICgkY29udGVudCkiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkYnVmZmVyID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgaWYgKCRjbGVhbkJ1ZmZlciA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJGJ1ZmZlciAgICAgID0gJyc7CiAgICAgICAgICAgICAgICAkY2xlYW5CdWZmZXIgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgaWYgKGVtcHR5KCRidWZmZXIpID09PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoJGluU3RyaW5nICE9PSAnJykgewogICAgICAgICAgICAgICAgLy8gVGhlIHN0cmluZyBkaWQgbm90IGVuZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZmlsZSwKICAgICAgICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIHRoZXJlIHdhcyBwcm9iYWJseSBhIHN5bnRheCBlcnJvciBzb21ld2hlcmUuCiAgICAgICAgICAgICAgICAkdG9rZW5zW10gPSBbCiAgICAgICAgICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfU1RSSU5HLAogICAgICAgICAgICAgICAgICAgICd0eXBlJyAgICA9PiAnVF9TVFJJTkcnLAogICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiBzdHJfcmVwbGFjZSgiXG4iLCAkdGhpcy0+ZW9sQ2hhciwgJGJ1ZmZlciksCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQ9PiBBZGRlZCB0b2tlbiBUX1NUUklORyAoJGNvbnRlbnQpIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gQnVmZmVyIGNvbnRhaW5zIHdoaXRlc3BhY2UgZnJvbSB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAgICAgICAgICAgJHRva2Vuc1tdID0gWwogICAgICAgICAgICAgICAgICAgICdjb2RlJyAgICA9PiBUX1dISVRFU1BBQ0UsCiAgICAgICAgICAgICAgICAgICAgJ3R5cGUnICAgID0+ICdUX1dISVRFU1BBQ0UnLAogICAgICAgICAgICAgICAgICAgICdjb250ZW50JyA9PiBzdHJfcmVwbGFjZSgiXG4iLCAkdGhpcy0+ZW9sQ2hhciwgJGJ1ZmZlciksCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gVXRpbFxDb21tb246OnByZXBhcmVGb3JPdXRwdXQoJGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQ9PiBBZGRlZCB0b2tlbiBUX1dISVRFU1BBQ0UgKCRjb250ZW50KSIuUEhQX0VPTDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICR0b2tlbnNbXSA9IFsKICAgICAgICAgICAgJ2NvZGUnICAgID0+IFRfQ0xPU0VfVEFHLAogICAgICAgICAgICAndHlwZScgICAgPT4gJ1RfQ0xPU0VfVEFHJywKICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICcnLAogICAgICAgIF07CgogICAgICAgIC8qCiAgICAgICAgICAgIE5vdyB0aGF0IHdlIGhhdmUgZG9uZSBzb21lIGJhc2ljIHRva2VuaXppbmcsIHdlIG5lZWQgdG8KICAgICAgICAgICAgbW9kaWZ5IHRoZSB0b2tlbnMgdG8gam9pbiBzb21lIHRvZ2V0aGVyIGFuZCBzcGxpdCBzb21lIGFwYXJ0CiAgICAgICAgICAgIHNvIHRoZXkgbWF0Y2ggd2hhdCB0aGUgUEhQIHRva2VuaXplciBkb2VzLgogICAgICAgICovCgogICAgICAgICRmaW5hbFRva2VucyA9IFtdOwogICAgICAgICRuZXdTdGFja1B0ciA9IDA7CiAgICAgICAgJG51bVRva2VucyAgID0gY291bnQoJHRva2Vucyk7CiAgICAgICAgZm9yICgkc3RhY2tQdHIgPSAwOyAkc3RhY2tQdHIgPCAkbnVtVG9rZW5zOyAkc3RhY2tQdHIrKykgewogICAgICAgICAgICAkdG9rZW4gPSAkdG9rZW5zWyRzdGFja1B0cl07CgogICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgTG9vayBmb3IgY29tbWVudHMgYW5kIGpvaW4gdGhlIHRva2VucyB0b2dldGhlci4KICAgICAgICAgICAgKi8KCiAgICAgICAgICAgIGlmICgkdG9rZW5bJ2NvZGUnXSA9PT0gVF9DT01NRU5UIHx8ICR0b2tlblsnY29kZSddID09PSBUX0RPQ19DT01NRU5UKSB7CiAgICAgICAgICAgICAgICAkbmV3Q29udGVudCAgID0gJyc7CiAgICAgICAgICAgICAgICAkdG9rZW5Db250ZW50ID0gJHRva2VuWydjb250ZW50J107CgogICAgICAgICAgICAgICAgJGVuZENvbnRlbnQgPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5jb21tZW50VG9rZW5zWyR0b2tlbkNvbnRlbnRdKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICRlbmRDb250ZW50ID0gJHRoaXMtPmNvbW1lbnRUb2tlbnNbJHRva2VuQ29udGVudF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgd2hpbGUgKCR0b2tlbkNvbnRlbnQgIT09ICRlbmRDb250ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRlbmRDb250ZW50ID09PSBudWxsCiAgICAgICAgICAgICAgICAgICAgICAgICYmIHN0cnBvcygkdG9rZW5Db250ZW50LCAkdGhpcy0+ZW9sQ2hhcikgIT09IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgbnVsbCBlbmQgdG9rZW4gbWVhbnMgdGhlIGNvbW1lbnQgZW5kcyBhdCB0aGUgZW5kIG9mCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsaW5lIHNvIHdlIGxvb2sgZm9yIG5ld2xpbmVzIGFuZCBzcGxpdCB0aGUgdG9rZW4uCiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddID0gc3Vic3RyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRva2VuQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJwb3MoJHRva2VuQ29udGVudCwgJHRoaXMtPmVvbENoYXIpICsgc3RybGVuKCR0aGlzLT5lb2xDaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbkNvbnRlbnQgPSBzdWJzdHIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG9rZW5Db250ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJwb3MoJHRva2VuQ29udGVudCwgJHRoaXMtPmVvbENoYXIpICsgc3RybGVuKCR0aGlzLT5lb2xDaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdWJzdHIgZmFpbGVkLCBza2lwIHRoZSB0b2tlbiBhcyB0aGUgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5vdyBiZSBibGFuay4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddICE9PSBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc1skc3RhY2tQdHJdWydjb250ZW50J10gIT09ICcnCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyLS07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIrKzsKICAgICAgICAgICAgICAgICAgICAkbmV3Q29udGVudCAuPSAkdG9rZW5Db250ZW50OwogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRzdGFja1B0cl0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR0b2tlbkNvbnRlbnQgPSAkdG9rZW5zWyRzdGFja1B0cl1bJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgIH0vL2VuZCB3aGlsZQoKICAgICAgICAgICAgICAgIGlmICgkdG9rZW5bJ2NvZGUnXSA9PT0gVF9ET0NfQ09NTUVOVCkgewogICAgICAgICAgICAgICAgICAgICRjb21tZW50VG9rZW5zID0gJGNvbW1lbnRUb2tlbml6ZXItPnRva2VuaXplU3RyaW5nKCRuZXdDb250ZW50LiR0b2tlbkNvbnRlbnQsICR0aGlzLT5lb2xDaGFyLCAkbmV3U3RhY2tQdHIpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRjb21tZW50VG9rZW5zIGFzICRjb21tZW50VG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWyRuZXdTdGFja1B0cl0gPSAkY29tbWVudFRva2VuOwogICAgICAgICAgICAgICAgICAgICAgICAkbmV3U3RhY2tQdHIrKzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBTYXZlIHRoZSBuZXcgY29udGVudCBpbiB0aGUgY3VycmVudCB0b2tlbiBzbwogICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb2RlIGJlbG93IGNhbiBjaG9wIGl0IHVwIG9uIG5ld2xpbmVzLgogICAgICAgICAgICAgICAgICAgICR0b2tlblsnY29udGVudCddID0gJG5ld0NvbnRlbnQuJHRva2VuQ29udGVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgSWYgdGhpcyB0b2tlbiBoYXMgbmV3bGluZXMgaW4gaXRzIGNvbnRlbnQsIHNwbGl0IGVhY2ggbGluZSB1cAogICAgICAgICAgICAgICAgYW5kIGNyZWF0ZSBhIG5ldyB0b2tlbiBmb3IgZWFjaCBsaW5lLiBXZSBkbyB0aGlzIHNvIGl0J3MgZWFzaWVyCiAgICAgICAgICAgICAgICB0byBhc2NlcnRhaW4gd2hlcmUgZXJyb3JzIG9jY3VyIG9uIGEgbGluZS4KICAgICAgICAgICAgICAgIE5vdGUgdGhhdCAkdG9rZW5bMV0gaXMgdGhlIHRva2VuJ3MgY29udGVudC4KICAgICAgICAgICAgKi8KCiAgICAgICAgICAgIGlmIChzdHJwb3MoJHRva2VuWydjb250ZW50J10sICR0aGlzLT5lb2xDaGFyKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICR0b2tlbkxpbmVzID0gZXhwbG9kZSgkdGhpcy0+ZW9sQ2hhciwgJHRva2VuWydjb250ZW50J10pOwogICAgICAgICAgICAgICAgJG51bUxpbmVzICAgPSBjb3VudCgkdG9rZW5MaW5lcyk7CgogICAgICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG51bUxpbmVzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJG5ld1Rva2VuID0gWydjb250ZW50JyA9PiAkdG9rZW5MaW5lc1skaV1dOwogICAgICAgICAgICAgICAgICAgIGlmICgkaSA9PT0gKCRudW1MaW5lcyAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5MaW5lc1skaV0gPT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdUb2tlblsnY29udGVudCddIC49ICR0aGlzLT5lb2xDaGFyOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJG5ld1Rva2VuWyd0eXBlJ10gICAgICAgICAgPSAkdG9rZW5bJ3R5cGUnXTsKICAgICAgICAgICAgICAgICAgICAkbmV3VG9rZW5bJ2NvZGUnXSAgICAgICAgICA9ICR0b2tlblsnY29kZSddOwogICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1skbmV3U3RhY2tQdHJdID0gJG5ld1Rva2VuOwogICAgICAgICAgICAgICAgICAgICRuZXdTdGFja1B0cisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWyRuZXdTdGFja1B0cl0gPSAkdG9rZW47CiAgICAgICAgICAgICAgICAkbmV3U3RhY2tQdHIrKzsKICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAvLyBDb252ZXJ0IG51bWJlcnMsIGluY2x1ZGluZyBkZWNpbWFscy4KICAgICAgICAgICAgaWYgKCR0b2tlblsnY29kZSddID09PSBUX1NUUklORwogICAgICAgICAgICAgICAgfHwgJHRva2VuWydjb2RlJ10gPT09IFRfT0JKRUNUX09QRVJBVE9SCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJG5ld0NvbnRlbnQgID0gJyc7CiAgICAgICAgICAgICAgICAkb2xkU3RhY2tQdHIgPSAkc3RhY2tQdHI7CiAgICAgICAgICAgICAgICB3aGlsZSAocHJlZ19tYXRjaCgnfF5bMC05XC5dKyR8JywgJHRva2Vuc1skc3RhY2tQdHJdWydjb250ZW50J10pICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJG5ld0NvbnRlbnQgLj0gJHRva2Vuc1skc3RhY2tQdHJdWydjb250ZW50J107CiAgICAgICAgICAgICAgICAgICAgJHN0YWNrUHRyKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRuZXdDb250ZW50ICE9PSAnJyAmJiAkbmV3Q29udGVudCAhPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWygkbmV3U3RhY2tQdHIgLSAxKV1bJ2NvbnRlbnQnXSA9ICRuZXdDb250ZW50OwogICAgICAgICAgICAgICAgICAgIGlmIChjdHlwZV9kaWdpdCgkbmV3Q29udGVudCkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWygkbmV3U3RhY2tQdHIgLSAxKV1bJ2NvZGUnXSA9IGNvbnN0YW50KCdUX0xOVU1CRVInKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFsVG9rZW5zWygkbmV3U3RhY2tQdHIgLSAxKV1bJ3R5cGUnXSA9ICdUX0xOVU1CRVInOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1soJG5ld1N0YWNrUHRyIC0gMSldWydjb2RlJ10gPSBjb25zdGFudCgnVF9ETlVNQkVSJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaW5hbFRva2Vuc1soJG5ld1N0YWNrUHRyIC0gMSldWyd0eXBlJ10gPSAnVF9ETlVNQkVSJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzdGFja1B0ci0tOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgPSAkb2xkU3RhY2tQdHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgdG9rZW4gYWZ0ZXIgYW4gb2JqZWN0IG9wZXJhdG9yIGludG8gYSBzdHJpbmcsIGluIG1vc3QgY2FzZXMuCiAgICAgICAgICAgIGlmICgkdG9rZW5bJ2NvZGUnXSA9PT0gVF9PQkpFQ1RfT1BFUkFUT1IpIHsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAoJHN0YWNrUHRyICsgMSk7ICRpIDwgJG51bVRva2VuczsgJGkrKykgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldChVdGlsXFRva2Vuczo6JGVtcHR5VG9rZW5zWyR0b2tlbnNbJGldWydjb2RlJ11dKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRpXVsnY29kZSddICE9PSBUX1BST1RPVFlQRQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zWyRpXVsnY29kZSddICE9PSBUX0xOVU1CRVIKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc1skaV1bJ2NvZGUnXSAhPT0gVF9ETlVNQkVSCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbnNbJGldWydjb2RlJ10gPSBUX1NUUklORzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRva2Vuc1skaV1bJ3R5cGUnXSA9ICdUX1NUUklORyc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgIGVjaG8gIlx0KioqIEVORCBUT0tFTklaSU5HICoqKiIuUEhQX0VPTDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZmluYWxUb2tlbnM7CgogICAgfS8vZW5kIHRva2VuaXplKCkKCgogICAgLyoqCiAgICAgKiBUb2tlbml6ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gaWYgb25lIGlzIGZvdW5kLgogICAgICoKICAgICAqIElmIGEgcmVndWxhciBleHByZXNzaW9uIGlzIG5vdCBmb3VuZCwgTlVMTCBpcyByZXR1cm5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaGFyICAgVGhlIGluZGV4IG9mIHRoZSBwb3NzaWJsZSByZWdleCBzdGFydCBjaGFyYWN0ZXIuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIGNvbXBsZXRlIGNvbnRlbnQgb2YgdGhlIHN0cmluZyBiZWluZyB0b2tlbml6ZWQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaGFycyAgQW4gYXJyYXkgb2YgY2hhcmFjdGVycyBiZWluZyB0b2tlbml6ZWQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0b2tlbnMgVGhlIGN1cnJlbnQgYXJyYXkgb2YgdG9rZW5zIGZvdW5kIGluIHRoZSBzdHJpbmcuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIHN0cmluZz58bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVnZXhUb2tlbigkY2hhciwgJHN0cmluZywgJGNoYXJzLCAkdG9rZW5zKQogICAgewogICAgICAgICRiZWZvcmVUb2tlbnMgPSBbCiAgICAgICAgICAgIFRfRVFVQUwgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0lTX05PVF9FUVVBTCAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9JU19JREVOVElDQUwgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgIFRfSVNfTk9UX0lERU5USUNBTCAgICA9PiB0cnVlLAogICAgICAgICAgICBUX09QRU5fUEFSRU5USEVTSVMgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9PUEVOX1NRVUFSRV9CUkFDS0VUID0+IHRydWUsCiAgICAgICAgICAgIFRfUkVUVVJOICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0JPT0xFQU5fT1IgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9CT09MRUFOX0FORCAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgIFRfQk9PTEVBTl9OT1QgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0JJVFdJU0VfT1IgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9CSVRXSVNFX0FORCAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgIFRfQ09NTUEgICAgICAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0NPTE9OICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgVF9UWVBFT0YgICAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgIFRfSU5MSU5FX1RIRU4gICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICBUX0lOTElORV9FTFNFICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICBdOwoKICAgICAgICAkYWZ0ZXJUb2tlbnMgPSBbCiAgICAgICAgICAgICcsJyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICcpJyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICddJyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICc7JyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICcgJyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICcuJyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICc6JyAgICAgICAgICAgID0+IHRydWUsCiAgICAgICAgICAgICR0aGlzLT5lb2xDaGFyID0+IHRydWUsCiAgICAgICAgXTsKCiAgICAgICAgLy8gRmluZCB0aGUgbGFzdCBub24td2hpdGVzcGFjZSB0b2tlbiB0aGF0IHdhcyBhZGRlZAogICAgICAgIC8vIHRvIHRoZSB0b2tlbnMgYXJyYXkuCiAgICAgICAgJG51bVRva2VucyA9IGNvdW50KCR0b2tlbnMpOwogICAgICAgIGZvciAoJHByZXYgPSAoJG51bVRva2VucyAtIDEpOyAkcHJldiA+PSAwOyAkcHJldi0tKSB7CiAgICAgICAgICAgIGlmIChpc3NldChVdGlsXFRva2Vuczo6JGVtcHR5VG9rZW5zWyR0b2tlbnNbJHByZXZdWydjb2RlJ11dKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGJlZm9yZVRva2Vuc1skdG9rZW5zWyRwcmV2XVsnY29kZSddXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgc28gbG9vayBmb3IgdGhlIGVuZCBvZiBpdC4KICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgZWNobyAiXHQqIHRva2VuIHBvc3NpYmx5IHN0YXJ0cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiAqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgJG51bUNoYXJzID0gY291bnQoJGNoYXJzKTsKICAgICAgICBmb3IgKCRuZXh0ID0gKCRjaGFyICsgMSk7ICRuZXh0IDwgJG51bUNoYXJzOyAkbmV4dCsrKSB7CiAgICAgICAgICAgIGlmICgkY2hhcnNbJG5leHRdID09PSAnLycpIHsKICAgICAgICAgICAgICAgIC8vIEp1c3QgbWFrZSBzdXJlIHRoaXMgaXMgbm90IGVzY2FwZWQgZmlyc3QuCiAgICAgICAgICAgICAgICBpZiAoJGNoYXJzWygkbmV4dCAtIDEpXSAhPT0gJ1xcJykgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBzaW1wbGUgZm9ybTogLy4uLi8gc28gd2UgZm91bmQgdGhlIGVuZC4KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGNoYXJzWygkbmV4dCAtIDIpXSA9PT0gJ1xcJykgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBmb3JtOiAvLi4uXFwvIHNvIHdlIGZvdW5kIHRoZSBlbmQuCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcG9zc2libGVFb2xDaGFyID0gc3Vic3RyKCRzdHJpbmcsICRuZXh0LCBzdHJsZW4oJHRoaXMtPmVvbENoYXIpKTsKICAgICAgICAgICAgICAgIGlmICgkcG9zc2libGVFb2xDaGFyID09PSAkdGhpcy0+ZW9sQ2hhcikgewogICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxhc3QgdG9rZW4gb24gdGhlIGxpbmUgYW5kIHJlZ3VsYXIKICAgICAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9ucyBuZWVkIHRvIGJlIGRlZmluZWQgb24gYSBzaW5nbGUgbGluZSwKICAgICAgICAgICAgICAgICAgICAvLyBzbyB0aGlzIGlzIG5vdCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGFyc1skbmV4dF0gIT09ICcvJykgewogICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgIGVjaG8gIlx0KiBjb3VsZCBub3QgZmluZCBlbmQgb2YgcmVndWxhciBleHByZXNzaW9uICoiLlBIUF9FT0w7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goJ3xbYS16QS1aXXwnLCAkY2hhcnNbKCRuZXh0ICsgMSldKSAhPT0gMCkgewogICAgICAgICAgICAvLyBUaGUgdG9rZW4gZGlyZWN0bHkgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgcmVnZXggY2FuCiAgICAgICAgICAgIC8vIGJlIG1vZGlmaWVycyBsaWtlIGdsb2JhbCBhbmQgY2FzZSBpbnNlbnNpdGl2ZQogICAgICAgICAgICAvLyAoLmUuZywgL3BhdHRlcm4vZ2kpLgogICAgICAgICAgICAkbmV4dCsrOwogICAgICAgIH0KCiAgICAgICAgJHJlZ2V4RW5kID0gJG5leHQ7CiAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgIGVjaG8gIlx0KiBmb3VuZCBlbmQgb2YgcmVndWxhciBleHByZXNzaW9uIGF0IHRva2VuICRyZWdleEVuZCAqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgZm9yICgkbmV4dCArPSAxOyAkbmV4dCA8ICRudW1DaGFyczsgJG5leHQrKykgewogICAgICAgICAgICBpZiAoJGNoYXJzWyRuZXh0XSAhPT0gJyAnKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwb3NzaWJsZUVvbENoYXIgPSBzdWJzdHIoJHN0cmluZywgJG5leHQsIHN0cmxlbigkdGhpcy0+ZW9sQ2hhcikpOwogICAgICAgICAgICAgICAgaWYgKCRwb3NzaWJsZUVvbENoYXIgPT09ICR0aGlzLT5lb2xDaGFyKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGFzdCB0b2tlbiBvbiB0aGUgbGluZS4KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRhZnRlclRva2Vuc1skY2hhcnNbJG5leHRdXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgZWNobyAiXHQqIHRva2VucyBhZnRlciByZWd1bGFyIGV4cHJlc3Npb24gZG8gbm90IGxvb2sgY29ycmVjdCAqIi5QSFBfRU9MOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vIFRoaXMgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24sIHNvIGpvaW4gYWxsIHRoZSB0b2tlbnMgdG9nZXRoZXIuCiAgICAgICAgJGNvbnRlbnQgPSAnJzsKICAgICAgICBmb3IgKCR4ID0gJGNoYXI7ICR4IDw9ICRyZWdleEVuZDsgJHgrKykgewogICAgICAgICAgICAkY29udGVudCAuPSAkY2hhcnNbJHhdOwogICAgICAgIH0KCiAgICAgICAgJHRva2VuID0gWwogICAgICAgICAgICAnc3RhcnQnICAgPT4gJGNoYXIsCiAgICAgICAgICAgICdlbmQnICAgICA9PiAkcmVnZXhFbmQsCiAgICAgICAgICAgICdjb250ZW50JyA9PiAkY29udGVudCwKICAgICAgICBdOwoKICAgICAgICByZXR1cm4gJHRva2VuOwoKICAgIH0vL2VuZCBnZXRSZWdleFRva2VuKCkKCgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgYWZ0ZXIgbWFpbiB0b2tlbml6aW5nLgogICAgICoKICAgICAqIFRoaXMgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGxvb2tzIGZvciBwcm9wZXJ0aWVzLCBjbG9zdXJlcywgbGFiZWxzIGFuZCBvYmplY3RzLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzc0FkZGl0aW9uYWwoKQogICAgewogICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICBlY2hvICJcdCoqKiBTVEFSVCBBRERJVElPTkFMIEpTIFBST0NFU1NJTkcgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICAgICAgJG51bVRva2VucyAgPSBjb3VudCgkdGhpcy0+dG9rZW5zKTsKICAgICAgICAkY2xhc3NTdGFjayA9IFtdOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbnVtVG9rZW5zOyAkaSsrKSB7CiAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgJHR5cGUgICAgPSAkdGhpcy0+dG9rZW5zWyRpXVsndHlwZSddOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBVdGlsXENvbW1vbjo6cHJlcGFyZUZvck91dHB1dCgkdGhpcy0+dG9rZW5zWyRpXVsnY29udGVudCddKTsKCiAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgIGVjaG8gIlx0UHJvY2VzcyB0b2tlbiAkaTogJHR5cGUgPT4gJGNvbnRlbnQiLlBIUF9FT0w7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIExvb2tpbmcgZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSBjbG9zdXJlcy4KICAgICAgICAgICAgaWYgKCR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPT09IFRfRlVOQ1RJT04gJiYgaXNzZXQoJHRoaXMtPnRva2Vuc1skaV1bJ3Njb3BlX29wZW5lciddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgZm9yICgkeCA9ICgkaSArIDEpOyAkeCA8ICRudW1Ub2tlbnM7ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoVXRpbFxUb2tlbnM6OiRlbXB0eVRva2Vuc1skdGhpcy0+dG9rZW5zWyR4XVsnY29kZSddXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skeF1bJ2NvZGUnXSA9PT0gVF9PUEVOX1BBUkVOVEhFU0lTKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9IFRfQ0xPU1VSRTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsndHlwZSddID0gJ1RfQ0xPU1VSRSc7CiAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBzdHJfcmVwZWF0KCJcdCIsIGNvdW50KCRjbGFzc1N0YWNrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0KiB0b2tlbiAkaSBvbiBsaW5lICRsaW5lIGNoYW5nZWQgZnJvbSBUX0ZVTkNUSU9OIHRvIFRfQ0xPU1VSRSAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfb3BlbmVyJ10gKyAxKTsgJHggPCAkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY2xvc2VyJ107ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT50b2tlbnNbJHhdWydjb25kaXRpb25zJ11bJGldKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR4XVsnY29uZGl0aW9ucyddWyRpXSA9IFRfQ0xPU1VSRTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHhdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0XHQqIGNsZWFuZWQgJHggKCR0eXBlKSAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9PUEVOX0NVUkxZX0JSQUNLRVQKICAgICAgICAgICAgICAgICYmIGlzc2V0KCR0aGlzLT50b2tlbnNbJGldWydzY29wZV9jb25kaXRpb24nXSkgPT09IGZhbHNlCiAgICAgICAgICAgICAgICAmJiBpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnYnJhY2tldF9jbG9zZXInXSkgPT09IHRydWUKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkY29uZGl0aW9uID0gJHRoaXMtPnRva2Vuc1skaV1bJ2NvbmRpdGlvbnMnXTsKICAgICAgICAgICAgICAgICRjb25kaXRpb24gPSBlbmQoJGNvbmRpdGlvbik7CiAgICAgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbiA9PT0gVF9DTEFTUykgewogICAgICAgICAgICAgICAgICAgIC8vIFBvc3NpYmx5IGFuIEVTNiBtZXRob2QuIFRvIGJlIGNsYXNzaWZpZWQgYXMgb25lLCB0aGUgcHJldmlvdXMKICAgICAgICAgICAgICAgICAgICAvLyBub24tZW1wdHkgdG9rZW5zIG5lZWQgdG8gYmUgYSBzZXQgb2YgcGFyZW50aGVzaXMsIGFuZCB0aGVuIGEgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgLy8gKHRoZSBtZXRob2QgbmFtZSkuCiAgICAgICAgICAgICAgICAgICAgZm9yICgkcGFyZW5DbG9zZXIgPSAoJGkgLSAxKTsgJHBhcmVuQ2xvc2VyID4gMDsgJHBhcmVuQ2xvc2VyLS0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KFV0aWxcVG9rZW5zOjokZW1wdHlUb2tlbnNbJHRoaXMtPnRva2Vuc1skcGFyZW5DbG9zZXJdWydjb2RlJ11dKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnRva2Vuc1skcGFyZW5DbG9zZXJdWydjb2RlJ10gPT09IFRfQ0xPU0VfUEFSRU5USEVTSVMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcmVuT3BlbmVyID0gJHRoaXMtPnRva2Vuc1skcGFyZW5DbG9zZXJdWydwYXJlbnRoZXNpc19vcGVuZXInXTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkbmFtZSA9ICgkcGFyZW5PcGVuZXIgLSAxKTsgJG5hbWUgPiAwOyAkbmFtZS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoVXRpbFxUb2tlbnM6OiRlbXB0eVRva2Vuc1skdGhpcy0+dG9rZW5zWyRuYW1lXVsnY29kZSddXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+dG9rZW5zWyRuYW1lXVsnY29kZSddID09PSBUX1NUUklORykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBtZXRob2QgbmFtZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJHRoaXMtPnRva2Vuc1skbmFtZV1bJ2xpbmUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdCogdG9rZW4gJG5hbWUgb24gbGluZSAkbGluZSBjaGFuZ2VkIGZyb20gVF9TVFJJTkcgdG8gVF9GVU5DVElPTiAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjbG9zZXIgPSAkdGhpcy0+dG9rZW5zWyRpXVsnYnJhY2tldF9jbG9zZXInXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRuYW1lXVsnY29kZSddID0gVF9GVU5DVElPTjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJG5hbWVdWyd0eXBlJ10gPSAnVF9GVU5DVElPTic7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoWyRuYW1lLCAkaSwgJGNsb3Nlcl0gYXMgJHRva2VuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skdG9rZW5dWydzY29wZV9jb25kaXRpb24nXSAgICA9ICRuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJHRva2VuXVsnc2NvcGVfb3BlbmVyJ10gICAgICAgPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR0b2tlbl1bJ3Njb3BlX2Nsb3NlciddICAgICAgID0gJGNsb3NlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR0b2tlbl1bJ3BhcmVudGhlc2lzX29wZW5lciddID0gJHBhcmVuT3BlbmVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJHRva2VuXVsncGFyZW50aGVzaXNfY2xvc2VyJ10gPSAkcGFyZW5DbG9zZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skdG9rZW5dWydwYXJlbnRoZXNpc19vd25lciddICA9ICRuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJHBhcmVuT3BlbmVyXVsncGFyZW50aGVzaXNfb3duZXInXSA9ICRuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skcGFyZW5DbG9zZXJdWydwYXJlbnRoZXNpc19vd25lciddID0gJG5hbWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkeCA9ICgkaSArIDEpOyAkeCA8ICRjbG9zZXI7ICR4KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyR4XVsnY29uZGl0aW9ucyddWyRuYW1lXSA9IFRfRlVOQ1RJT047CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3NvcnQoJHRoaXMtPnRva2Vuc1skeF1bJ2NvbmRpdGlvbnMnXSwgU09SVF9OVU1FUklDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUEhQX0NPREVTTklGRkVSX1ZFUkJPU0lUWSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+dG9rZW5zWyR4XVsndHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHRcdCogYWRkZWQgVF9GVU5DVElPTiBjb25kaXRpb24gdG8gJHggKCR0eXBlKSAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgICAgICAgICAkY2xhc3NTdGFja1tdID0gJGk7CgogICAgICAgICAgICAgICAgJGNsb3NlciA9ICR0aGlzLT50b2tlbnNbJGldWydicmFja2V0X2Nsb3NlciddOwogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSAgICAgID0gVF9PQkpFQ1Q7CiAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsndHlwZSddICAgICAgPSAnVF9PQkpFQ1QnOwogICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skY2xvc2VyXVsnY29kZSddID0gVF9DTE9TRV9PQkpFQ1Q7CiAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRjbG9zZXJdWyd0eXBlJ10gPSAnVF9DTE9TRV9PQkpFQ1QnOwoKICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCBjb3VudCgkY2xhc3NTdGFjaykpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0KiB0b2tlbiAkaSBjb252ZXJ0ZWQgZnJvbSBUX09QRU5fQ1VSTFlfQlJBQ0tFVCB0byBUX09CSkVDVCAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCBjb3VudCgkY2xhc3NTdGFjaykpOwogICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0KiB0b2tlbiAkY2xvc2VyIGNvbnZlcnRlZCBmcm9tIFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCB0byBUX0NMT1NFX09CSkVDVCAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAoJHggPSAoJGkgKyAxKTsgJHggPCAkY2xvc2VyOyAkeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skeF1bJ2NvbmRpdGlvbnMnXVskaV0gPSBUX09CSkVDVDsKICAgICAgICAgICAgICAgICAgICBrc29ydCgkdGhpcy0+dG9rZW5zWyR4XVsnY29uZGl0aW9ucyddLCBTT1JUX05VTUVSSUMpOwogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICR0aGlzLT50b2tlbnNbJHhdWyd0eXBlJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gc3RyX3JlcGVhdCgiXHQiLCBjb3VudCgkY2xhc3NTdGFjaykpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJcdFx0KiBhZGRlZCBUX09CSkVDVCBjb25kaXRpb24gdG8gJHggKCR0eXBlKSAqIi5QSFBfRU9MOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICgkdGhpcy0+dG9rZW5zWyRpXVsnY29kZSddID09PSBUX0NMT1NFX09CSkVDVCkgewogICAgICAgICAgICAgICAgJG9wZW5lciA9IGFycmF5X3BvcCgkY2xhc3NTdGFjayk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoJHRoaXMtPnRva2Vuc1skaV1bJ2NvZGUnXSA9PT0gVF9DT0xPTikgewogICAgICAgICAgICAgICAgLy8gSWYgaXQgaXMgYSBzY29wZSBvcGVuZXIsIGl0IGJlbG9uZ3MgdG8gYQogICAgICAgICAgICAgICAgLy8gREVGQVVMVCBvciBDQVNFIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+dG9rZW5zWyRpXVsnc2NvcGVfY29uZGl0aW9uJ10pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoaXMgaXMgbm90IHBhcnQgb2YgYW4gaW5saW5lIElGIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgIGZvciAoJHggPSAoJGkgLSAxKTsgJHggPj0gMDsgJHgtLSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+dG9rZW5zWyR4XVsnY29kZSddID09PSBUX0lOTElORV9USEVOKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50b2tlbnNbJGldWydjb2RlJ10gPSBUX0lOTElORV9FTFNFOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRpXVsndHlwZSddID0gJ1RfSU5MSU5FX0VMU0UnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIlx0KiB0b2tlbiAkaSBjb252ZXJ0ZWQgZnJvbSBUX0NPTE9OIHRvIFRfSU5MSU5FX1RIRU4gKiIuUEhQX0VPTDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUoMik7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkdGhpcy0+dG9rZW5zWyR4XVsnbGluZSddIDwgJHRoaXMtPnRva2Vuc1skaV1bJ2xpbmUnXSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gVGhlIHN0cmluZyB0byB0aGUgbGVmdCBvZiB0aGUgY29sb24gaXMgZWl0aGVyIGEgcHJvcGVydHkgb3IgbGFiZWwuCiAgICAgICAgICAgICAgICBmb3IgKCRsYWJlbCA9ICgkaSAtIDEpOyAkbGFiZWwgPj0gMDsgJGxhYmVsLS0pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoVXRpbFxUb2tlbnM6OiRlbXB0eVRva2Vuc1skdGhpcy0+dG9rZW5zWyRsYWJlbF1bJ2NvZGUnXV0pID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT50b2tlbnNbJGxhYmVsXVsnY29kZSddICE9PSBUX1NUUklORwogICAgICAgICAgICAgICAgICAgICYmICR0aGlzLT50b2tlbnNbJGxhYmVsXVsnY29kZSddICE9PSBUX0NPTlNUQU5UX0VOQ0FQU0VEX1NUUklORwogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRjbGFzc1N0YWNrKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRsYWJlbF1bJ2NvZGUnXSA9IFRfUFJPUEVSVFk7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skbGFiZWxdWyd0eXBlJ10gPSAnVF9QUk9QRVJUWSc7CgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQqIHRva2VuICRsYWJlbCBjb252ZXJ0ZWQgZnJvbSBUX1NUUklORyB0byBUX1BST1BFUlRZICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dG9rZW5zWyRsYWJlbF1bJ2NvZGUnXSA9IFRfTEFCRUw7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRva2Vuc1skbGFiZWxdWyd0eXBlJ10gPSAnVF9MQUJFTCc7CgogICAgICAgICAgICAgICAgICAgIGlmIChQSFBfQ09ERVNOSUZGRVJfVkVSQk9TSVRZID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHN0cl9yZXBlYXQoIlx0IiwgY291bnQoJGNsYXNzU3RhY2spKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiXHQqIHRva2VuICRsYWJlbCBjb252ZXJ0ZWQgZnJvbSBUX1NUUklORyB0byBUX0xBQkVMICoiLlBIUF9FT0w7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfS8vZW5kIGlmCiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0vL2VuZCBmb3IKCiAgICAgICAgaWYgKFBIUF9DT0RFU05JRkZFUl9WRVJCT1NJVFkgPiAxKSB7CiAgICAgICAgICAgIGVjaG8gIlx0KioqIEVORCBBRERJVElPTkFMIEpTIFBST0NFU1NJTkcgKioqIi5QSFBfRU9MOwogICAgICAgIH0KCiAgICB9Ly9lbmQgcHJvY2Vzc0FkZGl0aW9uYWwoKQoKCn0vL2VuZCBjbGFzcwoiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnMiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTA6IlRva2VuaXplcnMiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czozMDoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTM6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjMwOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyOiJKUyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mzc6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xUb2tlbml6ZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo5OiJUb2tlbml6ZXIiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6NTp7czo0NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokc2NvcGVPcGVuZXJzIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokc2NvcGVPcGVuZXJzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6InNjb3BlT3BlbmVycyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MDoiQSBsaXN0IG9mIHRva2VucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG9wZW4gYSBzY29wZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjkwOiJUaGlzIGFycmF5IGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBraW5kIG9mIHRva2VuIHRoZSBzY29wZQpvcGVuZXIgdXNlcyB0byBvcGVuIGFuZCBjbG9zZSB0aGUgc2NvcGUsIGlmIHRoZSB0b2tlbiBzdHJpY3RseSByZXF1aXJlcwphbiBvcGVuZXIsIGlmIHRoZSB0b2tlbiBjYW4gc2hhcmUgYSBzY29wZSBjbG9zZXIsIGFuZCB3aG8gaXQgY2FuIGJlIHNoYXJlZAp3aXRoLiBBbiBleGFtcGxlIG9mIGEgdG9rZW4gdGhhdCBzaGFyZXMgYSBzY29wZSBjbG9zZXIgaXMgYSBDQVNFIHNjb3BlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjI2OiJQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVycyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6Mzp7czo2OiJDb25maWciO3M6MjI6IlBIUF9Db2RlU25pZmZlclxDb25maWciO3M6MTg6IlRva2VuaXplckV4Y2VwdGlvbiI7czo0NToiUEhQX0NvZGVTbmlmZmVyXEV4Y2VwdGlvbnNcVG9rZW5pemVyRXhjZXB0aW9uIjtzOjQ6IlV0aWwiO3M6MjA6IlBIUF9Db2RlU25pZmZlclxVdGlsIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO3M6MjMwOToiW1RfSUYgPT4gWydzdGFydCcgPT4gW1RfT1BFTl9DVVJMWV9CUkFDS0VUID0+IFRfT1BFTl9DVVJMWV9CUkFDS0VUXSwgJ2VuZCcgPT4gW1RfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCA9PiBUX0NMT1NFX0NVUkxZX0JSQUNLRVRdLCAnc3RyaWN0JyA9PiBmYWxzZSwgJ3NoYXJlZCcgPT4gZmFsc2UsICd3aXRoJyA9PiBbXV0sIFRfVFJZID0+IFsnc3RhcnQnID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sICdlbmQnID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwgJ3N0cmljdCcgPT4gdHJ1ZSwgJ3NoYXJlZCcgPT4gZmFsc2UsICd3aXRoJyA9PiBbXV0sIFRfQ0FUQ0ggPT4gWydzdGFydCcgPT4gW1RfT1BFTl9DVVJMWV9CUkFDS0VUID0+IFRfT1BFTl9DVVJMWV9CUkFDS0VUXSwgJ2VuZCcgPT4gW1RfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCA9PiBUX0NMT1NFX0NVUkxZX0JSQUNLRVRdLCAnc3RyaWN0JyA9PiB0cnVlLCAnc2hhcmVkJyA9PiBmYWxzZSwgJ3dpdGgnID0+IFtdXSwgVF9FTFNFID0+IFsnc3RhcnQnID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sICdlbmQnID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwgJ3N0cmljdCcgPT4gZmFsc2UsICdzaGFyZWQnID0+IGZhbHNlLCAnd2l0aCcgPT4gW11dLCBUX0ZPUiA9PiBbJ3N0YXJ0JyA9PiBbVF9PUEVOX0NVUkxZX0JSQUNLRVQgPT4gVF9PUEVOX0NVUkxZX0JSQUNLRVRdLCAnZW5kJyA9PiBbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVF0sICdzdHJpY3QnID0+IGZhbHNlLCAnc2hhcmVkJyA9PiBmYWxzZSwgJ3dpdGgnID0+IFtdXSwgVF9DTEFTUyA9PiBbJ3N0YXJ0JyA9PiBbVF9PUEVOX0NVUkxZX0JSQUNLRVQgPT4gVF9PUEVOX0NVUkxZX0JSQUNLRVRdLCAnZW5kJyA9PiBbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVF0sICdzdHJpY3QnID0+IHRydWUsICdzaGFyZWQnID0+IGZhbHNlLCAnd2l0aCcgPT4gW11dLCBUX0ZVTkNUSU9OID0+IFsnc3RhcnQnID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sICdlbmQnID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwgJ3N0cmljdCcgPT4gZmFsc2UsICdzaGFyZWQnID0+IGZhbHNlLCAnd2l0aCcgPT4gW11dLCBUX1dISUxFID0+IFsnc3RhcnQnID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sICdlbmQnID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwgJ3N0cmljdCcgPT4gZmFsc2UsICdzaGFyZWQnID0+IGZhbHNlLCAnd2l0aCcgPT4gW11dLCBUX0RPID0+IFsnc3RhcnQnID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sICdlbmQnID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwgJ3N0cmljdCcgPT4gdHJ1ZSwgJ3NoYXJlZCcgPT4gZmFsc2UsICd3aXRoJyA9PiBbXV0sIFRfU1dJVENIID0+IFsnc3RhcnQnID0+IFtUX09QRU5fQ1VSTFlfQlJBQ0tFVCA9PiBUX09QRU5fQ1VSTFlfQlJBQ0tFVF0sICdlbmQnID0+IFtUX0NMT1NFX0NVUkxZX0JSQUNLRVQgPT4gVF9DTE9TRV9DVVJMWV9CUkFDS0VUXSwgJ3N0cmljdCcgPT4gdHJ1ZSwgJ3NoYXJlZCcgPT4gZmFsc2UsICd3aXRoJyA9PiBbXV0sIFRfQ0FTRSA9PiBbJ3N0YXJ0JyA9PiBbVF9DT0xPTiA9PiBUX0NPTE9OXSwgJ2VuZCcgPT4gW1RfQlJFQUsgPT4gVF9CUkVBSywgVF9SRVRVUk4gPT4gVF9SRVRVUk4sIFRfQ09OVElOVUUgPT4gVF9DT05USU5VRSwgVF9USFJPVyA9PiBUX1RIUk9XXSwgJ3N0cmljdCcgPT4gdHJ1ZSwgJ3NoYXJlZCcgPT4gdHJ1ZSwgJ3dpdGgnID0+IFtUX0RFRkFVTFQgPT4gVF9ERUZBVUxULCBUX0NBU0UgPT4gVF9DQVNFLCBUX1NXSVRDSCA9PiBUX1NXSVRDSF1dLCBUX0RFRkFVTFQgPT4gWydzdGFydCcgPT4gW1RfQ09MT04gPT4gVF9DT0xPTl0sICdlbmQnID0+IFtUX0JSRUFLID0+IFRfQlJFQUssIFRfUkVUVVJOID0+IFRfUkVUVVJOLCBUX0NPTlRJTlVFID0+IFRfQ09OVElOVUUsIFRfVEhST1cgPT4gVF9USFJPV10sICdzdHJpY3QnID0+IHRydWUsICdzaGFyZWQnID0+IHRydWUsICd3aXRoJyA9PiBbVF9DQVNFID0+IFRfQ0FTRSwgVF9TV0lUQ0ggPT4gVF9TV0lUQ0hdXV0iO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTMxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fXM6NDc6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xKUzo6JGVuZFNjb3BlVG9rZW5zIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NzoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokZW5kU2NvcGVUb2tlbnMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiZW5kU2NvcGVUb2tlbnMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MzY6IkEgbGlzdCBvZiB0b2tlbnMgdGhhdCBlbmQgdGhlIHNjb3BlLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoxNTU6IlRoaXMgYXJyYXkgaXMganVzdCBhIHVuaXF1ZSBjb2xsZWN0aW9uIG9mIHRoZSBlbmQgdG9rZW5zCmZyb20gdGhlIF9zY29wZU9wZW5lcnMgYXJyYXkuIFRoZSBkYXRhIGlzIGR1cGxpY2F0ZWQgaGVyZSB0bwpzYXZlIHRpbWUgZHVyaW5nIHBhcnNpbmcgb2YgdGhlIGZpbGUuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFZhcl8iOjQ6e3M6MTU6IgAqAHZhcmlhYmxlTmFtZSI7czowOiIiO3M6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3ODtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGVzIjthOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtzOjY4OiJbVF9DTE9TRV9DVVJMWV9CUkFDS0VUID0+IFRfQ0xPU0VfQ1VSTFlfQlJBQ0tFVCwgVF9CUkVBSyA9PiBUX0JSRUFLXSI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE0MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTQ1O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fXM6NDQ6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xKUzo6JHRva2VuVmFsdWVzIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NDoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokdG9rZW5WYWx1ZXMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToidG9rZW5WYWx1ZXMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDQ6IkEgbGlzdCBvZiBzcGVjaWFsIEpTIHRva2VucyBhbmQgdGhlaXIgdHlwZXMuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6Nzg7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czoxNjYzOiJbJ2NsYXNzJyA9PiAnVF9DTEFTUycsICdmdW5jdGlvbicgPT4gJ1RfRlVOQ1RJT04nLCAncHJvdG90eXBlJyA9PiAnVF9QUk9UT1RZUEUnLCAndHJ5JyA9PiAnVF9UUlknLCAnY2F0Y2gnID0+ICdUX0NBVENIJywgJ3JldHVybicgPT4gJ1RfUkVUVVJOJywgJ3Rocm93JyA9PiAnVF9USFJPVycsICdicmVhaycgPT4gJ1RfQlJFQUsnLCAnc3dpdGNoJyA9PiAnVF9TV0lUQ0gnLCAnY29udGludWUnID0+ICdUX0NPTlRJTlVFJywgJ2lmJyA9PiAnVF9JRicsICdlbHNlJyA9PiAnVF9FTFNFJywgJ2RvJyA9PiAnVF9ETycsICd3aGlsZScgPT4gJ1RfV0hJTEUnLCAnZm9yJyA9PiAnVF9GT1InLCAndmFyJyA9PiAnVF9WQVInLCAnY2FzZScgPT4gJ1RfQ0FTRScsICdkZWZhdWx0JyA9PiAnVF9ERUZBVUxUJywgJ3RydWUnID0+ICdUX1RSVUUnLCAnZmFsc2UnID0+ICdUX0ZBTFNFJywgJ251bGwnID0+ICdUX05VTEwnLCAndGhpcycgPT4gJ1RfVEhJUycsICd0eXBlb2YnID0+ICdUX1RZUEVPRicsICcoJyA9PiAnVF9PUEVOX1BBUkVOVEhFU0lTJywgJyknID0+ICdUX0NMT1NFX1BBUkVOVEhFU0lTJywgJ3snID0+ICdUX09QRU5fQ1VSTFlfQlJBQ0tFVCcsICd9JyA9PiAnVF9DTE9TRV9DVVJMWV9CUkFDS0VUJywgJ1snID0+ICdUX09QRU5fU1FVQVJFX0JSQUNLRVQnLCAnXScgPT4gJ1RfQ0xPU0VfU1FVQVJFX0JSQUNLRVQnLCAnPycgPT4gJ1RfSU5MSU5FX1RIRU4nLCAnLicgPT4gJ1RfT0JKRUNUX09QRVJBVE9SJywgJysnID0+ICdUX1BMVVMnLCAnLScgPT4gJ1RfTUlOVVMnLCAnKicgPT4gJ1RfTVVMVElQTFknLCAnJScgPT4gJ1RfTU9EVUxVUycsICcvJyA9PiAnVF9ESVZJREUnLCAnXicgPT4gJ1RfTE9HSUNBTF9YT1InLCAnLCcgPT4gJ1RfQ09NTUEnLCAnOycgPT4gJ1RfU0VNSUNPTE9OJywgJzonID0+ICdUX0NPTE9OJywgJzwnID0+ICdUX0xFU1NfVEhBTicsICc+JyA9PiAnVF9HUkVBVEVSX1RIQU4nLCAnPDwnID0+ICdUX1NMJywgJz4+JyA9PiAnVF9TUicsICc+Pj4nID0+ICdUX1pTUicsICc8PD0nID0+ICdUX1NMX0VRVUFMJywgJz4+PScgPT4gJ1RfU1JfRVFVQUwnLCAnPj4+PScgPT4gJ1RfWlNSX0VRVUFMJywgJzw9JyA9PiAnVF9JU19TTUFMTEVSX09SX0VRVUFMJywgJz49JyA9PiAnVF9JU19HUkVBVEVSX09SX0VRVUFMJywgJz0+JyA9PiAnVF9ET1VCTEVfQVJST1cnLCAnIScgPT4gJ1RfQk9PTEVBTl9OT1QnLCAnfHwnID0+ICdUX0JPT0xFQU5fT1InLCAnJiYnID0+ICdUX0JPT0xFQU5fQU5EJywgJ3wnID0+ICdUX0JJVFdJU0VfT1InLCAnJicgPT4gJ1RfQklUV0lTRV9BTkQnLCAnIT0nID0+ICdUX0lTX05PVF9FUVVBTCcsICchPT0nID0+ICdUX0lTX05PVF9JREVOVElDQUwnLCAnPScgPT4gJ1RfRVFVQUwnLCAnPT0nID0+ICdUX0lTX0VRVUFMJywgJz09PScgPT4gJ1RfSVNfSURFTlRJQ0FMJywgJy09JyA9PiAnVF9NSU5VU19FUVVBTCcsICcrPScgPT4gJ1RfUExVU19FUVVBTCcsICcqPScgPT4gJ1RfTVVMX0VRVUFMJywgJy89JyA9PiAnVF9ESVZfRVFVQUwnLCAnJT0nID0+ICdUX01PRF9FUVVBTCcsICcrKycgPT4gJ1RfSU5DJywgJy0tJyA9PiAnVF9ERUMnLCAnLy8nID0+ICdUX0NPTU1FTlQnLCAnLyonID0+ICdUX0NPTU1FTlQnLCAnLyoqJyA9PiAnVF9ET0NfQ09NTUVOVCcsICcqLycgPT4gJ1RfQ09NTUVOVCddIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTUyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMjU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e319czo0NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokc3RyaW5nVG9rZW5zIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5IjoxMTp7czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokc3RyaW5nVG9rZW5zIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6InN0cmluZ1Rva2VucyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czoyNToiQSBsaXN0IHN0cmluZyBkZWxpbWl0ZXJzLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjc6IgAqAG5hbWUiO3M6MzoidmFyIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjc4O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZXMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRlZmF1bHQiO3M6MjY6IlsnXCcnID0+ICdcJycsICciJyA9PiAnIiddIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo5OiJwcm90ZWN0ZWQiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjMyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMzU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdHlwZSI7TjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQByZWFkT25seSI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e319czo0NjoiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjokY29tbWVudFRva2VucyI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eSI6MTE6e3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDY6IlxQSFBfQ29kZVNuaWZmZXJcVG9rZW5pemVyc1xKUzo6JGNvbW1lbnRUb2tlbnMiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMzoiY29tbWVudFRva2VucyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0MjoiQSBsaXN0IHRva2VucyB0aGF0IHN0YXJ0IGFuZCBlbmQgY29tbWVudHMuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czozOiJ2YXIiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6Nzg7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czo0MzoiWycvLycgPT4gbnVsbCwgJy8qJyA9PiAnKi8nLCAnLyoqJyA9PiAnKi8nXSI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAc3RhdGljIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6OToicHJvdGVjdGVkIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI0MjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjQ2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO047czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBtZXRhZGF0YSI7YTowOnt9fX1zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0aG9kcyI7YTo0OntzOjQ1OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlM6Ol9fY29uc3RydWN0KCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czoyNToiSW5pdGlhbGlzZSB0aGUgdG9rZW5pemVyLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1MToiUHJlLWNoZWNrcyB0aGUgY29udGVudCB0byBzZWUgaWYgaXQgbG9va3MgbWluaWZpZWQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6NTp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjc6ImNvbnRlbnQiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjQ6IlRoZSBjb250ZW50IHRvIHRva2VuaXplLCI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo2OiJjb25maWciO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MjM6IlxQSFBfQ29kZVNuaWZmZXJcQ29uZmlnIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiQ29uZmlnIjt9fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mjg6IlRoZSBjb25maWcgZGF0YSBmb3IgdGhlIHJ1bi4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NzoiZW9sQ2hhciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czozMzoiVGhlIEVPTCBjaGFyIHVzZWQgaW4gdGhlIGNvbnRlbnQuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTozO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aTo0O086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFRocm93cyI6Mzp7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NDY6IlxQSFBfQ29kZVNuaWZmZXJcRXhjZXB0aW9uc1xUb2tlbml6ZXJFeGNlcHRpb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoiVG9rZW5pemVyRXhjZXB0aW9uIjt9fXM6NzoiACoAbmFtZSI7czo2OiJ0aHJvd3MiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjM1OiJJZiB0aGUgZmlsZSBhcHBlYXJzIHRvIGJlIG1pbmlmaWVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6Nzg7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0NToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjpfX2NvbnN0cnVjdCgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6Il9fY29uc3RydWN0Ijt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjM6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjc6ImNvbnRlbnQiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo2OiJjb25maWciO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyMzoiXFBIUF9Db2RlU25pZmZlclxDb25maWciO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo2OiJDb25maWciO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NzoiZW9sQ2hhciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO3M6NToiJ1xcbiciO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNjE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNjk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjQyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlM6OnRva2VuaXplKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MToiQ3JlYXRlcyBhbiBhcnJheSBvZiB0b2tlbnMgd2hlbiBnaXZlbiBzb21lIEpTIGNvZGUuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjI6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo2OiJzdHJpbmciO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MjM6IlRoZSBzdHJpbmcgdG8gdG9rZW5pemUuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3ODtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQyOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlM6OnRva2VuaXplKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJ0b2tlbml6ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo2OiJzdHJpbmciO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNzk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo5MDA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjQ3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlM6OmdldFJlZ2V4VG9rZW4oKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjQ3OiJUb2tlbml6ZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gaWYgb25lIGlzIGZvdW5kLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1NToiSWYgYSByZWd1bGFyIGV4cHJlc3Npb24gaXMgbm90IGZvdW5kLCBOVUxMIGlzIHJldHVybmVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjU6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo0OiJjaGFyIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ4OiJUaGUgaW5kZXggb2YgdGhlIHBvc3NpYmxlIHJlZ2V4IHN0YXJ0IGNoYXJhY3Rlci4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6Njoic3RyaW5nIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjUxOiJUaGUgY29tcGxldGUgY29udGVudCBvZiB0aGUgc3RyaW5nIGJlaW5nIHRva2VuaXplZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NToiY2hhcnMiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Mzk6IkFuIGFycmF5IG9mIGNoYXJhY3RlcnMgYmVpbmcgdG9rZW5pemVkLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MztPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo2OiJ0b2tlbnMiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NDg6IlRoZSBjdXJyZW50IGFycmF5IG9mIHRva2VucyBmb3VuZCBpbiB0aGUgc3RyaW5nLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6NDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fWk6MTtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbF8iOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3ODtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ3OiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlM6OmdldFJlZ2V4VG9rZW4oKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEzOiJnZXRSZWdleFRva2VuIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjQ6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjQ6ImNoYXIiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo2OiJzdHJpbmciO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo1OiJjaGFycyI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MztPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6InRva2VucyI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjkxNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwNDI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX1zOjUxOiJcUEhQX0NvZGVTbmlmZmVyXFRva2VuaXplcnNcSlM6OnByb2Nlc3NBZGRpdGlvbmFsKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MzoiUGVyZm9ybXMgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGFmdGVyIG1haW4gdG9rZW5pemluZy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6Nzg6IlRoaXMgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGxvb2tzIGZvciBwcm9wZXJ0aWVzLCBjbG9zdXJlcywgbGFiZWxzIGFuZCBvYmplY3RzLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xWb2lkXyI6MDp7fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6Nzg7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MToiXFBIUF9Db2RlU25pZmZlclxUb2tlbml6ZXJzXEpTOjpwcm9jZXNzQWRkaXRpb25hbCgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTc6InByb2Nlc3NBZGRpdGlvbmFsIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwNTI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMjUzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTI1NjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";