MS4gSU5UUk9EVUNUSU9OCgpXaW5lIGVzdCB1biBwcm9ncmFtbWUgcXVpIHBlcm1ldCBkJ2V46WN1dGVyIGxlcyBsb2dpY2llbHMg6WNyaXRzCnBvdXIgTWljcm9zb2Z0IFdpbmRvd3MgKGNvbXByZW5hbnQgbGVzIGV46WN1dGFibGVzIERPUywgV2luZG93cyAzLngKZXQgV2luMzIpIHN1ciB1biBVbml4LiBJbCBlc3QgY29tcG9z6SBkJ3VuIGNoYXJnZXVyIHF1aSBjaGFyZ2UgZXQKZXjpY3V0ZSB1biBiaW5haXJlIE1pY3Jvc29mdCBXaW5kb3dzLCBhaW5zaSBxdWUgZCd1bmUgYmlibGlvdGjocXVlIChhcHBlbOllCldpbmVsaWIpIHF1aSBpbXBs6W1lbnRlIGxlcyBhcHBlbHMgZGUgbCdBUEkgZGUgV2luZG93cyBwYXIgbGV1cgrpcXVpdmFsZW50IFVuaXggb3UgWDExLiBDZXR0ZSBiaWJsaW90aOhxdWUgcGV1dCDpZ2FsZW1lbnQg6nRyZSB1dGlsaXPpZQpwb3VyIHBvcnRlciBkdSBjb2RlIFdpbjMyIHZlcnMgdW4gZXjpY3V0YWJsZSBVbml4IG5hdGlmLgoKV2luZSBlc3QgdW4gbG9naWNpZWwgbGlicmUsIGRpc3RyaWJ16SBzb3VzIEdOVSBMR1BMOyBsaXNleiBsZSBmaWNoaWVyCkxJQ0VOU0UgcG91ciBsZXMgZOl0YWlscy4KCjIuIETJTUFSUkFHRSBSQVBJREUKClF1YW5kIHZvdXMgY29tcGlsZXog4CBwYXJ0aXIgZGVzIHNvdXJjZXMsIGlsIGVzdCByZWNvbW1hbmTpIGQndXRpbGlzZXIKbCdJbnN0YWxsYXRldXIgZGUgV2luZSBwb3VyIGNvbnN0cnVpcmUgZXQgaW5zdGFsbGVyIFdpbmUuIMAgcGFydGlyIGR1CnLpcGVydG9pcmUgcmFjaW5lIGRlcyBzb3VyY2VzIGRlIFdpbmUgKHF1aSBjb250aWVudCBjZSBmaWNoaWVyKSwKZXjpY3V0ZXogOgoKLi90b29scy93aW5laW5zdGFsbAoKUG91ciBleOljdXRlciB1biBwcm9ncmFtbWUsIHRhcGV6ICJ3aW5lIFtvcHRpb25zXSBwcm9ncmFtbWUiLiBQb3VyIGRlcwppbmZvcm1hdGlvbnMgY29tcGzpbWVudGFpcmVzIGV0IGRlcyBy6XNvbHV0aW9ucyBkZSBwcm9ibOhtZXMsIGxpc2V6IGxlCnJlc3RlIGRlIGNlIGZpY2hpZXIsIGxlcyBwYWdlcyAibWFuIiBkZSBXaW5lLCBldCBzdXJ0b3V0IGxlcyBub21icmV1c2VzIAppbmZvcm1hdGlvbnMgcXVlIHZvdXMgdHJvdXZlcmV6IHN1ciBodHRwOi8vd3d3LndpbmVocS5vcmcuCgozLiBDT05GSUdVUkFUSU9OIE7JQ0VTU0FJUkUKClBvdXIgY29tcGlsZXIgZXQgZXjpY3V0ZXIgV2luZSwgdm91cyBkZXZleiBhdm9pciB1biBkZXMgc3lzdOhtZXMKZCdleHBsb2l0YXRpb24gcXVpIHN1aXQgOgoKCUxpbnV4IHZlcnNpb24gMi4wLjM2IG91IHVsdOlyaWV1cgoJRnJlZUJTRCA2LjMgb3UgdWx06XJpZXVyCglTb2xhcmlzIHg4NiA5IG91IHVsdOlyaWV1cgoJTmV0QlNELWN1cnJlbnQKCU1hYyBPUyBYIDEwLjQgb3UgdWx06XJpZXVyCgrJdGFudCBkb25u6SBxdWUgV2luZSBu6WNlc3NpdGUgdW5lIGltcGzpbWVudGF0aW9uIGRlcyAidGhyZWFkcyIgKHByb2Nlc3N1cwps6WdlcnMpIGF1IG5pdmVhdSBkdSBub3lhdSwgc2V1bHMgbGVzIHN5c3TobWVzIGQnZXhwbG9pdGF0aW9uIG1lbnRpb25u6XMKY2ktaGF1dCBzb250IHN1cHBvcnTpcy4gRCdhdXRyZXMgc3lzdOhtZXMgZCdleHBsb2l0YXRpb24gaW1wbOltZW50YW50IGxlcwp0aHJlYWRzIG5veWF1IHBldXZlbnQg6nRyZSBwcmlzIGVuIGNoYXJnZSBkYW5zIGxlIGZ1dHVyLgoKSW5mb3JtYXRpb24gTGludXggOgogIEJpZW4gcXVlIExpbnV4IDIuMi54IGRldnJhaXQgZW5jb3JlIGZvbmN0aW9ubmVyIGV0IHF1ZSBMaW51eCAyLjAueCBwb3VycmFpdAogIGVuY29yZSBtYXJjaGVyIChkZXMgdmVyc2lvbnMgcGx1cyBhbmNpZW5uZXMgZGUgMi4wLnggYXZhaWVudCBkZXMgcGxhbnRhZ2VzCiAgZHVzIGF1eCB0aHJlYWRzKSwgaWwgZXN0IHBy6WbpcmFibGUgZCdhdm9pciB1biBub3lhdSBy6WNlbnQgdGVsIHF1ZSAyLjQueAogIG91IDIuNi54LgoKSW5mb3JtYXRpb24gRnJlZUJTRCA6CiAgV2luZSBuZSBmb25jdGlvbm5lcmEgZ+lu6XJhbGVtZW50IHBhcyBiaWVuIHBvdXIgbGVzIHZlcnNpb25zIEZyZWVCU0QKICBhbnTpcmlldXJlcyDgIDYuMyBvdSA3LjAgKGNlcnRhaW5zIHBhdGNoZXMgYWRkaXRpb25uZWxzIHNvbnQgZGlzcG9uaWJsZXMgcG91cgogIEZyZWVCU0QgNi4zKS4gVm95ZXogPGh0dHA6Ly93aWtpLmZyZWVic2Qub3JnL1dpbmU+IHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkluZm9ybWF0aW9uIFNvbGFyaXMgOgogIElsIGVzdCBwbHVzIHF1ZSBwcm9iYWJsZSBxdWUgdm91cyBkZXZyZXogY29uc3RydWlyZSBXaW5lIGF2ZWMgbGEgY2hh7m5lCiAgZCdvdXRpbHMgR05VIChnY2MsIGdhcywgZXRjLikuIEF0dGVudGlvbiA6IGluc3RhbGxlciBnYXMgbidhc3N1cmUgcGFzCiAgcXUnaWwgc2VyYSB1dGlsaXPpIHBhciBnY2MuICBSZWNvbXBpbGVyIGdjYyBhcHLocyBsJ2luc3RhbGxhdGlvbiBkZSBnYXMKICBvdSBjcullciB1biBsaWVuIHN5bWJvbGlxdWUgZGUgY2MsIGFzIGV0IGxkIHZlcnMgbGVzIG91dGlscyBHTlUgc2VtYmxlCiAgbuljZXNzYWlyZS4KCkluZm9ybWF0aW9uIE5ldEJTRCA6CiAgQXNzdXJlei12b3VzIGQnYXZvaXIgbGVzIG9wdGlvbnMgVVNFUl9MRFQsIFNZU1ZTSE0sIFNZU1ZTRU0gZXQgU1lTVk1TRwogIGFjdGl26WVzIGRhbnMgdm90cmUgbm95YXUuCgpJbmZvcm1hdGlvbiBNYWMgT1MgWCA6CiAgWGNvZGUgMi40IG91IHVsdOlyaWV1ciBlc3QgbuljZXNzYWlyZSBwb3VyIGNvbXBpbGVyIFdpbmUgc291cyB4ODYuCgoKU3lzdOhtZXMgZGUgZmljaGllcnMgcHJpcyBlbiBjaGFyZ2UgOgogIFdpbmUgZGV2cmFpdCBmb25jdGlvbm5lciBzdXIgbGEgcGx1cGFydCBkZXMgc3lzdOhtZXMgZGUgZmljaGllcnMuIENlcnRhaW5zCiAgcHJvYmzobWVzIGRlIGNvbXBhdGliaWxpdOkgb250IOl06SByYXBwb3J06XMgbG9ycyBkZSBsJ3V0aWxpc2F0aW9uIGRlIGZpY2hpZXJzCiAgYWNj6WTpcyB2aWEgU2FtYmEuIERlIHBsdXMsIE5URlMgbmUgZm91cm5pdCBwYXMgdG91dGVzIGxlcyBmb25jdGlvbm5hbGl06XMgZGUKICBzeXN06G1lIGRlIGZpY2hpZXJzIG7pY2Vzc2FpcmVzIHBvdXIgY2VydGFpbnMgYXBwbGljYXRpb25zLiBMJ3V0aWxpc2F0aW9uIGQndW4KICBzeXN06G1lIGRlIGZpY2hpZXJzIExpbnV4IG5hdGlmIGNvbW1lIGV4dDMgZXN0IHJlY29tbWFuZOllLgoKQ29uZmlndXJhdGlvbiByZXF1aXNlIGRlIGJhc2UgOgogIExlcyBmaWNoaWVycyAiaW5jbHVkZSIgZGUgWDExIChhcHBlbOlzIHhsaWI2Zy1kZXYgc291cyBEZWJpYW4gZXQgWEZyZWU4Ni1kZXZlbAogIHNvdXMgUmVkSGF0KSBkb2l2ZW50IOp0cmUgaW5zdGFsbOlzLgoKICBCaWVuIGVudGVuZHUsIHZvdXMgYXVyZXogYmVzb2luIGR1IHByb2dyYW1tZSAibWFrZSIgKHRy6HMgcHJvYmFibGVtZW50IEdOVQogIG1ha2UpLgoKICBGbGV4IDIuNSBvdSB1bHTpcmlldXIsIGFpbnNpIHF1ZSBiaXNvbiwgc29udCDpZ2FsZW1lbnQgcmVxdWlzLgoKQmlibGlvdGjocXVlcyBvcHRpb25uZWxsZXMgOgogICJDb25maWd1cmUiIGFmZmljaGVyYSBkZXMgbWVzc2FnZXMgcXVhbmQgZGVzIGJpYmxpb3Ro6HF1ZXMgb3B0aW9ubmVsbGVzIG5lCiAgc29udCBwYXMgZOl0ZWN06WVzIHN1ciB2b3RyZSBzeXN06G1lLiBDb25zdWx0ZXoKICBodHRwOi8vd2lraS53aW5laHEub3JnL1JlY29tbWVuZGVkX1BhY2thZ2VzIChlbiBhbmdsYWlzKSBwb3VyIGRlcyBpbmRpY2F0aW9ucwogIHN1ciBsZXMgcGFxdWV0cyBsb2dpY2llbHMgcXVlIHZvdXMgZGV2cmlleiBpbnN0YWxsZXIuCgogIFN1ciBsZXMgcGxhdGVzLWZvcm1lcyA2NCBiaXRzLCB2b3VzIGRldmV6IGluc3RhbGxlciBsZXMgdmVyc2lvbnMgMzIgYml0cyBkZQogIGNlcyBiaWJsaW90aOhxdWVzLiBWb3lleiBodHRwOi8vd2lraS53aW5laHEub3JnL1dpbmVPbjY0Yml0IChlbiBhbmdsYWlzKSBwb3VyCiAgbGVzIGTpdGFpbHMuCgo0LiBDT01QSUxBVElPTgoKQXUgY2FzIG/5IHZvdXMgY2hvaXNpcmlleiBkZSBuZSBwYXMgdXRpbGlzZXIgd2luZWluc3RhbGwsIGV46WN1dGV6IGxlcyBjb21tYW5kZXMKc3VpdmFudGVzIHBvdXIgY29uc3RydWlyZSBXaW5lIDoKCi4vY29uZmlndXJlCm1ha2UgZGVwZW5kCm1ha2UKCkNlbGEgdmEgY29uc3RydWlyZSBsZSBwcm9ncmFtbWUgIndpbmUiIGV0IGRlIG5vbWJyZXV4IGJpbmFpcmVzL2JpYmxpb3Ro6HF1ZXMgZGUKc3VwcG9ydC4KTGUgcHJvZ3JhbW1lICJ3aW5lIiBjaGFyZ2VyYSBldCBleOljdXRlcmEgbGVzIGV46WN1dGFibGVzIFdpbmRvd3MuCkxhIGJpYmxpb3Ro6HF1ZSAibGlid2luZSIgKCJXaW5lbGliIikgcGV1dCDqdHJlIHV0aWxpc+llIHBvdXIgY29tcGlsZXIgZXQgbGllcgpkdSBjb2RlIHNvdXJjZSBXaW5kb3dzIHNvdXMgVW5peC4KClBvdXIgdm9pciBsZXMgb3B0aW9ucyBkZSBjb21waWxhdGlvbiwgdGFwZXogLi9jb25maWd1cmUgLS1oZWxwLgoKUG91ciBtZXR0cmUg4CBqb3VyIHZlcnMgdW5lIG5vdXZlbGxlIHZlcnNpb24gZW4gdXRpbGlzYW50IGxlcyBmaWNoaWVycyBkZSBtaXNlIOAKbml2ZWF1LCB0b3V0IGQnYWJvcmQgYWxsZXIgZGFucyBsZSBy6XBlcnRvaXJlIGRlIHBsdXMgaGF1dCBuaXZlYXUgZGUgbGEgdmVyc2lvbgphY3R1ZWxsZSAoY2VsdWkgcXVpIGNvbnRpZW50IGNlIGZpY2hpZXIgUkVBRE1FLmZyKS4gRW5zdWl0ZSBmYWlyZSB1biAibWFrZQpjbGVhbiIsIGV0IG1ldHRyZSDgIGpvdXIgbGEgdmVyc2lvbiBhdmVjIDoKCiAgICBidW56aXAyIC1jIGZpY2hpZXItcGF0Y2ggfCBwYXRjaCAtcDEKCm/5ICJmaWNoaWVyLXBhdGNoIiBlc3QgbGUgbm9tIGR1IGZpY2hpZXIgZGUgbWlzZSDgIG5pdmVhdSAocXVlbHF1ZSBjaG9zZSBkdQpnZW5yZSB3aW5lLTEuMC54LmRpZmYuYnoyKS4gVm91cyBwb3V2ZXogZW5zdWl0ZSBy6WV46WN1dGVyICIuL2NvbmZpZ3VyZSIsIGV0CnRhcGVyIGVuc3VpdGUgIm1ha2UgZGVwZW5kICYmIG1ha2UiLgoKNS4gSU5TVEFMTEFUSU9OCgpVbmUgZm9pcyBXaW5lIGEg6XTpIGNvbnN0cnVpdCBjb3JyZWN0ZW1lbnQsIHZvdXMgcG91dmV6IHRhcGV6ICJtYWtlIGluc3RhbGwiIDoKY2VsYSBpbnN0YWxsZXJhIGwnZXjpY3V0YWJsZSB3aW5lLCBsZXMgcGFnZXMgbWFuIFdpbmUgZXQgcXVlbHF1ZXMgYXV0cmVzCmZpY2hpZXJzIG7pY2Vzc2FpcmVzLgoKTidvdWJsaWV6IHBhcyBkZSBk6XNpbnN0YWxsZXIgdG91dGVzIGxlcyBpbnN0YWxsYXRpb25zIHBy6WPpZGVudGVzIGRlIHdpbmUuCkVzc2F5ZXogc29pdCAiZHBrZyAtciB3aW5lIiwgInJwbSAtZSB3aW5lIiBvdSAibWFrZSB1bmluc3RhbGwiIGF2YW50CmQnaW5zdGFsbGVyIHVuZSBub3V2ZWxsZSB2ZXJzaW9uLgoKVW5lIGZvaXMgbCdpbnN0YWxsYXRpb24gdGVybWlu6WUsIHZvdXMgcG91dmV6IG5hdmlndWVyIGRhbnMgbGEgc2VjdGlvbiBTdXBwb3J0IOAKaHR0cDovL3d3dy53aW5laHEub3JnLyBwb3VyIG9idGVuaXIgZGVzIGFzdHVjZXMgZGUgY29uZmlndXJhdGlvbi4KCgo2LiBFWMlDVVRFUiBERVMgUFJPR1JBTU1FUwoKTG9yc3F1ZSBsJ29uIGludm9xdWUgV2luZSwgdm91cyBwb3V2ZXogc3DpY2lmaWVyIGxlIGNoZW1pbiBlbnRpZXIgdmVycwpsJ2V46WN1dGFibGUgb3Ugc2V1bGVtZW50IGxlIG5vbSBkZSBmaWNoaWVyLgoKUG91ciBleOljdXRlciBsZSBibG9jLW5vdGVzIHBhciBleGVtcGxlIDoKCgl3aW5lIG5vdGVwYWQJCSAgICAgICAoZW4gdXRpbGlzYW50IGxlIGNoZW1pbiBkJ2FjY+hzIHNw6WNpZmnpCgl3aW5lIG5vdGVwYWQuZXhlCSAgICAgICAgZGFucyBsZSBmaWNoaWVyICJjb25maWciIHBvdXIgbG9jYWxpc2VyCgkJCQkgICAgICAgIGxlIGZpY2hpZXIpCgoJd2luZSBjOlxcd2luZG93c1xcbm90ZXBhZC5leGUgIChlbiB1dGlsaXNhbnQgbGEgc3ludGF4ZSBkZSBmaWNoaWVycyBET1MpCgoJd2luZSB+Ly53aW5lL2RyaXZlX2Mvd2luZG93cy9ub3RlcGFkLmV4ZSAgKGVuIHV0aWxpc2FudCBsYSBzeW50YXhlIFVuaXgpCgoJd2luZSBub3RlcGFkLmV4ZSAvcGFyYW3odHJlMSAtcGFyYW3odHJlMiBwYXJhbeh0cmUzCgkJCShlbiBhcHBlbGFudCBsZSBwcm9ncmFtbWUgYXZlYyBkZXMgcGFyYW3odHJlcykKCldpbmUgbidlc3QgcGFzIGVuY29yZSB0ZXJtaW7pIDsgYWluc2kgcXVlbHF1ZXMgcHJvZ3JhbW1lcyBwZXV2ZW50IHBsYW50ZXIuIFF1YW5kCmNlbGEgc2UgcHJvZHVpdCwgdW4gZOlib2d1ZXVyIGVzdCBk6W1hcnLpIOAgbCdlbmRyb2l0IGR1IHBsYW50YWdlIHBvdXIgcXVlIHZvdXMKcHVpc3NpZXogZXNzYXllciBkZSBy6XNvdWRyZSBsZSBwcm9ibOhtZS4gIFBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucyBzdXIgbGEKbWFuaehyZSBkZSBmYWlyZSwgdmV1aWxsZXogbGlyZSBsYSBzZWN0aW9uICJk6WJvZ3VhZ2UiIGR1IEd1aWRlIGR1IGTpdmVsb3BwZXVyCldpbmUgKFdpbmUgRGV2ZWxvcGVyJ3MgR3VpZGUpLgoKCjcuIElORk9STUFUSU9OUyBDT01QTMlNRU5UQUlSRVMKCldXVwlCZWF1Y291cCBkJ2luZm9ybWF0aW9ucyDgIHByb3BvcyBkZSBXaW5lIHNvbnQgZGlzcG9uaWJsZXMgc3VyIFdpbmVIUSDgCglodHRwOi8vd3d3LndpbmVocS5vcmcvIDogZGl2ZXJzIGd1aWRlcyBXaW5lLCBiYXNlIGRlIGRvbm7pZXMKCWQnYXBwbGljYXRpb25zLCBzdWl2aSBkZSBib2d1ZXMuIEMnZXN0IHByb2JhYmxlbWVudCBsZSBtZWlsbGV1ciBwb2ludAoJZGUgZOlwYXJ0LgoKRkFRCUxhIEZvaXJlIEF1eCBRdWVzdGlvbnMgZGUgV2luZSBzZSB0cm91dmUgc3VyIGh0dHA6Ly93d3cud2luZWhxLm9yZy9GQVEKClVzZW5ldAlWb3VzIHBvdXZleiBwYXJsZXIgZGVzIHByb2Js6G1lcyBlbiByZWxhdGlvbiBhdmVjIFdpbmUKCW91IG9idGVuaXIgZGUgbCdhaWRlIHN1ciBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUuCgpCb2d1ZXMJUmFwcG9ydGV6IGxlcyBib2d1ZXMg4CBXaW5lIEJ1Z3ppbGxhIOAgaHR0cDovL2J1Z3Mud2luZWhxLm9yZwoJU1ZQIGNoZXJjaGV6IHRvdXQgZCdhYm9yZCBkYW5zIGxhIGJhc2UgZGUgZG9ubullcyBkZSBidWd6aWxsYQoJcG91ciBjb250cvRsZXIgcXVlIGxlIHByb2Js6G1lIG4nZXN0IHBhcyBk6WrgIGTpY291dmVydCBhdmFudAoJZGUgc291bWV0dHJlIHVuIHJhcHBvcnQgZGUgYm9ndWUuIFZvdXMgcG91dmV6IOlnYWxlbWVudCByYXBwb3J0ZXIKCWRlcyByYXBwb3J0cyBkZSBib2d1ZSDgIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZS4KCVNWUCBsaXNleiBsZSBmaWNoaWVyIGRvY3VtZW50YXRpb24vYnVncy5zZ21sIHBvdXIgY29ubmHudHJlIGxlcwoJaW5mb3JtYXRpb25zIG7pY2Vzc2FpcmVzLgoKSVJDCUwnYWlkZSBlbiBsaWduZSBlc3QgZGlzcG9uaWJsZSBzdXIgbGUgY2FuYWwgI1dpbmVIUSBzdXIKCWlyYy5mcmVlbm9kZS5uZXQuCgpHSVQJTCdhcmJyZSBkZSBk6XZlbG9wcGVtZW50IGFjdHVlbCBkZSBXaW5lIGVzdCBkaXNwb25pYmxlIGF1IHRyYXZlcnMgZGUKCUdJVC4gVm95ZXogaHR0cDovL3d3dy53aW5laHEub3JnL3NpdGUvZ2l0IHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkxpc3RlcyBkZSBkaWZmdXNpb24KCUlsIGV4aXN0ZSBkZSBtdWx0aXBsZXMgbGlzdGVzIGRlIGRpZmZ1c2lvbiBwb3VyIGxlcyBk6XZlbG9wcGV1cnMgV2luZSA7Cgl2b3lleiBodHRwOi8vd3d3LndpbmVocS5vcmcvZm9ydW1zIHBvdXIgZGUgcGx1cyBhbXBsZXMgaW5mb3JtYXRpb25zLgoKV2lraQlMZSB3aWtpIFdpbmUgZXN0IHNpdHXpIHN1ciBodHRwOi8vd2lraS53aW5laHEub3JnCgoKU2kgdm91cyBham91dGV6IHF1ZWxxdWUgY2hvc2Ugb3UgY29ycmlnZXogdW4gYm9ndWUsIGVudm95ZXogdW4gY29ycmVjdGlmIChkYW5zIGxlCmZvcm1hdCAnZGlmZiAtdScgKSDgIGxhIGxpc3RlIGRlIGRpZmZ1c2lvbiB3aW5lLXBhdGNoZXNAd2luZWhxLm9yZyBwb3VyIHF1J2lsCnNvaXQgaW5jbHVzIGRhbnMgbGEgcHJvY2hhaW5lIHZlcnNpb24uCgotLQpBbGV4YW5kcmUgSnVsbGlhcmQKanVsbGlhcmRAd2luZWhxLm9yZwo=