Mw0NCn2EhGMSDwAA4wAAAAAAAAAAAAAAAAMAAABAAAAAc1YAAABkAGQBbABaAGQAZAJsAW0CWgJtA1oDbQRaBAEAZABkA2wFbQZaBgEAZABkBGwHbQhaCG0JWgkBAGQAZAVsCm0LWgsBAEcAZAZkB4QAZAeDAloMZAFTACkI6QAAAABOKQPaBExpc3TaCE9wdGlvbmFs2gVUdXBsZSkB2gNUYWcpAtoNZ2V0X3N1cHBvcnRlZNoVdmVyc2lvbl9pbmZvX3RvX25vZG90KQHaFm5vcm1hbGl6ZV92ZXJzaW9uX2luZm9jAAAAAAAAAAAAAAAABwAAAEAAAABzegAAAGUAWgFkAFoCZAFaA2QCZANkBGQFZAZkB2QIZwdaBGQTZQVlBmUHGQAZAGUFZQhlCWQKZgIZABkAZQVlBmUHGQAZAGUFZQcZAGQJZAucBWQMZA2EBVoKZQdkDpwBZA9kEIQEWgtlBmUMGQBkDpwBZBFkEoQEWg1kCVMAKRTaDFRhcmdldFB5dGhvbnp4CiAgICBFbmNhcHN1bGF0ZXMgdGhlIHByb3BlcnRpZXMgb2YgYSBQeXRob24gaW50ZXJwcmV0ZXIgb25lIGlzIHRhcmdldGluZwogICAgZm9yIGEgcGFja2FnZSBpbnN0YWxsLCBkb3dubG9hZCwgZXRjLgogICAg2hZfZ2l2ZW5fcHlfdmVyc2lvbl9pbmZv2gRhYmlz2g5pbXBsZW1lbnRhdGlvbtoJcGxhdGZvcm1z2gpweV92ZXJzaW9u2g9weV92ZXJzaW9uX2luZm/aC192YWxpZF90YWdzTi4pBXINAAAAcg8AAAByCwAAAHIMAAAA2gZyZXR1cm5jBQAAAAAAAAAGAAAABgAAAEMAAABzZgAAAHwCfABfAHwCZAFrCHIedAFqAmQBZAKFAhkAfQJuCHQDfAKDAX0CZANqBHQFdAZ8AmQBZASFAhkAgwKDAX0FfAN8AF8HfAR8AF8IfAF8AF8JfAV8AF8KfAJ8AF8LZAF8AF8MZAFTACkFYTwDAAAKICAgICAgICA6cGFyYW0gcGxhdGZvcm1zOiBBIGxpc3Qgb2Ygc3RyaW5ncyBvciBOb25lLiBJZiBOb25lLCBzZWFyY2hlcyBmb3IKICAgICAgICAgICAgcGFja2FnZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHN5c3RlbS4gT3RoZXJ3aXNlLCB3aWxsCiAgICAgICAgICAgIGZpbmQgcGFja2FnZXMgdGhhdCBjYW4gYmUgYnVpbHQgb24gdGhlIHBsYXRmb3JtcyBwYXNzZWQgaW4uIFRoZXNlCiAgICAgICAgICAgIHBhY2thZ2VzIHdpbGwgb25seSBiZSBkb3dubG9hZGVkIGZvciBkaXN0cmlidXRpb246IHRoZXkgd2lsbAogICAgICAgICAgICBub3QgYmUgYnVpbHQgbG9jYWxseS4KICAgICAgICA6cGFyYW0gcHlfdmVyc2lvbl9pbmZvOiBBbiBvcHRpb25hbCB0dXBsZSBvZiBpbnRzIHJlcHJlc2VudGluZyB0aGUKICAgICAgICAgICAgUHl0aG9uIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdXNlIChlLmcuIGBzeXMudmVyc2lvbl9pbmZvWzozXWApLgogICAgICAgICAgICBUaGlzIGNhbiBoYXZlIGxlbmd0aCAxLCAyLCBvciAzIHdoZW4gcHJvdmlkZWQuCiAgICAgICAgOnBhcmFtIGFiaXM6IEEgbGlzdCBvZiBzdHJpbmdzIG9yIE5vbmUuIFRoaXMgaXMgcGFzc2VkIHRvCiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlfdGFncy5weSdzIGdldF9zdXBwb3J0ZWQoKSBmdW5jdGlvbiBhcyBpcy4KICAgICAgICA6cGFyYW0gaW1wbGVtZW50YXRpb246IEEgc3RyaW5nIG9yIE5vbmUuIFRoaXMgaXMgcGFzc2VkIHRvCiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlfdGFncy5weSdzIGdldF9zdXBwb3J0ZWQoKSBmdW5jdGlvbiBhcyBpcy4KICAgICAgICBO6QMAAADaAS7pAgAAACkNcgoAAADaA3N5c9oMdmVyc2lvbl9pbmZvcggAAADaBGpvaW7aA21hcNoDc3RycgsAAAByDAAAAHINAAAAcg4AAAByDwAAAHIQAAAAKQbaBHNlbGZyDQAAAHIPAAAAcgsAAAByDAAAAHIOAAAAqQByGwAAAPqTL2hvbWUvdWV0bGhyL0RvY3VtZW50cy9TZXJtb1Bsb3RfYmFja2VuZC9kcmFmdF9TUkFNX2JsYWNr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