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SABk4wCEAABaSQBk5ACEAABaSgBlSQCDAAABZUoAgwAAAWVLAIMAAAFuAABkAwBTKOUAAABznQ0AAApUdXJ0bGUgZ3JhcGhpY3MgaXMgYSBwb3B1bGFyIHdheSBmb3IgaW50cm9kdWNpbmcgcHJvZ3JhbW1pbmcgdG8Ka2lkcy4gSXQgd2FzIHBhcnQgb2YgdGhlIG9yaWdpbmFsIExvZ28gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGV2ZWxvcGVkCmJ5IFdhbGx5IEZldXJ6aWcgYW5kIFNleW1vdXIgUGFwZXJ0IGluIDE5NjYuCgpJbWFnaW5lIGEgcm9ib3RpYyB0dXJ0bGUgc3RhcnRpbmcgYXQgKDAsIDApIGluIHRoZSB4LXkgcGxhbmUuIEFmdGVyIGFuIGBgaW1wb3J0IHR1cnRsZWBgLCBnaXZlIGl0CnRoZSBjb21tYW5kIHR1cnRsZS5mb3J3YXJkKDE1KSwgYW5kIGl0IG1vdmVzIChvbi1zY3JlZW4hKSAxNSBwaXhlbHMgaW4KdGhlIGRpcmVjdGlvbiBpdCBpcyBmYWNpbmcsIGRyYXdpbmcgYSBsaW5lIGFzIGl0IG1vdmVzLiBHaXZlIGl0IHRoZQpjb21tYW5kIHR1cnRsZS5yaWdodCgyNSksIGFuZCBpdCByb3RhdGVzIGluLXBsYWNlIDI1IGRlZ3JlZXMgY2xvY2t3aXNlLgoKQnkgY29tYmluaW5nIHRvZ2V0aGVyIHRoZXNlIGFuZCBzaW1pbGFyIGNvbW1hbmRzLCBpbnRyaWNhdGUgc2hhcGVzIGFuZApwaWN0dXJlcyBjYW4gZWFzaWx5IGJlIGRyYXduLgoKLS0tLS0gdHVydGxlLnB5CgpUaGlzIG1vZHVsZSBpcyBhbiBleHRlbmRlZCByZWltcGxlbWVudGF0aW9uIG9mIHR1cnRsZS5weSBmcm9tIHRoZQpQeXRob24gc3RhbmRhcmQgZGlzdHJpYnV0aW9uIHVwIHRvIFB5dGhvbiAyLjUuIChTZWU6IGh0dHA6Ly93d3cucHl0aG9uLm9yZykKCkl0IHRyaWVzIHRvIGtlZXAgdGhlIG1lcml0cyBvZiB0dXJ0bGUucHkgYW5kIHRvIGJlIChuZWFybHkpIDEwMCUKY29tcGF0aWJsZSB3aXRoIGl0LiBUaGlzIG1lYW5zIGluIHRoZSBmaXJzdCBwbGFjZSB0byBlbmFibGUgdGhlCmxlYXJuaW5nIHByb2dyYW1tZXIgdG8gdXNlIGFsbCB0aGUgY29tbWFuZHMsIGNsYXNzZXMgYW5kIG1ldGhvZHMKaW50ZXJhY3RpdmVseSB3aGVuIHVzaW5nIHRoZSBtb2R1bGUgZnJvbSB3aXRoaW4gSURMRSBydW4gd2l0aAp0aGUgLW4gc3dpdGNoLgoKUm91Z2hseSBpdCBoYXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhZGRlZDoKCi0gQmV0dGVyIGFuaW1hdGlvbiBvZiB0aGUgdHVydGxlIG1vdmVtZW50cywgZXNwZWNpYWxseSBvZiB0dXJuaW5nIHRoZQogIHR1cnRsZS4gU28gdGhlIHR1cnRsZXMgY2FuIG1vcmUgZWFzaWx5IGJlIHVzZWQgYXMgYSB2aXN1YWwgZmVlZGJhY2sKICBpbnN0cnVtZW50IGJ5IHRoZSAoYmVnaW5uaW5nKSBwcm9ncmFtbWVyLgoKLSBEaWZmZXJlbnQgdHVydGxlIHNoYXBlcywgZ2lmLWltYWdlcyBhcyB0dXJ0bGUgc2hhcGVzLCB1c2VyIGRlZmluZWQKICBhbmQgdXNlciBjb250cm9sbGFibGUgdHVydGxlIHNoYXBlcywgYW1vbmcgdGhlbSBjb21wb3VuZAogIChtdWx0aWNvbG9yZWQpIHNoYXBlcy4gVHVydGxlIHNoYXBlcyBjYW4gYmUgc3RyZXRjaGVkIGFuZCB0aWx0ZWQsIHdoaWNoCiAgbWFrZXMgdHVydGxlcyB2ZXJ5IHZlcnNhdGlsZSBnZW9tZXRyaWNhbCBvYmplY3RzLgoKLSBGaW5lIGNvbnRyb2wgb3ZlciB0dXJ0bGUgbW92ZW1lbnQgYW5kIHNjcmVlbiB1cGRhdGVzIHZpYSBkZWxheSgpLAogIGFuZCBlbmhhbmNlZCB0cmFjZXIoKSBhbmQgc3BlZWQoKSBtZXRob2RzLgoKLSBBbGlhc2VzIGZvciB0aGUgbW9zdCBjb21tb25seSB1c2VkIGNvbW1hbmRzLCBsaWtlIGZkIGZvciBmb3J3YXJkIGV0Yy4sCiAgZm9sbG93aW5nIHRoZSBlYXJseSBMb2dvIHRyYWRpdGlvbnMuIFRoaXMgcmVkdWNlcyB0aGUgYm9yaW5nIHdvcmsgb2YKICB0eXBpbmcgbG9uZyBzZXF1ZW5jZXMgb2YgY29tbWFuZHMsIHdoaWNoIG9mdGVuIG9jY3VyIGluIGEgbmF0dXJhbCB3YXkKICB3aGVuIGtpZHMgdHJ5IHRvIHByb2dyYW0gZmFuY3kgcGljdHVyZXMgb24gdGhlaXIgZmlyc3QgZW5jb3VudGVyIHdpdGgKICB0dXJ0bGUgZ3JhcGhpY3MuCgotIFR1cnRsZXMgbm93IGhhdmUgYW4gdW5kbygpLW1ldGhvZCB3aXRoIGNvbmZpZ3VyYWJsZSB1bmRvLWJ1ZmZlci4KCi0gU29tZSBzaW1wbGUgY29tbWFuZHMvbWV0aG9kcyBmb3IgY3JlYXRpbmcgZXZlbnQgZHJpdmVuIHByb2dyYW1zCiAgKG1vdXNlLSwga2V5LSwgdGltZXItZXZlbnRzKS4gRXNwZWNpYWxseSB1c2VmdWwgZm9yIHByb2dyYW1taW5nIGdhbWVzLgoKLSBBIHNjcm9sbGFibGUgQ2FudmFzIGNsYXNzLiBUaGUgZGVmYXVsdCBzY3JvbGxhYmxlIENhbnZhcyBjYW4gYmUKICBleHRlbmRlZCBpbnRlcmFjdGl2ZWx5IGFzIG5lZWRlZCB3aGlsZSBwbGF5aW5nIGFyb3VuZCB3aXRoIHRoZSB0dXJ0bGUocykuCgotIEEgVHVydGxlU2NyZWVuIGNsYXNzIHdpdGggbWV0aG9kcyBjb250cm9sbGluZyBiYWNrZ3JvdW5kIGNvbG9yIG9yCiAgYmFja2dyb3VuZCBpbWFnZSwgd2luZG93IGFuZCBjYW52YXMgc2l6ZSBhbmQgb3RoZXIgcHJvcGVydGllcyBvZiB0aGUKICBUdXJ0bGVTY3JlZW4uCgotIFRoZXJlIGlzIGEgbWV0aG9kLCBzZXR3b3JsZGNvb3JkaW5hdGVzKCksIHRvIGluc3RhbGwgYSB1c2VyIGRlZmluZWQKICBjb29yZGluYXRlLXN5c3RlbSBmb3IgdGhlIFR1cnRsZVNjcmVlbi4KCi0gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYSAyLXZlY3RvciBjbGFzcyBuYW1lZCBWZWMyRCwgZGVyaXZlZCBmcm9tIHR1cGxlLgogIFRoaXMgY2xhc3MgaXMgcHVibGljLCBzbyBpdCBjYW4gYmUgaW1wb3J0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW1tZXIsCiAgd2hpY2ggbWFrZXMgY2VydGFpbiB0eXBlcyBvZiBjb21wdXRhdGlvbnMgdmVyeSBuYXR1cmFsIGFuZCBjb21wYWN0LgoKLSBBcHBlYXJhbmNlIG9mIHRoZSBUdXJ0bGVTY3JlZW4gYW5kIHRoZSBUdXJ0bGVzIGF0IHN0YXJ0dXAvaW1wb3J0IGNhbiBiZQogIGNvbmZpZ3VyZWQgYnkgbWVhbnMgb2YgYSB0dXJ0bGUuY2ZnIGNvbmZpZ3VyYXRpb24gZmlsZS4KICBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1pbWljcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgb2xkIHR1cnRsZSBtb2R1bGUuCgotIElmIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseSB0aGUgbW9kdWxlIHJlYWRzIGluIGRvY3N0cmluZ3MgZnJvbSBhIGRvY3N0cmluZwogIGRpY3Rpb25hcnkgaW4gc29tZSBkaWZmZXJlbnQgbGFuZ3VhZ2UsIHN1cHBsaWVkIHNlcGFyYXRlbHkgIGFuZCByZXBsYWNlcwogIHRoZSBFbmdsaXNoIG9uZXMgYnkgdGhvc2UgcmVhZCBpbi4gVGhlcmUgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uCiAgd3JpdGVfZG9jc3RyaW5nZGljdCgpIHRvIHdyaXRlIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBvcmlnaW5hbCAoRW5nbGlzaCkKICBkb2NzdHJpbmdzIHRvIGRpc2MsIHNvIGl0IGNhbiBzZXJ2ZSBhcyBhIHRlbXBsYXRlIGZvciB0cmFuc2xhdGlvbnMuCgpCZWhpbmQgdGhlIHNjZW5lcyB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyBpbmNsdWRlZCB3aXRoIHBvc3NpYmxlCmV4dGVuc2lvbnMgaW4gbWluZC4gVGhlc2Ugd2lsbCBiZSBjb21tZW50ZWQgYW5kIGRvY3VtZW50ZWQgZWxzZXdoZXJlLgoKczUAAAB0dXJ0bGUgMS4wYjEgLSBmb3IgUHl0aG9uIDIuNiAgIC0gIDMwLiA1LiAyMDA4LCAxODowOGn/////TigDAAAAdAYAAABpc2ZpbGV0BQAAAHNwbGl0dAQAAABqb2luKAEAAAB0CAAAAGRlZXBjb3B5KAEAAAB0AQAAACp0DgAAAFNjcm9sbGVkQ2FudmFzdAwAAABUdXJ0bGVTY3JlZW50BgAAAFNjcmVlbnQJAAAAUmF3VHVydGxldAYAAABUdXJ0bGV0BgAAAFJhd1BlbnQDAAAAUGVudAUAAABTaGFwZXQFAAAAVmVjMkR0CAAAAGFkZHNoYXBldAcAAABiZ2NvbG9ydAUAAABiZ3BpY3QDAAAAYnlldAsAAABjbGVhcnNjcmVlbnQJAAAAY29sb3Jtb2RldAUAAABkZWxheXQLAAAAZXhpdG9uY2xpY2t0CQAAAGdldGNhbnZhc3QJAAAAZ2V0c2hhcGVzdAYAAABsaXN0ZW50BAAAAG1vZGV0BQAAAG9ua2V5dA0AAABvbnNjcmVlbmNsaWNrdAcAAABvbnRpbWVydA4AAAByZWdpc3Rlcl9zaGFwZXQLAAAAcmVzZXRzY3JlZW50CgAAAHNjcmVlbnNpemV0BQAAAHNldHVwdBMAAABzZXR3b3JsZGNvb3JkaW5hdGVzdAUAAAB0aXRsZXQGAAAAdHJhY2VydAcAAAB0dXJ0bGVzdAYAAAB1cGRhdGV0DQAAAHdpbmRvd19oZWlnaHR0DAAAAHdpbmRvd193aWR0aHQEAAAAYmFja3QIAAAAYmFja3dhcmR0CgAAAGJlZ2luX2ZpbGx0CgAAAGJlZ2luX3BvbHl0AgAAAGJrdAYAAABjaXJjbGV0BQAAAGNsZWFydAoAAABjbGVhcnN0YW1wdAsAAABjbGVhcnN0YW1wc3QFAAAAY2xvbmV0BQAAAGNvbG9ydAcAAABkZWdyZWVzdAgAAABkaXN0YW5jZXQDAAAAZG90dAQAAABkb3dudAgAAABlbmRfZmlsbHQIAAAAZW5kX3BvbHl0AgAAAGZkdAQAAABmaWxsdAkAAABmaWxsY29sb3J0BwAAAGZvcndhcmR0CAAAAGdldF9wb2x5dAYAAABnZXRwZW50CQAAAGdldHNjcmVlbnQJAAAAZ2V0dHVydGxldAQAAABnb3RvdAcAAABoZWFkaW5ndAoAAABoaWRldHVydGxldAQAAABob21ldAIAAABodHQGAAAAaXNkb3dudAkAAABpc3Zpc2libGV0BAAAAGxlZnR0AgAAAGx0dAcAAABvbmNsaWNrdAYAAABvbmRyYWd0CQAAAG9ucmVsZWFzZXQCAAAAcGR0AwAAAHBlbnQIAAAAcGVuY29sb3J0BwAAAHBlbmRvd250BwAAAHBlbnNpemV0BQAAAHBlbnVwdAMAAABwb3N0CAAAAHBvc2l0aW9udAIAAABwdXQHAAAAcmFkaWFuc3QFAAAAcmlnaHR0BQAAAHJlc2V0dAoAAAByZXNpemVtb2RldAIAAABydHQEAAAAc2V0aHQKAAAAc2V0aGVhZGluZ3QGAAAAc2V0cG9zdAsAAABzZXRwb3NpdGlvbnQMAAAAc2V0dGlsdGFuZ2xldA0AAABzZXR1bmRvYnVmZmVydAQAAABzZXR4dAQAAABzZXR5dAUAAABzaGFwZXQJAAAAc2hhcGVzaXpldAoAAABzaG93dHVydGxldAUAAABzcGVlZHQCAAAAc3R0BQAAAHN0YW1wdAQAAAB0aWx0dAkAAAB0aWx0YW5nbGV0BwAAAHRvd2FyZHN0CgAAAHR1cnRsZXNpemV0BAAAAHVuZG90EQAAAHVuZG9idWZmZXJlbnRyaWVzdAIAAAB1cHQFAAAAd2lkdGh0BQAAAHdyaXRldAQAAAB4Y29ydAQAAAB5Y29ydBMAAAB3cml0ZV9kb2NzdHJpbmdkaWN0dAQAAABkb25ldAgAAABtYWlubG9vcHQEAAAAYWNvc3QEAAAAYXNpbnQEAAAAYXRhbnQFAAAAYXRhbjJ0BAAAAGNlaWx0AwAAAGNvc3QEAAAAY29zaHQBAAAAZXQDAAAAZXhwdAQAAABmYWJzdAUAAABmbG9vcnQEAAAAZm1vZHQFAAAAZnJleHB0BQAAAGh5cG90dAUAAABsZGV4cHQDAAAAbG9ndAUAAABsb2cxMHQEAAAAbW9kZnQCAAAAcGl0AwAAAHBvd3QDAAAAc2ludAQAAABzaW5odAQAAABzcXJ0dAMAAAB0YW50BAAAAHRhbmhnAAAAAAAA4D9nAAAAAAAA6D90BgAAAGhlaWdodGmQAQAAdAkAAABjYW52d2lkdGhpLAEAAHQKAAAAY2FudmhlaWdodHQJAAAAbGVmdHJpZ2h0dAkAAAB0b3Bib3R0b210CAAAAHN0YW5kYXJkZwAAAAAAAPA/aQoAAABp6AMAAHQOAAAAdW5kb2J1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c3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIvAQAAqwEAAHMCAAAAAANjAQAAAAMAAAADAAAATwAAAHMXAAAAfAAAagAAagEAfAEAfAIAjgAAAWQBAFMoAgAAAHNAAAAAICdmb3J3YXJkJyBtZXRob2QsIHdoaWNoIGNhbnZhcyBpdHNlbGYgaGFzIGluaGVyaXRlZC4uLgogICAgICAgIE4oAgAAAFITAQAAUiMBAAAoAwAAAFLJAAAAUi4BAABSMAEAACgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSIwEAALABAABzAgAAAAADYwEAAAADAAAAAwAAAE8AAABzFwAAAHwAAGoAAGoBAHwBAHwCAI4AAAFkAQBTKAIAAABzQAAAACAnZm9yd2FyZCcgbWV0aG9kLCB3aGljaCBjYW52YXMgaXRzZWxmIGhhcyBpbmhlcml0ZWQuLi4KICAgICAgICBOKAIAAABSEwEAAFIfAQAAKAMAAABSyQAAAFIuAQAAUjABAAAoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5Uh8BAAC1AQAAcwIAAAAAA2MBAAAAAwAAAAMAAABPAAAAcxcAAAB8AABqAABqAQB8AQB8AgCOAAABZAEAUygCAAAAc0AAAAAgJ2ZvcndhcmQnIG1ldGhvZCwgd2hpY2ggY2FudmFzIGl0c2VsZiBoYXMgaW5oZXJpdGVkLi4uCiAgICAgICAgTigCAAAAUhMBAAB0BgAAAHVuYmluZCgDAAAAUskAAABSLgEAAFIwAQAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIxAQAAugEAAHMCAAAAAANj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YWlzZWQgaW4gVHVydGxlU2NyZWVuLnVwZGF0ZSwgaWYgX1JVTk5JTkcgYmVjb21lcyBGYWxzZS4KCiAgICBUaGlzIHN0b3BzIGV4ZWN1dGlvbiBvZiBhIHR1cnRsZSBncmFwaGljcyBzY3JpcHQuCiAgICBNYWluIHB1cnBvc2U6IHVzZSBpbiB0aGUgRGVtby1WaWV3ZXIgdHVydGxlLkRlbW8ucHkuCiAgICAoAwAAAFLaAAAAUtsAAABS3AAAACgAAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVKrAQAAKwMAAHMEAAAABgUGAXQTAAAAVHVydGxlR3JhcGhpY3NFcnJvcmMAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBkAABaAgBSUygBAAAAcx4AAABTb21lIFR1cnRsZUdyYXBoaWNzIEVycm9yCiAgICAoAwAAAFLaAAAAUtsAAABS3AAAACgAAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVKsAQAANAMAAHMCAAAABgJjAAAAAAAAAAACAAAAQgAAAHMmAAAAZQAAWgEAZAAAWgIAZAMAZAEAhAEAWgQAZAMAZAIAhAEAWgUAUlMoBAAAAHPgAAAARGF0YSBzdHJ1Y3R1cmUgbW9kZWxpbmcgc2hhcGVzLgoKICAgIGF0dHJpYnV0ZSBfdHlwZSBpcyBvbmUgb2YgInBvbHlnb24iLCAiaW1hZ2UiLCAiY29tcG91bmQiCiAgICBhdHRyaWJ1dGUgX2RhdGEgaXMgLSBkZXBlbmRpbmcgb24gX3R5cGUgYSBwb3lnb24tdHVwbGUsCiAgICBhbiBpbWFnZSBvciBhIGxpc3QgY29uc3RydWN0ZWQgdXNpbmcgdGhlIGFkZGNvbXBvbmVudCBtZXRob2QuCiAgICBjAwAAAAMAAAADAAAAQwAAAHO8AAAAfAEAfAAAXwAAfAEAZAEAawIAcjYAdAEAfAIA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AHwBAIMCAAF8AgB8AABfBgB8BAB8AABfBwB0CABkLgAZfAAAXwkAZwAAfAAAXwoAfAAAagsAgwAAAWQAAFMoaQAAAE5SrQEAAGn2////aQAAAABpCgAAAHQFAAAAYXJyb3dpEAAAAGn+////aQ4AAABp/////2n8////aQcAAABp+f///2kJAAAAaff///9pCAAAAGn6////aQUAAABpAQAAAGn7////af3///9p+P///2kEAAAAaQYAAABpAgAAAFKdAAAAZ4XrUbgeBSNAZ7gehetRuAhAZ65H4XoULiBAZ4XrUbgehRdAZ7gehetRuAjAZ4XrUbgehRfAZ65H4XoULiDAZ4XrUbgeBSPAZwAAAAAAAACAZwAAAAAAACTAUi0AAAB0BgAAAHNxdWFyZWcUrkfhehQXwGeamZmZmRknQHQIAAAAdHJpYW5nbGVSlwAAAFKPAQAAUkgBAABSugAAAHQFAAAAbm9waWNSEwAAACgCAAAAafb///9pAAAAACgCAAAAaQoAAABpAAAAACgCAAAAaQAAAABpCgAAACgCAAAAaQAAAABpEAAAACgCAAAAaf7///9pDgAAACgCAAAAaf////9pCgAAACgCAAAAafz///9pBwAAACgCAAAAafn///9pCQAAACgCAAAAaff///9pCAAAACgCAAAAafr///9pBQAAACgCAAAAafn///9pAQAAACgCAAAAafv///9p/f///ygCAAAAafj///9p+v///ygCAAAAafr///9p+P///ygCAAAAafz///9p+////ygCAAAAaQAAAABp+f///ygCAAAAaQQAAABp+////ygCAAAAaQYAAABp+P///ygCAAAAaQgAAABp+v///ygCAAAAaQUAAABp/f///ygCAAAAaQcAAABpAQAAACgCAAAAaQYAAABpBQAAACgCAAAAaQkAAABpCAAAACgCAAAAaQcAAABpCQAAACgCAAAAaQQAAABpBwAAACgCAAAAaQEAAABpCgAAACgCAAAAaQIAAABpDgAAACgCAAAAaQoAAABpAAAAACgCAAAAZ4XrUbgeBSNAZ7gehetRuAhAKAIAAABnrkfhehQuIEBnhetRuB6FF0AoAgAAAGeF61G4HoUXQGeuR+F6FC4gQCgCAAAAZ7gehetRuAhAZ4XrUbgeBSNAKAIAAABpAAAAAGkKAAAAKAIA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dGUuCiAgICAgICAgTigGAAAAUs4BAABSpQAAAFIkAAAAdAwAAABfdXBkYXRlX2RhdGF0CwAAAF9kcmF3dHVydGxlUmcBAAAoAwAAAFLJAAAAdAcAAAB0cmFjaW5nUo0BAAAoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiUAAADcBAAAcw4AAAAAAwkBCQETAQoBDgEJAWMBAAAAAQAAAAIAAABDAAAAcw4AAAB8AABqAACDAABkAQAZUygCAAAAc5sAAAAgUmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgdHVydGxlIHdpbmRvdy4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlU2NyZWVuIGluc3RhbmNlIG5hbWVkIHNjcmVlbik6CiAgICAgICAgPj4+IHNjcmVlbi53aW5kb3dfd2lkdGgoKQogICAgICAgIDY0MAogICAgICAgIGkAAAAAKAEAAABSqQEAACgBAAAAUskAAAAoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UicAAADnBAAAcwIAAAAAB2MBAAAAAQAAAAIAAABDAAAAcw4AAAB8AABqAACDAABkAQAZUygCAAAAc50AAAAgUmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIHR1cnRsZSB3aW5kb3cuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZVNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4ud2luZG93X2hlaWdodCgpCiAgICAgICAgNDgwCiAgICAgICAgaQEAAAAoAQAAAFKpAQAAKAEAAABSyQAAACgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSJgAA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bWUoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UhAAAABhBQAAcwwAAAAAEQwBBwEPARkBGgFjBAAAAAQAAAAEAAAAQwAAAHMTAAAAfAAAagAAfAEAfAIAfAMAgwMAUygBAAAAc9cCAABSZXNpemUgdGhlIGNhbnZhcyB0aGUgdHVydGxlcyBhcmUgZHJhd2luZyBvbi4KCiAgICAgICAgT3B0aW9uYWwgYXJndW1lbnRzOgogICAgICAgIGNhbnZ3aWR0aCAtLSBwb3NpdGl2ZSBpbnRlZ2VyLCBuZXcgd2lkdGggb2YgY2FudmFzIGluIHBpeGVscwogICAgICAgIGNhbnZoZWlnaHQgLS0gIHBvc2l0aXZlIGludGVnZXIsIG5ldyBoZWlnaHQgb2YgY2FudmFzIGluIHBpeGVscwogICAgICAgIGJnIC0tIGNvbG9yc3RyaW5nIG9yIGNvbG9yLXR1cGxlLCBuZXcgYmFja2dyb3VuZGNvbG9yCiAgICAgICAgSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgcmV0dXJuIGN1cnJlbnQgKGNhbnZhc3dpZHRoLCBjYW52YXNoZWlnaHQpCgogICAgICAgIERvIG5vdCBhbHRlciB0aGUgZHJhd2luZyB3aW5kb3cuIFRvIG9ic2VydmUgaGlkZGVuIHBhcnRzIG9mCiAgICAgICAgdGhlIGNhbnZhcyB1c2UgdGhlIHNjcm9sbGJhcnMuIChDYW4gbWFrZSB2aXNpYmxlIHRob3NlIHBhcnRzCiAgICAgICAgb2YgYSBkcmF3aW5nLCB3aGljaCB3ZXJlIG91dHNpZGUgdGhlIGNhbnZhcyBiZWZvcmUhKQoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLnNjcmVlbnNpemUoMjAwMCwxNTAwKQogICAgICAgID4+PiAjIGUuIGcuIHRvIHNlYXJjaCBmb3IgYW4gZXJyb25lb3VzbHkgZXNjYXBlZCB0dXJ0bGUgOy0pCiAg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Y2lyY2xlIHdpdGggZ2l2ZW4gcmFkaXVzLgoKICAgICAgICBBcmd1bWVudHM6CiAgICAgICAgcmFkaXVzIC0tIGEgbnVtYmVyCiAgICAgICAgZXh0ZW50IChvcHRpb25hbCkgLS0gYSBudW1iZXIKICAgICAgICBzdGVwcyAob3B0aW9uYWwpIC0tIGFuIGludGVnZXIKCiAgICAgICAgRHJhdyBhIGNpcmNsZSB3aXRoIGdpdmVuIHJhZGl1cy4gVGhlIGNlbnRlciBpcyByYWRpdXMgdW5pdHMgbGVmdAogICAgICAgIG9mIHRoZSB0dXJ0bGU7IGV4dGVudCAtIGFuIGFuZ2xlIC0gZGV0ZXJtaW5lcyB3aGljaCBwYXJ0IG9mIHRoZQogICAgICAgIGNpcmNsZSBpcyBkcmF3bi4gSWYgZXh0ZW50IGlzIG5vdCBnaXZlbiwgZHJhdyB0aGUgZW50aXJlIGNpcmNsZS4KICAgICAgICBJZiBleHRlbnQgaXMgbm90IGEgZnVsbCBjaXJjbGUsIG9uZSBlbmRwb2ludCBvZiB0aGUgYXJjIGlzIHRoZQogICAgICAgIGN1cnJlbnQgcGVuIHBvc2l0aW9uLiBEcmF3IHRoZSBhcmMgaW4gY291bnRlcmNsb2Nrd2lzZSBkaXJlY3Rpb24KICAgICAgICBpZiByYWRpdXMgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSBpbiBjbG9ja3dpc2UgZGlyZWN0aW9uLiBGaW5hbGx5CiAgICAgICAgdGhlIGRpcmVjdGlvbiBvZiB0aGUgdHVydGxlIGlzIGNoYW5nZWQgYnkgdGhlIGFtb3VudCBvZiBleHRlbnQuCgogICAgICAgIEFzIHRoZSBjaXJjbGUgaXMgYXBwcm94aW1hdGVkIGJ5IGFuIGluc2NyaWJlZCByZWd1bGFyIHBvbHlnb24sCiAgICAgICAgc3RlcHMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHN0ZXBzIHRvIHVzZS4gSWYgbm90IGdpdmVuLAogICAgICAgIGl0IHdpbGwgYmUgY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5LiBNYXliZSB1c2VkIHRvIGRyYXcgcmVndWxhcgogICAgICAgIHBvbHlnb25zLgoKICAgICAgICBjYWxs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IHRoZSBjdXJyZW50IGZpbGxjb2xvcgogICAgICAgICAgICBhcyBhIHBhaXIgb2YgY29sb3Igc3BlY2lmaWNhdGlvbiBzdHJpbmdzIGFzIGFyZSByZXR1cm5lZAogICAgICAgICAgICBieSBwZW5jb2xvciBhbmQgZmlsbGNvbG9yLgogICAgICAgIGNvbG9yKGNvbG9yc3RyaW5nKSwgY29sb3IoKHIsZyxiKSksIGNvbG9yKHIsZyxiKQogICAgICAgICAgICBpbnB1dHMgYXMgaW4gcGVuY29sb3IsIHNldCBib3RoLCBmaWxsY29sb3IgYW5kIHBlbmNvbG9yLAogICAgICAgICAgICB0byB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgICAgY29sb3IoY29sb3JzdHJpbmcxLCBjb2xvcnN0cmluZzIpLAogICAgICAgIGNvbG9yKChyMSxnMSxiMSksIChyMixnMixiMikpCiAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gcGVuY29sb3IoY29sb3JzdHJpbmcxKSBhbmQgZmlsbGNvbG9yKGNvbG9yc3RyaW5nMikKICAgICAgICAgICAgYW5kIGFuYWxvZ291c2x5LCBpZiB0aGUgb3RoZXIgaW5wdXQgZm9ybWF0IGlzIHVzZWQuCgogICAgICAgIElmIHR1cnRsZXNoYXBlIGlzIGEgcG9seWdvbiwgb3V0bGluZSBhbmQgaW50ZXJpb3Igb2YgdGhhdCBwb2x5Z29uCiAgICAgICAgaXMgZHJhd24gd2l0aCB0aGUgbmV3bHkgc2V0IGNvbG9ycy4KICAgICAgICBGb3IgbW9yIGluZm8gc2VlOiBwZW5jb2xvciwgZmlsbGNvbG9yCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuY29sb3IoJ3JlZCcsICdncmVlbicpCiAgICAgICAgPj4+IHR1cnRsZS5jb2xvcigpCiAgICAgICAgKCdyZWQnLCAnZ3JlZW4nKQogICAgICAgID4+PiBjb2xvcm1vZGUoMjU1KQogICAgICAgID4+PiBjb2xvcigoNDAsIDgwLCAxMjApLCAoMTYwLCAyMDAsIDI0MCkp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AIMBAFNkAQBTKAMAAABzXQQAACBSZXR1cm4gb3Igc2V0IHRoZSBmaWxsY29sb3IuCgogICAgICAgIEFyZ3VtZW50czoKICAgICAgICBGb3VyIGlucHV0IGZvcm1hdHMgYXJlIGFsbG93ZWQ6CiAgICAgICAgICAtIGZpbGxjb2xvcigpCiAgICAgICAgICAgIFJldHVybiB0aGUgY3VycmVudCBmaWxsY29sb3IgYXMgY29sb3Igc3BlY2lmaWNhdGlvbiBzdHJpbmcsCiAgICAgICAgICAgIHBvc3NpYmx5IGluIGhleC1udW1iZXIgZm9ybWF0IChzZWUgZXhhbXBsZSkuCiAgICAgICAgICAgIE1heSBiZSB1c2VkIGFzIGlucHV0IHRvIGFub3RoZXIgY29sb3IvcGVuY29sb3IvZmlsbGNvbG9yIGNhbGwuCiAgICAgICAgICAtIGZpbGxjb2xvcihjb2xvcnN0cmluZykKICAgICAgICAgICAgcyBpcyBhIFRrIGNvbG9yIHNwZWNpZmljYXRpb24gc3RyaW5nLCBzdWNoIGFzICJyZWQiIG9yICJ5ZWxsb3ciCiAgICAgICAgICAtIGZpbGxjb2xvcigociwgZywgYikpCiAgICAgICAgICAgICphIHR1cGxlKiBvZiByLCBnLCBhbmQgYiwgd2hpY2ggcmVwcmVzZW50LCBhbiBSR0IgY29sb3IsCiAgICAgICAgICAgIGFuZCBlYWNoIG9mIHIsIGcsIGFuZCBiIGFyZSBpbiB0aGUgcmFuZ2UgMC4uY29sb3Jtb2RlLAogICAgICAgICAgICB3aGVyZSBjb2xvcm1vZGUgaXMgZWl0aGVyIDEuMCBvciAyNTUKICAgICAgICAgIC0gZmlsbGNvbG9yKHIsIGcsIGIpCiAgICAgICAgICAgIHIsIGcsIGFuZCBiIHJlcHJlc2VudCBhbiBSR0IgY29sb3IsIGFuZCBlYWNoIG9mIHIsIGcsIGFuZCBiCiAgICAgICAgICAgIGFyZSBpbiB0aGUgcmFuZ2UgMC4uY29sb3Jtb2RlCgogICAgICAgIElmIHR1cnRsZXNoYXBlIGlzIGEgcG9seWdvbiwgdGhlIGludGVyaW9yIG9mIHRoYXQgcG9seWdvbiBpcyBkcmF3bgogICAgICAgIHdpdGggdGhlIG5ld2x5IHNldCBmaWxsY29sb3IuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuZmlsbGNvbG9yKCd2aW9sZXQnKQogICAgICAgID4+PiBjb2wgPSB0dXJ0bGUucGVuY29sb3IoKQogICAgICAgID4+PiB0dXJ0bGUuZmlsbGNvbG9yKGNvbCkKICAgICAgICA+Pj4gdHVydGxlLmZpbGxjb2xvcigwLCAuNSwgMCkKICAgICAgICBOUjsAAAAoBAAAAFLjAQAAUhwCAABSTgAAAFLlAQAAKAMAAABSyQAAAFIuAQAAUjIAAAAoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UjsAAAB9CAAAcwwAAAAAHAYBDwEPAQQBEwJjAQAAAAEAAAADAAAAQwAAAHMUAAAAfAAAagAAZAEAdAEAgwABAWQCAFMoAwAAAHPRAAAATWFrZXMgdGhlIHR1cnRsZSB2aXNpYmxlLgoKICAgICAgICBBbGlhc2VzOiBzaG93dHVydGxlIHwgc3QKCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuaGlkZXR1cnRsZSgpCiAgICAgICAgPj4+IHR1cnRsZS5zaG93dHVydGxlKCkKICAgICAgICB0BQAAAHNob3duTigCAAAAUk4AAABSpQAAACgBAAAAUskAAAAoAAAAACgAAAAAc1UAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UmUAAAChCAAAcwIAAAAAC2MBAAAAAQAAAAMAAABDAAAAcxQAAAB8AABqAABkAQB0AQCDAAEBZAIAUygDAAAAc1kBAABNYWtlcyB0aGUgdHVydGxlIGludmlzaWJsZS4KCiAgICAgICAgQWxpYXNlczogaGlkZXR1cnRsZSB8IGh0CgogICAgICAgIE5vIGFyZ3VtZW50LgoKICAgICAgICBJdCdzIGEgZ29vZCBpZGVhIHRvIGRvIHRoaXMgd2hpbGUgeW91J3JlIGluIHRoZQogICAgICAgIG1pZGRsZSBvZiBhIGNvbXBsaWNhdGVkIGRyYXdpbmcsIGJlY2F1c2UgaGlkaW5nCiAgICAgICAgdGhlIHR1cnRsZSBzcGVlZHMgdXAgdGhlIGRyYXdpbmcgb2JzZXJ2YWJseS4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5oaWRldHVydGxlKCkKICAgICAgICBSLQIAAE4oAgAAAFJOAAAAUqYAAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJDAAAArggAAHMCAAAAAA5jAQAAAAEAAAABAAAAQwAAAHMHAAAAfAAAagAAUygBAAAAc+MAAABSZXR1cm4gVHJ1ZSBpZiB0aGUgVHVydGxlIGlzIHNob3duLCBGYWxzZSBpZiBpdCdzIGhpZGRlbi4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuaGlkZXR1cnRsZSgpCiAgICAgICAgPj4+IHByaW50IHR1cnRsZS5pc3Zpc2libGUoKToKICAgICAgICBGYWxzZQogICAgICAgICgBAAAAUhoCAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJHAAAAvggAAHMCAAAAAApjAgAAAAkAAAAFAAAASwAAAHM2AwAAaQoAfAAAagAAZAEANnwAAGoBAGQCADZ8AABqAgBkAwA2fAAAagMAZAQANnwAAGoEAGQFADZ8AABqBQBkBgA2fAAAagYAZAcANnwAAGoHAGQIADZ8AABqCABkCQA2fAAAagkAZAoANn0DAHwBAHBzAHwCAHN6AHwDAFN0CgB8AQB0CwCDAgBykgB8AQB9BABuBgBpAAB9BAB8BABqDAB8AgCDAQABaQAAfQUAeBwAfAQARF0UAH0GAHwDAHwGABl8BQB8BgA8cbIAV3wAAGoNAHLsAHwAAGoNAGoOAGQLAHwFAGYCAIMBAAFuAAB0DwB9BwBkAgB8BABrBgByHQF8AABqAQB8BABkAgAZawMAch0BdBAAfQcAcR0BbgAAZAMAfAQAawYAcngBdAoAfAQAZAMAGXQRAIMCAHJZAXwAAGoSAHwEAGQDABlmAQCDAQB8BABkAwA8bgAAfAAAagIAfAQAZAMAGWsDAHJ4AXQQAH0HAHF4AW4AAGQFAHwEAGsGAHKjAXwAAGoEAHwEAGQFABlrAwByowF0EAB9BwBxowFuAAB8BwBytgF8AABqEwCDAAABbgAAZAIAfAQAawYActIBfAQAZAIAGXwAAF8BAG4AAGQDAHwEAGsGAHLuAXwEAGQDABl8AABfAgBuAABkBQB8BABrBgByCgJ8BABkBQAZfAAAXwQAbgAAZAQAfAQAawYAclYCdAoAfAQAZAQAGXQRAIMCAHJGAnwAAGoSAHwEAGQEABlmAQCDAQB8BABkBAA8bgAAfAQAZAQAGXwAAF8DAG4AAGQGAHwEAGsGAHJyAnwEAGQGABl8AABfBQBuAABkBwB8BABrBgByjgJ8BABkBwAZfAAAXwYAbgAAZAgAfAQAawYActQCfAQAZAgAGX0IAHQKAHwIAHQUAHQVAGYCAIMCAHLIAnwIAHwIAGYCAH0IAG4AAHwIAHwAAF8HAG4AAGQJAHwEAGsGAHLwAnwEAGQJABl8AABfCABuAABkAQB8BABrBgByDAN8BABkAQAZfAAAXwAAbgAAZAoAfAQAawYAcigDfAQAZAoAGXwAAF8JAG4AAHwAAGoWAIMAAAFkDABTKA0AAABz7QcAAFJldHVybiBvciBzZXQgdGhlIHBlbidzIGF0dHJpYnV0ZXMuCgogICAgICAgIEFyZ3VtZW50czoKICAgICAgICAgICAgcGVuIC0tIGEgZGljdGlvbmFyeSB3aXRoIHNvbWUgb3IgYWxsIG9mIHRoZSBiZWxvdyBsaXN0ZWQga2V5cy4KICAgICAgICAgICAgKipwZW5kaWN0IC0tIG9uZSBvciBtb3JlIGtleXdvcmQtYXJndW1lbnRzIHdpdGggdGhlIGJlbG93CiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZWQga2V5cyBhcyBrZXl3b3Jkcy4KCiAgICAgICAgUmV0dXJuIG9yIHNldCB0aGUgcGVuJ3MgYXR0cmlidXRlcyBpbiBhICdwZW4tZGljdGlvbmFyeScKICAgICAgICB3aXRoIHRoZSBmb2xsb3dpbmcga2V5L3ZhbHVlIHBhaXJzOgogICAgICAgICAgICJzaG93biIgICAgICA6ICAgVHJ1ZS9GYWxzZQogICAgICAgICAgICJwZW5kb3duIiAgICA6ICAgVHJ1ZS9GYWxzZQogICAgICAgICAgICJwZW5jb2xvciIgICA6ICAgY29sb3Itc3RyaW5nIG9yIGNvbG9yLXR1cGxlCiAgICAgICAgICAgImZpbGxjb2xvciIgIDogICBjb2xvci1zdHJpbmcgb3IgY29sb3ItdHVwbGUKICAgICAgICAgICAicGVuc2l6ZSIgICAgOiAgIHBvc2l0aXZlIG51bWJlcgogICAgICAgICAgICJzcGVlZCIgICAgICA6ICAgbnVtYmVyIGluIHJhbmdlIDAuLjEwCiAgICAgICAgICAgInJlc2l6ZW1vZGUiIDogICAiYXV0byIgb3IgInVzZXIiIG9yICJub3Jlc2l6ZSIKICAgICAgICAgICAic3RyZXRjaGZhY3RvciI6IChwb3NpdGl2ZSBudW1iZXIsIHBvc2l0aXZlIG51bWJlcikKICAgICAgICAgICAib3V0bGluZSIgICAgOiAgIHBvc2l0aXZlIG51bWJlcgogICAgICAgICAgICJ0aWx0IiAgICAgICA6ICAgbnVtYmVyCgogICAgICAgIFRoaXMgZGljdGlvbmFyeSBjYW4gYmUgdXNlZCBhcyBhcmd1bWVudCBmb3IgYSBzdWJzZXF1ZW50CiAgICAgICAgcGVuKCktY2FsbCB0byByZXN0b3JlIHRoZSBmb3JtZXIgcGVuLXN0YXRlLiBNb3Jlb3ZlciBvbmUKICAgICAgICBvciBtb3JlIG9mIHRoZXNlIGF0dHJpYnV0ZXMgY2FuIGJlIHByb3ZpZGVkIGFzIGtleXdvcmQtYXJndW1lbnRzLgogICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gc2V0IHNldmVyYWwgcGVuIGF0dHJpYnV0ZXMgaW4gb25lIHN0YXRlbWVudC4KCgogICAgICAgIEV4YW1wbGVzIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLnBlbihmaWxsY29sb3I9ImJsYWNrIiwgcGVuY29sb3I9InJlZCIsIHBlbnNpemU9MTApCiAgICAgICAgPj4+IHR1cnRsZS5wZW4oKQogICAgICAgIHsncGVuc2l6ZSc6IDEwLCAnc2hvd24nOiBUcnVlLCAncmVzaXplbW9kZSc6ICdhdXRvJywgJ291dGxpbmUnOiAxLAogICAgICAgICdwZW5jb2xvcic6ICdyZWQnLCAncGVuZG93bic6IFRydWUsICdmaWxsY29sb3InOiAnYmxhY2snLAogICAgICAgICdzdHJldGNoZmFjdG9yJzogKDEsMSksICdzcGVlZCc6IDN9CiAgICAgICAgPj4+IHBlbnN0YXRlPXR1cnRsZS5wZW4oKQogICAgICAgID4+PiB0dXJ0bGUuY29sb3IoInllbGxvdyIsIiIpCiAgICAgICAgPj4+IHR1cnRsZS5wZW51cCgpCiAgICAgICAgPj4+IHR1cnRsZS5wZW4oKQogICAgICAgIHsncGVuc2l6ZSc6IDEwLCAnc2hvd24nOiBUcnVlLCAncmVzaXplbW9kZSc6ICdhdXRvJywgJ291dGxpbmUnOiAxLAogICAgICAgICdwZW5jb2xvcic6ICd5ZWxsb3cnLCAncGVuZG93bic6IEZhbHNlLCAnZmlsbGNvbG9yJzogJycsCiAgICAgICAgJ3N0cmV0Y2hmYWN0b3InOiAoMSwxKSwgJ3NwZWVkJzogM30KICAgICAgICA+Pj4gcC5wZW4ocGVuc3RhdGUsIGZpbGxjb2xvcj0iZ3JlZW4iKQogICAgICAgID4+PiBwLnBlbigpCiAgICAgICAgeydwZW5zaXplJzogMTAsICdzaG93bic6IFRydWUs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AIMAAwFkBgBTKAcAAABzUAMAAFNldC9yZXR1cm4gdHVydGxlJ3Mgc3RyZXRjaGZhY3RvcnMvb3V0bGluZS4gU2V0IHJlc2l6ZW1vZGUgdG8gInVzZXIiLgoKICAgICAgICBPcHRpbm9uYWwgYXJndW1lbnRzOgogICAgICAgICAgIHN0cmV0Y2hfd2lkIDogcG9zaXRpdmUgbnVtYmVyCiAgICAgICAgICAgc3RyZXRjaF9sZW4gOiBwb3NpdGl2ZSBudW1iZXIKICAgICAgICAgICBvdXRsaW5lICA6IHBvc2l0aXZlIG51bWJlcgoKICAgICAgICBSZXR1cm4gb3Igc2V0IHRoZSBwZW4ncyBhdHRyaWJ1dGVzIHgveS1zdHJldGNoZmFjdG9ycyBhbmQvb3Igb3V0bGluZS4KICAgICAgICBTZXQgcmVzaXplbW9kZSB0byAidXNlciIuCiAgICAgICAgSWYgYW5kIG9ubHkgaWYgcmVzaXplbW9kZSBpcyBzZXQgdG8gInVzZXIiLCB0aGUgdHVydGxlIHdpbGwgYmUgZGlzcGxheWVkCiAgICAgICAgc3RyZXRjaGVkIGFjY29yZGluZyB0byBpdHMgc3RyZXRjaGZhY3RvcnM6CiAgICAgICAgc3RyZXRjaF93aWQgaXMgc3RyZXRjaGZhY3RvciBwZXJwZW5kaWN1bGFyIHRvIG9yaWVudGF0aW9uCiAgICAgICAgc3RyZXRjaF9sZW4gaXMgc3RyZXRjaGZhY3RvciBpbiBkaXJlY3Rpb24gb2YgdHVydGxlcyBvcmllbnRhdGlvbi4KICAgICAgICBvdXRsaW5lIGRldGVybWluZXMgdGhlIHdpZHRoIG9mIHRoZSBzaGFwZXMncyBvdXRsaW5lLgoKICAgICAgICBFeGFtcGxlcyAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5yZXNpemVtb2RlKCJ1c2VyIikKICAgICAgICA+Pj4gdHVydGxlLnNoYXBlc2l6ZSg1LCA1LCAxMikKICAgICAgICA+Pj4gdHVydGxlLnNoYXBlc2l6ZShvdXRsaW5lPTgpCiAgICAgICAgaQAAAABSWQAAAFIjAgAAUi4CAABSUgEAAE4oBAAAAFKn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IGEgcG9seWdvbi4gQ3VycmVudCB0dXJ0bGUgcG9zaXRpb24gaXMKICAgICAgICBsYXN0IHBvaW50IG9mIHBvbHlnb24uIFRoaXMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCB0aGUgZmlyc3QgcG9pbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuZW5kX3BvbHkoKQogICAgICAgIE4oAgAAAFKmAAAAUkECAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVI4AAAA9wwAAHMCAAAAAAtjAQAAAAEAAAACAAAAQwAAAHMgAAAAfAAAagAAZAEAawkAchwAdAIAfAAAagAAgwEAU2QBAFMoAgAAAHPUAAAAUmV0dXJuIHRoZSBsYXN0bHkgcmVjb3JkZWQgcG9seWdvbi4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiBwID0gdHVydGxlLmdldF9wb2x5KCkKICAgICAgICA+Pj4gdHVydGxlLnJlZ2lzdGVyX3NoYXBlKCJteUZhdm91cml0ZVNoYXBlIiwgcCkKICAgICAgICBOKAMAAABSQAIAAFKnAAAAUsQAAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVI9AAAABA0AAHMEAAAAAAoPAWMBAAAAAQAAAAEAAABDAAAAcwcAAAB8AABqAABTKAEAAABzmAEAAFJldHVybiB0aGUgVHVydGxlU2NyZWVuIG9iamVjdCwgdGhlIHR1cnRsZSBpcyBkcmF3aW5nICBvbi4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIFJldHVybiB0aGUgVHVydGxlU2NyZWVuIG9iamVjdCwgdGhlIHR1cnRsZSBpcyBkcmF3aW5nICBvbi4KICAgICAgICBTbyBUdXJ0bGVTY3JlZW4tbWV0aG9kcyBjYW4gYmUgY2FsbGVkIGZvciB0aGF0IG9iamVjdC4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHRzID0gdHVydGxlLmdldHNjcmVlbigpCiAgICAgICAgPj4+IHRzCiAgICAgICAgPHR1cnRsZS5UdXJ0bGVTY3JlZW4gb2JqZWN0IGF0IDB4MDEwNkI3NzA+CiAgICAgICAgPj4+IHRzLmJnY29sb3IoInBpbmsiKQogICAgICAgICgBAAAAUp8AAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHNVAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVI/AAAAEQ0AAHMCAAAAAA5jAQAAAAEAAAABAAAAQwAAAHMEAAAAfAAAUygBAAAAc1UBAABSZXR1cm4gdGhlIFR1cnRsZW9iamVjdCBpdHNlbGYuCgogICAgICAgIE5vIGFyZ3VtZW50LgoKICAgICAgICBPbmx5IHJlYXNvbmFibGUgdXNlOiBhcyBhIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgJ2Fub255bW91cyB0dXJ0bGUnOgoKICAgICAgICBFeGFtcGxlOgogICAgICAgID4+PiBwZXQgPSBnZXR0dXJ0bGUoKQogICAgICAgID4+PiBwZXQuZmQoNTApCiAgICAgICAgPj4+IHBldAogICAgICAgIDx0dXJ0bGUuVHVydGxlIG9iamVjdCBhdCAweDAxODdEODEwPgogICAgICAgID4+PiB0dXJ0bGVzKCkKICAgICAgICBbPHR1cnRsZS5UdXJ0bGUgb2JqZWN0IGF0IDB4MDE4N0Q4MTA+XQogICAgICAgICgAAAAAKAEAAABSyQAAACgAAAAAKAAAAABzVQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJl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