Mw0NCgxae2MSDwAA4wAAAAAAAAAAAAAAAAMAAABAAAAAc1YAAABkAGQBbABaAGQAZAJsAW0CWgJtA1oDbQRaBAEAZABkA2wFbQZaBgEAZABkBGwHbQhaCG0JWgkBAGQAZAVsCm0LWgsBAEcAZAZkB4QAZAeDAloMZAFTACkI6QAAAABOKQPaBExpc3TaCE9wdGlvbmFs2gVUdXBsZSkB2gNUYWcpAtoNZ2V0X3N1cHBvcnRlZNoVdmVyc2lvbl9pbmZvX3RvX25vZG90KQHaFm5vcm1hbGl6ZV92ZXJzaW9uX2luZm9jAAAAAAAAAAAAAAAABwAAAEAAAABzegAAAGUAWgFkAFoCZAFaA2QCZANkBGQFZAZkB2QIZwdaBGQTZQVlBmUHGQAZAGUFZQhlCWQKZgIZABkAZQVlBmUHGQAZAGUFZQcZAGQJZAucBWQMZA2EBVoKZQdkDpwBZA9kEIQEWgtlBmUMGQBkDpwBZBFkEoQEWg1kCVMAKRTaDFRhcmdldFB5dGhvbnp4CiAgICBFbmNhcHN1bGF0ZXMgdGhlIHByb3BlcnRpZXMgb2YgYSBQeXRob24gaW50ZXJwcmV0ZXIgb25lIGlzIHRhcmdldGluZwogICAgZm9yIGEgcGFja2FnZSBpbnN0YWxsLCBkb3dubG9hZCwgZXRjLgogICAg2hZfZ2l2ZW5fcHlfdmVyc2lvbl9pbmZv2gRhYmlz2g5pbXBsZW1lbnRhdGlvbtoJcGxhdGZvcm1z2gpweV92ZXJzaW9u2g9weV92ZXJzaW9uX2luZm/aC192YWxpZF90YWdzTi4pBXINAAAAcg8AAAByCwAAAHIMAAAA2gZyZXR1cm5jBQAAAAAAAAAGAAAABgAAAEMAAABzZgAAAHwCfABfAHwCZAFrCHIedAFqAmQBZAKFAhkAfQJuCHQDfAKDAX0CZANqBHQFdAZ8AmQBZASFAhkAgwKDAX0FfAN8AF8HfAR8AF8IfAF8AF8JfAV8AF8KfAJ8AF8LZAF8AF8MZAFTACkFYTwDAAAKICAgICAgICA6cGFyYW0gcGxhdGZvcm1zOiBBIGxpc3Qgb2Ygc3RyaW5ncyBvciBOb25lLiBJZiBOb25lLCBzZWFyY2hlcyBmb3IKICAgICAgICAgICAgcGFja2FnZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHN5c3RlbS4gT3RoZXJ3aXNlLCB3aWxsCiAgICAgICAgICAgIGZpbmQgcGFja2FnZXMgdGhhdCBjYW4gYmUgYnVpbHQgb24gdGhlIHBsYXRmb3JtcyBwYXNzZWQgaW4uIFRoZXNlCiAgICAgICAgICAgIHBhY2thZ2VzIHdpbGwgb25seSBiZSBkb3dubG9hZGVkIGZvciBkaXN0cmlidXRpb246IHRoZXkgd2lsbAogICAgICAgICAgICBub3QgYmUgYnVpbHQgbG9jYWxseS4KICAgICAgICA6cGFyYW0gcHlfdmVyc2lvbl9pbmZvOiBBbiBvcHRpb25hbCB0dXBsZSBvZiBpbnRzIHJlcHJlc2VudGluZyB0aGUKICAgICAgICAgICAgUHl0aG9uIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdXNlIChlLmcuIGBzeXMudmVyc2lvbl9pbmZvWzozXWApLgogICAgICAgICAgICBUaGlzIGNhbiBoYXZlIGxlbmd0aCAxLCAyLCBvciAzIHdoZW4gcHJvdmlkZWQuCiAgICAgICAgOnBhcmFtIGFiaXM6IEEgbGlzdCBvZiBzdHJpbmdzIG9yIE5vbmUuIFRoaXMgaXMgcGFzc2VkIHRvCiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlfdGFncy5weSdzIGdldF9zdXBwb3J0ZWQoKSBmdW5jdGlvbiBhcyBpcy4KICAgICAgICA6cGFyYW0gaW1wbGVtZW50YXRpb246IEEgc3RyaW5nIG9yIE5vbmUuIFRoaXMgaXMgcGFzc2VkIHRvCiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlfdGFncy5weSdzIGdldF9zdXBwb3J0ZWQoKSBmdW5jdGlvbiBhcyBpcy4KICAgICAgICBO6QMAAADaAS7pAgAAACkNcgoAAADaA3N5c9oMdmVyc2lvbl9pbmZvcggAAADaBGpvaW7aA21hcNoDc3RycgsAAAByDAAAAHINAAAAcg4AAAByDwAAAHIQAAAAKQbaBHNlbGZyDQAAAHIPAAAAcgsAAAByDAAAAHIOAAAAqQByGwAAAPpBL3RtcC9waXAtYnVpbGQtMWZpY29qNHMvcGlwL3BpcC9faW50ZXJuYWwvbW9kZWxzL3RhcmdldF9w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