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ID4+PiB2LnNhdGlzZmllZF9ieSgnMTU1NS4xYjMnKQogICAgRmFsc2UKCiAgICBgVmVyc2lvblByZWRpY2F0ZWAgaXMgZmxleGlibGUgaW4gYWNjZXB0aW5nIGV4dHJhIHdoaXRlc3BhY2U6OgoKICAgID4+PiB2ID0gVmVyc2lvblByZWRpY2F0ZSgnIHBhdCggPT0gIDAuMSAgKSAgJykKICAgID4+PiB2Lm5hbWUKICAgICdwYXQnCiAgICA+Pj4gdi5zYXRpc2ZpZWRfYnkoJzAuMScpCiAgICBUcnVlCiAgICA+Pj4gdi5zYXRpc2ZpZWRfYnkoJzAuMicpCiAgICBGYWxzZQoKICAgIElmIGFueSB2ZXJzaW9uIG51bWJlcnMgcGFzc2VkIGluIGRvIG5vdCBjb25mb3JtIHRvIHRoZQogICAgcmVzdHJpY3Rpb25zIG9mIGBTdHJpY3RWZXJzaW9uYCwgYSBgVmFsdWVFcnJvcmAgaXMgcmFpc2VkOjoKCiAgICA+Pj4gdiA9IFZlcnNpb25QcmVkaWNhdGUoJ3AxLnAyLnAzLnA0KD49MS4wLCA8PTEuM2ExLCAhPTEuMnpiMyknKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAuLi4KICAgIFZhbHVlRXJyb3I6IGludmFsaWQgdmVyc2lvbiBudW1iZXIgJzEuMnpiMycKCiAgICBJdCB0aGUgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSBnaXZlbiBkb2VzIG5vdCBjb25mb3JtIHRvIHdoYXQncwogICAgYWxsb3dlZCBhcyBhIGxlZ2FsIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsIGBWYWx1ZUVycm9yYCBpcwogICAgcmFpc2VkOjoKCiAgICA+Pj4gdiA9IFZlcnNpb25QcmVkaWNhdGUoJ2Zvby1iYXInKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAuLi4KICAgIFZhbHVlRXJyb3I6IGV4cGVjdGVkIHBhcmVudGhlc2l6ZWQgbGlzdDogJy1iYXInCgogICAgPj4+IHYgPSBWZXJzaW9uUHJlZGljYXRlKCdmb28gYmFyICgxMi4yMSknKQogICAgVHJh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AAAAc2EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5dA8AAABzcGxpdF9wcm92aXNpb26OAAAAcxYAAAAADAwBBgEMAQwBDwEGARMBFQEGARUBKAAAAAAoFQAAAFIoAAAAUisAAAB0EQAAAGRpc3R1dGlscy52ZXJzaW9uUgQAAAB0CAAAAG9wZXJhdG9yUiwAAABSEQAAAFITAAAAUgAAAABSCwAAAHQCAAAAbHR0AgAAAGxldAIAAABlcXQCAAAAZ3R0AgAAAGdldAIAAABuZVIiAAAAUg4AAABSKgAAAFIpAAAAUjAAAAAoAAAAACgAAAAAKAAAAABzYQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHl0CAAAADxtb2R1bGU+AgAAAHMYAAAABgEMAQwBDAMPAw8BDwQJCyEBIQITbgYC