f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABkgAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIGZjZ2k7CnBrZ3BhdGggbmV0L2h0dHAvZmNnaTsKcHJpb3JpdHkgMTQ7CmltcG9ydCBidWZpbyBidWZpbyAiYnVmaW8iOwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBlcnJvcnMgZXJyb3JzICJlcnJvcnMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IGlvIGlvICJpbyI7CmltcG9ydCBpb3V0aWwgaW8vaW91dGlsICJpby9pb3V0aWwiOwppbXBvcnQgbmV0IG5ldCAibmV0IjsKaW1wb3J0IGh0dHAgbmV0L2h0dHAgIm5ldC9odHRwIjsKaW1wb3J0IGNnaSBuZXQvaHR0cC9jZ2kgIm5ldC9odHRwL2NnaSI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgc3RyaW5ncyBzdHJpbmdzICJzdHJpbmdzIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB0aW1lIHRpbWUgInRpbWUiOwppbml0IGZjZ2kgbmV0X2h0dHBfZmNnaS4uaW1wb3J0IDE0IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgY2lwaGVyIGNyeXB0b19jaXBoZXIuLmltcG9ydCA0IHN5c2NhbGwgaW50ZXJuYWxfc3lzY2FsbC4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBiYXNlNjQgZW5jb2RpbmdfYmFzZTY0Li5pbXBvcnQgNSBidWZpbyBidWZpby4uaW1wb3J0IDUgY3JjMzIgaGFzaF9jcmMzMi4uaW1wb3J0IDUgY3J5cHRvIGNyeXB0by4uaW1wb3J0IDUgZGVzIGNyeXB0b19kZXMuLmltcG9ydCA1IG9zIG9zLi5pbXBvcnQgNSBwYXRoIHBhdGguLmltcG9ydCA1IHN5bnRheCByZWdleHBfc3ludGF4Li5pbXBvcnQgNSBmaWxlcGF0aCBwYXRoX2ZpbGVwYXRoLi5pbXBvcnQgNiBmbXQgZm10Li5pbXBvcnQgNiBtZDUgY3J5cHRvX21kNS4uaW1wb3J0IDYgbmV0IG5ldC4uaW1wb3J0IDYgcGVtIGVuY29kaW5nX3BlbS4uaW1wb3J0IDYgcmVnZXhwIHJlZ2V4cC4uaW1wb3J0IDYgc2hhMSBjcnlwdG9fc2hhMS4uaW1wb3J0IDYgc2hhMjU2IGNyeXB0b19zaGEyNTYuLmltcG9ydCA2IHNoYTUxMiBjcnlwdG9fc2hhNTEyLi5pbXBvcnQgNiBiaWcgbWF0aF9iaWcuLmltcG9ydCA3IGV4ZWMgb3NfZXhlYy4uaW1wb3J0IDcgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3IGhleCBlbmNvZGluZ19oZXguLmltcG9ydCA3IGludGVybmFsIG5ldF9odHRwX2ludGVybmFsLi5pbXBvcnQgNyBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyBsb2cgbG9nLi5pbXBvcnQgNyBtaW1lIG1pbWUuLmltcG9ydCA3IGFzbjEgZW5jb2RpbmdfYXNuMS4uaW1wb3J0IDggZHNhIGNyeXB0b19kc2EuLmltcG9ydCA4IGVsbGlwdGljIGNyeXB0b19lbGxpcHRpYy4uaW1wb3J0IDggZ3ppcCBjb21wcmVzc19nemlwLi5pbXBvcnQgOCByYW5kIGNyeXB0b19yYW5kLi5pbXBvcnQgOCB0ZXh0cHJvdG8gbmV0X3RleHRwcm90by4uaW1wb3J0IDggZWNkc2EgY3J5cHRvX2VjZHNhLi5pbXBvcnQgOSBtdWx0aXBhcnQgbWltZV9tdWx0aXBhcnQuLmltcG9ydCA5IHBraXggY3J5cHRvX3g1MDlfcGtpeC4uaW1wb3J0IDkgcnNhIGNyeXB0b19yc2EuLmltcG9ydCA5IHg1MDkgY3J5cHRvX3g1MDkuLmltcG9ydCAxMCB0bHMgY3J5cHRvX3Rscy4uaW1wb3J0IDExIGh0dHAgbmV0X2h0dHAuLmltcG9ydCAxMiBjZ2kgbmV0X2h0dHBfY2dpLi5pbXBvcnQgMTM7CmZ1bmMgU2VydmUgKGwgPHR5cGUgMSAibmV0Lkxpc3RlbmVyIiA8dHlwZSAyIGludGVyZmFjZSB7IEFjY2VwdCAoKSAoYyA8dHlwZSAzICJuZXQuQ29ubiIgPHR5cGUgNCBpbnRlcmZhY2UgeyBSZWFkIChiIDx0eXBlIDUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgV3JpdGUgKGIgPHR5cGUgNiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBDbG9zZSAoKSA8dHlwZSAtMTk+OyBMb2NhbEFkZHIgKCkgPHR5cGUgNyAibmV0LkFkZHIiIDx0eXBlIDggaW50ZXJmYWNlIHsgTmV0d29yayAoKSA8dHlwZSAtMTY+OyBTdHJpbmcgKCkgPHR5cGUgLTE2PjsgfT4+OyBSZW1vdGVBZGRyICgpIDx0eXBlIDc+OyBTZXREZWFkbGluZSAodCA8dHlwZSA5ICJ0aW1lLlRpbWUiIDx0eXBlIDEwIHN0cnVjdCB7IC50aW1lLnNlYyA8dHlwZSAtND47IC50aW1lLm5zZWMgPHR5cGUgLTM+OyAudGltZS5sb2MgPHR5cGUgMTEgKjx0eXBlIDEyICJ0aW1lLkxvY2F0aW9uIiA8dHlwZSAxMyBzdHJ1Y3QgeyAudGltZS5uYW1lIDx0eXBlIC0xNj47IC50aW1lLnpvbmUgPHR5cGUgMTQgW10gPHR5cGUgMTUgIi50aW1lLnpvbmUiIDx0eXBlIDE2IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUub2Zmc2V0IDx0eXBlIC0xMT47IC50aW1lLmlzRFNUIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLnR4IDx0eXBlIDE3IFtdIDx0eXBlIDE4ICIudGltZS56b25lVHJhbnMiIDx0eXBlIDE5IHN0cnVjdCB7IC50aW1lLndoZW4gPHR5cGUgLTQ+OyAudGltZS5pbmRleCA8dHlwZSAtNT47IC50aW1lLmlzc3RkIDx0eXBlIC0xNT47IC50aW1lLmlzdXRjIDx0eXBlIC0xNT47IH0+Pj47IC50aW1lLmNhY2hlU3RhcnQgPHR5cGUgLTQ+OyAudGltZS5jYWNoZUVuZCA8dHlwZSAtND47IC50aW1lLmNhY2hlWm9uZSA8dHlwZSAyMCAqPHR5cGUgMTU+PjsgfT4KIGZ1bmMgKGwgPHR5cGUgMjEgKjx0eXBlIDEyPj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMjE+KSAudGltZS5sb29rdXBOYW1lIChuYW1lIDx0eXBlIC0xNj4sIHVuaXggPHR5cGUgLTQ+KSAob2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIG9rIDx0eXBlIC0xNT4pOwogZnVuYyAobCA8dHlwZSAyMT4pIC50aW1lLmxvb2t1cCAoc2VjIDx0eXBlIC00PikgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIHN0YXJ0IDx0eXBlIC00PiwgZW5kIDx0eXBlIC00Pik7CiBmdW5jIChsIDx0eXBlIDIxPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDIxPikgLnRpbWUubG9va3VwRmlyc3Rab25lICgpIDx0eXBlIC0xMT47CiBmdW5jIChsIDx0eXBlIDIxPikgLnRpbWUuZ2V0ICgpIDx0eXBlIDIxPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDk+KSBBZnRlciAodSA8dHlwZSA5PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDIyIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA5PikgRGF0ZSAoKSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSAyMyAidGltZS5Nb250aCIgPHR5cGUgLTExPgogZnVuYyAobSA8dHlwZSAyMz4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+LCBkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDk+KSAudGltZS5hYnMgKCkgPHR5cGUgLTg+OwogZnVuYyAodCA8dHlwZSA5PikgV2Vla2RheSAoKSA8dHlwZSAyNCAidGltZS5XZWVrZGF5IiA8dHlwZSAtMTE+CiBmdW5jIChkIDx0eXBlIDI0PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jICh0IDx0eXBlIDk+KSBOYW5vc2Vjb25kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDI1ICo8dHlwZSA5Pj4pIEdvYkRlY29kZSAoZGF0YSA8dHlwZSAyNiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIEluIChsb2MgPHR5cGUgMTE+KSA8dHlwZSA5PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIExvY2FsICgpIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgTW9udGggKCkgPHR5cGUgMjM+OwogZnVuYyAodCA8dHlwZSA5PikgSG91ciAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5PikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSAyNyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIFVuaXhOYW5vICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIEVxdWFsICh1IDx0eXBlIDk+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5PikgRm9ybWF0IChsYXlvdXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIEFkZERhdGUgKHllYXJzIDx0eXBlIC0xMT4sIG1vbnRocyA8dHlwZSAtMTE+LCBkYXlzIDx0eXBlIC0xMT4pIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgWm9uZSAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDk+KSBEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgOT4pIENsb2NrICgpIChob3VyIDx0eXBlIC0xMT4sIG1pbiA8dHlwZSAtMTE+LCBzZWMgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDk+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAyOCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIFVUQyAoKSA8dHlwZSA5PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIC50aW1lLmRhdGUgKGZ1bGwgPHR5cGUgLTE1PikgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgMjM+LCBkYXkgPHR5cGUgLTExPiwgeWRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIElzWmVybyAoKSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5PikgQmVmb3JlICh1IDx0eXBlIDk+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSA5PikgU2Vjb25kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIE1pbnV0ZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSA5PikgUm91bmQgKGQgPHR5cGUgMjkgInRpbWUuRHVyYXRpb24iIDx0eXBlIC00PgogZnVuYyAoZCA8dHlwZSAyOT4pIFNlY29uZHMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMjk+KSBNaW51dGVzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDI5PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChkIDx0eXBlIDI5PikgSG91cnMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMjk+KSBOYW5vc2Vjb25kcyAoKSA8dHlwZSAtND47Cj4pIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgU3ViICh1IDx0eXBlIDk+KSA8dHlwZSAyOT47CiBmdW5jICh0IDx0eXBlIDI1PikgVW5tYXJzaGFsVGV4dCAoZGF0YSA8dHlwZSAzMCBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIFVuaXggKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSA5PikgVHJ1bmNhdGUgKGQgPHR5cGUgMjk+KSA8dHlwZSA5PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIEFkZCAoZCA8dHlwZSAyOT4pIDx0eXBlIDk+OwogZnVuYyAodCA8dHlwZSA5PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDMxIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSA5PikgTG9jYXRpb24gKCkgPHR5cGUgMTE+OwogZnVuYyAodCA8dHlwZSAyNT4pIFVubWFyc2hhbEJpbmFyeSAoZGF0YSA8dHlwZSAzMiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgOT4pIElTT1dlZWsgKCkgKHllYXIgPHR5cGUgLTExPiwgd2VlayA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgOT4pIC50aW1lLmxvY2FicyAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgYWJzIDx0eXBlIC04Pik7CiBmdW5jICh0IDx0eXBlIDk+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDk+KSBZZWFyRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDI1PikgVW5tYXJzaGFsSlNPTiAoZGF0YSA8dHlwZSAzMyBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKPikgPHR5cGUgLTE5PjsgU2V0UmVhZERlYWRsaW5lICh0IDx0eXBlIDk+KSA8dHlwZSAtMTk+OyBTZXRXcml0ZURlYWRsaW5lICh0IDx0eXBlIDk+KSA8dHlwZSAtMTk+OyB9Pj4sIGVyciA8dHlwZSAtMTk+KTsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgQWRkciAoKSA8dHlwZSA3PjsgfT4+LCBoYW5kbGVyIDx0eXBlIDM0ICJuZXQvaHR0cC5IYW5kbGVyIiA8dHlwZSAzNSBpbnRlcmZhY2UgeyBTZXJ2ZUhUVFAgKD8gPHR5cGUgMzYgIm5ldC9odHRwLlJlc3BvbnNlV3JpdGVyIiA8dHlwZSAzNyBpbnRlcmZhY2UgeyBIZWFkZXIgKCkgPHR5cGUgMzggIm5ldC9odHRwLkhlYWRlciIgPHR5cGUgMzkgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA0MCBbXSA8dHlwZSAtMTY+Pj4KIGZ1bmMgKGggPHR5cGUgMzg+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSAzOD4pIFdyaXRlICh3IDx0eXBlIDQxICJpby5Xcml0ZXIiIDx0eXBlIDQyIGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDQzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGggPHR5cGUgMzg+KSAubmV0L2h0dHAuZ2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKGggPHR5cGUgMzg+KSBXcml0ZVN1YnNldCAodyA8dHlwZSA0MT4sIGV4Y2x1ZGUgPHR5cGUgNDQgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGggPHR5cGUgMzg+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMzg+KSAubmV0L2h0dHAuc29ydGVkS2V5VmFsdWVzIChleGNsdWRlIDx0eXBlIDQ1IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE1Pj4pIChrdnMgPHR5cGUgNDYgW10gPHR5cGUgNDcgIi5uZXQvaHR0cC5rZXlWYWx1ZXMiIDx0eXBlIDQ4IHN0cnVjdCB7IC5uZXQvaHR0cC5rZXkgPHR5cGUgLTE2PjsgLm5ldC9odHRwLnZhbHVlcyA8dHlwZSA0OSBbXSA8dHlwZSAtMTY+PjsgfT4+PiwgaHMgPHR5cGUgNTAgKjx0eXBlIDUxICIubmV0L2h0dHAuaGVhZGVyU29ydGVyIiA8dHlwZSA1MiBzdHJ1Y3QgeyAubmV0L2h0dHAua3ZzIDx0eXBlIDUzIFtdIDx0eXBlIDQ3Pj47IH0+CiBmdW5jIChzIDx0eXBlIDU0ICo8dHlwZSA1MT4+KSBMZXNzIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHMgPHR5cGUgNTQ+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHMgPHR5cGUgNTQ+KSBTd2FwIChpIDx0eXBlIC0xMT4sIGogPHR5cGUgLTExPik7Cj4+KTsKIGZ1bmMgKGggPHR5cGUgMzg+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMzg+KSAubmV0L2h0dHAuY2xvbmUgKCkgPHR5cGUgMzg+OwogZnVuYyAoaCA8dHlwZSAzOD4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwo+OyBXcml0ZSAoPyA8dHlwZSA1NSBbXSA8dHlwZSAtMjA+PikgKD8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsgV3JpdGVIZWFkZXIgKD8gPHR5cGUgLTExPik7IH0+PiwgPyA8dHlwZSA1NiAqPHR5cGUgNTcgIm5ldC9odHRwLlJlcXVlc3QiIDx0eXBlIDU4IHN0cnVjdCB7IE1ldGhvZCA8dHlwZSAtMTY+OyBVUkwgPHR5cGUgNTkgKjx0eXBlIDYwICJuZXQvdXJsLlVSTCIgInVybCIgPHR5cGUgNjEgc3RydWN0IHsgU2NoZW1lIDx0eXBlIC0xNj47IE9wYXF1ZSA8dHlwZSAtMTY+OyBVc2VyIDx0eXBlIDYyICo8dHlwZSA2MyAibmV0L3VybC5Vc2VyaW5mbyIgPHR5cGUgNjQgc3RydWN0IHsgLm5ldC91cmwudXNlcm5hbWUgPHR5cGUgLTE2PjsgLm5ldC91cmwucGFzc3dvcmQgPHR5cGUgLTE2PjsgLm5ldC91cmwucGFzc3dvcmRTZXQgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKHUgPHR5cGUgNjUgKjx0eXBlIDYzPj4pIFVzZXJuYW1lICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDY1PikgUGFzc3dvcmQgKCkgKD8gPHR5cGUgLTE2PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHUgPHR5cGUgNjU+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPj47IEhvc3QgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBSYXdRdWVyeSA8dHlwZSAtMTY+OyBGcmFnbWVudCA8dHlwZSAtMTY+OyB9PgogZnVuYyAodSA8dHlwZSA2NiAqPHR5cGUgNjA+PikgSXNBYnMgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHUgPHR5cGUgNjY+KSBSZXF1ZXN0VVJJICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDY2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh1IDx0eXBlIDY2PikgUmVzb2x2ZVJlZmVyZW5jZSAocmVmIDx0eXBlIDY2PikgPHR5cGUgNjY+OwogZnVuYyAodSA8dHlwZSA2Nj4pIFF1ZXJ5ICgpIDx0eXBlIDY3ICJuZXQvdXJsLlZhbHVlcyIgPHR5cGUgNjggbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSA2OSBbXSA8dHlwZSAtMTY+Pj4KIGZ1bmMgKHYgPHR5cGUgNjc+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSA2Nz4pIEVuY29kZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodiA8dHlwZSA2Nz4pIFNldCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSA2Nz4pIEFkZCAoa2V5IDx0eXBlIC0xNj4sIHZhbHVlIDx0eXBlIC0xNj4pOwogZnVuYyAodiA8dHlwZSA2Nz4pIERlbCAoa2V5IDx0eXBlIC0xNj4pOwo+OwogZnVuYyAodSA8dHlwZSA2Nj4pIFBhcnNlIChyZWYgPHR5cGUgLTE2PikgKD8gPHR5cGUgNjY+LCA/IDx0eXBlIC0xOT4pOwo+PjsgUHJvdG8gPHR5cGUgLTE2PjsgUHJvdG9NYWpvciA8dHlwZSAtMTE+OyBQcm90b01pbm9yIDx0eXBlIC0xMT47IEhlYWRlciA8dHlwZSAzOD47IEJvZHkgPHR5cGUgNzAgImlvLlJlYWRDbG9zZXIiIDx0eXBlIDcxIGludGVyZmFjZSB7ID8gPHR5cGUgNzIgImlvLlJlYWRlciIgPHR5cGUgNzMgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA3NCBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgNzUgImlvLkNsb3NlciIgPHR5cGUgNzYgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9Pj47IENvbnRlbnRMZW5ndGggPHR5cGUgLTQ+OyBUcmFuc2ZlckVuY29kaW5nIDx0eXBlIDc3IFtdIDx0eXBlIC0xNj4+OyBDbG9zZSA8dHlwZSAtMTU+OyBIb3N0IDx0eXBlIC0xNj47IEZvcm0gPHR5cGUgNjc+OyBQb3N0Rm9ybSA8dHlwZSA2Nz47IE11bHRpcGFydEZvcm0gPHR5cGUgNzggKjx0eXBlIDc5ICJtaW1lL211bHRpcGFydC5Gb3JtIiAibXVsdGlwYXJ0IiA8dHlwZSA4MCBzdHJ1Y3QgeyBWYWx1ZSA8dHlwZSA4MSBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDgyIFtdIDx0eXBlIC0xNj4+PjsgRmlsZSA8dHlwZSA4MyBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDg0IFtdIDx0eXBlIDg1ICo8dHlwZSA4NiAibWltZS9tdWx0aXBhcnQuRmlsZUhlYWRlciIgPHR5cGUgODcgc3RydWN0IHsgRmlsZW5hbWUgPHR5cGUgLTE2PjsgSGVhZGVyIDx0eXBlIDg4ICJuZXQvdGV4dHByb3RvLk1JTUVIZWFkZXIiICJ0ZXh0cHJvdG8iIDx0eXBlIDg5IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgOTAgW10gPHR5cGUgLTE2Pj4+CiBmdW5jIChoIDx0eXBlIDg4PikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKGggPHR5cGUgODg+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgODg+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgODg+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsgLm1pbWUvbXVsdGlwYXJ0LmNvbnRlbnQgPHR5cGUgOTEgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC50bXBmaWxlIDx0eXBlIC0xNj47IH0+CiBmdW5jIChmaCA8dHlwZSA5MiAqPHR5cGUgODY+PikgT3BlbiAoKSAoPyA8dHlwZSA5MyAibWltZS9tdWx0aXBhcnQuRmlsZSIgPHR5cGUgOTQgaW50ZXJmYWNlIHsgPyA8dHlwZSA3Mj47ID8gPHR5cGUgOTUgImlvLlJlYWRlckF0IiA8dHlwZSA5NiBpbnRlcmZhY2UgeyBSZWFkQXQgKHAgPHR5cGUgOTcgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDk4ICJpby5TZWVrZXIiIDx0eXBlIDk5IGludGVyZmFjZSB7IFNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7IH0+PjsgPyA8dHlwZSA3NT47IH0+PiwgPyA8dHlwZSAtMTk+KTsKPj4+PjsgfT4KIGZ1bmMgKGYgPHR5cGUgMTAwICo8dHlwZSA3OT4+KSBSZW1vdmVBbGwgKCkgPHR5cGUgLTE5PjsKPj47IFRyYWlsZXIgPHR5cGUgMzg+OyBSZW1vdGVBZGRyIDx0eXBlIC0xNj47IFJlcXVlc3RVUkkgPHR5cGUgLTE2PjsgVExTIDx0eXBlIDEwMSAqPHR5cGUgMTAyICJjcnlwdG8vdGxzLkNvbm5lY3Rpb25TdGF0ZSIgInRscyIgPHR5cGUgMTAzIHN0cnVjdCB7IFZlcnNpb24gPHR5cGUgLTY+OyBIYW5kc2hha2VDb21wbGV0ZSA8dHlwZSAtMTU+OyBEaWRSZXN1bWUgPHR5cGUgLTE1PjsgQ2lwaGVyU3VpdGUgPHR5cGUgLTY+OyBOZWdvdGlhdGVkUHJvdG9jb2wgPHR5cGUgLTE2PjsgTmVnb3RpYXRlZFByb3RvY29sSXNNdXR1YWwgPHR5cGUgLTE1PjsgU2VydmVyTmFtZSA8dHlwZSAtMTY+OyBQZWVyQ2VydGlmaWNhdGVzIDx0eXBlIDEwNCBbXSA8dHlwZSAxMDUgKjx0eXBlIDEwNiAiY3J5cHRvL3g1MDkuQ2VydGlmaWNhdGUiICJ4NTA5IiA8dHlwZSAxMDcgc3RydWN0IHsgUmF3IDx0eXBlIDEwOCBbXSA8dHlwZSAtMjA+PjsgUmF3VEJTQ2VydGlmaWNhdGUgPHR5cGUgMTA5IFtdIDx0eXBlIC0yMD4+OyBSYXdTdWJqZWN0UHVibGljS2V5SW5mbyA8dHlwZSAxMTAgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3QgPHR5cGUgMTExIFtdIDx0eXBlIC0yMD4+OyBSYXdJc3N1ZXIgPHR5cGUgMTEyIFtdIDx0eXBlIC0yMD4+OyBTaWduYXR1cmUgPHR5cGUgMTEzIFtdIDx0eXBlIC0yMD4+OyBTaWduYXR1cmVBbGdvcml0aG0gPHR5cGUgMTE0ICJjcnlwdG8veDUwOS5TaWduYXR1cmVBbGdvcml0aG0iIDx0eXBlIC0xMT4+OyBQdWJsaWNLZXlBbGdvcml0aG0gPHR5cGUgMTE1ICJjcnlwdG8veDUwOS5QdWJsaWNLZXlBbGdvcml0aG0iIDx0eXBlIC0xMT4+OyBQdWJsaWNLZXkgPHR5cGUgMTE2IGludGVyZmFjZSB7IH0+OyBWZXJzaW9uIDx0eXBlIC0xMT47IFNlcmlhbE51bWJlciA8dHlwZSAxMTcgKjx0eXBlIDExOCAibWF0aC9iaWcuSW50IiAiYmlnIiA8dHlwZSAxMTkgc3RydWN0IHsgLm1hdGgvYmlnLm5lZyA8dHlwZSAtMTU+OyAubWF0aC9iaWcuYWJzIDx0eXBlIDEyMCAiLm1hdGgvYmlnLm5hdCIgPHR5cGUgMTIxIFtdIDx0eXBlIDEyMiAibWF0aC9iaWcuV29yZCIgPHR5cGUgLTEzPj4+CiBmdW5jICh6IDx0eXBlIDEyMD4pIC5tYXRoL2JpZy5tdWwgKHggPHR5cGUgMTIwPiwgeSA8dHlwZSAxMjA+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAxMjMgImlvLlJ1bmVTY2FubmVyIiA8dHlwZSAxMjQgaW50ZXJmYWNlIHsgPyA8dHlwZSAxMjUgImlvLlJ1bmVSZWFkZXIiIDx0eXBlIDEyNiBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IH0+PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxMjA+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDEyMD4pIC5tYXRoL2JpZy5hZGQgKHggPHR5cGUgMTIwPiwgeSA8dHlwZSAxMjA+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuYW5kTm90ICh4IDx0eXBlIDEyMD4sIHkgPHR5cGUgMTIwPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLnNldEJpdCAoeCA8dHlwZSAxMjA+LCBpIDx0eXBlIC0xMj4sIGIgPHR5cGUgLTEyPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLnN1YiAoeCA8dHlwZSAxMjA+LCB5IDx0eXBlIDEyMD4pIDx0eXBlIDEyMD47CiBmdW5jICh4IDx0eXBlIDEyMD4pIC5tYXRoL2JpZy5tb2RXIChkIDx0eXBlIDEyMj4pIChyIDx0eXBlIDEyMj4pOwogZnVuYyAobiA8dHlwZSAxMjA+KSAubWF0aC9iaWcucHJvYmFibHlQcmltZSAocmVwcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocSA8dHlwZSAxMjA+KSAubWF0aC9iaWcuY29udmVydFdvcmRzIChzIDx0eXBlIDEyNyBbXSA8dHlwZSAtMjA+PiwgY2hhcnNldCA8dHlwZSAtMTY+LCBiIDx0eXBlIDEyMj4sIG5kaWdpdHMgPHR5cGUgLTExPiwgYmIgPHR5cGUgMTIyPiwgdGFibGUgPHR5cGUgMTI4IFtdIDx0eXBlIDEyOSAiLm1hdGgvYmlnLmRpdmlzb3IiIDx0eXBlIDEzMCBzdHJ1Y3QgeyAubWF0aC9iaWcuYmJiIDx0eXBlIDEyMD47IC5tYXRoL2JpZy5uYml0cyA8dHlwZSAtMTE+OyAubWF0aC9iaWcubmRpZ2l0cyA8dHlwZSAtMTE+OyB9Pj4+KTsKIGZ1bmMgKHggPHR5cGUgMTIwPikgLm1hdGgvYmlnLnN0cmluZyAoY2hhcnNldCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuZGl2VyAoeCA8dHlwZSAxMjA+LCB5IDx0eXBlIDEyMj4pIChxIDx0eXBlIDEyMD4sIHIgPHR5cGUgMTIyPik7CiBmdW5jICh6IDx0eXBlIDEyMD4pIC5tYXRoL2JpZy5zaHIgKHggPHR5cGUgMTIwPiwgcyA8dHlwZSAtMTI+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcubXVsUmFuZ2UgKGEgPHR5cGUgLTg+LCBiIDx0eXBlIC04PikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLm11bEFkZFdXICh4IDx0eXBlIDEyMD4sIHkgPHR5cGUgMTIyPiwgciA8dHlwZSAxMjI+KSA8dHlwZSAxMjA+OwogZnVuYyAoeCA8dHlwZSAxMjA+KSAubWF0aC9iaWcuZGVjaW1hbFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuYW5kICh4IDx0eXBlIDEyMD4sIHkgPHR5cGUgMTIwPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLmJpdCAoaSA8dHlwZSAtMTI+KSA8dHlwZSAtMTI+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcueG9yICh4IDx0eXBlIDEyMD4sIHkgPHR5cGUgMTIwPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLnNldCAoeCA8dHlwZSAxMjA+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcucmFuZG9tIChyYW5kIDx0eXBlIDEzMSAqPHR5cGUgMTMyICJtYXRoL3JhbmQuUmFuZCIgInJhbmQiIDx0eXBlIDEzMyBzdHJ1Y3QgeyAubWF0aC9yYW5kLnNyYyA8dHlwZSAxMzQgIm1hdGgvcmFuZC5Tb3VyY2UiIDx0eXBlIDEzNSBpbnRlcmZhY2UgeyBJbnQ2MyAoKSA8dHlwZSAtND47IFNlZWQgKHNlZWQgPHR5cGUgLTQ+KTsgfT4+OyB9PgogZnVuYyAociA8dHlwZSAxMzYgKjx0eXBlIDEzMj4+KSBFeHBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEzNj4pIEludDMxbiAobiA8dHlwZSAtMz4pIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMTM2PikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMTM2PikgSW50biAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxMzY+KSBQZXJtIChuIDx0eXBlIC0xMT4pIDx0eXBlIDEzNyBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMTM2PikgTm9ybUZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTM2PikgSW50MzEgKCkgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAxMzY+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEzNj4pIFNlZWQgKHNlZWQgPHR5cGUgLTQ+KTsKIGZ1bmMgKHIgPHR5cGUgMTM2PikgSW50ICgpIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDEzNj4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMTM2PikgSW50NjNuIChuIDx0eXBlIC00PikgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAxMzY+KSBGbG9hdDMyICgpIDx0eXBlIC05PjsKPj4sIGxpbWl0IDx0eXBlIDEyMD4sIG4gPHR5cGUgLTExPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHggPHR5cGUgMTIwPikgLm1hdGgvYmlnLmNtcCAoeSA8dHlwZSAxMjA+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLm9yICh4IDx0eXBlIDEyMD4sIHkgPHR5cGUgMTIwPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHggPHR5cGUgMTIwPikgLm1hdGgvYmlnLmJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuc2V0V29yZCAoeCA8dHlwZSAxMjI+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuc2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLmRpdiAoejIgPHR5cGUgMTIwPiwgdSA8dHlwZSAxMjA+LCB2IDx0eXBlIDEyMD4pIChxIDx0eXBlIDEyMD4sIHIgPHR5cGUgMTIwPik7CiBmdW5jICh4IDx0eXBlIDEyMD4pIC5tYXRoL2JpZy50cmFpbGluZ1plcm9CaXRzICgpIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDEyMD4pIC5tYXRoL2JpZy5leHBOTldpbmRvd2VkICh4IDx0eXBlIDEyMD4sIHkgPHR5cGUgMTIwPiwgbSA8dHlwZSAxMjA+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuZGl2TGFyZ2UgKHUgPHR5cGUgMTIwPiwgdUluIDx0eXBlIDEyMD4sIHYgPHR5cGUgMTIwPikgKHEgPHR5cGUgMTIwPiwgciA8dHlwZSAxMjA+KTsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLm5vcm0gKCkgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLnNldEJ5dGVzIChidWYgPHR5cGUgMTM4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcubWFrZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDEyMD4sIHMgPHR5cGUgLTEyPikgPHR5cGUgMTIwPjsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLmJ5dGVzIChidWYgPHR5cGUgMTM5IFtdIDx0eXBlIC0yMD4+KSAoaSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgMTIwPikgLm1hdGgvYmlnLmNsZWFyICgpOwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuZXhwV1cgKHggPHR5cGUgMTIyPiwgeSA8dHlwZSAxMjI+KSA8dHlwZSAxMjA+OwogZnVuYyAoeiA8dHlwZSAxMjA+KSAubWF0aC9iaWcuZXhwTk4gKHggPHR5cGUgMTIwPiwgeSA8dHlwZSAxMjA+LCBtIDx0eXBlIDEyMD4pIDx0eXBlIDEyMD47Cj47IH0+CiBmdW5jICh6IDx0eXBlIDE0MCAqPHR5cGUgMTE4Pj4pIE5lZyAoeCA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBRdW9SZW0gKHggPHR5cGUgMTQwPiwgeSA8dHlwZSAxNDA+LCByIDx0eXBlIDE0MD4pICg/IDx0eXBlIDE0MD4sID8gPHR5cGUgMTQwPik7CiBmdW5jICh4IDx0eXBlIDE0MD4pIEJ5dGVzICgpIDx0eXBlIDE0MSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgU2V0Qml0cyAoYWJzIDx0eXBlIDE0MiBbXSA8dHlwZSAxMjI+PikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgU2V0Qml0ICh4IDx0eXBlIDE0MD4sIGkgPHR5cGUgLTExPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBYb3IgKHggPHR5cGUgMTQwPiwgeSA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBTZXRJbnQ2NCAoeCA8dHlwZSAtND4pIDx0eXBlIDE0MD47CiBmdW5jICh6IDx0eXBlIDE0MD4pIE5vdCAoeCA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBVbm1hcnNoYWxKU09OICh0ZXh0IDx0eXBlIDE0MyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgT3IgKHggPHR5cGUgMTQwPiwgeSA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBTZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAxNDA+OwogZnVuYyAoeCA8dHlwZSAxNDA+KSBJbnQ2NCAoKSA8dHlwZSAtND47CiBmdW5jICh6IDx0eXBlIDE0MD4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDEyMz4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMTQwPiwgPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxNDA+KSBHQ0QgKHggPHR5cGUgMTQwPiwgeSA8dHlwZSAxNDA+LCBhIDx0eXBlIDE0MD4sIGIgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgUmVtICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHggPHR5cGUgMTQwPikgQml0IChpIDx0eXBlIC0xMT4pIDx0eXBlIC0xMj47CiBmdW5jICh4IDx0eXBlIDE0MD4pIEJpdHMgKCkgPHR5cGUgMTQ0IFtdIDx0eXBlIDEyMj4+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBTZXRCeXRlcyAoYnVmIDx0eXBlIDE0NSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgRGl2TW9kICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPiwgbSA8dHlwZSAxNDA+KSAoPyA8dHlwZSAxNDA+LCA/IDx0eXBlIDE0MD4pOwogZnVuYyAoeiA8dHlwZSAxNDA+KSBSc2ggKHggPHR5cGUgMTQwPiwgbiA8dHlwZSAtMTI+KSA8dHlwZSAxNDA+OwogZnVuYyAoeCA8dHlwZSAxNDA+KSBDbXAgKHkgPHR5cGUgMTQwPikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh6IDx0eXBlIDE0MD4pIFNjYW4gKHMgPHR5cGUgMTQ2ICJmbXQuU2NhblN0YXRlIiA8dHlwZSAxNDcgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgU2tpcFNwYWNlICgpOyBUb2tlbiAoc2tpcFNwYWNlIDx0eXBlIC0xNT4sIGYgPHR5cGUgMTQ4ICg/IDx0eXBlIC0yMT4pIDx0eXBlIC0xNT4+KSAodG9rZW4gPHR5cGUgMTQ5IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFJlYWQgKGJ1ZiA8dHlwZSAxNTAgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBjaCA8dHlwZSAtMjE+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSAxNDA+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgMTUxIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeCA8dHlwZSAxNDA+KSBQcm9iYWJseVByaW1lIChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jICh4IDx0eXBlIDE0MD4pIFNpZ24gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgTW9kICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgRXhwICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPiwgbSA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeCA8dHlwZSAxNDA+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgQWJzICh4IDx0eXBlIDE0MD4pIDx0eXBlIDE0MD47CiBmdW5jICh6IDx0eXBlIDE0MD4pIFVubWFyc2hhbFRleHQgKHRleHQgPHR5cGUgMTUyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBSYW5kIChybmQgPHR5cGUgMTMxPiwgbiA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBBbmQgKHggPHR5cGUgMTQwPiwgeSA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBNb2RJbnZlcnNlIChnIDx0eXBlIDE0MD4sIG4gPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgUXVvICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgQWRkICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgTHNoICh4IDx0eXBlIDE0MD4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgQW5kTm90ICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgU2V0ICh4IDx0eXBlIDE0MD4pIDx0eXBlIDE0MD47CiBmdW5jICh6IDx0eXBlIDE0MD4pIE11bCAoeCA8dHlwZSAxNDA+LCB5IDx0eXBlIDE0MD4pIDx0eXBlIDE0MD47CiBmdW5jICh6IDx0eXBlIDE0MD4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDE1MyBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxNDA+KSBEaXYgKHggPHR5cGUgMTQwPiwgeSA8dHlwZSAxNDA+KSA8dHlwZSAxNDA+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSBCaW5vbWlhbCAobiA8dHlwZSAtND4sIGsgPHR5cGUgLTQ+KSA8dHlwZSAxNDA+OwogZnVuYyAoeCA8dHlwZSAxNDA+KSBGb3JtYXQgKHMgPHR5cGUgMTU0ICJmbXQuU3RhdGUiIDx0eXBlIDE1NSBpbnRlcmZhY2UgeyBXcml0ZSAoYiA8dHlwZSAxNTYgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBQcmVjaXNpb24gKCkgKHByZWMgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IEZsYWcgKGMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsgfT4+LCBjaCA8dHlwZSAtMjE+KTsKIGZ1bmMgKHogPHR5cGUgMTQwPikgTXVsUmFuZ2UgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgU2V0U3RyaW5nIChzIDx0eXBlIC0xNj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMTQwPiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHggPHR5cGUgMTQwPikgVWludDY0ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgMTU3IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeCA8dHlwZSAxNDA+KSBCaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgR29iRGVjb2RlIChidWYgPHR5cGUgMTU4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAxNDA+KSAubWF0aC9iaWcuYmluYXJ5R0NEIChhIDx0eXBlIDE0MD4sIGIgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKIGZ1bmMgKHogPHR5cGUgMTQwPikgU3ViICh4IDx0eXBlIDE0MD4sIHkgPHR5cGUgMTQwPikgPHR5cGUgMTQwPjsKPj47IElzc3VlciA8dHlwZSAxNTkgImNyeXB0by94NTA5L3BraXguTmFtZSIgInBraXgiIDx0eXBlIDE2MCBzdHJ1Y3QgeyBDb3VudHJ5IDx0eXBlIDE2MSBbXSA8dHlwZSAtMTY+PjsgT3JnYW5pemF0aW9uIDx0eXBlIDE2MT47IE9yZ2FuaXphdGlvbmFsVW5pdCA8dHlwZSAxNjE+OyBMb2NhbGl0eSA8dHlwZSAxNjIgW10gPHR5cGUgLTE2Pj47IFByb3ZpbmNlIDx0eXBlIDE2Mj47IFN0cmVldEFkZHJlc3MgPHR5cGUgMTYzIFtdIDx0eXBlIC0xNj4+OyBQb3N0YWxDb2RlIDx0eXBlIDE2Mz47IFNlcmlhbE51bWJlciA8dHlwZSAtMTY+OyBDb21tb25OYW1lIDx0eXBlIC0xNj47IE5hbWVzIDx0eXBlIDE2NCBbXSA8dHlwZSAxNjUgImNyeXB0by94NTA5L3BraXguQXR0cmlidXRlVHlwZUFuZFZhbHVlIiA8dHlwZSAxNjYgc3RydWN0IHsgVHlwZSA8dHlwZSAxNjcgImVuY29kaW5nL2FzbjEuT2JqZWN0SWRlbnRpZmllciIgImFzbjEiIDx0eXBlIDE2OCBbXSA8dHlwZSAtMTE+PgogZnVuYyAob2kgPHR5cGUgMTY3PikgRXF1YWwgKG90aGVyIDx0eXBlIDE2Nz4pIDx0eXBlIC0xNT47CiBmdW5jIChvaSA8dHlwZSAxNjc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgVmFsdWUgPHR5cGUgMTY5IGludGVyZmFjZSB7IH0+OyB9Pj4+OyB9PgogZnVuYyAobiA8dHlwZSAxNTk+KSBUb1JETlNlcXVlbmNlICgpIChyZXQgPHR5cGUgMTcwICJjcnlwdG8veDUwOS9wa2l4LlJETlNlcXVlbmNlIiA8dHlwZSAxNzEgW10gPHR5cGUgMTcyICJjcnlwdG8veDUwOS9wa2l4LlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVTRVQiIDx0eXBlIDE3MyBbXSA8dHlwZSAxNjU+Pj4+Pik7CiBmdW5jIChuIDx0eXBlIDE3NCAqPHR5cGUgMTU5Pj4pIEZpbGxGcm9tUkROU2VxdWVuY2UgKHJkbnMgPHR5cGUgMTc1ICo8dHlwZSAxNzA+Pik7Cj47IFN1YmplY3QgPHR5cGUgMTU5PjsgTm90QmVmb3JlIDx0eXBlIDk+OyBOb3RBZnRlciA8dHlwZSA5PjsgS2V5VXNhZ2UgPHR5cGUgMTc2ICJjcnlwdG8veDUwOS5LZXlVc2FnZSIgPHR5cGUgLTExPj47IEV4dGVuc2lvbnMgPHR5cGUgMTc3IFtdIDx0eXBlIDE3OCAiY3J5cHRvL3g1MDkvcGtpeC5FeHRlbnNpb24iIDx0eXBlIDE3OSBzdHJ1Y3QgeyBJZCA8dHlwZSAxNjc+OyBDcml0aWNhbCA8dHlwZSAtMTU+ICJhc24xOlwib3B0aW9uYWxcIiI7IFZhbHVlIDx0eXBlIDE4MCBbXSA8dHlwZSAtMjA+PjsgfT4+PjsgRXh0cmFFeHRlbnNpb25zIDx0eXBlIDE4MSBbXSA8dHlwZSAxNzg+PjsgRXh0S2V5VXNhZ2UgPHR5cGUgMTgyIFtdIDx0eXBlIDE4MyAiY3J5cHRvL3g1MDkuRXh0S2V5VXNhZ2UiIDx0eXBlIC0xMT4+PjsgVW5rbm93bkV4dEtleVVzYWdlIDx0eXBlIDE4NCBbXSA8dHlwZSAxNjc+PjsgQmFzaWNDb25zdHJhaW50c1ZhbGlkIDx0eXBlIC0xNT47IElzQ0EgPHR5cGUgLTE1PjsgTWF4UGF0aExlbiA8dHlwZSAtMTE+OyBNYXhQYXRoTGVuWmVybyA8dHlwZSAtMTU+OyBTdWJqZWN0S2V5SWQgPHR5cGUgMTg1IFtdIDx0eXBlIC0yMD4+OyBBdXRob3JpdHlLZXlJZCA8dHlwZSAxODYgW10gPHR5cGUgLTIwPj47IE9DU1BTZXJ2ZXIgPHR5cGUgMTg3IFtdIDx0eXBlIC0xNj4+OyBJc3N1aW5nQ2VydGlmaWNhdGVVUkwgPHR5cGUgMTg4IFtdIDx0eXBlIC0xNj4+OyBETlNOYW1lcyA8dHlwZSAxODkgW10gPHR5cGUgLTE2Pj47IEVtYWlsQWRkcmVzc2VzIDx0eXBlIDE5MCBbXSA8dHlwZSAtMTY+PjsgSVBBZGRyZXNzZXMgPHR5cGUgMTkxIFtdIDx0eXBlIDE5MiAibmV0LklQIiA8dHlwZSAxOTMgW10gPHR5cGUgLTIwPj4KIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDE5NCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIElzTGlua0xvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxOTI+KSBJc011bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTkyPikgVG80ICgpIDx0eXBlIDE5Mj47CiBmdW5jIChpcCA8dHlwZSAxOTUgKjx0eXBlIDE5Mj4+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDE5NiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIFRvMTYgKCkgPHR5cGUgMTkyPjsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoaXAgPHR5cGUgMTkyPikgSXNMaW5rTG9jYWxVbmljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxOTI+KSBJc0xvb3BiYWNrICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxOTI+KSBFcXVhbCAoeCA8dHlwZSAxOTI+KSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTkyPikgRGVmYXVsdE1hc2sgKCkgPHR5cGUgMTk3ICJuZXQuSVBNYXNrIiA8dHlwZSAxOTggW10gPHR5cGUgLTIwPj4KIGZ1bmMgKG0gPHR5cGUgMTk3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChtIDx0eXBlIDE5Nz4pIFNpemUgKCkgKG9uZXMgPHR5cGUgLTExPiwgYml0cyA8dHlwZSAtMTE+KTsKPjsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIE1hc2sgKG1hc2sgPHR5cGUgMTk3PikgPHR5cGUgMTkyPjsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIElzVW5zcGVjaWZpZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIElzSW50ZXJmYWNlTG9jYWxNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDE5Mj4pIElzR2xvYmFsVW5pY2FzdCAoKSA8dHlwZSAtMTU+Owo+PjsgUGVybWl0dGVkRE5TRG9tYWluc0NyaXRpY2FsIDx0eXBlIC0xNT47IFBlcm1pdHRlZEROU0RvbWFpbnMgPHR5cGUgMTk5IFtdIDx0eXBlIC0xNj4+OyBDUkxEaXN0cmlidXRpb25Qb2ludHMgPHR5cGUgMjAwIFtdIDx0eXBlIC0xNj4+OyBQb2xpY3lJZGVudGlmaWVycyA8dHlwZSAyMDEgW10gPHR5cGUgMTY3Pj47IH0+CiBmdW5jIChjIDx0eXBlIDIwMiAqPHR5cGUgMTA2Pj4pIENoZWNrU2lnbmF0dXJlIChhbGdvIDx0eXBlIDExND4sIHNpZ25lZCA8dHlwZSAyMDMgW10gPHR5cGUgLTIwPj4sIHNpZ25hdHVyZSA8dHlwZSAyMDM+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMDI+KSAuY3J5cHRvL3g1MDkuc3lzdGVtVmVyaWZ5IChvcHRzIDx0eXBlIDIwNCAqPHR5cGUgMjA1ICJjcnlwdG8veDUwOS5WZXJpZnlPcHRpb25zIiA8dHlwZSAyMDYgc3RydWN0IHsgRE5TTmFtZSA8dHlwZSAtMTY+OyBJbnRlcm1lZGlhdGVzIDx0eXBlIDIwNyAqPHR5cGUgMjA4ICJjcnlwdG8veDUwOS5DZXJ0UG9vbCIgPHR5cGUgMjA5IHN0cnVjdCB7IC5jcnlwdG8veDUwOS5ieVN1YmplY3RLZXlJZCA8dHlwZSAyMTAgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAyMTEgW10gPHR5cGUgLTExPj4+OyAuY3J5cHRvL3g1MDkuYnlOYW1lIDx0eXBlIDIxMiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIxMyBbXSA8dHlwZSAtMTE+Pj47IC5jcnlwdG8veDUwOS5jZXJ0cyA8dHlwZSAyMTQgW10gPHR5cGUgMjAyPj47IH0+CiBmdW5jIChzIDx0eXBlIDIxNSAqPHR5cGUgMjA4Pj4pIEFwcGVuZENlcnRzRnJvbVBFTSAocGVtQ2VydHMgPHR5cGUgMjE2IFtdIDx0eXBlIC0yMD4+KSAob2sgPHR5cGUgLTE1Pik7CiBmdW5jIChzIDx0eXBlIDIxNT4pIFN1YmplY3RzICgpIChyZXMgPHR5cGUgMjE3IFtdIDx0eXBlIDIxOCBbXSA8dHlwZSAtMjA+Pj4pOwogZnVuYyAocyA8dHlwZSAyMTU+KSBBZGRDZXJ0IChjZXJ0IDx0eXBlIDIwMj4pOwogZnVuYyAocyA8dHlwZSAyMTU+KSAuY3J5cHRvL3g1MDkuZmluZFZlcmlmaWVkUGFyZW50cyAoY2VydCA8dHlwZSAyMDI+KSAocGFyZW50cyA8dHlwZSAyMTkgW10gPHR5cGUgLTExPj4sIGVyckNlcnQgPHR5cGUgMjAyPiwgZXJyIDx0eXBlIC0xOT4pOwo+PjsgUm9vdHMgPHR5cGUgMjA3PjsgQ3VycmVudFRpbWUgPHR5cGUgOT47IEtleVVzYWdlcyA8dHlwZSAyMjAgW10gPHR5cGUgMTgzPj47IH0+Pj4pIChjaGFpbnMgPHR5cGUgMjIxIFtdIDx0eXBlIDIyMiBbXSA8dHlwZSAyMDI+Pj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjAyPikgQ2hlY2tTaWduYXR1cmVGcm9tIChwYXJlbnQgPHR5cGUgMjAyPikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjAyPikgRXF1YWwgKG90aGVyIDx0eXBlIDIwMj4pIDx0eXBlIC0xNT47CiBmdW5jIChjIDx0eXBlIDIwMj4pIFZlcmlmeSAob3B0cyA8dHlwZSAyMDU+KSAoY2hhaW5zIDx0eXBlIDIyMyBbXSA8dHlwZSAyMjQgW10gPHR5cGUgMjAyPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDIwMj4pIFZlcmlmeUhvc3RuYW1lIChoIDx0eXBlIC0xNj4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDIwMj4pIC5jcnlwdG8veDUwOS5pc1ZhbGlkIChjZXJ0VHlwZSA8dHlwZSAtMTE+LCBjdXJyZW50Q2hhaW4gPHR5cGUgMjI1IFtdIDx0eXBlIDIwMj4+LCBvcHRzIDx0eXBlIDIwND4pIDx0eXBlIC0xOT47CiBmdW5jIChjIDx0eXBlIDIwMj4pIENoZWNrQ1JMU2lnbmF0dXJlIChjcmwgPHR5cGUgMjI2ICo8dHlwZSAyMjcgImNyeXB0by94NTA5L3BraXguQ2VydGlmaWNhdGVMaXN0IiA8dHlwZSAyMjggc3RydWN0IHsgVEJTQ2VydExpc3QgPHR5cGUgMjI5ICJjcnlwdG8veDUwOS9wa2l4LlRCU0NlcnRpZmljYXRlTGlzdCIgPHR5cGUgMjMwIHN0cnVjdCB7IFJhdyA8dHlwZSAyMzEgImVuY29kaW5nL2FzbjEuUmF3Q29udGVudCIgPHR5cGUgMjMyIFtdIDx0eXBlIC0yMD4+PjsgVmVyc2lvbiA8dHlwZSAtMTE+ICJhc24xOlwib3B0aW9uYWwsZGVmYXVsdDoyXCIiOyBTaWduYXR1cmUgPHR5cGUgMjMzICJjcnlwdG8veDUwOS9wa2l4LkFsZ29yaXRobUlkZW50aWZpZXIiIDx0eXBlIDIzNCBzdHJ1Y3QgeyBBbGdvcml0aG0gPHR5cGUgMTY3PjsgUGFyYW1ldGVycyA8dHlwZSAyMzUgImVuY29kaW5nL2FzbjEuUmF3VmFsdWUiIDx0eXBlIDIzNiBzdHJ1Y3QgeyBDbGFzcyA8dHlwZSAtMTE+OyBUYWcgPHR5cGUgLTExPjsgSXNDb21wb3VuZCA8dHlwZSAtMTU+OyBCeXRlcyA8dHlwZSAyMzcgW10gPHR5cGUgLTIwPj47IEZ1bGxCeXRlcyA8dHlwZSAyMzggW10gPHR5cGUgLTIwPj47IH0+PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyB9Pj47IElzc3VlciA8dHlwZSAxNzA+OyBUaGlzVXBkYXRlIDx0eXBlIDk+OyBOZXh0VXBkYXRlIDx0eXBlIDk+ICJhc24xOlwib3B0aW9uYWxcIiI7IFJldm9rZWRDZXJ0aWZpY2F0ZXMgPHR5cGUgMjM5IFtdIDx0eXBlIDI0MCAiY3J5cHRvL3g1MDkvcGtpeC5SZXZva2VkQ2VydGlmaWNhdGUiIDx0eXBlIDI0MSBzdHJ1Y3QgeyBTZXJpYWxOdW1iZXIgPHR5cGUgMTE3PjsgUmV2b2NhdGlvblRpbWUgPHR5cGUgOT47IEV4dGVuc2lvbnMgPHR5cGUgMjQyIFtdIDx0eXBlIDE3OD4+ICJhc24xOlwib3B0aW9uYWxcIiI7IH0+Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgRXh0ZW5zaW9ucyA8dHlwZSAyNDMgW10gPHR5cGUgMTc4Pj4gImFzbjE6XCJ0YWc6MCxvcHRpb25hbCxleHBsaWNpdFwiIjsgfT4+OyBTaWduYXR1cmVBbGdvcml0aG0gPHR5cGUgMjMzPjsgU2lnbmF0dXJlVmFsdWUgPHR5cGUgMjQ0ICJlbmNvZGluZy9hc24xLkJpdFN0cmluZyIgPHR5cGUgMjQ1IHN0cnVjdCB7IEJ5dGVzIDx0eXBlIDI0NiBbXSA8dHlwZSAtMjA+PjsgQml0TGVuZ3RoIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDI0ND4pIEF0IChpIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI0ND4pIFJpZ2h0QWxpZ24gKCkgPHR5cGUgMjQ3IFtdIDx0eXBlIC0yMD4+Owo+OyB9PgogZnVuYyAoY2VydExpc3QgPHR5cGUgMjQ4ICo8dHlwZSAyMjc+PikgSGFzRXhwaXJlZCAobm93IDx0eXBlIDk+KSA8dHlwZSAtMTU+Owo+PikgKGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGMgPHR5cGUgMjAyPikgLmNyeXB0by94NTA5LmJ1aWxkQ2hhaW5zIChjYWNoZSA8dHlwZSAyNDkgbWFwIFs8dHlwZSAtMTE+XSA8dHlwZSAyNTAgW10gPHR5cGUgMjUxIFtdIDx0eXBlIDIwMj4+Pj4sIGN1cnJlbnRDaGFpbiA8dHlwZSAyNTIgW10gPHR5cGUgMjAyPj4sIG9wdHMgPHR5cGUgMjA0PikgKGNoYWlucyA8dHlwZSAyNTMgW10gPHR5cGUgMjU0IFtdIDx0eXBlIDIwMj4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAyMDI+KSBDcmVhdGVDUkwgKHJhbmQgPHR5cGUgNzI+LCBwcml2IDx0eXBlIDI1NSBpbnRlcmZhY2UgeyB9PiwgcmV2b2tlZENlcnRzIDx0eXBlIDI1NiBbXSA8dHlwZSAyNDA+Piwgbm93IDx0eXBlIDk+LCBleHBpcnkgPHR5cGUgOT4pIChjcmxCeXRlcyA8dHlwZSAyNTcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKPj4+OyBWZXJpZmllZENoYWlucyA8dHlwZSAyNTggW10gPHR5cGUgMjU5IFtdIDx0eXBlIDEwNT4+PjsgVExTVW5pcXVlIDx0eXBlIDI2MCBbXSA8dHlwZSAtMjA+PjsgfT4+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjYxICo8dHlwZSA1Nz4+KSAubmV0L2h0dHAuZXhwZWN0c0NvbnRpbnVlICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI2MT4pIFJlZmVyZXIgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgUHJvdG9BdExlYXN0IChtYWpvciA8dHlwZSAtMTE+LCBtaW5vciA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNjE+KSAubmV0L2h0dHAubXVsdGlwYXJ0UmVhZGVyICgpICg/IDx0eXBlIDI2MiAqPHR5cGUgMjYzICJtaW1lL211bHRpcGFydC5SZWFkZXIiIDx0eXBlIDI2NCBzdHJ1Y3QgeyAubWltZS9tdWx0aXBhcnQuYnVmUmVhZGVyIDx0eXBlIDI2NSAqPHR5cGUgMjY2ICJidWZpby5SZWFkZXIiIDx0eXBlIDI2NyBzdHJ1Y3QgeyAuYnVmaW8uYnVmIDx0eXBlIDI2OCBbXSA8dHlwZSAtMjA+PjsgLmJ1ZmlvLnJkIDx0eXBlIDcyPjsgLmJ1ZmlvLnIgPHR5cGUgLTExPjsgLmJ1ZmlvLncgPHR5cGUgLTExPjsgLmJ1ZmlvLmVyciA8dHlwZSAtMTk+OyAuYnVmaW8ubGFzdEJ5dGUgPHR5cGUgLTExPjsgLmJ1ZmlvLmxhc3RSdW5lU2l6ZSA8dHlwZSAtMTE+OyB9PgogZnVuYyAoYiA8dHlwZSAyNjkgKjx0eXBlIDI2Nj4+KSBVbnJlYWRCeXRlICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI2OT4pIFJlYWRTdHJpbmcgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIC0xNj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjY5PikgUmVhZEJ5dGUgKCkgKGMgPHR5cGUgLTIwPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjk+KSBXcml0ZVRvICh3IDx0eXBlIDQxPikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2OT4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjcwIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2OT4pIFJlYWRMaW5lICgpIChsaW5lIDx0eXBlIDI3MSBbXSA8dHlwZSAtMjA+PiwgaXNQcmVmaXggPHR5cGUgLTE1PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjk+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjY5PikgLmJ1ZmlvLndyaXRlQnVmICh3IDx0eXBlIDQxPikgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjk+KSAuYnVmaW8uZmlsbCAoKTsKIGZ1bmMgKGIgPHR5cGUgMjY5PikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyNjk+KSBSZXNldCAociA8dHlwZSA3Mj4pOwogZnVuYyAoYiA8dHlwZSAyNjk+KSBSZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI3MiBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjk+KSBSZWFkIChwIDx0eXBlIDI3MyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNjk+KSBCdWZmZXJlZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyNjk+KSAuYnVmaW8ucmVzZXQgKGJ1ZiA8dHlwZSAyNzQgW10gPHR5cGUgLTIwPj4sIHIgPHR5cGUgNzI+KTsKIGZ1bmMgKGIgPHR5cGUgMjY5PikgUGVlayAobiA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyNzUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI2OT4pIC5idWZpby5yZWFkRXJyICgpIDx0eXBlIC0xOT47Cj4+OyAubWltZS9tdWx0aXBhcnQuY3VycmVudFBhcnQgPHR5cGUgMjc2ICo8dHlwZSAyNzcgIm1pbWUvbXVsdGlwYXJ0LlBhcnQiIDx0eXBlIDI3OCBzdHJ1Y3QgeyBIZWFkZXIgPHR5cGUgODg+OyAubWltZS9tdWx0aXBhcnQuYnVmZmVyIDx0eXBlIDI3OSAqPHR5cGUgMjgwICJieXRlcy5CdWZmZXIiIDx0eXBlIDI4MSBzdHJ1Y3QgeyAuYnl0ZXMuYnVmIDx0eXBlIDI4MiBbXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLm9mZiA8dHlwZSAtMTE+OyAuYnl0ZXMucnVuZUJ5dGVzIDx0eXBlIDI4MyBbNCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMuYm9vdHN0cmFwIDx0eXBlIDI4NCBbNjQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmxhc3RSZWFkIDx0eXBlIDI4NSAiLmJ5dGVzLnJlYWRPcCIgPHR5cGUgLTExPj47IH0+CiBmdW5jIChiIDx0eXBlIDI4NiAqPHR5cGUgMjgwPj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgVHJ1bmNhdGUgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI4Nj4pIFdyaXRlU3RyaW5nIChzIDx0eXBlIC0xNj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODY+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Nj4pIE5leHQgKG4gPHR5cGUgLTExPikgPHR5cGUgMjg3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoYiA8dHlwZSAyODY+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgV3JpdGVUbyAodyA8dHlwZSA0MT4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODY+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI4OCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyODY+KSAuYnl0ZXMuZ3JvdyAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyODY+KSBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgUmVzZXQgKCk7CiBmdW5jIChiIDx0eXBlIDI4Nj4pIFJlYWQgKHAgPHR5cGUgMjg5IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Nj4pIFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgV3JpdGUgKHAgPHR5cGUgMjkwIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI4Nj4pIFdyaXRlQnl0ZSAoYyA8dHlwZSAtMjA+KSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyODY+KSAuYnl0ZXMucmVhZFNsaWNlIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyOTEgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgUmVhZEZyb20gKHIgPHR5cGUgNzI+KSAobiA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjg2PikgTGVuICgpIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI4Nj4pIEdyb3cgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI4Nj4pIEJ5dGVzICgpIDx0eXBlIDI5MiBbXSA8dHlwZSAtMjA+PjsKPj47IC5taW1lL211bHRpcGFydC5tciA8dHlwZSAyOTMgKjx0eXBlIDI2Mz4+OyAubWltZS9tdWx0aXBhcnQuYnl0ZXNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5kaXNwb3NpdGlvbiA8dHlwZSAtMTY+OyAubWltZS9tdWx0aXBhcnQuZGlzcG9zaXRpb25QYXJhbXMgPHR5cGUgMjk0IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE2Pj47IC5taW1lL211bHRpcGFydC5yIDx0eXBlIDcyPjsgfT4KIGZ1bmMgKHAgPHR5cGUgMjk1ICo8dHlwZSAyNzc+PikgRmlsZU5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHAgPHR5cGUgMjk1PikgLm1pbWUvbXVsdGlwYXJ0LnBhcnNlQ29udGVudERpc3Bvc2l0aW9uICgpOwogZnVuYyAocCA8dHlwZSAyOTU+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYnAgPHR5cGUgMjk1PikgLm1pbWUvbXVsdGlwYXJ0LnBvcHVsYXRlSGVhZGVycyAoKSA8dHlwZSAtMTk+OwogZnVuYyAocCA8dHlwZSAyOTU+KSBSZWFkIChkIDx0eXBlIDI5NiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAocCA8dHlwZSAyOTU+KSBGb3JtTmFtZSAoKSA8dHlwZSAtMTY+Owo+PjsgLm1pbWUvbXVsdGlwYXJ0LnBhcnRzUmVhZCA8dHlwZSAtMTE+OyAubWltZS9tdWx0aXBhcnQubmwgPHR5cGUgMjk3IFtdIDx0eXBlIC0yMD4+OyAubWltZS9tdWx0aXBhcnQubmxEYXNoQm91bmRhcnkgPHR5cGUgMjk4IFtdIDx0eXBlIC0yMD4+OyAubWltZS9tdWx0aXBhcnQuZGFzaEJvdW5kYXJ5RGFzaCA8dHlwZSAyOTkgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnkgPHR5cGUgMzAwIFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAobXIgPHR5cGUgMzAxICo8dHlwZSAyNjM+PikgLm1pbWUvbXVsdGlwYXJ0LnBlZWtCdWZmZXJJc0VtcHR5UGFydCAocGVlayA8dHlwZSAzMDIgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDMwMT4pIFJlYWRGb3JtIChtYXhNZW1vcnkgPHR5cGUgLTQ+KSAoZiA8dHlwZSA3OD4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDMwMT4pIC5taW1lL211bHRpcGFydC5pc0JvdW5kYXJ5RGVsaW1pdGVyTGluZSAobGluZSA8dHlwZSAzMDMgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTE1Pik7CiBmdW5jIChyIDx0eXBlIDMwMT4pIE5leHRQYXJ0ICgpICg/IDx0eXBlIDI3Nj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChtciA8dHlwZSAzMDE+KSAubWltZS9tdWx0aXBhcnQuaXNGaW5hbEJvdW5kYXJ5IChsaW5lIDx0eXBlIDMwNCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI2MT4pIC5uZXQvaHR0cC53YW50c0h0dHAxMEtlZXBBbGl2ZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNjE+KSBQYXJzZU11bHRpcGFydEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIDx0eXBlIC0xOT47CiBmdW5jIChyIDx0eXBlIDI2MT4pIFVzZXJBZ2VudCAoKSA8dHlwZSAtMTY+OwogZnVuYyAocmVxIDx0eXBlIDI2MT4pIC5uZXQvaHR0cC53cml0ZSAodyA8dHlwZSA0MT4sIHVzaW5nUHJveHkgPHR5cGUgLTE1PiwgZXh0cmFIZWFkZXJzIDx0eXBlIDM4PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgQ29va2llcyAoKSA8dHlwZSAzMDUgW10gPHR5cGUgMzA2ICo8dHlwZSAzMDcgIm5ldC9odHRwLkNvb2tpZSIgPHR5cGUgMzA4IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgVmFsdWUgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBEb21haW4gPHR5cGUgLTE2PjsgRXhwaXJlcyA8dHlwZSA5PjsgUmF3RXhwaXJlcyA8dHlwZSAtMTY+OyBNYXhBZ2UgPHR5cGUgLTExPjsgU2VjdXJlIDx0eXBlIC0xNT47IEh0dHBPbmx5IDx0eXBlIC0xNT47IFJhdyA8dHlwZSAtMTY+OyBVbnBhcnNlZCA8dHlwZSAzMDkgW10gPHR5cGUgLTE2Pj47IH0+CiBmdW5jIChjIDx0eXBlIDMxMCAqPHR5cGUgMzA3Pj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+Pj47CiBmdW5jIChyIDx0eXBlIDI2MT4pIFdyaXRlUHJveHkgKHcgPHR5cGUgNDE+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNjE+KSBNdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMjYyPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgV3JpdGUgKHcgPHR5cGUgNDE+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNjE+KSAubmV0L2h0dHAud2FudHNDbG9zZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNjE+KSBGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNjE+KSBQYXJzZUZvcm0gKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgQ29va2llIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDMwNj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI2MT4pIFBvc3RGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNjE+KSBBZGRDb29raWUgKGMgPHR5cGUgMzA2Pik7CiBmdW5jIChyIDx0eXBlIDI2MT4pIEZvcm1GaWxlIChrZXkgPHR5cGUgLTE2PikgKD8gPHR5cGUgOTM+LCA/IDx0eXBlIDg1PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgLm5ldC9odHRwLmNsb3NlQm9keSAoKTsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgU2V0QmFzaWNBdXRoICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHIgPHR5cGUgMjYxPikgQmFzaWNBdXRoICgpICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+LCBvayA8dHlwZSAtMTU+KTsKPj4pOyB9Pj4pIDx0eXBlIC0xOT47CmNoZWNrc3VtIDE0NkI1OTQ4Qjg3NDZGNkY4NzJGRUIwNUQzMjk0MDMzNUVDMjJGNUY7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAABAAAAAAAAAAAAAAA0AAAA5n8AAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAGoAAACYAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAECAAAAgAAAABAAAAAIAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAABggAAAAQAAAAAAAAAAAAAAAQAAAAAAAAA=