CuEsChlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiNgoDQW55EhkKCHR5cGVfdXJsGAEgASgJUgd0eXBlVXJsEhQKBXZhbHVlGAIgASgMUgV2YWx1ZUJvChNjb20uZ29vZ2xlLnByb3RvYnVmQghBbnlQcm90b1ABWiVnaXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wdHlwZXMvYW55ogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzSoErCgcSBR4AmgEBCswMCgEMEgMeABIywQwgUHJvdG9jb2wgQnVmZmVycyAtIEdvb2dsZSdzIGRhdGEgaW50ZXJjaGFuZ2UgZm9ybWF0CiBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvCgogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiBtZXQ6CgogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKIGRpc3RyaWJ1dGlvbi4KICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCgoICgECEgMgABgKCAoBCBIDIgA7CgkKAgglEgMiADsKCAoBCBIDIwA8CgkKAggLEgMjADwKCAoBCBIDJAAsCgkKAggBEgMkACwKCAoBCBIDJQApCgkKAggIEgMlACkKCAoBCBIDJgAiCgkKAggKEgMmACIKCAoBCBIDJwAhCgkKAggkEgMnACEK5BAKAgQAEgV5AJoBARrWECBgQW55YCBjb250YWlucyBhbiBhcmJpdHJhcnkgc2VyaWFsaXplZCBwcm90b2NvbCBidWZmZXIgbWVzc2FnZSBhbG9uZyB3aXRoIGEKIFVSTCB0aGF0IGRlc2NyaWJlcyB0aGUgdHlwZSBvZiB0aGUgc2VyaWFsaXplZCBtZXNzYWdlLgoKIFByb3RvYnVmIGxpYnJhcnkgcHJvdmlkZXMgc3VwcG9ydCB0byBwYWNrL3VucGFjayBBbnkgdmFsdWVzIGluIHRoZSBmb3JtCiBvZiB1dGlsaXR5IGZ1bmN0aW9ucyBvciBhZGRpdGlvbmFsIGdlbmVyYXRlZCBtZXRob2RzIG9mIHRoZSBBbnkgdHlwZS4KCiBFeGFtcGxlIDE6IFBhY2sgYW5kIHVucGFjayBhIG1lc3NhZ2UgaW4gQysrLgoKICAgICBGb28gZm9vID0gLi4uOwogICAgIEFueSBhbnk7CiAgICAgYW55LlBhY2tGcm9tKGZvbyk7CiAgICAgLi4uCiAgICAgaWYgKGFueS5VbnBhY2tUbygmZm9vKSkgewogICAgICAgLi4uCiAgICAgfQoKIEV4YW1wbGUgMjogUGFjayBhbmQgdW5wYWNrIGEgbWVzc2FnZSBpbiBKYXZhLgoKICAgICBGb28gZm9vID0gLi4uOwogICAgIEFueSBhbnkgPSBBbnkucGFjayhmb28pOwogICAgIC4uLgogICAgIGlmIChhbnkuaXMoRm9vLmNsYXNzKSkgewogICAgICAgZm9vID0gYW55LnVucGFjayhGb28uY2xhc3MpOwogICAgIH0KCiAgRXhhbXBsZSAzOiBQYWNrIGFuZCB1bnBhY2sgYSBtZXNzYWdlIGluIFB5dGhvbi4KCiAgICAgZm9vID0gRm9vKC4uLikKICAgICBhbnkgPSBBbnkoKQogICAgIGFueS5QYWNrKGZvbykKICAgICAuLi4KICAgICBpZiBhbnkuSXMoRm9vLkRFU0NSSVBUT1IpOgogICAgICAgYW55LlVucGFjayhmb28pCiAgICAgICAuLi4KCiAgRXhhbXBsZSA0OiBQYWNrIGFuZCB1bnBhY2sgYSBtZXNzYWdlIGluIEdvCgogICAgICBmb28gOj0gJnBiLkZvb3suLi59CiAgICAgIGFueSwgZXJyIDo9IHB0eXBlcy5NYXJzaGFsQW55KGZvbykKICAgICAgLi4uCiAgICAgIGZvbyA6PSAmcGIuRm9ve30KICAgICAgaWYgZXJyIDo9IHB0eXBlcy5Vbm1hcnNoYWxBbnkoYW55LCBmb28pOyBlcnIgIT0gbmlsIHsKICAgICAgICAuLi4KICAgICAgfQoKIFRoZSBwYWNrIG1ldGhvZHMgcHJvdmlkZWQgYnkgcHJvdG9idWYgbGlicmFyeSB3aWxsIGJ5IGRlZmF1bHQgdXNlCiAndHlwZS5nb29nbGVhcGlzLmNvbS9mdWxsLnR5cGUubmFtZScgYXMgdGhlIHR5cGUgVVJMIGFuZCB0aGUgdW5wYWNrCiBtZXRob2RzIG9ubHkgdXNlIHRoZSBmdWxseSBxdWFsaWZpZWQgdHlwZSBuYW1lIGFmdGVyIHRoZSBsYXN0ICcvJwogaW4gdGhlIHR5cGUgVVJMLCBmb3IgZXhhbXBsZSAiZm9vLmJhci5jb20veC95LnoiIHdpbGwgeWllbGQgdHlwZQogbmFtZSAieS56Ii4KCgogSlNPTgogPT09PQogVGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYW4gYEFueWAgdmFsdWUgdXNlcyB0aGUgcmVndWxhcgogcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlc2VyaWFsaXplZCwgZW1iZWRkZWQgbWVzc2FnZSwgd2l0aCBhbgogYWRkaXRpb25hbCBmaWVsZCBgQHR5cGVgIHdoaWNoIGNvbnRhaW5zIHRoZSB0eXBlIFVSTC4gRXhhbXBsZToKCiAgICAgcGFja2FnZSBnb29nbGUucHJvZmlsZTsKICAgICBtZXNzYWdlIFBlcnNvbiB7CiAgICAgICBzdHJpbmcgZmlyc3RfbmFtZSA9IDE7CiAgICAgICBzdHJpbmcgbGFzdF9uYW1lID0gMjsKICAgICB9CgogICAgIHsKICAgICAgICJAdHlwZSI6ICJ0eXBlLmdvb2dsZWFwaXMuY29tL2dvb2dsZS5wcm9maWxlLlBlcnNvbiIsCiAgICAgICAiZmlyc3ROYW1lIjogPHN0cmluZz4sCiAgICAgICAibGFzdE5hbWUiOiA8c3RyaW5nPgogICAgIH0KCiBJZiB0aGUgZW1iZWRkZWQgbWVzc2FnZSB0eXBlIGlzIHdlbGwta25vd24gYW5kIGhhcyBhIGN1c3RvbSBKU09OCiByZXByZXNlbnRhdGlvbiwgdGhhdCByZXByZXNlbnRhdGlvbiB3aWxsIGJlIGVtYmVkZGVkIGFkZGluZyBhIGZpZWxkCiBgdmFsdWVgIHdoaWNoIGhvbGRzIHRoZSBjdXN0b20gSlNPTiBpbiBhZGRpdGlvbiB0byB0aGUgYEB0eXBlYAogZmllbGQuIEV4YW1wbGUgKGZvciBtZXNzYWdlIFtnb29nbGUucHJvdG9idWYuRHVyYXRpb25dW10pOgoKICAgICB7CiAgICAgICAiQHR5cGUiOiAidHlwZS5nb29nbGVhcGlzLmNvbS9nb29nbGUucHJvdG9idWYuRHVyYXRpb24iLAogICAgICAgInZhbHVlIjogIjEuMjEycyIKICAgICB9CgoKCgoDBAABEgN5CAsK1woKBAQAAgASBJYBAhYayAogQSBVUkwvcmVzb3VyY2UgbmFtZSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIHNlcmlhbGl6ZWQKIHByb3RvY29sIGJ1ZmZlciBtZXNzYWdlLiBUaGlzIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3QKIG9uZSAiLyIgY2hhcmFjdGVyLiBUaGUgbGFzdCBzZWdtZW50IG9mIHRoZSBVUkwncyBwYXRoIG11c3QgcmVwcmVzZW50CiB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIHR5cGUgKGFzIGluCiBgcGF0aC9nb29nbGUucHJvdG9idWYuRHVyYXRpb25gKS4gVGhlIG5hbWUgc2hvdWxkIGJlIGluIGEgY2Fub25pY2FsIGZvcm0KIChlLmcuLCBsZWFkaW5nICIuIiBpcyBub3QgYWNjZXB0ZWQpLgoKIEluIHByYWN0aWNlLCB0ZWFtcyB1c3VhbGx5IHByZWNvbXBpbGUgaW50byB0aGUgYmluYXJ5IGFsbCB0eXBlcyB0aGF0IHRoZXkKIGV4cGVjdCBpdCB0byB1c2UgaW4gdGhlIGNvbnRleHQgb2YgQW55LiBIb3dldmVyLCBmb3IgVVJMcyB3aGljaCB1c2UgdGhlCiBzY2hlbWUgYGh0dHBgLCBgaHR0cHNgLCBvciBubyBzY2hlbWUsIG9uZSBjYW4gb3B0aW9uYWxseSBzZXQgdXAgYSB0eXBlCiBzZXJ2ZXIgdGhhdCBtYXBzIHR5cGUgVVJMcyB0byBtZXNzYWdlIGRlZmluaXRpb25zIGFzIGZvbGxvd3M6CgogKiBJZiBubyBzY2hlbWUgaXMgcHJvdmlkZWQsIGBodHRwc2AgaXMgYXNzdW1lZC4KICogQW4gSFRUUCBHRVQgb24gdGhlIFVSTCBtdXN0IHlpZWxkIGEgW2dvb2dsZS5wcm90b2J1Zi5UeXBlXVtdCiAgIHZhbHVlIGluIGJpbmFyeSBmb3JtYXQsIG9yIHByb2R1Y2UgYW4gZXJyb3IuCiAqIEFwcGxpY2F0aW9ucyBhcmUgYWxsb3dlZCB0byBjYWNoZSBsb29rdXAgcmVzdWx0cyBiYXNlZCBvbiB0aGUKICAgVVJMLCBvciBoYXZlIHRoZW0gcHJlY29tcGlsZWQgaW50byBhIGJpbmFyeSB0byBhdm9pZCBhbnkKICAgbG9va3VwLiBUaGVyZWZvcmUsIGJpbmFyeSBjb21wYXRpYmlsaXR5IG5lZWRzIHRvIGJlIHByZXNlcnZlZAogICBvbiBjaGFuZ2VzIHRvIHR5cGVzLiAoVXNlIHZlcnNpb25lZCB0eXBlIG5hbWVzIHRvIG1hbmFnZQogICBicmVha2luZyBjaGFuZ2VzLikKCiBOb3RlOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUgaW4gdGhlIG9mZmljaWFsCiBwcm90b2J1ZiByZWxlYXNlLCBhbmQgaXQgaXMgbm90IHVzZWQgZm9yIHR5cGUgVVJMcyBiZWdpbm5pbmcgd2l0aAogdHlwZS5nb29nbGVhcGlzLmNvbS4KCiBTY2hlbWVzIG90aGVyIHRoYW4gYGh0dHBgLCBgaHR0cHNgIChvciB0aGUgZW1wdHkgc2NoZW1lKSBtaWdodCBiZQogdXNlZCB3aXRoIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHNlbWFudGljcy4KCgoOCgUEAAIABBIFlgECeQ0KDQoFBAACAAUSBJYBAggKDQoFBAACAAESBJYBCREKDQoFBAACAAMSBJYBFBUKVwoEBAACARIEmQECEhpJIE11c3QgYmUgYSB2YWxpZCBzZXJpYWxpemVkIHByb3RvY29sIGJ1ZmZlciBvZiB0aGUgYWJvdmUgc3BlY2lmaWVkIHR5cGUuCgoPCgUEAAIBBBIGmQEClgEWCg0KBQQAAgEFEgSZAQIHCg0KBQQAAgEBEgSZAQgNCg0KBQQAAgEDEgSZARARYgZwcm90bzMKy/kCCiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIk0KEUZpbGVEZXNjcmlwdG9yU2V0EjgKBGZpbGUYASADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90b1IEZmlsZSLkBAoTRmlsZURlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3BhY2thZ2UYAiABKAlSB3BhY2thZ2USHgoKZGVwZW5kZW5jeRgDIAMoCVIKZGVwZW5kZW5jeRIrChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMoBVIQcHVibGljRGVwZW5kZW5jeRInCg93ZWFrX2RlcGVuZGVuY3kYCyADKAVSDndlYWtEZXBlbmRlbmN5EkMKDG1lc3NhZ2VfdHlwZRgEIAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG9SC21lc3NhZ2VUeXBlEkEKCWVudW1fdHlwZRgFIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3RvUghlbnVtVHlwZRJBCgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VEZXNjcmlwdG9yUHJvdG9SB3NlcnZpY2USQwoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvUglleHRlbnNpb24SNgoHb3B0aW9ucxgIIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5GaWxlT3B0aW9uc1IHb3B0aW9ucxJJChBzb3VyY2VfY29kZV9pbmZvGAkgASgLMh8uZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvUg5zb3VyY2VDb2RlSW5mbxIWCgZzeW50YXgYDCABKAlSBnN5bnRheCK5BgoPRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSOwoFZmllbGQYAiADKAsyJS5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG9SBWZpZWxkEkMKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90b1IJZXh0ZW5zaW9uEkEKC25lc3RlZF90eXBlGAMgAygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90b1IKbmVzdGVkVHlwZRJBCgllbnVtX3R5cGUYBCADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQcm90b1IIZW51bVR5cGUSWAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZVIOZXh0ZW5zaW9uUmFuZ2USRAoKb25lb2ZfZGVjbBgIIAMoCzIlLmdvb2dsZS5wcm90b2J1Zi5PbmVvZkRlc2NyaXB0b3JQcm90b1IJb25lb2ZEZWNsEjkKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnNSB29wdGlvbnMSVQoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJvdG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgKIAMoCVIMcmVzZXJ2ZWROYW1lGnoKDkV4dGVuc2lvblJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZBJACgdvcHRpb25zGAMgASgLMiYuZ29vZ2xlLnByb3RvYnVmLkV4dGVuc2lvblJhbmdlT3B0aW9uc1IHb3B0aW9ucxo3Cg1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCJ8ChVFeHRlbnNpb25SYW5nZU9wdGlvbnMSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKYBgoURmllbGREZXNjcmlwdG9yUHJvdG8SEgoEbmFtZRgBIAEoCVIEbmFtZRIWCgZudW1iZXIYAyABKAVSBm51bWJlchJBCgVsYWJlbBgEIAEoDjIrLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5MYWJlbFIFbGFiZWwSPgoEdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlUgR0eXBlEhsKCXR5cGVfbmFtZRgGIAEoCVIIdHlwZU5hbWUSGgoIZXh0ZW5kZWUYAiABKAlSCGV4dGVuZGVlEiMKDWRlZmF1bHRfdmFsdWUYByABKAlSDGRlZmF1bHRWYWx1ZRIfCgtvbmVvZl9pbmRleBgJIAEoBVIKb25lb2ZJbmRleBIbCglqc29uX25hbWUYCiABKAlSCGpzb25OYW1lEjcKB29wdGlvbnMYCCABKAsyHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zUgdvcHRpb25zIrYCCgRUeXBlEg8KC1RZUEVfRE9VQkxFEAESDgoKVFlQRV9GTE9BVBACEg4KClRZUEVfSU5UNjQQAxIPCgtUWVBFX1VJTlQ2NBAEEg4KClRZUEVfSU5UMzIQBRIQCgxUWVBFX0ZJWEVENjQQBhIQCgxUWVBFX0ZJWEVEMzIQBxINCglUWVBFX0JPT0wQCBIPCgtUWVBFX1NUUklORxAJEg4KClRZUEVfR1JPVVAQChIQCgxUWVBFX01FU1NBR0UQCxIOCgpUWVBFX0JZVEVTEAwSDwoLVFlQRV9VSU5UMzIQDRINCglUWVBFX0VOVU0QDhIRCg1UWVBFX1NGSVhFRDMyEA8SEQoNVFlQRV9TRklYRUQ2NBAQEg8KC1RZUEVfU0lOVDMyEBESDwoLVFlQRV9TSU5UNjQQEiJDCgVMYWJlbBISCg5MQUJFTF9PUFRJT05BTBABEhIKDkxBQkVMX1JFUVVJUkVEEAISEgoOTEFCRUxfUkVQRUFURUQQAyJjChRPbmVvZkRlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEjcKB29wdGlvbnMYAiABKAsyHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zUgdvcHRpb25zIuMCChNFbnVtRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPwoFdmFsdWUYAiADKAsyKS5nb29nbGUucHJvdG9idWYuRW51bVZhbHVlRGVzY3JpcHRvclByb3RvUgV2YWx1ZRI2CgdvcHRpb25zGAMgASgLMhwuZ29vZ2xlLnByb3RvYnVmLkVudW1PcHRpb25zUgdvcHRpb25zEl0KDnJlc2VydmVkX3JhbmdlGAQgAygLMjYuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9yUHJvdG8uRW51bVJlc2VydmVkUmFuZ2VSDXJlc2VydmVkUmFuZ2USIwoNcmVzZXJ2ZWRfbmFtZRgFIAMoCVIMcmVzZXJ2ZWROYW1lGjsKEUVudW1SZXNlcnZlZFJhbmdlEhQKBXN0YXJ0GAEgASgFUgVzdGFydBIQCgNlbmQYAiABKAVSA2VuZCKDAQoYRW51bVZhbHVlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSFgoGbnVtYmVyGAIgASgFUgZudW1iZXISOwoHb3B0aW9ucxgDIAEoCzIhLmdvb2dsZS5wcm90b2J1Zi5FbnVtVmFsdWVPcHRpb25zUgdvcHRpb25zIqcBChZTZXJ2aWNlRGVzY3JpcHRvclByb3RvEhIKBG5hbWUYASABKAlSBG5hbWUSPgoGbWV0aG9kGAIgAygLMiYuZ29vZ2xlLnByb3RvYnVmLk1ldGhvZERlc2NyaXB0b3JQcm90b1IGbWV0aG9kEjkKB29wdGlvbnMYAyABKAsyHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnNSB29wdGlvbnMiiQIKFU1ldGhvZERlc2NyaXB0b3JQcm90bxISCgRuYW1lGAEgASgJUgRuYW1lEh0KCmlucHV0X3R5cGUYAiABKAlSCWlucHV0VHlwZRIfCgtvdXRwdXRfdHlwZRgDIAEoCVIKb3V0cHV0VHlwZRI4CgdvcHRpb25zGAQgASgLMh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnNSB29wdGlvbnMSMAoQY2xpZW50X3N0cmVhbWluZxgFIAEoCDoFZmFsc2VSD2NsaWVudFN0cmVhbWluZxIwChBzZXJ2ZXJfc3RyZWFtaW5nGAYgASgIOgVmYWxzZVIPc2VydmVyU3RyZWFtaW5nIpIJCgtGaWxlT3B0aW9ucxIhCgxqYXZhX3BhY2thZ2UYASABKAlSC2phdmFQYWNrYWdlEjAKFGphdmFfb3V0ZXJfY2xhc3NuYW1lGAggASgJUhJqYXZhT3V0ZXJDbGFzc25hbWUSNQoTamF2YV9tdWx0aXBsZV9maWxlcxgKIAEoCDoFZmFsc2VSEWphdmFNdWx0aXBsZUZpbGVzEkQKHWphdmFfZ2VuZXJhdGVfZXF1YWxzX2FuZF9oYXNoGBQgASgIQgIYAVIZamF2YUdlbmVyYXRlRXF1YWxzQW5kSGFzaBI6ChZqYXZhX3N0cmluZ19jaGVja191dGY4GBsgASgIOgVmYWxzZVITamF2YVN0cmluZ0NoZWNrVXRmOBJTCgxvcHRpbWl6ZV9mb3IYCSABKA4yKS5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMuT3B0aW1pemVNb2RlOgVTUEVFRFILb3B0aW1pemVGb3ISHQoKZ29fcGFja2FnZRgLIAEoCVIJZ29QYWNrYWdlEjUKE2NjX2dlbmVyaWNfc2VydmljZXMYECABKAg6BWZhbHNlUhFjY0dlbmVyaWNTZXJ2aWNlcxI5ChVqYXZhX2dlbmVyaWNfc2VydmljZXMYESABKAg6BWZhbHNlUhNqYXZhR2VuZXJpY1NlcnZpY2VzEjUKE3B5X2dlbmVyaWNfc2VydmljZXMYEiABKAg6BWZhbHNlUhFweUdlbmVyaWNTZXJ2aWNlcxI3ChRwaHBfZ2VuZXJpY19zZXJ2aWNlcxgqIAEoCDoFZmFsc2VSEnBocEdlbmVyaWNTZXJ2aWNlcxIlCgpkZXByZWNhdGVkGBcgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBIvChBjY19lbmFibGVfYXJlbmFzGB8gASgIOgVmYWxzZVIOY2NFbmFibGVBcmVuYXMSKgoRb2JqY19jbGFzc19wcmVmaXgYJCABKAlSD29iamNDbGFzc1ByZWZpeBIpChBjc2hhcnBfbmFtZXNwYWNlGCUgASgJUg9jc2hhcnBOYW1lc3BhY2USIQoMc3dpZnRfcHJlZml4GCcgASgJUgtzd2lmdFByZWZpeBIoChBwaHBfY2xhc3NfcHJlZml4GCggASgJUg5waHBDbGFzc1ByZWZpeBIjCg1waHBfbmFtZXNwYWNlGCkgASgJUgxwaHBOYW1lc3BhY2USNAoWcGhwX21ldGFkYXRhX25hbWVzcGFjZRgsIAEoCVIUcGhwTWV0YWRhdGFOYW1lc3BhY2USIQoMcnVieV9wYWNrYWdlGC0gASgJUgtydWJ5UGFja2FnZRJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbiI6CgxPcHRpbWl6ZU1vZGUSCQoFU1BFRUQQARINCglDT0RFX1NJWkUQAhIQCgxMSVRFX1JVTlRJTUUQAyoJCOgHEICAgIACSgQIJhAnItECCg5NZXNzYWdlT3B0aW9ucxI8ChdtZXNzYWdlX3NldF93aXJlX2Zvcm1hdBgBIAEoCDoFZmFsc2VSFG1lc3NhZ2VTZXRXaXJlRm9ybWF0EkwKH25vX3N0YW5kYXJkX2Rlc2NyaXB0b3JfYWNjZXNzb3IYAiABKAg6BWZhbHNlUhxub1N0YW5kYXJkRGVzY3JpcHRvckFjY2Vzc29yEiUKCmRlcHJlY2F0ZWQYAyABKAg6BWZhbHNlUgpkZXByZWNhdGVkEhsKCW1hcF9lbnRyeRgHIAEoCFIIbWFwRW50cnkSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAkoECAgQCUoECAkQCiLiAwoMRmllbGRPcHRpb25zEkEKBWN0eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlwZToGU1RSSU5HUgVjdHlwZRIWCgZwYWNrZWQYAiABKAhSBnBhY2tlZBJHCgZqc3R5cGUYBiABKA4yJC5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFMUgZqc3R5cGUSGQoEbGF6eRgFIAEoCDoFZmFsc2VSBGxhenkSJQoKZGVwcmVjYXRlZBgDIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQSGQoEd2VhaxgKIAEoCDoFZmFsc2VSBHdlYWsSWAoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb25SE3VuaW50ZXJwcmV0ZWRPcHRpb24iLwoFQ1R5cGUSCgoGU1RSSU5HEAASCAoEQ09SRBABEhAKDFNUUklOR19QSUVDRRACIjUKBkpTVHlwZRINCglKU19OT1JNQUwQABINCglKU19TVFJJTkcQARINCglKU19OVU1CRVIQAioJCOgHEICAgIACSgQIBBAFInMKDE9uZW9mT3B0aW9ucxJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACIsABCgtFbnVtT3B0aW9ucxIfCgthbGxvd19hbGlhcxgCIAEoCFIKYWxsb3dBbGlhcxIlCgpkZXByZWNhdGVkGAMgASgIOgVmYWxzZVIKZGVwcmVjYXRlZBJYChR1bmludGVycHJldGVkX29wdGlvbhjnByADKAsyJC5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvblITdW5pbnRlcnByZXRlZE9wdGlvbioJCOgHEICAgIACSgQIBRAGIp4BChBFbnVtVmFsdWVPcHRpb25zEiUKCmRlcHJlY2F0ZWQYASABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIinAEKDlNlcnZpY2VPcHRpb25zEiUKCmRlcHJlY2F0ZWQYISABKAg6BWZhbHNlUgpkZXByZWNhdGVkElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIi4AIKDU1ldGhvZE9wdGlvbnMSJQoKZGVwcmVjYXRlZBghIAEoCDoFZmFsc2VSCmRlcHJlY2F0ZWQScQoRaWRlbXBvdGVuY3lfbGV2ZWwYIiABKA4yLy5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucy5JZGVtcG90ZW5jeUxldmVsOhNJREVNUE9URU5DWV9VTktOT1dOUhBpZGVtcG90ZW5jeUxldmVsElgKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uUhN1bmludGVycHJldGVkT3B0aW9uIlAKEElkZW1wb3RlbmN5TGV2ZWwSFwoTSURFTVBPVEVOQ1lfVU5LTk9XThAAEhMKD05PX1NJREVfRUZGRUNUUxABEg4KCklERU1QT1RFTlQQAioJCOgHEICAgIACIpoDChNVbmludGVycHJldGVkT3B0aW9uEkEKBG5hbWUYAiADKAsyLS5nb29nbGUucHJvdG9idWYuVW5pbnRlcnByZXRlZE9wdGlvbi5OYW1lUGFydFIEbmFtZRIpChBpZGVudGlmaWVyX3ZhbHVlGAMgASgJUg9pZGVudGlmaWVyVmFsdWUSLAoScG9zaXRpdmVfaW50X3ZhbHVlGAQgASgEUhBwb3NpdGl2ZUludFZhbHVlEiwKEm5lZ2F0aXZlX2ludF92YWx1ZRgFIAEoA1IQbmVnYXRpdmVJbnRWYWx1ZRIhCgxkb3VibGVfdmFsdWUYBiABKAFSC2RvdWJsZVZhbHVlEiEKDHN0cmluZ192YWx1ZRgHIAEoDFILc3RyaW5nVmFsdWUSJwoPYWdncmVnYXRlX3ZhbHVlGAggASgJUg5hZ2dyZWdhdGVWYWx1ZRpKCghOYW1lUGFydBIbCgluYW1lX3BhcnQYASACKAlSCG5hbWVQYXJ0EiEKDGlzX2V4dGVuc2lvbhgCIAIoCFILaXNFeHRlbnNpb24ipwIKDlNvdXJjZUNvZGVJbmZvEkQKCGxvY2F0aW9uGAEgAygLMiguZ29vZ2xlLnByb3RvYnVmLlNvdXJjZUNvZGVJbmZvLkxvY2F0aW9uUghsb2NhdGlvbhrOAQoITG9jYXRpb24SFgoEcGF0aBgBIAMoBUICEAFSBHBhdGgSFgoEc3BhbhgCIAMoBUICEAFSBHNwYW4SKQoQbGVhZGluZ19jb21tZW50cxgDIAEoCVIPbGVhZGluZ0NvbW1lbnRzEisKEXRyYWlsaW5nX2NvbW1lbnRzGAQgASgJUhB0cmFpbGluZ0NvbW1lbnRzEjoKGWxlYWRpbmdfZGV0YWNoZWRfY29tbWVudHMYBiADKAlSF2xlYWRpbmdEZXRhY2hlZENvbW1lbnRzItEBChFHZW5lcmF0ZWRDb2RlSW5mbxJNCgphbm5vdGF0aW9uGAEgAygLMi0uZ29vZ2xlLnByb3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb25SCmFubm90YXRpb24abQoKQW5ub3RhdGlvbhIWCgRwYXRoGAEgAygFQgIQAVIEcGF0aBIfCgtzb3VyY2VfZmlsZRgCIAEoCVIKc291cmNlRmlsZRIUCgViZWdpbhgDIAEoBVIFYmVnaW4SEAoDZW5kGAQgASgFUgNlbmRCjwEKE2NvbS5nb29nbGUucHJvdG9idWZCEERlc2NyaXB0b3JQcm90b3NIAVo+Z2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHJvdG9jLWdlbi1nby9kZXNjcmlwdG9yO2Rlc2NyaXB0b3L4AQGiAgNHUEKqAhpHb29nbGUuUHJvdG9idWYuUmVmbGVjdGlvbkqsvgIKBxIFJwDyBgEKqg8KAQwSAycAEjLBDCBQcm90b2NvbCBCdWZmZXJzIC0gR29vZ2xlJ3MgZGF0YSBpbnRlcmNoYW5nZSBmb3JtYXQKIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy8KCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKIG1ldDoKCiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogZGlzdHJpYnV0aW9uLgogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KMtsCIEF1dGhvcjoga2VudG9uQGdvb2dsZS5jb20gKEtlbnRvbiBWYXJkYSkKICBCYXNlZCBvbiBvcmlnaW5hbCBQcm90b2NvbCBCdWZmZXJzIGRlc2lnbiBieQogIFNhbmpheSBHaGVtYXdhdCwgSmVmZiBEZWFuLCBhbmQgb3RoZXJzLgoKIFRoZSBtZXNzYWdlcyBpbiB0aGlzIGZpbGUgZGVzY3JpYmUgdGhlIGRlZmluaXRpb25zIGZvdW5kIGluIC5wcm90byBmaWxlcy4KIEEgdmFsaWQgLnByb3RvIGZpbGUgY2FuIGJlIHRyYW5zbGF0ZWQgZGlyZWN0bHkgdG8gYSBGaWxlRGVzY3JpcHRvclByb3RvCiB3aXRob3V0IGFueSBvdGhlciBpbmZvcm1hdGlvbiAoZS5nLiB3aXRob3V0IHJlYWRpbmcgaXRzIGltcG9ydHMpLgoKCAoBAhID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dG9yZSB0aGUgdmFsdWVzIGluIHRoZW0uICBJbnN0ZWFkIGl0IHN0b3JlcyB0aGVtIGluIGEgZmllbGQgaW4gdGhlICpPcHRpb25zCiBtZXNzYWdlIGNhbGxlZCB1bmludGVycHJldGVkX29wdGlvbi4gVGhpcyBmaWVsZCBtdXN0IGhhdmUgdGhlIHNhbWUgbmFtZQogYWNyb3NzIGFsbCAqT3B0aW9ucyBtZXNzYWdlcy4gV2UgdGhlbiB1c2UgdGhpcyBmaWVsZCB0byBwb3B1bGF0ZSB0aGUKIGV4dGVuc2lvbnMgd2hlbiB3ZSBidWlsZCBhIGRlc2NyaXB0b3IsIGF0IHdoaWNoIHBvaW50IGFsbCBwcm90b3MgaGF2ZSBiZWVuCiBwYXJzZWQgYW5kIHNvIGFsbCBleHRlbnNpb25zIGFyZSBrbm93bi4KCiBFeHRlbnNpb24gbnVtYmVycyBmb3IgY3VzdG9tIG9wdGlvbnMgbWF5IGJlIGNob3NlbiBhcyBmb2xsb3dzOgogKiBGb3Igb3B0aW9ucyB3aGljaCB3aWxsIG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBzaW5nbGUgYXBwbGljYXRpb24gb3IKICAgb3JnYW5pemF0aW9uLCBvciBmb3IgZXhwZXJpbWVudGFsIG9wdGlvbnMsIHVzZSBmaWVsZCBudW1iZXJzIDUwMDAwCiAgIHRocm91Z2ggOTk5OTkuICBJdCBpcyB1cCB0byB5b3UgdG8gZW5zdXJlIHRoYXQgeW91IGRvIG5vdCB1c2UgdGhlCiAgIHNhbWUgbnVtYmVyIGZvciBtdWx0aXBsZSBvcHRpb25zLgogKiBGb3Igb3B0aW9ucyB3aGljaCB3aWxsIGJlIHB1Ymxpc2hlZCBhbmQgdXNlZCBwdWJsaWNseSBieSBtdWx0aXBsZQogICBpbmRlcGVuZGVudCBlbnRpdGllcywgZS1tYWlsIHByb3RvYnVmLWdsb2JhbC1leHRlbnNpb24tcmVnaXN0cnlAZ29vZ2xlLmNvbQogICB0byByZXNlcnZlIGV4dGVuc2lvbiBudW1iZXJzLiBTaW1wbHkgcHJvdmlkZSB5b3VyIHByb2plY3QgbmFtZSAoZS5nLgogICBPYmplY3RpdmUtQyBwbHVnaW4pIGFuZCB5b3VyIHByb2plY3Qgd2Vic2l0ZSAoaWYgYXZhaWxhYmxlKSAtLSB0aGVyZSdzIG5vCiAgIG5lZWQgdG8gZXhwbGFpbiBob3cgeW91IGludGVuZCB0byB1c2UgdGhlbS4gVXN1YWxseSB5b3Ugb25seSBuZWVkIG9uZQogICBleHRlbnNpb24gbnVtYmVyLiBZb3UgY2FuIGRlY2xhcmUgbXVsdGlwbGUgb3B0aW9ucyB3aXRoIG9ubHkgb25lIGV4dGVuc2lvbgogICBudW1iZXIgYnkgcHV0dGluZyB0aGVtIGluIGEgc3ViLW1lc3NhZ2UuIFNlZSB0aGUgQ3VzdG9tIE9wdGlvbnMgc2VjdGlvbiBvZgogICB0aGUgZG9jcyBmb3IgZXhhbXBsZXM6CiAgIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3Byb3RvY29sLWJ1ZmZlcnMvZG9jcy9wcm90byNvcHRpb25zCiAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIHBvcHVsYXIsIGEgd2ViIHNlcnZpY2Ugd2lsbCBiZSBzZXQgdXAKICAgdG8gYXV0b21hdGljYWxseSBhc3NpZ24gb3B0aW9uIG51bWJlcnMuCgoLCgMECgESBL0CCBMK9AEKBAQKAgASBMMCAiMa5QEgU2V0cyB0aGUgSmF2YSBwYWNrYWdlIHdoZXJlIGNsYXNzZXMgZ2VuZXJhdGVkIGZyb20gdGhpcyAucHJvdG8gd2lsbCBiZQogcGxhY2VkLiAgQnkgZGVmYXVsdCwgdGhlIHByb3RvIHBhY2thZ2UgaXMgdXNlZCwgYnV0IHRoaXMgaXMgb2Z0ZW4KIGluYXBwcm9wcmlhdGUgYmVjYXVzZSBwcm90byBwYWNrYWdlcyBkbyBub3Qgbm9ybWFsbHkgc3RhcnQgd2l0aCBiYWNrd2FyZHMKIGRvbWFpbiBuYW1lcy4KCg0KBQQKAgAEEgTDAgIKCg0KBQQKAgAFEgTDAgsRCg0KBQQKAgABEgTDAhIeCg0KBQQKAgADEgTDAiEiCr8CCgQECgIBEgTLAgIrGrACIElmIHNldCwgYWxsIHRoZSBjbGFzc2VzIGZyb20gdGhlIC5wcm90byBmaWxlIGFyZSB3cmFwcGVkIGluIGEgc2luZ2xlCiBvdXRlciBjbGFzcyB3aXRo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DQoFBAoCBQQSBOgCAgoKDQoFBAoCBQYSBOgCCxcKDQoFBAoCBQESBOgCGCQKDQoFBAoCBQMSBOgCJygKDQoFBAoCBQgSBOgCKTgKDQoFBAoCBQcSBOgCMjcK4gIKBAQKAgYSBO8CAiIa0wIgU2V0cyB0aGUgR28gcGFja2FnZSB3aGVyZSBzdHJ1Y3RzIGdlbmVyYXRlZCBmcm9tIHRoaXMgLnByb3RvIHdpbGwgYmUKIHBsYWNlZC4gSWYgb21pdHRlZCwgdGhlIEdvIHBhY2thZ2Ugd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlIGZvbGxvd2luZzoKICAgLSBUaGUgYmFzZW5hbWUgb2YgdGhlIHBhY2thZ2UgaW1wb3J0IHBhdGgsIGlmIHByb3ZpZGVkLgogICAtIE90aGVyd2lzZSwgdGhlIHBhY2thZ2Ugc3RhdGVtZW50IGluIHRoZSAucHJvdG8gZmlsZSwgaWYgcHJlc2VudC4KICAgLSBPdGhlcndpc2UsIHRoZSBiYXNlbmFtZSBvZiB0aGUgLnByb3RvIGZpbGUsIHdpdGhvdXQgZXh0ZW5zaW9uLgoKDQoFBAoCBgQSBO8CAgoKDQoFBAoCBgUSBO8CCxEKDQoFBAoCBgESBO8CEhwKDQoFBAoCBgMSBO8CHyEK1AQKBAQKAgcSBP0CAjkaxQQgU2hvdWxkIGdlbmVyaWMgc2VydmljZXMgYmUgZ2VuZXJhdGVkIGluIGVhY2ggbGFuZ3VhZ2U/ICAiR2VuZXJpYyIgc2VydmljZXMKIGFyZSBub3Qgc3BlY2lmaWMgdG8gYW55IHBhcnRpY3VsYXIgUlBDIHN5c3RlbS4gIFRoZXkgYXJlIGdlbmVyYXRlZCBieSB0aGUKIG1haW4gY29kZSBnZW5lcmF0b3JzIGluIGVhY2ggbGFuZ3VhZ2UgKHdpdGhvdXQgYWRkaXRpb25hbCBwbHVnaW5zKS4KIEdlbmVyaWMgc2VydmljZXMgd2VyZSB0aGUgb25seSBraW5kIG9mIHNlcnZpY2UgZ2VuZXJhdGlvbiBzdXBwb3J0ZWQgYnkKIGVhcmx5IHZlcnNpb25zIG9mIGdvb2dsZS5wcm90b2J1Zi4KCiBHZW5lcmljIHNlcnZpY2VzIGFyZSBub3cgY29uc2lkZXJlZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHVzaW5nIHBsdWdpbnMKIHRoYXQgZ2VuZXJhdGUgY29kZSBzcGVjaWZpYyB0byB5b3VyIHBhcnRpY3VsYXIgUlBDIHN5c3RlbS4gIFRoZXJlZm9yZSwKIHRoZXNlIGRlZmF1bHQgdG8gZmFsc2UuICBPbGQgY29kZSB3aGljaCBkZXBlbmRzIG9uIGdlbmVyaWMgc2VydmljZXMgc2hvdWxkCiBleHBsaWNpdGx5IHNldCB0aGVtIHRvIHRydWUuCgoNCgUECgIHBBIE/QICCgoNCgUECgIHBRIE/QILDwoNCgUECgIHARIE/QIQIwoNCgUECgIHAxIE/QImKAoNCgUECgIHCBIE/QIpOAoNCgUECgIHBxIE/QIyNwoMCgQECgIIEgT+AgI7Cg0KBQQKAggEEgT+AgIKCg0KBQQKAggFEgT+AgsPCg0KBQQKAggBEgT+AhAlCg0KBQQKAggDEgT+AigqCg0KBQQKAggIEgT+Ais6Cg0KBQQKAggHEgT+AjQ5CgwKBAQKAgkSBP8CAjkKDQoFBAoCCQQSBP8CAgoKDQoFBAoCCQUSBP8CCw8KDQoFBAoCCQESBP8CECMKDQoFBAoCCQMSBP8CJigKDQoFBAoCCQgSBP8CKTgKDQoFBAoCCQcSBP8CMjcKDAoEBAoCChIEgAMCOgoNCgUECgIKBBIEgAMCCgoNCgUECgIKBRIEgAMLDwoNCgUECgIKARIEgAMQJAoNCgUECgIKAxIEgAMnKQoNCgUECgIKCBIEgAMqOQoNCgUECgIKBxIEgAMzOArzAQoEBAoCCxIEhgMCMBrkASBJcyB0aGlzIGZpbGUgZGVwcmVjYXRlZD8KIERlcGVuZGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtLCB0aGlzIGNhbiBlbWl0IERlcHJlY2F0ZWQgYW5ub3RhdGlvbnMKIGZvciBldmVyeXRoaW5nIGluIHRoZSBmaWxlLCBvciBpdCB3aWxsIGJlIGNvbXBsZXRlbHkgaWdub3JlZDsgaW4gdGhlIHZlcnkKIGxlYXN0LCB0aGlzIGlzIGEgZm9ybWFsaXphdGlvbiBmb3IgZGVwcmVjYXRpbmcgZmlsZXMuCgoNCgUECgILBBIEhgMCCgoNCgUECgILBRIEhgMLDwoNCgUECgILARIEhgMQGgoNCgUECgILAxIEhgMdHwoNCgUECgILCBIEhgMgLwoNCgUECgILBxIEhgMpLgp/CgQECgIMEgSKAwI2GnEgRW5hYmxlcyB0aGUgdXNlIG9mIGFyZW5hcyBmb3IgdGhlIHByb3RvIG1lc3NhZ2VzIGluIHRoaXMgZmlsZS4gVGhpcyBhcHBsaWVzCiBvbmx5IHRvIGdlbmVyYXRlZCBjbGFzc2VzIGZvciBDKysuCgoNCgUECgIMBBIEigMCCgoNCgUECgIMBRIEigMLDwoNCgUECgIMARIEigMQIAoNCgUECgIMAxIEigMjJQoNCgUECgIMCBIEigMmNQoNCgUECgIMBxIEigMvNAqSAQoEBAoCDRIEjwMCKRqDASBTZXRzIHRoZSBvYmplY3RpdmUgYyBjbGFzcyBwcmVmaXggd2hpY2ggaXMgcHJlcGVuZGVkIHRvIGFsbCBvYmplY3RpdmUgYwogZ2VuZXJhdGVkIGNsYXNzZXMgZnJvbSB0aGlzIC5wcm90by4gVGhlcmUgaXMgbm8gZGVmYXVsdC4KCg0KBQQKAg0EEgSPAwIKCg0KBQQKAg0FEgSPAwsRCg0KBQQKAg0BEgSPAxIjCg0KBQQKAg0DEgSPAyYoCkkKBAQKAg4SBJIDAigaOyBOYW1lc3BhY2UgZm9yIGdlbmVyYXRlZCBjbGFzc2VzOyBkZWZhdWx0cyB0byB0aGUgcGFja2FnZS4KCg0KBQQKAg4EEgSSAwIKCg0KBQQKAg4FEgSSAwsRCg0KBQQKAg4BEgSSAxIiCg0KBQQKAg4DEgSSAyUnCpECCgQECgIPEgSYAwIkGoICIEJ5IGRlZmF1bHQgU3dpZnQgZ2VuZXJhdG9ycyB3aWxsIHRha2UgdGhlIHByb3RvIHBhY2thZ2UgYW5kIENhbWVsQ2FzZSBpdAogcmVwbGFjaW5nICcuJyB3aXRoIHVuZGVyc2NvcmUgYW5kIHVzZSB0aGF0IHRvIHByZWZpeCB0aGUgdHlwZXMvc3ltYm9scwogZGVmaW5lZC4gV2hlbiB0aGlzIG9wdGlvbnMgaXMgcHJvdmlkZWQsIHRoZXkgd2lsbCB1c2UgdGhpcyB2YWx1ZSBpbnN0ZWFkCiB0byBwcmVmaXggdGhlIHR5cGVzL3N5bWJvbHMgZGVmaW5lZC4KCg0KBQQKAg8EEgSYAwIKCg0KBQQKAg8FEgSYAwsRCg0KBQQKAg8BEgSYAxIeCg0KBQQKAg8DEgSYAyEjCn4KBAQKAhASBJwDAigacCBTZXRzIHRoZSBwaHAgY2xhc3MgcHJlZml4IHdoaWNoIGlzIHByZXBlbmRlZCB0byBhbGwgcGhwIGdlbmVyYXRlZCBjbGFzc2VzCiBmcm9tIHRoaXMgLnByb3RvLiBEZWZhdWx0IGlzIGVtcHR5LgoKDQoFBAoCEAQSBJwDAgoKDQoFBAoCEAUSBJwDCxEKDQoFBAoCEAESBJwDEiIKDQoFBAoCEAMSBJwDJScKvgEKBAQKAhESBKEDAiUarwEgVXNlIHRoaXMgb3B0aW9uIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlIG9mIHBocCBnZW5lcmF0ZWQgY2xhc3Nlcy4gRGVmYXVsdAogaXMgZW1wdHkuIFdoZW4gdGhpcyBvcHRpb24gaXMgZW1wdHksIHRoZSBwYWNrYWdlIG5hbWUgd2lsbCBiZSB1c2VkIGZvcgogZGV0ZXJtaW5pbmcgdGhlIG5hbWVzcGFjZS4KCg0KBQQKAhEEEgShAwIKCg0KBQQKAhEFEgShAwsRCg0KBQQKAhEBEgShAxIfCg0KBQQKAhEDEgShAyIkCsoBCgQECgISEgSnAwIuGrsBIFVzZSB0aGlzIG9wdGlvbiB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZSBvZiBwaHAgZ2VuZXJhdGVkIG1ldGFkYXRhIGNsYXNzZXMuCiBEZWZhdWx0IGlzIGVtcHR5LiBXaGVuIHRoaXMgb3B0aW9uIGlzIGVtcHR5LCB0aGUgcHJvdG8gZmlsZSBuYW1lIHdpbGwgYmUgdXNlZAogZm9yIGRldGVybWluaW5nIHRoZSBuYW1lc3BhY2UuCgoNCgUECgISBBIEpwMCCgoNCgUECgISBRIEpwMLEQoNCgUECgISARIEpwMSKAoNCgUECgISAxIEpwMrLQrCAQoEBAoCExIErAMCJBqzASBVc2UgdGhpcyBvcHRpb24gdG8gY2hhbmdlIHRoZSBwYWNrYWdlIG9mIHJ1YnkgZ2VuZXJhdGVkIGNsYXNzZXMuIERlZmF1bHQKIGlzIGVtcHR5LiBXaGVuIHRoaXMgb3B0aW9uIGlzIG5vdCBzZXQsIHRoZSBwYWNrYWdlIG5hbWUgd2lsbCBiZSB1c2VkIGZvcgogZGV0ZXJtaW5pbmcgdGhlIHJ1YnkgcGFja2FnZS4KCg0KBQQKAhMEEgSsAwIKCg0KBQQKAhMFEgSsAwsRCg0KBQQKAhMBEgSsAxIeCg0KBQQKAhMDEgSsAyEjCnwKBAQKAhQSBLADAjoabiBUaGUgcGFyc2VyIHN0b3JlcyBvcHRpb25zIGl0IGRvZXNuJ3QgcmVjb2duaXplIGhlcmUuCiBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiT3B0aW9ucyIgc2VjdGlvbiBhYm92ZS4KCg0KBQQKAhQEEgSwAwIKCg0KBQQKAhQGEgSwAwseCg0KBQQKAhQBEgSwAx8zCg0KBQQKAhQDEgSwAzY5CocBCgMECgUSBLQDAhkaeiBDbGllbnRzIGNhbiBkZWZpbmUgY3VzdG9tIG9wdGlvbnMgaW4gZXh0ZW5zaW9ucyBvZiB0aGlzIG1lc3NhZ2UuCiBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiT3B0aW9ucyIgc2VjdGlvbiBhYm92ZS4KCgwKBAQKBQASBLQDDRgKDQoFBAoFAAESBLQDDREKDQoFBAoFAAISBLQDFRgKCwoDBAoJEgS2AwIOCgwKBAQKCQASBLYDCw0KDQoFBAoJAAESBLYDCw0KDQoFBAoJAAISBLYDCw0KDAoCBAsSBrkDAPgDAQoLCgMECwESBLkDCBYK2AUKBAQLAgASBMwDAjwayQUgU2V0IHRydWUgdG8gdXNlIHRoZSBvbGQgcHJvdG8xIE1lc3NhZ2VTZXQgd2lyZSBmb3JtYXQgZm9yIGV4dGVuc2lvbnMuCiBUaGlzIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBNZXNzYWdlU2V0IHdpcmUKIGZvcm1hdC4gIFlvdSBzaG91bGQgbm90IHVzZSB0aGlzIGZvciBhbnkgb3RoZXIgcmVhc29uOiAgSXQncyBsZXNzCiBlZmZpY2llbnQsIGhhcyBmZXdlciBmZWF0dXJlcywgYW5kIGlzIG1vcmUgY29tcGxpY2F0ZWQuCgogVGhlIG1lc3NhZ2UgbXVzdCBiZSBkZWZpbmVkIGV4YWN0bHkgYXMgZm9sbG93czoKICAgbWVzc2FnZSBGb28gewogICAgIG9wdGlvbiBtZXNzYWdlX3NldF93aXJlX2Zvcm1hdCA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucyA0IHRvIG1heDsKICAgfQogTm90ZSB0aGF0IHRoZSBtZXNzYWdlIGNhbm5vdCBoYXZlIGFueSBkZWZpbmVkIGZpZWxkczsgTWVzc2FnZVNldHMgb25seQogaGF2ZSBleHRlbnNpb25zLgoKIEFsbCBleHRlbnNpb25zIG9mIHlvdXIgdHlwZSBtdXN0IGJlIHNpbmd1bGFyIG1lc3NhZ2VzOyBlLmcuIHRoZXkgY2Fubm90CiBiZSBpbnQzMnMsIGVudW1zLCBvciByZXBlYXRlZCBtZXNzYWdlcy4KCiBCZWNhdXNlIHRoaXMgaXMgYW4gb3B0aW9uLCB0aGUgYWJvdmUgdHdvIHJlc3RyaWN0aW9ucyBhcmUgbm90IGVuZm9yY2VkIGJ5CiB0aGUgcHJvdG9jb2wgY29tcGlsZXIuCgoNCgUECwIABBIEzAMCCgoNCgUECwIABRIEzAMLDwoNCgUECwIAARIEzAMQJwoNCgUECwIAAxIEzAMqKwoNCgUECwIACBIEzAMsOwoNCgUECwIABxIEzAM1OgrrAQoEBAsCARIE0QMCRBrcASBEaXNhYmxlcyB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgc3RhbmRhcmQgImRlc2NyaXB0b3IoKSIgYWNjZXNzb3IsIHdoaWNoIGNhbgogY29uZmxpY3Qgd2l0aCBhIGZpZWxkIG9mIHRoZSBzYW1lIG5hbWUuICBUaGlzIGlzIG1lYW50IHRvIG1ha2UgbWlncmF0aW9uCiBmcm9tIHByb3RvMSBlYXNpZXI7IG5ldyBjb2RlIHNob3VsZCBhdm9pZCBmaWVsZHMgbmFtZWQgImRlc2NyaXB0b3IiLgoKDQoFBAsCAQQSBNEDAgoKDQoFBAsCAQUSBNEDCw8KDQoFBAsCAQESBNEDEC8KDQoFBAsCAQMSBNEDMjMKDQoFBAsCAQgSBNEDNEMKDQoFBAsCAQcSBNEDPUIK7gEKBAQLAgISBNcDAi8a3wEgSXMgdGhpcyBtZXNzYWdlIGRlcHJlY2F0ZWQ/CiBEZXBlbmRpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSwgdGhpcyBjYW4gZW1pdCBEZXByZWNhdGVkIGFubm90YXRpb25zCiBmb3IgdGhlIG1lc3NhZ2UsIG9yIGl0IHdpbGwgYmUgY29tcGxldGVseSBpZ25vcmVkOyBpbiB0aGUgdmVyeSBsZWFzdCwKIHRoaXMgaXMgYSBmb3JtYWxpemF0aW9uIGZvciBkZXByZWNhdGluZyBtZXNzYWdlcy4KCg0KBQQLAgIEEgTXAwIKCg0KBQQLAgIFEgTXAwsPCg0KBQQLAgIBEgTXAxAaCg0KBQQLAgIDEgTXAx0eCg0KBQQLAgIIEgTXAx8uCg0KBQQLAgIHEgTXAygtCp4GCgQECwIDEgTuAwIeGo8GIFdoZXRoZXIgdGhlIG1lc3NhZ2UgaXMgYW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFwIGVudHJ5IHR5cGUgZm9yIHRoZQogbWFwcyBmaWVsZC4KCiBGb3IgbWFwcyBmaWVsZHM6CiAgICAgbWFwPEtleVR5cGUsIFZhbHVlVHlwZT4gbWFwX2ZpZWxkID0gMTsKIFRoZSBwYXJzZWQgZGVzY3JpcHRvciBsb29rcyBsaWtlOgogICAgIG1lc3NhZ2UgTWFwRmllbGRFbnRyeSB7CiAgICAgICAgIG9wdGlvbiBtYXBfZW50cnkgPSB0cnVlOwogICAgICAgICBvcHRpb25hbCBLZXlUeXBlIGtleSA9IDE7CiAgICAgICAgIG9wdGlvbmFsIFZhbHVlVHlwZSB2YWx1ZSA9IDI7CiAgICAgfQogICAgIHJlcGVhdGVkIE1hcEZpZWxkRW50cnkgbWFwX2ZpZWxkID0gMTsKCiBJbXBsZW1lbnRhdGlvbnMgbWF5IGNob29zZSBub3QgdG8gZ2VuZXJhdGUgdGhlIG1hcF9lbnRyeT10cnVlIG1lc3NhZ2UsIGJ1dAogdXNlIGEgbmF0aXZlIG1hcCBpbiB0aGUgdGFyZ2V0IGxhbmd1YWdlIHRvIGhvbGQgdGhlIGtleXMgYW5kIHZhbHVlcy4KIFRoZSByZWZsZWN0aW9uIEFQSXMgaW4gc3VjaCBpbXBsZW1lbnRpb25zIHN0aWxsIG5lZWQgdG8gd29yayBhcwogaWYgdGhlIGZpZWxkIGlzIGEgcmVwZWF0ZWQgbWVzc2FnZSBmaWVsZC4KCiBOT1RFOiBEbyBub3Qgc2V0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cyBmaWVsZCBiZSBwYXJzZWQgbGF6aWx5PyAgTGF6eSBhcHBsaWVzIG9ubHkgdG8gbWVzc2FnZS10eXBlCiBmaWVsZHMuICBJdCBtZWFucyB0aGF0IHdoZW4gdGhlIG91dGVyIG1lc3NhZ2UgaXMgaW5pdGlhbGx5IHBhcnNlZCwgdGhlCiBpbm5lciBtZXNzYWdlJ3MgY29udGVudHMgd2lsbCBub3QgYmUgcGFyc2VkIGJ1dCBpbnN0ZWFkIHN0b3JlZCBpbiBlbmNvZGVkCiBmb3JtLiAgVGhlIGlubmVyIG1lc3NhZ2Ugd2lsbCBhY3R1YWxseSBiZSBwYXJzZWQgd2hlbiBpdCBpcyBmaXJzdCBhY2Nlc3NlZC4KCiBUaGlzIGlzIG9ubHkgYSBoaW50LiAgSW1wbGVtZW50YXRpb25zIGFyZSBmcmVlIHRvIGNob29zZSB3aGV0aGVyIHRvIHVzZQogZWFnZXIgb3IgbGF6eSBwYXJzaW5nIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uLiAgSG93ZXZlciwKIHNldHRpbmcgdGhpcyBvcHRpb24gdHJ1ZSBzdWdnZXN0cyB0aGF0IHRoZSBwcm90b2NvbCBhdXRob3IgYmVsaWV2ZXMgdGhhdAogdXNpbmcgbGF6eSBwYXJzaW5nIG9uIHRoaXMgZmllbGQgaXMgd29ydGggdGhlIGFkZGl0aW9uYWwgYm9va2tlZXBpbmcKIG92ZXJoZWFkIHR5cGljYWxseSBuZWVkZWQgdG8gaW1wbGVtZW50IGl0LgoKIFRoaXMgb3B0aW9uIGRvZXMgbm90IGFmZmVjdCB0aGUgcHVibGljIGludGVyZmFjZSBvZiBhbnkgZ2VuZXJhdGVkIGNvZGU7CiBhbGwgbWV0aG9kIHNpZ25hdHVyZXMgcmVtYWluIHRoZSBzYW1lLiAgRnVydGhlcm1vcmUsIHRocmVhZC1zYWZldHkgb2YgdGhlCiBpbnRlcmZhY2UgaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMgb3B0aW9uOyBjb25zdCBtZXRob2RzIHJlbWFpbiBzYWZlIHRvCiBjYWxsIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBjb25jdXJyZW50bHksIHdoaWxlIG5vbi1jb25zdCBtZXRob2RzIGNvbnRpbnVlCiB0byByZXF1aXJlIGV4Y2x1c2l2ZSBhY2Nlc3MuCgoKIE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgbWF5IGNob29zZSBub3QgdG8gY2hlY2sgcmVxdWlyZWQgZmllbGRzIHdpdGhpbgogYSBsYXp5IHN1Yi1tZXNzYWdlLiAgVGhhdCBpcywgY2FsbGluZyBJc0luaXRpYWxpemVkKCkgb24gdGhlIG91dGVyIG1lc3NhZ2UKIG1heSByZXR1cm4gdHJ1ZSBldmVuIGlmIHRoZSBpbm5lciBtZXNzYWdlIGhhcyBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkcy4KIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBpbm5lciBtZXNzYWdlIHdvdWxkIGhhdmUgdG8gYmUKIHBhcnNlZCBpbiBvcmRlciB0byBwZXJmb3JtIHRoZSBjaGVjaywgZGVmZWF0aW5nIHRoZSBwdXJwb3NlIG9mIGxhenkKIHBhcnNpbmcuICBBbiBpbXBsZW1lbnRhdGlvbiB3aGljaCBjaG9vc2VzIG5vdCB0byBjaGVjayByZXF1aXJlZCBmaWVsZHMKIG11c3QgYmUgY29uc2lzdGVudCBhYm91dCBpdC4gIFRoYXQgaXMsIGZvciBhbnkgcGFydGljdWxhciBzdWItbWVzc2FnZSwgdGhlCiBpbXBsZW1lbnRhdGlvbiBtdXN0IGVpdGhlciAqYWx3YXlzKiBjaGVjayBpdHMgcmVxdWlyZWQgZmllbGRzLCBvciAqbmV2ZXIqCiBjaGVjayBpdHMgcmVxdWlyZWQgZmllbGRzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBtZXNzYWdlIGhhcwogYmVlbiBwYXJzZWQuCgoNCgUEDAIDBBIEwgQCCgoNCgUEDAIDBRIEwgQLDwoNCgUEDAIDARIEwgQQFAoNCgUEDAIDAxIEwgQXGAoNCgUEDAIDCBIEwgQZKAoNCgUEDAIDBxIEwgQiJwroAQoEBAwCBBIEyAQCLxrZASBJcyB0aGlzIGZpZWxkIGRlcHJlY2F0ZWQ/CiBEZXBlbmRpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSwgdGhpcyBjYW4g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CgUEEQIBBBIEqwUCCgoNCgUEEQIBBhIEqwULGwoNCgUEEQIBARIEqwUcLQoNCgUEEQIBAxIErAUGCAoNCgUEEQIBCBIErAUJJgoNCgUEEQIBBxIErAUSJQpPCgQEEQICEgSvBQI6GkEgVGhlIHBhcnNlciBzdG9yZXMgb3B0aW9ucyBpdCBkb2Vzbid0IHJlY29nbml6ZSBoZXJlLiBTZWUgYWJvdmUuCgoNCgUEEQICBBIErwUCCgoNCgUEEQICBhIErwULHgoNCgUEEQICARIErwUfMwoNCgUEEQICAxIErwU2OQpaCgMEEQUSBLIFAhkaTSBDbGllbnRzIGNhbiBkZWZpbmUgY3VzdG9tIG9wdGlvbnMgaW4gZXh0ZW5zaW9ucyBvZiB0aGlzIG1lc3NhZ2UuIFNlZSBhYm92ZS4KCgwKBAQRBQASBLIFDRgKDQoFBBEFAAESBLIFDREKDQoFBBEFAAISBLIFFRgKiwMKAgQSEga8BQDQBQEa/AIgQSBtZXNzYWdlIHJlcHJlc2VudGluZyBhIG9wdGlvbiB0aGUgcGFyc2VyIGRvZXMgbm90IHJlY29nbml6ZS4gVGhpcyBvbmx5CiBhcHBlYXJzIGluIG9wdGlvbnMgcHJvdG9zIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyOjpQYXJzZXIgY2xhc3MuCiBEZXNjcmlwdG9yUG9vbCByZXNvbHZlcyB0aGVzZSB3aGVuIGJ1aWxkaW5nIERlc2NyaXB0b3Igb2JqZWN0cy4gVGhlcmVmb3JlLAogb3B0aW9ucyBwcm90b3MgaW4gZGVzY3JpcHRvciBvYmplY3RzIChlLmcuIHJldHVybmVkIGJ5IERlc2NyaXB0b3I6Om9wdGlvbnMoKSwKIG9yIHByb2R1Y2VkIGJ5IERlc2NyaXB0b3I6OkNvcHlUbygpKSB3aWxsIG5ldmVyIGhhdmUgVW5pbnRlcnByZXRlZE9wdGlvbnMKIGluIHRoZW0uCgoLCgMEEgESBLwFCBsKywIKBAQSAwASBsIFAsUFAxq6AiBUaGUgbmFtZSBvZiB0aGUgdW5pbnRlcnByZXRlZCBvcHRpb24uICBFYWNoIHN0cmluZyByZXByZXNlbnRzIGEgc2VnbWVudCBpbgogYSBkb3Qtc2VwYXJhdGVkIG5hbWUuICBpc19l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ICAgICAgICAgICAgICAgcmVwcmVzZW50cwogICBbYSxpKSAgWyA0LCAwLCAyLCAwIF0gICAgIFRoZSB3aG9sZSBmaWVsZCBkZWZpbml0aW9uLgogICBbYSxiKSAgWyA0LCAwLCAyLCAwLCA0IF0gIFRoZSBsYWJlbCAob3B0aW9uYWwpLgogICBbYyxkKSAgWyA0LCAwLCAyLCAwLCA1IF0gIFRoZSB0eXBlIChzdHJpbmcpLgogICBbZSxmKSAgWyA0LCAwLCAyLCAwLCAxIF0gIFRoZSBuYW1lIChmb28pLgogICBbZyxoKSAgWyA0LCAwLCAyLCAwLCAzIF0gIFRoZSBudW1iZXIgKDEpLgoKIE5vdGVzOgogLSBBIGxvY2F0aW9uIG1heSByZWZlciB0byBhIHJlcGVhdGVkIGZpZWxkIGl0c2VsZiAoaS5lLiBub3QgdG8gYW55CiAgIHBhcnRpY3VsYXIgaW5kZXggd2l0aGluIGl0KS4gIFRoaXMgaXMgdXNlZCB3aGVuZXZlciBhIHNldCBvZiBlbGVtZW50cyBhcmUKICAgbG9naWNhbGx5IGVuY2xvc2VkIGluIGEgc2luZ2xlIGNvZGUgc2VnbWVudC4gIEZvciBleGFtcGxlLCBhbiBlbnRpcmUKICAgZXh0ZW5kIGJsb2NrIChwb3NzaWJseSBjb250YWluaW5nIG11bHRpcGxlIGV4dGVuc2lvbiBkZWZpbml0aW9ucykgd2lsbAogICBoYXZlIGFuIG91dGVyIGxvY2F0aW9uIHdob3NlIHBhdGggcmVmZXJzIHRvIHRoZSAiZXh0ZW5zaW9ucyIgcmVwZWF0ZWQKICAgZmllbGQgd2l0aG91dCBhbiBpbmRleC4KIC0gTXVsdGlwbGUgbG9jYXRpb25zIG1heSBoYXZlIHRoZSBzYW1lIHBhdGguICBUaGlzIGhhcHBlbnMgd2hlbiBhIHNpbmdsZQogICBsb2dpY2FsIGRlY2xhcmF0aW9uIGlzIHNwcmVhZCBvdXQgYWNyb3NzIG11bHRpcGxlIHBsYWNlcy4gIFRoZSBtb3N0CiAgIG9idmlvdXMgZXhhbXBsZSBpcyB0aGUgImV4dGVuZCIgYmxvY2sgYWdhaW4gLS0gdGhlcmUgbWF5IGJlIG11bHRpcGxlCiAgIGV4dGVuZCBibG9ja3MgaW4gdGhlIHNhbWUgc2NvcGUsIGVhY2ggb2Ygd2hpY2ggd2lsbCBoYXZlIHRoZSBzYW1lIHBhdGguCiAtIEEgbG9jYXRpb24ncyBzcGFuIGlzIG5vdCBhbHdheXMgYSBzdWJzZXQgb2YgaXRzIHBhcmVudCdzIHNwYW4uICBGb3IKICAgZXhhbXBsZSwgdGhlICJleHRlbmRlZSIgb2YgYW4gZXh0ZW5zaW9uIGRlY2xhcmF0aW9uIGFwcGVhcnMgYXQgdGhlCiAgIGJlZ2lubmluZyBvZiB0aGUgImV4dGVuZCIgYmxvY2sgYW5kIGlzIHNoYXJlZCBieSBhbGwgZXh0ZW5zaW9ucyB3aXRoaW4KICAgdGhlIGJsb2NrLgogLSBKdXN0IGJlY2F1c2UgYSBsb2NhdGlvbidzIHNwYW4gaXMgYSBzdWJzZXQgb2Ygc29tZSBvdGhlciBsb2NhdGlvbidzIHNwYW4KICAgZG9lcyBub3QgbWVhbiB0aGF0IGl0IGlzIGEgZGVzY2VuZGVudC4gIEZvciBleGFtcGxlLCBhICJncm91cCIgZGVmaW5lcwogICBib3RoIGEgdHlwZSBhbmQgYSBmaWVsZCBpbiBhIHNpbmdsZSBkZWNsYXJhdGlvbi4gIFRodXMsIHRoZSBsb2NhdGlvbnMKICAgY29ycmVzcG9uZGluZyB0byB0aGUgdHlwZSBhbmQgZmllbGQgYW5kIHRoZWlyIGNvbXBvbmVudHMgd2lsbCBvdmVybGFwLgogLSBDb2RlIHdoaWNoIHRyaWVzIHRvIGludGVycHJldCBsb2NhdGlvbnMgc2hvdWxkIHByb2JhYmx5IGJlIGRlc2lnbmVkIHRvCiAgIGlnbm9yZSB0aG9zZSB0aGF0IGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCwgYXMgbW9yZSB0eXBlcyBvZiBsb2NhdGlvbnMgY291bGQKICAgYmUgcmVjb3JkZWQgaW4gdGhlIGZ1dHVyZS4KCg0KBQQTAgAEEgSDBgIKCg0KBQQTAgAGEgSDBgsTCg0KBQQTAgABEgSDBhQcCg0KBQQTAgADEgSDBh8gCg4KBAQTAwASBoQGAtcGAwoNCgUEEwMAARIEhAYKEgqDBwoGBBMDAAIAEgScBgQqGvIGIElkZW50aWZpZXMgd2hpY2ggcGFydCBvZiB0aGUgRmlsZURlc2NyaXB0b3JQcm90byB3YXMgZGVmaW5lZCBhdCB0aGlzCiBsb2NhdGlvbi4KCiBFYWNoIGVsZW1lbnQgaXMgYSBmaWVsZCBudW1iZXIgb3IgYW4gaW5kZXguICBUaGV5IGZvcm0gYSBwYXRoIGZyb20KIHRoZSByb290IEZpbGVEZXNjcmlwdG9yUHJvdG8gdG8gdGhlIHBsYWNlIHdoZXJlIHRoZSBkZWZpbml0aW9uLiAgRm9yCiBleGFtcGxlLCB0aGlzIHBhdGg6CiAgIFsgNCwgMywgMiwgNywgMSBdCiByZWZlcnMgdG86CiAgIGZpbGUubWVzc2FnZV90eXBlKDMpICAvLyA0LCAzCiAgICAgICAuZmllbGQoNykgICAgICAgICAvLyAyLCA3CiAgICAgICAubmFtZSgpICAgICAgICAgICAvLyAxCiBUaGlzIGlzIGJlY2F1c2UgRmlsZURlc2NyaXB0b3JQcm90by5tZXNzYWdlX3R5cGUgaGFzIGZpZWxkIG51bWJlciA0OgogICByZXBlYXRlZCBEZXNjcmlwdG9yUHJvdG8gbWVzc2FnZV90eXBlID0gNDsKIGFuZCBEZXNjcmlwdG9yUHJvdG8uZmllbGQgaGFzIGZpZWxkIG51bWJlciAyOgogICByZXBlYXRlZCBGaWVsZERlc2NyaXB0b3JQcm90byBmaWVsZCA9IDI7CiBhbmQgRmllbGREZXNjcmlwdG9yUHJvdG8ubmFtZSBoYXMgZmllbGQgbnVtYmVyIDE6CiAgIG9wdGlvbmFsIHN0cmluZyBuYW1lID0gMTsKCiBUaHVzLCB0aGUgYWJvdmUgcGF0aCBnaXZlcyB0aGUgbG9jYXRpb24gb2YgYSBmaWVsZCBuYW1lLiAgSWYgd2UgcmVtb3ZlZAogdGhlIGxhc3QgZWxlbWVudDoKICAgWyA0LCAzLCAyLCA3IF0KIHRoaXMgcGF0aCByZWZlcnMgdG8gdGhlIHdob2xlIGZpZWxkIGRlY2xhcmF0aW9uIChmcm9tIHRoZSBiZWdpbm5pbmcKIG9mIHRoZSBsYWJlbCB0byB0aGUgdGVybWluYXRpbmcgc2VtaWNvbG9uKS4KCg8KBwQTAwACAAQSBJwGBAwKDwoHBBMDAAIABRIEnAYNEgoPCgcEEwMAAgABEgScBhMXCg8KBwQTAwACAAMSBJwGGhsKDwoHBBMDAAIACBIEnAYcKQoQCggEEwMAAgAIAhIEnAYdKArSAgoGBBMDAAIBEgSjBgQqGsECIEFsd2F5cyBoYXMgZXhhY3RseSB0aHJlZSBvciBmb3VyIGVsZW1lbnRzOiBzdGFydCBsaW5lLCBzdGFydCBjb2x1bW4sCiBlbmQgbGluZSAob3B0aW9uYWwsIG90aGVyd2lzZSBhc3N1bWVkIHNhbWUgYXMgc3RhcnQgbGluZSksIGVuZCBjb2x1bW4uCiBUaGVzZSBhcmUgcGFja2VkIGludG8gYSBzaW5nbGUgZmllbGQgZm9yIGVmZmljaWVuY3kuICBOb3RlIHRoYXQgbGluZQogYW5kIGNvbHVtbiBudW1iZXJzIGFyZSB6ZXJvLWJhc2VkIC0tIHR5cGljYWxseSB5b3Ugd2lsbCB3YW50IHRvIGFkZAogMSB0byBlYWNoIGJlZm9yZSBkaXNwbGF5aW5nIHRvIGEgdXNlci4KCg8KBwQTAwACAQQSBKMGBAwKDwoHBBMDAAIBBRIEowYNEgoPCgcEEwMAAgEBEgSjBhMXCg8KBwQTAwACAQMSBKMGGhsKDwoHBBMDAAIBCBIEowYcKQoQCggEEwMAAgEIAhIEowYdKAqlDAoGBBMDAAICEgTUBgQpGpQMIElmIHRoaXMgU291cmNlQ29kZUluZm8gcmVwcmVzZW50cyBhIGNvbXBsZXRlIGRlY2xhcmF0aW9uLCB0aGVzZSBhcmUgYW55CiBjb21tZW50cyBhcHBlYXJpbmcgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjbGFyYXRpb24gd2hpY2ggYXBwZWFyIHRvIGJlCiBhdHRhY2hlZCB0byB0aGUgZGVjbGFyYXRpb24uCgogQSBzZXJpZXMgb2YgbGluZSBjb21tZW50cyBhcHBlYXJpbmcgb24gY29uc2VjdXRpdmUgbGluZXMsIHdpdGggbm8gb3RoZXIKIHRva2VucyBhcHBlYXJpbmcgb24gdGhvc2UgbGluZXMsIHdpbGwgYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSBjb21tZW50LgoKIGxlYWRpbmdfZGV0YWNoZWRfY29tbWVudHMgd2lsbCBrZWVwIHBhcmFncmFwaHMgb2YgY29tbWVudHMgdGhhdCBhcHBlYXIKIGJlZm9yZSAoYnV0IG5vdCBjb25uZWN0ZWQgdG8pIHRoZSBjdXJyZW50IGVsZW1lbnQuIEVhY2ggcGFyYWdyYXBoLAogc2VwYXJhdGVkIGJ5IGVtcHR5IGxpbmVzLCB3aWxsIGJlIG9uZSBjb21tZW50IGVsZW1lbnQgaW4gdGhlIHJlcGVhdGVkCiBmaWVsZC4KCiBPbmx5IHRoZSBjb21tZW50IGNvbnRlbnQgaXMgcHJvdmlkZWQ7IGNvbW1lbnQgbWFya2VycyAoZS5nLiAvLykgYXJlCiBzdHJpcHBlZCBvdXQuICBGb3IgYmxvY2sgY29tbWVudHMsIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgYW4gYXN0ZXJpc2sKIHdpbGwgYmUgc3RyaXBwZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggbGluZSBvdGhlciB0aGFuIHRoZSBmaXJzdC4KIE5ld2xpbmVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0LgoKIEV4YW1wbGVzOgoKICAgb3B0aW9uYWwgaW50MzIgZm9vID0gMTsgIC8vIENvbW1lbnQgYXR0YWNoZWQgdG8gZm9vLgogICAvLyBDb21tZW50IGF0dGFjaGVkIHRvIGJhci4KICAgb3B0aW9uYWwgaW50MzIgYmFyID0gMjsKCiAgIG9wdGlvbmFsIHN0cmluZyBiYXogPSAzOwogICAvLyBDb21tZW50IGF0dGFjaGVkIHRvIGJhei4KICAgLy8gQW5vdGhlciBsaW5lIGF0dGFjaGVkIHRvIGJhei4KCiAgIC8vIENvbW1lbnQgYXR0YWNoZWQgdG8gcXV4LgogICAvLwogICAvLyBBbm90aGVyIGxpbmUgYXR0YWNoZWQgdG8gcXV4LgogICBvcHRpb25hbCBkb3VibGUgcXV4ID0gNDsKCiAgIC8vIERldGFjaGVkIGNvbW1lbnQgZm9yIGNvcmdlLiBUaGlzIGlzIG5vdCBsZWFkaW5nIG9yIHRyYWlsaW5nIGNvbW1lbnRzCiAgIC8vIHRvIHF1eCBvciBjb3JnZSBiZWNhdXNlIHRoZXJlIGFyZSBibGFuayBsaW5lcyBzZXBhcmF0aW5nIGl0IGZyb20KICAgLy8g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DwoHBBQDAAIDBBIE8AYEDAoPCgcEFAMAAgMFEgTwBg0SCg8KBwQUAwACAwESBPAGExYKDwoHBBQDAAIDAxIE8AYZGgrJGgogdm9sdGhhX3Byb3Rvcy95YW5nX29wdGlvbnMucHJvdG8SBmNvbW1vbhogZ29vZ2xlL3Byb3RvYnVmL2Rlc2NyaXB0b3IucHJvdG8iMAoKSW5saW5lTm9kZRIOCgJpZBgBIAEoCVICaWQSEgoEdHlwZRgCIAEoCVIEdHlwZSJPCgxScGNSZXR1cm5EZWYSFwoHeG1sX3RhZxgBIAEoCVIGeG1sVGFnEiYKD2xpc3RfaXRlbXNfbmFtZRgCIAEoCVINbGlzdEl0ZW1zTmFtZSpXChNNZXNzYWdlUGFyc2VyT3B0aW9uEhgKFE1PVkVfVE9fUEFSRU5UX0xFVkVMEAASJgoiQ1JFQVRFX0JPVEhfR1JPVVBJTkdfQU5EX0NPTlRBSU5FUhABOmcKD3lhbmdfY2hpbGRfcnVsZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxju3tkDIAEoDjIbLmNvbW1vbi5NZXNzYWdlUGFyc2VyT3B0aW9uUg15YW5nQ2hpbGRSdWxlOmsKEXlhbmdfbWVzc2FnZV9ydWxlEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGO/e2QMgASgOMhsuY29tbW9uLk1lc3NhZ2VQYXJzZXJPcHRpb25SD3lhbmdNZXNzYWdlUnVsZTpeChB5YW5nX2lubGluZV9ub2RlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjw3tkDIAEoCzISLmNvbW1vbi5JbmxpbmVOb2RlUg55YW5nSW5saW5lTm9kZTpZCgx5YW5nX3htbF90YWcSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxjx3tkDIAEoCzIULmNvbW1vbi5ScGNSZXR1cm5EZWZSCnlhbmdYbWxUYWdCLVorZ2l0aHViLmNvbS9vcGVuY29yZC92b2x0aGEtcHJvdG9zL2dvL2NvbW1vbkrWFAoGEgQRAEkBCqMFCgEMEgMRABIytwQgQ29weXJpZ2h0IChjKSAyMDE1LCBHb29nbGUgSW5jLgoKIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoyXyBUaGlzIGZpbGUgY29udGFpbnMgYW5ub3RhdGlvbiBkZWZpbml0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlc2NyaWJlCiBhIGNvbmZpZ3VyYXRpb24gdHJlZS4KCggKAQgSAxMAQgoJCgIICxIDEwBCCggKAQISAxUADwoJCgIDABIDFwAqCgoKAgUAEgQZACIBCgoKAwUAARIDGQUYCooBCgQFAAIAEgMcBBwafSBNb3ZlIGFueSBlbmNsb3NpbmcgY2hpbGQgZW51bS9tZXNzYWdlIGRlZmluaXRpb24gdG8gdGhlIHNhbWUgbGV2ZWwKIGFzIHRoZSBwYXJlbnQgKHRoaXMgbWVzc2FnZSkgaW4gdGhlIHlhbmcgZ2VuZXJhdGVkIGZpbGUKCgwKBQUAAgABEgMcBBgKDAoFBQACAAISAxwaGwq+AQoEBQACARIDIQQrGrABIENyZWF0ZSBib3RoIGEgZ3JvdXBpbmcgYW5kIGEgY29udGFpbmVyIGZvciB0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UgVpdGVtcyJjCghMb2dMZXZlbCJQCghMb2dMZXZlbBIJCgVERUJVRxAAEggKBElORk8QARILCgdXQVJOSU5HEAISCQoFRVJST1IQAxIMCghDUklUSUNBTBAEEgkKBUZBVEFMEAU6BfD2zR0AIoEBCgpBZG1pblN0YXRlImwKCkFkbWluU3RhdGUSCwoHVU5LTk9XThAAEhIKDlBSRVBST1ZJU0lPTkVEEAESCwoHRU5BQkxFRBACEgwKCERJU0FCTEVEEAMSFQoRRE9XTkxPQURJTkdfSU1BR0UQBBILCgdERUxFVEVEEAU6BfD2zR0AInMKCk9wZXJTdGF0dXMiXgoKT3BlclN0YXR1cxILCgdVTktOT1dOEAASDgoKRElTQ09WRVJFRBABEg4KCkFDVElWQVRJTkcQAhILCgdURVNUSU5HEAMSCgoGQUNUSVZFEAQSCgoGRkFJTEVEEAU6BfD2zR0AIlQKDUNvbm5lY3RTdGF0dXMiPAoNQ29ubmVjdFN0YXR1cxILCgdVTktOT1dOEAASDwoLVU5SRUFDSEFCTEUQARINCglSRUFDSEFCTEUQAjoF8PbNHQAi3gEKDU9wZXJhdGlvblJlc3ASPQoEY29kZRgBIAEoDjIpLmNvbW1vbi5PcGVyYXRpb25SZXNwLk9wZXJhdGlvblJldHVybkNvZGVSBGNvZGUSJwoPYWRkaXRpb25hbF9pbmZvGAIgASgJUg5hZGRpdGlvbmFsSW5mbyJeChNPcGVyYXRpb25SZXR1cm5Db2RlEhUKEU9QRVJBVElPTl9TVUNDRVNTEAASFQoRT1BFUkFUSU9OX0ZBSUxVUkUQARIZChVPUEVSQVRJT05fVU5TVVBQT1JURUQQAjoF8PbNHQAqHAoMVGVzdE1vZGVLZXlzEgwKCGFwaV90ZXN0EABCLVorZ2l0aHViLmNvbS9vcGVuY29yZC92b2x0aGEtcHJvdG9zL2dvL2NvbW1vbkrRFwoGEgQAAHcBCggKAQwSAwAAEgoICgEIEgMCAEIKCQoCCAsSAwIAQgoICgECEgMEAA8KCQoCAwASAwYAKgoqCgIEABIECQALARoeIENvbnZleSBhIHJlc291cmNlIGlkZW50aWZpZXIKCgoKAwQAARIDCQgKCgsKBAQAAgASAwoEEgoNCgUEAAIABBIECgQJDAoMCgUEAAIA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GgoEBAYCABIDcwQhGg0gUmV0dXJuIGNvZGUKCg0KBQQGAgAEEgRzBHEFCgwKBQQGAgAGEgNzBBcKDAoFBAYCAAESA3MYHAoMCgUEBgIAAxIDcx8gCh4KBAQGAgESA3YEHxoRIEFkZGl0aW9uYWwgSW5mbwoKDQoFBAYCAQQSBHYEcyEKDAoFBAYCAQUSA3YECgoMCgUEBgIBARIDdgsaCgwKBQQGAgEDEgN2HR5iBnByb3RvMwrREQoYdm9sdGhhX3Byb3Rvcy9tZXRhLnByb3RvEgZ2b2x0aGEaIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvIh0KCUNoaWxkTm9kZRIQCgNrZXkYASABKAlSA2tleSoyCgZBY2Nlc3MSCgoGQ09ORklHEAASDQoJUkVBRF9PTkxZEAESDQoJUkVBTF9USU1FEAI6UgoKY2hpbGRfbm9kZRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY7N7ZAyABKAsyES52b2x0aGEuQ2hpbGROb2RlUgljaGlsZE5vZGU6SAoGYWNjZXNzEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjt3tkDIAEoDjIOLnZvbHRoYS5BY2Nlc3NSBmFjY2Vzc0ItWitnaXRodWIuY29tL29wZW5jb3JkL3ZvbHRoYS1wcm90b3MvZ28vY29tbW9uSuIOCgYSBBEAOAEKowUKAQwSAxEAEjK3BCBDb3B5cmlnaHQgKGMpIDIwMTUsIEdvb2dsZSBJbmMuCgogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCjJfIFRoaXMgZmlsZSBjb250YWlucyBhbm5vdGF0aW9uIGRlZmluaXRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUKIGEgY29uZmlndXJhdGlvbiB0cmVlLgoKCAoBCBIDEwBCCgkKAggLEgMTAEIKCAoBAhIDFQAPCgkKAgMAEgMXACoKCgoCBAASBBkAGwEKCgoDBAABEgMZCBEKCwoEBAACABIDGgQTCg0KBQQAAgAEEgQaBBkTCgwKBQQAAgAFEgMaBAoKDAoFBAACAAESAxoLDgoMCgUEAAIAAxIDGhESCgoKAgUAEgQdACkBCgoKAwUAARIDHQULCisKBAUAAgASAyAEDxoeIHJlYWQtd3JpdGUsIHN0b3JlZCBhdHRyaWJ1dGUKCgwKBQUAAgABEgMgBAoKDAoFBQACAAISAyANDgpKCgQFAAIBEgMjBBIaPSByZWFkLW9ubHkgZmllbGQsIHN0b3JlZCB3aXRoIHRoZSBtb2RlbCwgY292ZXJlZCBieSBpdHMgaGFzaAoKDAoFBQACAQESAyMEDQoMCgUFAAIBAhIDIxARCpEBCgQFAAICEgMnBBIagwEgQSByZWFkLW9ubHkgYXR0cmlidXRlIHRoYXQgaXMgbm90IHN0b3JlZCBpbiB0aGUgbW9kZWwsIG5vdCBjb3ZlcmVkCiBieSBpdHMgaGFzaCwgaXRzIHZhbHVlIGlzIGZpbGxlZCByZWFsLXRpbWUgdXBvbiBlYWNoIHJlcXVlc3QuCgoMCgUFAAICARIDJwQNCgwKBQUAAgICEgMnEBEKCQoBBxIEKwA4AQqMAgoCBwASAzEEIxqAAiBJZiBwcmVzZW50LCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGZpZWxkIGlzIHN0b3JlZCBhcyBleHRlcm5hbCBjaGlsZCBub2RlCiBvciBjaGlsZHJlbiBub2RlcyBpbiBWb2x0aGEncyBpbnRlcm5hbCBjb25maWd1cmF0aW9uIHRyZWUuCiBJZiB0aGUgZmllbGQgaXMgYSBjb250YWluZXIgZmllbGQgYW5kIGlmIHRoZSBvcHRpb24gc3BlY2lmaWVzIGEga2V5CiB0aGUgY2hpbGQgb2JqZWN0cyB3aWxsIGJlIGFkZHJlc3NpYmxlIGJ5IHRoYXQga2V5LgoKCgoDBwACEgMrByMKCwoDBwAEEgQxBCslCgoKAwcABhIDMQQNCgoKAwcAARIDMQ4YCgoKAwcAAxIDMRsiCpwCCgIHARIDNwQcGpACIFRoaXMgYW5ub3RhdGlvbiBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGEgZmllbGQgaXMgcmVhZC1vbmx5LAogZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgTkJJIGFjY2Vzcy4gQmFja2VuZCBwbHVnaW5zIGFuZCBzeXN0ZW0KIGludGVybmFscyBjYW4gdXBkYXRlIHRoZSBmaWVsZCBidXQgdGhlIHVwZGF0ZSByZXF1ZXN0cyB0aHJvdWdoIHRoZQogTkJJIHdpbGwgaWdub3JlIGZvciBpbnN0YW5jZSBhIGZpZWxkIHRoYXQgaXMgbWFya2VkIGFzIHJlYWQtb25seSAoUk8pLgoKCgoDBwECEgMrByMKCwoDBwEEEgQ3BDEjCgoKAwcBBhIDNwQKCgoKAwcBARIDNwsRCgoKAwcBAxIDNxQbYgZwcm90bzMKxA4KG3ZvbHRoYV9wcm90b3MvYWRhcHRlci5wcm90bxIGdm9sdGhhGhlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGhp2b2x0aGFfcHJvdG9zL2NvbW1vbi5wcm90bxoYdm9sdGhhX3Byb3Rvcy9tZXRhLnByb3RvIooBCg1BZGFwdGVyQ29uZmlnEjYKCWxvZ19sZXZlbBgBIAEoDjIZLmNvbW1vbi5Mb2dMZXZlbC5Mb2dMZXZlbFIIbG9nTGV2ZWwSQQoRYWRkaXRpb25hbF9jb25maWcYQCABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UhBhZGRpdGlvbmFsQ29uZmlnIpECCgdBZGFwdGVyEhUKAmlkGAEgASgJQgXo9s0dAVICaWQSHQoGdmVuZG9yGAIgASgJQgXo9s0dAVIGdmVuZG9yEh8KB3ZlcnNpb24YAyABKAlCBej2zR0BUgd2ZXJzaW9uEi0KBmNvbmZpZxgQIAEoCzIVLnZvbHRoYS5BZGFwdGVyQ29uZmlnUgZjb25maWcSUgoWYWRkaXRpb25hbF9kZXNjcmlwdGlvbhhAIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlCBej2zR0BUhVhZGRpdGlvbmFsRGVzY3JpcHRpb24SLAoSbG9naWNhbF9kZXZpY2VfaWRzGAQgAygJUhBsb2dpY2FsRGV2aWNlSWRzIjEKCEFkYXB0ZXJzEiUKBWl0ZW1zGAEgAygLMg8udm9sdGhhLkFkYXB0ZXJSBWl0ZW1zQi1aK2dpdGh1Yi5jb20vb3BlbmNvcmQvdm9sdGhhLXByb3Rvcy9nby92b2x0aGFKwAkKBhIEAAAqAQoICgEMEgMAABIKCAoBCBIDAgBCCgkKAggLEgMCAEIKCAoBAhIDBAAPCgkKAgMAEgMGACMKCQoCAwESAwcAJAoJCgIDAhIDCAAiCgoKAgQAEgQLABMBCgoKAwQAARIDCwgVCjQKBAQAAgASAw4EKxonIENvbW1vbiBhZGFwdGVyIGNvbmZpZyBhdHRyaWJ1dGVzIGhlcmUKCg0KBQQAAgAEEgQOBAsXCgwKBQQAAgAGEgMOBBwKDAoFBAACAAESAw4dJgoMCgUEAAIAAxIDDikqCkAKBAQAAgESAxEELxozIEN1c3RvbSAodmVuZG9yLXNwZWNpZmljKSBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXMKCg0KBQQAAgEEEgQRBA4rCgwKBQQAAgEGEgMRBBcKDAoFBAACAQESAxEYKQoMCgUEAAIBAxIDESwuCicKAgQBEgQWACYBGhsgQWRhcHRlciAoc29mdHdhcmUgcGx1Z2luKQoKCgoDBAEBEgMWCA8KXwoEBAECABIDGgQpGlIgVW5pcXVlIG5hbWUgb2YgYWRhcHRlciwgbWF0Y2hpbmcgdGhlIHB5dGhvbiBwYWNrYWdlIG5hbWUgdW5kZXIKIHZvbHRoYS9hZGFwdGVycy4KCg0KBQQBAgAEEgQaBBYRCgwKBQQBAgAFEgMaBAoKDAoFBAECAAESAxoLDQoMCgUEAQIAAxIDGhARCgwKBQQBAgAIEgMaEigKEAoJBAECAAjt3tkDEgMaEycKCwoEBAECARIDGwQtCg0KBQQBAgEEEgQbBBopCgwKBQQBAgEFEgMbBAoKDAoFBAECAQESAxsLEQoMCgUEAQIBAxIDGxQVCgwKBQQBAgEIEgMbFiwKEAoJBAECAQjt3tkDEgMbFysKCwoEBAECAhIDHAQuCg0KBQQBAgIEEgQcBBstCgwKBQQBAgIFEgMcBAoKDAoFBAECAgESAxwLEgoMCgUEAQICAxIDHBUWCgwKBQQBAgIIEgMcFy0KEAoJBAECAgjt3tkDEgMcGCwKJAoEBAECAxIDHwQeGhcgQWRhcHRlciBjb25maWd1cmF0aW9uCgoNCgUEAQIDBBIEHwQcLgoMCgUEAQIDBhIDHwQRCgwKBQQBAgMBEgMfEhgKDAoFBAECAwMSAx8bHQo6CgQEAQIEEgMiBEsaLSBDdXN0b20gZGVzY3JpcHRvcnMgYW5kIGN1c3RvbSBjb25maWd1cmF0aW9uCgoNCgUEAQIEBBIEIgQfHgoMCgUEAQIEBhIDIgQXCgwKBQQBAgQBEgMiGC4KDAoFBAECBAMSAyIxMwoMCgUEAQIECBIDIjRKChAKCQQBAgQI7d7ZAxIDIjVJCiYKBAQBAgUSAyQEKyIZIExvZ2ljYWwgZGV2aWNlcyAib3duZWQiCgoMCgUEAQIFBBIDJAQMCgwKBQQBAgUFEgMkDRMKDAoFBAECBQESAyQUJgoMCgUEAQIFAxIDJCkqCgoKAgQCEgQoACoBCgoKAwQCARIDKAgQCgsKBAQCAgASAykEHwoMCgUEAgIABBIDKQQMCgwKBQQCAgAGEgMpDRQKDAoFBAICAAESAykVGgoMCgUEAgIAAxIDKR0eYgZwcm90bzMKlxIKHHZvbHRoYV9wcm90b3MvYWZyb3V0ZXIucHJvdG8SCGFmcm91dGVyIkwKBlJlc3VsdBIYCgdzdWNjZXNzGAEgASgIUgdzdWNjZXNzEhQKBWVycm9yGAIgASgJUgVlcnJvchISCgRpbmZvGAMgASgJUgRpbmZvIgcKBUVtcHR5Ih0KBUNvdW50EhQKBWNvdW50GAEgASgNUgVjb3VudCK+AQoEQ29ubhIWCgZzZXJ2ZXIYASABKAlSBnNlcnZlchIQCgNwa2cYAiABKAlSA3BrZxIQCgNzdmMYAyABKAlSA3N2YxIYCgdjbHVzdGVyGAQgASgJUgdjbHVzdGVyEhgKB2JhY2tlbmQYBSABKAlSB2JhY2tlbmQSHgoKY29ubmVjdGlvbhgGIAEoCVIKY29ubmVjdGlvbhISCgRhZGRyGAcgASgJUgRhZGRyEhIKBHBvcnQYCCABKARSBHBvcnQifAoIQWZmaW5pdHkSFgoGcm91dGVyGAEgASgJUgZyb3V0ZXISFAoFcm91dGUYAiABKAlSBXJvdXRlEhgKB2NsdXN0ZXIYAyABKAlSB2NsdXN0ZXISGAoHYmFja2VuZBgEIAEoCVIHYmFja2VuZBIOCgJpZBgFIAEoCVICaWQytAEKDUNvbmZpZ3VyYXRpb24SMwoNU2V0Q29ubmVjdGlvbhIOLmFmcm91dGVyLkNvbm4aEC5hZnJvdXRlci5SZXN1bHQiABI1CgtTZXRBZmZpbml0eRISLmFmcm91dGVyLkFmZmluaXR5GhAuYWZyb3V0ZXIuUmVzdWx0IgASNwoRR2V0R29yb3V0aW5lQ291bnQSDy5hZnJvdXRlci5FbXB0eRoPLmFmcm91dGVyLkNvdW50IgBCL1otZ2l0aHViLmNvbS9vcGVuY29yZC92b2x0aGEtcHJvdG9zL2dvL2Fmcm91dGVySscMCgYSBAIALAEKQwoBDBIDAgASMjkgcHJvdG9jIC1JIGVjaG8vIGVjaG8vKi5wcm90byAtLWdvX291dD1wbHVnaW5zPWdycGM6ZWNobwoKCAoBCBIDBABECgkKAggLEgMEAEQKCAoBAhIDBgARCgoKAgYAEgQIAAwBCgoKAwYAARIDCAgVCgsKBAYAAgASAwkINAoMCgUGAAIAARIDCQwZCgwKBQYAAgACEgMJGx8KDAoFBgACAAMSAwkqMAoLCgQGAAIBEgMKCDUKDAoFBgACAQESAwoMFwoMCgUGAAIBAhIDChggCgwKBQYAAgEDEgMKKzEKCwoEBgACAhIDCwg3CgwKBQYAAgIBEgMLDB0KDAoFBgACAgISAwseIwoMCgUGAAICAxIDCy4zCgoKAgQAEgQOABIBCgoKAwQAARIDDggOCgsKBAQAAgASAw8IGQoNCgUEAAIABBIEDwgOEAoMCgUEAAIABRIDDwgMCgwKBQQAAgABEgMPDRQKDAoFBAACAAMSAw8XGAoLCgQEAAIBEgMQCBkKDQoFBAACAQQSBBAIDxkKDAoFBAACAQUSAxAIDgoMCgUEAAIBARIDEA8UCgwKBQQAAgEDEgMQFxgKCwoEBAACAhIDEQgYCg0KBQQAAgIEEgQRCBAZCgwKBQQAAgIFEgMRCA4KDAoFBAACAgESAxEPEwoMCgUEAAICAxIDERYXCgoKAgQBEgQUABUBCgoKAwQBARIDFAgNCgoKAgQCEgQXABkBCgoKAwQCARIDFwgNCgsKBAQCAgASAxgEFQoNCgUEAgIABBIEGAQXDwoMCgUEAgIABRIDGAQKCgwKBQQCAgABEgMYCxAKDAoFBAICAAMSAxgTFAoKCgIEAxIEGwAkAQoKCgMEAwESAxsIDAoLCgQEAwIAEgMcCBoKDQoFBAMCAAQSBBwIGw4KDAoFBAMCAAUSAxwIDgoMCgUEAwIAARIDHA8VCgwKBQQDAgADEgMcGBkKCwoEBAMCARIDHQgXCg0KBQQDAgEEEgQdCBwaCgwKBQQDAgEFEgMdCA4KDAoFBAMCAQESAx0PEgoMCgUEAwIBAxIDHRUWCgsKBAQDAgISAx4IFwoNCgUEAwICBBIEHggdFwoMCgUEAwICBRIDHggOCgwKBQQDAgIBEgMeDxIKDAoFBAMCAgMSAx4VFgoLCgQEAwIDEgMfCBsKDQoFBAMCAwQSBB8IHhcKDAoFBAMCAwUSAx8IDgoMCgUEAwIDARIDHw8WCgwKBQQDAgMDEgMfGRoKCwoEBAMCBBIDIAgbCg0KBQQDAgQEEgQgCB8bCgwKBQQDAgQFEgMgCA4KDAoFBAMCBAESAyAPFgoMCgUEAwIEAxIDIBkaCgsKBAQDAgUSAyEIHgoNCgUEAwIFBBIEIQggGwoMCgUEAwIFBRIDIQgOCgwKBQQDAgUBEgMhDxkKDAoFBAMCBQMSAyEcHQoLCgQEAwIGEgMiCBgKDQoFBAMCBgQSBCIIIR4KDAoFBAMCBgUSAyIIDgoMCgUEAwIGARIDIg8TCgwKBQQDAgYDEgMiFhcKCwoEBAMCBxIDIwgYCg0KBQQDAgcEEgQjCCIYCgwKBQQDAgcFEgMjCA4KDAoFBAMCBwESAyMPEwoMCgUEAwIHAxIDIxYXCgoKAgQEEgQmACwBCgoKAwQEARIDJggQCgsKBAQEAgASAycIGgoNCgUEBAIABBIEJwgmEgoMCgUEBAIABRIDJwgOCgwKBQQEAgABEgMnDxUKDAoFBAQCAAMSAycYGQoLCgQEBAIBEgMoCBkKDQoFBAQCAQQSBCgIJxoKDAoFBAQCAQUSAygIDgoMCgUEBAIBARIDKA8UCgwKBQQEAgEDEgMoFxgKCwoEBAQCAhIDKQgbCg0KBQQEAgIEEgQpCCgZCgwKBQQEAgIFEgMpCA4KDAoFBAQCAgESAykPFgoMCgUEBAICAxIDKRkaCgsKBAQEAgMSAyoIGwoNCgUEBAIDBBIEKggpGwoMCgUEBAIDBRIDKggOCgwKBQQEAgMBEgMqDxYKDAoFBAQCAwMSAyoZGgoLCgQEBAIEEgMrCBYKDQoFBAQCBAQSBCsIKhsKDAoFBAQCBAUSAysIDgoMCgUEBAIEARIDKw8RCgwKBQQEAgQDEgMrFBViBnByb3RvMwrGeQoVZ29vZ2xlL2FwaS9odHRwLnByb3RvEgpnb29nbGUuYXBpInkKBEh0dHASKgoFcnVsZXMYASADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgVydWxlcxJFCh9mdWxseV9kZWNvZGVfcmVzZXJ2ZWRfZXhwYW5zaW9uGAIgASgIUhxmdWxseURlY29kZVJlc2VydmVkRXhwYW5zaW9uItoCCghIdHRwUnVsZRIaCghzZWxlY3RvchgBIAEoCVIIc2VsZWN0b3ISEgoDZ2V0GAIgASgJSABSA2dldBISCgNwdXQYAyABKAlIAFIDcHV0EhQKBHBvc3QYBCABKAlIAFIEcG9zdBIYCgZkZWxldGUYBSABKAlIAFIGZGVsZXRlEhYKBXBhdGNoGAYgASgJSABSBXBhdGNoEjcKBmN1c3RvbRgIIAEoCzIdLmdvb2dsZS5hcGkuQ3VzdG9tSHR0cFBhdHRlcm5IAFIGY3VzdG9tEhIKBGJvZHkYByABKAlSBGJvZHkSIwoNcmVzcG9uc2VfYm9keRgMIAEoCVIMcmVzcG9uc2VCb2R5EkUKE2FkZGl0aW9uYWxfYmluZGluZ3MYCyADKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUhJhZGRpdGlvbmFsQmluZGluZ3NCCQoHcGF0dGVybiI7ChFDdXN0b21IdHRwUGF0dGVybhISCgRraW5kGAEgASgJUgRraW5kEhIKBHBhdGgYAiABKAlSBHBhdGhCagoOY29tLmdvb2dsZS5hcGlCCUh0dHBQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc/gBAaICBEdBUElKl3QKBxIFDwD7AgEKvgQKAQwSAw8AEjKzBCBDb3B5cmlnaHQgMjAxOCBHb29nbGUgTExDLgoKIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKCggKAQISAxEAEwoICgEIEgMTAB8KCQoCCB8SAxMAHwoICgEIEgMUAFgKCQoCCAsSAxQAWAoICgEIEgMVACIKCQoCCAoSAxUAIgoICgEIEgMWACoKCQoCCAgSAxYAKgoICgEIEgMXACcKCQoCCAESAxcAJwoICgEIEgMYACIKCQoCCCQSAxgAIgrNAQoCBAASBB0AKgEawAEgRGVmaW5lcyB0aGUgSFRUUCBjb25maWd1cmF0aW9uIGZvciBhbiBBUEkgc2VydmljZS4gSXQgY29udGFpbnMgYSBsaXN0IG9mCiBbSHR0cFJ1bGVdW2dvb2dsZS5hcGkuSHR0cFJ1bGVdLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG1hcHBpbmcgb2YgYW4gUlBDIG1ldGhvZAogdG8gb25lIG9yIG1vcmUgSFRUUCBSRVNUIEFQSSBtZXRob2RzLgoKCgoDBAABEgMdCAwKogEKBAQAAgASAyECHhqUASBBIGxpc3Qgb2YgSFRUUCBjb25maWd1cmF0aW9uIHJ1bGVzIHRoYXQgYXBwbHkgdG8gaW5kaXZpZHVhbCBBUEkgbWV0aG9kcy4KCiAqKk5PVEU6KiogQWxsIHNlcnZpY2UgY29uZmlndXJhdGlvbiBydWxlcyBmb2xsb3cgImxhc3Qgb25lIHdpbnMiIG9yZGVyLgoKDAoFBAACAAQSAyECCgoMCgUEAAIABhIDIQsTCgwKBQQAAgABEgMhFBkKDAoFBAACAAMSAyEcHQqTAgoEBAACARIDKQIrGoUCIFdoZW4gc2V0IHRvIHRydWUsIFVSTCBwYXRoIHBhcm1ldGVycyB3aWxsIGJlIGZ1bGx5IFVSSS1kZWNvZGVkIGV4Y2VwdCBpbgogY2FzZXMgb2Ygc2luZ2xlIHNlZ21lbnQgbWF0Y2hlcyBpbiByZXNlcnZlZCBleHBhbnNpb24sIHdoZXJlICIlMkYiIHdpbGwgYmUKIGxlZnQgZW5jb2RlZC4KCiBUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBub3QgZGVjb2RlIFJGQyA2NTcwIHJlc2VydmVkIGNoYXJhY3RlcnMgaW4gbXVsdGkKIHNlZ21lbnQgbWF0Y2hlcy4KCg0KBQQAAgEEEgQpAiEeCgwKBQQAAgEFEgMpAgYKDAoFBAACAQESAykHJgoMCgUEAAIBAxIDKSkqCrtTCgIEARIGvAIA8gIBGqxTICMgZ1JQQyBUcmFuc2NvZGluZwoKIGdSUEMgVHJhbnNjb2RpbmcgaXMgYSBmZWF0dXJlIGZvciBtYXBwaW5nIGJldHdlZW4gYSBnUlBDIG1ldGhvZCBhbmQgb25lIG9yCiBtb3JlIEhUVFAgUkVTVCBlbmRwb2ludHMuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIGJ1aWxkIGEgc2luZ2xlIEFQSSBzZXJ2aWNlCiB0aGF0IHN1cHBvcnRzIGJvdGggZ1JQQyBBUElzIGFuZCBSRVNUIEFQSXMuIE1hbnkgc3lzdGVtcywgaW5jbHVkaW5nIFtHb29nbGUKIEFQSXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGVhcGlzL2dvb2dsZWFwaXMpLAogW0Nsb3VkIEVuZHBvaW50c10oaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2VuZHBvaW50cyksIFtnUlBDCiBHYXRld2F5XShodHRwczovL2dpdGh1Yi5jb20vZ3JwYy1lY29zeXN0ZW0vZ3JwYy1nYXRld2F5KSwKIGFuZCBbRW52b3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9lbnZveXByb3h5L2Vudm95KSBwcm94eSBzdXBwb3J0IHRoaXMgZmVhdHVyZQogYW5kIHVzZSBpdCBmb3IgbGFyZ2Ugc2NhbGUgcHJvZHVjdGlvbiBzZXJ2aWNlcy4KCiBgSHR0cFJ1bGVgIGRlZmluZXMgdGhlIHNjaGVtYSBvZiB0aGUgZ1JQQy9SRVNUIG1hcHBpbmcuIFRoZSBtYXBwaW5nIHNwZWNpZmllcwogaG93IGRpZmZlcmVudCBwb3J0aW9ucyBvZiB0aGUgZ1JQQyByZXF1ZXN0IG1lc3NhZ2UgYXJlIG1hcHBlZCB0byB0aGUgVVJMCiBwYXRoLCBVUkwgcXVlcnkgcGFyYW1ldGVycywgYW5kIEhUVFAgcmVxdWVzdCBib2R5LiBJdCBhbHNvIGNvbnRyb2xzIGhvdyB0aGUKIGdSUEMgcmVzcG9uc2UgbWVzc2FnZSBpcyBtYXBwZWQgdG8gdGhlIEhUVFAgcmVzcG9uc2UgYm9keS4gYEh0dHBSdWxlYCBpcwogdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBhbiBgZ29vZ2xlLmFwaS5odHRwYCBhbm5vdGF0aW9uIG9uIHRoZSBnUlBDIG1ldGhvZC4KCiBFYWNoIG1hcHBpbmcgc3BlY2lmaWVzIGEgVVJMIHBhdGggdGVtcGxhdGUgYW5kIGFuIEhUVFAgbWV0aG9kLiBUaGUgcGF0aAogdGVtcGxhdGUgbWF5IHJlZmVyIHRvIG9uZSBvciBtb3JlIGZpZWxkcyBpbiB0aGUgZ1JQQyByZXF1ZXN0IG1lc3NhZ2UsIGFzIGxvbmcKIGFzIGVhY2ggZmllbGQgaXMgYSBub24tcmVwZWF0ZWQgZmllbGQgd2l0aCBhIHByaW1pdGl2ZSAobm9uLW1lc3NhZ2UpIHR5cGUuCiBUaGUgcGF0aCB0ZW1wbGF0ZSBjb250cm9scyBob3cgZmllbGRzIG9mIHRoZSByZXF1ZXN0IG1lc3NhZ2UgYXJlIG1hcHBlZCB0bwogdGhlIFVSTCBwYXRoLgoKIEV4YW1wbGU6CgogICAgIHNlcnZpY2UgTWVzc2FnaW5nIHsKICAgICAgIHJwYyBHZXRNZXNzYWdlKEdldE1lc3NhZ2VSZXF1ZXN0KSByZXR1cm5zIChNZXNzYWdlKSB7CiAgICAgICAgIG9wdGlvbiAoZ29vZ2xlLmFwaS5odHRwKSA9IHsKICAgICAgICAgICAgIGdldDogIi92MS97bmFtZT1tZXNzYWdlcy8qfSIKICAgICAgICAgfTsKICAgICAgIH0KICAgICB9CiAgICAgbWVzc2FnZSBHZXRNZXNzYWdlUmVxdWVzdCB7CiAgICAgICBzdHJpbmcgbmFtZSA9IDE7IC8vIE1hcHBlZCB0byBVUkwgcGF0aC4KICAgICB9CiAgICAgbWVzc2FnZSBNZXNzYWdlIHsKICAgICAgIHN0cmluZyB0ZXh0ID0gMTsgLy8gVGhlIHJlc291cmNlIGNvbnRlbnQuCiAgICAgfQoKIFRoaXMgZW5hYmxlcyBhbiBIVFRQIFJFU1QgdG8gZ1JQQyBtYXBwaW5nIGFzIGJlbG93OgoKIEhUVFAgfCBnUlBDCiAtLS0tLXwtLS0tLQogYEdFVCAvdjEvbWVzc2FnZXMvMTIzNDU2YCAgfCBgR2V0TWVzc2FnZShuYW1lOiAibWVzc2FnZXMvMTIzNDU2IilgCgogQW55IGZpZWxkcyBpbiB0aGUgcmVxdWVzdCBtZXNzYWdlIHdoaWNoIGFyZSBub3QgYm91bmQgYnkgdGhlIHBhdGggdGVtcGxhdGUKIGF1dG9tYXRpY2FsbHkgYmVjb21lIEhUVFAgcXVlcnkgcGFyYW1ldGVycyBpZiB0aGVyZSBpcyBubyBIVFRQIHJlcXVlc3QgYm9keS4KIEZvciBleGFtcGxlOgoKICAgICBzZXJ2aWNlIE1lc3NhZ2luZyB7CiAgICAgICBycGMgR2V0TWVzc2FnZShHZXRNZXNzYWdlUmVxdWVzdCkgcmV0dXJucyAoTWVzc2FnZSkgewogICAgICAgICBvcHRpb24gKGdvb2dsZS5hcGkuaHR0cCkgPSB7CiAgICAgICAgICAgICBnZXQ6Ii92MS9tZXNzYWdlcy97bWVzc2FnZV9pZH0iCiAgICAgICAgIH07CiAgICAgICB9CiAgICAgfQogICAgIG1lc3NhZ2UgR2V0TWVzc2FnZVJlcXVlc3QgewogICAgICAgbWVzc2FnZSBTdWJNZXNzYWdlIHsKICAgICAgICAgc3RyaW5nIHN1YmZpZWxkID0gMTsKICAgICAgIH0KICAgICAgIHN0cmluZyBtZXNzYWdlX2lkID0gMTsgLy8gTWFwcGVkIHRvIFVSTCBwYXRoLgogICAgICAgaW50NjQgcmV2aXNpb24gPSAyOyAgICAvLyBNYXBwZWQgdG8gVVJMIHF1ZXJ5IHBhcmFtZXRlciBgcmV2aXNpb25gLgogICAgICAgU3ViTWVzc2FnZSBzdWIgPSAzOyAgICAvLyBNYXBwZWQgdG8gVVJMIHF1ZXJ5IHBhcmFtZXRlciBgc3ViLnN1YmZpZWxkYC4KICAgICB9CgogVGhpcyBlbmFibGVzIGEgSFRUUCBKU09OIHRvIFJQQyBtYXBwaW5nIGFzIGJlbG93OgoKIEhUVFAgfCBnUlBDCiAtLS0tLXwtLS0tLQogYEdFVCAvdjEvbWVzc2FnZXMvMTIzNDU2P3JldmlzaW9uPTImc3ViLnN1YmZpZWxkPWZvb2AgfAogYEdldE1lc3NhZ2UobWVzc2FnZV9pZDogIjEyMzQ1NiIgcmV2aXNpb246IDIgc3ViOiBTdWJNZXNzYWdlKHN1YmZpZWxkOgogImZvbyIpKWAKCiBOb3RlIHRoYXQgZmllbGRzIHdoaWNoIGFyZSBtYXBwZWQgdG8gVVJMIHF1ZXJ5IHBhcmFtZXRlcnMgbXVzdCBoYXZlIGEKIHByaW1pdGl2ZSB0eXBlIG9yIGEgcmVwZWF0ZWQgcHJpbWl0aXZlIHR5cGUgb3IgYSBub24tcmVwZWF0ZWQgbWVzc2FnZSB0eXBlLgogSW4gdGhlIGNhc2Ugb2YgYSByZXBlYXRlZCB0eXBlLCB0aGUgcGFyYW1ldGVyIGNhbiBiZSByZXBlYXRlZCBpbiB0aGUgVVJMCiBhcyBgLi4uP3BhcmFtPUEmcGFyYW09QmAuIEluIHRoZSBjYXNlIG9mIGEgbWVzc2FnZSB0eXBlLCBlYWNoIGZpZWxkIG9mIHRoZQogbWVzc2FnZSBpcyBtYXBwZWQgdG8gYSBzZXBhcmF0ZSBwYXJhbWV0ZXIsIHN1Y2ggYXMKIGAuLi4/Zm9vLmE9QSZmb28uYj1CJmZvby5jPUNgLgoKIEZvciBIVFRQIG1ldGhvZHMgdGhhdCBhbGxvdyBhIHJlcXVlc3QgYm9keSwgdGhlIGBib2R5YCBmaWVsZAogc3BlY2lmaWVzIHRoZSBtYXBwaW5nLiBDb25zaWRlciBhIFJFU1QgdXBkYXRlIG1ldGhvZCBvbiB0aGUKIG1lc3NhZ2UgcmVzb3VyY2UgY29sbGVjdGlvbjoKCiAgICAgc2VydmljZSBNZXNzYWdpbmcgewogICAgICAgcnBjIFVwZGF0ZU1lc3NhZ2UoVXBkYXRlTWVzc2FnZVJlcXVlc3QpIHJldHVybnMgKE1lc3NhZ2UpIHsKICAgICAgICAgb3B0aW9uIChnb29nbGUuYXBpLmh0dHApID0gewogICAgICAgICAgIHBhdGNoOiAiL3YxL21lc3NhZ2VzL3ttZXNzYWdlX2lkfSIKICAgICAgICAgICBib2R5OiAibWVzc2FnZSIKICAgICAgICAgfTsKICAgICAgIH0KICAgICB9CiAgICAgbWVzc2FnZSBVcGRhdGVNZXNzYWdlUmVxdWVzdCB7CiAgICAgICBzdHJpbmcgbWVzc2FnZV9pZCA9IDE7IC8vIG1hcHBlZCB0byB0aGUgVVJMCiAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSAyOyAgIC8vIG1hcHBlZCB0byB0aGUgYm9keQogICAgIH0KCiBUaGUgZm9sbG93aW5nIEhUVFAgSlNPTiB0byBSUEMgbWFwcGluZyBpcyBlbmFibGVkLCB3aGVyZSB0aGUKIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBKU09OIGluIHRoZSByZXF1ZXN0IGJvZHkgaXMgZGV0ZXJtaW5lZCBieQogcHJvdG9zIEpTT04gZW5jb2Rpbmc6CgogSFRUUCB8IGdSUEMKIC0tLS0tfC0tLS0tCiBgUEFUQ0ggL3YxL21lc3NhZ2VzLzEyMzQ1NiB7ICJ0ZXh0IjogIkhpISIgfWAgfCBgVXBkYXRlTWVzc2FnZShtZXNzYWdlX2lkOgogIjEyMzQ1NiIgbWVzc2FnZSB7IHRleHQ6ICJIaSEiIH0pYAoKIFRoZSBzcGVjaWFsIG5hbWUgYCpgIGNhbiBiZSB1c2VkIGluIHRoZSBib2R5IG1hcHBpbmcgdG8gZGVmaW5lIHRoYXQKIGV2ZXJ5IGZpZWxkIG5vdCBib3VuZCBieSB0aGUgcGF0aCB0ZW1wbGF0ZSBzaG91bGQgYmUgbWFwcGVkIHRvIHRoZQogcmVxdWVzdCBib2R5LiAgVGhpcyBlbmFibGVzIHRoZSBmb2xsb3dpbmcgYWx0ZXJuYXRpdmUgZGVmaW5pdGlvbiBvZgogdGhlIHVwZGF0ZSBtZXRob2Q6CgogICAgIHNlcnZpY2UgTWVzc2FnaW5nIHsKICAgICAgIHJwYyBVcGRhdGVNZXNzYWdlKE1lc3NhZ2UpIHJldHVybnMgKE1lc3NhZ2UpIHsKICAgICAgICAgb3B0aW9uIChnb29nbGUuYXBpLmh0dHApID0gewogICAgICAgICAgIHBhdGNoOiAiL3YxL21lc3NhZ2VzL3ttZXNzYWdlX2lkfSIKICAgICAgICAgICBib2R5OiAiKiIKICAgICAgICAgfTsKICAgICAgIH0KICAgICB9CiAgICAgbWVzc2FnZSBNZXNzYWdlIHsKICAgICAgIHN0cmluZyBtZXNzYWdlX2lkID0gMTsKICAgICAgIHN0cmluZyB0ZXh0ID0gMjsKICAgICB9CgoKIFRoZSBmb2xsb3dpbmcgSFRUUCBKU09OIHRvIFJQQyBtYXBwaW5nIGlzIGVuYWJsZWQ6CgogSFRUUCB8IGdSUEMKIC0tLS0tfC0tLS0tCiBgUEFUQ0ggL3YxL21lc3NhZ2VzLzEyMzQ1NiB7ICJ0ZXh0IjogIkhpISIgfWAgfCBgVXBkYXRlTWVzc2FnZShtZXNzYWdlX2lkOgogIjEyMzQ1NiIgdGV4dDogIkhpISIpYAoKIE5vdGUgdGhhdCB3aGVuIHVzaW5nIGAqYCBpbiB0aGUgYm9keSBtYXBwaW5nLCBpdCBpcyBub3QgcG9zc2libGUgdG8KIGhhdmUgSFRUUCBwYXJhbWV0ZXJzLCBhcyBhbGwgZmllbGRzIG5vdCBib3VuZCBieSB0aGUgcGF0aCBlbmQgaW4KIHRoZSBib2R5LiBUaGlzIG1ha2VzIHRoaXMgb3B0aW9uIG1vcmUgcmFyZWx5IHVzZWQgaW4gcHJhY3RpY2Ugd2hlbgogZGVmaW5pbmcgUkVTVCBBUElzLiBUaGUgY29tbW9uIHVzYWdlIG9mIGAqYCBpcyBpbiBjdXN0b20gbWV0aG9kcwogd2hpY2ggZG9uJ3QgdXNlIHRoZSBVUkwgYXQgYWxsIGZvciB0cmFuc2ZlcnJpbmcgZGF0YS4KCiBJdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUgbXVsdGlwbGUgSFRUUCBtZXRob2RzIGZvciBvbmUgUlBDIGJ5IHVzaW5nCiB0aGUgYGFkZGl0aW9uYWxfYmluZGluZ3NgIG9wdGlvbi4gRXhhbXBsZToKCiAgICAgc2VydmljZSBNZXNzYWdpbmcgewogICAgICAgcnBjIEdldE1lc3NhZ2UoR2V0TWVzc2FnZVJlcXVlc3QpIHJldHVybnMgKE1lc3NhZ2UpIHsKICAgICAgICAgb3B0aW9uIChnb29nbGUuYXBpLmh0dHApID0gewogICAgICAgICAgIGdldDogIi92MS9tZXNzYWdlcy97bWVzc2FnZV9pZH0iCiAgICAgICAgICAgYWRkaXRpb25hbF9iaW5kaW5ncyB7CiAgICAgICAgICAgICBnZXQ6ICIvdjEvdXNlcnMve3VzZXJfaWR9L21lc3NhZ2VzL3ttZXNzYWdlX2lkfSIKICAgICAgICAgICB9CiAgICAgICAgIH07CiAgICAgICB9CiAgICAgfQogICAgIG1lc3NhZ2UgR2V0TWVzc2FnZVJlcXVlc3QgewogICAgICAgc3RyaW5nIG1lc3NhZ2VfaWQgPSAxOwogICAgICAgc3RyaW5nIHVzZXJfaWQgPSAyOwogICAgIH0KCiBUaGlzIGVuYWJsZXMgdGhlIGZvbGxvd2luZyB0d28gYWx0ZXJuYXRpdmUgSFRUUCBKU09OIHRvIFJQQyBtYXBwaW5nczoKCiBIVFRQIHwgZ1JQQwogLS0tLS18LS0tLS0KIGBHRVQgL3YxL21lc3NhZ2VzLzEyMzQ1NmAgfCBgR2V0TWVzc2FnZShtZXNzYWdlX2lkOiAiMTIzNDU2IilgCiBgR0VUIC92MS91c2Vycy9tZS9tZXNzYWdlcy8xMjM0NTZgIHwgYEdldE1lc3NhZ2UodXNlcl9pZDogIm1lIiBtZXNzYWdlX2lkOgogIjEyMzQ1NiIpYAoKICMjIFJ1bGVzIGZvciBIVFRQIG1hcHBpbmcKCiAxLiBMZWFmIHJlcXVlc3QgZmllbGRzIChyZWN1cnNpdmUgZXhwYW5zaW9uIG5lc3RlZCBtZXNzYWdlcyBpbiB0aGUgcmVxdWVzdAogICAgbWVzc2FnZSkgYXJlIGNsYXNzaWZpZWQgaW50byB0aHJlZSBjYXRlZ29yaWVzOgogICAgLSBGaWVsZHMgcmVmZXJyZWQgYnkgdGhlIHBhdGggdGVtcGxhdGUuIFRoZXkgYXJlIHBhc3NlZCB2aWEgdGhlIFVSTCBwYXRoLgogICAgLSBGaWVsZHMgcmVmZXJyZWQgYnkgdGhlIFtIdHRwUnVsZS5ib2R5XVtnb29nbGUuYXBpLkh0dHBSdWxlLmJvZHldLiBUaGV5CiAgICBhcmUgcGFzc2VkIHZpYSB0aGUgSFRUUAogICAgICByZXF1ZXN0IGJvZHkuCiAgICAtIEFsbCBvdGhlciBmaWVsZHMgYXJlIHBhc3NlZCB2aWEgdGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLCBhbmQgdGhlCiAgICAgIHBhcmFtZXRlciBuYW1lIGlzIHRoZSBmaWVsZCBwYXRoIGluIHRoZSByZXF1ZXN0IG1lc3NhZ2UuIEEgcmVwZWF0ZWQKICAgICAgZmllbGQgY2FuIGJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlIHF1ZXJ5IHBhcmFtZXRlcnMgdW5kZXIgdGhlIHNhbWUKICAgICAgbmFtZS4KICAyLiBJZiBbSHR0cFJ1bGUuYm9keV1bZ29vZ2xlLmFwaS5IdHRwUnVsZS5ib2R5XSBpcyAiKiIsIHRoZXJlIGlzIG5vIFVSTAogIHF1ZXJ5IHBhcmFtZXRlciwgYWxsIGZpZWxkcwogICAgIGFyZSBwYXNzZWQgdmlhIFVSTCBwYXRoIGFuZCBIVFRQIHJlcXVlc3QgYm9keS4KICAzLiBJZiBbSHR0cFJ1bGUuYm9keV1bZ29vZ2xlLmFwaS5IdHRwUnVsZS5ib2R5XSBpcyBvbWl0dGVkLCB0aGVyZSBpcyBubyBIVFRQCiAgcmVxdWVzdCBib2R5LCBhbGwKICAgICBmaWVsZHMgYXJlIHBhc3NlZCB2aWEgVVJMIHBhdGggYW5kIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLgoKICMjIyBQYXRoIHRlbXBsYXRlIHN5bnRheAoKICAgICBUZW1wbGF0ZSA9ICIvIiBTZWdtZW50cyBbIFZlcmIgXSA7CiAgICAgU2VnbWVudHMgPSBTZWdtZW50IHsgIi8iIFNlZ21lbnQgfSA7CiAgICAgU2VnbWVudCAgPSAiKiIgfCAiKioiIHwgTElURVJBTCB8IFZhcmlhYmxlIDsKICAgICBWYXJpYWJsZSA9ICJ7IiBGaWVsZFBhdGggWyAiPSIgU2VnbWVudHMgXSAifSIgOwogICAgIEZpZWxkUGF0aCA9IElERU5UIHsgIi4iIElERU5UIH0gOwogICAgIFZlcmIgICAgID0gIjoiIExJVEVSQUwgOwoKIFRoZSBzeW50YXggYCpgIG1hdGNoZXMgYSBzaW5nbGUgVVJMIHBhdGggc2VnbWVudC4gVGhlIHN5bnRheCBgKipgIG1hdGNoZXMKIHplcm8gb3IgbW9yZSBVUkwgcGF0aCBzZWdtZW50cywgd2hpY2ggbXVzdCBiZSB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBVUkwgcGF0aAogZXhjZXB0IHRoZSBgVmVyYmAuCgogVGhlIHN5bnRheCBgVmFyaWFibGVgIG1hdGNoZXMgcGFydCBvZiB0aGUgVVJMIHBhdGggYXMgc3BlY2lmaWVkIGJ5IGl0cwogdGVtcGxhdGUuIEEgdmFyaWFibGUgdGVtcGxhdGUgbXVzdCBub3QgY29udGFpbiBvdGhlciB2YXJpYWJsZXMuIElmIGEgdmFyaWFibGUKIG1hdGNoZXMgYSBzaW5nbGUgcGF0aCBzZWdtZW50LCBpdHMgdGVtcGxhdGUgbWF5IGJlIG9taXR0ZWQsIGUuZy4gYHt2YXJ9YAogaXMgZXF1aXZhbGVudCB0byBge3Zhcj0qfWAuCgogVGhlIHN5bnRheCBgTElURVJBTGAgbWF0Y2hlcyBsaXRlcmFsIHRleHQgaW4gdGhlIFVSTCBwYXRoLiBJZiB0aGUgYExJVEVSQUxgCiBjb250YWlucyBhbnkgcmVzZXJ2ZWQgY2hhcmFjdGVyLCBzdWNoIGNoYXJhY3RlcnMgc2hvdWxkIGJlIHBlcmNlbnQtZW5jb2RlZAogYmVmb3JlIHRoZSBtYXRjaGluZy4KCiBJZiBhIHZhcmlhYmxlIGNvbnRhaW5zIGV4YWN0bHkgb25lIHBhdGggc2VnbWVudCwgc3VjaCBhcyBgInt2YXJ9ImAgb3IKIGAie3Zhcj0qfSJgLCB3aGVuIHN1Y2ggYSB2YXJpYWJsZSBpcyBleHBhbmRlZCBpbnRvIGEgVVJMIHBhdGggb24gdGhlIGNsaWVudAogc2lkZSwgYWxsIGNoYXJhY3RlcnMgZXhjZXB0IGBbLV8ufjAtOWEtekEtWl1gIGFyZSBwZXJjZW50LWVuY29kZWQuIFRoZQogc2VydmVyIHNpZGUgZG9lcyB0aGUgcmV2ZXJzZSBkZWNvZGluZy4gU3VjaCB2YXJpYWJsZXMgc2hvdyB1cCBpbiB0aGUKIFtEaXNjb3ZlcnkKIERvY3VtZW50XShodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9kaXNjb3ZlcnkvdjEvcmVmZXJlbmNlL2FwaXMpIGFzCiBge3Zhcn1gLgoKIElmIGEgdmFyaWFibGUgY29udGFpbnMgbXVsdGlwbGUgcGF0aCBzZWdtZW50cywgc3VjaCBhcyBgInt2YXI9Zm9vLyp9ImAKIG9yIGAie3Zhcj0qKn0iYCwgd2hlbiBzdWNoIGEgdmFyaWFibGUgaXMgZXhwYW5kZWQgaW50byBhIFVSTCBwYXRoIG9uIHRoZQogY2xpZW50IHNpZGUsIGFsbCBjaGFyYWN0ZXJzIGV4Y2VwdCBgWy1fLn4vMC05YS16QS1aXWAgYXJlIHBlcmNlbnQtZW5jb2RlZC4KIFRoZSBzZXJ2ZXIgc2lkZSBkb2VzIHRoZSByZXZlcnNlIGRlY29kaW5nLCBleGNlcHQgIiUyRiIgYW5kICIlMmYiIGFyZSBsZWZ0CiB1bmNoYW5nZWQuIFN1Y2ggdmFyaWFibGVzIHNob3cgdXAgaW4gdGhlCiBbRGlzY292ZXJ5CiBEb2N1bWVudF0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vZGlzY292ZXJ5L3YxL3JlZmVyZW5jZS9hcGlzKSBhcwogYHsrdmFyfWAuCgogIyMgVXNpbmcgZ1JQQyBBUEkgU2VydmljZSBDb25maWd1cmF0aW9uCgogZ1JQQyBBUEkgU2VydmljZSBDb25maWd1cmF0aW9uIChzZXJ2aWNlIGNvbmZpZykgaXMgYSBjb25maWd1cmF0aW9uIGxhbmd1YWdlCiBmb3IgY29uZmlndXJpbmcgYSBnUlBDIHNlcnZpY2UgdG8gYmVjb21lIGEgdXNlci1mYWNpbmcgcHJvZHVjdC4gVGhlCiBzZXJ2aWNlIGNvbmZpZyBpcyBzaW1wbHkgdGhlIFlBTUwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGBnb29nbGUuYXBpLlNlcnZpY2VgCiBwcm90byBtZXNzYWdlLgoKIEFzIGFuIGFsdGVybmF0aXZlIHRvIGFubm90YXRpbmcgeW91ciBwcm90byBmaWxlLCB5b3UgY2FuIGNvbmZpZ3VyZSBnUlBDCiB0cmFuc2NvZGluZyBpbiB5b3VyIHNlcnZpY2UgY29uZmlnIFlBTUwgZmlsZXMuIFlvdSBkbyB0aGlzIGJ5IHNwZWNpZnlpbmcgYQogYEh0dHBSdWxlYCB0aGF0IG1hcHMgdGhlIGdSUEMgbWV0aG9kIHRvIGEgUkVTVCBlbmRwb2ludCwgYWNoaWV2aW5nIHRoZSBzYW1lCiBlZmZlY3QgYXMgdGhlIHByb3RvIGFubm90YXRpb24uIFRoaXMgY2FuIGJlIHBhcnRpY3VsYXJseSB1c2VmdWwgaWYgeW91CiBoYXZlIGEgcHJvdG8gdGhhdCBpcyByZXVzZWQgaW4gbXVsdGlwbGUgc2VydmljZXMuIE5vdGUgdGhhdCBhbnkgdHJhbnNjb2RpbmcKIHNwZWNpZmllZCBpbiB0aGUgc2VydmljZSBjb25maWcgd2lsbCBvdmVycmlkZSBhbnkgbWF0Y2hpbmcgdHJhbnNjb2RpbmcKIGNvbmZpZ3VyYXRpb24gaW4gdGhlIHByb3RvLgoKIEV4YW1wbGU6CgogICAgIGh0dHA6CiAgICAgICBydWxlczoKICAgICAgICAgIyBTZWxlY3RzIGEgZ1JQQyBtZXRob2QgYW5kIGFwcGxpZXMgSHR0cFJ1bGUgdG8gaXQuCiAgICAgICAgIC0gc2VsZWN0b3I6IGV4YW1wbGUudjEuTWVzc2FnaW5nLkdldE1lc3NhZ2UKICAgICAgICAgICBnZXQ6IC92MS9tZXNzYWdlcy97bWVzc2FnZV9pZH0ve3N1Yi5zdWJmaWVsZH0KCiAjIyBTcGVjaWFsIG5vdGVzCgogV2hlbiBnUlBDIFRyYW5zY29kaW5nIGlzIHVzZWQgdG8gbWFwIGEgZ1JQQyB0byBKU09OIFJFU1QgZW5kcG9pbnRzLCB0aGUKIHByb3RvIHRvIEpTT04gY29udmVyc2lvbiBtdXN0IGZvbGxvdyB0aGUgW3Byb3RvMwogc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy9kb2NzL3Byb3RvMyNqc29uKS4KCiBXaGlsZSB0aGUgc2luZ2xlIHNlZ21lbnQgdmFyaWFibGUgZm9sbG93cyB0aGUgc2VtYW50aWNzIG9mCiBbUkZDIDY1NzBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTcwKSBTZWN0aW9uIDMuMi4yIFNpbXBsZSBTdHJpbmcKIEV4cGFuc2lvbiwgdGhlIG11bHRpIHNlZ21lbnQgdmFyaWFibGUgKipkb2VzIG5vdCoqIGZvbGxvdyBSRkMgNjU3MCBTZWN0aW9uCiAzLjIuMyBSZXNlcnZlZCBFeHBhbnNpb24uIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgUmVzZXJ2ZWQgRXhwYW5zaW9uCiBkb2VzIG5vdCBleHBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzIGxpa2UgYD9gIGFuZCBgI2AsIHdoaWNoIHdvdWxkIGxlYWQKIHRvIGludmFsaWQgVVJMcy4gQXMgdGhlIHJlc3VsdCwgZ1JQQyBUcmFuc2NvZGluZyB1c2VzIGEgY3VzdG9tIGVuY29kaW5nCiBmb3IgbXVsdGkgc2VnbWVudCB2YXJpYWJsZXMuCgogVGhlIHBhdGggdmFyaWFibGVzICoqbXVzdCBub3QqKiByZWZlciB0byBhbnkgcmVwZWF0ZWQgb3IgbWFwcGVkIGZpZWxkLAogYmVjYXVzZSBjbGllbnQgbGlicmFyaWVzIGFyZSBub3QgY2FwYWJsZSBvZiBoYW5kbGluZyBzdWNoIHZhcmlhYmxlIGV4cGFuc2lvbi4KCiBUaGUgcGF0aCB2YXJpYWJsZXMgKiptdXN0IG5vdCoqIGNhcHR1cmUgdGhlIGxlYWRpbmcgIi8iIGNoYXJhY3Rlci4gVGhlIHJlYXNvbgogaXMgdGhhdCB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2UgInt2YXJ9IiBkb2VzIG5vdCBjYXB0dXJlIHRoZSBsZWFkaW5nICIvIgogY2hhcmFjdGVyLiBGb3IgY29uc2lzdGVuY3ksIGFsbCBwYXRoIHZhcmlhYmxlcyBtdXN0IHNoYXJlIHRoZSBzYW1lIGJlaGF2aW9yLgoKIFJlcGVhdGVkIG1lc3NhZ2UgZmllbGRzIG11c3Qgbm90IGJlIG1hcHBlZCB0byBVUkwgcXVlcnkgcGFyYW1ldGVycywgYmVjYXVzZQogbm8gY2xpZW50IGxpYnJhcnkgY2FuIHN1cHBvcnQgc3VjaCBjb21wbGljYXRlZCBtYXBwaW5nLgoKIElmIGFuIEFQSSBuZWVkcyB0byB1c2UgYSBKU09OIGFycmF5IGZvciByZXF1ZXN0IG9yIHJlc3BvbnNlIGJvZHksIGl0IGNhbiBtYXAKIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlIGJvZHkgdG8gYSByZXBlYXRlZCBmaWVsZC4gSG93ZXZlciwgc29tZSBnUlBDCiBUcmFuc2NvZGluZyBpbXBsZW1lbnRhdGlvbnMgbWF5IG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KCgsKAwQBARIEvAIIEAqPAQoEBAECABIEwQICFhqAASBTZWxlY3RzIGEgbWV0aG9kIHRvIHdoaWNoIHRoaXMgcnVsZSBhcHBsaWVzLgoKIFJlZmVyIHRvIFtzZWxlY3Rvcl1bZ29vZ2xlLmFwaS5Eb2N1bWVudGF0aW9uUnVsZS5zZWxlY3Rvcl0gZm9yIHN5bnRheAogZGV0YWlscy4KCg8KBQQBAgAEEgbBAgK8AhIKDQoFBAECAAUSBMECAggKDQoFBAECAAESBMECCREKDQoFBAECAAMSBMECFBUK0AEKBAQBCAASBsYCAtwCAxq/ASBEZXRlcm1pbmVzIHRoZSBVUkwgcGF0dGVybiBpcyBtYXRjaGVkIGJ5IHRoaXMgcnVsZXMuIFRoaXMg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BOwCCRYKDQoFBAECCAMSBOwCGRsKuwEKBAQBAgkSBPECAi0arAEgQWRkaXRpb25hbCBIVFRQIGJpbmRpbmdzIGZvciB0aGUgc2VsZWN0b3IuIE5lc3RlZCBiaW5kaW5ncyBtdXN0CiBub3QgY29udGFpbiBhbiBgYWRkaXRpb25hbF9iaW5kaW5nc2AgZmllbGQgdGhlbXNlbHZlcyAodGhhdCBpcywKIHRoZSBuZXN0aW5nIG1heSBvbmx5IGJlIG9uZSBsZXZlbCBkZWVwKS4KCg0KBQQBAgkEEgTxAgIKCg0KBQQBAgkGEgTxAgsTCg0KBQQBAgkBEgTxAhQnCg0KBQQBAgkDEgTxAiosCkcKAgQCEgb1AgD7AgEaOSBBIGN1c3RvbSBwYXR0ZXJuIGlzIHVzZWQgZm9yIGRlZmluaW5nIGN1c3RvbSBIVFRQIHZlcmIuCgoLCgMEAgESBPUCCBkKMgoEBAICABIE9wICEhokIFRoZSBuYW1lIG9mIHRoaXMgY3VzdG9tIEhUVFAgdmVyYi4KCg8KBQQCAgAEEgb3AgL1AhsKDQoFBAICAAUSBPcCAggKDQoFBAICAAESBPcCCQ0KDQoFBAICAAMSBPcCEBEKNQoEBAICARIE+gICEhonIFRoZSBwYXRoIG1hdGNoZWQgYnkgdGhpcyBjdXN0b20gdmVyYi4KCg8KBQQCAgEEEgb6AgL3AhIKDQoFBAICAQUSBPoCAggKDQoFBAICAQESBPoCCQ0KDQoFBAICAQMSBPoCEBFiBnByb3RvMwrnCAocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxIKZ29vZ2xlLmFwaRoVZ29vZ2xlL2FwaS9odHRwLnByb3RvGiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzpLCgRodHRwEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYsMq8IiABKAsyFC5nb29nbGUuYXBpLkh0dHBSdWxlUgRodHRwQm4KDmNvbS5nb29nbGUuYXBpQhBBbm5vdGF0aW9uc1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSUq8BgoGEgQOAB4BCsIECgEMEgMOABIytwQgQ29weXJpZ2h0IChjKSAyMDE1LCBHb29nbGUgSW5jLgoKIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKCAoBAhIDEAATCgkKAgMAEgMSAB8KCQoCAwESAxMAKgoICgEIEgMVAFgKCQoCCAsSAxUAWAoICgEIEgMWACIKCQoCCAoSAxYAIgoICgEIEgMXADEKCQoCCAgSAxcAMQoICgEIEgMYACcKCQoCCAESAxgAJwoICgEIEgMZACIKCQoCCCQSAxkAIgoJCgEHEgQbAB4BChwKAgcAEgMdAhsaESBTZWUgYEh0dHBSdWxlYC4KCgoKAwcAAhIDGwckCgsKAwcABBIEHQIbJgoKCgMHAAYSAx0CCgoKCgMHAAESAx0LDwoKCgMHAAMSAx0SGmIGcHJvdG8zCsH7Bwofdm9sdGhhX3Byb3Rvcy9vcGVuZmxvd18xMy5wcm90bxILb3BlbmZsb3dfMTMaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aIHZvbHRoYV9wcm90b3MveWFuZ19vcHRpb25zLnByb3RvImMKCm9mcF9oZWFkZXISGAoHdmVyc2lvbhgBIAEoDVIHdmVyc2lvbhIpCgR0eXBlGAIgASgOMhUub3BlbmZsb3dfMTMub2ZwX3R5cGVSBHR5cGUSEAoDeGlkGAMgASgNUgN4aWQiqwEKFW9mcF9oZWxsb19lbGVtX2hlYWRlchI0CgR0eXBlGAEgASgOMiAub3BlbmZsb3dfMTMub2ZwX2hlbGxvX2VsZW1fdHlwZVIEdHlwZRJRCg12ZXJzaW9uYml0bWFwGAIgASgLMikub3BlbmZsb3dfMTMub2ZwX2hlbGxvX2VsZW1fdmVyc2lvbmJpdG1hcEgAUg12ZXJzaW9uYml0bWFwQgkKB2VsZW1lbnQiOAocb2ZwX2hlbGxvX2VsZW1fdmVyc2lvbmJpdG1hcBIYCgdiaXRtYXBzGAIgAygNUgdiaXRtYXBzIksKCW9mcF9oZWxsbxI+CghlbGVtZW50cxgBIAMoCzIiLm9wZW5mbG93XzEzLm9mcF9oZWxsb19lbGVtX2hlYWRlclIIZWxlbWVudHMiTQoRb2ZwX3N3aXRjaF9jb25maWcSFAoFZmxhZ3MYASABKA1SBWZsYWdzEiIKDW1pc3Nfc2VuZF9sZW4YAiABKA1SC21pc3NTZW5kTGVuIkIKDW9mcF90YWJsZV9tb2QSGQoIdGFibGVfaWQYASABKA1SB3RhYmxlSWQSFgoGY29uZmlnGAIgASgNUgZjb25maWcioAIKCG9mcF9wb3J0EhcKB3BvcnRfbm8YASABKA1SBnBvcnRObxIXCgdod19hZGRyGAIgAygNUgZod0FkZHISEgoEbmFtZRgDIAEoCVIEbmFtZRIWCgZjb25maWcYBCABKA1SBmNvbmZpZxIUCgVzdGF0ZRgFIAEoDVIFc3RhdGUSEgoEY3VychgGIAEoDVIEY3VychIeCgphZHZlcnRpc2VkGAcgASgNUgphZHZlcnRpc2VkEhwKCXN1cHBvcnRlZBgIIAEoDVIJc3VwcG9ydGVkEhIKBHBlZXIYCSABKA1SBHBlZXISHQoKY3Vycl9zcGVlZBgKIAEoDVIJY3VyclNwZWVkEhsKCW1heF9zcGVlZBgLIAEoDVIIbWF4U3BlZWQitQEKE29mcF9zd2l0Y2hfZmVhdHVyZXMSHwoLZGF0YXBhdGhfaWQYASABKARSCmRhdGFwYXRoSWQSGwoJbl9idWZmZXJzGAIgASgNUghuQnVmZmVycxIZCghuX3RhYmxlcxgDIAEoDVIHblRhYmxlcxIhCgxhdXhpbGlhcnlfaWQYBCABKA1SC2F1eGlsaWFyeUlkEiIKDGNhcGFiaWxpdGllcxgFIAEoDVIMY2FwYWJpbGl0aWVzInIKD29mcF9wb3J0X3N0YXR1cxI0CgZyZWFzb24YASABKA4yHC5vcGVuZmxvd18xMy5vZnBfcG9ydF9yZWFzb25SBnJlYXNvbhIpCgRkZXNjGAIgASgLMhUub3BlbmZsb3dfMTMub2ZwX3BvcnRSBGRlc2MiigEKDG9mcF9wb3J0X21vZBIXCgdwb3J0X25vGAEgASgNUgZwb3J0Tm8SFwoHaHdfYWRkchgCIAMoDVIGaHdBZGRyEhYKBmNvbmZpZxgDIAEoDVIGY29uZmlnEhIKBG1hc2sYBCABKA1SBG1hc2sSHAoJYWR2ZXJ0aXNlGAUgASgNUglhZHZlcnRpc2UidwoJb2ZwX21hdGNoEi8KBHR5cGUYASABKA4yGy5vcGVuZmxvd18xMy5vZnBfbWF0Y2hfdHlwZVIEdHlwZRI5CgpveG1fZmllbGRzGAIgAygLMhoub3BlbmZsb3dfMTMub2ZwX294bV9maWVsZFIJb3htRmllbGRzIuoBCg1vZnBfb3htX2ZpZWxkEjcKCW94bV9jbGFzcxgBIAEoDjIaLm9wZW5mbG93XzEzLm9mcF9veG1fY2xhc3NSCG94bUNsYXNzEj0KCW9mYl9maWVsZBgEIAEoCzIeLm9wZW5mbG93XzEzLm9mcF9veG1fb2ZiX2ZpZWxkSABSCG9mYkZpZWxkElgKEmV4cGVyaW1lbnRlcl9maWVsZBgFIAEoCzInLm9wZW5mbG93XzEzLm9mcF9veG1fZXhwZXJpbWVudGVyX2ZpZWxkSABSEWV4cGVyaW1lbnRlckZpZWxkQgcKBWZpZWxkItcOChFvZnBfb3htX29mYl9maWVsZBI0CgR0eXBlGAEgASgOMiAub3BlbmZsb3dfMTMub3htX29mYl9maWVsZF90eXBlc1IEdHlwZRIZCghoYXNfbWFzaxgCIAEoCFIHaGFzTWFzaxIUCgRwb3J0GAMgASgNSABSBHBvcnQSJQoNcGh5c2ljYWxfcG9ydBgEIAEoDUgAUgxwaHlzaWNhbFBvcnQSJwoOdGFibGVfbWV0YWRhdGEYBSABKARIAFINdGFibGVNZXRhZGF0YRIZCgdldGhfZHN0GAYgASgMSABSBmV0aERzdBIZCgdldGhfc3JjGAcgASgMSABSBmV0aFNyYxIbCghldGhfdHlwZRgIIAEoDUgAUgdldGhUeXBlEhsKCHZsYW5fdmlkGAkgASgNSABSB3ZsYW5WaWQSGwoIdmxhbl9wY3AYCiABKA1IAFIHdmxhblBjcBIZCgdpcF9kc2NwGAsgASgNSABSBmlwRHNjcBIXCgZpcF9lY24YDCABKA1IAFIFaXBFY24SGwoIaXBfcHJvdG8YDSABKA1IAFIHaXBQcm90bxIbCghpcHY0X3NyYxgOIAEoDUgAUgdpcHY0U3JjEhsKCGlwdjRfZHN0GA8gASgNSABSB2lwdjREc3QSGQoHdGNwX3NyYxgQIAEoDUgAUgZ0Y3BTcmMSGQoHdGNwX2RzdBgRIAEoDUgAUgZ0Y3BEc3QSGQoHdWRwX3NyYxgSIAEoDUgAUgZ1ZHBTcmMSGQoHdWRwX2RzdBgTIAEoDUgAUgZ1ZHBEc3QSGwoIc2N0cF9zcmMYFCABKA1IAFIHc2N0cFNyYxIbCghzY3RwX2RzdBgVIAEoDUgAUgdzY3RwRHN0EiEKC2ljbXB2NF90eXBlGBYgASgNSABSCmljbXB2NFR5cGUSIQoLaWNtcHY0X2NvZGUYFyABKA1IAFIKaWNtcHY0Q29kZRIXCgZhcnBfb3AYGCABKA1IAFIFYXJwT3ASGQoHYXJwX3NwYRgZIAEoDUgAUgZhcnBTcGESGQoHYXJwX3RwYRgaIAEoDUgAUgZhcnBUcGESGQoHYXJwX3NoYRgbIAEoDEgAUgZhcnBTaGESGQoHYXJwX3RoYRgcIAEoDEgAUgZhcnBUaGESGwoIaXB2Nl9zcmMYHSABKAxIAFIHaXB2NlNyYxIbCghpcHY2X2RzdBgeIAEoDEgAUgdpcHY2RHN0EiEKC2lwdjZfZmxhYmVsGB8gASgNSABSCmlwdjZGbGFiZWwSIQoLaWNtcHY2X3R5cGUYICABKA1IAFIKaWNtcHY2VHlwZRIhCgtpY21wdjZfY29kZRghIAEoDUgAUgppY21wdjZDb2RlEiYKDmlwdjZfbmRfdGFyZ2V0GCIgASgMSABSDGlwdjZOZFRhcmdldBIgCgtpcHY2X25kX3NzbBgjIAEoDEgAUglpcHY2TmRTc2wSIAoLaXB2Nl9uZF90bGwYJCABKAxIAFIJaXB2Nk5kVGxsEh8KCm1wbHNfbGFiZWwYJSABKA1IAFIJbXBsc0xhYmVsEhkKB21wbHNfdGMYJiABKA1IAFIGbXBsc1RjEhsKCG1wbHNfYm9zGCcgASgNSABSB21wbHNCb3MSGwoIcGJiX2lzaWQYKCABKA1IAFIHcGJiSXNpZBIdCgl0dW5uZWxfaWQYKSABKARIAFIIdHVubmVsSWQSIQoLaXB2Nl9leHRoZHIYKiABKA1IAFIKaXB2NkV4dGhkchIwChN0YWJsZV9tZXRhZGF0YV9tYXNrGGkgASgESAFSEXRhYmxlTWV0YWRhdGFNYXNrEiIKDGV0aF9kc3RfbWFzaxhqIAEoDEgBUgpldGhEc3RNYXNrEiIKDGV0aF9zcmNfbWFzaxhrIAEoDEgBUgpldGhTcmNNYXNrEiQKDXZsYW5fdmlkX21hc2sYbSABKA1IAVILdmxhblZpZE1hc2sSJAoNaXB2NF9zcmNfbWFzaxhyIAEoDUgBUgtpcHY0U3JjTWFzaxIkCg1pcHY0X2RzdF9tYXNrGHMgASgNSAFSC2lwdjREc3RNYXNrEiIKDGFycF9zcGFfbWFzaxh9IAEoDUgBUgphcnBTcGFNYXNrEiIKDGFycF90cGFfbWFzaxh+IAEoDUgBUgphcnBUcGFNYXNrEiUKDWlwdjZfc3JjX21hc2sYgQEgASgMSAFSC2lwdjZTcmNNYXNrEiUKDWlwdjZfZHN0X21hc2sYggEgASgMSAFSC2lwdjZEc3RNYXNrEisKEGlwdjZfZmxhYmVsX21hc2sYgwEgASgNSAFSDmlwdjZGbGFiZWxNYXNrEiUKDXBiYl9pc2lkX21hc2sYjAEgASgNSAFSC3BiYklzaWRNYXNrEicKDnR1bm5lbF9pZF9tYXNrGI0BIAEoBEgBUgx0dW5uZWxJZE1hc2sSKwoQaXB2Nl9leHRoZHJfbWFzaxiOASABKA1IAVIOaXB2NkV4dGhkck1hc2tCBwoFdmFsdWVCBgoEbWFzayJfChpvZnBfb3htX2V4cGVyaW1lbnRlcl9maWVsZBIdCgpveG1faGVhZGVyGAEgASgNUglveG1IZWFkZXISIgoMZXhwZXJpbWVudGVyGAIgASgNUgxleHBlcmltZW50ZXIisgQKCm9mcF9hY3Rpb24SMAoEdHlwZRgBIAEoDjIcLm9wZW5mbG93XzEzLm9mcF9hY3Rpb25fdHlwZVIEdHlwZRI4CgZvdXRwdXQYAiABKAsyHi5vcGVuZmxvd18xMy5vZnBfYWN0aW9uX291dHB1dEgAUgZvdXRwdXQSPQoIbXBsc190dGwYAyABKAsyIC5vcGVuZmxvd18xMy5vZnBfYWN0aW9uX21wbHNfdHRsSABSB21wbHNUdGwSMgoEcHVzaBgEIAEoCzIcLm9wZW5mbG93XzEzLm9mcF9hY3Rpb25fcHVzaEgAUgRwdXNoEj0KCHBvcF9tcGxzGAUgASgLMiAub3BlbmZsb3dfMTMub2ZwX2FjdGlvbl9wb3BfbXBsc0gAUgdwb3BNcGxzEjUKBWdyb3VwGAYgASgLMh0ub3BlbmZsb3dfMTMub2ZwX2FjdGlvbl9ncm91cEgAUgVncm91cBI3CgZud190dGwYByABKAsyHi5vcGVuZmxvd18xMy5vZnBfYWN0aW9uX253X3R0bEgAUgVud1R0bBJACglzZXRfZmllbGQYCCABKAsyIS5vcGVuZmxvd18xMy5vZnBfYWN0aW9uX3NldF9maWVsZEgAUghzZXRGaWVsZBJKCgxleHBlcmltZW50ZXIYCSABKAsyJC5vcGVuZmxvd18xMy5vZnBfYWN0aW9uX2V4cGVyaW1lbnRlckgAUgxleHBlcmltZW50ZXJCCAoGYWN0aW9uIkAKEW9mcF9hY3Rpb25fb3V0cHV0EhIKBHBvcnQYASABKA1SBHBvcnQSFwoHbWF4X2xlbhgCIAEoDVIGbWF4TGVuIjAKE29mcF9hY3Rpb25fbXBsc190dGwSGQoIbXBsc190dGwYASABKA1SB21wbHNUdGwiLwoPb2ZwX2FjdGlvbl9wdXNoEhwKCWV0aGVydHlwZRgBIAEoDVIJZXRoZXJ0eXBlIjMKE29mcF9hY3Rpb25fcG9wX21wbHMSHAoJZXRoZXJ0eXBlGAEgASgNUglldGhlcnR5cGUiLQoQb2ZwX2FjdGlvbl9ncm91cBIZCghncm91cF9pZBgBIAEoDVIHZ3JvdXBJZCIqChFvZnBfYWN0aW9uX253X3R0bBIVCgZud190dGwYASABKA1SBW53VHRsIkgKFG9mcF9hY3Rpb25fc2V0X2ZpZWxkEjAKBWZpZWxkGAEgASgLMhoub3BlbmZsb3dfMTMub2ZwX294bV9maWVsZFIFZmllbGQiUQoXb2ZwX2FjdGlvbl9leHBlcmltZW50ZXISIgoMZXhwZXJpbWVudGVyGAEgASgNUgxleHBlcmltZW50ZXISEgoEZGF0YRgCIAEoDFIEZGF0YSKcAwoPb2ZwX2luc3RydWN0aW9uEhIKBHR5cGUYASABKA1SBHR5cGUSSAoKZ290b190YWJsZRgCIAEoCzInLm9wZW5mbG93XzEzLm9mcF9pbnN0cnVjdGlvbl9nb3RvX3RhYmxlSABSCWdvdG9UYWJsZRJUCg53cml0ZV9tZXRhZGF0YRgDIAEoCzIrLm9wZW5mbG93XzEzLm9mcF9pbnN0cnVjdGlvbl93cml0ZV9tZXRhZGF0YUgAUg13cml0ZU1ldGFkYXRhEkAKB2FjdGlvbnMYBCABKAsyJC5vcGVuZmxvd18xMy5vZnBfaW5zdHJ1Y3Rpb25fYWN0aW9uc0gAUgdhY3Rpb25zEjoKBW1ldGVyGAUgASgLMiIub3BlbmZsb3dfMTMub2ZwX2luc3RydWN0aW9uX21ldGVySABSBW1ldGVyEk8KDGV4cGVyaW1lbnRlchgGIAEoCzIpLm9wZW5mbG93XzEzLm9mcF9pbnN0cnVjdGlvbl9leHBlcmltZW50ZXJIAFIMZXhwZXJpbWVudGVyQgYKBGRhdGEiNwoab2ZwX2luc3RydWN0aW9uX2dvdG9fdGFibGUSGQoIdGFibGVfaWQYASABKA1SB3RhYmxlSWQiYQoeb2ZwX2luc3RydWN0aW9uX3dyaXRlX21ldGFkYXRhEhoKCG1ldGFkYXRhGAEgASgEUghtZXRhZGF0YRIjCg1tZXRhZGF0YV9tYXNrGAIgASgEUgxtZXRhZGF0YU1hc2siTAoXb2ZwX2luc3RydWN0aW9uX2FjdGlvbnMSMQoHYWN0aW9ucxgBIAMoCzIXLm9wZW5mbG93XzEzLm9mcF9hY3Rpb25SB2FjdGlvbnMiMgoVb2ZwX2luc3RydWN0aW9uX21ldGVyEhkKCG1ldGVyX2lkGAEgASgNUgdtZXRlcklkIlYKHG9mcF9pbnN0cnVjdGlvbl9leHBlcmltZW50ZXISIgoMZXhwZXJpbWVudGVyGAEgASgNUgxleHBlcmltZW50ZXISEgoEZGF0YRgCIAEoDFIEZGF0YSLcAwoMb2ZwX2Zsb3dfbW9kEhYKBmNvb2tpZRgBIAEoBFIGY29va2llEh8KC2Nvb2tpZV9tYXNrGAIgASgEUgpjb29raWVNYXNrEhkKCHRhYmxlX2lkGAMgASgNUgd0YWJsZUlkEjsKB2NvbW1hbmQYBCABKA4yIS5vcGVuZmxvd18xMy5vZnBfZmxvd19tb2RfY29tbWFuZFIHY29tbWFuZBIhCgxpZGxlX3RpbWVvdXQYBSABKA1SC2lkbGVUaW1lb3V0EiEKDGhhcmRfdGltZW91dBgGIAEoDVILaGFyZFRpbWVvdXQSGgoIcHJpb3JpdHkYByABKA1SCHByaW9yaXR5EhsKCWJ1ZmZlcl9pZBgIIAEoDVIIYnVmZmVySWQSGQoIb3V0X3BvcnQYCSABKA1SB291dFBvcnQSGwoJb3V0X2dyb3VwGAogASgNUghvdXRHcm91cBIUCgVmbGFncxgLIAEoDVIFZmxhZ3MSLAoFbWF0Y2gYDCABKAsyFi5vcGVuZmxvd18xMy5vZnBfbWF0Y2hSBW1hdGNoEkAKDGluc3RydWN0aW9ucxgNIAMoCzIcLm9wZW5mbG93XzEzLm9mcF9pbnN0cnVjdGlvblIMaW5zdHJ1Y3Rpb25zIpcBCgpvZnBfYnVja2V0EhYKBndlaWdodBgBIAEoDVIGd2VpZ2h0Eh0KCndhdGNoX3BvcnQYAiABKA1SCXdhdGNoUG9ydBIfCgt3YXRjaF9ncm91cBgDIAEoDVIKd2F0Y2hHcm91cBIxCgdhY3Rpb25zGAQgAygLMhcub3BlbmZsb3dfMTMub2ZwX2FjdGlvblIHYWN0aW9ucyLMAQoNb2ZwX2dyb3VwX21vZBI8Cgdjb21tYW5kGAEgASgOMiIub3BlbmZsb3dfMTMub2ZwX2dyb3VwX21vZF9jb21tYW5kUgdjb21tYW5kEi8KBHR5cGUYAiABKA4yGy5vcGVuZmxvd18xMy5vZnBfZ3JvdXBfdHlwZVIEdHlwZRIZCghncm91cF9pZBgDIAEoDVIHZ3JvdXBJZBIxCgdidWNrZXRzGAQgAygLMhcub3BlbmZsb3dfMTMub2ZwX2J1Y2tldFIHYnVja2V0cyKNAQoOb2ZwX3BhY2tldF9vdXQSGwoJYnVmZmVyX2lkGAEgASgNUghidWZmZXJJZBIXCgdpbl9wb3J0GAIgASgNUgZpblBvcnQSMQoHYWN0aW9ucxgDIAMoCzIXLm9wZW5mbG93XzEzLm9mcF9hY3Rpb25SB2FjdGlvbnMSEgoEZGF0YRgEIAEoDFIEZGF0YSLcAQoNb2ZwX3BhY2tldF9pbhIbCglidWZmZXJfaWQYASABKA1SCGJ1ZmZlcklkEjkKBnJlYXNvbhgCIAEoDjIhLm9wZW5mbG93XzEzLm9mcF9wYWNrZXRfaW5fcmVhc29uUgZyZWFzb24SGQoIdGFibGVfaWQYAyABKA1SB3RhYmxlSWQSFgoGY29va2llGAQgASgEUgZjb29raWUSLAoFbWF0Y2gYBSABKAsyFi5vcGVuZmxvd18xMy5vZnBfbWF0Y2hSBW1hdGNoEhIKBGRhdGEYBiABKAxSBGRhdGEinQMKEG9mcF9mbG93X3JlbW92ZWQSFgoGY29va2llGAEgASgEUgZjb29raWUSGgoIcHJpb3JpdHkYAiABKA1SCHByaW9yaXR5EjwKBnJlYXNvbhgDIAEoDjIkLm9wZW5mbG93XzEzLm9mcF9mbG93X3JlbW92ZWRfcmVhc29uUgZyZWFzb24SGQoIdGFibGVfaWQYBCABKA1SB3RhYmxlSWQSIQoMZHVyYXRpb25fc2VjGAUgASgNUgtkdXJhdGlvblNlYxIjCg1kdXJhdGlvbl9uc2VjGAYgASgNUgxkdXJhdGlvbk5zZWMSIQoMaWRsZV90aW1lb3V0GAcgASgNUgtpZGxlVGltZW91dBIhCgxoYXJkX3RpbWVvdXQYCCABKA1SC2hhcmRUaW1lb3V0EiEKDHBhY2tldF9jb3VudBgJIAEoBFILcGFja2V0Q291bnQSHQoKYnl0ZV9jb3VudBgKIAEoBFIJYnl0ZUNvdW50EiwKBW1hdGNoGHkgASgLMhYub3BlbmZsb3dfMTMub2ZwX21hdGNoUgVtYXRjaCLcAgoVb2ZwX21ldGVyX2JhbmRfaGVhZGVyEjQKBHR5cGUYASABKA4yIC5vcGVuZmxvd18xMy5vZnBfbWV0ZXJfYmFuZF90eXBlUgR0eXBlEhIKBHJhdGUYAiABKA1SBHJhdGUSHQoKYnVyc3Rfc2l6ZRgDIAEoDVIJYnVyc3RTaXplEjYKBGRyb3AYBCABKAsyIC5vcGVuZmxvd18xMy5vZnBfbWV0ZXJfYmFuZF9kcm9wSABSBGRyb3ASSgoLZHNjcF9yZW1hcmsYBSABKAsyJy5vcGVuZmxvd18xMy5vZnBfbWV0ZXJfYmFuZF9kc2NwX3JlbWFya0gAUgpkc2NwUmVtYXJrEk4KDGV4cGVyaW1lbnRlchgGIAEoCzIoLm9wZW5mbG93XzEzLm9mcF9tZXRlcl9iYW5kX2V4cGVyaW1lbnRlckgAUgxleHBlcmltZW50ZXJCBgoEZGF0YSIVChNvZnBfbWV0ZXJfYmFuZF9kcm9wIjsKGm9mcF9tZXRlcl9iYW5kX2RzY3BfcmVtYXJrEh0KCnByZWNfbGV2ZWwYASABKA1SCXByZWNMZXZlbCJBChtvZnBfbWV0ZXJfYmFuZF9leHBlcmltZW50ZXISIgoMZXhwZXJpbWVudGVyGAEgASgNUgxleHBlcmltZW50ZXIiuAEKDW9mcF9tZXRlcl9tb2QSPAoHY29tbWFuZBgBIAEoDjIiLm9wZW5mbG93XzEzLm9mcF9tZXRlcl9tb2RfY29tbWFuZFIHY29tbWFuZBIUCgVmbGFncxgCIAEoDVIFZmxhZ3MSGQoIbWV0ZXJfaWQYAyABKA1SB21ldGVySWQSOAoFYmFuZHMYBCADKAsyIi5vcGVuZmxvd18xMy5vZnBfbWV0ZXJfYmFuZF9oZWFkZXJSBWJhbmRzIksKDW9mcF9lcnJvcl9tc2cSEgoEdHlwZRgBIAEoDVIEdHlwZRISCgRjb2RlGAIgASgNUgRjb2RlEhIKBGRhdGEYAyABKAxSBGRhdGEigwEKGm9mcF9lcnJvcl9leHBlcmltZW50ZXJfbXNnEhIKBHR5cGUYASABKA1SBHR5cGUSGQoIZXhwX3R5cGUYAiABKA1SB2V4cFR5cGUSIgoMZXhwZXJpbWVudGVyGAMgASgNUgxleHBlcmltZW50ZXISEgoEZGF0YRgEIAEoDFIEZGF0YSJ2ChVvZnBfbXVsdGlwYXJ0X3JlcXVlc3QSMwoEdHlwZRgBIAEoDjIfLm9wZW5mbG93XzEzLm9mcF9tdWx0aXBhcnRfdHlwZVIEdHlwZRIUCgVmbGFncxgCIAEoDVIFZmxhZ3MSEgoEYm9keRgDIAEoDFIEYm9keSJ0ChNvZnBfbXVsdGlwYXJ0X3JlcGx5EjMKBHR5cGUYASABKA4yHy5vcGVuZmxvd18xMy5vZnBfbXVsdGlwYXJ0X3R5cGVSBHR5cGUSFAoFZmxhZ3MYAiABKA1SBWZsYWdzEhIKBGJvZHkYAyABKAxSBGJvZHkijwEKCG9mcF9kZXNjEhkKCG1mcl9kZXNjGAEgASgJUgdtZnJEZXNjEhcKB2h3X2Rlc2MYAiABKAlSBmh3RGVzYxIXCgdzd19kZXNjGAMgASgJUgZzd0Rlc2MSHQoKc2VyaWFsX251bRgEIAEoCVIJc2VyaWFsTnVtEhcKB2RwX2Rlc2MYBSABKAlSBmRwRGVzYyLSAQoWb2ZwX2Zsb3dfc3RhdHNfcmVxdWVzdBIZCgh0YWJsZV9pZBgBIAEoDVIHdGFibGVJZBIZCghvdXRfcG9ydBgCIAEoDVIHb3V0UG9ydBIbCglvdXRfZ3JvdXAYAyABKA1SCG91dEdyb3VwEhYKBmNvb2tpZRgEIAEoBFIGY29va2llEh8KC2Nvb2tpZV9tYXNrGAUgASgEUgpjb29raWVNYXNrEiwKBW1hdGNoGAYgASgLMhYub3BlbmZsb3dfMTMub2ZwX21hdGNoUgVtYXRjaCLFAwoOb2ZwX2Zsb3dfc3RhdHMSDgoCaWQYDiABKARSAmlkEhkKCHRhYmxlX2lkGAEgASgNUgd0YWJsZUlkEiEKDGR1cmF0aW9uX3NlYxgCIAEoDVILZHVyYXRpb25TZWMSIwoNZHVyYXRpb25fbnNlYxgDIAEoDVIMZHVyYXRpb25Oc2VjEhoKCHByaW9yaXR5GAQgASgNUghwcmlvcml0eRIhCgxpZGxlX3RpbWVvdXQYBSABKA1SC2lkbGVUaW1lb3V0EiEKDGhhcmRfdGltZW91dBgGIAEoDVILaGFyZFRpbWVvdXQSFAoFZmxhZ3MYByABKA1SBWZsYWdzEhYKBmNvb2tpZRgIIAEoBFIGY29va2llEiEKDHBhY2tldF9jb3VudBgJIAEoBFILcGFja2V0Q291bnQSHQoKYnl0ZV9jb3VudBgKIAEoBFIJYnl0ZUNvdW50EiwKBW1hdGNoGAwgASgLMhYub3BlbmZsb3dfMTMub2ZwX21hdGNoUgVtYXRjaBJACgxpbnN0cnVjdGlvbnMYDSADKAsyHC5vcGVuZmxvd18xMy5vZnBfaW5zdHJ1Y3Rpb25SDGluc3RydWN0aW9ucyLXAQobb2ZwX2FnZ3JlZ2F0ZV9zdGF0c19yZXF1ZXN0EhkKCHRhYmxlX2lkGAEgASgNUgd0YWJsZUlkEhkKCG91dF9wb3J0GAIgASgNUgdvdXRQb3J0EhsKCW91dF9ncm91cBgDIAEoDVIIb3V0R3JvdXASFgoGY29va2llGAQgASgEUgZjb29raWUSHwoLY29va2llX21hc2sYBSABKARSCmNvb2tpZU1hc2sSLAoFbWF0Y2gYBiABKAsyFi5vcGVuZmxvd18xMy5vZnBfbWF0Y2hSBW1hdGNoInwKGW9mcF9hZ2dyZWdhdGVfc3RhdHNfcmVwbHkSIQoMcGFja2V0X2NvdW50GAEgASgEUgtwYWNrZXRDb3VudBIdCgpieXRlX2NvdW50GAIgASgEUglieXRlQ291bnQSHQoKZmxvd19jb3VudBgDIAEoDVIJZmxvd0NvdW50Iu0DChpvZnBfdGFibGVfZmVhdHVyZV9wcm9wZXJ0eRI8CgR0eXBlGAEgASgOMigub3BlbmZsb3dfMTMub2ZwX3RhYmxlX2ZlYXR1cmVfcHJvcF90eXBlUgR0eXBlElYKDGluc3RydWN0aW9ucxgCIAEoCzIwLm9wZW5mbG93XzEzLm9mcF90YWJsZV9mZWF0dXJlX3Byb3BfaW5zdHJ1Y3Rpb25zSABSDGluc3RydWN0aW9ucxJSCgtuZXh0X3RhYmxlcxgDIAEoCzIvLm9wZW5mbG93XzEzLm9mcF90YWJsZV9mZWF0dXJlX3Byb3BfbmV4dF90YWJsZXNIAFIKbmV4dFRhYmxlcxJHCgdhY3Rpb25zGAQgASgLMisub3BlbmZsb3dfMTMub2ZwX3RhYmxlX2ZlYXR1cmVfcHJvcF9hY3Rpb25zSABSB2FjdGlvbnMSOwoDb3htGAUgASgLMicub3BlbmZsb3dfMTMub2ZwX3RhYmxlX2ZlYXR1cmVfcHJvcF9veG1IAFIDb3htElYKDGV4cGVyaW1lbnRlchgGIAEoCzIwLm9wZW5mbG93XzEzLm9mcF90YWJsZV9mZWF0dXJlX3Byb3BfZXhwZXJpbWVudGVySABSDGV4cGVyaW1lbnRlckIHCgV2YWx1ZSJnCiNvZnBfdGFibGVfZmVhdHVyZV9wcm9wX2luc3RydWN0aW9ucxJACgxpbnN0cnVjdGlvbnMYASADKAsyHC5vcGVuZmxvd18xMy5vZnBfaW5zdHJ1Y3Rpb25SDGluc3RydWN0aW9ucyJKCiJvZnBfdGFibGVfZmVhdHVyZV9wcm9wX25leHRfdGFibGVzEiQKDm5leHRfdGFibGVfaWRzGAEgAygNUgxuZXh0VGFibGVJZHMiUwoeb2ZwX3RhYmxlX2ZlYXR1cmVfcHJvcF9hY3Rpb25zEjEKB2FjdGlvbnMYASADKAsyFy5vcGVuZmxvd18xMy5vZnBfYWN0aW9uUgdhY3Rpb25zIjUKGm9mcF90YWJsZV9mZWF0dXJlX3Byb3Bfb3htEhcKB294bV9pZHMYAyADKA1SBm94bUlkcyKRAQojb2ZwX3RhYmxlX2ZlYXR1cmVfcHJvcF9leHBlcmltZW50ZXISIgoMZXhwZXJpbWVudGVyGAIgASgNUgxleHBlcmltZW50ZXISGQoIZXhwX3R5cGUYAyABKA1SB2V4cFR5cGUSKwoRZXhwZXJpbWVudGVyX2RhdGEYBCADKA1SEGV4cGVyaW1lbnRlckRhdGEikwIKEm9mcF90YWJsZV9mZWF0dXJlcxIZCgh0YWJsZV9pZBgBIAEoDVIHdGFibGVJZBISCgRuYW1lGAIgASgJUgRuYW1lEiUKDm1ldGFkYXRhX21hdGNoGAMgASgEUg1tZXRhZGF0YU1hdGNoEiUKDm1ldGFkYXRhX3dyaXRlGAQgASgEUg1tZXRhZGF0YVdyaXRlEhYKBmNvbmZpZxgFIAEoDVIGY29uZmlnEh8KC21heF9lbnRyaWVzGAYgASgNUgptYXhFbnRyaWVzEkcKCnByb3BlcnRpZXMYByADKAsyJy5vcGVuZmxvd18xMy5vZnBfdGFibGVfZmVhdHVyZV9wcm9wZXJ0eVIKcHJvcGVydGllcyKXAQoPb2ZwX3RhYmxlX3N0YXRzEhkKCHRhYmxlX2lkGAEgASgNUgd0YWJsZUlkEiEKDGFjdGl2ZV9jb3VudBgCIAEoDVILYWN0aXZlQ291bnQSIQoMbG9va3VwX2NvdW50GAMgASgEUgtsb29rdXBDb3VudBIjCg1tYXRjaGVkX2NvdW50GAQgASgEUgxtYXRjaGVkQ291bnQiMQoWb2ZwX3BvcnRfc3RhdHNfcmVxdWVzdBIXCgdwb3J0X25vGAEgASgNUgZwb3J0Tm8i3QMKDm9mcF9wb3J0X3N0YXRzEhcKB3BvcnRfbm8YASABKA1SBnBvcnRObxIdCgpyeF9wYWNrZXRzGAIgASgEUglyeFBhY2tldHMSHQoKdHhfcGFja2V0cxgDIAEoBFIJdHhQYWNrZXRzEhkKCHJ4X2J5dGVzGAQgASgEUgdyeEJ5dGVzEhkKCHR4X2J5dGVzGAUgASgEUgd0eEJ5dGVzEh0KCnJ4X2Ryb3BwZWQYBiABKARSCXJ4RHJvcHBlZBIdCgp0eF9kcm9wcGVkGAcgASgEUgl0eERyb3BwZWQSGwoJcnhfZXJyb3JzGAggASgEUghyeEVycm9ycxIbCgl0eF9lcnJvcnMYCSABKARSCHR4RXJyb3JzEiAKDHJ4X2ZyYW1lX2VychgKIAEoBFIKcnhGcmFtZUVychIeCgtyeF9vdmVyX2VychgLIAEoBFIJcnhPdmVyRXJyEhwKCnJ4X2NyY19lcnIYDCABKARSCHJ4Q3JjRXJyEh4KCmNvbGxpc2lvbnMYDSABKARSCmNvbGxpc2lvbnMSIQoMZHVyYXRpb25fc2VjGA4gASgNUgtkdXJhdGlvblNlYxIjCg1kdXJhdGlvbl9uc2VjGA8gASgNUgxkdXJhdGlvbk5zZWMiNAoXb2ZwX2dyb3VwX3N0YXRzX3JlcXVlc3QSGQoIZ3JvdXBfaWQYASABKA1SB2dyb3VwSWQiVgoSb2ZwX2J1Y2tldF9jb3VudGVyEiEKDHBhY2tldF9jb3VudBgBIAEoBFILcGFja2V0Q291bnQSHQoKYnl0ZV9jb3VudBgCIAEoBFIJYnl0ZUNvdW50IpcCCg9vZnBfZ3JvdXBfc3RhdHMSGQoIZ3JvdXBfaWQYASABKA1SB2dyb3VwSWQSGwoJcmVmX2NvdW50GAIgASgNUghyZWZDb3VudBIhCgxwYWNrZXRfY291bnQYAyABKARSC3BhY2tldENvdW50Eh0KCmJ5dGVfY291bnQYBCABKARSCWJ5dGVDb3VudBIhCgxkdXJhdGlvbl9zZWMYBSABKA1SC2R1cmF0aW9uU2VjEiMKDWR1cmF0aW9uX25zZWMYBiABKA1SDGR1cmF0aW9uTnNlYxJCCgxidWNrZXRfc3RhdHMYByADKAsyHy5vcGVuZmxvd18xMy5vZnBfYnVja2V0X2NvdW50ZXJSC2J1Y2tldFN0YXRzIo8BCg5vZnBfZ3JvdXBfZGVzYxIvCgR0eXBlGAEgASgOMhsub3BlbmZsb3dfMTMub2ZwX2dyb3VwX3R5cGVSBHR5cGUSGQoIZ3JvdXBfaWQYAiABKA1SB2dyb3VwSWQSMQoHYnVja2V0cxgDIAMoCzIXLm9wZW5mbG93XzEzLm9mcF9idWNrZXRSB2J1Y2tldHMipAEKD29mcF9ncm91cF9lbnRyeRJdCgRkZXNjGAEgASgLMhsub3BlbmZsb3dfMTMub2ZwX2dyb3VwX2Rlc2NCLIL3zR0GCgRkZXNjgvfNHRwSGm9wZW5mbG93XzEzLW9mcF9ncm91cF9kZXNjUgRkZXNjEjIKBXN0YXRzGAIgASgLMhwub3BlbmZsb3dfMTMub2ZwX2dyb3VwX3N0YXRzUgVzdGF0cyKHAQoSb2ZwX2dyb3VwX2ZlYXR1cmVzEhQKBXR5cGVzGAEgASgNUgV0eXBlcxIiCgxjYXBhYmlsaXRpZXMYAiABKA1SDGNhcGFiaWxpdGllcxIdCgptYXhfZ3JvdXBzGAMgAygNUgltYXhHcm91cHMSGAoHYWN0aW9ucxgEIAMoDVIHYWN0aW9ucyI4ChtvZnBfbWV0ZXJfbXVsdGlwYXJ0X3JlcXVlc3QSGQoIbWV0ZXJfaWQYASABKA1SB21ldGVySWQiagoUb2ZwX21ldGVyX2JhbmRfc3RhdHMSKgoRcGFja2V0X2JhbmRfY291bnQYASABKARSD3BhY2tldEJhbmRDb3VudBImCg9ieXRlX2JhbmRfY291bnQYAiABKARSDWJ5dGVCYW5kQ291bnQioQIKD29mcF9tZXRlcl9zdGF0cxIZCghtZXRlcl9pZBgBIAEoDVIHbWV0ZXJJZBIdCgpmbG93X2NvdW50GAIgASgNUglmbG93Q291bnQSJgoPcGFja2V0X2luX2NvdW50GAMgASgEUg1wYWNrZXRJbkNvdW50EiIKDWJ5dGVfaW5fY291bnQYBCABKARSC2J5dGVJbkNvdW50EiEKDGR1cmF0aW9uX3NlYxgFIAEoDVILZHVyYXRpb25TZWMSIwoNZHVyYXRpb25fbnNlYxgGIAEoDVIMZHVyYXRpb25Oc2VjEkAKCmJhbmRfc3RhdHMYByADKAsyIS5vcGVuZmxvd18xMy5vZnBfbWV0ZXJfYmFuZF9zdGF0c1IJYmFuZFN0YXRzIn0KEG9mcF9tZXRlcl9jb25maWcSFAoFZmxhZ3MYASABKA1SBWZsYWdzEhkKCG1ldGVyX2lkGAIgASgNUgdtZXRlcklkEjgKBWJhbmRzGAMgAygLMiIub3BlbmZsb3dfMTMub2ZwX21ldGVyX2JhbmRfaGVhZGVyUgViYW5kcyKuAQoSb2ZwX21ldGVyX2ZlYXR1cmVzEhsKCW1heF9tZXRlchgBIAEoDVIIbWF4TWV0ZXISHQoKYmFuZF90eXBlcxgCIAEoDVIJYmFuZFR5cGVzEiIKDGNhcGFiaWxpdGllcxgDIAEoDVIMY2FwYWJpbGl0aWVzEhsKCW1heF9iYW5kcxgEIAEoDVIIbWF4QmFuZHMSGwoJbWF4X2NvbG9yGAUgASgNUghtYXhDb2xvciJ2CiFvZnBfZXhwZXJpbWVudGVyX211bHRpcGFydF9oZWFkZXISIgoMZXhwZXJpbWVudGVyGAEgASgNUgxleHBlcmltZW50ZXISGQoIZXhwX3R5cGUYAiABKA1SB2V4cFR5cGUSEgoEZGF0YRgDIAEoDFIEZGF0YSJsChdvZnBfZXhwZXJpbWVudGVyX2hlYWRlchIiCgxleHBlcmltZW50ZXIYASABKA1SDGV4cGVyaW1lbnRlchIZCghleHBfdHlwZRgCIAEoDVIHZXhwVHlwZRISCgRkYXRhGAMgASgMUgRkYXRhIkUKFW9mcF9xdWV1ZV9wcm9wX2hlYWRlchIaCghwcm9wZXJ0eRgBIAEoDVIIcHJvcGVydHkSEAoDbGVuGAIgASgNUgNsZW4icgoXb2ZwX3F1ZXVlX3Byb3BfbWluX3JhdGUSQwoLcHJvcF9oZWFkZXIYASABKAsyIi5vcGVuZmxvd18xMy5vZnBfcXVldWVfcHJvcF9oZWFkZXJSCnByb3BIZWFkZXISEgoEcmF0ZRgCIAEoDVIEcmF0ZSJyChdvZnBfcXVldWVfcHJvcF9tYXhfcmF0ZRJDCgtwcm9wX2hlYWRlchgBIAEoCzIiLm9wZW5mbG93XzEzLm9mcF9xdWV1ZV9wcm9wX2hlYWRlclIKcHJvcEhlYWRlchISCgRyYXRlGAIgASgNUgRyYXRlIpoBChtvZnBfcXVldWVfcHJvcF9leHBlcmltZW50ZXISQwoLcHJvcF9oZWFkZXIYASABKAsyIi5vcGVuZmxvd18xMy5vZnBfcXVldWVfcHJvcF9oZWFkZXJSCnByb3BIZWFkZXISIgoMZXhwZXJpbWVudGVyGAIgASgNUgxleHBlcmltZW50ZXISEgoEZGF0YRgDIAEoDFIEZGF0YSKFAQoQb2ZwX3BhY2tldF9xdWV1ZRIZCghxdWV1ZV9pZBgBIAEoDVIHcXVldWVJZBISCgRwb3J0GAIgASgNUgRwb3J0EkIKCnByb3BlcnRpZXMYBCADKAsyIi5vcGVuZmxvd18xMy5vZnBfcXVldWVfcHJvcF9oZWFkZXJSCnByb3BlcnRpZXMiMgocb2ZwX3F1ZXVlX2dldF9jb25maWdfcmVxdWVzdBISCgRwb3J0GAEgASgNUgRwb3J0ImcKGm9mcF9xdWV1ZV9nZXRfY29uZmlnX3JlcGx5EhIKBHBvcnQYASABKA1SBHBvcnQSNQoGcXVldWVzGAIgAygLMh0ub3BlbmZsb3dfMTMub2ZwX3BhY2tldF9xdWV1ZVIGcXVldWVzIkUKFG9mcF9hY3Rpb25fc2V0X3F1ZXVlEhIKBHR5cGUYASABKA1SBHR5cGUSGQoIcXVldWVfaWQYAyABKA1SB3F1ZXVlSWQiTQoXb2ZwX3F1ZXVlX3N0YXRzX3JlcXVlc3QSFwoHcG9ydF9ubxgBIAEoDVIGcG9ydE5vEhkKCHF1ZXVlX2lkGAIgASgNUgdxdWV1ZUlkIuQBCg9vZnBfcXVldWVfc3RhdHMSFwoHcG9ydF9ubxgBIAEoDVIGcG9ydE5vEhkKCHF1ZXVlX2lkGAIgASgNUgdxdWV1ZUlkEhkKCHR4X2J5dGVzGAMgASgEUgd0eEJ5dGVzEh0KCnR4X3BhY2tldHMYBCABKARSCXR4UGFja2V0cxIbCgl0eF9lcnJvcnMYBSABKARSCHR4RXJyb3JzEiEKDGR1cmF0aW9uX3NlYxgGIAEoDVILZHVyYXRpb25TZWMSIwoNZHVyYXRpb25fbnNlYxgHIAEoDVIMZHVyYXRpb25Oc2VjIm0KEG9mcF9yb2xlX3JlcXVlc3QSNAoEcm9sZRgBIAEoDjIgLm9wZW5mbG93XzEzLm9mcF9jb250cm9sbGVyX3JvbGVSBHJvbGUSIwoNZ2VuZXJhdGlvbl9pZBgCIAEoBFIMZ2VuZXJhdGlvbklkIo4BChBvZnBfYXN5bmNfY29uZmlnEiQKDnBhY2tldF9pbl9tYXNrGAEgAygNUgxwYWNrZXRJbk1hc2sSKAoQcG9ydF9zdGF0dXNfbWFzaxgCIAMoDVIOcG9ydFN0YXR1c01hc2sSKgoRZmxvd19yZW1vdmVkX21hc2sYAyADKA1SD2Zsb3dSZW1vdmVkTWFzayJZCg5NZXRlck1vZFVwZGF0ZRIOCgJpZBgBIAEoCVICaWQSNwoJbWV0ZXJfbW9kGAIgASgLMhoub3BlbmZsb3dfMTMub2ZwX21ldGVyX21vZFIIbWV0ZXJNb2QiUAoPTWV0ZXJTdGF0c1JlcGx5Ej0KC21ldGVyX3N0YXRzGAEgAygLMhwub3BlbmZsb3dfMTMub2ZwX21ldGVyX3N0YXRzUgptZXRlclN0YXRzIlcKD0Zsb3dUYWJsZVVwZGF0ZRIOCgJpZBgBIAEoCVICaWQSNAoIZmxvd19tb2QYAiABKAsyGS5vcGVuZmxvd18xMy5vZnBfZmxvd19tb2RSB2Zsb3dNb2QiXwoURmxvd0dyb3VwVGFibGVVcGRhdGUSDgoCaWQYASABKAlSAmlkEjcKCWdyb3VwX21vZBgCIAEoCzIaLm9wZW5mbG93XzEzLm9mcF9ncm91cF9tb2RSCGdyb3VwTW9kIjoKBUZsb3dzEjEKBWl0ZW1zGAEgAygLMhsub3BlbmZsb3dfMTMub2ZwX2Zsb3dfc3RhdHNSBWl0ZW1zIj0KBk1ldGVycxIzCgVpdGVtcxgBIAMoCzIdLm9wZW5mbG93XzEzLm9mcF9tZXRlcl9jb25maWdSBWl0ZW1zIkAKCkZsb3dHcm91cHMSMgoFaXRlbXMYASADKAsyHC5vcGVuZmxvd18xMy5vZnBfZ3JvdXBfZW50cnlSBWl0ZW1zImkKC0Zsb3dDaGFuZ2VzEikKBnRvX2FkZBgBIAEoCzISLm9wZW5mbG93XzEzLkZsb3dzUgV0b0FkZBIvCgl0b19yZW1vdmUYAiABKAsyEi5vcGVuZmxvd18xMy5GbG93c1IIdG9SZW1vdmUirgEKEEZsb3dHcm91cENoYW5nZXMSLgoGdG9fYWRkGAEgASgLMhcub3BlbmZsb3dfMTMuRmxvd0dyb3Vwc1IFdG9BZGQSNAoJdG9fcmVtb3ZlGAIgASgLMhcub3BlbmZsb3dfMTMuRmxvd0dyb3Vwc1IIdG9SZW1vdmUSNAoJdG9fdXBkYXRlGAMgASgLMhcub3BlbmZsb3dfMTMuRmxvd0dyb3Vwc1IIdG9VcGRhdGUiUwoIUGFja2V0SW4SDgoCaWQYASABKAlSAmlkEjcKCXBhY2tldF9pbhgCIAEoCzIaLm9wZW5mbG93XzEzLm9mcF9wYWNrZXRfaW5SCHBhY2tldEluIlcKCVBhY2tldE91dBIOCgJpZBgBIAEoCVICaWQSOgoKcGFja2V0X291dBgCIAEoCzIbLm9wZW5mbG93XzEzLm9mcF9wYWNrZXRfb3V0UglwYWNrZXRPdXQiZwoLQ2hhbmdlRXZlbnQSDgoCaWQYASABKAlSAmlkEj8KC3BvcnRfc3RhdHVzGAIgASgLMhwub3BlbmZsb3dfMTMub2ZwX3BvcnRfc3RhdHVzSABSCnBvcnRTdGF0dXNCBwoFZXZlbnQq1QEKC29mcF9wb3J0X25vEhAKDE9GUFBfSU5WQUxJRBAAEhAKCE9GUFBfTUFYEID+//8HEhQKDE9GUFBfSU5fUE9SVBD4////BxISCgpPRlBQX1RBQkxFEPn///8HEhMKC09GUFBfTk9STUFMEPr///8HEhIKCk9GUFBfRkxPT0QQ+////wcSEAoIT0ZQUF9BTEwQ/P///wcSFwoPT0ZQUF9DT05UUk9MTEVSEP3///8HEhIKCk9GUFBfTE9DQUwQ/v///wcSEAoIT0ZQUF9BTlkQ/////wcqyAUKCG9mcF90eXBlEg4KCk9GUFRfSEVMTE8QABIOCgpPRlBUX0VSUk9SEAESFQoRT0ZQVF9FQ0hPX1JFUVVFU1QQAhITCg9PRlBUX0VDSE9fUkVQTFkQAxIVChFPRlBUX0VYUEVSSU1FTlRFUhAEEhkKFU9GUFRfRkVBVFVSRVNfUkVRVUVTVBAFEhcKE09GUFRfRkVBVFVSRVNfUkVQTFkQBhIbChdPRlBUX0dFVF9DT05GSUdfUkVRVUVTVBAHEhkKFU9GUFRfR0VUX0NPTkZJR19SRVBMWRAIEhMKD09GUFRfU0VUX0NPTkZJRxAJEhIKDk9GUFRfUEFDS0VUX0lOEAoSFQoRT0ZQVF9GTE9XX1JFTU9WRUQQCxIUChBPRlBUX1BPUlRfU1RBVFVTEAwSEwoPT0ZQVF9QQUNLRVRfT1VUEA0SEQoNT0ZQVF9GTE9XX01PRBAOEhIKDk9GUFRfR1JPVVBfTU9EEA8SEQoNT0ZQVF9QT1JUX01PRBAQEhIKDk9GUFRfVEFCTEVfTU9EEBESGgoWT0ZQVF9NVUxUSVBBUlRfUkVRVUVTVBASEhgKFE9GUFRfTVVMVElQQVJUX1JFUExZEBMSGAoUT0ZQVF9CQVJSSUVSX1JFUVVFU1QQFBIWChJPRlBUX0JBUlJJRVJfUkVQTFkQFRIhCh1PRlBUX1FVRVVFX0dFVF9DT05GSUdfUkVRVUVTVBAWEh8KG09GUFRfUVVFVUVfR0VUX0NPTkZJR19SRVBMWRAXEhUKEU9GUFRfUk9MRV9SRVFVRVNUEBgSEwoPT0ZQVF9ST0xFX1JFUExZEBkSGgoWT0ZQVF9HRVRfQVNZTkNfUkVRVUVTVBAaEhgKFE9GUFRfR0VUX0FTWU5DX1JFUExZEBsSEgoOT0ZQVF9TRVRfQVNZTkMQHBISCg5PRlBUX01FVEVSX01PRBAdKkMKE29mcF9oZWxsb19lbGVtX3R5cGUSEgoOT0ZQSEVUX0lOVkFMSUQQABIYChRPRlBIRVRfVkVSU0lPTkJJVE1BUBABKmUKEG9mcF9jb25maWdfZmxhZ3MSFAoQT0ZQQ19GUkFHX05PUk1BTBAAEhIKDk9GUENfRlJBR19EUk9QEAESEwoPT0ZQQ19GUkFHX1JFQVNNEAISEgoOT0ZQQ19GUkFHX01BU0sQAypAChBvZnBfdGFibGVfY29uZmlnEhEKDU9GUFRDX0lOVkFMSUQQABIZChVPRlBUQ19ERVBSRUNBVEVEX01BU0sQAyo+CglvZnBfdGFibGUSEQoNT0ZQVFRfSU5WQUxJRBAAEg4KCU9GUFRUX01BWBD+ARIOCglPRlBUVF9BTEwQ/wEquwEKEG9mcF9jYXBhYmlsaXRpZXMSEAoMT0ZQQ19JTlZBTElEEAASEwoPT0ZQQ19GTE9XX1NUQVRTEAESFAoQT0ZQQ19UQUJMRV9TVEFUUxACEhMKD09GUENfUE9SVF9TVEFUUxAEEhQKEE9GUENfR1JPVVBfU1RBVFMQCBIRCg1PRlBDX0lQX1JFQVNNECASFAoQT0ZQQ19RVUVVRV9TVEFUUxBAEhYKEU9GUENfUE9SVF9CTE9DS0VEEIACKnYKD29mcF9wb3J0X2NvbmZpZxIRCg1PRlBQQ19JTlZBTElEEAASEwoPT0ZQUENfUE9SVF9ET1dOEAESEQoNT0ZQUENfTk9fUkVDVhAEEhAKDE9GUFBDX05PX0ZXRBAgEhYKEk9GUFBDX05PX1BBQ0tFVF9JThBAKlsKDm9mcF9wb3J0X3N0YXRlEhEKDU9GUFBTX0lOVkFMSUQQABITCg9PRlBQU19MSU5LX0RPV04QARIRCg1PRlBQU19CTE9DS0VEEAISDgoKT0ZQUFNfTElWRRAEKt0CChFvZnBfcG9ydF9mZWF0dXJlcxIRCg1PRlBQRl9JTlZBTElEEAASEQoNT0ZQUEZfMTBNQl9IRBABEhEKDU9GUFBGXzEwTUJfRkQQAhISCg5PRlBQRl8xMDBNQl9IRBAEEhIKDk9GUFBGXzEwME1CX0ZEEAgSEAoMT0ZQUEZfMUdCX0hEEBASEAoMT0ZQUEZfMUdCX0ZEECASEQoNT0ZQUEZfMTBHQl9GRBBAEhIKDU9GUFBGXzQwR0JfRkQQgAESEwoOT0ZQUEZfMTAwR0JfRkQQgAISEQoMT0ZQUEZfMVRCX0ZEEIAEEhAKC09GUFBGX09USEVSEIAIEhEKDE9GUFBGX0NPUFBFUhCAEBIQCgtPRlBQRl9GSUJFUhCAIBISCg1PRlBQRl9BVVRPTkVHEIBAEhEKC09GUFBGX1BBVVNFEICAARIWChBPRlBQRl9QQVVTRV9BU1lNEICAAipECg9vZnBfcG9ydF9yZWFzb24SDQoJT0ZQUFJfQUREEAASEAoMT0ZQUFJfREVMRVRFEAESEAoMT0ZQUFJfTU9ESUZZEAIqMwoOb2ZwX21hdGNoX3R5cGUSEgoOT0ZQTVRfU1RBTkRBUkQQABINCglPRlBNVF9PWE0QASprCg1vZnBfb3htX2NsYXNzEhAKDE9GUFhNQ19OWE1fMBAAEhAKDE9GUFhNQ19OWE1fMRABEhsKFU9GUFhNQ19PUEVORkxPV19CQVNJQxCAgAISGQoTT0ZQWE1DX0VYUEVSSU1FTlRFUhD//wMqkAgKE294bV9vZmJfZmllbGRfdHlwZXMSFgoST0ZQWE1UX09GQl9JTl9QT1JUEAASGgoWT0ZQWE1UX09GQl9JTl9QSFlfUE9SVBABEhcKE09GUFhNVF9PRkJfTUVUQURBVEEQAhIWChJPRlBYTVRfT0ZCX0VUSF9EU1QQAxIWChJPRlBYTVRfT0ZCX0VUSF9TUkMQBBIXChNPRlBYTVRfT0ZCX0VUSF9UWVBFEAUSFwoTT0ZQWE1UX09GQl9WTEFOX1ZJRBAGEhcKE09GUFhNVF9PRkJfVkxBTl9QQ1AQBxIWChJPRlBYTVRfT0ZCX0lQX0RTQ1AQCBIVChFPRlBYTVRfT0ZCX0lQX0VDThAJEhcKE09GUFhNVF9PRkJfSVBfUFJPVE8QChIXChNPRlBYTVRfT0ZCX0lQVjRfU1JDEAsSFwoTT0ZQWE1UX09GQl9JUFY0X0RTVBAMEhYKEk9GUFhNVF9PRkJfVENQX1NSQxANEhYKEk9GUFhNVF9PRkJfVENQX0RTVBAOEhYKEk9GUFhNVF9PRkJfVURQX1NSQxAPEhYKEk9GUFhNVF9PRkJfVURQX0RTVBAQEhcKE09GUFhNVF9PRkJfU0NUUF9TUkMQERIXChNPRlBYTVRfT0ZCX1NDVFBfRFNUEBISGgoWT0ZQWE1UX09GQl9JQ01QVjRfVFlQRRATEhoKFk9GUFhNVF9PRkJfSUNNUFY0X0NPREUQFBIVChFPRlBYTVRfT0ZCX0FSUF9PUBAVEhYKEk9GUFhNVF9PRkJfQVJQX1NQQRAWEhYKEk9GUFhNVF9PRkJfQVJQX1RQQRAXEhYKEk9GUFhNVF9PRkJfQVJQX1NIQRAYEhYKEk9GUFhNVF9PRkJfQVJQX1RIQRAZEhcKE09GUFhNVF9PRkJfSVBWNl9TUkMQGhIXChNPRlBYTVRfT0ZCX0lQVjZfRFNUEBsSGgoWT0ZQWE1UX09GQl9JUFY2X0ZMQUJFTBAcEhoKFk9GUFhNVF9PRkJfSUNNUFY2X1RZUEUQHRIaChZPRlBYTVRfT0ZCX0lDTVBWNl9DT0RFEB4SHQoZT0ZQWE1UX09GQl9JUFY2X05EX1RBUkdFVBAfEhoKFk9GUFhNVF9PRkJfSVBWNl9ORF9TTEwQIBIaChZPRlBYTVRfT0ZCX0lQVjZfTkRfVExMECESGQoVT0ZQWE1UX09GQl9NUExTX0xBQkVMECISFgoST0ZQWE1UX09GQl9NUExTX1RDECMSFwoTT0ZQWE1UX09GQl9NUExTX0JPUxAkEhcKE09GUFhNVF9PRkJfUEJCX0lTSUQQJRIYChRPRlBYTVRfT0ZCX1RVTk5FTF9JRBAmEhoKFk9GUFhNVF9PRkJfSVBWNl9FWFRIRFIQJyozCgtvZnBfdmxhbl9pZBIPCgtPRlBWSURfTk9ORRAAEhMKDk9GUFZJRF9QUkVTRU5UEIAgKskBChRvZnBfaXB2NmV4dGhkcl9mbGFncxISCg5PRlBJRUhfSU5WQUxJRBAAEhEKDU9GUElFSF9OT05FWFQQARIOCgpPRlBJRUhfRVNQEAISDwoLT0ZQSUVIX0FVVEgQBBIPCgtPRlBJRUhfREVTVBAIEg8KC09GUElFSF9GUkFHEBASEQoNT0ZQSUVIX1JPVVRFUhAgEg4KCk9GUElFSF9IT1AQQBIRCgxPRlBJRUhfVU5SRVAQgAESEQoMT0ZQSUVIX1VOU0VREIACKvwCCg9vZnBfYWN0aW9uX3R5cGUSEAoMT0ZQQVRfT1VUUFVUEAASFgoST0ZQQVRfQ09QWV9UVExfT1VUEAsSFQoRT0ZQQVRfQ09QWV9UVExfSU4QDBIWChJPRlBBVF9TRVRfTVBMU19UVEwQDxIWChJPRlBBVF9ERUNfTVBMU19UVEwQEBITCg9PRlBBVF9QVVNIX1ZMQU4QERISCg5PRlBBVF9QT1BfVkxBThASEhMKD09GUEFUX1BVU0hfTVBMUxATEhIKDk9GUEFUX1BPUF9NUExTEBQSEwoPT0ZQQVRfU0VUX1FVRVVFEBUSDwoLT0ZQQVRfR1JPVVAQFhIUChBPRlBBVF9TRVRfTldfVFRMEBcSFAoQT0ZQQVRfREVDX05XX1RUTBAYEhMKD09GUEFUX1NFVF9GSUVMRBAZEhIKDk9GUEFUX1BVU0hfUEJCEBoSEQoNT0ZQQVRfUE9QX1BCQhAbEhgKEk9GUEFUX0VYUEVSSU1FTlRFUhD//wMqVgoWb2ZwX2NvbnRyb2xsZXJfbWF4X2xlbhISCg5PRlBDTUxfSU5WQUxJRBAAEhAKCk9GUENNTF9NQVgQ5f8DEhYKEE9GUENNTF9OT19CVUZGRVIQ//8DKs8BChRvZnBfaW5zdHJ1Y3Rpb25fdHlwZRIRCg1PRlBJVF9JTlZBTElEEAASFAoQT0ZQSVRfR09UT19UQUJMRRABEhgKFE9GUElUX1dSSVRFX01FVEFEQVRBEAISFwoTT0ZQSVRfV1JJVEVfQUNUSU9OUxADEhcKE09GUElUX0FQUExZX0FDVElPTlMQBBIXChNPRlBJVF9DTEVBUl9BQ1RJT05TEAUSDwoLT0ZQSVRfTUVURVIQBhIYChJPRlBJVF9FWFBFUklNRU5URVIQ//8DKnsKFG9mcF9mbG93X21vZF9jb21tYW5kEg0KCU9GUEZDX0FERBAAEhAKDE9GUEZDX01PRElGWRABEhcKE09GUEZDX01PRElGWV9TVFJJQ1QQAhIQCgxPRlBGQ19ERUxFVEUQAxIXChNPRlBGQ19ERUxFVEVfU1RSSUNUEAQqowEKEm9mcF9mbG93X21vZF9mbGFncxIRCg1PRlBGRl9JTlZBTElEEAASFwoTT0ZQRkZfU0VORF9GTE9XX1JFTRABEhcKE09GUEZGX0NIRUNLX09WRVJMQVAQAhIWChJPRlBGRl9SRVNFVF9DT1VOVFMQBBIXChNPRlBGRl9OT19QS1RfQ09VTlRTEAgSFwoTT0ZQRkZfTk9fQllUX0NPVU5UUxAQKlMKCW9mcF9ncm91cBIQCgxPRlBHX0lOVkFMSUQQABIQCghPRlBHX01BWBCA/v//BxIQCghPRlBHX0FMTBD8////BxIQCghPRlBHX0FOWRD/////BypKChVvZnBfZ3JvdXBfbW9kX2NvbW1hbmQSDQoJT0ZQR0NfQUREEAASEAoMT0ZQR0NfTU9ESUZZEAESEAoMT0ZQR0NfREVMRVRFEAIqUwoOb2ZwX2dyb3VwX3R5cGUSDQoJT0ZQR1RfQUxMEAASEAoMT0ZQR1RfU0VMRUNUEAESEgoOT0ZQR1RfSU5ESVJFQ1QQAhIMCghPRlBHVF9GRhADKlAKFG9mcF9wYWNrZXRfaW5fcmVhc29uEhEKDU9GUFJfTk9fTUFUQ0gQABIPCgtPRlBSX0FDVElPThABEhQKEE9GUFJfSU5WQUxJRF9UVEwQAiqLAQoXb2ZwX2Zsb3dfcmVtb3ZlZF9yZWFzb24SFgoST0ZQUlJfSURMRV9USU1FT1VUEAASFgoST0ZQUlJfSEFSRF9USU1FT1VUEAESEAoMT0ZQUlJfREVMRVRFEAISFgoST0ZQUlJfR1JPVVBfREVMRVRFEAMSFgoST0ZQUlJfTUVURVJfREVMRVRFEAQqbgoJb2ZwX21ldGVyEg0KCU9GUE1fWkVSTxAAEhAKCE9GUE1fTUFYEICA/P8HEhUKDU9GUE1fU0xPV1BBVEgQ/f///wcSFwoPT0ZQTV9DT05UUk9MTEVSEP7///8HEhAKCE9GUE1fQUxMEP////8HKm0KE29mcF9tZXRlcl9iYW5kX3R5cGUSEgoOT0ZQTUJUX0lOVkFMSUQQABIPCgtPRlBNQlRfRFJPUBABEhYKEk9GUE1CVF9EU0NQX1JFTUFSSxACEhkKE09GUE1CVF9FWFBFUklNRU5URVIQ//8DKkoKFW9mcF9tZXRlcl9tb2RfY29tbWFuZBINCglPRlBNQ19BREQQABIQCgxPRlBNQ19NT0RJRlkQARIQCgxPRlBNQ19ERUxFVEUQAipnCg9vZnBfbWV0ZXJfZmxhZ3MSEQoNT0ZQTUZfSU5WQUxJRBAAEg4KCk9GUE1GX0tCUFMQARIPCgtPRlBNRl9QS1RQUxACEg8KC09GUE1GX0JVUlNUEAQSDwoLT0ZQTUZfU1RBVFMQCCqkAwoOb2ZwX2Vycm9yX3R5cGUSFgoST0ZQRVRfSEVMTE9fRkFJTEVEEAASFQoRT0ZQRVRfQkFEX1JFUVVFU1QQARIUChBPRlBFVF9CQURfQUNUSU9OEAISGQoVT0ZQRVRfQkFEX0lOU1RSVUNUSU9OEAMSEwoPT0ZQRVRfQkFEX01BVENIEAQSGQoVT0ZQRVRfRkxPV19NT0RfRkFJTEVEEAUSGgoWT0ZQRVRfR1JPVVBfTU9EX0ZBSUxFRBAGEhkKFU9GUEVUX1BPUlRfTU9EX0ZBSUxFRBAHEhoKFk9GUEVUX1RBQkxFX01PRF9GQUlMRUQQCBIZChVPRlBFVF9RVUVVRV9PUF9GQUlMRUQQCRIeChpPRlBFVF9TV0lUQ0hfQ09ORklHX0ZBSUxFRBAKEh0KGU9GUEVUX1JPTEVfUkVRVUVTVF9GQUlMRUQQCxIaChZPRlBFVF9NRVRFUl9NT0RfRkFJTEVEEAwSHwobT0ZQRVRfVEFCTEVfRkVBVFVSRVNfRkFJTEVEEA0SGAoST0ZQRVRfRVhQRVJJTUVOVEVSEP//AypCChVvZnBfaGVsbG9fZmFpbGVkX2NvZGUSFwoTT0ZQSEZDX0lOQ09NUEFUSUJMRRAAEhAKDE9GUEhGQ19FUEVSTRABKu0CChRvZnBfYmFkX3JlcXVlc3RfY29kZRIWChJPRlBCUkNfQkFEX1ZFUlNJT04QABITCg9PRlBCUkNfQkFEX1RZUEUQARIYChRPRlBCUkNfQkFEX01VTFRJUEFSVBACEhsKF09GUEJSQ19CQURfRVhQRVJJTUVOVEVSEAMSFwoTT0ZQQlJDX0JBRF9FWFBfVFlQRRAEEhAKDE9GUEJSQ19FUEVSTRAFEhIKDk9GUEJSQ19CQURfTEVOEAYSFwoTT0ZQQlJDX0JVRkZFUl9FTVBUWRAHEhkKFU9GUEJSQ19CVUZGRVJfVU5LTk9XThAIEhcKE09GUEJSQ19CQURfVEFCTEVfSUQQCRITCg9PRlBCUkNfSVNfU0xBVkUQChITCg9PRlBCUkNfQkFEX1BPUlQQCxIVChFPRlBCUkNfQkFEX1BBQ0tFVBAMEiQKIE9GUEJSQ19NVUxUSVBBUlRfQlVGRkVSX09WRVJGTE9XEA0qnAMKE29mcF9iYWRfYWN0aW9uX2NvZGUSEwoPT0ZQQkFDX0JBRF9UWVBFEAASEgoOT0ZQQkFDX0JBRF9MRU4QARIbChdPRlBCQUNfQkFEX0VYUEVSSU1FTlRFUhACEhcKE09GUEJBQ19CQURfRVhQX1RZUEUQAxIXChNPRlBCQUNfQkFEX09VVF9QT1JUEAQSFwoTT0ZQQkFDX0JBRF9BUkdVTUVOVBAFEhAKDE9GUEJBQ19FUEVSTRAGEhMKD09GUEJBQ19UT09fTUFOWRAHEhQKEE9GUEJBQ19CQURfUVVFVUUQCBIYChRPRlBCQUNfQkFEX09VVF9HUk9VUBAJEh0KGU9GUEJBQ19NQVRDSF9JTkNPTlNJU1RFTlQQChIcChhPRlBCQUNfVU5TVVBQT1JURURfT1JERVIQCxISCg5PRlBCQUNfQkFEX1RBRxAMEhcKE09GUEJBQ19CQURfU0VUX1RZUEUQDRIWChJPRlBCQUNfQkFEX1NFVF9MRU4QDhIbChdPRlBCQUNfQkFEX1NFVF9BUkdVTUVOVBAPKvoBChhvZnBfYmFkX2luc3RydWN0aW9uX2NvZGUSFwoTT0ZQQklDX1VOS05PV05fSU5TVBAAEhUKEU9GUEJJQ19VTlNVUF9JTlNUEAESFwoTT0ZQQklDX0JBRF9UQUJMRV9JRBACEhkKFU9GUEJJQ19VTlNVUF9NRVRBREFUQRADEh4KGk9GUEJJQ19VTlNVUF9NRVRBREFUQV9NQVNLEAQSGwoXT0ZQQklDX0JBRF9FWFBFUklNRU5URVIQBRIXChNPRlBCSUNfQkFEX0VYUF9UWVBFEAYSEgoOT0ZQQklDX0JBRF9MRU4QBxIQCgxPRlBCSUNfRVBFUk0QCCqlAgoSb2ZwX2JhZF9tYXRjaF9jb2RlEhMKD09GUEJNQ19CQURfVFlQRRAAEhIKDk9GUEJNQ19CQURfTEVOEAESEgoOT0ZQQk1DX0JBRF9UQUcQAhIbChdPRlBCTUNfQkFEX0RMX0FERFJfTUFTSxADEhsKF09GUEJNQ19CQURfTldfQUREUl9NQVNLEAQSGAoUT0ZQQk1DX0JBRF9XSUxEQ0FSRFMQBRIUChBPRlBCTUNfQkFEX0ZJRUxEEAYSFAoQT0ZQQk1DX0JBRF9WQUxVRRAHEhMKD09GUEJNQ19CQURfTUFTSxAIEhUKEU9GUEJNQ19CQURfUFJFUkVREAkSFAoQT0ZQQk1DX0RVUF9GSUVMRBAKEhAKDE9GUEJNQ19FUEVSTRALKtIBChhvZnBfZmxvd19tb2RfZmFpbGVkX2NvZGUSEwoPT0ZQRk1GQ19VTktOT1dOEAASFgoST0ZQRk1GQ19UQUJMRV9GVUxMEAESGAoUT0ZQRk1GQ19CQURfVEFCTEVfSUQQAhITCg9PRlBGTUZDX09WRVJMQVAQAxIRCg1PRlBGTUZDX0VQRVJNEAQSFwoTT0ZQRk1GQ19CQURfVElNRU9VVBAFEhcKE09GUEZNRkNfQkFEX0NPTU1BTkQQBhIVChFPRlBGTUZDX0JBRF9GTEFHUxAHKqEDChlvZnBfZ3JvdXBfbW9kX2ZhaWxlZF9jb2RlEhgKFE9GUEdNRkNfR1JPVVBfRVhJU1RTEAASGQoVT0ZQR01GQ19JTlZBTElEX0dST1VQEAESHgoaT0ZQR01GQ19XRUlHSFRfVU5TVVBQT1JURUQQAhIZChVPRlBHTUZDX09VVF9PRl9HUk9VUFMQAxIaChZPRlBHTUZDX09VVF9PRl9CVUNLRVRTEAQSIAocT0ZQR01GQ19DSEFJTklOR19VTlNVUFBPUlRFRBAFEh0KGU9GUEdNRkNfV0FUQ0hfVU5TVVBQT1JURUQQBhIQCgxPRlBHTUZDX0xPT1AQBxIZChVPRlBHTUZDX1VOS05PV05fR1JPVVAQCBIZChVPRlBHTUZDX0NIQUlORURfR1JPVVAQCRIUChBPRlBHTUZDX0JBRF9UWVBFEAoSFwoTT0ZQR01GQ19CQURfQ09NTUFORBALEhYKEk9GUEdNRkNfQkFEX0JVQ0tFVBAMEhUKEU9GUEdNRkNfQkFEX1dBVENIEA0SEQoNT0ZQR01GQ19FUEVSTRAOKo8BChhvZnBfcG9ydF9tb2RfZmFpbGVkX2NvZGUSFAoQT0ZQUE1GQ19CQURfUE9SVBAAEhcKE09GUFBNRkNfQkFEX0hXX0FERFIQARIWChJPRlBQTUZDX0JBRF9DT05GSUcQAhIZChVPRlBQTUZDX0JBRF9BRFZFUlRJU0UQAxIRCg1PRlBQTUZDX0VQRVJNEAQqXQoZb2ZwX3RhYmxlX21vZF9mYWlsZWRfY29kZRIVChFPRlBUTUZDX0JBRF9UQUJMRRAAEhYKEk9GUFRNRkNfQkFEX0NPTkZJRxABEhEKDU9GUFRNRkNfRVBFUk0QAipaChhvZnBfcXVldWVfb3BfZmFpbGVkX2NvZGUSFAoQT0ZQUU9GQ19CQURfUE9SVBAAEhUKEU9GUFFPRkNfQkFEX1FVRVVFEAESEQoNT0ZQUU9GQ19FUEVSTRACKl4KHW9mcF9zd2l0Y2hfY29uZmlnX2ZhaWxlZF9jb2RlEhUKEU9GUFNDRkNfQkFEX0ZMQUdTEAASEwoPT0ZQU0NGQ19CQURfTEVOEAESEQoNT0ZQU0NGQ19FUEVSTRACKloKHG9mcF9yb2xlX3JlcXVlc3RfZmFpbGVkX2NvZGUSEQoNT0ZQUlJGQ19TVEFMRRAAEhEKDU9GUFJSRkNfVU5TVVAQARIUChBPRlBSUkZDX0JBRF9ST0xFEAIqxAIKGW9mcF9tZXRlcl9tb2RfZmFpbGVkX2NvZGUSEwoPT0ZQTU1GQ19VTktOT1dOEAASGAoUT0ZQTU1GQ19NRVRFUl9FWElTVFMQARIZChVPRlBNTUZDX0lOVkFMSURfTUVURVIQAhIZChVPRlBNTUZDX1VOS05PV05fTUVURVIQAxIXChNPRlBNTUZDX0JBRF9DT01NQU5EEAQSFQoRT0ZQTU1GQ19CQURfRkxBR1MQBRIUChBPRlBNTUZDX0JBRF9SQVRFEAYSFQoRT0ZQTU1GQ19CQURfQlVSU1QQBxIUChBPRlBNTUZDX0JBRF9CQU5EEAgSGgoWT0ZQTU1GQ19CQURfQkFORF9WQUxVRRAJEhkKFU9GUE1NRkNfT1VUX09GX01FVEVSUxAKEhgKFE9GUE1NRkNfT1VUX09GX0JBTkRTEAsqqQEKHm9mcF90YWJsZV9mZWF0dXJlc19mYWlsZWRfY29kZRIVChFPRlBURkZDX0JBRF9UQUJMRRAAEhgKFE9GUFRGRkNfQkFEX01FVEFEQVRBEAESFAoQT0ZQVEZGQ19CQURfVFlQRRACEhMKD09GUFRGRkNfQkFEX0xFThADEhgKFE9GUFRGRkNfQkFEX0FSR1VNRU5UEAQSEQoNT0ZQVEZGQ19FUEVSTRAFKs4CChJvZnBfbXVsdGlwYXJ0X3R5cGUSDgoKT0ZQTVBfREVTQxAAEg4KCk9GUE1QX0ZMT1cQARITCg9PRlBNUF9BR0dSRUdBVEUQAhIPCgtPRlBNUF9UQUJMRRADEhQKEE9GUE1QX1BPUlRfU1RBVFMQBBIPCgtPRlBNUF9RVUVVRRAFEg8KC09GUE1QX0dST1VQEAYSFAoQT0ZQTVBfR1JPVVBfREVTQxAHEhgKFE9GUE1QX0dST1VQX0ZFQVRVUkVTEAgSDwoLT0ZQTVBfTUVURVIQCRIWChJPRlBNUF9NRVRFUl9DT05GSUcQChIYChRPRlBNUF9NRVRFUl9GRUFUVVJFUxALEhgKFE9GUE1QX1RBQkxFX0ZFQVRVUkVTEAwSEwoPT0ZQTVBfUE9SVF9ERVNDEA0SGAoST0ZQTVBfRVhQRVJJTUVOVEVSEP//AypKChtvZnBfbXVsdGlwYXJ0X3JlcXVlc3RfZmxhZ3MSFgoST0ZQTVBGX1JFUV9JTlZBTElEEAASEwoPT0ZQTVBGX1JFUV9NT1JFEAEqTAoZb2ZwX211bHRpcGFydF9yZXBseV9mbGFncxIYChRPRlBNUEZfUkVQTFlfSU5WQUxJRBAAEhUKEU9GUE1QRl9SRVBMWV9NT1JFEAEq5AMKG29mcF90YWJsZV9mZWF0dXJlX3Byb3BfdHlwZRIYChRPRlBURlBUX0lOU1RSVUNUSU9OUxAAEh0KGU9GUFRGUFRfSU5TVFJVQ1RJT05TX01JU1MQARIXChNPRlBURlBUX05FWFRfVEFCTEVTEAISHAoYT0ZQVEZQVF9ORVhUX1RBQkxFU19NSVNTEAMSGQoVT0ZQVEZQVF9XUklURV9BQ1RJT05TEAQSHgoaT0ZQVEZQVF9XUklURV9BQ1RJT05TX01JU1MQBRIZChVPRlBURlBUX0FQUExZX0FDVElPTlMQBhIeChpPRlBURlBUX0FQUExZX0FDVElPTlNfTUlTUxAHEhEKDU9GUFRGUFRfTUFUQ0gQCBIVChFPRlBURlBUX1dJTERDQVJEUxAKEhoKFk9GUFRGUFRfV1JJVEVfU0VURklFTEQQDBIfChtPRlBURlBUX1dSSVRFX1NFVEZJRUxEX01JU1MQDRIaChZPRlBURlBUX0FQUExZX1NFVEZJRUxEEA4SHwobT0ZQVEZQVF9BUFBMWV9TRVRGSUVMRF9NSVNTEA8SGgoUT0ZQVEZQVF9FWFBFUklNRU5URVIQ/v8DEh8KGU9GUFRGUFRfRVhQRVJJTUVOVEVSX01JU1MQ//8DKpMBChZvZnBfZ3JvdXBfY2FwYWJpbGl0aWVzEhIKDk9GUEdGQ19JTlZBTElEEAASGAoUT0ZQR0ZDX1NFTEVDVF9XRUlHSFQQARIaChZPRlBHRkNfU0VMRUNUX0xJVkVORVNTEAISEwoPT0ZQR0ZDX0NIQUlOSU5HEAQSGgoWT0ZQR0ZDX0NIQUlOSU5HX0NIRUNLUxAIKmsKFG9mcF9xdWV1ZV9wcm9wZXJ0aWVzEhEKDU9GUFFUX0lOVkFMSUQQABISCg5PRlBRVF9NSU5fUkFURRABEhIKDk9GUFFUX01BWF9SQVRFEAISGAoST0ZQUVRfRVhQRVJJTUVOVEVSEP//AypxChNvZnBfY29udHJvbGxlcl9yb2xlEhcKE09GUENSX1JPTEVfTk9DSEFOR0UQABIUChBPRlBDUl9ST0xFX0VRVUFMEAESFQoRT0ZQQ1JfUk9MRV9NQVNURVIQAhIUChBPRlBDUl9ST0xFX1NMQVZFEANCMlowZ2l0aHViLmNvbS9vcGVuY29yZC92b2x0aGEtcHJvdG9zL2dvL29wZW5mbG93XzEzSpGwBgoHEgU5AP8RAQrkFAoBDBIDOQASGvkGCiBUaGlzIGlzIGEgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgcmVuZGVyaW5nIG9mIE9wZW5GbG93IG1lc3NhZ2UKIGRlZmluaXRpb25zIGludG8gcHJvdG9jb2wgYnVmZmVyIG1lc3NhZ2VzLiBXZSBwcmVzZXJ2ZWQgdGhlIHNuYWtlCiBjYXNlIHN5bnRheCwgYW5kIG1hZGUgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgogLSBhbGwgcGFkIGZpZWxkcyBkcm9wcGVkCiAtIGZvciBlYWNoIGVudW0gdmFsdWUgYWJvdmUgMHg3ZmZmZmZmZiB0aGUgTVNCIGlzIGRyb3BwZWQuIEZvciBleGFtcGxlLAogICAweGZmZmZmZmZmIGlzIG5vdyAweDdmZmZmZmZmLgogLSAnPHR5cGU+IHRoaW5nWy4uLl0nIGlzIHJlcGxhY2VkIHdpdGggJ3JlcGVhdGVkIDx0eXBlPiB0aGluZycKIC0gJ2NoYXIgdGhpbmdbLi4uXScgaXMgcmVwbGFjZWQgd2l0aCAnc3RyaW5nIHRoaW5nJwogLSAndWludDhfdCBkYXRhWy4uLl0nIGlzIHJlcGxhY2VkIHdpdGggJ2J5dGVzIGRhdGEnCiAtIHRoZSBmb2xsb3dpbmcgc3lzdGVtYXRpYyBjaGFuZ2VzIGFyZSBkb25lIHRvIHZhcmlvdXMgaW50ZWdlciB0eXBlczoKICAgdWludDhfdCAgLT4gdWludDMyCiAgIHVpbnQxNl90IC0+IHVpbnQzMgogICB1aW50MzJfdCAtPiB1aW50MzIKICAgdWludDY0X3QgLT4gdWludDY0CiAtIHJlbW92ZWQgbW9zdCBsZW5ndGgsIGxlbiwgc2l6ZSBmaWVsZHMgd2hlcmUgdGhlc2UgdmFsdWVzIGNhbiBiZSBkZXRlcm1pbmVkCiAgIGZyb20gdGhlIGV4cGxpY2l0bHkgZW5jb2RlZCBsZW5ndGggb2YgInJlcGVhdGVkIiBwcm90b2J1ZiBmaWVsZHMuCiAtIGV4cGxpY2l0IHVzZSBvZiBlbnVtIHR5cGVzIHdoZXJlZXZlciBpdCBpcyB1bmFtYmlnb3VzIChhbmQgbm90IHVzZWQgYXMKICAgYml0bWFzay9mbGFncyB2YWx1ZS4KCjKmDSBDb3B5cmlnaHQgKGMpIDIwMDggVGhlIEJvYXJkIG9mIFRydXN0ZWVzIG9mIFRoZSBMZWxhbmQgU3RhbmZvcmQKIEp1bmlvciBVbml2ZXJzaXR5CiBDb3B5cmlnaHQgKGMpIDIwMTEsIDIwMTIgT3BlbiBOZXR3b3JraW5nIEZvdW5kYXRpb24KCiBXZSBhcmUgbWFraW5nIHRoZSBPcGVuRmxvdyBzcGVjaWZpY2F0aW9uIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KIChTb2Z0d2FyZSkgYXZhaWxhYmxlIGZvciBwdWJsaWMgdXNlIGFuZCBiZW5lZml0IHdpdGggdGhlIGV4cGVjdGF0aW9uCiB0aGF0IG90aGVycyB3aWxsIHVzZSwgbW9kaWZ5IGFuZCBlbmhhbmNlIHRoZSBTb2Z0d2FyZSBhbmQgY29udHJpYnV0ZQogdGhvc2UgZW5oYW5jZW1lbnRzIGJhY2sgdG8gdGhlIGNvbW11bml0eS4gSG93ZXZlciwgc2luY2Ugd2Ugd291bGQKIGxpa2UgdG8gbWFrZSB0aGUgU29mdHdhcmUgYXZhaWxhYmxlIGZvciBicm9hZGVzdCB1c2UsIHdpdGggYXMgZmV3CiByZXN0cmljdGlvbnMgYXMgcG9zc2libGUgcGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZgogY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBTb2Z0d2FyZSB0byBkZWFsIGluCiB0aGUgU29mdHdhcmUgdW5kZXIgdGhlIGNvcHlyaWdodHMgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KCiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCiBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOCiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiBTT0ZUV0FSRS4KCiBUaGUgbmFtZSBhbmQgdHJhZGVtYXJrcyBvZiBjb3B5cmlnaHQgaG9sZGVyKHMpIG1heSBOT1QgYmUgdXNlZCBpbgogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gdGhlIFNvZnR3YXJlIG9yIGFueQogZGVyaXZhdGl2ZXMgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLgoyNSBPcGVuRmxvdzogcHJvdG9jb2wgYmV0d2VlbiBjb250cm9sbGVyIGFuZCBkYXRhcGF0aC4gCggKAQgSAzsARwoJCgIICxIDOwBHCggKAQISAz0AFAoJCgIDABIDPwAmCgkKAgMBEgNAADEKCQoCCgASA0AHDQqmBAoCBQASBFUAagEaNSBQb3J0IG51bWJlcmluZy4gUG9ydHMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGZyb20gMS4gMmMgVmVyc2lvbiBudW1iZXI6CiBPcGVuRmxvdyB2ZXJzaW9ucyByZWxlYXNl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IG9uIHRoZSBleHBlcmltZW50ZXIgaGVhZGVyIHVzZWQuIDKTBSNkZWZpbmUgT1hNX0hFQURFUl9fKENMQVNTLCBGSUVMRCwgSEFTTUFTSywgTEVOR1RIKSBcCiAgICAoKChDTEFTUykgPDwgMTYpIHwgKChGSUVMRCkgPDwgOSkgfCAoKEhBU01BU0spIDw8IDgpIHwgKExFTkdUSCkpCiNkZWZpbmUgT1hNX0hFQURFUihDTEFTUywgRklFTEQsIExFTkdUSCkgXAogICAgT1hNX0hFQURFUl9fKENMQVNTLCBGSUVMRCwgMCwgTEVOR1RIKQojZGVmaW5lIE9YTV9IRUFERVJfVyhDTEFTUywgRklFTEQsIExFTkdUSCkgXAogICAgT1hNX0hFQURFUl9fKENMQVNTLCBGSUVMRCwgMSwgKExFTkdUSCkgKiAyKQojZGVmaW5lIE9YTV9DTEFTUyhIRUFERVIpICgoSEVBREVSKSA+PiAxNikKI2RlZmluZSBPWE1fRklFTEQoSEVBREVSKSAoKChIRUFERVIpID4+IDkpICYgMHg3ZikKI2RlZmluZSBPWE1fVFlQRShIRUFERVIpICgoKEhFQURFUikgPj4gOSkgJiAweDdmZmZmZikKI2RlZmluZSBPWE1fSEFTTUFTSyhIRUFERVIpICgoKEhFQURFUikgPj4gOCkgJiAxKQojZGVmaW5lIE9YTV9MRU5HVEgoSEVBREVSKSAoKEhFQURFUikgJiAweGZmKQoKI2RlZmluZSBPWE1fTUFLRV9XSUxEX0hFQURFUihIRUFERVIpIFwKICAgIE9YTV9IRUFERVJfVyhPWE1fQ0xBU1MoSEVBREVSKSwgT1hNX0ZJRUxEKEhFQURFUiksIE9YTV9MRU5HVEgoSEVBREVSKSkKCgsKAwUMARIEnQMFEgovCgQFDAIAEgSeAwQjIiEgQmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIE5YTSAKDQoFBQwCAAESBJ4DBBAKDQoFBQwCAAISBJ4DHCIKLwoEBQwCARIEnwMEIyIhIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBOWE0gCg0KBQUMAgEBEgSfAwQQCg0KBQUMAgECEgSfAxwiCigKBAUMAgISBKADBCMiGiBCYXNpYyBjbGFzcyBmb3Ig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b24gd2hpY2ggdGhlIHBhY2tldCB3YXMgcmVjZWl2ZWQuCiBNYXkgYmUgYSBwaHlzaWNhbCBwb3J0LCBhIGxvZ2ljYWwgcG9ydCwgb3IgdGhlIHJlc2VydmVkIHBvcnQgT0ZQUF9MT0NBTAoKIFByZXJlcXM6IE5vbmUuCgogRm9ybWF0OiAzMi1iaXQgaW50ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuCgogTWFza2luZzogTm90IG1hc2thYmxlLiAKDQoFBAwCAgUSBOkDCA4KDQoFBAwCAgESBOkDDxMKDQoFBAwCAgMSBOkDFhcKtwcKBAQMAgMSBIAECCEaSyNkZWZpbmUgT1hNX09GX0lOX1BIWV9QT1JUIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSU5fUEhZX1BPUlQsIDQpCiIgIFVzZWQgZm9yIE9GUFhNVF9PRl9JTl9QSFlfUE9SVCAyuQYgUGh5c2ljYWwgcG9ydCBvbiB3aGljaCB0aGUgcGFja2V0IHdhcyByZWNlaXZlZC4KCiBDb25zaWRlciBhIHBhY2tldCByZWNlaXZlZCBvbiBhIHR1bm5lbCBpbnRlcmZhY2UgZGVmaW5lZCBvdmVyIGEgbGluawogYWdncmVnYXRpb24gZ3JvdXAgKExBRykgd2l0aCB0d28gcGh5c2ljYWwgcG9ydCBtZW1iZXJzLiAgSWYgdGhlIHR1bm5lbAogaW50ZXJmYWNlIGlzIHRoZSBsb2dpY2FsIHBvcnQgYm91bmQgdG8gT3BlbkZsb3cuICBJbiB0aGlzIGNhc2UsCiBPRlBYTVRfT0ZfSU5fUE9SVCBpcyB0aGUgdHVubmVsJ3MgcG9ydCBudW1iZXIgYW5kIE9GUFhNVF9PRl9JTl9QSFlfUE9SVCBpcwogdGhlIHBoeXNpY2FsIHBvcnQgbnVtYmVyIG9mIHRoZSBMQUcgb24gd2hpY2ggdGhlIHR1bm5lbCBpcyBjb25maWd1cmVkLgoKIFdoZW4gYSBwYWNrZXQgaXMgcmVjZWl2ZWQgZGlyZWN0bHkgb24gYSBwaHlzaWNhbCBwb3J0IGFuZCBub3QgcHJvY2Vzc2VkIGJ5IGEKIGxvZ2ljYWwgcG9ydCwgT0ZQWE1UX09GX0lOX1BPUlQgYW5kIE9GUFhNVF9PRl9JTl9QSFlfUE9SVCBoYXZlIHRoZSBzYW1lCiB2YWx1ZS4KCiBUaGlzIGZpZWxkIGlzIHVzdWFsbHkgbm90IGF2YWlsYWJsZSBpbiBhIHJlZ3VsYXIgbWF0Y2ggYW5kIG9ubHkgYXZhaWxhYmxlCiBpbiBvZnBfcGFja2V0X2luIG1lc3NhZ2VzIHdoZW4gaXQncyBkaWZmZXJlbnQgZnJvbSBPWE1fT0ZfSU5fUE9SVC4KCiBQcmVyZXFzOiBPWE1fT0ZfSU5fUE9SVCBtdXN0IGJlIHByZXNlbnQuCgogRm9ybWF0OiAzMi1iaXQgaW50ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuCgogTWFza2luZzogTm90IG1hc2thYmxlLiAKDQoFBAwCAwUSBIAECA4KDQoFBAwCAwESBIAEDxwKDQoFBAwCAwMSBIAEHyAKrQIKBAQMAgQSBIwECCIajgEjZGVmaW5lIE9YTV9PRl9NRVRBREFUQSAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfTUVUQURBVEEsIDgpCiNkZWZpbmUgT1hNX09GX01FVEFEQVRBX1cgT1hNX0hFQURFUl9XKDB4ODAwMCwgT0ZQWE1UX09GQl9NRVRBREFUQSwgOCkKIh4gVXNlZCBmb3IgT0ZQWE1UX09GQl9NRVRBREFUQSAybiBUYWJsZSBtZXRhZGF0YS4KCiBQcmVyZXFzOiBOb25lLgoKIEZvcm1hdDogNjQtYml0IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLgoKIE1hc2tpbmc6IEFyYml0cmFyeSBtYXNrcy4KCg0KBQQMAgQFEgSMBAgOCg0KBQQMAgQBEgSMBA8dCg0KBQQMAgQDEgSMBCAhCuIDCgQEDAIFEgSZBAgaGpgCI2RlZmluZSBPWE1fT0ZfRVRIX0RTVCAgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0VUSF9EU1QsIDYpCiNkZWZpbmUgT1hNX09GX0VUSF9EU1RfVyAgT1hNX0hFQURFUl9XKDB4ODAwMCwgT0ZQWE1UX09GQl9FVEhfRFNULCA2KQojZGVmaW5lIE9YTV9PRl9FVEhfU1JDICAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfRVRIX1NSQywgNikKI2RlZmluZSBPWE1fT0ZfRVRIX1NSQ19XICBPWE1fSEVBREVSX1coMHg4MDAwLCBPRlBYTVRfT0ZCX0VUSF9TUkMsIDYpCiIvIFVzZWQgZm9yIE9GUFhNVF9PRkJfRVRIX0RTVCAoZXhhY3RseSA2IGJ5dGVzKSAyhwEgU291cmNlIG9yIGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gRXRoZXJuZXQgaGVhZGVyLgoKIFByZXJlcXM6IE5vbmUuCgogRm9ybWF0OiA0OC1iaXQgRXRoZXJuZXQgTUFDIGFkZHJlc3MuCgogTWFza2luZzogQXJiaXRyYXJ5IG1hc2tzLiAKDQoFBAwCBQUSBJkECA0KDQoFBAwCBQESBJkEDhUKDQoFBAwCBQMSBJkEGBkKPQoEBAwCBhIEmgQIGiIvIFVzZWQgZm9yIE9GUFhNVF9PRkJfRVRIX1NSQyAoZXhhY3RseSA2IGJ5dGVzKSAKDQoFBAwCBgUSBJoECA0KDQoFBAwCBgESBJoEDhUKDQoFBAwCBgMSBJoEGBkK6QEKBAQMAgcSBKQECBwaRiNkZWZpbmUgT1hNX09GX0VUSF9UWVBFICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9FVEhfVFlQRSwyKQoiHiBVc2VkIGZvciBPRlBYTVRfT0ZCX0VUSF9UWVBFIDJzIFBhY2tldCdzIEV0aGVybmV0IHR5cGUuCgogUHJlcmVxczogTm9uZS4KCiBGb3JtYXQ6IDE2LWJpdCBpbnRlZ2VyIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAIHBRIEpAQIDgoNCgUEDAIHARIEpAQPFwoNCgUEDAIHAxIEpAQaGwqDCwoEBAwCCBIEygQIHBqOASNkZWZpbmUgT1hNX09GX1ZMQU5fVklEICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9WTEFOX1ZJRCwgMikKI2RlZmluZSBPWE1fT0ZfVkxBTl9WSURfVyBPWE1fSEVBREVSX1coMHg4MDAwLCBPRlBYTVRfT0ZCX1ZMQU5fVklELCAyKQoiHiBVc2VkIGZvciBPRlBYTVRfT0ZCX1ZMQU5fVklEIDLDCSA4MDIuMVEgVklELgoKIEZvciBhIHBhY2tldCB3aXRoIGFuIDgwMi4xUSBoZWFkZXIsIHRoaXMgaXMgdGhlIFZMQU4tSUQgKFZJRCkgZnJvbSB0aGUKIG91dGVybW9zdCB0YWcsIHdpdGggdGhlIENGSSBiaXQgZm9yY2VkIHRvIDEuIEZvciBhIHBhY2tldCB3aXRoIG5vIDgwMi4xUQogaGVhZGVyLCB0aGlzIGhhcyB2YWx1ZSBPRlBWSURfTk9ORS4KCiBQcmVyZXFzOiBOb25lLgoKIEZvcm1hdDogMTYtYml0IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyIHdpdGggYml0IDEzIGluZGljYXRpbmcKIHByZXNlbmNlIG9mIFZMQU4gaGVhZGVyIGFuZCAzIG1vc3Qtc2lnbmlmaWNhbnQgYml0cyBmb3JjZWQgdG8gMC4KIE9ubHkgdGhlIGxvd2VyIDEzIGJpdHMgaGF2ZSBtZWFuaW5nLgoKIE1hc2tpbmc6IEFyYml0cmFyeSBtYXNrcy4KCiBUaGlzIGZpZWxkIGNhbiBiZSB1c2VkIGluIHZhcmlvdXMgd2F5czoKCiAgIC0gSWYgaXQgaXMgbm90IGNvbnN0cmFpbmVkIGF0IGFsbCwgdGhlIG54X21hdGNoIG1hdGNoZXMgcGFja2V0cyB3aXRob3V0CiAgICAgYW4gODAyLjFRIGhlYWRlciBvciB3aXRoIGFuIDgwMi4xUSBoZWFkZXIgdGhhdCBoYXMgYW55IFZJRCB2YWx1ZS4KCiAgIC0gVGVzdGluZyBmb3IgYW4gZXhhY3QgbWF0Y2ggd2l0aCAweDAgbWF0Y2hlcyBvbmx5IHBhY2tldHMgd2l0aG91dAogICAgIGFuIDgwMi4xUSBoZWFkZXIuCgogICAtIFRlc3RpbmcgZm9yIGFuIGV4YWN0IG1hdGNoIHdpdGggYSBWSUQgdmFsdWUgd2l0aCBDRkk9MSBtYXRjaGVzIHBhY2tldHMKICAgICB0aGF0IGhhdmUgYW4gODAyLjFRIGhlYWRlciB3aXRoIGEgc3BlY2lmaWVkIFZJRC4KCiAgIC0gVGVzdGluZyBmb3IgYW4gZXhhY3QgbWF0Y2ggd2l0aCBhIG5vbnplcm8gVklEIHZhbHVlIHdpdGggQ0ZJPTAgZG9lcwogICAgIG5vdCBtYWtlIHNlbnNlLiAgVGhlIHN3aXRjaCBtYXkgcmVqZWN0IHRoaXMgY29tYmluYXRpb24uCgogICAtIFRlc3Rpbmcgd2l0aCBueG1fdmFsdWU9MCwgbnhtX21hc2s9MHgwZmZmIG1hdGNoZXMgcGFja2V0cyB3aXRoIG5vIDgwMi4xUQogICAgIGhlYWRlciBvciB3aXRoIGFuIDgwMi4xUSBoZWFkZXIgd2l0aCBhIFZJRCBvZiAwLgoKICAgLSBUZXN0aW5nIHdpdGggbnhtX3ZhbHVlPTB4MTAwMCwgbnhtX21hc2s9MHgxMDAwIG1hdGNoZXMgcGFja2V0cyB3aXRoCiAgICAgYW4gODAyLjFRIGhlYWRlciB0aGF0IGhhcyBhbnkgVklEIHZhbHVlLgoKDQoFBAwCCAUSBMoECA4KDQoFBAwCCAESBMoEDxcKDQoFBAwCCAMSBMoEGhsK0AMKBAQMAgkSBNoECB0aRyNkZWZpbmUgT1hNX09GX1ZMQU5fUENQICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9WTEFOX1BDUCwgMSkKIh4gVXNlZCBmb3IgT0ZQWE1UX09GQl9WTEFOX1BDUCAy2AIgODAyLjFRIFBDUC4KCiBGb3IgYSBwYWNrZXQgd2l0aCBhbiA4MDIuMVEgaGVhZGVyLCB0aGlzIGlzIHRoZSBWTEFOLVBDUCBmcm9tIHRoZQogb3V0ZXJtb3N0IHRhZy4gIEZvciBhIHBhY2tldCB3aXRoIG5vIDgwMi4xUSBoZWFkZXIsIHRoaXMgaGFzIHZhbHVlCiAwLgoKIFByZXJlcXM6IE9YTV9PRl9WTEFOX1ZJRCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIE9GUFZJRF9OT05FLgoKIEZvcm1hdDogOC1iaXQgaW50ZWdlciB3aXRoIDUgbW9zdC1zaWduaWZpY2FudCBiaXRzIGZvcmNlZCB0byAwLgogT25seSB0aGUgbG93ZXIgMyBiaXRzIGhhdmUgbWVhbmluZy4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuCgoNCgUEDAIJBRIE2gQIDgoNCgUEDAIJARIE2gQPFwoNCgUEDAIJAxIE2gQaHAqoAwoEBAwCChIE5gQIHBpHI2RlZmluZSBPWE1fT0ZfSVBfRFNDUCAgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9JUF9EU0NQLCAxKQoiHSBVc2VkIGZvciBPRlBYTVRfT0ZCX0lQX0RTQ1AgMrECIFRoZSBEaWZmIFNlcnYgQ29kZSBQb2ludCAoRFNDUCkgYml0cyBvZiB0aGUgSVAgaGVhZGVyLgogUGFydCBvZiB0aGUgSVB2NCBUb1MgZmllbGQgb3IgdGhlIElQdjYgVHJhZmZpYyBDbGFzcyBmaWVsZC4KCiBQcmVyZXFzOiBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBiZSBlaXRoZXIgMHgwODAwIG9yIDB4ODZkZC4KCiBGb3JtYXQ6IDgtYml0IGludGVnZXIgd2l0aCAyIG1vc3Qtc2lnbmlmaWNhbnQgYml0cyBmb3JjZWQgdG8gMC4KIE9ubHkgdGhlIGxvd2VyIDYgYml0cyBoYXZlIG1lYW5pbmcuCgogTWFza2luZzogTm90IG1hc2thYmxlLiAKDQoFBAwCCgUSBOYECA4KDQoFBAwCCgESBOYEDxYKDQoFBAwCCgMSBOYEGRsKjQMKBAQMAgsSBPIECBsaRSNkZWZpbmUgT1hNX09GX0lQX0VDTiAgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9JUF9FQ04sIDEpCiIcIFVzZWQgZm9yIE9GUFhNVF9PRkJfSVBfRUNOIDKZAiBUaGUgRUNOIGJpdHMgb2YgdGhlIElQIGhlYWRlci4KIFBhcnQgb2YgdGhlIElQdjQgVG9TIGZpZWxkIG9yIHRoZSBJUHY2IFRyYWZmaWMgQ2xhc3MgZmllbGQuCgogUHJlcmVxczogT1hNX09GX0VUSF9UWVBFIG11c3QgYmUgZWl0aGVyIDB4MDgwMCBvciAweDg2ZGQuCgogRm9ybWF0OiA4LWJpdCBpbnRlZ2VyIHdpdGggNiBtb3N0LXNpZ25pZmljYW50IGJpdHMgZm9yY2VkIHRvIDAuCiBPbmx5IHRoZSBsb3dlciAyIGJpdHMgaGF2ZSBtZWFuaW5nLgoKIE1hc2tpbmc6IE5vdCBtYXNrYWJsZS4gCg0KBQQMAgsFEgTyBAgOCg0KBQQMAgsBEgTyBA8VCg0KBQQMAgsDEgTyBBgaCo0CCgQEDAIMEgT8BAgdGkcjZGVmaW5lIE9YTV9PRl9JUF9QUk9UTyAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSVBfUFJPVE8sIDEpCiIeIFVzZWQgZm9yIE9GUFhNVF9PRkJfSVBfUFJPVE8gMpUBIFRoZSAicHJvdG9jb2wiIGJ5dGUgaW4gdGhlIElQIGhlYWRlci4KCiBQcmVyZXFzOiBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBiZSBlaXRoZXIgMHgwODAwIG9yIDB4ODZkZC4KCiBGb3JtYXQ6IDgtYml0IGludGVnZXIuCgogTWFza2luZzogTm90IG1hc2thYmxlLiAKDQoFBAwCDAUSBPwECA4KDQoFBAwCDAESBPwEDxcKDQoFBAwCDAMSBPwEGhwKjQQKBAQMAg0SBIoFCB0apAIjZGVmaW5lIE9YTV9PRl9JUFY0X1NSQyAgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9JUFY0X1NSQywgNCkKI2RlZmluZSBPWE1fT0ZfSVBWNF9TUkNfVyAgIE9YTV9IRUFERVJfVygweDgwMDAsIE9GUFhNVF9PRkJfSVBWNF9TUkMsIDQpCiNkZWZpbmUgT1hNX09GX0lQVjRfRFNUICAgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0lQVjRfRFNULCA0KQojZGVmaW5lIE9YTV9PRl9JUFY0X0RTVF9XICAgT1hNX0hFQURFUl9XKDB4ODAwMCwgT0ZQWE1UX09GQl9JUFY0X0RTVCwgNCkKIh4gVXNlZCBmb3IgT0ZQWE1UX09GQl9JUFY0X1NSQyAytwEgVGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIHRoZSBJUCBoZWFkZXIuCgogUHJlcmVxczogT1hNX09GX0VUSF9UWVBFIG11c3QgbWF0Y2ggMHgwODAwIGV4YWN0bHkuCgogRm9ybWF0OiAzMi1iaXQgaW50ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuCgogTWFza2luZzogQXJiaXRyYXJ5IG1hc2tzLgoKDQoFBAwCDQUSBIoFCA4KDQoFBAwCDQESBIoFDxcKDQoFBAwCDQMSBIoFGhwKLAoEBAwCDhIEiwUIHSIeIFVzZWQgZm9yIE9GUFhNVF9PRkJfSVBWNF9EU1QgCg0KBQQMAg4FEgSLBQgOCg0KBQQMAg4BEgSLBQ8XCg0KBQQMAg4DEgSLBRocCqEDCgQEDAIPEgSYBQgcGowBI2RlZmluZSBPWE1fT0ZfVENQX1NSQyAgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX1RDUF9TUkMsIDIpCiNkZWZpbmUgT1hNX09GX1RDUF9EU1QgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9UQ1BfRFNULCAyKQoiHSBVc2VkIGZvciBPRlBYTVRfT0ZCX1RDUF9TUkMgMuQBIFRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gcG9ydCBpbiB0aGUgVENQIGhlYWRlci4KCiBQcmVyZXFzOgogICBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBiZSBlaXRoZXIgMHgwODAwIG9yIDB4ODZkZC4KICAgT1hNX09GX0lQX1BST1RPIG11c3QgbWF0Y2ggNiBleGFjdGx5LgoKIEZvcm1hdDogMTYtYml0IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLgoKIE1hc2tpbmc6IE5vdCBtYXNrYWJsZS4gCg0KBQQMAg8FEgSYBQgOCg0KBQQMAg8BEgSYBQ8WCg0KBQQMAg8DEgSYBRkbCisKBAQMAhASBJkFCBwiHSBVc2VkIGZvciBPRlBYTVRfT0ZCX1RDUF9EU1QgCg0KBQQMAhAFEgSZBQgOCg0KBQQMAhABEgSZBQ8WCg0KBQQMAhADEgSZBRkbCqUDCgQEDAIREgSmBQgcGowBI2RlZmluZSBPWE1fT0ZfVURQX1NSQyAgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX1VEUF9TUkMsIDIpCiNkZWZpbmUgT1hNX09GX1VEUF9EU1QgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9VRFBfRFNULCAyKQoiHSBVc2VkIGZvciBPRlBYTVRfT0ZCX1VEUF9TUkMgMugBIFRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24gcG9ydCBpbiB0aGUgVURQIGhlYWRlci4KCiBQcmVyZXFzOgogICBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBtYXRjaCBlaXRoZXIgMHgwODAwIG9yIDB4ODZkZC4KICAgT1hNX09GX0lQX1BST1RPIG11c3QgbWF0Y2ggMTcgZXhhY3RseS4KCiBGb3JtYXQ6IDE2LWJpdCBpbnRlZ2VyIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAIRBRIEpgUIDgoNCgUEDAIRARIEpgUPFgoNCgUEDAIRAxIEpgUZGworCgQEDAISEgSnBQgcIh0gVXNlZCBmb3IgT0ZQWE1UX09GQl9VRFBfRFNUIAoNCgUEDAISBRIEpwUIDgoNCgUEDAISARIEpwUPFgoNCgUEDAISAxIEpwUZGwqqAwoEBAwCExIEtAUIHRqOASNkZWZpbmUgT1hNX09GX1NDVFBfU1JDICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9TQ1RQX1NSQywgMikKI2RlZmluZSBPWE1fT0ZfU0NUUF9EU1QgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX1NDVFBfRFNULCAyKQoiHiBVc2VkIGZvciBPRlBYTVRfT0ZCX1NDVFBfU1JDIDLqASBUaGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIHBvcnQgaW4gdGhlIFNDVFAgaGVhZGVyLgoKIFByZXJlcXM6CiAgIE9YTV9PRl9FVEhfVFlQRSBtdXN0IG1hdGNoIGVpdGhlciAweDA4MDAgb3IgMHg4NmRkLgogICBPWE1fT0ZfSVBfUFJPVE8gbXVzdCBtYXRjaCAxMzIgZXhhY3RseS4KCiBGb3JtYXQ6IDE2LWJpdCBpbnRlZ2VyIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAITBRIEtAUIDgoNCgUEDAITARIEtAUPFwoNCgUEDAITAxIEtAUaHAosCgQEDAIUEgS1BQgdIh4gVXNlZCBmb3IgT0ZQWE1UX09GQl9TQ1RQX0RTVCAKDQoFBAwCFAUSBLUFCA4KDQoFBAwCFAESBLUFDxcKDQoFBAwCFAMSBLUFGhwKhwMKBAQMAhUSBMIFCCAamAEjZGVmaW5lIE9YTV9PRl9JQ01QVjRfVFlQRSAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9JQ01QVjRfVFlQRSwgMSkKI2RlZmluZSBPWE1fT0ZfSUNNUFY0X0NPREUgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSUNNUFY0X0NPREUsIDEpCiIhIFVzZWQgZm9yIE9GUFhNVF9PRkJfSUNNUFY0X1RZUEUgMroBIFRoZSB0eXBlIG9yIGNvZGUgaW4gdGhlIElDTVAgaGVhZGVyLgoKIFByZXJlcXM6CiAgIE9YTV9PRl9FVEhfVFlQRSBtdXN0IG1hdGNoIDB4MDgwMCBleGFjdGx5LgogICBPWE1fT0ZfSVBfUFJPVE8gbXVzdCBtYXRjaCAxIGV4YWN0bHkuCgogRm9ybWF0OiA4LWJpdCBpbnRlZ2VyLgoKIE1hc2tpbmc6IE5vdCBtYXNrYWJsZS4gCg0KBQQMAhUFEgTCBQgOCg0KBQQMAhUBEgTCBQ8aCg0KBQQMAhUDEgTCBR0fCi8KBAQMAhYSBMMFCCAiISBVc2VkIGZvciBPRlBYTVRfT0ZCX0lDTVBWNF9DT0RFIAoNCgUEDAIWBRIEwwUIDgoNCgUEDAIWARIEwwUPGgoNCgUEDAIWAxIEwwUdHwrVAgoEBAwCFxIE0AUIGxpFI2RlZmluZSBPWE1fT0ZfQVJQX09QICAgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0FSUF9PUCwgMikKIhwgVXNlZCBmb3IgT0ZQWE1UX09GQl9BUlBfT1AgMuEBIEFSUCBvcGNvZGUuCgogRm9yIGFuIEV0aGVybmV0K0lQIEFSUCBwYWNrZXQsIHRoZSBvcGNvZGUgaW4gdGhlIEFSUCBoZWFkZXIuICBBbHdheXMgMAogb3RoZXJ3aXNlLgoKIFByZXJlcXM6IE9YTV9PRl9FVEhfVFlQRSBtdXN0IG1hdGNoIDB4MDgwNiBleGFjdGx5LgoKIEZvcm1hdDogMTYtYml0IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLgoKIE1hc2tpbmc6IE5vdCBtYXNrYWJsZS4gCg0KBQQMAhcFEgTQBQgOCg0KBQQMAhcBEgTQBQ8VCg0KBQQMAhcDEgTQBRgaCrUECgQEDAIYEgTfBQgcGpgCI2RlZmluZSBPWE1fT0ZfQVJQX1NQQSAgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0FSUF9TUEEsIDQpCiNkZWZpbmUgT1hNX09GX0FSUF9TUEFfVyAgT1hNX0hFQURFUl9XKDB4ODAwMCwgT0ZQWE1UX09GQl9BUlBfU1BBLCA0KQojZGVmaW5lIE9YTV9PRl9BUlBfVFBBICAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfQVJQX1RQQSwgNCkKI2RlZmluZSBPWE1fT0ZfQVJQX1RQQV9XICBPWE1fSEVBREVSX1coMHg4MDAwLCBPRlBYTVRfT0ZCX0FSUF9UUEEsIDQpCiIYIEZvciBPRlBYTVRfT0ZCX0FSUF9TUEEgMvEBIEZvciBhbiBFdGhlcm5ldCtJUCBBUlAgcGFja2V0LCB0aGUgc291cmNlIG9yIHRhcmdldCBwcm90b2NvbCBhZGRyZXNzCiBpbiB0aGUgQVJQIGhlYWRlci4gIEFsd2F5cyAwIG90aGVyd2lzZS4KCiBQcmVyZXFzOiBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBtYXRjaCAweDA4MDYgZXhhY3RseS4KCiBGb3JtYXQ6IDMyLWJpdCBpbnRlZ2VyIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4KCiBNYXNraW5nOiBBcmJpdHJhcnkgbWFza3MuCgoNCgUEDAIYBRIE3wUIDgoNCgUEDAIYARIE3wUPFgoNCgUEDAIYAxIE3wUZGwomCgQEDAIZEgTgBQgcIhggRm9yIE9GUFhNVF9PRkJfQVJQX1RQQSAKDQoFBAwCGQUSBOAFCA4KDQoFBAwCGQESBOAFDxYKDQoFBAwCGQMSBOAFGRsKtwQKBAQMAhoSBO4FCBsanAIjZGVmaW5lIE9YTV9PRl9BUlBfU0hBICAgIE9YTV9IRUFERVIgICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0FSUF9TSEEsIDYpCiNkZWZpbmUgT1hNX09GX0FSUF9TSEFfVyAgT1hNX0hFQURFUl9XICgweDgwMDAsIE9GUFhNVF9PRkJfQVJQX1NIQSwgNikKI2RlZmluZSBPWE1fT0ZfQVJQX1RIQSAgICBPWE1fSEVBREVSICAgKDB4ODAwMCwgT0ZQWE1UX09GQl9BUlBfVEhBLCA2KQojZGVmaW5lIE9YTV9PRl9BUlBfVEhBX1cgIE9YTV9IRUFERVJfVyAoMHg4MDAwLCBPRlBYTVRfT0ZCX0FSUF9USEEsIDYpCiIiIEZvciBPRlBYTVRfT0ZCX0FSUF9TSEEgKDYgYnl0ZXMpIDLlASBGb3IgYW4gRXRoZXJuZXQrSVAgQVJQIHBhY2tldCwgdGhlIHNvdXJjZSBvciB0YXJnZXQgaGFyZHdhcmUgYWRkcmVzcwogaW4gdGhlIEFSUCBoZWFkZXIuICBBbHdheXMgMCBvdGhlcndpc2UuCgogUHJlcmVxczogT1hNX09GX0VUSF9UWVBFIG11c3QgbWF0Y2ggMHgwODA2IGV4YWN0bHkuCgogRm9ybWF0OiA0OC1iaXQgRXRoZXJuZXQgTUFDIGFkZHJlc3MuCgogTWFza2luZzogTm90IG1hc2thYmxlLiAKDQoFBAwCGgUSBO4FCA0KDQoFBAwCGgESBO4FDhUKDQoFBAwCGgMSBO4FGBoKMAoEBAwCGxIE7wUIGyIiIEZvciBPRlBYTVRfT0ZCX0FSUF9USEEgKDYgYnl0ZXMpIAoNCgUEDAIbBRIE7wUIDQoNCgUEDAIbARIE7wUOFQoNCgUEDAIbAxIE7wUYGgr6AwoEBAwCHBIE/QUIHBqkAiNkZWZpbmUgT1hNX09GX0lQVjZfU1JDICAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSVBWNl9TUkMsIDE2KQojZGVmaW5lIE9YTV9PRl9JUFY2X1NSQ19XICBPWE1fSEVBREVSX1coMHg4MDAwLCBPRlBYTVRfT0ZCX0lQVjZfU1JDLCAxNikKI2RlZmluZSBPWE1fT0ZfSVBWNl9EU1QgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9JUFY2X0RTVCwgMTYpCiNkZWZpbmUgT1hNX09GX0lQVjZfRFNUX1cgIE9YTV9IRUFERVJfVygweDgwMDAsIE9GUFhNVF9PRkJfSVBWNl9EU1QsIDE2KQoiGSBGb3IgT0ZQWE1UX09GQl9JUFY2X1NSQyAyqQEgVGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIHRoZSBJUHY2IGhlYWRlci4KCiBQcmVyZXFzOiBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBtYXRjaCAweDg2ZGQgZXhhY3RseS4KCiBGb3JtYXQ6IDEyOC1iaXQgSVB2NiBhZGRyZXNzLgoKIE1hc2tpbmc6IEFyYml0cmFyeSBtYXNrcy4KCg0KBQQMAhwFEgT9BQgNCg0KBQQMAhwBEgT9BQ4WCg0KBQQMAhwDEgT9BRkbCicKBAQMAh0SBP4FCBwiGSBGb3IgT0ZQWE1UX09GQl9JUFY2X0RTVCAKDQoFBAwCHQUSBP4FCA0KDQoFBAwCHQESBP4FDhYKDQoFBAwCHQMSBP4FGRsKnQMKBAQMAh4SBIwGCCAamgEjZGVmaW5lIE9YTV9PRl9JUFY2X0ZMQUJFTCAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSVBWNl9GTEFCRUwsIDQpCiNkZWZpbmUgT1hNX09GX0lQVjZfRkxBQkVMX1cgT1hNX0hFQURFUl9XKDB4ODAwMCwgT0ZQWE1UX09GQl9JUFY2X0ZMQUJFTCwgNCkKIhwgRm9yIE9GUFhNVF9PRkJfSVBWNl9GTEFCRUwgMtMBIFRoZSBJUHY2IEZsb3cgTGFiZWwKCiBQcmVyZXFzOgogICBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBtYXRjaCAweDg2ZGQgZXhhY3RseQoKIEZvcm1hdDogMzItYml0IGludGVnZXIgd2l0aCAxMiBtb3N0LXNpZ25pZmljYW50IGJpdHMgZm9yY2VkIHRvIDAuCiBPbmx5IHRoZSBsb3dlciAyMCBiaXRzIGhhdmUgbWVhbmluZy4KCiBNYXNraW5nOiBBcmJpdHJhcnkgbWFza3MuCgoNCgUEDAIeBRIEjAYIDgoNCgUEDAIeARIEjAYPGgoNCgUEDAIeAxIEjAYdHwqDAwoEBAwCHxIEmQYIIBqWASNkZWZpbmUgT1hNX09GX0lDTVBWNl9UWVBFIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSUNNUFY2X1RZUEUsIDEpCiNkZWZpbmUgT1hNX09GX0lDTVBWNl9DT0RFIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSUNNUFY2X0NPREUsIDEpCiIcIEZvciBPRlBYTVRfT0ZCX0lDTVBWNl9UWVBFIDK9ASBUaGUgdHlwZSBvciBjb2RlIGluIHRoZSBJQ01QdjYgaGVhZGVyLgoKIFByZXJlcXM6CiAgIE9YTV9PRl9FVEhfVFlQRSBtdXN0IG1hdGNoIDB4ODZkZCBleGFjdGx5LgogICBPWE1fT0ZfSVBfUFJPVE8gbXVzdCBtYXRjaCA1OCBleGFjdGx5LgoKIEZvcm1hdDogOC1iaXQgaW50ZWdlci4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAIfBRIEmQYIDgoNCgUEDAIfARIEmQYPGgoNCgUEDAIfAxIEmQYdHwoqCgQEDAIgEgSaBgggIhwgRm9yIE9GUFhNVF9PRkJfSUNNUFY2X0NPREUgCg0KBQQMAiAFEgSaBggOCg0KBQQMAiABEgSaBg8aCg0KBQQMAiADEgSaBh0fCpEDCgQEDAIhEgSoBggiGlcjZGVmaW5lIE9YTV9PRl9JUFY2X05EX1RBUkdFVCBPWE1fSEVBREVSIFwKICAgICgweDgwMDAsIE9GUFhNVF9PRkJfSVBWNl9ORF9UQVJHRVQsIDE2KQoiHyBGb3IgT0ZQWE1UX09GQl9JUFY2X05EX1RBUkdFVCAyiAIgVGhlIHRhcmdldCBhZGRyZXNzIGluIGFuIElQdjYgTmVpZ2hib3IgRGlzY292ZXJ5IG1lc3NhZ2UuCgogUHJlcmVxczoKICAgT1hNX09GX0VUSF9UWVBFIG11c3QgbWF0Y2ggMHg4NmRkIGV4YWN0bHkuCiAgIE9YTV9PRl9JUF9QUk9UTyBtdXN0IG1hdGNoIDU4IGV4YWN0bHkuCiAgIE9YTV9PRl9JQ01QVjZfVFlQRSBtdXN0IGJlIGVpdGhlciAxMzUgb3IgMTM2LgoKIEZvcm1hdDogMTI4LWJpdCBJUHY2IGFkZHJlc3MuCgogTWFza2luZzogTm90IG1hc2thYmxlLiAKDQoFBAwCIQUSBKgGCA0KDQoFBAwCIQESBKgGDhwKDQoFBAwCIQMSBKgGHyEKlwMKBAQMAiISBLYGCB8aTCNkZWZpbmUgT1hNX09GX0lQVjZfTkRfU0xMICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0lQVjZfTkRfU0xMLCA2KQoiHCBGb3IgT0ZQWE1UX09GQl9JUFY2X05EX1NMTCAynAIgVGhlIHNvdXJjZSBsaW5rLWxheWVyIGFkZHJlc3Mgb3B0aW9uIGluIGFuIElQdjYgTmVpZ2hib3IgRGlzY292ZXJ5CiBtZXNzYWdlLgoKIFByZXJlcXM6CiAgIE9YTV9PRl9FVEhfVFlQRSBtdXN0IG1hdGNoIDB4ODZkZCBleGFjdGx5LgogICBPWE1fT0ZfSVBfUFJPVE8gbXVzdCBtYXRjaCA1OCBleGFjdGx5LgogICBPWE1fT0ZfSUNNUFY2X1RZUEUgbXVzdCBiZSBleGFjdGx5IDEzNS4KCiBGb3JtYXQ6IDQ4LWJpdCBFdGhlcm5ldCBNQUMgYWRkcmVzcy4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAIiBRIEtgYIDQoNCgUEDAIiARIEtgYOGQoNCgUEDAIiAxIEtgYcHgqXAwoEBAwCIxIExAYIHxpMI2RlZmluZSBPWE1fT0ZfSVBWNl9ORF9UTEwgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfSVBWNl9ORF9UTEwsIDYpCiIcIEZvciBPRlBYTVRfT0ZCX0lQVjZfTkRfVExMIDKcAiBUaGUgdGFyZ2V0IGxpbmstbGF5ZXIgYWRkcmVzcyBvcHRpb24gaW4gYW4gSVB2NiBOZWlnaGJvciBEaXNjb3ZlcnkKIG1lc3NhZ2UuCgogUHJlcmVxczoKICAgT1hNX09GX0VUSF9UWVBFIG11c3QgbWF0Y2ggMHg4NmRkIGV4YWN0bHkuCiAgIE9YTV9PRl9JUF9QUk9UTyBtdXN0IG1hdGNoIDU4IGV4YWN0bHkuCiAgIE9YTV9PRl9JQ01QVjZfVFlQRSBtdXN0IGJlIGV4YWN0bHkgMTM2LgoKIEZvcm1hdDogNDgtYml0IEV0aGVybmV0IE1BQyBhZGRyZXNzLgoKIE1hc2tpbmc6IE5vdCBtYXNrYWJsZS4gCg0KBQQMAiMFEgTEBggNCg0KBQQMAiMBEgTEBg4ZCg0KBQQMAiMDEgTEBhweCv4CCgQEDAIkEgTQBggfGkojZGVmaW5lIE9YTV9PRl9NUExTX0xBQkVMICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX01QTFNfTEFCRUwsIDQpCiIbIEZvciBPRlBYTVRfT0ZCX01QTFNfTEFCRUwgMoYCIFRoZSBMQUJFTCBpbiB0aGUgZmlyc3QgTVBMUyBzaGltIGhlYWRlci4KCiBQcmVyZXFzOgogICBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBtYXRjaCAweDg4NDcgb3IgMHg4ODQ4IGV4YWN0bHkuCgogRm9ybWF0OiAzMi1iaXQgaW50ZWdlciBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgd2l0aCAxMiBtb3N0LXNpZ25pZmljYW50CiBiaXRzIGZvcmNlZCB0byAwLiBPbmx5IHRoZSBsb3dlciAyMCBiaXRzIGhhdmUgbWVhbmluZy4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAIkBRIE0AYIDgoNCgUEDAIkARIE0AYPGQoNCgUEDAIkAxIE0AYcHgrcAgoEBAwCJRIE3AYIHBpHI2RlZmluZSBPWE1fT0ZfTVBMU19UQyAgICAgT1hNX0hFQURFUiAgKDB4ODAwMCwgT0ZQWE1UX09GQl9NUExTX1RDLCAxKQoiGCBGb3IgT0ZQWE1UX09GQl9NUExTX1RDIDLqASBUaGUgVEMgaW4gdGhlIGZpcnN0IE1QTFMgc2hpbSBoZWFkZXIuCgogUHJlcmVxczoKICAgT1hNX09GX0VUSF9UWVBFIG11c3QgbWF0Y2ggMHg4ODQ3IG9yIDB4ODg0OCBleGFjdGx5LgoKIEZvcm1hdDogOC1iaXQgaW50ZWdlciB3aXRoIDUgbW9zdC1zaWduaWZpY2FudCBiaXRzIGZvcmNlZCB0byAwLgogT25seSB0aGUgbG93ZXIgMyBiaXRzIGhhdmUgbWVhbmluZy4KCiBNYXNraW5nOiBOb3QgbWFza2FibGUuIAoNCgUEDAIlBRIE3AYIDgoNCgUEDAIlARIE3AYPFgoNCgUEDAIlAxIE3AYZGwrkAgoEBAwCJhIE6AYIHRpJI2RlZmluZSBPWE1fT0ZfTVBMU19CT1MgICAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfTVBMU19CT1MsIDEpCiIZIEZvciBPRlBYTVRfT0ZCX01QTFNfQk9TIDLvASBUaGUgQm9TIGJpdCBpbiB0aGUgZmlyc3QgTVBMUyBzaGltIGhlYWRlci4KCiBQcmVyZXFzOgogICBPWE1fT0ZfRVRIX1RZUEUgbXVzdCBtYXRjaCAweDg4NDcgb3IgMHg4ODQ4IGV4YWN0bHkuCgogRm9ybWF0OiA4LWJpdCBpbnRlZ2VyIHdpdGggNyBtb3N0LXNpZ25pZmljYW50IGJpdHMgZm9yY2VkIHRvIDAuCiBPbmx5IHRoZSBsb3dlc3QgYml0IGhhdmUgYSBtZWFuaW5nLgoKIE1hc2tpbmc6IE5vdCBtYXNrYWJsZS4gCg0KBQQMAiYFEgToBggOCg0KBQQMAiYBEgToBg8XCg0KBQQMAiYDEgToBhocCqoDCgQEDAInEgT3BggdGo4BI2RlZmluZSBPWE1fT0ZfUEJCX0lTSUQgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX1BCQl9JU0lELCAzKQojZGVmaW5lIE9YTV9PRl9QQkJfSVNJRF9XIE9YTV9IRUFERVJfVygweDgwMDAsIE9GUFhNVF9PRkJfUEJCX0lTSUQsIDMpCiIZIEZvciBPRlBYTVRfT0ZCX1BCQl9JU0lEIDLvASBJRUVFIDgwMi4xYWggSS1TSUQuCgogRm9yIGEgcGFja2V0IHdpdGggYSBQQkIgaGVhZGVyLCB0aGlzIGlzIHRoZSBJLVNJRCBmcm9tIHRoZQogb3V0ZXJtb3N0IHNlcnZpY2UgdGFnLgoKIFByZXJlcXM6CiAgIE9YTV9PRl9FVEhfVFlQRSBtdXN0IG1hdGNoIDB4ODhFNyBleGFjdGx5LgoKIEZvcm1hdDogMjQtYml0IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLgoKIE1hc2tpbmc6IEFyYml0cmFyeSBtYXNrcy4gCg0KBQQMAicFEgT3BggOCg0KBQQMAicBEgT3Bg8XCg0KBQQMAicDEgT3BhocCrwGCgQEDAIoEgSLBwgeGpQBI2RlZmluZSBPWE1fT0ZfVFVOTkVMX0lEICAgIE9YTV9IRUFERVIgICgweDgwMDAsIE9GUFhNVF9PRkJfVFVOTkVMX0lELCA4KQojZGVmaW5lIE9YTV9PRl9UVU5ORUxfSURfVyAgT1hNX0hFQURFUl9XKDB4ODAwMCwgT0ZQWE1UX09GQl9UVU5ORUxfSUQsIDgpCiIaIEZvciBPRlBYTVRfT0ZCX1RVTk5FTF9JRCAy+gQgTG9naWNhbCBQb3J0IE1ldGFkYXRhLgoKIE1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGxvZ2ljYWwgcG9ydC4KIElmIHRoZSBsb2dpY2FsIHBvcnQgcGVyZm9ybXMgZW5jYXBzdWxhdGlvbiBhbmQgZGVjYXBzdWxhdGlvbiwgdGhpcwogaXMgdGhlIGRlbXVsdGlwbGV4aW5nIGZpZWxkIGZyb20gdGhlIGVuY2Fwc3VsYXRpb24gaGVhZGVyLgogRm9yIGV4YW1wbGUsIGZvciBhIHBhY2tldCByZWNlaXZlZCB2aWEgR1JFIHR1bm5lbCBpbmNsdWRpbmcgYSAoMzItYml0KSBrZXksCiB0aGUga2V5IGlzIHN0b3JlZCBpbiB0aGUgbG93IDMyLWJpdHMgYW5kIHRoZSBoaWdoIGJpdHMgYXJlIHplcm9lZC4KIEZvciBhIE1QTFMgbG9naWNhbCBwb3J0LCB0aGUgbG93IDIwIGJpdHMgcmVwcmVzZW50IHRoZSBNUExTIExhYmVsLgogRm9yIGEgVnhMQU4gbG9naWNhbCBwb3J0LCB0aGUgbG93IDI0IGJpdHMgcmVwcmVzZW50IHRoZSBWTkkuCiBJZiB0aGUgcGFja2V0IGlzIG5vdCByZWNlaXZlZCB0aHJvdWdoIGEgbG9naWNhbCBwb3J0LCB0aGUgdmFsdWUgaXMgMC4KCiBQcmVyZXFzOiBOb25lLgoKIEZvcm1hdDogNjQtYml0IGludGVnZXIgaW4gbmV0d29yayBieXRlIG9yZGVyLgoKIE1hc2tpbmc6IEFyYml0cmFyeSBtYXNrcy4gCg0KBQQMAigFEgSLBwgOCg0KBQQMAigBEgSLBw8YCg0KBQQMAigDEgSLBxsdCqgDCgQEDAIpEgSYBwggGpoBI2RlZmluZSBPWE1fT0ZfSVBWNl9FWFRIRFIgICBPWE1fSEVBREVSICAoMHg4MDAwLCBPRlBYTVRfT0ZCX0lQVjZfRVhUSERSLCAyKQojZGVmaW5lIE9YTV9PRl9JUFY2X0VYVEhEUl9XIE9YTV9IRUFERVJfVygweDgwMDAsIE9GUFhNVF9PRkJfSVBWNl9FWFRIRFIsIDIpCiIcIEZvciBPRlBYTVRfT0ZCX0lQVjZfRVhUSERSIDLeASBUaGUgSVB2NiBFeHRlbnNpb24gSGVhZGVyIHBzZXVkby1maWVsZC4KCiBQ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LgogVGhlIHJlcXVlc3QgYm9keSBpcyBzdHJ1Y3Qgb2ZwX3BvcnRfc3RhdHNfcmVxdWVzdC4KIFRoZSByZXBseSBib2R5IGlzIGFuIGFycmF5IG9mIHN0cnVjdCBvZnBfcG9ydF9zdGF0cy4gCg0KBQUtAgQBEgSeDQQUCg0KBQUtAgQCEgSeDRcYCpcBCgQFLQIFEgSjDQQUGogBIFF1ZXVlIHN0YXRpc3RpY3MgZm9yIGEgcG9ydAogVGhlIHJlcXVlc3QgYm9keSBpcyBzdHJ1Y3Qgb2ZwX3F1ZXVlX3N0YXRzX3JlcXVlc3QuCiBUaGUgcmVwbHkgYm9keSBpcyBhbiBhcnJheSBvZiBzdHJ1Y3Qgb2ZwX3F1ZXVlX3N0YXRzIAoNCgUFLQIFARIEow0EDwoNCgUFLQIFAhIEow0SEwqRAQoEBS0CBhIEqA0EFBqCASBHcm91cCBjb3VudGVyIHN0YXRpc3RpY3MuCiBUaGUgcmVxdWVzdCBib2R5IGlzIHN0cnVjdCBvZnBfZ3JvdXBfc3RhdHNfcmVxdWVzdC4KIFRoZSByZXBseSBpcyBhbiBhcnJheSBvZiBzdHJ1Y3Qgb2ZwX2dyb3VwX3N0YXRzLiAKDQoFBS0CBgESBKgNBA8KDQoFBS0CBgISBKgNEhMKdAoEBS0CBxIErQ0EGRpmIEdyb3VwIGRlc2NyaXB0aW9uLgogVGhlIHJlcXVlc3QgYm9keSBpcyBlbXB0eS4KIFRoZSByZXBseSBib2R5IGlzIGFuIGFycmF5IG9mIHN0cnVjdCBvZnBfZ3JvdXBfZGVzYy4gCg0KBQUtAgcBEgStDQQUCg0KBQUtAgcCEgStDRcYCmkKBAUtAggSBLINBB0aWyBHcm91cCBmZWF0dXJlcy4KIFRoZSByZXF1ZXN0IGJvZHkgaXMgZW1wdHkuCiBUaGUgcmVwbHkgYm9keSBpcyBzdHJ1Y3Qgb2ZwX2dyb3VwX2ZlYXR1cmVzLiAKDQoFBS0CCAESBLINBBgKDQoFBS0CCAISBLINGxwKkwEKBAUtAgkSBLcNBBQahAEgTWV0ZXIgc3RhdGlzdGljcy4KIFRoZSByZXF1ZXN0IGJvZHkgaXMgc3RydWN0IG9mcF9tZXRlcl9tdWx0aXBhcnRfcmVxdWVzdHMuCiBUaGUgcmVwbHkgYm9keSBpcyBhbiBhcnJheSBvZiBzdHJ1Y3Qgb2ZwX21ldGVyX3N0YXRzLiAKDQoFBS0CCQESBLcNBA8KDQoFBS0CCQISBLcNEhMKlwEKBAUtAgoSBLwNBBwaiAEgTWV0ZXIgY29uZmlndXJhdGlvbi4KIFRoZSByZXF1ZXN0IGJvZHkgaXMgc3RydWN0IG9mcF9tZXRlcl9tdWx0aXBhcnRfcmVxdWVzdHMuCiBUaGUgcmVwbHkgYm9keSBpcyBhbiBhcnJheSBvZiBzdHJ1Y3Qgb2ZwX21ldGVyX2NvbmZpZy4gCg0KBQUtAgoBEgS8DQQWCg0KBQUtAgoCEgS8DRkbCmkKBAUtAgsSBMENBB4aWyBNZXRlciBmZWF0dXJlcy4KIFRoZSByZXF1ZXN0IGJvZHkgaXMgZW1wdHkuCiBUaGUgcmVwbHkgYm9keSBpcyBzdHJ1Y3Qgb2ZwX21ldGVyX2ZlYXR1cmVzLiAKDQoFBS0CCwESBMENBBgKDQoFBS0CCwISBMENGx0KsQIKBAUtAgwSBMkNBB4aogIgVGFibGUgZmVhdHVyZXMuCiBUaGUgcmVxdWVzdCBib2R5IGlzIGVpdGhlciBlbXB0eSBvciBjb250YWlucyBhbiBhcnJheSBvZgogc3RydWN0IG9mcF90YWJsZV9mZWF0dXJlcyBjb250YWluaW5nIHRoZSBjb250cm9sbGVyJ3MKIGRlc2lyZWQgdmlldyBvZiB0aGUgc3dpdGNoLiBJZiB0aGUgc3dpdGNoIGlzIHVuYWJsZSB0bwogc2V0IHRoZSBzcGVjaWZpZWQgdmlldyBhbiBlcnJvciBpcyByZXR1cm5lZC4KIFRoZSByZXBseSBib2R5IGlzIGFuIGFycmF5IG9mIHN0cnVjdCBvZnBfdGFibGVfZmVhdHVyZXMuIAoNCgUFLQIMARIEyQ0EGAoNCgUFLQIMAhIEyQ0bHQptCgQFLQINEgTODQQZGl8gUG9ydCBkZXNjcmlwdGlvbi4KIFRoZSByZXF1ZXN0IGJvZHkgaXMgZW1wdHkuCiBUaGUgcmVwbHkgYm9keSBpcyBhbiBhcnJheSBvZiBzdHJ1Y3Qgb2ZwX3BvcnQuIAoNCgUFLQINARIEzg0EEwoNCgUFLQINAhIEzg0WGAq+AQoEBS0CDhIE1A0EIBqvASBFeHBlcmltZW50ZXIgZXh0ZW5zaW9uLgogVGhlIHJlcXVlc3QgYW5kIHJlcGx5IGJvZGllcyBiZWdpbiB3aXRoCiBzdHJ1Y3Qgb2ZwX2V4cGVyaW1lbnRlcl9tdWx0aXBhcnRfaGVhZGVyLgogVGhlIHJlcXVlc3QgYW5kIHJlcGx5IGJvZGllcyBhcmUgb3RoZXJ3aXNlIGV4cGVyaW1lbnRlci1kZWZpbmVkLiAKDQoFBS0CDgESBNQNBBYKDQoFBS0CDgISBNQNGR8KfAoCBS4SBtoNAN0NATI9IEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAxLjMuMSAtIGF2b2lkIGJyZWFraW5nIHRoZSBBUEkuIDIvI2RlZmluZSBvZnBfbXVsdGlwYXJ0X3R5cGVzIG9mcF9tdWx0aXBhcnRfdHlwZQoKCwoDBS4BEgTaDQUgCgwKBAUuAgASBNsNBBsKDQoFBS4CAAESBNsNBBYKDQoFBS4CAAISBNsNGRoKKAoEBS4CARIE3A0EGSIaIE1vcmUgcmVxdWVzdHMgdG8gZm9sbG93LiAKDQoFBS4CAQESBNwNBBMKDQoFBS4CAQISBNwNFxgKDAoCBCoSBt8NAOQNAQoLCgMEKgESBN8NCB0KQgoEBCoCABIE4Q0EIBoTb2ZwX2hlYWRlciBoZWFkZXI7CiIfIE9uZSBvZiB0aGUgT0ZQTVBfKiBjb25zdGFudHMuIAoPCgUEKgIABBIG4Q0E3w0fCg0KBQQqAgAGEgThDQQWCg0KBQQqAgABEgThDRcbCg0KBQQqAgADEgThDR4fCiMKBAQqAgESBOINBBUiFSBPRlBNUEZfUkVRXyogZmxhZ3MuIAoPCgUEKgIBBBIG4g0E4Q0gCg0KBQQqAgEFEgTiDQQKCg0KBQQqAgEBEgTiDQsQCg0KBQQqAgEDEgTiDRMUCjUKBAQqAgISBOMNBBMiJyBCb2R5IG9mIHRoZSByZXF1ZXN0LiAwIG9yIG1vcmUgYnl0ZXMuIAoPCgUEKgICBBIG4w0E4g0VCg0KBQQqAgIFEgTjDQQJCg0KBQQqAgIBEgTjDQoOCg0KBQQqAgIDEgTjDRESCgwKAgUvEgbmDQDpDQEKCwoDBS8BEgTmDQUeCgwKBAUvAgASBOcNBB0KDQoFBS8CAAESBOcNBBgKDQoFBS8CAAISBOcNGxwKJwoEBS8CARIE6A0EGyIZIE1vcmUgcmVwbGllcyB0byBmb2xsb3cuIAoNCgUFLwIBARIE6A0EFQoNCgUFLwIBAhIE6A0ZGgoMCgIEKxIG6w0A8A0BCgsKAwQrARIE6w0IGwpCCgQEKwIAEgTtDQQgGhNvZnBfaGVhZGVyIGhlYWRlcjsKIh8gT25lIG9mIHRoZSBPRlBNUF8qIGNvbnN0YW50cy4gCg8KBQQrAgAEEgbtDQTrDR0KDQoFBCsCAAYSBO0NBBYKDQoFBCsCAAESBO0NFxsKDQoFBCsCAAMSBO0NHh8KJQoEBCsCARIE7g0EFSIXIE9GUE1QRl9SRVBMWV8qIGZsYWdzLiAKDwoFBCsCAQQSBu4NBO0NIAoNCgUEKwIBBRIE7g0ECgoNCgUEKwIBARIE7g0LEAoNCgUEKwIBAxIE7g0TFAozCgQEKwICEgTvDQQTIiUgQm9keSBvZiB0aGUgcmVwbHkuIDAgb3IgbW9yZSBieXRlcy4gCg8KBQQrAgIEEgbvDQTuDRUKDQoFBCsCAgUSBO8NBAkKDQoFBCsCAgESBO8NCg4KDQoFBCsCAgMSBO8NERIKmwEKAgQsEgb2DQD8DQEaViBCb2R5IG9mIHJlcGx5IHRvIE9GUE1QX0RFU0MgcmVxdWVzdC4gIEVhY2ggZW50cnkgaXMgYSBOVUxMLXRlcm1pbmF0ZWQKIEFTQ0lJIHN0cmluZy4gMjUjZGVmaW5lIERFU0NfU1RSX0xFTiAgIDI1NgojZGVmaW5lIFNFUklBTF9OVU1fTEVOIDMyCgoLCgMELAESBPYNCBAKKQoEBCwCABIE9w0EGCIbIE1hbnVmYWN0dXJlciBkZXNjcmlwdGlvbi4gCg8KBQQsAgAEEgb3DQT2DRIKDQoFBCwCAAUSBPcNBAoKDQoFBCwCAAESBPcNCxMKDQoFBCwCAAMSBPcNFhcKJQoEBCwCARIE+A0EFyIXIEhhcmR3YXJlIGRlc2NyaXB0aW9uLiAKDwoFBCwCAQQSBvgNBPcNGAoNCgUELAIBBRIE+A0ECgoNCgUELAIBARIE+A0LEgoNCgUELAIBAxIE+A0VFgolCgQELAICEgT5DQQXIhcgU29mdHdhcmUgZGVzY3JpcHRpb24uIAoPCgUELAICBBIG+Q0E+A0XCg0KBQQsAgIFEgT5DQQKCg0KBQQsAgIBEgT5DQsSCg0KBQQsAgIDEgT5DRUWCh4KBAQsAgMSBPoNBBoiECBTZXJpYWwgbnVtYmVyLiAKDwoFBCwCAwQSBvoNBPkNFwoNCgUELAIDBRIE+g0ECgoNCgUELAIDARIE+g0LFQoNCgUELAIDAxIE+g0YGQo3CgQELAIEEgT7DQQXIikgSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgZGF0YXBhdGguIAoPCgUELAIEBBIG+w0E+g0aCg0KBQQsAgQFEgT7DQQKCg0KBQQsAgQBEgT7DQsSCg0KBQQsAgQDEgT7DRUWCkIKAgQtEgb/DQCODgEaNCBCb2R5IGZvciBvZnBfbXVsdGlwYXJ0X3JlcXVlc3Qgb2YgdHlwZSBPRlBNUF9GTE9XLiAKCwoDBC0BEgT/DQgeClUKBAQtAgASBIAOBBgiRyBJRCBvZiB0YWJsZSB0byByZWFkIChmcm9tIG9mcF90YWJsZV9zdGF0cyksCk9GUFRUX0FMTCBmb3IgYWxsIHRhYmxlcy4gCg8KBQQtAgAEEgaADgT/DSAKDQoFBC0CAAUSBIAOBAoKDQoFBC0CAAESBIAOCxMKDQoFBC0CAAMSBIAOFhcKegoEBC0CARIEgg4EGCJsIFJlcXVpcmUgbWF0Y2hpbmcgZW50cmllcyB0byBpbmNsdWRlIHRoaXMKYXMgYW4gb3V0cHV0IHBvcnQuICBBIHZhbHVlIG9mIE9GUFBfQU5ZCmluZGljYXRlcyBubyByZXN0cmljdGlvbi4gCg8KBQQtAgEEEgaCDgSADhgKDQoFBC0CAQUSBIIOBAoKDQoFBC0CAQESBIIOCxMKDQoFBC0CAQMSBIIOFhcKewoEBC0CAhIEhQ4EGSJtIFJlcXVpcmUgbWF0Y2hpbmcgZW50cmllcyB0byBpbmNsdWRlIHRoaXMKYXMgYW4gb3V0cHV0IGdyb3VwLiAgQSB2YWx1ZSBvZiBPRlBHX0FOWQppbmRpY2F0ZXMgbm8gcmVzdHJpY3Rpb24uIAoPCgUELQICBBIGhQ4Egg4YCg0KBQQtAgIFEgSFDgQKCg0KBQQtAgIBEgSFDgsUCg0KBQQtAgIDEgSFDhcYCkUKBAQtAgMSBIgOBBYiNyBSZXF1aXJlIG1hdGNoaW5nIGVudHJpZXMgdG8gY29udGFpbiB0aGlzCmNvb2tpZSB2YWx1ZSAKDwoFBC0CAwQSBogOBIUOGQoNCgUELQIDBRIEiA4ECgoNCgUELQIDARIEiA4LEQoNCgUELQIDAxIEiA4UFQptCgQELQIEEgSKDgQbIl8gTWFzayB1c2VkIHRvIHJlc3RyaWN0IHRoZSBjb29raWUgYml0cyB0aGF0Cm11c3QgbWF0Y2guIEEgdmFsdWUgb2YgMCBpbmRpY2F0ZXMKbm8gcmVzdHJpY3Rpb24uIAoPCgUELQIEBBIGig4EiA4WCg0KBQQtAgQFEgSKDgQKCg0KBQQtAgQBEgSKDgsWCg0KBQQtAgQDEgSKDhkaCi8KBAQtAgUSBI0OBBgiISBGaWVsZHMgdG8gbWF0Y2guIFZhcmlhYmxlIHNpemUuIAoPCgUELQIFBBIGjQ4Eig4bCg0KBQQtAgUGEgSNDgQNCg0KBQQtAgUBEgSNDg4TCg0KBQQtAgUDEgSNDhYXCjQKAgQuEgaRDgChDgEaJiBCb2R5IG9mIHJlcGx5IHRvIE9GUE1QX0ZMT1cgcmVxdWVzdC4gCgsKAwQuARIEkQ4IFgowCgQELgIAEgSSDgQTIiIgVW5pcXVlIElEIG9mIGZsb3cgd2l0aGluIGRldmljZS4gCg8KBQQuAgAEEgaSDgSRDhgKDQoFBC4CAAUSBJIOBAoKDQoFBC4CAAESBJIOCw0KDQoFBC4CAAMSBJIOEBIKKwoEBC4CARIEkw4EGCIdIElEIG9mIHRhYmxlIGZsb3cgY2FtZSBmcm9tLiAKDwoFBC4CAQQSBpMOBJIOEwoNCgUELgIBBRIEkw4ECgoNCgUELgIBARIEkw4LEwoNCgUELgIBAxIEkw4WFwo0CgQELgICEgSUDgQcIiYgVGltZSBmbG93IGhhcyBiZWVuIGFsaXZlIGluIHNlY29uZHMuIAoPCgUELgICBBIGlA4Ekw4YCg0KBQQuAgIFEgSUDgQKCg0KBQQuAgIBEgSUDgsXCg0KBQQuAgIDEgSUDhobCkwKBAQuAgMSBJUOBB0iPiBUaW1lIGZsb3cgaGFzIGJlZW4gYWxpdmUgaW4gbmFub3NlY29uZHMKYmV5b25kIGR1cmF0aW9uX3NlYy4gCg8KBQQuAgMEEgaVDgSUDhwKDQoFBC4CAwUSBJUOBAoKDQoFBC4CAwESBJUOCxgKDQoFBC4CAwMSBJUOGxwKJgoEBC4CBBIElw4EGCIYIFByaW9yaXR5IG9mIHRoZSBlbnRyeS4gCg8KBQQuAgQEEgaXDgSVDh0KDQoFBC4CBAUSBJcOBAoKDQoFBC4CBAESBJcOCxMKDQoFBC4CBAMSBJcOFhcKOQoEBC4CBRIEmA4EHCIrIE51bWJlciBvZiBzZWNvbmRzIGlkbGUgYmVmb3JlIGV4cGlyYXRpb24uIAoPCgUELgIFBBIGmA4Elw4YCg0KBQQuAgUFEgSYDgQKCg0KBQQuAgUBEgSYDgsXCg0KBQQuAgUDEgSYDhobCjQKBAQuAgYSBJkOBBwiJiBOdW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgZXhwaXJhdGlvbi4gCg8KBQQuAgYEEgaZDgSYDhwKDQoFBC4CBgUSBJkOBAoKDQoFBC4CBgESBJkOCxcKDQoFBC4CBgMSBJkOGhsKKAoEBC4CBxIEmg4EFSIaIEJpdG1hcCBvZiBPRlBGRl8qIGZsYWdzLiAKDwoFBC4CBwQSBpoOBJkOHAoNCgUELgIHBRIEmg4ECgoNCgUELgIHARIEmg4LEAoNCgUELgIHAxIEmg4TFAo0CgQELgIIEgSbDgQWIiYgT3BhcXVlIGNvbnRyb2xsZXItaXNzdWVkIGlkZW50aWZpZXIuIAoPCgUELgIIBBIGmw4Emg4VCg0KBQQuAggFEgSbDgQKCg0KBQQuAggBEgSbDgsRCg0KBQQuAggDEgSbDhQVCioKBAQuAgkSBJwOBBwiHCBOdW1iZXIgb2YgcGFja2V0cyBpbiBmbG93LiAKDwoFBC4CCQQSBpwOBJsOFgoNCgUELgIJBRIEnA4ECgoNCgUELgIJARIEnA4LFwoNCgUELgIJAxIEnA4aGwooCgQELgIKEgSdDgQbIhogTnVtYmVyIG9mIGJ5dGVzIGluIGZsb3cuIAoPCgUELgIKBBIGnQ4EnA4cCg0KBQQuAgoFEgSdDgQKCg0KBQQuAgoBEgSdDgsVCg0KBQQuAgoDEgSdDhgaCjUKBAQuAgsSBJ4OBBkiJyBEZXNjcmlwdGlvbiBvZiBmaWVsZHMuIFZhcmlhYmxlIHNpemUuIAoPCgUELgILBBIGng4EnQ4bCg0KBQQuAgsGEgSeDgQNCg0KBQQuAgsBEgSeDg4TCg0KBQQuAgsDEgSeDhYYCisKBAQuAgwSBJ8OBC8iHSBJbnN0cnVjdGlvbiBzZXQKKDAgb3IgbW9yZSkgCg0KBQQuAgwEEgSfDgQMCg0KBQQuAgwGEgSfDg0cCg0KBQQuAgwBEgSfDh0pCg0KBQQuAgwDEgSfDiwuCkcKAgQvEgakDgCzDgEaOSBCb2R5IGZvciBvZnBfbXVsdGlwYXJ0X3JlcXVlc3Qgb2YgdHlwZSBPRlBNUF9BR0dSRUdBVEUuIAoLCgMELwESBKQOCCMKVAoEBC8CABIEpQ4EGCJGIElEIG9mIHRhYmxlIHRvIHJlYWQgKGZyb20gb2ZwX3RhYmxlX3N0YXRzKQpPRlBUVF9BTEwgZm9yIGFsbCB0YWJsZXMuIAoPCgUELwIABBIGpQ4EpA4lCg0KBQQvAgAFEgSlDgQKCg0KBQQvAgABEgSlDgsTCg0KBQQvAgADEgSlDhYXCnoKBAQvAgESBKcOBBgibCBSZXF1aXJlIG1hdGNoaW5nIGVudHJpZXMgdG8gaW5jbHVkZSB0aGlzCmFzIGFuIG91dHB1dCBwb3J0LiAgQSB2YWx1ZSBvZiBPRlBQX0FOWQppbmRpY2F0ZXMgbm8gcmVzdHJpY3Rpb24uIAoPCgUELwIBBBIGpw4EpQ4YCg0KBQQvAgEFEgSnDgQKCg0KBQQvAgEBEgSnDgsTCg0KBQQvAgEDEgSnDhYXCnsKBAQvAgISBKoOBBkibSBSZXF1aXJlIG1hdGNoaW5nIGVudHJpZXMgdG8gaW5jbHVkZSB0aGlzCmFzIGFuIG91dHB1dCBncm91cC4gIEEgdmFsdWUgb2YgT0ZQR19BTlkKaW5kaWNhdGVzIG5vIHJlc3RyaWN0aW9uLiAKDwoFBC8CAgQSBqoOBKcOGAoNCgUELwICBRIEqg4ECgoNCgUELwICARIEqg4LFAoNCgUELwICAxIEqg4XGApFCgQELwIDEgStDgQWIjcgUmVxdWlyZSBtYXRjaGluZyBlbnRyaWVzIHRvIGNvbnRhaW4gdGhpcwpjb29raWUgdmFsdWUgCg8KBQQvAgMEEgatDgSqDhkKDQoFBC8CAwUSBK0OBAoKDQoFBC8CAwESBK0OCxEKDQoFBC8CAwMSBK0OFBUKbQoEBC8CBBIErw4EGyJfIE1hc2sgdXNlZCB0byByZXN0cmljdCB0aGUgY29va2llIGJpdHMgdGhhdAptdXN0IG1hdGNoLiBBIHZhbHVlIG9mIDAgaW5kaWNhdGVzCm5vIHJlc3RyaWN0aW9uLiAKDwoFBC8CBAQSBq8OBK0OFgoNCgUELwIEBRIErw4ECgoNCgUELwIEARIErw4LFgoNCgUELwIEAxIErw4ZGgovCgQELwIFEgSyDgQYIiEgRmllbGRzIHRvIG1hdGNoLiBWYXJpYWJsZSBzaXplLiAKDwoFBC8CBQQSBrIOBK8OGwoNCgUELwIFBhIEsg4EDQoNCgUELwIFARIEsg4OEwoNCgUELwIFAxIEsg4WFwo5CgIEMBIGtg4Aug4BGisgQm9keSBvZiByZXBseSB0byBPRlBNUF9BR0dSRUdBVEUgcmVxdWVzdC4gCgsKAwQwARIEtg4IIQorCgQEMAIAEgS3DgQcIh0gTnVtYmVyIG9mIHBhY2tldHMgaW4gZmxvd3MuIAoPCgUEMAIABBIGtw4Etg4jCg0KBQQwAgAFEgS3DgQKCg0KBQQwAgABEgS3DgsXCg0KBQQwAgADEgS3DhobCikKBAQwAgESBLgOBBoiGyBOdW1iZXIgb2YgYnl0ZXMgaW4gZmxvd3MuIAoPCgUEMAIBBBIGuA4Etw4cCg0KBQQwAgEFEgS4DgQKCg0KBQQwAgEBEgS4DgsVCg0KBQQwAgEDEgS4DhgZCiAKBAQwAgISBLkOBBoiEiBOdW1iZXIgb2YgZmxvd3MuIAoPCgUEMAICBBIGuQ4EuA4aCg0KBQQwAgIFEgS5DgQKCg0KBQQwAgIBEgS5DgsVCg0KBQQwAgIDEgS5DhgZCrsBCgIFMBIGwA4A0Q4BGqwBIFRhYmxlIEZlYXR1cmUgcHJvcGVydHkgdHlwZXMuCiBMb3cgb3JkZXIgYml0IGNsZWFyZWQgaW5kaWNhdGVzIGEgcHJvcGVydHkgZm9yIGEgcmVndWxhciBGbG93IEVudHJ5LgogTG93IG9yZGVyIGJpdCBzZXQgaW5kaWNhdGVzIGEgcHJvcGVydHkgZm9yIHRoZSBUYWJsZS1NaXNzIEZsb3cgRW50cnkuCgoLCgMFMAESBMAOBSAKJgoEBTACABIEwQ4EJyIYIEluc3RydWN0aW9ucyBwcm9wZXJ0eS4gCg0KBQUwAgABEgTBDgQYCg0KBQUwAgACEgTBDiUmCiwKBAUwAgESBMIOBCciHiBJbnN0cnVjdGlvbnMgZm9yIHRhYmxlLW1pc3MuIAoNCgUFMAIBARIEwg4EHQoNCgUFMAIBAhIEwg4lJgokCgQFMAICEgTDDgQnIhYgTmV4dCBUYWJsZSBwcm9wZXJ0eS4gCg0KBQUwAgIBEgTDDgQXCg0KBQUwAgICEgTDDiUmCioKBAUwAgMSBMQOBCciHCBOZXh0IFRhYmxlIGZvciB0YWJsZS1taXNzLiAKDQoFBTACAwESBMQOBBwKDQoFBTACAwISBMQOJSYKJwoEBTACBBIExQ4EJyIZIFdyaXRlIEFjdGlvbnMgcHJvcGVydHkuIAoNCgUFMAIEARIExQ4EGQoNCgUFMAIEAhIExQ4lJgotCgQFMAIFEgTGDgQnIh8gV3JpdGUgQWN0aW9ucyBmb3IgdGFibGUtbWlzcy4gCg0KBQUwAgUBEgTGDgQeCg0KBQUwAgUCEgTGDiUmCicKBAUwAgYSBMcOBCciGSBBcHBseSBBY3Rpb25zIHByb3BlcnR5LiAKDQoFBTACBgESBMcOBBkKDQoFBTACBgISBMcOJSYKLQoEBTACBxIEyA4EJyIfIEFwcGx5IEFjdGlvbnMgZm9yIHRhYmxlLW1pc3MuIAoNCgUFMAIHARIEyA4EHgoNCgUFMAIHAhIEyA4lJgofCgQFMAIIEgTJDgQnIhEgTWF0Y2ggcHJvcGVydHkuIAoNCgUFMAIIARIEyQ4EEQoNCgUFMAIIAhIEyQ4lJgojCgQFMAIJEgTKDgQoIhUgV2lsZGNhcmRzIHByb3BlcnR5LiAKDQoFBTACCQESBMoOBBUKDQoFBTACCQISBMoOJScKKQoEBTACChIEyw4EKCIbIFdyaXRlIFNldC1GaWVsZCBwcm9wZXJ0eS4gCg0KBQUwAgoBEgTLDgQaCg0KBQUwAgoCEgTLDiUnCi8KBAUwAgsSBMwOBCgiISBXcml0ZSBTZXQtRmllbGQgZm9yIHRhYmxlLW1pc3MuIAoNCgUFMAILARIEzA4EHwoNCgUFMAILAhIEzA4lJwopCgQFMAIMEgTNDgQoIhsgQXBwbHkgU2V0LUZpZWxkIHByb3BlcnR5LiAKDQoFBTACDAESBM0OBBoKDQoFBTACDAISBM0OJScKLwoEBTACDRIEzg4EKCIhIEFwcGx5IFNldC1GaWVsZCBmb3IgdGFibGUtbWlzcy4gCg0KBQUwAg0BEgTODgQfCg0KBQUwAg0CEgTODiUnCiYKBAUwAg4SBM8OBCwiGCBFeHBlcmltZW50ZXIgcHJvcGVydHkuIAoNCgUFMAIOARIEzw4EGAoNCgUFMAIOAhIEzw4lKwosCgQFMAIPEgTQDgQsIh4gRXhwZXJpbWVudGVyIGZvciB0YWJsZS1taXNzLiAKDQoFBTACDwESBNAOBB0KDQoFBTACDwISBNAOJSsKPgoCBDESBtQOAN0OARowIENvbW1vbiBoZWFkZXIgZm9yIGFsbCBUYWJsZSBGZWF0dXJlIFByb3BlcnRpZXMgCgsKAwQxARIE1A4IIgohCgQEMQIAEgTVDgQpIhMgT25lIG9mIE9GUFRGUFRfKi4gCg8KBQQxAgAEEgbVDgTUDiQKDQoFBDECAAYSBNUOBB8KDQoFBDECAAESBNUOICQKDQoFBDECAAMSBNUOJygKDgoEBDEIABIG1g4E3A4FCg0KBQQxCAABEgTWDgoPCgwKBAQxAgESBNcOCD0KDQoFBDECAQYSBNcOCCsKDQoFBDECAQESBNcOLDgKDQoFBDECAQMSBNcOOzwKDAoEBDECAhIE2A4IOwoNCgUEMQICBhIE2A4IKgoNCgUEMQICARIE2A4rNgoNCgUEMQICAxIE2A45OgoMCgQEMQIDEgTZDggzCg0KBQQxAgMGEgTZDggmCg0KBQQxAgMBEgTZDicuCg0KBQQxAgMDEgTZDjEyCgwKBAQxAgQSBNoOCCsKDQoFBDECBAYSBNoOCCIKDQoFBDECBAESBNoOIyYKDQoFBDECBAMSBNoOKSoKDAoEBDECBRIE2w4IPQoNCgUEMQIFBhIE2w4IKwoNCgUEMQIFARIE2w4sOAoNCgUEMQIFAxIE2w47PAolCgIEMhIG4A4A5A4BGhcgSW5zdHJ1Y3Rpb25zIHByb3BlcnR5IAoLCgMEMgESBOAOCCsKXwoEBDICABIE4w4ELho5IE9uZSBvZiBPRlBURlBUX0lOU1RSVUNUSU9OUywKT0ZQVEZQVF9JTlNUUlVDVElPTlNfTUlTUy4gIhYgTGlzdCBvZiBpbnN0cnVjdGlvbnMgCg0KBQQyAgAEEgTjDgQMCg0KBQQyAgAGEgTjDg0cCg0KBQQyAgABEgTjDh0pCg0KBQQyAgADEgTjDiwtCiQKAgQzEgbnDgDrDgEaFiBOZXh0IFRhYmxlcyBwcm9wZXJ0eSAKCwoDBDMBEgTnDggqClsKBAQzAgASBOoOBCcaNyBPbmUgb2YgT0ZQVEZQVF9ORVhUX1RBQkxFUywKT0ZQVEZQVF9ORVhUX1RBQkxFU19NSVNTLiAiFCBMaXN0IG9mIHRhYmxlIGlkcy4gCg0KBQQzAgAEEgTqDgQMCg0KBQQzAgAFEgTqDg0TCg0KBQQzAgABEgTqDhQiCg0KBQQzAgADEgTqDiUmCiAKAgQ0EgbuDgD0DgEaEiBBY3Rpb25zIHByb3BlcnR5IAoLCgMENAESBO4OCCYKjwEKBAQ0AgASBPMOBCQabiBPbmUgb2YgT0ZQVEZQVF9XUklURV9BQ1RJT05TLApPRlBURlBUX1dSSVRFX0FDVElPTlNfTUlTUywKT0ZQVEZQVF9BUFBMWV9BQ1RJT05TLApPRlBURlBUX0FQUExZX0FDVElPTlNfTUlTUy4gIhEgTGlzdCBvZiBhY3Rpb25zIAoNCgUENAIABBIE8w4EDAoNCgUENAIABhIE8w4NFwoNCgUENAIAARIE8w4YHwoNCgUENAIAAxIE8w4iIwrMAQoCBDUSBvcOAIAPARonIE1hdGNoLCBXaWxkY2FyZCBvciBTZXQtRmllbGQgcHJvcGVydHkgIpQBIE9uZSBvZiBPRlBURlBUX01BVENILApPRlBURlBUX1dJTERDQVJEUywKT0ZQVEZQVF9XUklURV9TRVRGSUVMRCwKT0ZQVEZQVF9XUklURV9TRVRGSUVMRF9NSVNTLApPRlBURlBUX0FQUExZX1NFVEZJRUxELApPRlBURlBUX0FQUExZX1NFVEZJRUxEX01JU1MuIAoLCgMENQESBPcOCCIKQAoEBDUCABIE/w4EIBoaIFRPRE8gaXMgdGhpcyBhIHVpbnQzMj8/PyAiFiBBcnJheSBvZiBPWE0gaGVhZGVycyAKDQoFBDUCAAQSBP8OBAwKDQoFBDUCAAUSBP8ODRMKDQoFBDUCAAESBP8OFBsKDQoFBDUCAAMSBP8OHh8KMwoCBDYSBoMPAIsPARolIEV4cGVyaW1lbnRlciB0YWJsZSBmZWF0dXJlIHByb3BlcnR5IAoLCgMENgESBIMPCCsKmgEKBAQ2AgASBIYPBCQaOSBPbmUgb2YgT0ZQVEZQVF9FWFBFUklNRU5URVIsCk9GUFRGUFRfRVhQRVJJTUVOVEVSX01JU1MuICJRIEV4cGVyaW1lbnRlciBJRCB3aGljaCB0YWtlcyB0aGUgc2FtZQpmb3JtIGFzIGluIHN0cnVjdApvZnBfZXhwZXJpbWVudGVyX2hlYWRlci4gCg8KBQQ2AgAEEgaGDwSDDy0KDQoFBDYCAAUSBIYPBAoKDQoFBDYCAAESBIYPEx8KDQoFBDYCAAMSBIYPIiMKJQoEBDYCARIEiQ8EICIXIEV4cGVyaW1lbnRlciBkZWZpbmVkLiAKDwoFBDYCAQQSBokPBIYPJAoNCgUENgIBBRIEiQ8ECgoNCgUENgIBARIEiQ8TGwoNCgUENgIBAxIEiQ8eHwoMCgQENgICEgSKDwQqCg0KBQQ2AgIEEgSKDwQMCg0KBQQ2AgIFEgSKDw0TCg0KBQQ2AgIBEgSKDxQlCg0KBQQ2AgIDEgSKDygpCn0KAgQ3EgaPDwCaDwEabyBCb2R5IGZvciBvZnBfbXVsdGlwYXJ0X3JlcXVlc3Qgb2YgdHlwZSBPRlBNUF9UQUJMRV9GRUFUVVJFUy4vCiBCb2R5IG9mIHJlcGx5IHRvIE9GUE1QX1RBQkxFX0ZFQVRVUkVTIHJlcXVlc3QuIAoLCgMENwESBI8PCBoKUAoEBDcCABIEkA8EGCJCIElkZW50aWZpZXIgb2YgdGFibGUuICBMb3dlciBudW1iZXJlZCB0YWJsZXMKYXJlIGNvbnN1bHRlZCBmaXJzdC4gCg8KBQQ3AgAEEgaQDwSPDxwKDQoFBDcCAAUSBJAPBAoKDQoFBDcCAAESBJAPCxMKDQoFBDcCAAMSBJAPFhcKDAoEBDcCARIEkg8EFAoPCgUENwIBBBIGkg8EkA8YCg0KBQQ3AgEFEgSSDwQKCg0KBQQ3AgEBEgSSDwsPCg0KBQQ3AgEDEgSSDxITCjEKBAQ3AgISBJMPBB4iIyBCaXRzIG9mIG1ldGFkYXRhIHRhYmxlIGNhbiBtYXRjaC4gCg8KBQQ3AgIEEgaTDwSSDxQKDQoFBDcCAgUSBJMPBAoKDQoFBDcCAgESBJMPCxkKDQoFBDcCAgMSBJMPHB0KMQoEBDcCAxIElA8EHiIjIEJpdHMgb2YgbWV0YWRhdGEgdGFibGUgY2FuIHdyaXRlLiAKDwoFBDcCAwQSBpQPBJMPHgoNCgUENwIDBRIElA8ECgoNCgUENwIDARIElA8LGQoNCgUENwIDAxIElA8cHQooCgQENwIEEgSVDwQWIhogQml0bWFwIG9mIE9GUFRDXyogdmFsdWVzIAoPCgUENwIEBBIGlQ8ElA8eCg0KBQQ3AgQFEgSVDwQKCg0KBQQ3AgQBEgSVDwsRCg0KBQQ3AgQDEgSVDxQVCjAKBAQ3AgUSBJYPBBsiIiBNYXggbnVtYmVyIG9mIGVudHJpZXMgc3VwcG9ydGVkLiAKDwoFBDcCBQQSBpYPBJUPFgoNCgUENwIFBRIElg8ECgoNCgUENwIFARIElg8LFgoNCgUENwIFAxIElg8ZGgorCgQENwIGEgSZDwQ3Gh0gVGFibGUgRmVhdHVyZSBQcm9wZXJ0eSBsaXN0IAoNCgUENwIGBBIEmQ8EDAoNCgUENwIGBhIEmQ8NJwoNCgUENwIGARIEmQ8oMgoNCgUENwIGAxIEmQ81Ngo1CgIEOBIGnQ8Aow8BGicgQm9keSBvZiByZXBseSB0byBPRlBNUF9UQUJMRSByZXF1ZXN0LiAKCwoDBDgBEgSdDwgXClAKBAQ4AgASBJ4PBBgiQiBJZGVudGlmaWVyIG9mIHRhYmxlLiAgTG93ZXIgbnVtYmVyZWQgdGFibGVzCmFyZSBjb25zdWx0ZWQgZmlyc3QuIAoPCgUEOAIABBIGng8EnQ8ZCg0KBQQ4AgAFEgSeDwQKCg0KBQQ4AgABEgSeDwsTCg0KBQQ4AgADEgSeDxYXCikKBAQ4AgESBKAPBBwiGyBOdW1iZXIgb2YgYWN0aXZlIGVudHJpZXMuIAoPCgUEOAIBBBIGoA8Eng8YCg0KBQQ4AgEFEgSgDwQKCg0KBQQ4AgEBEgSgDwsXCg0KBQQ4AgEDEgSgDxobCjUKBAQ4AgISBKEPBBwiJyBOdW1iZXIgb2YgcGFja2V0cyBsb29rZWQgdXAgaW4gdGFibGUuIAoPCgUEOAICBBIGoQ8EoA8cCg0KBQQ4AgIFEgShDwQKCg0KBQQ4AgIBEgShDwsXCg0KBQQ4AgIDEgShDxobCjEKBAQ4AgMSBKIPBB0iIyBOdW1iZXIgb2YgcGFja2V0cyB0aGF0IGhpdCB0YWJsZS4gCg8KBQQ4AgMEEgaiDwShDxwKDQoFBDgCAwUSBKIPBAoKDQoFBDgCAwESBKIPCxgKDQoFBDgCAwMSBKIPGxwKQgoCBDkSBqYPAKsPARo0IEJvZHkgZm9yIG9mcF9tdWx0aXBhcnRfcmVxdWVzdCBvZiB0eXBlIE9GUE1QX1BPUlQuIAoLCgMEOQESBKYPCB4KmQEKBAQ5AgASBKcPBBciigEgT0ZQTVBfUE9SVCBtZXNzYWdlIG11c3QgcmVxdWVzdCBzdGF0aXN0aWNzCiBlaXRoZXIgZm9yIGEgc2luZ2xlIHBvcnQgKHNwZWNpZmllZCBpbgogcG9ydF9ubykgb3IgZm9yIGFsbCBwb3J0cyAoaWYgcG9ydF9ubyA9PQogT0ZQUF9BTlkpLiAKDwoFBDkCAAQSBqcPBKYPIAoNCgUEOQIABRIEpw8ECgoNCgUEOQIAARIEpw8LEgoNCgUEOQIAAxIEpw8VFgptCgIEOhIGrw8Axg8BGl8gQm9keSBvZiByZXBseSB0byBPRlBNUF9QT1JUIHJlcXVlc3QuIElmIGEgY291bnRlciBpcyB1bnN1cHBvcnRlZCwgc2V0CiB0aGUgZmllbGQgdG8gYWxsIG9uZXMuIAoLCgMEOgESBK8PCBYKDAoEBDoCABIEsA8EFwoPCgUEOgIABBIGsA8Erw8YCg0KBQQ6AgAFEgSwDwQKCg0KBQQ6AgABEgSwDwsSCg0KBQQ6AgADEgSwDxUWCisKBAQ6AgESBLEPBBoiHSBOdW1iZXIgb2YgcmVjZWl2ZWQgcGFja2V0cy4gCg8KBQQ6AgEEEgaxDwSwDxcKDQoFBDoCAQUSBLEPBAoKDQoFBDoCAQESBLEPCxUKDQoFBDoCAQMSBLEPGBkKLgoEBDoCAhIEsg8EGiIgIE51bWJlciBvZiB0cmFuc21pdHRlZCBwYWNrZXRzLiAKDwoFBDoCAgQSBrIPBLEPGgoNCgUEOgICBRIEsg8ECgoNCgUEOgICARIEsg8LFQoNCgUEOgICAxIEsg8YGQopCgQEOgIDEgSzDwQYIhsgTnVtYmVyIG9mIHJlY2VpdmVkIGJ5dGVzLiAKDwoFBDoCAwQSBrMPBLIPGgoNCgUEOgIDBRIEsw8ECgoNCgUEOgIDARIEsw8LEwoNCgUEOgIDAxIEsw8WFwosCgQEOgIEEgS0DwQYIh4gTnVtYmVyIG9mIHRyYW5zbWl0dGVkIGJ5dGVzLiAKDwoFBDoCBAQSBrQPBLMPGAoNCgUEOgIEBRIEtA8ECgoNCgUEOgIEARIEtA8LEwoNCgUEOgIEAxIEtA8WFwowCgQEOgIFEgS1DwQaIiIgTnVtYmVyIG9mIHBhY2tldHMgZHJvcHBlZCBieSBSWC4gCg8KBQQ6AgUEEga1DwS0DxgKDQoFBDoCBQUSBLUPBAoKDQoFBDoCBQESBLUPCxUKDQoFBDoCBQMSBLUPGBkKMAoEBDoCBhIEtg8EGiIiIE51bWJlciBvZiBwYWNrZXRzIGRyb3BwZWQgYnkgVFguIAoPCgUEOgIGBBIGtg8EtQ8aCg0KBQQ6AgYFEgS2DwQKCg0KBQQ6AgYBEgS2DwsVCg0KBQQ6AgYDEgS2DxgZCqYBCgQEOgIHEgS3DwQZIpcBIE51bWJlciBvZiByZWNlaXZlIGVycm9ycy4gIFRoaXMgaXMgYSBzdXBlci1zZXQKb2YgbW9yZSBzcGVjaWZpYyByZWNlaXZlIGVycm9ycyBhbmQgc2hvdWxkIGJlCmdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc3VtIG9mIGFsbApyeF8qX2VyciB2YWx1ZXMuIAoPCgUEOgIHBBIGtw8Etg8aCg0KBQQ6AgcFEgS3DwQKCg0KBQQ6AgcBEgS3DwsUCg0KBQQ6AgcDEgS3DxcYCsEBCgQEOgIIEgS7DwQZIrIBIE51bWJlciBvZiB0cmFuc21pdCBlcnJvcnMuICBUaGlzIGlzIGEgc3VwZXItc2V0Cm9mIG1vcmUgc3BlY2lmaWMgdHJhbnNtaXQgZXJyb3JzIGFuZCBzaG91bGQgYmUKZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzdW0gb2YgYWxsCnR4XypfZXJyIHZhbHVlcyAobm9uZSBjdXJyZW50bHkgZGVmaW5lZC4pIAoPCgUEOgIIBBIGuw8Etw8ZCg0KBQQ6AggFEgS7DwQKCg0KBQQ6AggBEgS7DwsUCg0KBQQ6AggDEgS7DxcYCjEKBAQ6AgkSBL8PBB0iIyBOdW1iZXIgb2YgZnJhbWUgYWxpZ25tZW50IGVycm9ycy4gCg8KBQQ6AgkEEga/DwS7DxkKDQoFBDoCCQUSBL8PBAoKDQoFBDoCCQESBL8PCxcKDQoFBDoCCQMSBL8PGhwKMgoEBDoCChIEwA8EHCIkIE51bWJlciBvZiBwYWNrZXRzIHdpdGggUlggb3ZlcnJ1bi4gCg8KBQQ6AgoEEgbADwS/Dx0KDQoFBDoCCgUSBMAPBAoKDQoFBDoCCgESBMAPCxYKDQoFBDoCCgMSBMAPGRsKJQoEBDoCCxIEwQ8EGyIXIE51bWJlciBvZiBDUkMgZXJyb3JzLiAKDwoFBDoCCwQSBsEPBMAPHAoNCgUEOgILBRIEwQ8ECgoNCgUEOgILARIEwQ8LFQoNCgUEOgILAxIEwQ8YGgolCgQEOgIMEgTCDwQbIhcgTnVtYmVyIG9mIGNvbGxpc2lvbnMuIAoPCgUEOgIMBBIGwg8EwQ8bCg0KBQQ6AgwFEgTCDwQKCg0KBQQ6AgwBEgTCDwsVCg0KBQQ6AgwDEgTCDxgaCjQKBAQ6Ag0SBMMPBB0iJiBUaW1lIHBvcnQgaGFzIGJlZW4gYWxpdmUgaW4gc2Vjb25kcy4gCg8KBQQ6Ag0EEgbDDwTCDxsKDQoFBDoCDQUSBMMPBAoKDQoFBDoCDQESBMMPCxcKDQoFBDoCDQMSBMMPGhwKTAoEBDoCDhIExA8EHiI+IFRpbWUgcG9ydCBoYXMgYmVlbiBhbGl2ZSBpbiBuYW5vc2Vjb25kcwpiZXlvbmQgZHVyYXRpb25fc2VjLiAKDwoFBDoCDgQSBsQPBMMPHQoNCgUEOgIOBRIExA8ECgoNCgUEOgIOARIExA8LGAoNCgUEOgIOAxIExA8bHQosCgIEOxIGyQ8Ayw8BGh4gQm9keSBvZiBPRlBNUF9HUk9VUCByZXF1ZXN0LiAKCwoDBDsBEgTJDwgfCicKBAQ7AgASBMoPBBgiGSBBbGwgZ3JvdXBzIGlmIE9GUEdfQUxMLiAKDwoFBDsCAAQSBsoPBMkPIQoNCgUEOwIABRIEyg8ECgoNCgUEOwIAARIEyg8LEwoNCgUEOwIAAxIEyg8WFwosCgIEPBIGzg8A0Q8BGh4gVXNlZCBpbiBncm91cCBzdGF0cyByZXBsaWVzLiAKCwoDBDwBEgTODwgaCjYKBAQ8AgASBM8PBBwiKCBOdW1iZXIgb2YgcGFja2V0cyBwcm9jZXNzZWQgYnkgYnVja2V0LiAKDwoFBDwCAAQSBs8PBM4PHAoNCgUEPAIABRIEzw8ECgoNCgUEPAIAARIEzw8LFwoNCgUEPAIAAxIEzw8aGwo0CgQEPAIBEgTQDwQaIiYgTnVtYmVyIG9mIGJ5dGVzIHByb2Nlc3NlZCBieSBidWNrZXQuIAoPCgUEPAIBBBIG0A8Ezw8cCg0KBQQ8AgEFEgTQDwQKCg0KBQQ8AgEBEgTQDwsVCg0KBQQ8AgEDEgTQDxgZCjUKAgQ9EgbUDwDfDwEaJyBCb2R5IG9mIHJlcGx5IHRvIE9GUE1QX0dST1VQIHJlcXVlc3QuIAoLCgMEPQESBNQPCBcKIQoEBD0CABIE1Q8EGCITIEdyb3VwIGlkZW50aWZpZXIuIAoPCgUEPQIABBIG1Q8E1A8ZCg0KBQQ9AgAFEgTVDwQKCg0KBQQ9AgABEgTVDwsTCg0KBQQ9AgADEgTVDxYXCk4KBAQ9AgESBNYPBBkiQCBOdW1iZXIgb2YgZmxvd3Mgb3IgZ3JvdXBzIHRoYXQgZGlyZWN0bHkKZm9yd2FyZCB0byB0aGlzIGdyb3VwLiAKDwoFBD0CAQQSBtYPBNUPGAoNCgUEPQIBBRIE1g8ECgoNCgUEPQIBARIE1g8LFAoNCgUEPQIBAxIE1g8XGAo1CgQEPQICEgTYDwQcIicgTnVtYmVyIG9mIHBhY2tldHMgcHJvY2Vzc2VkIGJ5IGdyb3VwLiAKDwoFBD0CAgQSBtgPBNYPGQoNCgUEPQICBRIE2A8ECgoNCgUEPQICARIE2A8LFwoNCgUEPQICAxIE2A8aGwozCgQEPQIDEgTZDwQaIiUgTnVtYmVyIG9mIGJ5dGVzIHByb2Nlc3NlZCBieSBncm91cC4gCg8KBQQ9AgMEEgbZDwTYDxwKDQoFBD0CAwUSBNkPBAoKDQoFBD0CAwESBNkPCxUKDQoFBD0CAwMSBNkPGBkKNQoEBD0CBBIE2g8EHCInIFRpbWUgZ3JvdXAgaGFzIGJlZW4gYWxpdmUgaW4gc2Vjb25kcy4gCg8KBQQ9AgQEEgbaDwTZDxoKDQoFBD0CBAUSBNoPBAoKDQoFBD0CBAESBNoPCxcKDQoFBD0CBAMSBNoPGhsKTQoEBD0CBRIE2w8EHSI/IFRpbWUgZ3JvdXAgaGFzIGJlZW4gYWxpdmUgaW4gbmFub3NlY29uZHMKYmV5b25kIGR1cmF0aW9uX3NlYy4gCg8KBQQ9AgUEEgbbDwTaDxwKDQoFBD0CBQUSBNsPBAoKDQoFBD0CBQESBNsPCxgKDQoFBD0CBQMSBNsPGxwKKwoEBD0CBhIE3Q8EMSIdIE9uZSBjb3VudGVyIHNldCBwZXIKYnVja2V0LiAKDQoFBD0CBgQSBN0PBAwKDQoFBD0CBgYSBN0PDR8KDQoFBD0CBgESBN0PICwKDQoFBD0CBgMSBN0PLzAKOgoCBD4SBuIPAOYPARosIEJvZHkgb2YgcmVwbHkgdG8gT0ZQTVBfR1JPVVBfREVTQyByZXF1ZXN0LiAKCwoDBD4BEgTiDwgWCh8KBAQ+AgASBOMPBBwiESBPbmUgb2YgT0ZQR1RfKi4gCg8KBQQ+AgAEEgbjDwTiDxgKDQoFBD4CAAYSBOMPBBIKDQoFBD4CAAESBOMPExcKDQoFBD4CAAMSBOMPGhsKIQoEBD4CARIE5A8EGCITIEdyb3VwIGlkZW50aWZpZXIuIAoPCgUEPgIBBBIG5A8E4w8cCg0KBQQ+AgEFEgTkDwQKCg0KBQQ+AgEBEgTkDwsTCg0KBQQ+AgEDEgTkDxYXCiwKBAQ+AgISBOUPBCQiHiBMaXN0IG9mIGJ1Y2tldHMgLSAwIG9yIG1vcmUuIAoNCgUEPgICBBIE5Q8EDAoNCgUEPgICBhIE5Q8NFwoNCgUEPgICARIE5Q8YHwoNCgUEPgICAxIE5Q8iIwoMCgIEPxIG6A8A7A8BCgsKAwQ/ARIE6A8IFwoOCgQEPwIAEgbpDwTqD1sKDwoFBD8CAAQSBukPBOgPGQoNCgUEPwIABhIE6Q8EEgoNCgUEPwIAARIE6Q8TFwoNCgUEPwIAAxIE6Q8aGwoPCgUEPwIACBIG6Q8c6g9aChIKCgQ/AgAI8N7ZAwESBOkPHUIKEgoKBD8CAAjw3tkDAhIE6g8cWQoMCgQEPwIBEgTrDwQeCg8KBQQ/AgEEEgbrDwTqD1sKDQoFBD8CAQYSBOsPBBMKDQoFBD8CAQESBOsPFBkKDQoFBD8CAQMSBOsPHB0KlgEKAgUxEgbyDwD4DwEaGyBHcm91cCBjb25maWd1cmF0aW9uIGZsYWdzIDI9IEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAxLjMuMSAtIGF2b2lkIGJyZWFraW5nIHRoZSBBUEkuIDIsI2RlZmluZSBvZnBfZ3JvdXBfZGVzY19zdGF0cyBvZnBfZ3JvdXBfZGVzYwoKCwoDBTEBEgTyDwUbCgwKBAUxAgASBPMPBB8KDQoFBTECAAESBPMPBBIKDQoFBTECAAISBPMPHR4KMAoEBTECARIE9A8EHyIiIFN1cHBvcnQgd2VpZ2h0IGZvciBzZWxlY3QgZ3JvdXBzIAoNCgUFMQIBARIE9A8EGAoNCgUFMQIBAhIE9A8dHgoyCgQFMQICEgT1DwQfIiQgU3VwcG9ydCBsaXZlbmVzcyBmb3Igc2VsZWN0IGdyb3VwcyAKDQoFBTECAgESBPUPBBoKDQoFBTECAgISBPUPHR4KJwoEBTECAxIE9g8EHyIZIFN1cHBvcnQgY2hhaW5pbmcgZ3JvdXBzIAoNCgUFMQIDARIE9g8EEwoNCgUFMQIDAhIE9g8dHgozCgQFMQIEEgT3DwQfIiUgQ2hlY2sgY2hhaW5pbmcgZm9yIGxvb3BzIGFuZCBkZWxldGUgCg0KBQUxAgQBEgT3DwQaCg0KBQUxAgQCEgT3Dx0eCk4KAgRAEgb7DwCCEAEaQCBCb2R5IG9mIHJlcGx5IHRvIE9GUE1QX0dST1VQX0ZFQVRVUkVTIHJlcXVlc3QuIEdyb3VwIGZlYXR1cmVzLiAKCwoDBEABEgT7DwgaCjoKBARAAgASBPwPBBYiLCBCaXRtYXAgb2YgKDEgPDwgT0ZQR1RfKikgdmFsdWVzIHN1cHBvcnRlZC4gCg8KBQRAAgAEEgb8DwT7DxwKDQoFBEACAAUSBPwPBAoKDQoFBEACAAESBPwPDBEKDQoFBEACAAMSBPwPFBUKOAoEBEACARIE/Q8EHSIqIEJpdG1hcCBvZiBPRlBHRkNfKiBjYXBhYmlsaXR5IHN1cHBvcnRlZC4gCg8KBQRAAgEEEgb9DwT8DxYKDQoFBEACAQUSBP0PBAoKDQoFBEACAQESBP0PDBgKDQoFBEACAQMSBP0PGxwKNwoEBEACAhIE/g8EIyIpIE1heGltdW0gbnVtYmVyIG9mIGdyb3VwcyBmb3IgZWFjaCB0eXBlLgoKDQoFBEACAgQSBP4PBAwKDQoFBEACAgUSBP4PDRMKDQoFBEACAgESBP4PFB4KDQoFBEACAgMSBP4PISIKOwoEBEACAxIEgBAEICItIEJpdG1hcHMgb2YgKDEgPDwgT0ZQQVRfKikgdmFsdWVzCnN1cHBvcnRlZC4gCg0KBQRAAgMEEgSAEAQMCg0KBQRAAgMFEgSAEA0TCg0KBQRAAgMBEgSAEBQbCg0KBQRAAgMDEgSAEB4fCkQKAgRBEgaFEACHEAEaNiBCb2R5IG9mIE9GUE1QX01FVEVSIGFuZCBPRlBNUF9NRVRFUl9DT05GSUcgcmVxdWVzdHMuIAoLCgMEQQESBIUQCCMKLAoEBEECABIEhhAEGCIeIE1ldGVyIGluc3RhbmNlLCBvciBPRlBNX0FMTC4gCg8KBQRBAgAEEgaGEASFECUKDQoFBEECAAUSBIYQBAoKDQoFBEECAAESBIYQCxMKDQoFBEECAAMSBIYQFhcKLgoCBEISBooQAI0QARogIFN0YXRpc3RpY3MgZm9yIGVhY2ggbWV0ZXIgYmFuZCAKCwoDBEIBEgSKEAgcCioKBARCAgASBIsQBCgiHCBOdW1iZXIgb2YgcGFja2V0cyBpbiBiYW5kLiAKDwoFBEICAAQSBosQBIoQHgoNCgUEQgIABRIEixAECgoNCgUEQgIAARIEixASIwoNCgUEQgIAAxIEixAmJwooCgQEQgIBEgSMEAQmIhogTnVtYmVyIG9mIGJ5dGVzIGluIGJhbmQuIAoPCgUEQgIBBBIGjBAEixAoCg0KBQRCAgEFEgSMEAQKCg0KBQRCAgEBEgSMEBIhCg0KBQRCAgEDEgSMECQlCkcKAgRDEgaQEACaEAEaOSBCb2R5IG9mIHJlcGx5IHRvIE9GUE1QX01FVEVSIHJlcXVlc3QuIE1ldGVyIHN0YXRpc3RpY3MuIAoLCgMEQwESBJAQCBcKHwoEBEMCABIEkRAEHyIRIE1ldGVyIGluc3RhbmNlLiAKDwoFBEMCAAQSBpEQBJAQGQoNCgUEQwIABRIEkRAECgoNCgUEQwIAARIEkRASGgoNCgUEQwIAAxIEkRAdHgovCgQEQwIBEgSSEAQhIiEgTnVtYmVyIG9mIGZsb3dzIGJvdW5kIHRvIG1ldGVyLiAKDwoFBEMCAQQSBpIQBJEQHwoNCgUEQwIBBRIEkhAECgoNCgUEQwIBARIEkhASHAoNCgUEQwIBAxIEkhAfIAorCgQEQwICEgSTEAQmIh0gTnVtYmVyIG9mIHBhY2tldHMgaW4gaW5wdXQuIAoPCgUEQwICBBIGkxAEkhAhCg0KBQRDAgIFEgSTEAQKCg0KBQRDAgIBEgSTEBIhCg0KBQRDAgIDEgSTECQlCikKBARDAgMSBJQQBCQiGyBOdW1iZXIgb2YgYnl0ZXMgaW4gaW5wdXQuIAoPCgUEQwIDBBIGlBAEkxAmCg0KBQRDAgMFEgSUEAQKCg0KBQRDAgMBEgSUEBIfCg0KBQRDAgMDEgSUECIjCjUKBARDAgQSBJUQBCMiJyBUaW1lIG1ldGVyIGhhcyBiZWVuIGFsaXZlIGluIHNlY29uZHMuIAoPCgUEQwIEBBIGlRAElBAkCg0KBQRDAgQFEgSVEAQKCg0KBQRDAgQBEgSVEBIeCg0KBQRDAgQDEgSVECEiCk0KBARDAgUSBJYQBCQiPyBUaW1lIG1ldGVyIGhhcyBiZWVuIGFsaXZlIGluIG5hbm9zZWNvbmRzCmJleW9uZCBkdXJhdGlvbl9zZWMuIAoPCgUEQwIFBBIGlhAElRAjCg0KBQRDAgUFEgSWEAQKCg0KBQRDAgUBEgSWEBIfCg0KBQRDAgUDEgSWECIjCkgKBARDAgYSBJgQBDEiOiBUaGUgYmFuZF9zdGF0cyBsZW5ndGggaXMKaW5mZXJyZWQgZnJvbSB0aGUgbGVuZ3RoIGZpZWxkLiAKDQoFBEMCBgQSBJgQBAwKDQoFBEMCBgYSBJgQDSEKDQoFBEMCBgESBJgQIiwKDQoFBEMCBgMSBJgQLzAKUQoCBEQSBp0QAKIQARpDIEJvZHkgb2YgcmVwbHkgdG8gT0ZQTVBfTUVURVJfQ09ORklHIHJlcXVlc3QuIE1ldGVyIGNvbmZpZ3VyYXRpb24uIAoLCgMERAESBJ0QCBgKJwoEBEQCABIEnhAEHCIZIEFsbCBPRlBNRl8qIHRoYXQgYXBwbHkuIAoPCgUERAIABBIGnhAEnRAaCg0KBQREAgAFEgSeEAQKCg0KBQREAgABEgSeEBIXCg0KBQREAgADEgSeEBobCh8KBAREAgESBJ8QBB8iESBNZXRlciBpbnN0YW5jZS4gCg8KBQREAgEEEgafEASeEBwKDQoFBEQCAQUSBJ8QBAoKDQoFBEQCAQESBJ8QEhoKDQoFBEQCAQMSBJ8QHR4KQwoEBEQCAhIEoBAELSI1IFRoZSBiYW5kcyBsZW5ndGggaXMKaW5mZXJyZWQgZnJvbSB0aGUgbGVuZ3RoIGZpZWxkLiAKDQoFBEQCAgQSBKAQBAwKDQoFBEQCAgYSBKAQDSIKDQoFBEQCAgESBKAQIygKDQoFBEQCAgMSBKAQKywKTgoCBEUSBqUQAKwQARpAIEJvZHkgb2YgcmVwbHkgdG8gT0ZQTVBfTUVURVJfRkVBVFVSRVMgcmVxdWVzdC4gTWV0ZXIgZmVhdHVyZXMuIAoLCgMERQESBKUQCBoKKQoEBEUCABIEphAEHCIbIE1heGltdW0gbnVtYmVyIG9mIG1ldGVycy4gCg8KBQRFAgAEEgamEASlEBwKDQoFBEUCAAUSBKYQBAoKDQoFBEUCAAESBKYQDhcKDQoFBEUCAAMSBKYQGhsKPAoEBEUCARIEpxAEHSIuIEJpdG1hcHMgb2YgKDEgPDwgT0ZQTUJUXyopIHZhbHVlcyBzdXBwb3J0ZWQuCgoPCgUERQIBBBIGpxAEphAcCg0KBQRFAgEFEgSnEAQKCg0KBQRFAgEBEgSnEA4YCg0KBQRFAgEDEgSnEBscCi0KBARFAgISBKkQBB8iHyBCaXRtYXBzIG9mICJvZnBfbWV0ZXJfZmxhZ3MiLiAKDwoFBEUCAgQSBqkQBKcQHQoNCgUERQICBRIEqRAECgoNCgUERQICARIEqRAOGgoNCgUERQICAxIEqRAdHgooCgQERQIDEgSqEAQcIhogTWF4aW11bSBiYW5kcyBwZXIgbWV0ZXJzIAoPCgUERQIDBBIGqhAEqRAfCg0KBQRFAgMFEgSqEAQKCg0KBQRFAgMBEgSqEA4XCg0KBQRFAgMDEgSqEBobCiMKBARFAgQSBKsQBBwiFSBNYXhpbXVtIGNvbG9yIHZhbHVlIAoPCgUERQIEBBIGqxAEqhAcCg0KBQRFAgQFEgSrEAQKCg0KBQRFAgQBEgSrEA4XCg0KBQRFAgQDEgSrEBobClAKAgRGEgavEAC0EAEaQiBCb2R5IGZvciBvZnBfbXVsdGlwYXJ0X3JlcXVlc3QvcmVwbHkgb2YgdHlwZSBPRlBNUF9FWFBFUklNRU5URVIuIAoLCgMERgESBK8QCCkKXwoEBEYCABIEsBAEHCJRIEV4cGVyaW1lbnRlciBJRCB3aGljaCB0YWtlcyB0aGUgc2FtZSBmb3JtCmFzIGluIHN0cnVjdCBvZnBfZXhwZXJpbWVudGVyX2hlYWRlci4gCg8KBQRGAgAEEgawEASvECsKDQoFBEYCAAUSBLAQBAoKDQoFBEYCAAESBLAQCxcKDQoFBEYCAAMSBLAQGhsKJQoEBEYCARIEshAEGCIXIEV4cGVyaW1lbnRlciBkZWZpbmVkLiAKDwoFBEYCAQQSBrIQBLAQHAoNCgUERgIBBRIEshAECgoNCgUERgIBARIEshALEwoNCgUERgIBAxIEshAWFwo/CgQERgICEgSzEAQTIjEgRXhwZXJpbWVudGVyLWRlZmluZWQgYXJiaXRyYXJ5IGFkZGl0aW9uYWwgZGF0YS4gCg8KBQRGAgIEEgazEASyEBgKDQoFBEYCAgUSBLMQBAkKDQoFBEYCAgESBLMQCg4KDQoFBEYCAgMSBLMQERIKJwoCBEcSBrcQAL4QARoZIEV4cGVyaW1lbnRlciBleHRlbnNpb24uIAoLCgMERwESBLcQCB8KmQEKBARHAgASBLkQBBwaMm9mcF9oZWFkZXIgaGVhZGVyOyAgLyogVHlwZSBPRlBUX0VYUEVSSU1FTlRFUi4gKi8KIlcgRXhwZXJpbWVudGVyIElEOgogLSBNU0IgMDogbG93LW9yZGVyIGJ5dGVzIGFyZSBJRUVFIE9VSS4KIC0gTVNCICE9IDA6IGRlZmluZWQgYnkgT05GLiAKDwoFBEcCAAQSBrkQBLcQIQoNCgUERwIABRIEuRAECgoNCgUERwIAARIEuRALFwoNCgUERwIAAxIEuRAaGwolCgQERwIBEgS8EAQYIhcgRXhwZXJpbWVudGVyIGRlZmluZWQuIAoPCgUERwIBBBIGvBAEuRAcCg0KBQRHAgEFEgS8EAQKCg0KBQRHAgEBEgS8EAsTCg0KBQRHAgEDEgS8EBYXCj8KBARHAgISBL0QBBMiMSBFeHBlcmltZW50ZXItZGVmaW5lZCBhcmJpdHJhcnkgYWRkaXRpb25hbCBkYXRhLiAKDwoFBEcCAgQSBr0QBLwQGAoNCgUERwICBRIEvRAECQoNCgUERwICARIEvRAKDgoNCgUERwICAxIEvRAREgqhAgoCBTISBskQAM4QATJKIEFsbCBvbmVzIGlzIHVzZWQgdG8gaW5kaWNhdGUgYWxsIHF1ZXVlcyBpbiBhIHBvcnQgKGZvciBzdGF0cyByZXRyaWV2YWwpLiAyISNkZWZpbmUgT0ZQUV9BTEwgICAgICAweGZmZmZmZmZmCjInIE1pbiByYXRlID4gMTAwMCBtZWFucyBub3QgY29uZmlndXJlZC4gMigjZGVmaW5lIE9GUFFfTUlOX1JBVEVfVU5DRkcgICAgICAweGZmZmYKMicgTWF4IHJhdGUgPiAxMDAwIG1lYW5zIG5vdCBjb25maWd1cmVkLiAyKCNkZWZpbmUgT0ZQUV9NQVhfUkFURV9VTkNGRyAgICAgIDB4ZmZmZgoKCwoDBTIBEgTJEAUZCgwKBAUyAgASBMoQBBwKDQoFBTICAAESBMoQBBEKDQoFBTICAAISBMoQGhsKLAoEBTICARIEyxAEHCIeIE1pbmltdW0gZGF0YXJhdGUgZ3VhcmFudGVlZC4gCg0KBQUyAgEBEgTLEAQSCg0KBQUyAgECEgTLEBobCiEKBAUyAgISBMwQBBwiEyBNYXhpbXVtIGRhdGFyYXRlLiAKDQoFBTICAgESBMwQBBIKDQoFBTICAgISBMwQGhsKLgoEBTICAxIEzRAEISIgIEV4cGVyaW1lbnRlciBkZWZpbmVkIHByb3BlcnR5LiAKDQoFBTICAwESBM0QBBYKDQoFBTICAwISBM0QGiAKLwoCBEgSBtEQANQQARohIENvbW1vbiBkZXNjcmlwdGlvbiBmb3IgYSBxdWV1ZS4gCgsKAwRIARIE0RAIHQoeCgQESAIAEgTSEAQYIhAgT25lIG9mIE9GUFFUXy4gCg8KBQRIAgAEEgbSEATREB8KDQoFBEgCAAUSBNIQBAoKDQoFBEgCAAESBNIQCxMKDQoFBEgCAAMSBNIQFhcKOgoEBEgCARIE0xAEEyIsIExlbmd0aCBvZiBwcm9wZXJ0eSwgaW5jbHVkaW5nIHRoaXMgaGVhZGVyLiAKDwoFBEgCAQQSBtMQBNIQGAoNCgUESAIBBRIE0xAECgoNCgUESAIBARIE0xALDgoNCgUESAIBAxIE0xAREgo0CgIESRIG1xAA2hABGiYgTWluLVJhdGUgcXVldWUgcHJvcGVydHkgZGVzY3JpcHRpb24uIAoLCgMESQESBNcQCB8KKQoEBEkCABIE2BAEKiIbIHByb3A6IE9GUFFUX01JTiwgbGVuOiAxNi4gCg8KBQRJAgAEEgbYEATXECEKDQoFBEkCAAYSBNgQBBkKDQoFBEkCAAESBNgQGiUKDQoFBEkCAAMSBNgQKCkKOwoEBEkCARIE2RAEFCItIEluIDEvMTAgb2YgYSBwZXJjZW50ID0gMDs+MTAwMCAtPiBkaXNhYmxlZC4gCg8KBQRJAgEEEgbZEATYECoKDQoFBEkCAQUSBNkQBAoKDQoFBEkCAQESBNkQCw8KDQoFBEkCAQMSBNkQEhMKNAoCBEoSBt0QAOAQARomIE1heC1SYXRlIHF1ZXVlIHByb3BlcnR5IGRlc2NyaXB0aW9uLiAKCwoDBEoBEgTdEAgfCikKBARKAgASBN4QBCoiGyBwcm9wOiBPRlBRVF9NQVgsIGxlbjogMTYuIAoPCgUESgIABBIG3hAE3RAhCg0KBQRKAgAGEgTeEAQZCg0KBQRKAgABEgTeEBolCg0KBQRKAgADEgTeECgpCjsKBARKAgESBN8QBBQiLSBJbiAxLzEwIG9mIGEgcGVyY2VudCA9IDA7PjEwMDAgLT4gZGlzYWJsZWQuIAoPCgUESgIBBBIG3xAE3hAqCg0KBQRKAgEFEgTfEAQKCg0KBQRKAgEBEgTfEAsPCg0KBQRKAgEDEgTfEBITCjgKAgRLEgbjEADpEAEaKiBFeHBlcmltZW50ZXIgcXVldWUgcHJvcGVydHkgZGVzY3JpcHRpb24uIAoLCgMESwESBOMQCCMKKAoEBEsCABIE5BAEKiIaIHByb3A6IE9GUFFUX0VYUEVSSU1FTlRFUiAKDwoFBEsCAAQSBuQQBOMQJQoNCgUESwIABhIE5BAEGQoNCgUESwIAARIE5BAaJQoNCgUESwIAAxIE5BAoKQpfCgQESwIBEgTlEAQcIlEgRXhwZXJpbWVudGVyIElEIHdoaWNoIHRha2VzIHRoZSBzYW1lCmZvcm0gYXMgaW4gc3RydWN0Cm9mcF9leHBlcmltZW50ZXJfaGVhZGVyLiAKDwoFBEsCAQQSBuUQBOQQKgoNCgUESwIBBRIE5RAECgoNCgUESwIBARIE5RALFwoNCgUESwIBAxIE5RAaGwoqCgQESwICEgToEAQTIhwgRXhwZXJpbWVudGVyIGRlZmluZWQgZGF0YS4gCg8KBQRLAgIEEgboEATlEBwKDQoFBEsCAgUSBOgQBAkKDQoFBEsCAgESBOgQCg4KDQoFBEsCAgMSBOgQERIKLQoCBEwSBuwQAPAQARofIEZ1bGwgZGVzY3JpcHRpb24gZm9yIGEgcXVldWUuIAoLCgMETAESBOwQCBgKKgoEBEwCABIE7RAEGCIcIGlkIGZvciB0aGUgc3BlY2lmaWMgcXVldWUuIAoPCgUETAIABBIG7RAE7BAaCg0KBQRMAgAFEgTtEAQKCg0KBQRMAgABEgTtEAsTCg0KBQRMAgADEgTtEBYXCi8KBARMAgESBO4QBBQiISBQb3J0IHRoaXMgcXVldWUgaXMgYXR0YWNoZWQgdG8uIAoPCgUETAIBBBIG7hAE7RAYCg0KBQRMAgEFEgTuEAQKCg0KBQRMAgEBEgTuEAsPCg0KBQRMAgEDEgTuEBITCiMKBARMAgISBO8QBDIiFSBMaXN0IG9mIHByb3BlcnRpZXMuIAoNCgUETAICBBIE7xAEDAoNCgUETAICBhIE7xANIgoNCgUETAICARIE7xAjLQoNCgUETAICAxIE7xAwMQozCgIETRIG8xAA+RABGiUgUXVlcnkgZm9yIHBvcnQgcXVldWUgY29uZmlndXJhdGlvbi4gCgsKAwRNARIE8xAIJAqfAQoEBE0CABIE9RAEFBoTb2ZwX2hlYWRlciBoZWFkZXI7CiJ8IFBvcnQgdG8gYmUgcXVlcmllZC4gU2hvdWxkIHJlZmVyCnRvIGEgdmFsaWQgcGh5c2ljYWwgcG9ydCAoaS5lLiA8PSBPRlBQX01BWCksCm9yIE9GUFBfQU5ZIHRvIHJlcXVlc3QgYWxsIGNvbmZpZ3VyZWQKcXVldWVzLgoPCgUETQIABBIG9RAE8xAmCg0KBQRNAgAFEgT1EAQKCg0KBQRNAgABEgT1EAsPCg0KBQRNAgADEgT1EBITCjUKAgROEgb8EACAEQEaJyBRdWV1ZSBjb25maWd1cmF0aW9uIGZvciBhIGdpdmVuIHBvcnQuIAoLCgMETgESBPwQCCIKIQoEBE4CABIE/hAEFBoTb2ZwX2hlYWRlciBoZWFkZXI7CgoPCgUETgIABBIG/hAE/BAkCg0KBQROAgAFEgT+EAQKCg0KBQROAgABEgT+EAsPCg0KBQROAgADEgT+EBITCioKBAROAgESBP8QBCkiHCBMaXN0IG9mIGNvbmZpZ3VyZWQgcXVldWVzLiAKDQoFBE4CAQQSBP8QBAwKDQoFBE4CAQYSBP8QDR0KDQoFBE4CAQESBP8QHiQKDQoFBE4CAQMSBP8QJygKUwoCBE8SBoMRAIYRARpFIE9GUEFUX1NFVF9RVUVVRSBhY3Rpb24gc3RydWN0OiBzZW5kIHBhY2tldHMgdG8gZ2l2ZW4gcXVldWUgb24gcG9ydC4gCgsKAwRPARIEgxEIHAogCgQETwIAEgSEEQQUIhIgT0ZQQVRfU0VUX1FVRVVFLiAKDwoFBE8CAAQSBoQRBIMRHgoNCgUETwIABRIEhBEECgoNCgUETwIAARIEhBELDwoNCgUETwIAAxIEhBESEwopCgQETwIBEgSFEQQYIhsgUXVldWUgaWQgZm9yIHRoZSBwYWNrZXRzLiAKDwoFBE8CAQQSBoURBIQRFAoNCgUETwIBBRIEhREECgoNCgUETwIBARIEhRELEwoNCgUETwIBAxIEhREWFwoMCgIEUBIGiBEAixEBCgsKAwRQARIEiBEIHwomCgQEUAIAEgSJEQQXIhggQWxsIHBvcnRzIGlmIE9GUFBfQU5ZLiAKDwoFBFACAAQSBokRBIgRIQoNCgUEUAIABRIEiREECgoNCgUEUAIAARIEiRELEgoNCgUEUAIAAxIEiREVFgonCgQEUAIBEgSKEQQYIhkgQWxsIHF1ZXVlcyBpZiBPRlBRX0FMTC4gCg8KBQRQAgEEEgaKEQSJERcKDQoFBFACAQUSBIoRBAoKDQoFBFACAQESBIoRCxMKDQoFBFACAQMSBIoRFhcKDAoCBFESBo0RAJYRAQoLCgMEUQESBI0RCBcKDAoEBFECABIEjhEEFwoPCgUEUQIABBIGjhEEjREZCg0KBQRRAgAFEgSOEQQKCg0KBQRRAgABEgSOEQsSCg0KBQRRAgADEgSOERUWChkKBARRAgESBI8RBBgiCyBRdWV1ZSBpLmQgCg8KBQRRAgEEEgaPEQSOERcKDQoFBFECAQUSBI8RBAoKDQoFBFECAQESBI8RCxMKDQoFBFECAQMSBI8RFhcKLAoEBFECAhIEkBEEGCIeIE51bWJlciBvZiB0cmFuc21pdHRlZCBieXRlcy4gCg8KBQRRAgIEEgaQEQSPERgKDQoFBFECAgUSBJARBAoKDQoFBFECAgESBJARCxMKDQoFBFECAgMSBJARFhcKLgoEBFECAxIEkREEGiIgIE51bWJlciBvZiB0cmFuc21pdHRlZCBwYWNrZXRzLiAKDwoFBFECAwQSBpERBJARGAoNCgUEUQIDBRIEkREECgoNCgUEUQIDARIEkRELFQoNCgUEUQIDAxIEkREYGQo5CgQEUQIEEgSSEQQZIisgTnVtYmVyIG9mIHBhY2tldHMgZHJvcHBlZCBkdWUgdG8gb3ZlcnJ1bi4gCg8KBQRRAgQEEgaSEQSRERoKDQoFBFECBAUSBJIRBAoKDQoFBFECBAESBJIRCxQKDQoFBFECBAMSBJIRFxgKNQoEBFECBRIEkxEEHCInIFRpbWUgcXVldWUgaGFzIGJlZW4gYWxpdmUgaW4gc2Vjb25kcy4gCg8KBQRRAgUEEgaTEQSSERkKDQoFBFECBQUSBJMRBAoKDQoFBFECBQESBJMRCxcKDQoFBFECBQMSBJMRGhsKTQoEBFECBhIElBEEHSI/IFRpbWUgcXVldWUgaGFzIGJlZW4gYWxpdmUgaW4gbmFub3NlY29uZHMKYmV5b25kIGR1cmF0aW9uX3NlYy4gCg8KBQRRAgYEEgaUEQSTERwKDQoFBFECBgUSBJQRBAoKDQoFBFECBgESBJQRCxgKDQoFBFECBgMSBJQRGxwK6wYKAgUzEgatEQCyEQEaEyBDb250cm9sbGVyIHJvbGVzLiAyxwYgQ29uZmlndXJlcyB0aGUgInJvbGUiIG9mIHRoZSBzZW5kaW5nIGNvbnRyb2xsZXIuICBUaGUgZGVmYXVsdCByb2xlIGlzOgoKICAgIC0gRXF1YWwgKE9GUENSX1JPTEVfRVFVQUwpLCB3aGljaCBhbGxvd3MgdGhlIGNvbnRyb2xsZXIgYWNjZXNzIHRvIGFsbAogICAgICBPcGVuRmxvdyBmZWF0dXJlcy4gQWxsIGNvbnRyb2xsZXJzIGhhdmUgZXF1YWwgcmVzcG9uc2liaWxpdHkuCgogVGhlIG90aGVyIHBvc3NpYmxlIHJvbGVzIGFyZSBhIHJlbGF0ZWQgcGFpcjoKCiAgICAtIE1hc3RlciAoT0ZQQ1JfUk9MRV9NQVNURVIpIGlzIGVxdWl2YWxlbnQgdG8gRXF1YWwsIGV4Y2VwdCB0aGF0IHRoZXJlCiAgICAgIG1heSBiZSBhdCBtb3N0IG9uZSBNYXN0ZXIgY29udHJvbGxlciBhdCBhIHRpbWU6IHdoZW4gYSBjb250cm9sbGVyCiAgICAgIGNvbmZpZ3VyZXMgaXRzZWxmIGFzIE1hc3RlciwgYW55IGV4aXN0aW5nIE1hc3RlciBpcyBkZW1vdGVkIHRvIHRoZQogICAgICBTbGF2ZSByb2xlLgoKICAgIC0gU2xhdmUgKE9GUENSX1JPTEVfU0xBVkUpIGFsbG93cyB0aGUgY29udHJvbGxlciByZWFkLW9ubHkgYWNjZXNz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YV9wcm90b3MvY29tbW9uLnByb3RvGhh2b2x0aGFfcHJvdG9zL21ldGEucHJvdG8aH3ZvbHRoYV9wcm90b3Mvb3BlbmZsb3dfMTMucHJvdG8aIHZvbHRoYV9wcm90b3MveWFuZ19vcHRpb25zLnByb3RvIr8CCgpEZXZpY2VUeXBlEg4KAmlkGAEgASgJUgJpZBIbCgl2ZW5kb3JfaWQYBSABKAlSCHZlbmRvcklkEh0KCnZlbmRvcl9pZHMYBiADKAlSCXZlbmRvcklkcxIYCgdhZGFwdGVyGAIgASgJUgdhZGFwdGVyEjcKGGFjY2VwdHNfYnVsa19mbG93X3VwZGF0ZRgDIAEoCFIVYWNjZXB0c0J1bGtGbG93VXBkYXRlEkQKH2FjY2VwdHNfYWRkX3JlbW92ZV9mbG93X3VwZGF0ZXMYBCABKAhSG2FjY2VwdHNBZGRSZW1vdmVGbG93VXBkYXRlcxJMCiNhY2NlcHRzX2RpcmVjdF9sb2dpY2FsX2Zsb3dzX3VwZGF0ZRgHIAEoCFIfYWNjZXB0c0RpcmVjdExvZ2ljYWxGbG93c1VwZGF0ZSI3CgtEZXZpY2VUeXBlcxIoCgVpdGVtcxgBIAMoCzISLnZvbHRoYS5EZXZpY2VUeXBlUgVpdGVtcyLAAQoIUG1Db25maWcSEgoEbmFtZRgBIAEoCVIEbmFtZRIrCgR0eXBlGAIgASgOMhcudm9sdGhhLlBtQ29uZmlnLlBtVHlwZVIEdHlwZRIYCgdlbmFibGVkGAMgASgIUgdlbmFibGVkEh8KC3NhbXBsZV9mcmVxGAQgASgNUgpzYW1wbGVGcmVxIjgKBlBtVHlwZRILCgdDT1VOVEVSEAASCQoFR0FVR0UQARIJCgVTVEFURRACEgsKB0NPTlRFWFQQAyKTAQoNUG1Hcm91cENvbmZpZxIdCgpncm91cF9uYW1lGAEgASgJUglncm91cE5hbWUSHQoKZ3JvdXBfZnJlcRgCIAEoDVIJZ3JvdXBGcmVxEhgKB2VuYWJsZWQYAyABKAhSB2VuYWJsZWQSKgoHbWV0cmljcxgEIAMoCzIQLnZvbHRoYS5QbUNvbmZpZ1IHbWV0cmljcyLmAQoJUG1Db25maWdzEg4KAmlkGAEgASgJUgJpZBIhCgxkZWZhdWx0X2ZyZXEYAiABKA1SC2RlZmF1bHRGcmVxEh8KB2dyb3VwZWQYAyABKAhCBej2zR0BUgdncm91cGVkEioKDWZyZXFfb3ZlcnJpZGUYBCABKAhCBej2zR0BUgxmcmVxT3ZlcnJpZGUSLQoGZ3JvdXBzGAUgAygLMhUudm9sdGhhLlBtR3JvdXBDb25maWdSBmdyb3VwcxIqCgdtZXRyaWNzGAYgAygLMhAudm9sdGhhLlBtQ29uZmlnUgdtZXRyaWNzIs8BCgVJbWFnZRISCgRuYW1lGAEgASgJUgRuYW1lEhgKB3ZlcnNpb24YAiABKAlSB3ZlcnNpb24SEgoEaGFzaBgDIAEoCVIEaGFzaBIpChBpbnN0YWxsX2RhdGV0aW1lGAQgASgJUg9pbnN0YWxsRGF0ZXRpbWUSGwoJaXNfYWN0aXZlGAUgASgIUghpc0FjdGl2ZRIhCgxpc19jb21taXR0ZWQYBiABKAhSC2lzQ29tbWl0dGVkEhkKCGlzX3ZhbGlkGAcgASgIUgdpc1ZhbGlkIi0KBkltYWdlcxIjCgVpbWFnZRgBIAMoCzINLnZvbHRoYS5JbWFnZVIFaW1hZ2Ui6gcKDUltYWdlRG93bmxvYWQSDgoCaWQYASABKAlSAmlkEhIKBG5hbWUYAiABKAlSBG5hbWUSEAoDdXJsGAMgASgJUgN1cmwSEAoDY3JjGAQgASgNUgNjcmMSTwoOZG93bmxvYWRfc3RhdGUYBSABKA4yKC52b2x0aGEuSW1hZ2VEb3dubG9hZC5JbWFnZURvd25sb2FkU3RhdGVSDWRvd25sb2FkU3RhdGUSIwoNaW1hZ2VfdmVyc2lvbhgGIAEoCVIMaW1hZ2VWZXJzaW9uEikKEGRvd25sb2FkZWRfYnl0ZXMYByABKA1SD2Rvd25sb2FkZWRCeXRlcxJICgZyZWFzb24YCCABKA4yMC52b2x0aGEuSW1hZ2VEb3dubG9hZC5JbWFnZURvd25sb2FkRmFpbHVyZVJlYXNvblIGcmVhc29uEicKD2FkZGl0aW9uYWxfaW5mbxgJIAEoCVIOYWRkaXRpb25hbEluZm8SHwoLc2F2ZV9jb25maWcYCiABKAhSCnNhdmVDb25maWcSGwoJbG9jYWxfZGlyGAsgASgJUghsb2NhbERpchJJCgtpbWFnZV9zdGF0ZRgMIAEoDjIoLnZvbHRoYS5JbWFnZURvd25sb2FkLkltYWdlQWN0aXZhdGVTdGF0ZVIKaW1hZ2VTdGF0ZRIbCglmaWxlX3NpemUYDSABKA1SCGZpbGVTaXplIrcBChJJbWFnZURvd25sb2FkU3RhdGUSFAoQRE9XTkxPQURfVU5LTk9XThAAEhYKEkRPV05MT0FEX1NVQ0NFRURFRBABEhYKEkRPV05MT0FEX1JFUVVFU1RFRBACEhQKEERPV05MT0FEX1NUQVJURUQQAxITCg9ET1dOTE9BRF9GQUlMRUQQBBIYChRET1dOTE9BRF9VTlNVUFBPUlRFRBAFEhYKEkRPV05MT0FEX0NBTkNFTExFRBAGIoYBChpJbWFnZURvd25sb2FkRmFpbHVyZVJlYXNvbhIMCghOT19FUlJPUhAAEg8KC0lOVkFMSURfVVJMEAESDwoLREVWSUNFX0JVU1kQAhIWChJJTlNVRkZJQ0lFTlRfU1BBQ0UQAxIRCg1VTktOT1dOX0VSUk9SEAQSDQoJQ0FOQ0VMTEVEEAUijAEKEkltYWdlQWN0aXZhdGVTdGF0ZRIRCg1JTUFHRV9VTktOT1dOEAASEgoOSU1BR0VfSU5BQ1RJVkUQARIUChBJTUFHRV9BQ1RJVkFUSU5HEAISEAoMSU1BR0VfQUNUSVZFEAMSEwoPSU1BR0VfUkVWRVJUSU5HEAQSEgoOSU1BR0VfUkVWRVJURUQQBToF8PbNHQAiPQoOSW1hZ2VEb3dubG9hZHMSKwoFaXRlbXMYAiADKAsyFS52b2x0aGEuSW1hZ2VEb3dubG9hZFIFaXRlbXMilgUKBFBvcnQSFwoHcG9ydF9ubxgBIAEoDVIGcG9ydE5vEhQKBWxhYmVsGAIgASgJUgVsYWJlbBIpCgR0eXBlGAMgASgOMhUudm9sdGhhLlBvcnQuUG9ydFR5cGVSBHR5cGUSPgoLYWRtaW5fc3RhdGUYBSABKA4yHS5jb21tb24uQWRtaW5TdGF0ZS5BZG1pblN0YXRlUgphZG1pblN0YXRlEj4KC29wZXJfc3RhdHVzGAYgASgOMh0uY29tbW9uLk9wZXJTdGF0dXMuT3BlclN0YXR1c1IKb3BlclN0YXR1cxIbCglkZXZpY2VfaWQYByABKAlSCGRldmljZUlkEisKBXBlZXJzGAggAygLMhUudm9sdGhhLlBvcnQuUGVlclBvcnRSBXBlZXJzEh0KCnJ4X3BhY2tldHMYCSABKAZSCXJ4UGFja2V0cxIZCghyeF9ieXRlcxgKIAEoBlIHcnhCeXRlcxIbCglyeF9lcnJvcnMYCyABKAZSCHJ4RXJyb3JzEh0KCnR4X3BhY2tldHMYDCABKAZSCXR4UGFja2V0cxIZCgh0eF9ieXRlcxgNIAEoBlIHdHhCeXRlcxIbCgl0eF9lcnJvcnMYDiABKAZSCHR4RXJyb3JzGkAKCFBlZXJQb3J0EhsKCWRldmljZV9pZBgBIAEoCVIIZGV2aWNlSWQSFwoHcG9ydF9ubxgCIAEoDVIGcG9ydE5vInMKCFBvcnRUeXBlEgsKB1VOS05PV04QABIQCgxFVEhFUk5FVF9OTkkQARIQCgxFVEhFUk5FVF9VTkkQAhILCgdQT05fT0xUEAMSCwoHUE9OX09OVRAEEg0KCVZFTkVUX09MVBAFEg0KCVZFTkVUX09OVRAGOgXw9s0dACIrCgVQb3J0cxIiCgVpdGVtcxgBIAMoCzIMLnZvbHRoYS5Qb3J0UgVpdGVtcyLcDAoGRGV2aWNlEhUKAmlkGAEgASgJQgXo9s0dAVICaWQSGQoEdHlwZRgCIAEoCUIF6PbNHQFSBHR5cGUSGQoEcm9vdBgDIAEoCEIF6PbNHQFSBHJvb3QSIgoJcGFyZW50X2lkGAQgASgJQgXo9s0dAVIIcGFyZW50SWQSKwoOcGFyZW50X3BvcnRfbm8YFCABKA1CBej2zR0BUgxwYXJlbnRQb3J0Tm8SHQoGdmVuZG9yGAUgASgJQgXo9s0dAVIGdmVuZG9yEhsKBW1vZGVsGAYgASgJQgXo9s0dAVIFbW9kZWwSMAoQaGFyZHdhcmVfdmVyc2lvbhgHIAEoCUIF6PbNHQFSD2hhcmR3YXJlVmVyc2lvbhIwChBmaXJtd2FyZV92ZXJzaW9uGAggASgJQgXo9s0dAVIPZmlybXdhcmVWZXJzaW9uEi0KBmltYWdlcxgJIAEoCzIOLnZvbHRoYS5JbWFnZXNCBej2zR0BUgZpbWFnZXMSKgoNc2VyaWFsX251bWJlchgKIAEoCUIF6PbNHQFSDHNlcmlhbE51bWJlchIiCgl2ZW5kb3JfaWQYGCABKAlCBej2zR0BUgh2ZW5kb3JJZBIfCgdhZGFwdGVyGAsgASgJQgXo9s0dAVIHYWRhcHRlchISCgR2bGFuGAwgASgNUgR2bGFuEh8KC21hY19hZGRyZXNzGA0gASgJUgptYWNBZGRyZXNzEiMKDGlwdjRfYWRkcmVzcxgOIAEoCUgAUgtpcHY0QWRkcmVzcxIjCgxpcHY2X2FkZHJlc3MYDyABKAlIAFILaXB2NkFkZHJlc3MSJAoNaG9zdF9hbmRfcG9ydBgVIAEoCUgAUgtob3N0QW5kUG9ydBIdCgpleHRyYV9hcmdzGBcgASgJUglleHRyYUFyZ3MSQAoNcHJveHlfYWRkcmVzcxgTIAEoCzIbLnZvbHRoYS5EZXZpY2UuUHJveHlBZGRyZXNzUgxwcm94eUFkZHJlc3MSPgoLYWRtaW5fc3RhdGUYECABKA4yHS5jb21tb24uQWRtaW5TdGF0ZS5BZG1pblN0YXRlUgphZG1pblN0YXRlEkUKC29wZXJfc3RhdHVzGBEgASgOMh0uY29tbW9uLk9wZXJTdGF0dXMuT3BlclN0YXR1c0IF6PbNHQFSCm9wZXJTdGF0dXMSHQoGcmVhc29uGBYgASgJQgXo9s0dAVIGcmVhc29uElEKDmNvbm5lY3Rfc3RhdHVzGBIgASgOMiMuY29tbW9uLkNvbm5lY3RTdGF0dXMuQ29ubmVjdFN0YXR1c0IF6PbNHQFSDWNvbm5lY3RTdGF0dXMSLAoGY3VzdG9tGEAgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIGY3VzdG9tEjMKBXBvcnRzGIABIAMoCzIMLnZvbHRoYS5Qb3J0Qg7i9s0dCQoHcG9ydF9ub1IFcG9ydHMSMAoFZmxvd3MYgQEgASgLMhIub3BlbmZsb3dfMTMuRmxvd3NCBeL2zR0AUgVmbG93cxJACgtmbG93X2dyb3VwcxiCASABKAsyFy5vcGVuZmxvd18xMy5GbG93R3JvdXBzQgXi9s0dAFIKZmxvd0dyb3VwcxI4CgpwbV9jb25maWdzGIMBIAEoCzIRLnZvbHRoYS5QbUNvbmZpZ3NCBeL2zR0AUglwbUNvbmZpZ3MSTAoPaW1hZ2VfZG93bmxvYWRzGIUBIAMoCzIVLnZvbHRoYS5JbWFnZURvd25sb2FkQgvi9s0dBgoEbmFtZVIOaW1hZ2VEb3dubG9hZHMagwIKDFByb3h5QWRkcmVzcxIbCglkZXZpY2VfaWQYASABKAlSCGRldmljZUlkEh8KC2RldmljZV90eXBlGAIgASgJUgpkZXZpY2VUeXBlEh0KCmNoYW5uZWxfaWQYAyABKA1SCWNoYW5uZWxJZBIoChBjaGFubmVsX2dyb3VwX2lkGAQgASgNUg5jaGFubmVsR3JvdXBJZBIvChNjaGFubmVsX3Rlcm1pbmF0aW9uGAUgASgJUhJjaGFubmVsVGVybWluYXRpb24SFQoGb251X2lkGAYgASgNUgVvbnVJZBIkCg5vbnVfc2Vzc2lvbl9pZBgHIAEoDVIMb251U2Vzc2lvbklkOgXw9s0dAEIJCgdhZGRyZXNzIi8KB0RldmljZXMSJAoFaXRlbXMYASADKAsyDi52b2x0aGEuRGV2aWNlUgVpdGVtcyKoAwoUU2ltdWxhdGVBbGFybVJlcXVlc3QSDgoCaWQYASABKAlSAmlkEhwKCWluZGljYXRvchgCIAEoCVIJaW5kaWNhdG9yEhcKB2ludGZfaWQYAyABKAlSBmludGZJZBIkCg5wb3J0X3R5cGVfbmFtZRgEIAEoCVIMcG9ydFR5cGVOYW1lEiIKDW9udV9kZXZpY2VfaWQYBSABKAlSC29udURldmljZUlkEjMKFmludmVyc2VfYml0X2Vycm9yX3JhdGUYBiABKAVSE2ludmVyc2VCaXRFcnJvclJhdGUSFAoFZHJpZnQYByABKAVSBWRyaWZ0EhcKB25ld19lcWQYCCABKAVSBm5ld0VxZBIqChFvbnVfc2VyaWFsX251bWJlchgJIAEoCVIPb251U2VyaWFsTnVtYmVyEkgKCW9wZXJhdGlvbhgKIAEoDjIqLnZvbHRoYS5TaW11bGF0ZUFsYXJtUmVxdWVzdC5PcGVyYXRpb25UeXBlUglvcGVyYXRpb24iJQoNT3BlcmF0aW9uVHlwZRIJCgVSQUlTRRAAEgkKBUNMRUFSEAFCLVorZ2l0aHViLmNvbS9vcGVuY29yZC92b2x0aGEtcHJvdG9zL2dvL3ZvbHRoYUrIcgoHEgUAAMgCAQoICgEMEgMAABIKCAoBCBIDAgBCCgkKAggLEgMCAEIKCAoBAhIDBAAPCgkKAgMAEgMGACMKCQoCAwESAwcAJAoJCgIDAhIDCAAiCgkKAgMDEgMJACkKCQoCAwQSAwoAKgobCgIEABIEDQAgARoPIEEgRGV2aWNlIFR5cGUKCgoK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xgIExQIWCg0KBQQNAggFEgTGAgQKCg0KBQQNAggBEgTGAgscCg0KBQQNAggDEgTGAh8gCgwKBAQNAgkSBMcCBCEKDwoFBA0CCQQSBscCBMYCIQoNCgUEDQIJBhIExwIEEQoNCgUEDQIJARIExwISGwoNCgUEDQIJAxIExwIeIGIGcHJvdG8zCtZyChp2b2x0aGFfcHJvdG9zL2V2ZW50cy5wcm90bxIGdm9sdGhhGhh2b2x0aGFfcHJvdG9zL21ldGEucHJvdG8aHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8iRQoPQ29uZmlnRXZlbnRUeXBlIjIKD0NvbmZpZ0V2ZW50VHlwZRIHCgNhZGQQABIKCgZyZW1vdmUQARIKCgZ1cGRhdGUQAiJyCgtDb25maWdFdmVudBI7CgR0eXBlGAEgASgOMicudm9sdGhhLkNvbmZpZ0V2ZW50VHlwZS5Db25maWdFdmVudFR5cGVSBHR5cGUSEgoEaGFzaBgCIAEoCVIEaGFzaBISCgRkYXRhGAMgASgJUgRkYXRhIjEKDEtwaUV2ZW50VHlwZSIhCgxLcGlFdmVudFR5cGUSCQoFc2xpY2UQABIGCgJ0cxABIpcCCg5NZXRyaWNNZXRhRGF0YRIUCgV0aXRsZRgBIAEoCVIFdGl0bGUSDgoCdHMYAiABKAFSAnRzEioKEWxvZ2ljYWxfZGV2aWNlX2lkGAMgASgJUg9sb2dpY2FsRGV2aWNlSWQSGwoJc2VyaWFsX25vGAQgASgJUghzZXJpYWxObxIbCglkZXZpY2VfaWQYBSABKAlSCGRldmljZUlkEj0KB2NvbnRleHQYBiADKAsyIy52b2x0aGEuTWV0cmljTWV0YURhdGEuQ29udGV4dEVudHJ5Ugdjb250ZXh0GjoKDENvbnRleHRFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIo8BChBNZXRyaWNWYWx1ZVBhaXJzEj8KB21ldHJpY3MYASADKAsyJS52b2x0aGEuTWV0cmljVmFsdWVQYWlycy5NZXRyaWNzRW50cnlSB21ldHJpY3MaOgoMTWV0cmljc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgCUgV2YWx1ZToCOAEixQEKEU1ldHJpY0luZm9ybWF0aW9uEjIKCG1ldGFkYXRhGAEgASgLMhYudm9sdGhhLk1ldHJpY01ldGFEYXRhUghtZXRhZGF0YRJACgdtZXRyaWNzGAIgAygLMiYudm9sdGhhLk1ldHJpY0luZm9ybWF0aW9uLk1ldHJpY3NFbnRyeVIHbWV0cmljcxo6CgxNZXRyaWNzRW50cnkSEAoDa2V5GAEgASgJUgNrZXkSFAoFdmFsdWUYAiABKAJSBXZhbHVlOgI4ASLkAQoIS3BpRXZlbnQSNQoEdHlwZRgBIAEoDjIhLnZvbHRoYS5LcGlFdmVudFR5cGUuS3BpRXZlbnRUeXBlUgR0eXBlEg4KAnRzGAIgASgCUgJ0cxI6CghwcmVmaXhlcxgDIAMoCzIeLnZvbHRoYS5LcGlFdmVudC5QcmVmaXhlc0VudHJ5UghwcmVmaXhlcxpVCg1QcmVmaXhlc0VudHJ5EhAKA2tleRgBIAEoCVIDa2V5Ei4KBXZhbHVlGAIgASgLMhgudm9sdGhhLk1ldHJpY1ZhbHVlUGFpcnNSBXZhbHVlOgI4ASKMAQoJS3BpRXZlbnQyEjUKBHR5cGUYASABKA4yIS52b2x0aGEuS3BpRXZlbnRUeXBlLktwaUV2ZW50VHlwZVIEdHlwZRIOCgJ0cxgCIAEoAVICdHMSOAoKc2xpY2VfZGF0YRgDIAMoCzIZLnZvbHRoYS5NZXRyaWNJbmZvcm1hdGlvblIJc2xpY2VEYXRhIoABCg5BbGFybUV2ZW50VHlwZSJuCg5BbGFybUV2ZW50VHlwZRIRCg1DT01NVU5JQ0FUSU9OEAASDwoLRU5WSVJPTk1FTlQQARINCglFUVVJUE1FTlQQAhILCgdTRVJWSUNFEAMSDgoKUFJPQ0VTU0lORxAEEgwKCFNFQ1VSSVRZEAUiVwoSQWxhcm1FdmVudENhdGVnb3J5IkEKEkFsYXJtRXZlbnRDYXRlZ29yeRIHCgNQT04QABIHCgNPTFQQARIHCgNPTlQQAhIHCgNPTlUQAxIHCgNOTkkQBCI9Cg9BbGFybUV2ZW50U3RhdGUiKgoPQWxhcm1FdmVudFN0YXRlEgoKBlJBSVNFRBAAEgsKB0NMRUFSRUQQASJuChJBbGFybUV2ZW50U2V2ZXJpdHkiWAoSQWxhcm1FdmVudFNldmVyaXR5EhEKDUlOREVURVJNSU5BVEUQABILCgdXQVJOSU5HEAESCQoFTUlOT1IQAhIJCgVNQUpPUhADEgwKCENSSVRJQ0FMEAQilwUKCkFsYXJtRXZlbnQSDgoCaWQYASABKAlSAmlkEjkKBHR5cGUYAiABKA4yJS52b2x0aGEuQWxhcm1FdmVudFR5cGUuQWxhcm1FdmVudFR5cGVSBHR5cGUSSQoIY2F0ZWdvcnkYAyABKA4yLS52b2x0aGEuQWxhcm1FdmVudENhdGVnb3J5LkFsYXJtRXZlbnRDYXRlZ29yeVIIY2F0ZWdvcnkSPQoFc3RhdGUYBCABKA4yJy52b2x0aGEuQWxhcm1FdmVudFN0YXRlLkFsYXJtRXZlbnRTdGF0ZVIFc3RhdGUSSQoIc2V2ZXJpdHkYBSABKA4yLS52b2x0aGEuQWxhcm1FdmVudFNldmVyaXR5LkFsYXJtRXZlbnRTZXZlcml0eVIIc2V2ZXJpdHkSGwoJcmFpc2VkX3RzGAYgASgCUghyYWlzZWRUcxIfCgtyZXBvcnRlZF90cxgHIAEoAlIKcmVwb3J0ZWRUcxIdCgpjaGFuZ2VkX3RzGAggASgCUgljaGFuZ2VkVHMSHwoLcmVzb3VyY2VfaWQYCSABKAlSCnJlc291cmNlSWQSIAoLZGVzY3JpcHRpb24YCiABKAlSC2Rlc2NyaXB0aW9uEjkKB2NvbnRleHQYCyADKAsyHy52b2x0aGEuQWxhcm1FdmVudC5Db250ZXh0RW50cnlSB2NvbnRleHQSKgoRbG9naWNhbF9kZXZpY2VfaWQYDCABKAlSD2xvZ2ljYWxEZXZpY2VJZBImCg9hbGFybV90eXBlX25hbWUYDSABKAlSDWFsYXJtVHlwZU5hbWUaOgoMQ29udGV4dEVudHJ5EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAEi9AEKC0RldmljZUV2ZW50Eh8KC3Jlc291cmNlX2lkGAEgASgJUgpyZXNvdXJjZUlkEioKEWRldmljZV9ldmVudF9uYW1lGAIgASgJUg9kZXZpY2VFdmVudE5hbWUSIAoLZGVzY3JpcHRpb24YAyABKAlSC2Rlc2NyaXB0aW9uEjoKB2NvbnRleHQYBCADKAsyIC52b2x0aGEuRGV2aWNlRXZlbnQuQ29udGV4dEVudHJ5Ugdjb250ZXh0GjoKDENvbnRleHRFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCgV2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBIn4KDUV2ZW50Q2F0ZWdvcnkibQoNRXZlbnRDYXRlZ29yeRIRCg1DT01NVU5JQ0FUSU9OEAASDwoLRU5WSVJPTk1FTlQQARINCglFUVVJUE1FTlQQAhILCgdTRVJWSUNFEAMSDgoKUFJPQ0VTU0lORxAEEgwKCFNFQ1VSSVRZEAUiUwoQRXZlbnRTdWJDYXRlZ29yeSI/ChBFdmVudFN1YkNhdGVnb3J5EgcKA1BPThAAEgcKA09MVBABEgcKA09OVBACEgcKA09OVRADEgcKA05OSRAEIlsKCUV2ZW50VHlwZSJOCglFdmVudFR5cGUSEAoMQ09ORklHX0VWRU5UEAASDQoJS1BJX0VWRU5UEAESDgoKS1BJX0VWRU5UMhACEhAKDERFVklDRV9FVkVOVBADIr4CCgtFdmVudEhlYWRlchIOCgJpZBgBIAEoCVICaWQSPwoIY2F0ZWdvcnkYAiABKA4yIy52b2x0aGEuRXZlbnRDYXRlZ29yeS5FdmVudENhdGVnb3J5UghjYXRlZ29yeRJMCgxzdWJfY2F0ZWdvcnkYAyABKA4yKS52b2x0aGEuRXZlbnRTdWJDYXRlZ29yeS5FdmVudFN1YkNhdGVnb3J5UgtzdWJDYXRlZ29yeRIvCgR0eXBlGAQgASgOMhsudm9sdGhhLkV2ZW50VHlwZS5FdmVudFR5cGVSBHR5cGUSIQoMdHlwZV92ZXJzaW9uGAUgASgJUgt0eXBlVmVyc2lvbhIbCglyYWlzZWRfdHMYBiABKAJSCHJhaXNlZFRzEh8KC3JlcG9ydGVkX3RzGAcgASgCUgpyZXBvcnRlZFRzIpsCCgVFdmVudBIrCgZoZWFkZXIYASABKAsyEy52b2x0aGEuRXZlbnRIZWFkZXJSBmhlYWRlchI4Cgxjb25maWdfZXZlbnQYAiABKAsyEy52b2x0aGEuQ29uZmlnRXZlbnRIAFILY29uZmlnRXZlbnQSLwoJa3BpX2V2ZW50GAMgASgLMhAudm9sdGhhLktwaUV2ZW50SABSCGtwaUV2ZW50EjIKCmtwaV9ldmVudDIYBCABKAsyES52b2x0aGEuS3Bp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GRoKOgoEBBIIABIGuwIEygIFGiogb25lb2YgZXZlbnQgdHlwZXMgcmVmZXJyZWQgYnkgRXZlbnRUeXBlLgoKDQoFBBIIAAESBLsCChQKJQoEBBICARIEvQIIJRoXIFJlZmVycyB0byBDb25maWdFdmVudAoKDQoFBBICAQYSBL0CCBMKDQoFBBICAQESBL0CFCAKDQoFBBICAQMSBL0CIyQKIgoEBBICAhIEwAIIIhoUIFJlZmVycyB0byBLcGlFdmVudAoKDQoFBBICAgYSBMACCBAKDQoFBBICAgESBMACFB0KDQoFBBICAgMSBMACICEKIwoEBBICAxIEwwIIIxoVIFJlZmVycyB0byBLcGlFdmVudDIKCg0KBQQSAgMGEgTDAggRCg0KBQQSAgMBEgTDAhQeCg0KBQQSAgMDEgTDAiEiCiUKBAQSAgQSBMYCCCUaFyBSZWZlcnMgdG8gRGV2aWNlRXZlbnQKCg0KBQQSAgQGEgTGAggTCg0KBQQSAgQBEgTGAhQgCg0KBQQSAgQDEgTGAiMkYgZwcm90bzMKuBIKG2dvb2dsZS9wcm90b2J1Zi9lbXB0eS5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIgcKBUVtcHR5QnYKE2NvbS5nb29nbGUucHJvdG9idWZCCkVtcHR5UHJvdG9QAVonZ2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHR5cGVzL2VtcHR5+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzSv4QCgYSBB4AMxAKzAwKAQwSAx4AEjLBDCBQcm90b2NvbCBCdWZmZXJzIC0gR29vZ2xlJ3MgZGF0YSBpbnRlcmNoYW5nZSBmb3JtYXQKIENvcHlyaWdodCAyMDA4IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vcHJvdG9jb2wtYnVmZmVycy8KCiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKIG1ldDoKCiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogZGlzdHJpYnV0aW9uLgogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KCggKAQISAyAAGAoICgEIEgMiADsKCQoCCCUSAyIAOwoICgEIEgMjAD4KCQoCCAsSAyMAPgoICgEIEgMkACwKCQoCCAESAyQALAoICgEIEgMlACsKCQoCCAgSAyUAKwoICgEIEgMmACIKCQoCCAoSAyYAIgoICgEIEgMnACEKCQoCCCQSAycAIQoICgEIEgMoAB8KCQoCCB8SAygAHwr7AgoCBAASAzMAEBrvAiBBIGdlbmVyaWMgZW1wdHkgbWVzc2FnZSB0aGF0IHlvdSBjYW4gcmUtdXNlIHRvIGF2b2lkIGRlZmluaW5nIGR1cGxpY2F0ZWQKIGVtcHR5IG1lc3NhZ2VzIGluIHlvdXIgQVBJcy4gQSB0eXBpY2FsIGV4YW1wbGUgaXMgdG8gdXNlIGl0IGFzIHRoZSByZXF1ZXN0CiBvciB0aGUgcmVzcG9uc2UgdHlwZSBvZiBhbiBBUEkgbWV0aG9kLiBGb3IgaW5zdGFuY2U6CgogICAgIHNlcnZpY2UgRm9vIHsKICAgICAgIHJwYyBCYXIoZ29vZ2xlLnByb3RvYnVmLkVtcHR5KSByZXR1cm5zIChnb29nbGUucHJvdG9idWYuRW1wdHkpOwogICAgIH0KCiBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBmb3IgYEVtcHR5YCBpcyBlbXB0eSBKU09OIG9iamVjdCBge31gLgoKCgoDBAABEgMzCA1iBnByb3RvMwrRCQoadm9sdGhhX3Byb3Rvcy9oZWFsdGgucHJvdG8SBnZvbHRoYRocZ29vZ2xlL2FwaS9hbm5vdGF0aW9ucy5wcm90bxobZ29vZ2xlL3Byb3RvYnVmL2VtcHR5LnByb3RvGhh2b2x0aGFfcHJvdG9zL21ldGEucHJvdG8ihAEKDEhlYWx0aFN0YXR1cxI9CgVzdGF0ZRgBIAEoDjIgLnZvbHRoYS5IZWFsdGhTdGF0dXMuSGVhbHRoU3RhdGVCBej2zR0BUgVzdGF0ZSI1CgtIZWFsdGhTdGF0ZRILCgdIRUFMVEhZEAASDgoKT1ZFUkxPQURFRBABEgkKBURZSU5HEAIyYQoNSGVhbHRoU2VydmljZRJQCg9HZXRIZWFsdGhTdGF0dXMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFC52b2x0aGEuSGVhbHRoU3RhdHVzIg+C0+STAgkSBy9oZWFsdGhCLVorZ2l0aHViLmNvbS9vcGVuY29yZC92b2x0aGEtcHJvdG9zL2dvL3ZvbHRoYUq0BgoGEgQAACIBCggKAQwSAwAAEgoICgEIEgMCAEIKCQoCCAsSAwIAQgoICgECEgMEAA8KCQoCAwASAwYAJgoJCgIDARIDBwAlCgkKAgMCEgMIACIKNwoCBAASBAsAFgEaKyBFbmNvZGUgaGVhbHRoIHN0YXR1cyBvZiBhIFZvbHRoYSBpbnN0YW5jZQoKCgoDBAABEgMLCBQKHQoEBAAEABIEDgQSBRoPIEhlYWx0aCBzdGF0ZXMKCgwKBQQABAABEgMOCRQKKAoGBAAEAAIAEgMPCBQiGSBUaGUgaW5zdGFuY2UgaXMgaGVhbHRoeQoKDgoHBAAEAAIAARIDDwgPCg4KBwQABAACAAISAw8SEwpACgYEAAQAAgESAxAIFyIxIFRoZSBpbnN0YW5jZSBpcyBvdmVybG9hZGVkLCBkZWNyZWFzZSBxdWVyeSByYXRlCgoOCgcEAAQAAgEBEgMQCBIKDgoHBAAEAAIBAhIDEBUWCkcKBgQABAACAhIDEQgSIjggVGhlIGluc3RhbmNlIGlzIGluIGEgY3JpdGljYWwgY29uZGl0aW9uLCBkbyBub3QgdXNlIGl0CgoOCgcEAAQAAgIBEgMRCA0KDgoHBAAEAAICAhIDERARCj4KBAQAAgASAxUEMRoxIEN1cnJlbnQgc3RhdGUgb2YgaGVhbHRoIG9mIHRoaXMgVm9sdGhhIGluc3RhbmNlCgoNCgUEAAIABBIEFQQSBQoMCgUEAAIABhIDFQQPCgwKBQQAAgABEgMVEBUKDAoFBAACAAMSAxUYGQoMCgUEAAIACBIDFRowChAKCQQAAgAI7d7ZAxIDFRsvCiUKAgYAEgQZACIBGhkgSGVhbHRoIHJlbGF0ZWQgc2VydmljZXMKCgoKAwYAARIDGQgVCkEKBAYAAgASBBwEIAUaMyBSZXR1cm4gY3VycmVudCBoZWFsdGggc3RhdHVzIG9mIGEgVm9sdGhhIGluc3RhbmNlCgoMCgUGAAIAARIDHAgXCgwKBQYAAgACEgMcGC0KDAoFBgACAAMSAxw4RAoNCgUGAAIABBIEHQgfCgoRCgkGAAIABLDKvCISBB0IHwpiBnByb3RvMwqKGAojdm9sdGhhX3Byb3Rvcy9pZXRmX2ludGVyZmFjZXMucHJvdG8SBGlldGYiRAoKSW50ZXJmYWNlcxI2Cg5hbGxfaW50ZXJmYWNlcxgBIAMoCzIPLmlldGYuSW50ZXJmYWNlUg1hbGxJbnRlcmZhY2VzIpICCglJbnRlcmZhY2USEgoEbmFtZRgBIAEoCVIEbmFtZRIgCgtkZXNjcmlwdGlvbhgCIAEoCVILZGVzY3JpcHRpb24SEgoEdHlwZRgDIAEoCVIEdHlwZRIYCgdlbmFibGVkGAQgASgIUgdlbmFibGVkEmAKGGxpbmtfdXBfZG93bl90cmFwX2VuYWJsZRgFIAEoDjIoLmlldGYuSW50ZXJmYWNlLkxpbmtVcERvd25UcmFwRW5hYmxlVHlwZVIUbGlua1VwRG93blRyYXBFbmFibGUiPwoYTGlua1VwRG93blRyYXBFbmFibGVUeXBlEhEKDVRSQVBfRElTQUJMRUQQABIQCgxUUkFQX0VOQUJMRUQQASJMCg9JbnRlcmZhY2VzU3RhdGUSOQoNYWxsX2ludGVyZmFjcxgBIAMoCzIULmlldGYuSW50ZXJmYWNlU3RhdGVSDGFsbEludGVyZmFjcyLABAoOSW50ZXJmYWNl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b3RvGh92b2x0aGFfcHJvdG9zL29wZW5mbG93XzEzLnByb3RvIjgKDUxvZ2ljYWxQb3J0SWQSDgoCaWQYASABKAlSAmlkEhcKB3BvcnRfaWQYAiABKAlSBnBvcnRJZCLyAQoLTG9naWNhbFBvcnQSDgoCaWQYASABKAlSAmlkEjAKCG9mcF9wb3J0GAIgASgLMhUub3BlbmZsb3dfMTMub2ZwX3BvcnRSB29mcFBvcnQSGwoJZGV2aWNlX2lkGAMgASgJUghkZXZpY2VJZBIkCg5kZXZpY2VfcG9ydF9ubxgEIAEoDVIMZGV2aWNlUG9ydE5vEhsKCXJvb3RfcG9ydBgFIAEoCFIIcm9vdFBvcnQSQQoOb2ZwX3BvcnRfc3RhdHMYBiABKAsyGy5vcGVuZmxvd18xMy5vZnBfcG9ydF9zdGF0c1IMb2ZwUG9ydFN0YXRzIjkKDExvZ2ljYWxQb3J0cxIpCgVpdGVtcxgBIAMoCzITLnZvbHRoYS5Mb2dpY2FsUG9ydFIFaXRlbXMihwMKDUxvZ2ljYWxEZXZpY2USDgoCaWQYASABKAlSAmlkEh8KC2RhdGFwYXRoX2lkGAIgASgEUgpkYXRhcGF0aElkEikKBGRlc2MYAyABKAsyFS5vcGVuZmxvd18xMy5vZnBfZGVzY1IEZGVzYxJJCg9zd2l0Y2hfZmVhdHVyZXMYBCABKAsyIC5vcGVuZmxvd18xMy5vZnBfc3dpdGNoX2ZlYXR1cmVzUg5zd2l0Y2hGZWF0dXJlcxIkCg5yb290X2RldmljZV9pZBgFIAEoCVIMcm9vdERldmljZUlkEjUKBXBvcnRzGIABIAMoCzITLnZvbHRoYS5Mb2dpY2FsUG9ydEIJ4vbNHQQKAmlkUgVwb3J0cxIwCgVmbG93cxiBASABKAsyEi5vcGVuZmxvd18xMy5GbG93c0IF4vbNHQBSBWZsb3dzEkAKC2Zsb3dfZ3JvdXBzGIIBIAEoCzIXLm9wZW5mbG93XzEzLkZsb3dHcm91cHNCBeL2zR0AUgpmbG93R3JvdXBzIj0KDkxvZ2ljYWxEZXZpY2VzEisKBWl0ZW1zGAEgAygLMhUudm9sdGhhLkxvZ2ljYWxEZXZpY2VSBWl0ZW1zQi1aK2dpdGh1Yi5jb20vb3BlbmNvcmQvdm9sdGhhLXByb3Rvcy9nby92b2x0aGFKkg8KBhIEAAA9AQoICgEMEgMAABIKCAoBCBIDAgBCCgkKAggLEgMCAEIKCAoBAhIDBAAPCgkKAgMAEgMGACYKCQoCAwESAwcAIgoJCgIDAhIDCAApCgoKAgQAEgQKABABCgoKAwQAARIDCggVCioKBAQAAgASAwwEEhodIHVuaXF1ZSBpZCBvZiBsb2dpY2FsIGRldmljZQoKDQoFBAACAAQSBAwEChcKDAoFBAACAAUSAwwECgoMCgUEAAIAARIDDAsNCgwKBQQAAgADEgMMEBEKMwoEBAACARIDDwQXGiYgaWQgb2YgdGhlIHBvcnQgb24gdGhlIGxvZ2ljYWwgZGV2aWNlCgoNCgUEAAIBBBIEDwQMEgoMCgUEAAIBBRIDDwQKCgwKBQQAAgEBEgMPCxIKDAoFBAACAQMSAw8VFgoKCgIEARIEEgAZAQoKCgMEAQESAxIIEwoLCgQEAQIAEgMTBBIKDQoFBAECAAQSBBMEEhUKDAoFBAECAAUSAxMECgoMCgUEAQIAARIDEwsNCgwKBQQBAgADEgMTEBEKCwoEBAECARIDFAQmCg0KBQQBAgEEEgQUBBMSCgwKBQQBAgEGEgMUBBgKDAoFBAECAQESAxQZIQoMCgUEAQIBAxIDFCQlCgsKBAQBAgISAxUEGQoNCgUEAQICBBIEFQQUJgoMCgUEAQICBRIDFQQKCgwKBQQBAgIBEgMVCxQKDAoFBAECAgMSAxUXGAoLCgQEAQIDEgMWBB4KDQoFBAECAwQSBBYEFRkKDAoFBAECAwUSAxYECgoMCgUEAQIDARIDFgsZCgwKBQQBAgMDEgMWHB0KCwoEBAECBBIDFwQXCg0KBQQBAgQEEgQXBBYeCgwKBQQBAgQFEgMXBAgKDAoFBAECBAESAxcJEgoMCgUEAQIEAxIDFxUWCgsKBAQBAgUSAxgEMgoNCgUEAQIFBBIEGAQXFwoMCgUEAQIFBhIDGAQeCgwKBQQBAgUBEgMYHy0KDAoFBAECBQMSAxgwMQoKCgIEAhIEGwAdAQoKCgMEAgESAxsIFAoLCgQEAgIAEgMcBCMKDAoFBAICAAQSAxwEDAoMCgUEAgIABhIDHA0YCgwKBQQCAgABEgMcGR4KDAoFBAICAAMSAxwhIgoKCgIEAxIEHwA5AQoKCgMEAwESAx8IFQoqCgQEAwIAEgMiBBIaHSB1bmlxdWUgaWQgb2YgbG9naWNhbCBkZXZpY2UKCg0KBQQDAgAEEgQiBB8XCgwKBQQDAgAFEgMiBAoKDAoFBAMCAAESAyILDQoMCgUEAwIAAxIDIhARClUKBAQDAgESAyUEGxpIIHVuaXF1ZSBkYXRhcGF0aCBpZCBmb3IgdGhlIGxvZ2ljYWwgZGV2aWNlICh1c2VkIGJ5IHRoZSBTRE4gY29udHJvbGxlcikKCg0KBQQDAgEEEgQlBCISCgwKBQQDAgEFEgMlBAoKDAoFBAMCAQESAyULFgoMCgUEAwIBAxIDJRkaCiEKBAQDAgISAygEIhoUIGRldmljZSBkZXNjcmlwdGlvbgoKDQoFBAMCAgQSBCgEJRsKDAoFBAMCAgYSAygEGAoMCgUEAwICARIDKBkdCgwKBQQDAgIDEgMoICEKHgoEBAMCAxIDKwQ4GhEgZGV2aWNlIGZlYXR1cmVzCgoNCgUEAwIDBBIEKwQoIgoMCgUEAwIDBhIDKwQjCgwKBQQDAgMBEgMrJDMKDAoFBAMCAwMSAys2Nwo/CgQEAwIEEgMuBB4aMiBuYW1lIG9mIHRoZSByb290IGRldmljZSBhbmNob3JpbmcgbG9naWNhbCBkZXZpY2UKCg0KBQQDAgQEEgQuBCs4CgwKBQQDAgQFEgMuBAoKDAoFBAMCBAESAy4LGQoMCgUEAwIEAxIDLhwdCiMKBAQDAgUSAzEEQhoWIGxvZ2ljYWwgZGV2aWNlIHBvcnRzCgoMCgUEAwIFBBIDMQQMCgwKBQQDAgUGEgMxDRgKDAoFBAMCBQESAzEZHgoMCgUEAwIFAxIDMSEkCgwKBQQDAgUIEgMxJUEKEAoJBAMCBQjs3tkDEgMxJkAKNQoEBAMCBhIDNAQ2GiggZmxvd3MgY29uZmlndXJlZCBvbiB0aGUgbG9naWNhbCBkZXZpY2UKCg0KBQQDAgYEEgQ0BDFCCgwKBQQDAgYGEgM0BBUKDAoFBAMCBgESAzQWGwoMCgUEAwIGAxIDNB4hCgwKBQQDAgYIEgM0IjUKEAoJBAMCBgjs3tkDEgM0IzQKOwoEBAMCBxIDNwRBGi4gZmxvdyBncm91cHMgY29uZmlndXJlZCBvbiB0aGUgbG9naWNhbCBkZXZpY2UKCg0KBQQDAgcEEgQ3BDQ2CgwKBQQDAgcGEgM3BBoKDAoFBAMCBwESAzcbJgoMCgUEAwIHAxIDNyksCgwKBQQDAgcIEgM3LUAKEAoJBAMCBwjs3tkDEgM3Lj8KCgoCBAQSBDsAPQEKCgoDBAQBEgM7CBYKCwoEBAQCABIDPAQlCgwKBQQEAgAEEgM8BAwKDAoFBAQCAAYSAzwNGgoMCgUEBAIAARIDPBsgCgwKBQQEAgADEgM8IyRiBnByb3RvMwryHgofdm9sdGhhX3Byb3Rvcy9vbWNpX21pYl9kYi5wcm90bxIEb21jaRoYdm9sdGhhX3Byb3Rvcy9tZXRhLnByb3RvIkMKEE1pYkF0dHJpYnV0ZURhdGESGQoEbmFtZRgBIAEoCUIF6PbNHQFSBG5hbWUSFAoFdmFsdWUYAiABKAlSBXZhbHVlIrQBCg9NaWJJbnN0YW5jZURhdGESJgoLaW5zdGFuY2VfaWQYASABKA1CBej2zR0BUgppbnN0YW5jZUlkEhgKB2NyZWF0ZWQYAiABKAlSB2NyZWF0ZWQSGgoIbW9kaWZpZWQYAyABKAlSCG1vZGlmaWVkEkMKCmF0dHJpYnV0ZXMYBCADKAsyFi5vbWNpLk1pYkF0dHJpYnV0ZURhdGFCC+L2zR0GCgRuYW1lUgphdHRyaWJ1dGVzInkKDE1pYkNsYXNzRGF0YRIgCghjbGFzc19pZBgBIAEoDUIF6PbNHQFSB2NsYXNzSWQSRwoJaW5zdGFuY2VzGAIgAygLMhUub21jaS5NaWJJbnN0YW5jZURhdGFCEuL2zR0NCgtpbnN0YW5jZV9pZFIJaW5zdGFuY2VzIkwKDU1hbmFnZWRFbnRpdHkSIAoIY2xhc3NfaWQYASABKA1CBej2zR0BUgdjbGFzc0lkEhkKBG5hbWUYAiABKAlCBej2zR0BUgRuYW1lIjcKC01lc3NhZ2VUeXBlEigKDG1lc3NhZ2VfdHlwZRgBIAEoDUIF6PbNHQFSC21lc3NhZ2VUeXBlIugCCg1NaWJEZXZpY2VEYXRhEiIKCWRldmljZV9pZBgBIAEoCUIF6PbNHQFSCGRldmljZUlkEhgKB2NyZWF0ZWQYAiABKAlSB2NyZWF0ZWQSJAoObGFzdF9zeW5jX3RpbWUYAyABKAlSDGxhc3RTeW5jVGltZRIiCg1taWJfZGF0YV9zeW5jGAQgASgNUgttaWJEYXRhU3luYxIYCgd2ZXJzaW9uGAUgASgNUgd2ZXJzaW9uEj0KB2NsYXNzZXMYBiADKAsyEi5vbWNpLk1pYkNsYXNzRGF0YUIP4vbNHQoKCGNsYXNzX2lkUgdjbGFzc2VzEj4KEG1hbmFnZWRfZW50aXRpZXMYByADKAsyEy5vbWNpLk1hbmFnZWRFbnRpdHlSD21hbmFnZWRFbnRpdGllcxI2Cg1tZXNzYWdlX3R5cGVzGAggAygLMhEub21jaS5NZXNzYWdlVHlwZVIMbWVzc2FnZVR5cGVzIjoKEU9wZW5PbWNpRXZlbnRUeXBlIiUKEU9wZW5PbWNpRXZlbnRUeXBlEhAKDHN0YXRlX2NoYW5nZRAAImIKDU9wZW5PbWNpRXZlbnQSPQoEdHlwZRgBIAEoDjIpLm9tY2kuT3Blbk9tY2lFdmVudFR5cGUuT3Blbk9tY2lFdmVudFR5cGVSBHR5cGUSEgoEZGF0YRgCIAEoCVIEZGF0YUIrWilnaXRodWIuY29tL29wZW5jb3JkL3ZvbHRoYS1wcm90b3MvZ28vb21jaUrwFQoGEgQPAE4BCt4ECgEMEgMPABIa0wQKIENvcHlyaWdodCAyMDE4IC0gcHJlc2VudCB0aGUgb3JpZ2luYWwgYXV0aG9yIG9yIGF1dGhvcnMuCgogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKCggKAQgSAxEAQAoJCgIICxIDEQBACggKAQISAxMADQoJCgIDABIDFQAiCgoKAgQAEgQYABsBCgoKAwQAARIDGAgYCgsKBAQAAgASAxkEOQoNCgUEAAIABBIEGQQYGgoMCgUEAAIABRIDGQQKCgwKBQQAAgABEgMZCw8KDAoFBAACAAMSAxkZGgoMCgUEAAIACBIDGRs4ChAKCQQAAgAI7d7ZAxIDGRw3CgsKBAQAAgESAxoEGwoNCgUEAAIBBBIEGgQZOQoMCgUEAAIBBRIDGgQKCgwKBQQAAgEBEgMaCxAKDAoFBAACAQMSAxoZGgoKCgIEARIEHQAkAQoKCgMEAQESAx0IFwoLCgQEAQIAEgMeBD4KDQoFBAECAAQSBB4EHRkKDAoFBAECAAUSAx4ECgoMCgUEAQIAARIDHgsWCgwKBQQBAgADEgMeHh8KDAoFBAECAAgSAx4gPQoQCgkEAQIACO3e2QMSAx4hPAoLCgQEAQIBEgMfBCAKDQoFBAECAQQSBB8EHj4KDAoFBAECAQUSAx8ECgoMCgUEAQIBARIDHwsSCgwKBQQBAgEDEgMfHh8KCwoEBAECAhIDIAQgCg0KBQQBAgIEEgQgBB8gCgwKBQQBAgIFEgMgBAoKDAoFBAECAgESAyALEwoMCgUEAQICAxIDIB4fCgwKBAQBAgMSBCIEIyoKDAoFBAECAwQSAyIEDAoMCgUEAQIDBhIDIg0dCgwKBQQBAgMBEgMiHigKDAoFBAECAwMSAyIrLAoMCgUEAQIDCBIDIwQpChAKCQQBAgMI7N7ZAxIDIwUoCgoKAgQCEgQmACsBCgoKAwQCARIDJggUCgsKBAQCAgASAycEPgoNCgUEAgIABBIEJwQmFgoMCgUEAgIABRIDJwQKCgwKBQQCAgABEgMnCxMKDAoFBAICAAMSAyceHwoMCgUEAgIACBIDJyA9ChAKCQQCAgAI7d7ZAxIDJyE8CgwKBAQCAgESBCkEKjEKDAoFBAICAQQSAykEDAoMCgUEAgIBBhIDKQ0cCgwKBQQCAgEBEgMpHSYKDAoFBAICAQMSAykoKQoMCgUEAgIBCBIDKgQwChAKCQQCAgEI7N7ZAxIDKgUvCgoKAgQDEgQtADABCgoKAwQDARIDLQgVCgsKBAQDAgASAy4ENwoNCgUEAwIABBIELgQtFwoMCgUEAwIABRIDLgQKCgwKBQQDAgABEgMuCxMKDAoFBAMCAAMSAy4XGAoMCgUEAwIACBIDLhk2ChAKCQQDAgAI7d7ZAxIDLho1CgsKBAQDAgESAy8ENwoNCgUEAwIBBBIELwQuNwoMCgUEAwIBBRIDLwQKCgwKBQQDAgEBEgMvCw8KDAoFBAMCAQMSAy8XGAoMCgUEAwIBCBIDLxk2ChAKCQQDAgEI7d7ZAxIDLxo1CgoKAgQEEgQyADQBCgoKAwQEARIDMggTCgsKBAQEAgASAzMEOgoNCgUEBAIABBIEMwQyFQoMCgUEBAIABRIDMwQKCgwKBQQEAgABEgMzCxcKDAoFBAQCAAMSAzMaGwoMCgUEBAIACBIDMxw5ChAKCQQEAgAI7d7ZAxIDMx04CgoKAgQFEgQ2AEIBCgoKAwQFARIDNggVCgsKBAQFAgASAzcEPgoNCgUEBQIABBIENwQ2FwoMCgUEBQIABRIDNwQKCgwKBQQFAgABEgM3CxQKDAoFBAUCAAMSAzceHwoMCgUEBQIACBIDNyA9ChAKCQQFAgAI7d7ZAxIDNyE8CgsKBAQFAgESAzgEIAoNCgUEBQIBBBIEOAQ3PgoMCgUEBQIBBRIDOAQKCgwKBQQFAgEBEgM4CxIKDAoFBAUCAQMSAzgeHwoLCgQEBQICEgM5BCAKDQoFBAUCAgQSBDkEOCAKDAoFBAUCAgUSAzkECgoMCgUEBQICARIDOQsZCgwKBQQFAgIDEgM5Hh8KCwoEBAUCAxIDOgQgCg0KBQQFAgMEEgQ6BDkgCgwKBQQFAgMFEgM6BAoKDAoFBAUCAwESAzoLGAoMCgUEBQIDAxIDOh4fCgsKBAQFAgQSAzsEIAoNCgUEBQIEBBIEOwQ6IAoMCgUEBQIEBRIDOwQKCgwKBQQFAgQBEgM7CxIKDAoFBAUCBAMSAzseHwoMCgQEBQIFEgQ9BD4uCgwKBQQFAgUEEgM9BAwKDAoFBAUCBQYSAz0NGQoMCgUEBQIFARIDPRohCgwKBQQFAgUDEgM9JCUKDAoFBAUCBQgSAz4ELQoQCgkEBQIFCOze2QMSAz4FLAoLCgQEBQIGEgNABDAKDAoFBAUCBgQSA0AEDAoMCgUEBQIGBhIDQA0aCgwKBQQFAgYBEgNAGysKDAoFBAUCBgMSA0AuLwoLCgQEBQIHEgNBBCsKDAoFBAUCBwQSA0EEDAoMCgUEBQIHBhIDQQ0YCgwKBQQFAgcBEgNBGSYKDAoFBAUCBwMSA0EpKgoKCgIEBhIERABIAQoKCgMEBgESA0QIGQoMCgQEBgQAEgRFBEcFCgwKBQQGBAABEgNFCRoKQAoGBAYEAAIAEgNGCBkiMSBBIHN0YXRlIG1hY2hpbmUgaGFzIHRyYW5zaXRpb25lZCB0byBhIG5ldyBzdGF0ZQoKDgoHBAYEAAIAARIDRggUCg4KBwQGBAACAAISA0YXGAoKCgIEBxIESgBOAQoKCgMEBwESA0oIFQoLCgQEBwIAEgNLBDEKDQoFBAcCAAQSBEsEShcKDAoFBAcCAAYSA0sEJwoMCgUEBwIAARIDSygsCgwKBQQHAgADEgNLLzAKLgoEBAcCARIDTQQUIiEgYXNzb2NpYXRlZCBkYXRhLCBpbiBqc29uIGZvcm1hdAoKDQoFBAcCAQQSBE0ESzEKDAoFBAcCAQUSA00ECgoMCgUEBwIBARIDTQsPCgwKBQQHAgEDEgNNEhNiBnByb3RvMwqxHwohdm9sdGhhX3Byb3Rvcy9vbWNpX2FsYXJtX2RiLnByb3RvEgRvbWNpGhh2b2x0aGFfcHJvdG9zL21ldGEucHJvdG8iRQoSQWxhcm1BdHRyaWJ1dGVEYXRhEhkKBG5hbWUYASABKAlCBej2zR0BUgRuYW1lEhQKBXZhbHVlGAIgASgJUgV2YWx1ZSK4AQoRQWxhcm1JbnN0YW5jZURhdGESJgoLaW5zdGFuY2VfaWQYASABKA1CBej2zR0BUgppbnN0YW5jZUlkEhgKB2NyZWF0ZWQYAiABKAlSB2NyZWF0ZWQSGgoIbW9kaWZpZWQYAyABKAlSCG1vZGlmaWVkEkUKCmF0dHJpYnV0ZXMYBCADKAsyGC5vbWNpLkFsYXJtQXR0cmlidXRlRGF0YUIL4vbNHQYKBG5hbWVSCmF0dHJpYnV0ZXMifQoOQWxhcm1DbGFzc0RhdGESIAoIY2xhc3NfaWQYASABKA1CBej2zR0BUgdjbGFzc0lkEkkKCWluc3RhbmNlcxgCIAMoCzIXLm9tY2kuQWxhcm1JbnN0YW5jZURhdGFCEuL2zR0NCgtpbnN0YW5jZV9pZFIJaW5zdGFuY2VzIlEKEkFsYXJtTWFuYWdlZEVudGl0eRIgCghjbGFzc19pZBgBIAEoDUIF6PbNHQFSB2NsYXNzSWQSGQoEbmFtZRgCIAEoCUIF6PbNHQFSBG5hbWUiPAoQQWxhcm1NZXNzYWdlVHlwZRIoCgxtZXNzYWdlX3R5cGUYASABKA1CBej2zR0BUgttZXNzYWdlVHlwZSKCAwoPQWxhcm1EZXZpY2VEYXRhEiIKCWRldmljZV9pZBgBIAEoCUIF6PbNHQFSCGRldmljZUlkEhgKB2NyZWF0ZWQYAiABKAlSB2NyZWF0ZWQSLgoTbGFzdF9hbGFybV9zZXF1ZW5jZRgDIAEoDVIRbGFzdEFsYXJtU2VxdWVuY2USJAoObGFzdF9zeW5jX3RpbWUYBCABKAlSDGxhc3RTeW5jVGltZRIYCgd2ZXJzaW9uGAUgASgNUgd2ZXJzaW9uEj8KB2NsYXNzZXMYBiADKAsyFC5vbWNpLkFsYXJtQ2xhc3NEYXRhQg/i9s0dCgoIY2xhc3NfaWRSB2NsYXNzZXMSQwoQbWFuYWdlZF9lbnRpdGllcxgHIAMoCzIYLm9tY2kuQWxhcm1NYW5hZ2VkRW50aXR5Ug9tYW5hZ2VkRW50aXRpZXMSOwoNbWVzc2FnZV90eXBlcxgIIAMoCzIWLm9tY2kuQWxhcm1NZXNzYWdlVHlwZVIMbWVzc2FnZVR5cGVzIj8KFkFsYXJtT3Blbk9tY2lFdmVudFR5cGUiJQoRT3Blbk9tY2lFdmVudFR5cGUSEAoMc3RhdGVfY2hhbmdlEAAibAoSQWxhcm1PcGVuT21jaUV2ZW50EkIKBHR5cGUYASABKA4yLi5vbWNpLkFsYXJtT3Blbk9tY2lFdmVudFR5cGUuT3Blbk9tY2lFdmVudFR5cGVSBHR5cGUSEgoEZGF0YRgCIAEoCVIEZGF0YUIrWilnaXRodWIuY29tL29wZW5jb3JkL3ZvbHRoYS1wcm90b3MvZ28vb21jaUrwFQoGEgQPAE8BCt4ECgEMEgMPABIa0wQKIENvcHlyaWdodCAyMDE4IC0gcHJlc2VudCB0aGUgb3JpZ2luYWwgYXV0aG9yIG9yIGF1dGhvcnMu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ARIDTgsPCgwKBQQHAgEDEgNOEhNiBnByb3RvMwqprQEKGnZvbHRoYV9wcm90b3Mvdm9sdGhhLnByb3RvEgZ2b2x0aGEaHGdvb2dsZS9hcGkvYW5ub3RhdGlvbnMucHJvdG8aG2dvb2dsZS9wcm90b2J1Zi9lbXB0eS5wcm90bxoYdm9sdGhhX3Byb3Rvcy9tZXRhLnByb3RvGhp2b2x0aGFfcHJvdG9zL2NvbW1vbi5wcm90bxoadm9sdGhhX3Byb3Rvcy9oZWFsdGgucHJvdG8aInZvbHRoYV9wcm90b3MvbG9naWNhbF9kZXZpY2UucHJvdG8aGnZvbHRoYV9wcm90b3MvZGV2aWNlLnByb3RvGht2b2x0aGFfcHJvdG9zL2FkYXB0ZXIucHJvdG8aH3ZvbHRoYV9wcm90b3Mvb3BlbmZsb3dfMTMucHJvdG8aH3ZvbHRoYV9wcm90b3Mvb21jaV9taWJfZGIucHJvdG8aIXZvbHRoYV9wcm90b3Mvb21jaV9hbGFybV9kYi5wcm90bxogdm9sdGhhX3Byb3Rvcy95YW5nX29wdGlvbnMucHJvdG8ipAEKC0RldmljZUdyb3VwEhUKAmlkGAEgASgJQgXo9s0dAVICaWQSSQoPbG9naWNhbF9kZXZpY2VzGAIgAygLMhUudm9sdGhhLkxvZ2ljYWxEZXZpY2VCCeL2zR0ECgJpZFIObG9naWNhbERldmljZXMSMwoHZGV2aWNlcxgDIAMoCzIOLnZvbHRoYS5EZXZpY2VCCeL2zR0ECgJpZFIHZGV2aWNlcyI5CgxEZXZpY2VHcm91cHMSKQoFaXRlbXMYASADKAsyEy52b2x0aGEuRGV2aWNlR3JvdXBSBWl0ZW1zIn8KEkFsYXJtRmlsdGVyUnVsZUtleSJiChJBbGFybUZpbHRlclJ1bGVLZXkSBgoCaWQQABIICgR0eXBlEAESDAoIc2V2ZXJpdHkQAhIPCgtyZXNvdXJjZV9pZBADEgwKCGNhdGVnb3J5EAQSDQoJZGV2aWNlX2lkEAU6BfD2zR0AImgKD0FsYXJtRmlsdGVyUnVsZRI/CgNrZXkYASABKA4yLS52b2x0aGEuQWxhcm1GaWx0ZXJSdWxlS2V5LkFsYXJtRmlsdGVyUnVsZUtleVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZSJTCgtBbGFybUZpbHRlchIVCgJpZBgBIAEoCUIF6PbNHQFSAmlkEi0KBXJ1bGVzGAIgAygLMhcudm9sdGhhLkFsYXJtRmlsdGVyUnVsZVIFcnVsZXMiPQoMQWxhcm1GaWx0ZXJzEi0KB2ZpbHRlcnMYASADKAsyEy52b2x0aGEuQWxhcm1GaWx0ZXJSB2ZpbHRlcnMiXQoHTG9nZ2luZxIvCgVsZXZlbBgBIAEoDjIZLmNvbW1vbi5Mb2dMZXZlbC5Mb2dMZXZlbFIFbGV2ZWwSIQoMcGFja2FnZV9uYW1lGAIgASgJUgtwYWNrYWdlTmFtZSJyCgxDb3JlSW5zdGFuY2USJgoLaW5zdGFuY2VfaWQYASABKAlCBej2zR0BUgppbnN0YW5jZUlkEjMKBmhlYWx0aBgCIAEoCzIULnZvbHRoYS5IZWFsdGhTdGF0dXNCBeL2zR0AUgZoZWFsdGg6Bfj2zR0BIkIKDUNvcmVJbnN0YW5jZXMSKgoFaXRlbXMYASADKAsyFC52b2x0aGEuQ29yZUluc3RhbmNlUgVpdGVtczoF+PbNHQEi4AQKBlZvbHRoYRIfCgd2ZXJzaW9uGAEgASgJQgXo9s0dAVIHdmVyc2lvbhI2CghhZGFwdGVycxgCIAMoCzIPLnZvbHRoYS5BZGFwdGVyQgni9s0dBAoCaWRSCGFkYXB0ZXJzEkkKD2xvZ2ljYWxfZGV2aWNlcxgDIAMoCzIVLnZvbHRoYS5Mb2dpY2FsRGV2aWNlQgni9s0dBAoCaWRSDmxvZ2ljYWxEZXZpY2VzEjMKB2RldmljZXMYBCADKAsyDi52b2x0aGEuRGV2aWNlQgni9s0dBAoCaWRSB2RldmljZXMSQAoMZGV2aWNlX3R5cGVzGAUgAygLMhIudm9sdGhhLkRldmljZVR5cGVCCeL2zR0ECgJpZFILZGV2aWNlVHlwZXMSQwoNZGV2aWNlX2dyb3VwcxgGIAMoCzITLnZvbHRoYS5EZXZpY2VHcm91cEIJ4vbNHQQKAmlkUgxkZXZpY2VHcm91cHMSQwoNYWxhcm1fZmlsdGVycxgHIAMoCzITLnZvbHRoYS5BbGFybUZpbHRlckIJ4vbNHQQKAmlkUgxhbGFybUZpbHRlcnMSUQoRb21jaV9taWJfZGF0YWJhc2UYHCADKAsyEy5vbWNpLk1pYkRldmljZURhdGFCEOL2zR0LCglkZXZpY2VfaWRSD29tY2lNaWJEYXRhYmFzZRJXChNvbWNpX2FsYXJtX2RhdGFiYXNlGB0gAygLMhUub21jaS5BbGFybURldmljZURhdGFCEOL2zR0LCglkZXZpY2VfaWRSEW9tY2lBbGFybURhdGFiYXNlOgX49s0dASKsAQoQU2VsZlRlc3RSZXNwb25zZRI/CgZyZXN1bHQYASABKA4yJy52b2x0aGEuU2VsZlRlc3RSZXNwb25zZS5TZWxmVGVzdFJlc3VsdFIGcmVzdWx0IlAKDlNlbGZUZXN0UmVzdWx0EgsKB1NVQ0NFU1MQABILCgdGQUlMVVJFEAESEQoNTk9UX1NVUFBPUlRFRBACEhEKDVVOS05PV05fRVJST1IQAzoF8PbNHQAiTwoRT2ZBZ2VudFN1YnNjcmliZXISHQoKb2ZhZ2VudF9pZBgBIAEoCVIJb2ZhZ2VudElkEhsKCXZvbHRoYV9pZBgCIAEoCVIIdm9sdGhhSWQiOwoKTWVtYmVyc2hpcBIdCgpncm91cF9uYW1lGAEgASgJUglncm91cE5hbWUSDgoCaWQYAiABKAlSAmlkMqcvCg1Wb2x0aGFTZXJ2aWNlEk8KDlVwZGF0ZUxvZ0xldmVsEg8udm9sdGhhLkxvZ2dpbmcaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiFILT5JMCDhIML2FwaS92MS9sb2dzElcKDUdldE1lbWJlcnNoaXASFi5nb29nbGUucHJvdG9idWYuRW1wdHkaEi52b2x0aGEuTWVtYmVyc2hpcCIagtPkkwIUEhIvYXBpL3YxL21lbWJlcnNoaXASXQoQVXBkYXRlTWVtYmVyc2hpcBISLnZvbHRoYS5NZW1iZXJzaGlwGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ih2C0+STAhciEi9hcGkvdjEvbWVtYmVyc2hpcDoBKhJECglHZXRWb2x0aGESFi5nb29nbGUucHJvdG9idWYuRW1wdHkaDi52b2x0aGEuVm9sdGhhIg+C0+STAgkSBy9hcGkvdjESdQoRTGlzdENvcmVJbnN0YW5jZXMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaFS52b2x0aGEuQ29yZUluc3RhbmNlcyIxgtPkkwITEhEvYXBpL3YxL2luc3RhbmNlc4r3zR0HCgVpdGVtc4r3zR0HEgVpdGVtcxJTCg9HZXRDb3JlSW5zdGFuY2USCi5jb21tb24uSUQaFC52b2x0aGEuQ29yZUluc3RhbmNlIh6C0+STAhgSFi9hcGkvdjEvaW5zdGFuY2VzL3tpZH0SYQoMTGlzdEFkYXB0ZXJzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhAudm9sdGhhLkFkYXB0ZXJzIieC0+STAhISEC9hcGkvdjEvYWRhcHRlcnOK980dCgoIYWRhcHRlcnMSewoSTGlzdExvZ2ljYWxEZXZpY2VzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhYudm9sdGhhLkxvZ2ljYWxEZXZpY2VzIjWC0+STAhkSFy9hcGkvdjEvbG9naWNhbF9kZXZpY2VzivfNHREKD2xvZ2ljYWxfZGV2aWNlcxJbChBHZXRMb2dpY2FsRGV2aWNlEgouY29tbW9uLklEGhUudm9sdGhhLkxvZ2ljYWxEZXZpY2UiJILT5JMCHhIcL2FwaS92MS9sb2dpY2FsX2RldmljZXMve2lkfRJyChZMaXN0TG9naWNhbERldmljZVBvcnRzEgouY29tbW9uLklEGhQudm9sdGhhLkxvZ2ljYWxQb3J0cyI2gtPkkwIkEiIvYXBpL3YxL2xvZ2ljYWxfZGV2aWNlcy97aWR9L3BvcnRzivfNHQcKBXBvcnRzEoMBChRHZXRMb2dpY2FsRGV2aWNlUG9ydBIVLnZvbHRoYS5Mb2dpY2FsUG9ydElkGhMudm9sdGhhLkxvZ2ljYWxQb3J0Ij+C0+STAi4SLC9hcGkvdjEvbG9naWNhbF9kZXZpY2VzL3tpZH0vcG9ydHMve3BvcnRfaWR9ivfNHQYKBHBvcnQShQEKF0VuYWJsZUxvZ2ljYWxEZXZpY2VQb3J0EhUudm9sdGhhLkxvZ2ljYWxQb3J0SWQaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiO4LT5JMCNSIzL2FwaS92MS9sb2dpY2FsX2RldmljZXMve2lkfS9wb3J0cy97cG9ydF9pZH0vZW5hYmxlEocBChhEaXNhYmxlTG9naWNhbERldmljZVBvcnQSFS52b2x0aGEuTG9naWNhbFBvcnRJZBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSI8gtPkkwI2IjQvYXBpL3YxL2xvZ2ljYWxfZGV2aWNlcy97aWR9L3BvcnRzL3twb3J0X2lkfS9kaXNhYmxlEnwKFkxpc3RMb2dpY2FsRGV2aWNlRmxvd3MSCi5jb21tb24uSUQaEi5vcGVuZmxvd18xMy5GbG93cyJCgtPkkwIkEiIvYXBpL3YxL2xvZ2ljYWxfZGV2aWNlcy97aWR9L2Zsb3dzivfNHQcKBWZsb3dzivfNHQcSBWl0ZW1zEoMBChxVcGRhdGVMb2dpY2FsRGV2aWNlRmxvd1RhYmxlEhwub3BlbmZsb3dfMTMuRmxvd1RhYmxlVXBkYXRlGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ii2C0+STAiciIi9hcGkvdjEvbG9naWNhbF9kZXZpY2VzL3tpZH0vZmxvd3M6ASoShAEKHVVwZGF0ZUxvZ2ljYWxEZXZpY2VNZXRlclRhYmxlEhsub3BlbmZsb3dfMTMuTWV0ZXJNb2RVcGRhdGUaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiLoLT5JMCKCIjL2FwaS92MS9sb2dpY2FsX2RldmljZXMve2lkfS9tZXRlcnM6ASoSewocR2V0TWV0ZXJTdGF0c09mTG9naWNhbERldmljZRIKLmNvbW1vbi5JRBocLm9wZW5mbG93XzEzLk1ldGVyU3RhdHNSZXBseSIxgtPkkwIrEikvYXBpL3YxL2xvZ2ljYWxfZGV2aWNlcy97aWR9L21ldGVyc19zdGF0cxKSAQobTGlzdExvZ2ljYWxEZXZpY2VGbG93R3JvdXBzEgouY29tbW9uLklEGhcub3BlbmZsb3dfMTMuRmxvd0dyb3VwcyJOgtPkkwIqEigvYXBpL3YxL2xvZ2ljYWxfZGV2aWNlcy97aWR9L2Zsb3dfZ3JvdXBzivfNHQ0KC2Zsb3dfZ3JvdXBzivfNHQcSBWl0ZW1zEpMBCiFVcGRhdGVMb2dpY2FsRGV2aWNlRmxvd0dyb3VwVGFibGUSIS5vcGVuZmxvd18xMy5GbG93R3JvdXBUYWJsZVVwZGF0ZRoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIzgtPkkwItIigvYXBpL3YxL2xvZ2ljYWxfZGV2aWNlcy97aWR9L2Zsb3dfZ3JvdXBzOgEqEl0KC0xpc3REZXZpY2VzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Gg8udm9sdGhhLkRldmljZXMiJYLT5JMCERIPL2FwaS92MS9kZXZpY2VzivfNHQkKB2RldmljZXMSZAoNTGlzdERldmljZUlkcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoLLmNvbW1vbi5JRHMiLoLT5JMCExIRL2FwaS92MS9kZXZpY2VpZHOK980dBAoCaWSK980dBxIFaXRlbXMSVQoQUmVjb25jaWxlRGV2aWNlcxILLmNvbW1vbi5JRHMaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiHILT5JMCFiIRL2FwaS92MS9kZXZpY2VpZHM6ASoSRQoJR2V0RGV2aWNlEgouY29tbW9uLklEGg4udm9sdGhhLkRldmljZSIcgtPkkwIWEhQvYXBpL3YxL2RldmljZXMve2lkfRJKCgxDcmVhdGVEZXZpY2USDi52b2x0aGEuRGV2aWNlGg4udm9sdGhhLkRldmljZSIagtPkkwIUIg8vYXBpL3YxL2RldmljZXM6ASoSVwoMRW5hYmxlRGV2aWNlEgouY29tbW9uLklEGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiOC0+STAh0iGy9hcGkvdjEvZGV2aWNlcy97aWR9L2VuYWJsZRJZCg1EaXNhYmxlRGV2aWNlEgouY29tbW9uLklEGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiSC0+STAh4iHC9hcGkvdjEvZGV2aWNlcy97aWR9L2Rpc2FibGUSVwoMUmVib290RGV2aWNlEgouY29tbW9uLklEGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IiOC0+STAh0iGy9hcGkvdjEvZGV2aWNlcy97aWR9L3JlYm9vdBJXCgxEZWxldGVEZXZpY2USCi5jb21tb24uSUQaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiI4LT5JMCHSobL2FwaS92MS9kZXZpY2VzL3tpZH0vZGVsZXRlEnUKDURvd25sb2FkSW1hZ2USFS52b2x0aGEuSW1hZ2VEb3dubG9hZBoVLmNvbW1vbi5PcGVyYXRpb25SZXNwIjaC0+STAjAiKy9hcGkvdjEvZGV2aWNlcy97aWR9L2ltYWdlX2Rvd25sb2Fkcy97bmFtZX06ASoSggEKFkdldEltYWdlRG93bmxvYWRTdGF0dXMSFS52b2x0aGEuSW1hZ2VEb3dubG9hZBoVLnZvbHRoYS5JbWFnZURvd25sb2FkIjqC0+STAjQSMi9hcGkvdjEvZGV2aWNlcy97aWR9L2ltYWdlX2Rvd25sb2Fkcy97bmFtZX0vc3RhdHVzEnUKEEdldEltYWdlRG93bmxvYWQSFS52b2x0aGEuSW1hZ2VEb3dubG9hZBoVLnZvbHRoYS5JbWFnZURvd25sb2FkIjOC0+STAi0SKy9hcGkvdjEvZGV2aWNlcy97aWR9L2ltYWdlX2Rvd25sb2Fkcy97bmFtZX0SZgoSTGlzdEltYWdlRG93bmxvYWRzEgouY29tbW9uLklEGhYudm9sdGhhLkltYWdlRG93bmxvYWRzIiyC0+STAiYSJC9hcGkvdjEvZGV2aWNlcy97aWR9L2ltYWdlX2Rvd25sb2FkcxJ4ChNDYW5jZWxJbWFnZURvd25sb2FkEhUudm9sdGhhLkltYWdlRG93bmxvYWQaFS5jb21tb24uT3BlcmF0aW9uUmVzcCIzgtPkkwItKisvYXBpL3YxL2RldmljZXMve2lkfS9pbWFnZV9kb3dubG9hZHMve25hbWV9EogBChNBY3RpdmF0ZUltYWdlVXBkYXRlEhUudm9sdGhhLkltYWdlRG93bmxvYWQaFS5jb21tb24uT3BlcmF0aW9uUmVzcCJDgtPkkwI9IjgvYXBpL3YxL2RldmljZXMve2lkfS9pbWFnZV9kb3dubG9hZHMve25hbWV9L2ltYWdlX3VwZGF0ZToBKhKGAQoRUmV2ZXJ0SW1hZ2VVcGRhdGUSFS52b2x0aGEuSW1hZ2VEb3dubG9hZBoVLmNvbW1vbi5PcGVyYXRpb25SZXNwIkOC0+STAj0iOC9hcGkvdjEvZGV2aWNlcy97aWR9L2ltYWdlX2Rvd25sb2Fkcy97bmFtZX0vaW1hZ2VfcmV2ZXJ0OgEqElwKD0xpc3REZXZpY2VQb3J0cxIKLmNvbW1vbi5JRBoNLnZvbHRoYS5Qb3J0cyIugtPkkwIcEhovYXBpL3YxL2RldmljZXMve2lkfS9wb3J0c4r3zR0HCgVwb3J0cxJdChNMaXN0RGV2aWNlUG1Db25maWdzEgouY29tbW9uLklEGhEudm9sdGhhLlBtQ29uZmlncyIngtPkkwIhEh8vYXBpL3YxL2RldmljZXMve2lkfS9wbV9jb25maWdzEm4KFVVwZGF0ZURldmljZVBtQ29uZmlncxIRLnZvbHRoYS5QbUNvbmZpZ3MaFi5nb29nbGUucHJvdG9idWYuRW1wdHkiKoLT5JMCJCIfL2FwaS92MS9kZXZpY2VzL3tpZH0vcG1fY29uZmlnczoBKhJtCg9MaXN0RGV2aWNlRmxvd3MSCi5jb21tb24uSUQaEi5vcGVuZmxvd18xMy5GbG93cyI6gtPkkwIcEhovYXBpL3YxL2RldmljZXMve2lkfS9mbG93c4r3zR0HCgVmbG93c4r3zR0HEgVpdGVtcxKDAQoUTGlzdERldmljZUZsb3dHcm91cHMSCi5jb21tb24uSUQaFy5vcGVuZmxvd18xMy5GbG93R3JvdXBzIkaC0+STAiISIC9hcGkvdjEvZGV2aWNlcy97aWR9L2Zsb3dfZ3JvdXBzivfNHQ0KC2Zsb3dfZ3JvdXBzivfNHQcSBWl0ZW1zEm8KD0xpc3REZXZpY2VUeXBlcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoTLnZvbHRoYS5EZXZpY2VUeXBlcyIvgtPkkwIWEhQvYXBpL3YxL2RldmljZV90eXBlc4r3zR0OCgxkZXZpY2VfdHlwZXMSUgoNR2V0RGV2aWNlVHlwZRIKLmNvbW1vbi5JRBoSLnZvbHRoYS5EZXZpY2VUeXBlIiGC0+STAhsSGS9hcGkvdjEvZGV2aWNlX3R5cGVzL3tpZH0ScwoQTGlzdERldmljZUdyb3VwcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoULnZvbHRoYS5EZXZpY2VHcm91cHMiMYLT5JMCFxIVL2FwaS92MS9kZXZpY2VfZ3JvdXBzivfNHQ8KDWRldmljZV9ncm91cHMSRgoQU3RyZWFtUGFja2V0c091dBIWLm9wZW5mbG93XzEzLlBhY2tldE91dBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAKAESRQoQUmVjZWl2ZVBhY2tldHNJbhIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoVLm9wZW5mbG93XzEzLlBhY2tldEluIgAwARJLChNSZWNlaXZlQ2hhbmdlRXZlbnRzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ghgub3BlbmZsb3dfMTMuQ2hhbmdlRXZlbnQiADABElUKDkdldERldmljZUdyb3VwEgouY29tbW9uLklEGhMudm9sdGhhLkRldmljZUdyb3VwIiKC0+STAhwSGi9hcGkvdjEvZGV2aWNlX2dyb3Vwcy97aWR9El8KEUNyZWF0ZUFsYXJtRmlsdGVyEhMudm9sdGhhLkFsYXJtRmlsdGVyGhMudm9sdGhhLkFsYXJtRmlsdGVyIiCC0+STAhoiFS9hcGkvdjEvYWxhcm1fZmlsdGVyczoBKhJVCg5HZXRBbGFybUZpbHRlchIKLmNvbW1vbi5JRBoTLnZvbHRoYS5BbGFybUZpbHRlciIigtPkkwIcEhovYXBpL3YxL2FsYXJtX2ZpbHRlcnMve2lkfRJkChFVcGRhdGVBbGFybUZpbHRlchITLnZvbHRoYS5BbGFybUZpbHRlchoTLnZvbHRoYS5BbGFybUZpbHRlciIlgtPkkwIfGhovYXBpL3YxL2FsYXJtX2ZpbHRlcnMve2lkfToBKhJbChFEZWxldGVBbGFybUZpbHRlchIKLmNvbW1vbi5JRBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIigtPkkwIcKhovYXBpL3YxL2FsYXJtX2ZpbHRlcnMve2lkfRJfChBMaXN0QWxhcm1GaWx0ZXJzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhQudm9sdGhhLkFsYXJtRmlsdGVycyIdgtPkkwIXEhUvYXBpL3YxL2FsYXJtX2ZpbHRlcnMSTAoJR2V0SW1hZ2VzEgouY29tbW9uLklEGg4udm9sdGhhLkltYWdlcyIjgtPkkwIdEhsvYXBpL3YxL2RldmljZXMve2lkfS9pbWFnZXMSWAoIU2VsZlRlc3QSCi5jb21tb24uSUQaGC52b2x0aGEuU2VsZlRlc3RSZXNwb25zZSImgtPkkwIgIh4vYXBpL3YxL2RldmljZXMve2lkfS9zZWxmX3Rlc3QSVgoQR2V0TWliRGV2aWNlRGF0YRIKLmNvbW1vbi5JRBoTLm9tY2kuTWliRGV2aWNlRGF0YSIhgtPkkwIbEhkvYXBpL3YxL29wZW5vbWNpL3tpZH0vbWliElwKEkdldEFsYXJtRGV2aWNlRGF0YRIKLmNvbW1vbi5JRBoVLm9tY2kuQWxhcm1EZXZpY2VEYXRhIiOC0+STAh0SGy9h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UgN2YWwiIgoGUGFja2V0EhgKB3BheWxvYWQYASABKAxSB3BheWxvYWQiRQoJRXJyb3JDb2RlIjgKBWNvZGVzEhcKE1VOU1VQUE9SVEVEX1JFUVVFU1QQABIWChJJTlZBTElEX1BBUkFNRVRFUlMQASJGCgVFcnJvchIlCgRjb2RlGAEgASgLMhEudm9sdGhhLkVycm9yQ29kZVIEY29kZRIWCgZyZWFzb24YAiABKAlSBnJlYXNvbiK2AQoGSGVhZGVyEg4KAmlkGAEgASgJUgJpZBInCgR0eXBlGAIgASgOMhMudm9sdGhhLk1lc3NhZ2VUeXBlUgR0eXBlEh0KCmZyb21fdG9waWMYAyABKAlSCWZyb21Ub3BpYxIZCgh0b190b3BpYxgEIAEoCVIHdG9Ub3BpYxIbCglrZXlfdG9waWMYBSABKAlSCGtleVRvcGljEhwKCXRpbWVzdGFtcBgGIAEoA1IJdGltZXN0YW1wIkgKCEFyZ3VtZW50EhAKA2tleRgBIAEoCVIDa2V5EioKBXZhbHVlGAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIFdmFsdWUiaQoVSW50ZXJDb250YWluZXJNZXNzYWdlEiYKBmhlYWRlchgBIAEoCzIOLnZvbHRoYS5IZWFkZXJSBmhlYWRlchIoCgRib2R5GAIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueVIEYm9keSKmAQoZSW50ZXJDb250YWluZXJSZXF1ZXN0Qm9keRIQCgNycGMYAiABKAlSA3JwYxIkCgRhcmdzGAMgAygLMhAudm9sdGhhLkFyZ3VtZW50UgRhcmdzEisKEXJlc3BvbnNlX3JlcXVpcmVkGAQgASgIUhByZXNwb25zZVJlcXVpcmVkEiQKDnJlcGx5X3RvX3RvcGljGAUgASgJUgxyZXBseVRvVG9waWMiZAoaSW50ZXJDb250YWluZXJSZXNwb25zZUJvZHkSGAoHc3VjY2VzcxgBIAEoCFIHc3VjY2VzcxIsCgZyZXN1bHQYAyABKAsyFC5nb29nbGUucHJvdG9idWYuQW55UgZyZXN1bHQiiAEKEFN3aXRjaENhcGFiaWxpdHkSKQoEZGVzYxgBIAEoCzIVLm9wZW5mbG93XzEzLm9mcF9kZXNjUgRkZXNjEkkKD3N3aXRjaF9mZWF0dXJlcxgCIAEoCzIgLm9wZW5mbG93XzEzLm9mcF9zd2l0Y2hfZmVhdHVyZXNSDnN3aXRjaEZlYXR1cmVzIjkKDlBvcnRDYXBhYmlsaXR5EicKBHBvcnQYASABKAsyEy52b2x0aGEuTG9naWNhbFBvcnRSBHBvcnQifgoQRGV2aWNlRGlzY292ZXJlZBIOCgJpZBgBIAEoCVICaWQSGwoJcGFyZW50X2lkGAIgASgJUghwYXJlbnRJZBIfCgtkZXZpY2VfdHlwZRgDIAEoCVIKZGV2aWNlVHlwZRIcCglwdWJsaXNoZXIYBCABKAlSCXB1Ymxpc2hlciLmAQoXSW50ZXJBZGFwdGVyTWVzc2FnZVR5cGUiygEKBVR5cGVzEhAKDEZMT1dfUkVRVUVTVBAAEhEKDUZMT1dfUkVTUE9OU0UQARIQCgxPTUNJX1JFUVVFU1QQAhIRCg1PTUNJX1JFU1BPTlNFEAMSEwoPTUVUUklDU19SRVFVRVNUEAQSFAoQTUVUUklDU19SRVNQT05TRRAFEhMKD09OVV9JTkRfUkVRVUVTVBAGEhQKEE9OVV9JTkRfUkVTUE9OU0UQBxIhCh1URUNIX1BST0ZJTEVfRE9XTkxPQURfUkVRVUVTVBAIIoECChJJbnRlckFkYXB0ZXJIZWFkZXISDgoCaWQYASABKAlSAmlkEjkKBHR5cGUYAiABKA4yJS52b2x0aGEuSW50ZXJBZGFwdGVyTWVzc2FnZVR5cGUuVHlwZXNSBHR5cGUSHQoKZnJvbV90b3BpYxgDIAEoCVIJZnJvbVRvcGljEhkKCHRvX3RvcGljGAQgASgJUgd0b1RvcGljEiAKDHRvX2RldmljZV9pZBgFIAEoCVIKdG9EZXZpY2VJZBImCg9wcm94eV9kZXZpY2VfaWQYBiABKAlSDXByb3h5RGV2aWNlSWQSHAoJdGltZXN0YW1wGAcgASgDUgl0aW1lc3RhbXAiwQEKF0ludGVyQWRhcHRlck9tY2lNZXNzYWdlEhgKB21lc3NhZ2UYASABKAxSB21lc3NhZ2USSgoOY29ubmVjdF9zdGF0dXMYAiABKA4yIy5jb21tb24uQ29ubmVjdFN0YXR1cy5Db25uZWN0U3RhdHVzUg1jb25uZWN0U3RhdHVzEkAKDXByb3h5X2FkZHJlc3MYAyABKAsyGy52b2x0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X2luZBgDIAEoCzIbLm9wZW5vbHQuSW50Zk9wZXJJbmRpY2F0aW9uSABSC2ludGZPcGVySW5kEj4KDG9udV9kaXNjX2luZBgEIAEoCzIaLm9wZW5vbHQuT251RGlzY0luZGljYXRpb25IAFIKb251RGlzY0luZBIxCgdvbnVfaW5kGAUgASgLMhYub3Blbm9sdC5PbnVJbmRpY2F0aW9uSABSBm9udUluZBI0CghvbWNpX2luZBgGIAEoCzIXLm9wZW5vbHQuT21jaUluZGljYXRpb25IAFIHb21jaUluZBI0Cgdwa3RfaW5kGAcgASgLMhkub3Blbm9sdC5QYWNrZXRJbmRpY2F0aW9uSABSBnBrdEluZBI4Cgpwb3J0X3N0YXRzGAggASgLMhcub3Blbm9sdC5Qb3J0U3RhdGlzdGljc0gAUglwb3J0U3RhdHMSOAoKZmxvd19zdGF0cxgJIAEoCzIXLm9wZW5vbHQuRmxvd1N0YXRpc3RpY3NIAFIJZmxvd1N0YXRzEjcKCWFsYXJtX2luZBgKIAEoCzIYLm9wZW5vbHQuQWxhcm1JbmRpY2F0aW9uSABSCGFsYXJtSW5kQgYKBGRhdGEiqwcKD0FsYXJtSW5kaWNhdGlvbhIxCgdsb3NfaW5kGAEgASgLMhYub3Blbm9sdC5Mb3NJbmRpY2F0aW9uSABSBmxvc0luZBJECg5keWluZ19nYXNwX2luZBgCIAEoCzIcLm9wZW5vbHQuRHlpbmdHYXNwSW5kaWNhdGlvbkgAUgxkeWluZ0dhc3BJbmQSQQoNb251X2FsYXJtX2luZBgDIAEoCzIbLm9wZW5vbHQuT251QWxhcm1JbmRpY2F0aW9uSABSC29udUFsYXJtSW5kElcKFG9udV9zdGFydHVwX2ZhaWxfaW5kGAQgASgLMiQub3Blbm9sdC5PbnVTdGFydHVwRmFpbHVyZUluZGljYXRpb25IAFIRb251U3RhcnR1cEZhaWxJbmQSWgoWb251X3NpZ25hbF9kZWdyYWRlX2luZBgFIAEoCzIjLm9wZW5vbHQuT251U2lnbmFsRGVncmFkZUluZGljYXRpb25IAFITb251U2lnbmFsRGVncmFkZUluZBJbChdvbnVfZHJpZnRfb2Zfd2luZG93X2luZBgGIAEoCzIjLm9wZW5vbHQuT251RHJpZnRPZldpbmRvd0luZGljYXRpb25IAFITb251RHJpZnRPZldpbmRvd0luZBJUChFvbnVfbG9zc19vbWNpX2luZBgHIAEoCzInLm9wZW5vbHQuT251TG9zc09mT21jaUNoYW5uZWxJbmRpY2F0aW9uSABSDm9udUxvc3NPbWNpSW5kElcKFG9udV9zaWduYWxzX2ZhaWxfaW5kGAggASgLMiQub3Blbm9sdC5PbnVTaWduYWxzRmFpbHVyZUluZGljYXRpb25IAFIRb251U2lnbmFsc0ZhaWxJbmQSTwoMb251X3Rpd2lfaW5kGAkgASgLMisub3Blbm9sdC5PbnVUcmFuc21pc3Npb25JbnRlcmZlcmVuY2VXYXJuaW5nSABSCm9udVRpd2lJbmQSYAoXb251X2FjdGl2YXRpb25fZmFpbF9pbmQYCiABKAsyJy5vcGVub2x0Lk9udUFjdGl2YXRpb25GYWlsdXJlSW5kaWNhdGlvbkgAUhRvbnVBY3RpdmF0aW9uRmFpbEluZBJgChhvbnVfcHJvY2Vzc2luZ19lcnJvcl9pbmQYCyABKAsyJS5vcGVub2x0Lk9udVByb2Nlc3NpbmdFcnJvckluZGljYXRpb25IAFIVb251UHJvY2Vzc2luZ0Vycm9ySW5kQgYKBGRhdGEiLgoNT2x0SW5kaWNhdGlvbhIdCgpvcGVyX3N0YXRlGAEgASgJUglvcGVyU3RhdGUiSAoOSW50ZkluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEh0KCm9wZXJfc3RhdGUYAiABKAlSCW9wZXJTdGF0ZSJoChFPbnVEaXNjSW5kaWNhdGlvbhIXCgdpbnRmX2lkGAEgASgHUgZpbnRmSWQSOgoNc2VyaWFsX251bWJlchgCIAEoCzIVLm9wZW5vbHQuU2VyaWFsTnVtYmVyUgxzZXJpYWxOdW1iZXIiuwEKDU9udUluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSHQoKb3Blcl9zdGF0ZRgDIAEoCVIJb3BlclN0YXRlEh8KC2FkbWluX3N0YXRlGAUgASgJUgphZG1pblN0YXRlEjoKDXNlcmlhbF9udW1iZXIYBCABKAsyFS5vcGVub2x0LlNlcmlhbE51bWJlclIMc2VyaWFsTnVtYmVyImAKEkludGZPcGVySW5kaWNhdGlvbhISCgR0eXBlGAEgASgJUgR0eXBlEhcKB2ludGZfaWQYAiABKAdSBmludGZJZBIdCgpvcGVyX3N0YXRlGAMgASgJUglvcGVyU3RhdGUiUgoOT21jaUluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSEAoDcGt0GAMgASgMUgNwa3QiwwEKEFBhY2tldEluZGljYXRpb24SGwoJaW50Zl90eXBlGAUgASgJUghpbnRmVHlwZRIXCgdpbnRmX2lkGAEgASgHUgZpbnRmSWQSHQoKZ2VtcG9ydF9pZBgCIAEoB1IJZ2VtcG9ydElkEhcKB2Zsb3dfaWQYAyABKAdSBmZsb3dJZBIXCgdwb3J0X25vGAYgASgHUgZwb3J0Tm8SFgoGY29va2llGAcgASgGUgZjb29raWUSEAoDcGt0GAQgASgMUgNwa3QiJAoJSW50ZXJmYWNlEhcKB2ludGZfaWQYASABKAdSBmludGZJZCI8CglIZWFydGJlYXQSLwoTaGVhcnRiZWF0X3NpZ25hdHVyZRgBIAEoB1ISaGVhcnRiZWF0U2lnbmF0dXJlIoMBCgNPbnUSFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSOgoNc2VyaWFsX251bWJlchgDIAEoCzIVLm9wZW5vbHQuU2VyaWFsTnVtYmVyUgxzZXJpYWxOdW1iZXISEAoDcGlyGAQgASgHUgNwaXIiSwoHT21jaU1zZxIXCgdpbnRmX2lkGAEgASgHUgZpbnRmSWQSFQoGb251X2lkGAIgASgHUgVvbnVJZBIQCgNwa3QYAyABKAxSA3BrdCJmCglPbnVQYWNrZXQSFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSFwoHcG9ydF9ubxgEIAEoB1IGcG9ydE5vEhAKA3BrdBgDIAEoDFIDcGt0IjkKDFVwbGlua1BhY2tldBIXCgdpbnRmX2lkGAEgASgHUgZpbnRmSWQSEAoDcGt0GAIgASgMUgNwa3QikgkKCkRldmljZUluZm8SFgoGdmVuZG9yGAEgASgJUgZ2ZW5kb3ISFAoFbW9kZWwYAiABKAlSBW1vZGVsEikKEGhhcmR3YXJlX3ZlcnNpb24YAyABKAlSD2hhcmR3YXJlVmVyc2lvbhIpChBmaXJtd2FyZV92ZXJzaW9uGAQgASgJUg9maXJtd2FyZVZlcnNpb24SGwoJZGV2aWNlX2lkGBAgASgJUghkZXZpY2VJZBIwChRkZXZpY2Vfc2VyaWFsX251bWJlchgRIAEoCVISZGV2aWNlU2VyaWFsTnVtYmVyEhsKCXBvbl9wb3J0cxgMIAEoB1IIcG9uUG9ydHMSHgoKdGVjaG5vbG9neRgFIAEoCVIKdGVjaG5vbG9neRIgCgxvbnVfaWRfc3RhcnQYBiABKAdSCm9udUlkU3RhcnQSHAoKb251X2lkX2VuZBgHIAEoB1IIb251SWRFbmQSJAoOYWxsb2NfaWRfc3RhcnQYCCABKAdSDGFsbG9jSWRTdGFydBIgCgxhbGxvY19pZF9lbmQYCSABKAdSCmFsbG9jSWRFbmQSKAoQZ2VtcG9ydF9pZF9zdGFydBgKIAEoB1IOZ2VtcG9ydElkU3RhcnQSJAoOZ2VtcG9ydF9pZF9lbmQYCyABKAdSDGdlbXBvcnRJZEVuZBIiCg1mbG93X2lkX3N0YXJ0GA0gASgHUgtmbG93SWRTdGFydBIeCgtmbG93X2lkX2VuZBgOIAEoB1IJZmxvd0lkRW5kEkAKBnJhbmdlcxgPIAMoCzIoLm9wZW5vbHQuRGV2aWNlSW5mby5EZXZpY2VSZXNvdXJjZVJhbmdlc1IGcmFuZ2VzGpUEChREZXZpY2VSZXNvdXJjZVJhbmdlcxIZCghpbnRmX2lkcxgBIAMoB1IHaW50ZklkcxIeCgp0ZWNobm9sb2d5GAIgASgJUgp0ZWNobm9sb2d5EkMKBXBvb2xzGAMgAygLMi0ub3Blbm9sdC5EZXZpY2VJbmZvLkRldmljZVJlc291cmNlUmFuZ2VzLlBvb2xSBXBvb2xzGvwCCgRQb29sEkoKBHR5cGUYASABKA4yNi5vcGVub2x0LkRldmljZUluZm8uRGV2aWNlUmVzb3VyY2VSYW5nZXMuUG9vbC5Qb29sVHlwZVIEdHlwZRJTCgdzaGFyaW5nGAIgASgOMjkub3Blbm9sdC5EZXZpY2VJbmZvLkRldmljZVJlc291cmNlUmFuZ2VzLlBvb2wuU2hhcmluZ1R5cGVSB3NoYXJpbmcSFAoFc3RhcnQYAyABKAdSBXN0YXJ0EhAKA2VuZBgEIAEoB1IDZW5kIkEKCFBvb2xUeXBlEgoKBk9OVV9JRBAAEgwKCEFMTE9DX0lEEAESDgoKR0VNUE9SVF9JRBACEgsKB0ZMT1dfSUQQAyJoCgtTaGFyaW5nVHlwZRIWChJERURJQ0FURURfUEVSX0lOVEYQABIfChtTSEFSRURfQllfQUxMX0lOVEZfQUxMX1RFQ0gQARIgChxTSEFSRURfQllfQUxMX0lOVEZfU0FNRV9URUNIEAIihAMKCkNsYXNzaWZpZXISFQoGb190cGlkGAEgASgHUgVvVHBpZBITCgVvX3ZpZBgCIAEoB1IEb1ZpZBIVCgZpX3RwaWQYAyABKAdSBWlUcGlkEhMKBWlfdmlkGAQgASgHUgRpVmlkEhcKB29fcGJpdHMYBSABKAdSBm9QYml0cxIXCgdpX3BiaXRzGAYgASgHUgZpUGJpdHMSGQoIZXRoX3R5cGUYByABKAdSB2V0aFR5cGUSFwoHZHN0X21hYxgIIAEoDFIGZHN0TWFjEhcKB3NyY19tYWMYCSABKAxSBnNyY01hYxIZCghpcF9wcm90bxgKIAEoB1IHaXBQcm90bxIVCgZkc3RfaXAYCyABKAdSBWRzdElwEhUKBnNyY19pcBgMIAEoB1IFc3JjSXASGQoIc3JjX3BvcnQYDSABKAdSB3NyY1BvcnQSGQoIZHN0X3BvcnQYDiABKAdSB2RzdFBvcnQSIAoMcGt0X3RhZ190eXBlGA8gASgJUgpwa3RUYWdUeXBlInsKCUFjdGlvbkNtZBIiCg1hZGRfb3V0ZXJfdGFnGAEgASgIUgthZGRPdXRlclRhZxIoChByZW1vdmVfb3V0ZXJfdGFnGAIgASgIUg5yZW1vdmVPdXRlclRhZxIgCgx0cmFwX3RvX2hvc3QYAyABKAhSCnRyYXBUb0hvc3QiuAEKBkFjdGlvbhIkCgNjbWQYASABKAsyEi5vcGVub2x0LkFjdGlvbkNtZFIDY21kEhMKBW9fdmlkGAIgASgHUgRvVmlkEhcKB29fcGJpdHMYAyABKAdSBm9QYml0cxIVCgZvX3RwaWQYBCABKAdSBW9UcGlkEhMKBWlfdmlkGAUgASgHUgRpVmlkEhcKB2lfcGJpdHMYBiABKAdSBmlQYml0cxIVCgZpX3RwaWQYByABKAdSBWlUcGlkIp0DCgRGbG93EiQKDmFjY2Vzc19pbnRmX2lkGAEgASgPUgxhY2Nlc3NJbnRmSWQSFQoGb251X2lkGAIgASgPUgVvbnVJZBIVCgZ1bmlfaWQYCyABKA9SBXVuaUlkEhcKB2Zsb3dfaWQYAyABKAdSBmZsb3dJZBIbCglmbG93X3R5cGUYBCABKAlSCGZsb3dUeXBlEhkKCGFsbG9jX2lkGAogASgPUgdhbGxvY0lkEiYKD25ldHdvcmtfaW50Zl9pZBgFIAEoD1INbmV0d29ya0ludGZJZBIdCgpnZW1wb3J0X2lkGAYgASgPUglnZW1wb3J0SWQSMwoKY2xhc3NpZmllchgHIAEoCzITLm9wZW5vbHQuQ2xhc3NpZmllclIKY2xhc3NpZmllchInCgZhY3Rpb24YCCABKAsyDy5vcGVub2x0LkFjdGlvblIGYWN0aW9uEhoKCHByaW9yaXR5GAkgASgPUghwcmlvcml0eRIWCgZjb29raWUYDCABKAZSBmNvb2tpZRIXCgdwb3J0X25vGA0gASgHUgZwb3J0Tm8iVAoMU2VyaWFsTnVtYmVyEhsKCXZlbmRvcl9pZBgBIAEoDFIIdmVuZG9ySWQSJwoPdmVuZG9yX3NwZWNpZmljGAIgASgMUg52ZW5kb3JTcGVjaWZpYyLOBAoOUG9ydFN0YXRpc3RpY3MSFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhkKCHJ4X2J5dGVzGAIgASgGUgdyeEJ5dGVzEh0KCnJ4X3BhY2tldHMYAyABKAZSCXJ4UGFja2V0cxIoChByeF91Y2FzdF9wYWNrZXRzGAQgASgGUg5yeFVjYXN0UGFja2V0cxIoChByeF9tY2FzdF9wYWNrZXRzGAUgASgGUg5yeE1jYXN0UGFja2V0cxIoChByeF9iY2FzdF9wYWNrZXRzGAYgASgGUg5yeEJjYXN0UGFja2V0cxIoChByeF9lcnJvcl9wYWNrZXRzGAcgASgGUg5yeEVycm9yUGFja2V0cxIZCgh0eF9ieXRlcxgIIAEoBlIHdHhCeXRlcxIdCgp0eF9wYWNrZXRzGAkgASgGUgl0eFBhY2tldHMSKAoQdHhfdWNhc3RfcGFja2V0cxgKIAEoBlIOdHhVY2FzdFBhY2tldHMSKAoQdHhfbWNhc3RfcGFja2V0cxgLIAEoBlIOdHhNY2FzdFBhY2tldHMSKAoQdHhfYmNhc3RfcGFja2V0cxgMIAEoBlIOdHhCY2FzdFBhY2tldHMSKAoQdHhfZXJyb3JfcGFja2V0cxgNIAEoBlIOdHhFcnJvclBhY2tldHMSIgoNcnhfY3JjX2Vycm9ycxgOIAEoBlILcnhDcmNFcnJvcnMSHQoKYmlwX2Vycm9ycxgPIAEoBlIJYmlwRXJyb3JzEhwKCXRpbWVzdGFtcBgQIAEoB1IJdGltZXN0YW1wIrsBCg5GbG93U3RhdGlzdGljcxIXCgdmbG93X2lkGAEgASgHUgZmbG93SWQSGQoIcnhfYnl0ZXMYAiABKAZSB3J4Qnl0ZXMSHQoKcnhfcGFja2V0cxgDIAEoBlIJcnhQYWNrZXRzEhkKCHR4X2J5dGVzGAggASgGUgd0eEJ5dGVzEh0KCnR4X3BhY2tldHMYCSABKAZSCXR4UGFja2V0cxIcCgl0aW1lc3RhbXAYECABKAdSCXRpbWVzdGFtcCJACg1Mb3NJbmRpY2F0aW9uEhcKB2ludGZfaWQYASABKAdSBmludGZJZBIWCgZzdGF0dXMYAiABKAlSBnN0YXR1cyJdChNEeWluZ0dhc3BJbmRpY2F0aW9uEhcKB2ludGZfaWQYASABKAdSBmludGZJZBIVCgZvbnVfaWQYAiABKAdSBW9udUlkEhYKBnN0YXR1cxgDIAEoCVIGc3RhdHVzIt8BChJPbnVBbGFybUluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSHQoKbG9zX3N0YXR1cxgDIAEoCVIJbG9zU3RhdHVzEh0KCmxvYl9zdGF0dXMYBCABKAlSCWxvYlN0YXR1cxIoChBsb3BjX21pc3Nfc3RhdHVzGAUgASgJUg5sb3BjTWlzc1N0YXR1cxIxChVsb3BjX21pY19lcnJvcl9zdGF0dXMYBiABKAlSEmxvcGNNaWNFcnJvclN0YXR1cyJlChtPbnVTdGFydHVwRmFpbHVyZUluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSFgoGc3RhdHVzGAMgASgJUgZzdGF0dXMimQEKGk9udVNpZ25hbERlZ3JhZGVJbmRpY2F0aW9uEhcKB2ludGZfaWQYASABKAdSBmludGZJZBIVCgZvbnVfaWQYAiABKAdSBW9udUlkEhYKBnN0YXR1cxgDIAEoCVIGc3RhdHVzEjMKFmludmVyc2VfYml0X2Vycm9yX3JhdGUYBCABKAdSE2ludmVyc2VCaXRFcnJvclJhdGUikwEKGk9udURyaWZ0T2ZXaW5kb3dJbmRpY2F0aW9uEhcKB2ludGZfaWQYASABKAdSBmludGZJZBIVCgZvbnVfaWQYAiABKAdSBW9udUlkEhYKBnN0YXR1cxgDIAEoCVIGc3RhdHVzEhQKBWRyaWZ0GAQgASgHUgVkcmlmdBIXCgduZXdfZXFkGAUgASgHUgZuZXdFcWQiaAoeT251TG9zc09mT21jaUNoYW5uZWxJbmRpY2F0aW9uEhcKB2ludGZfaWQYASABKAdSBmludGZJZBIVCgZvbnVfaWQYAiABKAdSBW9udUlkEhYKBnN0YXR1cxgDIAEoCVIGc3RhdHVzIpoBChtPbnVTaWduYWxzRmFpbHVyZUluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQSFgoGc3RhdHVzGAMgASgJUgZzdGF0dXMSMwoWaW52ZXJzZV9iaXRfZXJyb3JfcmF0ZRgEIAEoB1ITaW52ZXJzZUJpdEVycm9yUmF0ZSKCAQoiT251VHJhbnNtaXNzaW9uSW50ZXJmZXJlbmNlV2FybmluZxIXCgdpbnRmX2lkGAEgASgHUgZpbnRmSWQSFQoGb251X2lkGAIgASgHUgVvbnVJZBIWCgZzdGF0dXMYAyABKAlSBnN0YXR1cxIUCgVkcmlmdBgEIAEoB1IFZHJpZnQiUAoeT251QWN0aXZhdGlvbkZhaWx1cmVJbmRpY2F0aW9uEhcKB2ludGZfaWQYASABKAdSBmludGZJZBIVCgZvbnVfaWQYAiABKAdSBW9udUlkIk4KHE9udVByb2Nlc3NpbmdFcnJvckluZGljYXRpb24SFwoHaW50Zl9pZBgBIAEoB1IGaW50ZklkEhUKBm9udV9pZBgCIAEoB1IFb251SWQi6wEKCVNjaGVkdWxlchIwCglkaXJlY3Rpb24YASABKA4yEi5vcGVub2x0LkRpcmVjdGlvblIJZGlyZWN0aW9uEjoKDWFkZGl0aW9uYWxfYncYAiABKA4yFS5vcGVub2x0LkFkZGl0aW9uYWxCV1IMYWRkaXRpb25hbEJ3EhoKCHByaW9yaXR5GAMgASgHUghwcmlvcml0eRIWCgZ3ZWlnaHQYBCABKAdSBndlaWdodBI8CgxzY2hlZF9wb2xpY3kYBSABKA4yGS5vcGVub2x0LlNjaGVkdWxpbmdQb2xpY3lSC3NjaGVkUG9saWN5IrMBChJUcmFmZmljU2hhcGluZ0luZm8SEAoDY2lyGAEgASgHUgNjaXISEAoDY2JzGAIgASgHUgNjYnMSEAoDcGlyGAMgASgHUgNwaXISEAoDcGJzGAQgASgHUgNwYnMSEAoDZ2lyGAUgASgHUgNnaXISQwoKYWRkX2J3X2luZBgGIAEoDjIlLm9wZW5vbHQuSW5mZXJyZWRBZGRpdGlvbkJXSW5kaWNhdGlvblIIYWRkQndJbmQi1QEKBVRjb250EjAKCWRpcmVjdGlvbhgBIAEoDjISLm9wZW5vbHQuRGlyZWN0aW9uUglkaXJlY3Rpb24SGQoIYWxsb2NfaWQYAiABKAdSB2FsbG9jSWQSMAoJc2NoZWR1bGVyGAMgASgLMhIub3Blbm9sdC5TY2hlZHVsZXJSCXNjaGVkdWxlchJNChR0cmFmZmljX3NoYXBpbmdfaW5mbxgEIAEoCzIbLm9wZW5vbHQuVHJhZmZpY1NoYXBpbmdJbmZvUhJ0cmFmZmljU2hhcGluZ0luZm8ikAEKBlRjb250cxIXCgdpbnRmX2lkGAEgASgHUgZpbnRmSWQSFQoGb251X2lkGAIgASgHUgVvbnVJZBIVCgZ1bmlfaWQYBCABKAdSBXVuaUlkEhcKB3BvcnRfbm8YBSABKAdSBnBvcnRObxImCgZ0Y29udHMYAyADKAsyDi5vcGVub2x0LlRjb250UgZ0Y29udHMiNgoVVGFpbERyb3BEaXNjYXJkQ29uZmlnEh0KCnF1ZXVlX3NpemUYASABKAdSCXF1ZXVlU2l6ZSKFAQoQUmVkRGlzY2FyZENvbmZpZxIjCg1taW5fdGhyZXNob2xkGAEgASgHUgxtaW5UaHJlc2hvbGQSIwoNbWF4X3RocmVzaG9sZBgCIAEoB1IMbWF4VGhyZXNob2xkEicKD21heF9wcm9iYWJpbGl0eRgDIAEoB1IObWF4UHJvYmFiaWxpdHkipAEKEVdSZWREaXNjYXJkQ29uZmlnEi8KBWdyZWVuGAEgASgLMhkub3Blbm9sdC5SZWREaXNjYXJkQ29uZmlnUgVncmVlbhIxCgZ5ZWxsb3cYAiABKAsyGS5vcGVub2x0LlJlZERpc2NhcmRDb25maWdSBnllbGxvdxIrCgNyZWQYAyABKAsyGS5vcGVub2x0LlJlZERpc2NhcmRDb25maWdSA3JlZCLUAgoNRGlzY2FyZENvbmZpZxI9Cg5kaXNjYXJkX3BvbGljeRgBIAEoDjIWLm9wZW5vbHQuRGlzY2FyZFBvbGljeVINZGlzY2FyZFBvbGljeRJZChh0YWlsX2Ryb3BfZGlzY2FyZF9jb25maWcYAiABKAsyHi5vcGVub2x0LlRhaWxEcm9wRGlzY2FyZENvbmZpZ0gAUhV0YWlsRHJvcERpc2NhcmRDb25maWcSSQoScmVkX2Rpc2NhcmRfY29uZmlnGAMgASgLMhkub3Blbm9sdC5SZWREaXNjYXJkQ29uZmlnSABSEHJlZERpc2NhcmRDb25maWcSTAoTd3JlZF9kaXNjYXJkX2NvbmZpZxgEIAEoCzIaLm9wZW5vbHQuV1JlZERpc2NhcmRDb25maWdIAFIRd3JlZERpc2NhcmRDb25maWdCEAoOZGlzY2FyZF9jb25maWciBwoFRW1wdHkqPAoJRGlyZWN0aW9uEgwKCFVQU1RSRUFNEAASDgoKRE9XTlNUUkVBTRABEhEKDUJJRElSRUNUSU9OQUwQAio7ChBTY2hlZHVsaW5nUG9saWN5EgcKA1dSUhAAEhIKDlN0cmljdFByaW9yaXR5EAESCgoGSHlicmlkEAIqbgoMQWRkaXRpb25hbEJXEhUKEUFkZGl0aW9uYWxCV19Ob25lEAASEwoPQWRkaXRpb25hbEJXX05BEAESGwoXQWRkaXRpb25hbEJXX0Jlc3RFZmZvcnQQAhIVChFBZGRpdGlvbmFsQldfQXV0bxADKj8KDURpc2NhcmRQb2xpY3kSDAoIVGFpbERyb3AQABINCglXVGFpbERyb3AQARIHCgNSZWQQAhIICgRXUmVkEAMqnAEKHEluZmVycmVkQWRkaXRpb25CV0luZGljYXRpb24SJQohSW5mZXJyZWRBZGRpdGlvbkJXSW5kaWNhdGlvbl9Ob25lEAASKAokSW5mZXJyZWRBZGRpdGlvbkJXSW5kaWNhdGlvbl9Bc3N1cmVkEAESKwonSW5mZXJyZWRBZGRpdGlvbkJXSW5kaWNhdGlvbl9CZXN0RWZmb3J0EAIypwsKB09wZW5vbHQSRAoKRGlzYWJsZU9sdBIOLm9wZW5vbHQuRW1wdHkaDi5vcGVub2x0LkVtcHR5IhaC0+STAhAiCy92MS9EaXNhYmxlOgEqEkYKC1JlZW5hYmxlT2x0Eg4ub3Blbm9sdC5FbXB0eRoOLm9wZW5vbHQuRW1wdHkiF4LT5JMCESIML3YxL1JlZW5hYmxlOgEqEkUKC0FjdGl2YXRlT251Egwub3Blbm9sdC5PbnUaDi5vcGVub2x0LkVtcHR5IhiC0+STAhIiDS92MS9FbmFibGVPbnU6ASoSSAoNRGVhY3RpdmF0ZU9udRIMLm9wZW5vbHQuT251Gg4ub3Blbm9sdC5FbXB0eSIZgtPkkwITIg4vdjEvRGlzYWJsZU9udToBKhJDCglEZWxldGVPbnUSDC5vcGVub2x0Lk9udRoOLm9wZW5vbHQuRW1wdHkiGILT5JMCEiINL3YxL0RlbGV0ZU9udToBKhJJCgpPbWNpTXNnT3V0EhAub3Blbm9sdC5PbWNpTXNnGg4ub3Blbm9sdC5FbXB0eSIZgtPkkwITIg4vdjEvT21jaU1zZ091dDoBKhJPCgxPbnVQYWNrZXRPdXQSEi5vcGVub2x0Lk9udVBhY2tldBoOLm9wZW5vbHQuRW1wdHkiG4LT5JMCFSIQL3YxL09udVBhY2tldE91dDoBKhJYCg9VcGxpbmtQYWNrZXRPdXQSFS5vcGVub2x0LlVwbGlua1BhY2tldBoOLm9wZW5vbHQuRW1wdHkiHoLT5JMCGCITL3YxL1VwbGlua1BhY2tldE91dDoBKhJACgdGbG93QWRkEg0ub3Blbm9sdC5GbG93Gg4ub3Blbm9sdC5FbXB0eSIWgtPkkwIQIgsvdjEvRmxvd0FkZDoBKhJGCgpGbG93UmVtb3ZlEg0ub3Blbm9sdC5GbG93Gg4ub3Blbm9sdC5FbXB0eSIZgtPkkwITIg4vdjEvRmxvd1JlbW92ZToBKhJTCg5IZWFydGJlYXRDaGVjaxIOLm9wZW5vbHQuRW1wdHkaEi5vcGVub2x0LkhlYXJ0YmVhdCIdgtPkkwIXIhIvdjEvSGVhcnRiZWF0Q2hlY2s6ASoSTQoLRW5hYmxlUG9uSWYSEi5vcGVub2x0LkludGVyZmFjZRoOLm9wZW5vbHQuRW1wdHkiGoLT5JMCFCIPL3YxL0VuYWJsZVBvbklmOgEqEk8KDERpc2FibGVQb25JZhISLm9wZW5vbHQuSW50ZXJmYWNlGg4ub3Blbm9sdC5FbXB0eSIbgtPkkwIVIhAvdjEvRGlzYWJsZVBvbklmOgEqElIKDUdldERldmljZUluZm8SDi5vcGVub2x0LkVtcHR5GhMub3Blbm9sdC5EZXZpY2VJbmZvIhyC0+STAhYiES92MS9HZXREZXZpY2VJbmZvOgEqEj8KBlJlYm9vdBIOLm9wZW5vbHQuRW1wdHkaDi5vcGVub2x0LkVtcHR5IhWC0+STAg8iCi92MS9SZWJvb3Q6ASoSVQoRQ29sbGVjdFN0YXRpc3RpY3MSDi5vcGVub2x0LkVtcHR5Gg4ub3Blbm9sdC5FbXB0eSIggtPkkwIaIhUvdjEvQ29sbGVjdFN0YXRpc3RpY3M6ASoSTAoMQ3JlYXRlVGNvbnRzEg8ub3Blbm9sdC5UY29udHMaDi5vcGVub2x0LkVtcHR5IhuC0+STAhUiEC92MS9DcmVhdGVUY29udHM6ASoSTAoMUmVtb3ZlVGNvbnRzEg8ub3Blbm9sdC5UY29udHMaDi5vcGVub2x0LkVtcHR5IhuC0+STAhUiEC92MS9SZW1vdmVUY29udHM6ASoSOwoQRW5hYmxlSW5kaWNhdGlvbhIOLm9wZW5vbHQuRW1wdHkaEy5vcGVub2x0LkluZGljYXRpb24iADABQi5aLGdpdGh1Yi5jb20vb3BlbmNvcmQvdm9sdGhhLXByb3Rvcy9nby9vcGVub2x0SvWsAQoHEgUOAK4EEArRBAoBDBIDDgASMsYEIENvcHlyaWdodCAoYykgMjAxOCBPcGVuIE5ldHdvcmtpbmcgRm91bmRhdGlvbgoKIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogeW91IG1heSBub3QgdXNlIHRoaXMg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ImcKEVBvblNpbVBvcnRNZXRyaWNzEhsKCXBvcnRfbmFtZRgBIAEoCVIIcG9ydE5hbWUSNQoHcGFja2V0cxgCIAMoCzIbLnZvbHRoYS5Qb25TaW1QYWNrZXRDb3VudGVyUgdwYWNrZXRzIlwKDVBvblNpbU1ldHJpY3MSFgoGZGV2aWNlGAEgASgJUgZkZXZpY2USMwoHbWV0cmljcxgCIAMoCzIZLnZvbHRoYS5Qb25TaW1Qb3J0TWV0cmljc1IHbWV0cmljcyIqChRQb25TaW1NZXRyaWNzUmVxdWVzdBISCgRwb3J0GAEgASgFUgRwb3J0MsgCCgZQb25TaW0SOgoJU2VuZEZyYW1lEhMudm9sdGhhLlBvblNpbUZyYW1lGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5IgASQAoNUmVjZWl2ZUZyYW1lcxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoTLnZvbHRoYS5Qb25TaW1GcmFtZSIAMAESQwoNR2V0RGV2aWNlSW5mbxIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRoYLnZvbHRoYS5Qb25TaW1EZXZpY2VJbmZvIgASPgoPVXBkYXRlRmxvd1RhYmxlEhEudm9sdGhhLkZsb3dUYWJsZRoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eSIAEjsKCEdldFN0YXRzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GhUudm9sdGhhLlBvblNpbU1ldHJpY3MiAEItWitnaXRodWIuY29tL29wZW5jb3JkL3ZvbHRoYS1wcm90b3MvZ28vdm9sdGhhSsENCgYSBAAAQgEKCAoBDBIDAAASCggKAQgSAwIAQgoJCgIICxIDAgBCCggKAQISAwQADwoJCgIDABIDBgAlCgkKAgMBEgMHACkKCgoCBAASBAoADQEKCgoDBAABEgMKCBsKCwoEBAACABIDCwQXCg0KBQQAAgAEEgQLBAodCgwKBQQAAgAFEgMLBAkKDAoFBAACAAESAwsKEgoMCgUEAAIAAxIDCxUWCgsKBAQAAgESAwwEHQoNCgUEAAIBBBIEDAQLFwoMCgUEAAIBBRIDDAQKCgwKBQQAAgEBEgMMCxgKDAoFBAACAQMSAwwbHAoKCgIEARIEDwASAQoKCgMEAQESAw8IGAoLCgQEAQIAEgMQBBcKDQoF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