A/MNCmP5IVRjAAAAAAAAAAAFAAAAQAAAAHN+AAAAZAAAWgAAZAEAZAIAbAEAWgEAZAEAZAIAbAIAWgIAZAMAZwEAWgMAZAMAZAYAZAQAhAAAgwAAWVoEAGQFAIQAAFoFAHkQAGQBAGQCAGwGAFoGAFduEQAEZQcAawoAcmYAAQEBbhQAWGUGAGoIAGUEAIMAAGoJAIMBAAFkAgBTKAcAAABzQwYAAFdvcmQgY29tcGxldGlvbiBmb3IgR05VIHJlYWRsaW5lLgoKVGhlIGNvbXBsZXRlciBjb21wbGV0ZXMga2V5d29yZHMsIGJ1aWx0LWlucyBhbmQgZ2xvYmFscyBpbiBhIHNlbGVjdGFibGUKbmFtZXNwYWNlICh3aGljaCBkZWZhdWx0cyB0byBfX21haW5fXyk7IHdoZW4gY29tcGxldGluZyBOQU1FLk5BTUUuLi4sIGl0CmV2YWx1YXRlcyAoISkgdGhlIGV4cHJlc3Npb24gdXAgdG8gdGhlIGxhc3QgZG90IGFuZCBjb21wbGV0ZXMgaXRzIGF0dHJpYnV0ZXMuCgpJdCdzIHZlcnkgY29vbCB0byBkbyAiaW1wb3J0IHN5cyIgdHlwZSAic3lzLiIsIGhpdCB0aGUgY29tcGxldGlvbiBrZXkgKHR3aWNlKSwKYW5kIHNlZSB0aGUgbGlzdCBvZiBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBzeXMgbW9kdWxlIQoKVGlwOiB0byB1c2UgdGhlIHRhYiBrZXkgYXMgdGhlIGNvbXBsZXRpb24ga2V5LCBjYWxsCgogICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoInRhYjogY29tcGxldGUiKQoKTm90ZXM6CgotIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSBjb21wbGV0ZXIgZnVuY3Rpb24gYXJlICppZ25vcmVkKiAoYW5kIGdlbmVyYWxseSBjYXVzZQogIHRoZSBjb21wbGV0aW9uIHRvIGZhaWwpLiAgVGhpcyBpcyBhIGZlYXR1cmUgLS0gc2luY2UgcmVhZGxpbmUgc2V0cyB0aGUgdHR5CiAgZGV2aWNlIGluIHJhdyAob3IgY2JyZWFrKSBtb2RlLCBwcmludGluZyBhIHRyYWNlYmFjayB3b3VsZG4ndCB3b3JrIHdlbGwKICB3aXRob3V0IHNvbWUgY29tcGxpY2F0ZWQgaG9vcGxhIHRvIHNhdmUsIHJlc2V0IGFuZCByZXN0b3JlIHRoZSB0dHkgc3RhdGUuCgotIFRoZSBldmFsdWF0aW9uIG9mIHRoZSBOQU1FLk5BTUUuLi4gZm9ybSBtYXkgY2F1c2UgYXJiaXRyYXJ5IGFwcGxpY2F0aW9uCiAgZGVmaW5lZCBjb2RlIHRvIGJlIGV4ZWN1dGVkIGlmIGFuIG9iamVjdCB3aXRoIGEgX19nZXRhdHRyX18gaG9vayBpcyBmb3VuZC4KICBTaW5jZSBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIChvciB0aGUgdXNlcikgdG8gZW5hYmxlIHRoaXMKICBmZWF0dXJlLCBJIGNvbnNpZGVyIHRoaXMgYW4gYWNjZXB0YWJsZSByaXNrLiAgTW9yZSBjb21wbGljYXRlZCBleHByZXNzaW9ucwogIChlLmcuIGZ1bmN0aW9uIGNhbGxzIG9yIGluZGV4aW5nIG9wZXJhdGlvbnMpIGFyZSAqbm90KiBldmFsdWF0ZWQuCgotIEdOVSByZWFkbGluZSBpcyBhbHNvIHVzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbnB1dCgpIGFuZApyYXdfaW5wdXQoKSwgYW5kIHRodXMgdGhlc2UgYWxzbyBiZW5lZml0L3N1ZmZlciBmcm9tIHRoZSBjb21wbGV0ZXIKZmVhdHVyZXMuICBDbGVhcmx5IGFuIGludGVyYWN0aXZlIGFwcGxpY2F0aW9uIGNhbiBiZW5lZml0IGJ5CnNwZWNpZnlpbmcgaXRzIG93biBjb21wbGV0ZXIgZnVuY3Rpb24gYW5kIHVzaW5nIHJhd19pbnB1dCgpIGZvciBhbGwKaXRzIGlucHV0LgoKLSBXaGVuIHRoZSBvcmlnaW5hbCBzdGRpbiBpcyBub3QgYSB0dHkgZGV2aWNlLCBHTlUgcmVhZGxpbmUgaXMgbmV2ZXIKICB1c2VkLCBhbmQgdGhpcyBtb2R1bGUgKGFuZCB0aGUgcmVhZGxpbmUgbW9kdWxlKSBhcmUgc2lsZW50bHkgaW5hY3RpdmUuCgpp/////050CQAAAENvbXBsZXRlcmMAAAAAAAAAAAIAAABCAAAAczgAAABlAABaAQBkBQBkAACEAQBaAwBkAQCEAABaBABkAgCEAABaBQBkAwCEAABaBgBkBACEAABaBwBSUygGAAAAYwIAAAACAAAABAAAAEMAAABzUAAAAHwBAHIiAHQAAHwBAHQBAIMCAAxyIgB0AgBkAQCCAgBuAAB8AQBkBABrCAByOgBkAgB8AABfBABuEgBkAwB8AABfBAB8AQB8AABfBQBkBABTKAUAAABz4QEAAENyZWF0ZSBhIG5ldyBjb21wbGV0ZXIgZm9yIHRoZSBjb21tYW5kIGxpbmUuCgogICAgICAgIENvbXBsZXRlcihbbmFtZXNwYWNlXSkgLT4gY29tcGxldGVyIGluc3RhbmNlLgoKICAgICAgICBJZiB1bnNwZWNpZmllZCwgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIHdoZXJlIGNvbXBsZXRpb25zIGFyZSBwZXJmb3JtZWQKICAgICAgICBpcyBfX21haW5fXyAodGVjaG5pY2FsbHksIF9fbWFpbl9fLl9fZGljdF9fKS4gTmFtZXNwYWNlcyBzaG91bGQgYmUKICAgICAgICBnaXZlbiBhcyBkaWN0aW9uYXJpZXMuCgogICAgICAgIENvbXBsZXRlciBpbnN0YW5jZXMgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGNvbXBsZXRpb24gbWVjaGFuaXNtIG9mCiAgICAgICAgcmVhZGxpbmUgdmlhIHRoZSBzZXRfY29tcGxldGVyKCkgY2FsbDoKCiAgICAgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcihDb21wbGV0ZXIobXlfbmFtZXNwYWNlKS5jb21wbGV0ZSkKICAgICAgICBzHgAAAG5hbWVzcGFjZSBtdXN0IGJlIGEgZGljdGlvbmFyeWkBAAAAaQAAAABOKAYAAAB0CgAAAGlzaW5zdGFuY2V0BAAAAGRpY3R0CQAAAFR5cGVFcnJvcnQEAAAATm9uZXQLAAAAdXNlX21haW5fbnN0CQAAAG5hbWVzcGFjZSgCAAAAdAQAAABzZWxmUgYAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEu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Z3JvdXB0BAAAAGV2YWxSBgAAAHQJAAAARXhjZXB0aW9udAMAAABkaXJ0BgAAAHJlbW92ZVIVAAAAUh0AAAB0BgAAAGV4dGVuZHQRAAAAZ2V0X2NsYXNzX21lbWJlcnNSIgAAAFIbAAAAdAcAAABnZXRhdHRyUhgAAAAoDAAAAFIHAAAAUhAAAABSIwAAAHQBAAAAbXQEAAAAZXhwcnQEAAAAYXR0cnQKAAAAdGhpc29iamVjdHQFAAAAd29yZHNSDQAAAFIgAAAAUhcAAABSFgAAACgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcmxjb21wbGV0ZXIucHlSDAAAAHMAAABzLgAAAAAMDAESAQYBBAEYAQMBFgENAQUDDAEMARACDwENARkBBgEMAQ0BHwEPARwBFAFOKAgAAAB0CAAAAF9fbmFtZV9fdAoAAABfX21vZHVsZV9fUgQAAABSCAAAAFISAAAAUhgAAABSDgAAAFIMAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3JsY29tcGxldGVyLnB5UgAAAAArAAAAcwoAAAAGAQwbCRQJBQkTYwEAAAADAAAABAAAAEMAAABzRgAAAHQAAHwAAIMBAH0BAHQBAHwAAGQBAIMCAHJCAHgkAHwAAGoCAERdFgB9AgB8AQB0AwB8AgCDAQAXfQEAcSUAV24AAHwBAFMoAgAAAE50CQAAAF9fYmFzZXNfXygEAAAAUigAAABSFQAAAFI0AAAAUisAAAAoAwAAAHQFAAAAa2xhc3N0AwAAAHJldHQEAAAAYmFzZSgAAAAAKAAAAABzdgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcmxjb21wbGV0ZXIucHlSKwAAAJoAAABzCgAAAAABDAEPARABFwEoAAAAACgKAAAAdAcAAABfX2RvY19fUh4AAABSCgAAAHQHAAAAX19hbGxfX1IAAAAAUisAAAB0CAAAAHJlYWRsaW5ldAsAAABJbXBvcnRFcnJvcnQNAAAAc2V0X2NvbXBsZXRlclISAAAAKAAAAAAoAAAAACgAAAAAc3YAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3JsY29tcGxldGVyLnB5dAgAAAA8bW9kdWxlPiQAAABzFAAAAAYCDAEMAgkCE28JBwMBEAENAQQC