Li4gU2VxdWVuY2VzL1ZpZXdzLy96aXBfdmlldwoKemlwX3ZpZXcKPT09PT09PT0KClN5bm9wc2lzCi0tLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgIHRlbXBsYXRlPAogICAgICAgICAgdHlwZW5hbWUgU2VxdWVuY2VzCiAgICAgICAgPgogICAgc3RydWN0IHppcF92aWV3CiAgICB7CiAgICAgICAgLy8gfHVuc3BlY2lmaWVkfAogICAgICAgIC8vIHwuLi58CiAgICB9OwoKCgpEZXNjcmlwdGlvbgotLS0tLS0tLS0tLQoKUHJvdmlkZXMgYSAiemlwcGVkIiB2aWV3IG9udG8gc2V2ZXJhbCBzZXF1ZW5jZXM7IHRoYXQgaXMsIHJlcHJlc2VudHMgc2V2ZXJhbCAKc2VxdWVuY2VzIGFzIGEgc2luZ2xlIHNlcXVlbmNlIG9mIGVsZW1lbnRzIGVhY2ggb2Ygd2hpY2gsIGluIHR1cm4sIAppcyBhIHNlcXVlbmNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGBgU2VxdWVuY2VzYGBcICcgZWxlbWVudHMuIAoKCkhlYWRlcgotLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgI2luY2x1ZGUgPGJvb3N0L21wbC96aXBfdmlldy5ocHA+CgoKCk1vZGVsIG9mCi0tLS0tLS0tCgoqIHxGb3J3YXJkIFNlcXVlbmNlfAoKClBhcmFtZXRlcnMKLS0tLS0tLS0tLQoKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IFBhcmFtZXRlciAgICAgfCBSZXF1aXJlbWVudCAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYFNlcXVlbmNlc2BgIHwgQSB8Rm9yd2FyZCBTZXF1ZW5jZXwgb2YgICAgICAgICAgIHwgU2VxdWVuY2VzIHRvIGJlICJ6aXBwZWQiLiAgICAgfAp8ICAgICAgICAgICAgICAgfCB8Rm9yd2FyZCBTZXF1ZW5jZXxcIHMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCkV4cHJlc3Npb24gc2VtYW50aWNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgp8U2VtYW50aWNzIGRpc2NsYWltZXIuLi58IHxGb3J3YXJkIFNlcXVlbmNlfC4KCkluIHRoZSBmb2xsb3dpbmcgdGFibGUsIGBgdmBgIGlzIGFuIGluc3RhbmNlIG9mIGBgemlwX3ZpZXdgYCwgYGBzZXFgYCBhIHxGb3J3YXJkIFNlcXVlbmNlfCBvZiBgYG5gYAp8Rm9yd2FyZCBTZXF1ZW5jZXxcIHMuCgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBFeHByZXNzaW9uICAgICAgICAgICAgICAgICAgICB8IFNlbWFudGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwp8IC4uIHBhcnNlZC1saXRlcmFsOjogICAgICAgICAgIHwgQSBsYXp5IHxGb3J3YXJkIFNlcXVlbmNlfCBgYHZgYCBzdWNoIHRoYXQgZm9yIGVhY2ggYGBpYGAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluIHxiZWdpbi9lbmQ8dj58IGFuZCBmb3IgZWFjaCBgYGpgYCBpbiAgICAgICAgICAgICAgICAgICB8CnwgICAgemlwX3ZpZXc8c2VxPiAgICAgICAgICAgICAgfCBbYGBiZWdpbjxzZXE+Ojp0eXBlYGAsIGBgZW5kPHNlcT46OnR5cGVgYCkgICAgICAgICAgICAgICAgfAp8ICAgIHppcF92aWV3PHNlcT46OnR5cGUgICAgICAgIHwgYGBkZXJlZjxpPjo6dHlwZWBgIGlzIGlkZW50aWNhbCB0byAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgdHJhbnNmb3JtPCBkZXJlZjxqPjo6dHlwZSwgZGVyZWY8XzE+ID46OnR5cGVgYC4gICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IGBgc2l6ZTx2Pjo6dHlwZWBgICAgICAgICAgICAgIHwgVGhlIHNpemUgb2YgYGB2YGA7IGBgc2l6ZTx2Pjo6dmFsdWVgYCBpcyBlcXVhbCB0byAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBkZXJlZjwgbWluX2VsZW1lbnQ8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgdHJhbnNmb3JtX3ZpZXc8IHNlcSwgc2l6ZTxfMT4gPiAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICA+Ojp0eXBlID46OnR5cGU6OnZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxpbmVhciBjb21wbGV4aXR5OyBzZWUgfEZvcndhcmQgU2VxdWVuY2V8LiAgICAgICAgICAgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCkV4YW1wbGUKLS0tLS0tLQoKRWxlbWVudC13aXNlIHN1bSBvZiB0aHJlZSB2ZWN0b3JzLgoKLi4gcGFyc2VkLWxpdGVyYWw6OgogICAgCiAgICB0eXBlZGVmIHZlY3Rvcl9jPGludCwxLDIsMyw0LDU+IHYxOwogICAgdHlwZWRlZiB2ZWN0b3JfYzxpbnQsNSw0LDMsMiwxPiB2MjsKICAgIHR5cGVkZWYgdmVjdG9yX2M8aW50LDEsMSwxLDEsMT4gdjM7CiAgICAKICAgIHR5cGVkZWYgdHJhbnNmb3JtX3ZpZXc8CiAgICAgICAgICB6aXBfdmlldzwgdmVjdG9yPHYxLHYyLHYzPiA+CiAgICAgICAgLCB1bnBhY2tfYXJnczwgcGx1czxfMSxfMixfMz4gPgogICAgICAgID4gc3VtOwoKICAgIEJPT1NUX01QTF9BU1NFUlQoKCBlcXVhbDwgc3VtLCB2ZWN0b3JfYzxpbnQsNyw3LDcsNyw3PiA+ICkpOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8U2VxdWVuY2VzfCwgfFZpZXdzfCwgfGZpbHRlcl92aWV3fCwgfHRyYW5zZm9ybV92aWV3fCwgfGpvaW50X3ZpZXd8LCB8c2luZ2xlX3ZpZXd8LCB8aXRlcmF0b3JfcmFuZ2V8CgoKLi4gY29weXJpZ2h0OjogQ29weXJpZ2h0IKkgIDIwMDEtMjAwOSBBbGVrc2V5IEd1cnRvdm95IGFuZCBEYXZpZCBBYnJhaGFtcwogICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCiAgIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQo=