VG9kYXkgSSBub3RpY2VkIHRoZSBsaW5rICJFTUJFRERFRCBDT0RFIFNPVVJDRSIgb24gTVBMQUIg WCBTdGFydCBQYWdlCmFuZCBkZWNpZGVkIHRvIGNsaWNrIGl0LgpJdCB0b29rIG1lIHRvIHRoaXMg d2VicGFnZTogPGh0dHA6Ly93d3cuZW1iZWRkZWRjb2Rlc291cmNlLmNvbS8+CgpJJ20gZGlzYXBw b2ludGVkLCBpdCBoYXMgYSBsb3Qgb2YgZ2FyYmFnZS4gVGhleSBjb3VsZCBhdCBsZWFzdCBmaWx0 ZXIgb3IKcmF0ZSB0aGUgY29udHJpYnV0aW9ucy4KClRoZXJlIEkgZm91bmQgdGhpcyBjb2RlOgoK PGh0dHA6Ly93d3cuZW1iZWRkZWRjb2Rlc291cmNlLmNvbS9jb2Rlc25pcHBldC9mYXN0LXNxdWFy ZS1yb290LWNhbGN1bGF0aW9uLWZvci1pbnRlZ2VyLW51bWJlcnMtaXNxcnQ+CgpTbyBJIGRlY2lk ZWQgdG8gc2hhcmUgdGhpcyBjb2RlOgoKO0NvcHlyeWdodChjKSAyMDA1LCBJc2FhYyBNYXJpbm8g QmF2YXJlc2NvCjtQSUMyNC9kc1BJQyBhc3NlbWJseToKO0lucHV0IHZhbHVlICAgID0gVzEwCjtS ZXN1bHQgICAgICAgICAgICA9IFcxMQoKaXNxcnQ6ICAgICAgICBtb3YudyAgICAjMHgwMDgwLFcy CiAgICAgICAgICAgIG1vdi53ICAgICMwLFcxMQoKICAgICAgICAgICAgZG8gICAgICAgICM3LGdy ZWF0ZXIKCiAgICAgICAgICAgIGlvci53ICAgIFcyLFcxMSxXMTMKICAgICAgICAgICAgbXVsLnV1 ICAgIFcxMyxXMTMsVzQKICAgICAgICAgICAgY3AudyAgICBXMTAsVzQKICAgICAgICAgICAgYnJh ICAgICAgICBMVFUsR3JlYXRlcgogICAgICAgICAgICBpb3IudyAgICBXMixXMTEsVzExCmdyZWF0 ZXI6ICAgIGxzci53ICAgIFcyLCMxLFcyCgoKLyoKQyBlcXVpdmFsZW50OgoqLwoKdW5zaWduZWQg c2hvcnQgaXNxcnQoIHVuc2lnbmVkIHNob3J0IHZhbHVlICkKICAgIHsKICAgIHVuc2lnbmVkIHNo b3J0ICAgIHJlc3VsdCwgZXhwLCB0ZW1wOwoKICAgIGZvciggcmVzdWx0ICAgID0gMCwgZXhwID0g MHgwMDgwOyBleHAgIT0gMDsgZXhwID4+PSAxICkKICAgICAgICB7CiAgICAgICAgdGVtcCAgICA9 IHJlc3VsdCB8IGV4cDsKICAgICAgICBpZiggdGVtcCAqIHRlbXAgPD0gdmFsdWUgKQogICAgICAg ICAgICByZXN1bHQgICAgPSB0ZW1wOwogICAgICAgIH0KCiAgICByZXR1cm4gcmVzdWx0OwogICAg fQoKdW5zaWduZWQgbG9uZyBpc3FydGwoIHVuc2lnbmVkIGxvbmcgdmFsdWUgKQogICAgewogICAg dW5zaWduZWQgbG9uZyAgICByZXN1bHQsIGV4cCwgdGVtcDsKCiAgICBmb3IoIHJlc3VsdCAgICA9 IDAsIGV4cCA9IDB4MDAwMDgwMDA7IGV4cCAhPSAwOyBleHAgPj49IDEgKQogICAgICAgIHsKICAg ICAgICB0ZW1wICAgID0gcmVzdWx0IHwgZXhwOwogICAgICAgIGlmKCB0ZW1wICogdGVtcCA8PSB2 YWx1ZSApCiAgICAgICAgICAgIHJlc3VsdCAgICA9IHRlbXA7CiAgICAgICAgfQoKICAgIHJldHVy biByZXN1bHQ7CiAgICB9CgoKLS0tCkVzdGUgZW1haWwgZm9pIGVzY2FuZWFkbyBwZWxvIEF2YXN0 IGFudGl2w61ydXMuCmh0dHBzOi8vd3d3LmF2YXN0LmNvbS9hbnRpdmlydXMKCgotLSAKaHR0cDov L3d3dy5waWNsaXN0LmNvbS90ZWNocmVmL3BpY2xpc3QgUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2 ZQpWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdApodHRwOi8vbWFpbG1hbi5t aXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo= .