Li4gRGF0YSBUeXBlcy9OdW1lcmljLy9jaGFyXyB8NjAKCmNoYXJcXwo9PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHRlbXBsYXRlPAogICAgICAgICAgY2hhciBOCiAgICAgICAgPgogICAgc3RydWN0IGNoYXJcXwogICAgewogICAgICAgIC8vIHx1bnNwZWNpZmllZHwKICAgICAgICAvLyAuLi4KICAgIH07CgoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KCkFuIHxJbnRlZ3JhbCBDb25zdGFudHwgd3JhcHBlciBmb3IgYGBjaGFyYGAuCgoKSGVhZGVyCi0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICAjaW5jbHVkZSA8Ym9vc3QvbXBsL2NoYXIuaHBwPgoKCk1vZGVsIG9mCi0tLS0tLS0tCgp8SW50ZWdyYWwgQ29uc3RhbnR8CgoKUGFyYW1ldGVycwotLS0tLS0tLS0tCgorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IFBhcmFtZXRlciAgICAgfCBSZXF1aXJlbWVudCAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgfAorPT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IGBgTmBgICAgICAgICAgfCBBIGNoYXJhY3RlciBjb25zdGFudCAgICAgICAgICB8IEEgdmFsdWUgdG8gd3JhcC4gICAgICAgICAgfCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCkV4cHJlc3Npb24gc2VtYW50aWNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgp8U2VtYW50aWNzIGRpc2NsYWltZXIuLi58IHxJbnRlZ3JhbCBDb25zdGFudHwuCgpGb3IgYXJiaXRyYXJ5IGNoYXJhY3RlciBjb25zdGFudCBgYGNgYDoKCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IEV4cHJlc3Npb24gICAgICAgIHwgU2VtYW50aWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgYGBjaGFyXzxjPmBgICAgICAgfCBBbiB8SW50ZWdyYWwgQ29uc3RhbnR8IGBgeGBgIHN1Y2ggdGhhdCBgYHg6OnZhbHVlID09IGNgYCAgfAp8ICAgICAgICAgICAgICAgICAgIHwgYW5kIGBgeDo6dmFsdWVfdHlwZWBgIGlzIGlkZW50aWNhbCB0byBgYGNoYXJgYC4gICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhhbXBsZQotLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CgogICAgdHlwZWRlZiBjaGFyXzwnYyc+IGM7CiAgICAKICAgIEJPT1NUX01QTF9BU1NFUlQoKCBpc19zYW1lPCBjOjp2YWx1ZV90eXBlLCBjaGFyID4gKSk7CiAgICBCT09TVF9NUExfQVNTRVJUKCggaXNfc2FtZTwgYzo6dHlwZSwgYyA+ICkpOwogICAgQk9PU1RfTVBMX0FTU0VSVCgoIGlzX3NhbWU8IG5leHQ8IGMgPjo6dHlwZSwgY2hhcl88J2QnPiA+ICkpOwogICAgQk9PU1RfTVBMX0FTU0VSVCgoIGlzX3NhbWU8IHByaW9yPCBjID46OnR5cGUsIGNoYXJfPCdiJz4gPiApKTsKICAgIEJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIChjOjp2YWx1ZSksID09LCAnYycgKTsKICAgIGFzc2VydCggYygpID09ICdjJyApOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8RGF0YSBUeXBlc3wsIHxJbnRlZ3JhbCBDb25zdGFudHwsIHxpbnRffCwgfHNpemVfdHwsIHxpbnRlZ3JhbF9jfAoKCi4uIGNvcHlyaWdodDo6IENvcHlyaWdodCCpICAyMDA5IEVyaWMgTmllYmxlcgogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=