f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAkfwAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHBwcm9mOwpwa2dwYXRoIG5ldC9odHRwL3Bwcm9mOwpwcmlvcml0eSAxMzsKaW1wb3J0IGJ1ZmlvIGJ1ZmlvICJidWZpbyI7CmltcG9ydCBieXRlcyBieXRlcyAiYnl0ZXMiOwppbXBvcnQgZm10IGZtdCAiZm10IjsKaW1wb3J0IHRlbXBsYXRlIGh0bWwvdGVtcGxhdGUgImh0bWwvdGVtcGxhdGUiOwppbXBvcnQgaW8gaW8gImlvIjsKaW1wb3J0IGxvZyBsb2cgImxvZyI7CmltcG9ydCBodHRwIG5ldC9odHRwICJuZXQvaHR0cCI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgcnVudGltZSBydW50aW1lICJydW50aW1lIjsKaW1wb3J0IHBwcm9mIHJ1bnRpbWUvcHByb2YgInJ1bnRpbWUvcHByb2YiOwppbXBvcnQgc3RyY29udiBzdHJjb252ICJzdHJjb252IjsKaW1wb3J0IHN0cmluZ3Mgc3RyaW5ncyAic3RyaW5ncyI7CmltcG9ydCB0aW1lIHRpbWUgInRpbWUiOwppbml0IHBwcm9mIG5ldF9odHRwX3Bwcm9mLi5pbXBvcnQgMTMgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByYW5kIG1hdGhfcmFuZC4uaW1wb3J0IDMgcmVmbGVjdCByZWZsZWN0Li5pbXBvcnQgMyBzeXNjYWxsIHN5c2NhbGwuLmltcG9ydCAzIGJpbmFyeSBlbmNvZGluZ19iaW5hcnkuLmltcG9ydCA0IGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCBjaXBoZXIgY3J5cHRvX2NpcGhlci4uaW1wb3J0IDQgc3lzY2FsbCBpbnRlcm5hbF9zeXNjYWxsLi5pbXBvcnQgNCB0aW1lIHRpbWUuLmltcG9ydCA0IGJhc2U2NCBlbmNvZGluZ19iYXNlNjQuLmltcG9ydCA1IGJ1ZmlvIGJ1ZmlvLi5pbXBvcnQgNSBjcmMzMiBoYXNoX2NyYzMyLi5pbXBvcnQgNSBjcnlwdG8gY3J5cHRvLi5pbXBvcnQgNSBkZXMgY3J5cHRvX2Rlcy4uaW1wb3J0IDUgaHRtbCBodG1sLi5pbXBvcnQgNSBvcyBvcy4uaW1wb3J0IDUgcGF0aCBwYXRoLi5pbXBvcnQgNSB0YWJ3cml0ZXIgdGV4dF90YWJ3cml0ZXIuLmltcG9ydCA1IGZpbGVwYXRoIHBhdGhfZmlsZXBhdGguLmltcG9ydCA2IGZtdCBmbXQuLmltcG9ydCA2IG1kNSBjcnlwdG9fbWQ1Li5pbXBvcnQgNiBuZXQgbmV0Li5pbXBvcnQgNiBwZW0gZW5jb2RpbmdfcGVtLi5pbXBvcnQgNiBzaGExIGNyeXB0b19zaGExLi5pbXBvcnQgNiBzaGEyNTYgY3J5cHRvX3NoYTI1Ni4uaW1wb3J0IDYgc2hhNTEyIGNyeXB0b19zaGE1MTIuLmltcG9ydCA2IGJpZyBtYXRoX2JpZy4uaW1wb3J0IDcgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3IGhleCBlbmNvZGluZ19oZXguLmltcG9ydCA3IGludGVybmFsIG5ldF9odHRwX2ludGVybmFsLi5pbXBvcnQgNyBpb3V0aWwgaW9faW91dGlsLi5pbXBvcnQgNyBqc29uIGVuY29kaW5nX2pzb24uLmltcG9ydCA3IGxvZyBsb2cuLmltcG9ydCA3IG1pbWUgbWltZS4uaW1wb3J0IDcgcGFyc2UgdGV4dF90ZW1wbGF0ZV9wYXJzZS4uaW1wb3J0IDcgcHByb2YgcnVudGltZV9wcHJvZi4uaW1wb3J0IDcgYXNuMSBlbmNvZGluZ19hc24xLi5pbXBvcnQgOCBkc2EgY3J5cHRvX2RzYS4uaW1wb3J0IDggZWxsaXB0aWMgY3J5cHRvX2VsbGlwdGljLi5pbXBvcnQgOCBnemlwIGNvbXByZXNzX2d6aXAuLmltcG9ydCA4IHJhbmQgY3J5cHRvX3JhbmQuLmltcG9ydCA4IHRlbXBsYXRlIHRleHRfdGVtcGxhdGUuLmltcG9ydCA4IHRleHRwcm90byBuZXRfdGV4dHByb3RvLi5pbXBvcnQgOCBlY2RzYSBjcnlwdG9fZWNkc2EuLmltcG9ydCA5IG11bHRpcGFydCBtaW1lX211bHRpcGFydC4uaW1wb3J0IDkgcGtpeCBjcnlwdG9feDUwOV9wa2l4Li5pbXBvcnQgOSByc2EgY3J5cHRvX3JzYS4uaW1wb3J0IDkgdGVtcGxhdGUgaHRtbF90ZW1wbGF0ZS4uaW1wb3J0IDkgeDUwOSBjcnlwdG9feDUwOS4uaW1wb3J0IDEwIHRscyBjcnlwdG9fdGxzLi5pbXBvcnQgMTEgaHR0cCBuZXRfaHR0cC4uaW1wb3J0IDEyOwpmdW5jIENtZGxpbmUgKHcgPHR5cGUgMSAibmV0L2h0dHAuUmVzcG9uc2VXcml0ZXIiIDx0eXBlIDIgaW50ZXJmYWNlIHsgSGVhZGVyICgpIDx0eXBlIDMgIm5ldC9odHRwLkhlYWRlciIgPHR5cGUgNCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDUgW10gPHR5cGUgLTE2Pj4+CiBmdW5jIChoIDx0eXBlIDM+KSBHZXQgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAoaCA8dHlwZSAzPikgV3JpdGUgKHcgPHR5cGUgNiAiaW8uV3JpdGVyIiA8dHlwZSA3IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDggW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSA8dHlwZSAtMTk+OwogZnVuYyAoaCA8dHlwZSAzPikgLm5ldC9odHRwLmdldCAoa2V5IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jIChoIDx0eXBlIDM+KSBXcml0ZVN1YnNldCAodyA8dHlwZSA2PiwgZXhjbHVkZSA8dHlwZSA5IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgLTE1Pj4pIDx0eXBlIC0xOT47CiBmdW5jIChoIDx0eXBlIDM+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgMz4pIC5uZXQvaHR0cC5zb3J0ZWRLZXlWYWx1ZXMgKGV4Y2x1ZGUgPHR5cGUgMTAgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTU+PikgKGt2cyA8dHlwZSAxMSBbXSA8dHlwZSAxMiAiLm5ldC9odHRwLmtleVZhbHVlcyIgPHR5cGUgMTMgc3RydWN0IHsgLm5ldC9odHRwLmtleSA8dHlwZSAtMTY+OyAubmV0L2h0dHAudmFsdWVzIDx0eXBlIDE0IFtdIDx0eXBlIC0xNj4+OyB9Pj4+LCBocyA8dHlwZSAxNSAqPHR5cGUgMTYgIi5uZXQvaHR0cC5oZWFkZXJTb3J0ZXIiIDx0eXBlIDE3IHN0cnVjdCB7IC5uZXQvaHR0cC5rdnMgPHR5cGUgMTggW10gPHR5cGUgMTI+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMTkgKjx0eXBlIDE2Pj4pIExlc3MgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAocyA8dHlwZSAxOT4pIExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAocyA8dHlwZSAxOT4pIFN3YXAgKGkgPHR5cGUgLTExPiwgaiA8dHlwZSAtMTE+KTsKPj4pOwogZnVuYyAoaCA8dHlwZSAzPikgQWRkIChrZXkgPHR5cGUgLTE2PiwgdmFsdWUgPHR5cGUgLTE2Pik7CiBmdW5jIChoIDx0eXBlIDM+KSAubmV0L2h0dHAuY2xvbmUgKCkgPHR5cGUgMz47CiBmdW5jIChoIDx0eXBlIDM+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsgV3JpdGUgKD8gPHR5cGUgMjAgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7IFdyaXRlSGVhZGVyICg/IDx0eXBlIC0xMT4pOyB9Pj4sIHIgPHR5cGUgMjEgKjx0eXBlIDIyICJuZXQvaHR0cC5SZXF1ZXN0IiA8dHlwZSAyMyBzdHJ1Y3QgeyBNZXRob2QgPHR5cGUgLTE2PjsgVVJMIDx0eXBlIDI0ICo8dHlwZSAyNSAibmV0L3VybC5VUkwiICJ1cmwiIDx0eXBlIDI2IHN0cnVjdCB7IFNjaGVtZSA8dHlwZSAtMTY+OyBPcGFxdWUgPHR5cGUgLTE2PjsgVXNlciA8dHlwZSAyNyAqPHR5cGUgMjggIm5ldC91cmwuVXNlcmluZm8iIDx0eXBlIDI5IHN0cnVjdCB7IC5uZXQvdXJsLnVzZXJuYW1lIDx0eXBlIC0xNj47IC5uZXQvdXJsLnBhc3N3b3JkIDx0eXBlIC0xNj47IC5uZXQvdXJsLnBhc3N3b3JkU2V0IDx0eXBlIC0xNT47IH0+CiBmdW5jICh1IDx0eXBlIDMwICo8dHlwZSAyOD4+KSBVc2VybmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAzMD4pIFBhc3N3b3JkICgpICg/IDx0eXBlIC0xNj4sID8gPHR5cGUgLTE1Pik7CiBmdW5jICh1IDx0eXBlIDMwPikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+OyBIb3N0IDx0eXBlIC0xNj47IFBhdGggPHR5cGUgLTE2PjsgUmF3UXVlcnkgPHR5cGUgLTE2PjsgRnJhZ21lbnQgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKHUgPHR5cGUgMzEgKjx0eXBlIDI1Pj4pIElzQWJzICgpIDx0eXBlIC0xNT47CiBmdW5jICh1IDx0eXBlIDMxPikgUmVxdWVzdFVSSSAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAzMT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodSA8dHlwZSAzMT4pIFJlc29sdmVSZWZlcmVuY2UgKHJlZiA8dHlwZSAzMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKHUgPHR5cGUgMzE+KSBRdWVyeSAoKSA8dHlwZSAzMiAibmV0L3VybC5WYWx1ZXMiIDx0eXBlIDMzIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMzQgW10gPHR5cGUgLTE2Pj4+CiBmdW5jICh2IDx0eXBlIDMyPikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMzI+KSBFbmNvZGUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHYgPHR5cGUgMzI+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgMzI+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKHYgPHR5cGUgMzI+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsKIGZ1bmMgKHUgPHR5cGUgMzE+KSBQYXJzZSAocmVmIDx0eXBlIC0xNj4pICg/IDx0eXBlIDMxPiwgPyA8dHlwZSAtMTk+KTsKPj47IFByb3RvIDx0eXBlIC0xNj47IFByb3RvTWFqb3IgPHR5cGUgLTExPjsgUHJvdG9NaW5vciA8dHlwZSAtMTE+OyBIZWFkZXIgPHR5cGUgMz47IEJvZHkgPHR5cGUgMzUgImlvLlJlYWRDbG9zZXIiIDx0eXBlIDM2IGludGVyZmFjZSB7ID8gPHR5cGUgMzcgImlvLlJlYWRlciIgPHR5cGUgMzggaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSAzOSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47ID8gPHR5cGUgNDAgImlvLkNsb3NlciIgPHR5cGUgNDEgaW50ZXJmYWNlIHsgQ2xvc2UgKCkgPHR5cGUgLTE5PjsgfT4+OyB9Pj47IENvbnRlbnRMZW5ndGggPHR5cGUgLTQ+OyBUcmFuc2ZlckVuY29kaW5nIDx0eXBlIDQyIFtdIDx0eXBlIC0xNj4+OyBDbG9zZSA8dHlwZSAtMTU+OyBIb3N0IDx0eXBlIC0xNj47IEZvcm0gPHR5cGUgMzI+OyBQb3N0Rm9ybSA8dHlwZSAzMj47IE11bHRpcGFydEZvcm0gPHR5cGUgNDMgKjx0eXBlIDQ0ICJtaW1lL211bHRpcGFydC5Gb3JtIiAibXVsdGlwYXJ0IiA8dHlwZSA0NSBzdHJ1Y3QgeyBWYWx1ZSA8dHlwZSA0NiBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDQ3IFtdIDx0eXBlIC0xNj4+PjsgRmlsZSA8dHlwZSA0OCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDQ5IFtdIDx0eXBlIDUwICo8dHlwZSA1MSAibWltZS9tdWx0aXBhcnQuRmlsZUhlYWRlciIgPHR5cGUgNTIgc3RydWN0IHsgRmlsZW5hbWUgPHR5cGUgLTE2PjsgSGVhZGVyIDx0eXBlIDUzICJuZXQvdGV4dHByb3RvLk1JTUVIZWFkZXIiICJ0ZXh0cHJvdG8iIDx0eXBlIDU0IG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgNTUgW10gPHR5cGUgLTE2Pj4+CiBmdW5jIChoIDx0eXBlIDUzPikgR2V0IChrZXkgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKGggPHR5cGUgNTM+KSBTZXQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgNTM+KSBBZGQgKGtleSA8dHlwZSAtMTY+LCB2YWx1ZSA8dHlwZSAtMTY+KTsKIGZ1bmMgKGggPHR5cGUgNTM+KSBEZWwgKGtleSA8dHlwZSAtMTY+KTsKPjsgLm1pbWUvbXVsdGlwYXJ0LmNvbnRlbnQgPHR5cGUgNTYgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC50bXBmaWxlIDx0eXBlIC0xNj47IH0+CiBmdW5jIChmaCA8dHlwZSA1NyAqPHR5cGUgNTE+PikgT3BlbiAoKSAoPyA8dHlwZSA1OCAibWltZS9tdWx0aXBhcnQuRmlsZSIgPHR5cGUgNTkgaW50ZXJmYWNlIHsgPyA8dHlwZSAzNz47ID8gPHR5cGUgNjAgImlvLlJlYWRlckF0IiA8dHlwZSA2MSBpbnRlcmZhY2UgeyBSZWFkQXQgKHAgPHR5cGUgNjIgW10gPHR5cGUgLTIwPj4sIG9mZiA8dHlwZSAtND4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyA/IDx0eXBlIDYzICJpby5TZWVrZXIiIDx0eXBlIDY0IGludGVyZmFjZSB7IFNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7IH0+PjsgPyA8dHlwZSA0MD47IH0+PiwgPyA8dHlwZSAtMTk+KTsKPj4+PjsgfT4KIGZ1bmMgKGYgPHR5cGUgNjUgKjx0eXBlIDQ0Pj4pIFJlbW92ZUFsbCAoKSA8dHlwZSAtMTk+Owo+PjsgVHJhaWxlciA8dHlwZSAzPjsgUmVtb3RlQWRkciA8dHlwZSAtMTY+OyBSZXF1ZXN0VVJJIDx0eXBlIC0xNj47IFRMUyA8dHlwZSA2NiAqPHR5cGUgNjcgImNyeXB0by90bHMuQ29ubmVjdGlvblN0YXRlIiAidGxzIiA8dHlwZSA2OCBzdHJ1Y3QgeyBWZXJzaW9uIDx0eXBlIC02PjsgSGFuZHNoYWtlQ29tcGxldGUgPHR5cGUgLTE1PjsgRGlkUmVzdW1lIDx0eXBlIC0xNT47IENpcGhlclN1aXRlIDx0eXBlIC02PjsgTmVnb3RpYXRlZFByb3RvY29sIDx0eXBlIC0xNj47IE5lZ290aWF0ZWRQcm90b2NvbElzTXV0dWFsIDx0eXBlIC0xNT47IFNlcnZlck5hbWUgPHR5cGUgLTE2PjsgUGVlckNlcnRpZmljYXRlcyA8dHlwZSA2OSBbXSA8dHlwZSA3MCAqPHR5cGUgNzEgImNyeXB0by94NTA5LkNlcnRpZmljYXRlIiAieDUwOSIgPHR5cGUgNzIgc3RydWN0IHsgUmF3IDx0eXBlIDczIFtdIDx0eXBlIC0yMD4+OyBSYXdUQlNDZXJ0aWZpY2F0ZSA8dHlwZSA3NCBbXSA8dHlwZSAtMjA+PjsgUmF3U3ViamVjdFB1YmxpY0tleUluZm8gPHR5cGUgNzUgW10gPHR5cGUgLTIwPj47IFJhd1N1YmplY3QgPHR5cGUgNzYgW10gPHR5cGUgLTIwPj47IFJhd0lzc3VlciA8dHlwZSA3NyBbXSA8dHlwZSAtMjA+PjsgU2lnbmF0dXJlIDx0eXBlIDc4IFtdIDx0eXBlIC0yMD4+OyBTaWduYXR1cmVBbGdvcml0aG0gPHR5cGUgNzkgImNyeXB0by94NTA5LlNpZ25hdHVyZUFsZ29yaXRobSIgPHR5cGUgLTExPj47IFB1YmxpY0tleUFsZ29yaXRobSA8dHlwZSA4MCAiY3J5cHRvL3g1MDkuUHVibGljS2V5QWxnb3JpdGhtIiA8dHlwZSAtMTE+PjsgUHVibGljS2V5IDx0eXBlIDgxIGludGVyZmFjZSB7IH0+OyBWZXJzaW9uIDx0eXBlIC0xMT47IFNlcmlhbE51bWJlciA8dHlwZSA4MiAqPHR5cGUgODMgIm1hdGgvYmlnLkludCIgImJpZyIgPHR5cGUgODQgc3RydWN0IHsgLm1hdGgvYmlnLm5lZyA8dHlwZSAtMTU+OyAubWF0aC9iaWcuYWJzIDx0eXBlIDg1ICIubWF0aC9iaWcubmF0IiA8dHlwZSA4NiBbXSA8dHlwZSA4NyAibWF0aC9iaWcuV29yZCIgPHR5cGUgLTEzPj4+CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSA4NT4sIHkgPHR5cGUgODU+KSA8dHlwZSA4NT47CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLnNjYW4gKHIgPHR5cGUgODggImlvLlJ1bmVTY2FubmVyIiA8dHlwZSA4OSBpbnRlcmZhY2UgeyA/IDx0eXBlIDkwICJpby5SdW5lUmVhZGVyIiA8dHlwZSA5MSBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+OyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IH0+PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSA4NT4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuYWRkICh4IDx0eXBlIDg1PiwgeSA8dHlwZSA4NT4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuYW5kTm90ICh4IDx0eXBlIDg1PiwgeSA8dHlwZSA4NT4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuc2V0Qml0ICh4IDx0eXBlIDg1PiwgaSA8dHlwZSAtMTI+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuc3ViICh4IDx0eXBlIDg1PiwgeSA8dHlwZSA4NT4pIDx0eXBlIDg1PjsKIGZ1bmMgKHggPHR5cGUgODU+KSAubWF0aC9iaWcubW9kVyAoZCA8dHlwZSA4Nz4pIChyIDx0eXBlIDg3Pik7CiBmdW5jIChuIDx0eXBlIDg1PikgLm1hdGgvYmlnLnByb2JhYmx5UHJpbWUgKHJlcHMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHEgPHR5cGUgODU+KSAubWF0aC9iaWcuY29udmVydFdvcmRzIChzIDx0eXBlIDkyIFtdIDx0eXBlIC0yMD4+LCBjaGFyc2V0IDx0eXBlIC0xNj4sIGIgPHR5cGUgODc+LCBuZGlnaXRzIDx0eXBlIC0xMT4sIGJiIDx0eXBlIDg3PiwgdGFibGUgPHR5cGUgOTMgW10gPHR5cGUgOTQgIi5tYXRoL2JpZy5kaXZpc29yIiA8dHlwZSA5NSBzdHJ1Y3QgeyAubWF0aC9iaWcuYmJiIDx0eXBlIDg1PjsgLm1hdGgvYmlnLm5iaXRzIDx0eXBlIC0xMT47IC5tYXRoL2JpZy5uZGlnaXRzIDx0eXBlIC0xMT47IH0+Pj4pOwogZnVuYyAoeCA8dHlwZSA4NT4pIC5tYXRoL2JpZy5zdHJpbmcgKGNoYXJzZXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuZGl2VyAoeCA8dHlwZSA4NT4sIHkgPHR5cGUgODc+KSAocSA8dHlwZSA4NT4sIHIgPHR5cGUgODc+KTsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuc2hyICh4IDx0eXBlIDg1PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSA4NT47CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLm11bFJhbmdlIChhIDx0eXBlIC04PiwgYiA8dHlwZSAtOD4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcubXVsQWRkV1cgKHggPHR5cGUgODU+LCB5IDx0eXBlIDg3PiwgciA8dHlwZSA4Nz4pIDx0eXBlIDg1PjsKIGZ1bmMgKHggPHR5cGUgODU+KSAubWF0aC9iaWcuZGVjaW1hbFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5hbmQgKHggPHR5cGUgODU+LCB5IDx0eXBlIDg1PikgPHR5cGUgODU+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5iaXQgKGkgPHR5cGUgLTEyPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcueG9yICh4IDx0eXBlIDg1PiwgeSA8dHlwZSA4NT4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuc2V0ICh4IDx0eXBlIDg1PikgPHR5cGUgODU+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5yYW5kb20gKHJhbmQgPHR5cGUgOTYgKjx0eXBlIDk3ICJtYXRoL3JhbmQuUmFuZCIgInJhbmQiIDx0eXBlIDk4IHN0cnVjdCB7IC5tYXRoL3JhbmQuc3JjIDx0eXBlIDk5ICJtYXRoL3JhbmQuU291cmNlIiA8dHlwZSAxMDAgaW50ZXJmYWNlIHsgSW50NjMgKCkgPHR5cGUgLTQ+OyBTZWVkIChzZWVkIDx0eXBlIC00Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMTAxICo8dHlwZSA5Nz4+KSBFeHBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEwMT4pIEludDMxbiAobiA8dHlwZSAtMz4pIDx0eXBlIC0zPjsKIGZ1bmMgKHIgPHR5cGUgMTAxPikgVWludDMyICgpIDx0eXBlIC03PjsKIGZ1bmMgKHIgPHR5cGUgMTAxPikgSW50biAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAxMDE+KSBQZXJtIChuIDx0eXBlIC0xMT4pIDx0eXBlIDEwMiBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHIgPHR5cGUgMTAxPikgTm9ybUZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMTAxPikgSW50MzEgKCkgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAxMDE+KSBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDEwMT4pIFNlZWQgKHNlZWQgPHR5cGUgLTQ+KTsKIGZ1bmMgKHIgPHR5cGUgMTAxPikgSW50ICgpIDx0eXBlIC0xMT47CiBmdW5jIChyIDx0eXBlIDEwMT4pIEludDYzICgpIDx0eXBlIC00PjsKIGZ1bmMgKHIgPHR5cGUgMTAxPikgSW50NjNuIChuIDx0eXBlIC00PikgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAxMDE+KSBGbG9hdDMyICgpIDx0eXBlIC05PjsKPj4sIGxpbWl0IDx0eXBlIDg1PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSA4NT47CiBmdW5jICh4IDx0eXBlIDg1PikgLm1hdGgvYmlnLmNtcCAoeSA8dHlwZSA4NT4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5vciAoeCA8dHlwZSA4NT4sIHkgPHR5cGUgODU+KSA8dHlwZSA4NT47CiBmdW5jICh4IDx0eXBlIDg1PikgLm1hdGgvYmlnLmJpdExlbiAoKSA8dHlwZSAtMTE+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5zZXRXb3JkICh4IDx0eXBlIDg3PikgPHR5cGUgODU+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5zZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSA4NT47CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLmRpdiAoejIgPHR5cGUgODU+LCB1IDx0eXBlIDg1PiwgdiA8dHlwZSA4NT4pIChxIDx0eXBlIDg1PiwgciA8dHlwZSA4NT4pOwogZnVuYyAoeCA8dHlwZSA4NT4pIC5tYXRoL2JpZy50cmFpbGluZ1plcm9CaXRzICgpIDx0eXBlIC0xMj47CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLmV4cE5OV2luZG93ZWQgKHggPHR5cGUgODU+LCB5IDx0eXBlIDg1PiwgbSA8dHlwZSA4NT4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuZGl2TGFyZ2UgKHUgPHR5cGUgODU+LCB1SW4gPHR5cGUgODU+LCB2IDx0eXBlIDg1PikgKHEgPHR5cGUgODU+LCByIDx0eXBlIDg1Pik7CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLm5vcm0gKCkgPHR5cGUgODU+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5zZXRCeXRlcyAoYnVmIDx0eXBlIDEwMyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgODU+OwogZnVuYyAoeiA8dHlwZSA4NT4pIC5tYXRoL2JpZy5tYWtlIChuIDx0eXBlIC0xMT4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuc2hsICh4IDx0eXBlIDg1PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSA4NT47CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLmJ5dGVzIChidWYgPHR5cGUgMTA0IFtdIDx0eXBlIC0yMD4+KSAoaSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuY2xlYXIgKCk7CiBmdW5jICh6IDx0eXBlIDg1PikgLm1hdGgvYmlnLmV4cFdXICh4IDx0eXBlIDg3PiwgeSA8dHlwZSA4Nz4pIDx0eXBlIDg1PjsKIGZ1bmMgKHogPHR5cGUgODU+KSAubWF0aC9iaWcuZXhwTk4gKHggPHR5cGUgODU+LCB5IDx0eXBlIDg1PiwgbSA8dHlwZSA4NT4pIDx0eXBlIDg1PjsKPjsgfT4KIGZ1bmMgKHogPHR5cGUgMTA1ICo8dHlwZSA4Mz4+KSBOZWcgKHggPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgUXVvUmVtICh4IDx0eXBlIDEwNT4sIHkgPHR5cGUgMTA1PiwgciA8dHlwZSAxMDU+KSAoPyA8dHlwZSAxMDU+LCA/IDx0eXBlIDEwNT4pOwogZnVuYyAoeCA8dHlwZSAxMDU+KSBCeXRlcyAoKSA8dHlwZSAxMDYgW10gPHR5cGUgLTIwPj47CiBmdW5jICh6IDx0eXBlIDEwNT4pIFNldEJpdHMgKGFicyA8dHlwZSAxMDcgW10gPHR5cGUgODc+PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgU2V0Qml0ICh4IDx0eXBlIDEwNT4sIGkgPHR5cGUgLTExPiwgYiA8dHlwZSAtMTI+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBYb3IgKHggPHR5cGUgMTA1PiwgeSA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBTZXRJbnQ2NCAoeCA8dHlwZSAtND4pIDx0eXBlIDEwNT47CiBmdW5jICh6IDx0eXBlIDEwNT4pIE5vdCAoeCA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBVbm1hcnNoYWxKU09OICh0ZXh0IDx0eXBlIDEwOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgT3IgKHggPHR5cGUgMTA1PiwgeSA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBTZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAxMDU+OwogZnVuYyAoeCA8dHlwZSAxMDU+KSBJbnQ2NCAoKSA8dHlwZSAtND47CiBmdW5jICh6IDx0eXBlIDEwNT4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDg4PiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAxMDU+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDEwNT4pIEdDRCAoeCA8dHlwZSAxMDU+LCB5IDx0eXBlIDEwNT4sIGEgPHR5cGUgMTA1PiwgYiA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBSZW0gKHggPHR5cGUgMTA1PiwgeSA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeCA8dHlwZSAxMDU+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgMTA1PikgQml0cyAoKSA8dHlwZSAxMDkgW10gPHR5cGUgODc+PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgU2V0Qnl0ZXMgKGJ1ZiA8dHlwZSAxMTAgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDEwNT47CiBmdW5jICh6IDx0eXBlIDEwNT4pIERpdk1vZCAoeCA8dHlwZSAxMDU+LCB5IDx0eXBlIDEwNT4sIG0gPHR5cGUgMTA1PikgKD8gPHR5cGUgMTA1PiwgPyA8dHlwZSAxMDU+KTsKIGZ1bmMgKHogPHR5cGUgMTA1PikgUnNoICh4IDx0eXBlIDEwNT4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMTA1PjsKIGZ1bmMgKHggPHR5cGUgMTA1PikgQ21wICh5IDx0eXBlIDEwNT4pIChyIDx0eXBlIC0xMT4pOwogZnVuYyAoeiA8dHlwZSAxMDU+KSBTY2FuIChzIDx0eXBlIDExMSAiZm10LlNjYW5TdGF0ZSIgPHR5cGUgMTEyIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47IFNraXBTcGFjZSAoKTsgVG9rZW4gKHNraXBTcGFjZSA8dHlwZSAtMTU+LCBmIDx0eXBlIDExMyAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgKHRva2VuIDx0eXBlIDExNCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBSZWFkIChidWYgPHR5cGUgMTE1IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PiwgY2ggPHR5cGUgLTIxPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgMTA1PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDExNiBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHggPHR5cGUgMTA1PikgUHJvYmFibHlQcmltZSAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAoeCA8dHlwZSAxMDU+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDEwNT4pIE1vZCAoeCA8dHlwZSAxMDU+LCB5IDx0eXBlIDEwNT4pIDx0eXBlIDEwNT47CiBmdW5jICh6IDx0eXBlIDEwNT4pIEV4cCAoeCA8dHlwZSAxMDU+LCB5IDx0eXBlIDEwNT4sIG0gPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHggPHR5cGUgMTA1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDEwNT4pIEFicyAoeCA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBVbm1hcnNoYWxUZXh0ICh0ZXh0IDx0eXBlIDExNyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgUmFuZCAocm5kIDx0eXBlIDk2PiwgbiA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBBbmQgKHggPHR5cGUgMTA1PiwgeSA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBNb2RJbnZlcnNlIChnIDx0eXBlIDEwNT4sIG4gPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgUXVvICh4IDx0eXBlIDEwNT4sIHkgPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgQWRkICh4IDx0eXBlIDEwNT4sIHkgPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgTHNoICh4IDx0eXBlIDEwNT4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgQW5kTm90ICh4IDx0eXBlIDEwNT4sIHkgPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgU2V0ICh4IDx0eXBlIDEwNT4pIDx0eXBlIDEwNT47CiBmdW5jICh6IDx0eXBlIDEwNT4pIE11bCAoeCA8dHlwZSAxMDU+LCB5IDx0eXBlIDEwNT4pIDx0eXBlIDEwNT47CiBmdW5jICh6IDx0eXBlIDEwNT4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDExOCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoeiA8dHlwZSAxMDU+KSBEaXYgKHggPHR5cGUgMTA1PiwgeSA8dHlwZSAxMDU+KSA8dHlwZSAxMDU+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSBCaW5vbWlhbCAobiA8dHlwZSAtND4sIGsgPHR5cGUgLTQ+KSA8dHlwZSAxMDU+OwogZnVuYyAoeCA8dHlwZSAxMDU+KSBGb3JtYXQgKHMgPHR5cGUgMTE5ICJmbXQuU3RhdGUiIDx0eXBlIDEyMCBpbnRlcmZhY2UgeyBXcml0ZSAoYiA8dHlwZSAxMjEgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBQcmVjaXNpb24gKCkgKHByZWMgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IEZsYWcgKGMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsgfT4+LCBjaCA8dHlwZSAtMjE+KTsKIGZ1bmMgKHogPHR5cGUgMTA1PikgTXVsUmFuZ2UgKGEgPHR5cGUgLTQ+LCBiIDx0eXBlIC00PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgU2V0U3RyaW5nIChzIDx0eXBlIC0xNj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMTA1PiwgPyA8dHlwZSAtMTU+KTsKIGZ1bmMgKHggPHR5cGUgMTA1PikgVWludDY0ICgpIDx0eXBlIC04PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgMTIyIFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeCA8dHlwZSAxMDU+KSBCaXRMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgR29iRGVjb2RlIChidWYgPHR5cGUgMTIzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAxMDU+KSAubWF0aC9iaWcuYmluYXJ5R0NEIChhIDx0eXBlIDEwNT4sIGIgPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKIGZ1bmMgKHogPHR5cGUgMTA1PikgU3ViICh4IDx0eXBlIDEwNT4sIHkgPHR5cGUgMTA1PikgPHR5cGUgMTA1PjsKPj47IElzc3VlciA8dHlwZSAxMjQgImNyeXB0by94NTA5L3BraXguTmFtZSIgInBraXgiIDx0eXBlIDEyNSBzdHJ1Y3QgeyBDb3VudHJ5IDx0eXBlIDEyNiBbXSA8dHlwZSAtMTY+PjsgT3JnYW5pemF0aW9uIDx0eXBlIDEyNj47IE9yZ2FuaXphdGlvbmFsVW5pdCA8dHlwZSAxMjY+OyBMb2NhbGl0eSA8dHlwZSAxMjcgW10gPHR5cGUgLTE2Pj47IFByb3ZpbmNlIDx0eXBlIDEyNz47IFN0cmVldEFkZHJlc3MgPHR5cGUgMTI4IFtdIDx0eXBlIC0xNj4+OyBQb3N0YWxDb2RlIDx0eXBlIDEyOD47IFNlcmlhbE51bWJlciA8dHlwZSAtMTY+OyBDb21tb25OYW1lIDx0eXBlIC0xNj47IE5hbWVzIDx0eXBlIDEyOSBbXSA8dHlwZSAxMzAgImNyeXB0by94NTA5L3BraXguQXR0cmlidXRlVHlwZUFuZFZhbHVlIiA8dHlwZSAxMzEgc3RydWN0IHsgVHlwZSA8dHlwZSAxMzIgImVuY29kaW5nL2FzbjEuT2JqZWN0SWRlbnRpZmllciIgImFzbjEiIDx0eXBlIDEzMyBbXSA8dHlwZSAtMTE+PgogZnVuYyAob2kgPHR5cGUgMTMyPikgRXF1YWwgKG90aGVyIDx0eXBlIDEzMj4pIDx0eXBlIC0xNT47CiBmdW5jIChvaSA8dHlwZSAxMzI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgVmFsdWUgPHR5cGUgMTM0IGludGVyZmFjZSB7IH0+OyB9Pj4+OyB9PgogZnVuYyAobiA8dHlwZSAxMjQ+KSBUb1JETlNlcXVlbmNlICgpIChyZXQgPHR5cGUgMTM1ICJjcnlwdG8veDUwOS9wa2l4LlJETlNlcXVlbmNlIiA8dHlwZSAxMzYgW10gPHR5cGUgMTM3ICJjcnlwdG8veDUwOS9wa2l4LlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWVTRVQiIDx0eXBlIDEzOCBbXSA8dHlwZSAxMzA+Pj4+Pik7CiBmdW5jIChuIDx0eXBlIDEzOSAqPHR5cGUgMTI0Pj4pIEZpbGxGcm9tUkROU2VxdWVuY2UgKHJkbnMgPHR5cGUgMTQwICo8dHlwZSAxMzU+Pik7Cj47IFN1YmplY3QgPHR5cGUgMTI0PjsgTm90QmVmb3JlIDx0eXBlIDE0MSAidGltZS5UaW1lIiA8dHlwZSAxNDIgc3RydWN0IHsgLnRpbWUuc2VjIDx0eXBlIC00PjsgLnRpbWUubnNlYyA8dHlwZSAtMz47IC50aW1lLmxvYyA8dHlwZSAxNDMgKjx0eXBlIDE0NCAidGltZS5Mb2NhdGlvbiIgPHR5cGUgMTQ1IHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUuem9uZSA8dHlwZSAxNDYgW10gPHR5cGUgMTQ3ICIudGltZS56b25lIiA8dHlwZSAxNDggc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS5vZmZzZXQgPHR5cGUgLTExPjsgLnRpbWUuaXNEU1QgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUudHggPHR5cGUgMTQ5IFtdIDx0eXBlIDE1MCAiLnRpbWUuem9uZVRyYW5zIiA8dHlwZSAxNTEgc3RydWN0IHsgLnRpbWUud2hlbiA8dHlwZSAtND47IC50aW1lLmluZGV4IDx0eXBlIC01PjsgLnRpbWUuaXNzdGQgPHR5cGUgLTE1PjsgLnRpbWUuaXN1dGMgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUuY2FjaGVTdGFydCA8dHlwZSAtND47IC50aW1lLmNhY2hlRW5kIDx0eXBlIC00PjsgLnRpbWUuY2FjaGVab25lIDx0eXBlIDE1MiAqPHR5cGUgMTQ3Pj47IH0+CiBmdW5jIChsIDx0eXBlIDE1MyAqPHR5cGUgMTQ0Pj4pIC50aW1lLmZpcnN0Wm9uZVVzZWQgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGwgPHR5cGUgMTUzPikgLnRpbWUubG9va3VwTmFtZSAobmFtZSA8dHlwZSAtMTY+LCB1bml4IDx0eXBlIC00PikgKG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKGwgPHR5cGUgMTUzPikgLnRpbWUubG9va3VwIChzZWMgPHR5cGUgLTQ+KSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPiwgaXNEU1QgPHR5cGUgLTE1Piwgc3RhcnQgPHR5cGUgLTQ+LCBlbmQgPHR5cGUgLTQ+KTsKIGZ1bmMgKGwgPHR5cGUgMTUzPikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChsIDx0eXBlIDE1Mz4pIC50aW1lLmxvb2t1cEZpcnN0Wm9uZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAobCA8dHlwZSAxNTM+KSAudGltZS5nZXQgKCkgPHR5cGUgMTUzPjsKPj47IH0+CiBmdW5jICh0IDx0eXBlIDE0MT4pIEFmdGVyICh1IDx0eXBlIDE0MT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIE1hcnNoYWxUZXh0ICgpICg/IDx0eXBlIDE1NCBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgRGF0ZSAoKSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSAxNTUgInRpbWUuTW9udGgiIDx0eXBlIC0xMT4KIGZ1bmMgKG0gPHR5cGUgMTU1PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4sIGRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgLnRpbWUuYWJzICgpIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgV2Vla2RheSAoKSA8dHlwZSAxNTYgInRpbWUuV2Vla2RheSIgPHR5cGUgLTExPgogZnVuYyAoZCA8dHlwZSAxNTY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgTmFub3NlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNTcgKjx0eXBlIDE0MT4+KSBHb2JEZWNvZGUgKGRhdGEgPHR5cGUgMTU4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAxNDE+KSBJbiAobG9jIDx0eXBlIDE0Mz4pIDx0eXBlIDE0MT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIExvY2FsICgpIDx0eXBlIDE0MT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIE1vbnRoICgpIDx0eXBlIDE1NT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIEhvdXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgTWFyc2hhbEJpbmFyeSAoKSAoPyA8dHlwZSAxNTkgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE0MT4pIFVuaXhOYW5vICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgRXF1YWwgKHUgPHR5cGUgMTQxPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgRm9ybWF0IChsYXlvdXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgQWRkRGF0ZSAoeWVhcnMgPHR5cGUgLTExPiwgbW9udGhzIDx0eXBlIC0xMT4sIGRheXMgPHR5cGUgLTExPikgPHR5cGUgMTQxPjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgWm9uZSAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDE0MT4pIERheSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNDE+KSBDbG9jayAoKSAoaG91ciA8dHlwZSAtMTE+LCBtaW4gPHR5cGUgLTExPiwgc2VjIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNDE+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSAxNjAgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE0MT4pIFVUQyAoKSA8dHlwZSAxNDE+OwogZnVuYyAodCA8dHlwZSAxNDE+KSAudGltZS5kYXRlIChmdWxsIDx0eXBlIC0xNT4pICh5ZWFyIDx0eXBlIC0xMT4sIG1vbnRoIDx0eXBlIDE1NT4sIGRheSA8dHlwZSAtMTE+LCB5ZGF5IDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNDE+KSBJc1plcm8gKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgQmVmb3JlICh1IDx0eXBlIDE0MT4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIFNlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAxNDE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgTWludXRlICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIFJvdW5kIChkIDx0eXBlIDE2MSAidGltZS5EdXJhdGlvbiIgPHR5cGUgLTQ+CiBmdW5jIChkIDx0eXBlIDE2MT4pIFNlY29uZHMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTYxPikgTWludXRlcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSAxNjE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGQgPHR5cGUgMTYxPikgSG91cnMgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKGQgPHR5cGUgMTYxPikgTmFub3NlY29uZHMgKCkgPHR5cGUgLTQ+Owo+KSA8dHlwZSAxNDE+OwogZnVuYyAodCA8dHlwZSAxNDE+KSBTdWIgKHUgPHR5cGUgMTQxPikgPHR5cGUgMTYxPjsKIGZ1bmMgKHQgPHR5cGUgMTU3PikgVW5tYXJzaGFsVGV4dCAoZGF0YSA8dHlwZSAxNjIgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDE0MT4pIFVuaXggKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSAxNDE+KSBUcnVuY2F0ZSAoZCA8dHlwZSAxNjE+KSA8dHlwZSAxNDE+OwogZnVuYyAodCA8dHlwZSAxNDE+KSBBZGQgKGQgPHR5cGUgMTYxPikgPHR5cGUgMTQxPjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgR29iRW5jb2RlICgpICg/IDx0eXBlIDE2MyBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgTG9jYXRpb24gKCkgPHR5cGUgMTQzPjsKIGZ1bmMgKHQgPHR5cGUgMTU3PikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDE2NCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHQgPHR5cGUgMTQxPikgSVNPV2VlayAoKSAoeWVhciA8dHlwZSAtMTE+LCB3ZWVrIDx0eXBlIC0xMT4pOwogZnVuYyAodCA8dHlwZSAxNDE+KSAudGltZS5sb2NhYnMgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGFicyA8dHlwZSAtOD4pOwogZnVuYyAodCA8dHlwZSAxNDE+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDE0MT4pIFllYXJEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMTU3PikgVW5tYXJzaGFsSlNPTiAoZGF0YSA8dHlwZSAxNjUgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7Cj47IE5vdEFmdGVyIDx0eXBlIDE0MT47IEtleVVzYWdlIDx0eXBlIDE2NiAiY3J5cHRvL3g1MDkuS2V5VXNhZ2UiIDx0eXBlIC0xMT4+OyBFeHRlbnNpb25zIDx0eXBlIDE2NyBbXSA8dHlwZSAxNjggImNyeXB0by94NTA5L3BraXguRXh0ZW5zaW9uIiA8dHlwZSAxNjkgc3RydWN0IHsgSWQgPHR5cGUgMTMyPjsgQ3JpdGljYWwgPHR5cGUgLTE1PiAiYXNuMTpcIm9wdGlvbmFsXCIiOyBWYWx1ZSA8dHlwZSAxNzAgW10gPHR5cGUgLTIwPj47IH0+Pj47IEV4dHJhRXh0ZW5zaW9ucyA8dHlwZSAxNzEgW10gPHR5cGUgMTY4Pj47IEV4dEtleVVzYWdlIDx0eXBlIDE3MiBbXSA8dHlwZSAxNzMgImNyeXB0by94NTA5LkV4dEtleVVzYWdlIiA8dHlwZSAtMTE+Pj47IFVua25vd25FeHRLZXlVc2FnZSA8dHlwZSAxNzQgW10gPHR5cGUgMTMyPj47IEJhc2ljQ29uc3RyYWludHNWYWxpZCA8dHlwZSAtMTU+OyBJc0NBIDx0eXBlIC0xNT47IE1heFBhdGhMZW4gPHR5cGUgLTExPjsgTWF4UGF0aExlblplcm8gPHR5cGUgLTE1PjsgU3ViamVjdEtleUlkIDx0eXBlIDE3NSBbXSA8dHlwZSAtMjA+PjsgQXV0aG9yaXR5S2V5SWQgPHR5cGUgMTc2IFtdIDx0eXBlIC0yMD4+OyBPQ1NQU2VydmVyIDx0eXBlIDE3NyBbXSA8dHlwZSAtMTY+PjsgSXNzdWluZ0NlcnRpZmljYXRlVVJMIDx0eXBlIDE3OCBbXSA8dHlwZSAtMTY+PjsgRE5TTmFtZXMgPHR5cGUgMTc5IFtdIDx0eXBlIC0xNj4+OyBFbWFpbEFkZHJlc3NlcyA8dHlwZSAxODAgW10gPHR5cGUgLTE2Pj47IElQQWRkcmVzc2VzIDx0eXBlIDE4MSBbXSA8dHlwZSAxODIgIm5ldC5JUCIgIm5ldCIgPHR5cGUgMTgzIFtdIDx0eXBlIC0yMD4+CiBmdW5jIChpcCA8dHlwZSAxODI+KSBNYXJzaGFsVGV4dCAoKSAoPyA8dHlwZSAxODQgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChpcCA8dHlwZSAxODI+KSBJc0xpbmtMb2NhbE11bHRpY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTgyPikgSXNNdWx0aWNhc3QgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDE4Mj4pIFRvNCAoKSA8dHlwZSAxODI+OwogZnVuYyAoaXAgPHR5cGUgMTg1ICo8dHlwZSAxODI+PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAxODYgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jIChpcCA8dHlwZSAxODI+KSBUbzE2ICgpIDx0eXBlIDE4Mj47CiBmdW5jIChpcCA8dHlwZSAxODI+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGlwIDx0eXBlIDE4Mj4pIElzTGlua0xvY2FsVW5pY2FzdCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTgyPikgSXNMb29wYmFjayAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaXAgPHR5cGUgMTgyPikgRXF1YWwgKHggPHR5cGUgMTgyPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGlwIDx0eXBlIDE4Mj4pIERlZmF1bHRNYXNrICgpIDx0eXBlIDE4NyAibmV0LklQTWFzayIgPHR5cGUgMTg4IFtdIDx0eXBlIC0yMD4+CiBmdW5jIChtIDx0eXBlIDE4Nz4pIFNpemUgKCkgKG9uZXMgPHR5cGUgLTExPiwgYml0cyA8dHlwZSAtMTE+KTsKIGZ1bmMgKG0gPHR5cGUgMTg3PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj47CiBmdW5jIChpcCA8dHlwZSAxODI+KSBNYXNrIChtYXNrIDx0eXBlIDE4Nz4pIDx0eXBlIDE4Mj47CiBmdW5jIChpcCA8dHlwZSAxODI+KSBJc1Vuc3BlY2lmaWVkICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxODI+KSBJc0ludGVyZmFjZUxvY2FsTXVsdGljYXN0ICgpIDx0eXBlIC0xNT47CiBmdW5jIChpcCA8dHlwZSAxODI+KSBJc0dsb2JhbFVuaWNhc3QgKCkgPHR5cGUgLTE1PjsKPj47IFBlcm1pdHRlZEROU0RvbWFpbnNDcml0aWNhbCA8dHlwZSAtMTU+OyBQZXJtaXR0ZWRETlNEb21haW5zIDx0eXBlIDE4OSBbXSA8dHlwZSAtMTY+PjsgQ1JMRGlzdHJpYnV0aW9uUG9pbnRzIDx0eXBlIDE5MCBbXSA8dHlwZSAtMTY+PjsgUG9saWN5SWRlbnRpZmllcnMgPHR5cGUgMTkxIFtdIDx0eXBlIDEzMj4+OyB9PgogZnVuYyAoYyA8dHlwZSAxOTIgKjx0eXBlIDcxPj4pIENoZWNrU2lnbmF0dXJlIChhbGdvIDx0eXBlIDc5Piwgc2lnbmVkIDx0eXBlIDE5MyBbXSA8dHlwZSAtMjA+Piwgc2lnbmF0dXJlIDx0eXBlIDE5Mz4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mj4pIC5jcnlwdG8veDUwOS5zeXN0ZW1WZXJpZnkgKG9wdHMgPHR5cGUgMTk0ICo8dHlwZSAxOTUgImNyeXB0by94NTA5LlZlcmlmeU9wdGlvbnMiIDx0eXBlIDE5NiBzdHJ1Y3QgeyBETlNOYW1lIDx0eXBlIC0xNj47IEludGVybWVkaWF0ZXMgPHR5cGUgMTk3ICo8dHlwZSAxOTggImNyeXB0by94NTA5LkNlcnRQb29sIiA8dHlwZSAxOTkgc3RydWN0IHsgLmNyeXB0by94NTA5LmJ5U3ViamVjdEtleUlkIDx0eXBlIDIwMCBtYXAgWzx0eXBlIC0xNj5dIDx0eXBlIDIwMSBbXSA8dHlwZSAtMTE+Pj47IC5jcnlwdG8veDUwOS5ieU5hbWUgPHR5cGUgMjAyIG1hcCBbPHR5cGUgLTE2Pl0gPHR5cGUgMjAzIFtdIDx0eXBlIC0xMT4+PjsgLmNyeXB0by94NTA5LmNlcnRzIDx0eXBlIDIwNCBbXSA8dHlwZSAxOTI+PjsgfT4KIGZ1bmMgKHMgPHR5cGUgMjA1ICo8dHlwZSAxOTg+PikgQXBwZW5kQ2VydHNGcm9tUEVNIChwZW1DZXJ0cyA8dHlwZSAyMDYgW10gPHR5cGUgLTIwPj4pIChvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKHMgPHR5cGUgMjA1PikgU3ViamVjdHMgKCkgKHJlcyA8dHlwZSAyMDcgW10gPHR5cGUgMjA4IFtdIDx0eXBlIC0yMD4+Pik7CiBmdW5jIChzIDx0eXBlIDIwNT4pIEFkZENlcnQgKGNlcnQgPHR5cGUgMTkyPik7CiBmdW5jIChzIDx0eXBlIDIwNT4pIC5jcnlwdG8veDUwOS5maW5kVmVyaWZpZWRQYXJlbnRzIChjZXJ0IDx0eXBlIDE5Mj4pIChwYXJlbnRzIDx0eXBlIDIwOSBbXSA8dHlwZSAtMTE+PiwgZXJyQ2VydCA8dHlwZSAxOTI+LCBlcnIgPHR5cGUgLTE5Pik7Cj4+OyBSb290cyA8dHlwZSAxOTc+OyBDdXJyZW50VGltZSA8dHlwZSAxNDE+OyBLZXlVc2FnZXMgPHR5cGUgMjEwIFtdIDx0eXBlIDE3Mz4+OyB9Pj4+KSAoY2hhaW5zIDx0eXBlIDIxMSBbXSA8dHlwZSAyMTIgW10gPHR5cGUgMTkyPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mj4pIENoZWNrU2lnbmF0dXJlRnJvbSAocGFyZW50IDx0eXBlIDE5Mj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mj4pIEVxdWFsIChvdGhlciA8dHlwZSAxOTI+KSA8dHlwZSAtMTU+OwogZnVuYyAoYyA8dHlwZSAxOTI+KSBWZXJpZnkgKG9wdHMgPHR5cGUgMTk1PikgKGNoYWlucyA8dHlwZSAyMTMgW10gPHR5cGUgMjE0IFtdIDx0eXBlIDE5Mj4+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxOTI+KSBWZXJpZnlIb3N0bmFtZSAoaCA8dHlwZSAtMTY+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxOTI+KSAuY3J5cHRvL3g1MDkuaXNWYWxpZCAoY2VydFR5cGUgPHR5cGUgLTExPiwgY3VycmVudENoYWluIDx0eXBlIDIxNSBbXSA8dHlwZSAxOTI+Piwgb3B0cyA8dHlwZSAxOTQ+KSA8dHlwZSAtMTk+OwogZnVuYyAoYyA8dHlwZSAxOTI+KSBDaGVja0NSTFNpZ25hdHVyZSAoY3JsIDx0eXBlIDIxNiAqPHR5cGUgMjE3ICJjcnlwdG8veDUwOS9wa2l4LkNlcnRpZmljYXRlTGlzdCIgPHR5cGUgMjE4IHN0cnVjdCB7IFRCU0NlcnRMaXN0IDx0eXBlIDIxOSAiY3J5cHRvL3g1MDkvcGtpeC5UQlNDZXJ0aWZpY2F0ZUxpc3QiIDx0eXBlIDIyMCBzdHJ1Y3QgeyBSYXcgPHR5cGUgMjIxICJlbmNvZGluZy9hc24xLlJhd0NvbnRlbnQiIDx0eXBlIDIyMiBbXSA8dHlwZSAtMjA+Pj47IFZlcnNpb24gPHR5cGUgLTExPiAiYXNuMTpcIm9wdGlvbmFsLGRlZmF1bHQ6MlwiIjsgU2lnbmF0dXJlIDx0eXBlIDIyMyAiY3J5cHRvL3g1MDkvcGtpeC5BbGdvcml0aG1JZGVudGlmaWVyIiA8dHlwZSAyMjQgc3RydWN0IHsgQWxnb3JpdGhtIDx0eXBlIDEzMj47IFBhcmFtZXRlcnMgPHR5cGUgMjI1ICJlbmNvZGluZy9hc24xLlJhd1ZhbHVlIiA8dHlwZSAyMjYgc3RydWN0IHsgQ2xhc3MgPHR5cGUgLTExPjsgVGFnIDx0eXBlIC0xMT47IElzQ29tcG91bmQgPHR5cGUgLTE1PjsgQnl0ZXMgPHR5cGUgMjI3IFtdIDx0eXBlIC0yMD4+OyBGdWxsQnl0ZXMgPHR5cGUgMjI4IFtdIDx0eXBlIC0yMD4+OyB9Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgfT4+OyBJc3N1ZXIgPHR5cGUgMTM1PjsgVGhpc1VwZGF0ZSA8dHlwZSAxNDE+OyBOZXh0VXBkYXRlIDx0eXBlIDE0MT4gImFzbjE6XCJvcHRpb25hbFwiIjsgUmV2b2tlZENlcnRpZmljYXRlcyA8dHlwZSAyMjkgW10gPHR5cGUgMjMwICJjcnlwdG8veDUwOS9wa2l4LlJldm9rZWRDZXJ0aWZpY2F0ZSIgPHR5cGUgMjMxIHN0cnVjdCB7IFNlcmlhbE51bWJlciA8dHlwZSA4Mj47IFJldm9jYXRpb25UaW1lIDx0eXBlIDE0MT47IEV4dGVuc2lvbnMgPHR5cGUgMjMyIFtdIDx0eXBlIDE2OD4+ICJhc24xOlwib3B0aW9uYWxcIiI7IH0+Pj4gImFzbjE6XCJvcHRpb25hbFwiIjsgRXh0ZW5zaW9ucyA8dHlwZSAyMzMgW10gPHR5cGUgMTY4Pj4gImFzbjE6XCJ0YWc6MCxvcHRpb25hbCxleHBsaWNpdFwiIjsgfT4+OyBTaWduYXR1cmVBbGdvcml0aG0gPHR5cGUgMjIzPjsgU2lnbmF0dXJlVmFsdWUgPHR5cGUgMjM0ICJlbmNvZGluZy9hc24xLkJpdFN0cmluZyIgPHR5cGUgMjM1IHN0cnVjdCB7IEJ5dGVzIDx0eXBlIDIzNiBbXSA8dHlwZSAtMjA+PjsgQml0TGVuZ3RoIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDIzND4pIEF0IChpIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDIzND4pIFJpZ2h0QWxpZ24gKCkgPHR5cGUgMjM3IFtdIDx0eXBlIC0yMD4+Owo+OyB9PgogZnVuYyAoY2VydExpc3QgPHR5cGUgMjM4ICo8dHlwZSAyMTc+PikgSGFzRXhwaXJlZCAobm93IDx0eXBlIDE0MT4pIDx0eXBlIC0xNT47Cj4+KSAoZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYyA8dHlwZSAxOTI+KSAuY3J5cHRvL3g1MDkuYnVpbGRDaGFpbnMgKGNhY2hlIDx0eXBlIDIzOSBtYXAgWzx0eXBlIC0xMT5dIDx0eXBlIDI0MCBbXSA8dHlwZSAyNDEgW10gPHR5cGUgMTkyPj4+PiwgY3VycmVudENoYWluIDx0eXBlIDI0MiBbXSA8dHlwZSAxOTI+Piwgb3B0cyA8dHlwZSAxOTQ+KSAoY2hhaW5zIDx0eXBlIDI0MyBbXSA8dHlwZSAyNDQgW10gPHR5cGUgMTkyPj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChjIDx0eXBlIDE5Mj4pIENyZWF0ZUNSTCAocmFuZCA8dHlwZSAzNz4sIHByaXYgPHR5cGUgMjQ1IGludGVyZmFjZSB7IH0+LCByZXZva2VkQ2VydHMgPHR5cGUgMjQ2IFtdIDx0eXBlIDIzMD4+LCBub3cgPHR5cGUgMTQxPiwgZXhwaXJ5IDx0eXBlIDE0MT4pIChjcmxCeXRlcyA8dHlwZSAyNDcgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKPj4+OyBWZXJpZmllZENoYWlucyA8dHlwZSAyNDggW10gPHR5cGUgMjQ5IFtdIDx0eXBlIDcwPj4+OyBUTFNVbmlxdWUgPHR5cGUgMjUwIFtdIDx0eXBlIC0yMD4+OyB9Pj4+OyB9PgogZnVuYyAociA8dHlwZSAyNTEgKjx0eXBlIDIyPj4pIC5uZXQvaHR0cC5leHBlY3RzQ29udGludWUgKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgUmVmZXJlciAoKSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNTE+KSBQcm90b0F0TGVhc3QgKG1ham9yIDx0eXBlIC0xMT4sIG1pbm9yIDx0eXBlIC0xMT4pIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI1MT4pIC5uZXQvaHR0cC5tdWx0aXBhcnRSZWFkZXIgKCkgKD8gPHR5cGUgMjUyICo8dHlwZSAyNTMgIm1pbWUvbXVsdGlwYXJ0LlJlYWRlciIgPHR5cGUgMjU0IHN0cnVjdCB7IC5taW1lL211bHRpcGFydC5idWZSZWFkZXIgPHR5cGUgMjU1ICo8dHlwZSAyNTYgImJ1ZmlvLlJlYWRlciIgPHR5cGUgMjU3IHN0cnVjdCB7IC5idWZpby5idWYgPHR5cGUgMjU4IFtdIDx0eXBlIC0yMD4+OyAuYnVmaW8ucmQgPHR5cGUgMzc+OyAuYnVmaW8uciA8dHlwZSAtMTE+OyAuYnVmaW8udyA8dHlwZSAtMTE+OyAuYnVmaW8uZXJyIDx0eXBlIC0xOT47IC5idWZpby5sYXN0Qnl0ZSA8dHlwZSAtMTE+OyAuYnVmaW8ubGFzdFJ1bmVTaXplIDx0eXBlIC0xMT47IH0+CiBmdW5jIChiIDx0eXBlIDI1OSAqPHR5cGUgMjU2Pj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjU5PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI1OT4pIFdyaXRlVG8gKHcgPHR5cGUgNj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSBSZWFkQnl0ZXMgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI2MCBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSAuYnVmaW8ud3JpdGVCdWYgKHcgPHR5cGUgNj4pICg/IDx0eXBlIC00PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjU5PikgUmVhZExpbmUgKCkgKGxpbmUgPHR5cGUgMjYxIFtdIDx0eXBlIC0yMD4+LCBpc1ByZWZpeCA8dHlwZSAtMTU+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI1OT4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSBSZWFkU2xpY2UgKGRlbGltIDx0eXBlIC0yMD4pIChsaW5lIDx0eXBlIDI2MiBbXSA8dHlwZSAtMjA+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSBSZXNldCAociA8dHlwZSAzNz4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSBSZWFkIChwIDx0eXBlIDI2MyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNTk+KSAuYnVmaW8uZmlsbCAoKTsKIGZ1bmMgKGIgPHR5cGUgMjU5PikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAoYiA8dHlwZSAyNTk+KSBCdWZmZXJlZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAoYiA8dHlwZSAyNTk+KSAuYnVmaW8ucmVzZXQgKGJ1ZiA8dHlwZSAyNjQgW10gPHR5cGUgLTIwPj4sIHIgPHR5cGUgMzc+KTsKIGZ1bmMgKGIgPHR5cGUgMjU5PikgUGVlayAobiA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyNjUgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI1OT4pIC5idWZpby5yZWFkRXJyICgpIDx0eXBlIC0xOT47Cj4+OyAubWltZS9tdWx0aXBhcnQuY3VycmVudFBhcnQgPHR5cGUgMjY2ICo8dHlwZSAyNjcgIm1pbWUvbXVsdGlwYXJ0LlBhcnQiIDx0eXBlIDI2OCBzdHJ1Y3QgeyBIZWFkZXIgPHR5cGUgNTM+OyAubWltZS9tdWx0aXBhcnQuYnVmZmVyIDx0eXBlIDI2OSAqPHR5cGUgMjcwICJieXRlcy5CdWZmZXIiIDx0eXBlIDI3MSBzdHJ1Y3QgeyAuYnl0ZXMuYnVmIDx0eXBlIDI3MiBbXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLm9mZiA8dHlwZSAtMTE+OyAuYnl0ZXMucnVuZUJ5dGVzIDx0eXBlIDI3MyBbNCBdIDx0eXBlIC0yMD4+OyAuYnl0ZXMuYm9vdHN0cmFwIDx0eXBlIDI3NCBbNjQgXSA8dHlwZSAtMjA+PjsgLmJ5dGVzLmxhc3RSZWFkIDx0eXBlIDI3NSAiLmJ5dGVzLnJlYWRPcCIgPHR5cGUgLTExPj47IH0+CiBmdW5jIChiIDx0eXBlIDI3NiAqPHR5cGUgMjcwPj4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGIgPHR5cGUgMjc2PikgVHJ1bmNhdGUgKG4gPHR5cGUgLTExPik7CiBmdW5jIChiIDx0eXBlIDI3Nj4pIFdyaXRlU3RyaW5nIChzIDx0eXBlIC0xNj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc2PikgUmVhZFN0cmluZyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgLTE2PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzY+KSBSZWFkQnl0ZSAoKSAoYyA8dHlwZSAtMjA+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3Nj4pIE5leHQgKG4gPHR5cGUgLTExPikgPHR5cGUgMjc3IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAoYiA8dHlwZSAyNzY+KSBXcml0ZVJ1bmUgKHIgPHR5cGUgLTIxPikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzY+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGIgPHR5cGUgMjc2PikgV3JpdGVUbyAodyA8dHlwZSA2PikgKG4gPHR5cGUgLTQ+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3Nj4pIFJlYWRCeXRlcyAoZGVsaW0gPHR5cGUgLTIwPikgKGxpbmUgPHR5cGUgMjc4IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3Nj4pIC5ieXRlcy5ncm93IChuIDx0eXBlIC0xMT4pIDx0eXBlIC0xMT47CiBmdW5jIChiIDx0eXBlIDI3Nj4pIFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzY+KSBVbnJlYWRSdW5lICgpIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI3Nj4pIFJlYWQgKHAgPHR5cGUgMjc5IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChiIDx0eXBlIDI3Nj4pIFJlc2V0ICgpOwogZnVuYyAoYiA8dHlwZSAyNzY+KSAuYnl0ZXMucmVhZFNsaWNlIChkZWxpbSA8dHlwZSAtMjA+KSAobGluZSA8dHlwZSAyODAgW10gPHR5cGUgLTIwPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGIgPHR5cGUgMjc2PikgV3JpdGVCeXRlIChjIDx0eXBlIC0yMD4pIDx0eXBlIC0xOT47CiBmdW5jIChiIDx0eXBlIDI3Nj4pIFdyaXRlIChwIDx0eXBlIDI4MSBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzY+KSBSZWFkRnJvbSAociA8dHlwZSAzNz4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoYiA8dHlwZSAyNzY+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKGIgPHR5cGUgMjc2PikgR3JvdyAobiA8dHlwZSAtMTE+KTsKIGZ1bmMgKGIgPHR5cGUgMjc2PikgQnl0ZXMgKCkgPHR5cGUgMjgyIFtdIDx0eXBlIC0yMD4+Owo+PjsgLm1pbWUvbXVsdGlwYXJ0Lm1yIDx0eXBlIDI4MyAqPHR5cGUgMjUzPj47IC5taW1lL211bHRpcGFydC5ieXRlc1JlYWQgPHR5cGUgLTExPjsgLm1pbWUvbXVsdGlwYXJ0LmRpc3Bvc2l0aW9uIDx0eXBlIC0xNj47IC5taW1lL211bHRpcGFydC5kaXNwb3NpdGlvblBhcmFtcyA8dHlwZSAyODQgbWFwIFs8dHlwZSAtMTY+XSA8dHlwZSAtMTY+PjsgLm1pbWUvbXVsdGlwYXJ0LnIgPHR5cGUgMzc+OyB9PgogZnVuYyAocCA8dHlwZSAyODUgKjx0eXBlIDI2Nz4+KSBGaWxlTmFtZSAoKSA8dHlwZSAtMTY+OwogZnVuYyAocCA8dHlwZSAyODU+KSAubWltZS9tdWx0aXBhcnQucGFyc2VDb250ZW50RGlzcG9zaXRpb24gKCk7CiBmdW5jIChwIDx0eXBlIDI4NT4pIENsb3NlICgpIDx0eXBlIC0xOT47CiBmdW5jIChicCA8dHlwZSAyODU+KSAubWltZS9tdWx0aXBhcnQucG9wdWxhdGVIZWFkZXJzICgpIDx0eXBlIC0xOT47CiBmdW5jIChwIDx0eXBlIDI4NT4pIFJlYWQgKGQgPHR5cGUgMjg2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChwIDx0eXBlIDI4NT4pIEZvcm1OYW1lICgpIDx0eXBlIC0xNj47Cj4+OyAubWltZS9tdWx0aXBhcnQucGFydHNSZWFkIDx0eXBlIC0xMT47IC5taW1lL211bHRpcGFydC5ubCA8dHlwZSAyODcgW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5ubERhc2hCb3VuZGFyeSA8dHlwZSAyODggW10gPHR5cGUgLTIwPj47IC5taW1lL211bHRpcGFydC5kYXNoQm91bmRhcnlEYXNoIDx0eXBlIDI4OSBbXSA8dHlwZSAtMjA+PjsgLm1pbWUvbXVsdGlwYXJ0LmRhc2hCb3VuZGFyeSA8dHlwZSAyOTAgW10gPHR5cGUgLTIwPj47IH0+CiBmdW5jIChtciA8dHlwZSAyOTEgKjx0eXBlIDI1Mz4+KSAubWltZS9tdWx0aXBhcnQucGVla0J1ZmZlcklzRW1wdHlQYXJ0IChwZWVrIDx0eXBlIDI5MiBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHIgPHR5cGUgMjkxPikgUmVhZEZvcm0gKG1heE1lbW9yeSA8dHlwZSAtND4pIChmIDx0eXBlIDQzPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAobXIgPHR5cGUgMjkxPikgLm1pbWUvbXVsdGlwYXJ0LmlzQm91bmRhcnlEZWxpbWl0ZXJMaW5lIChsaW5lIDx0eXBlIDI5MyBbXSA8dHlwZSAtMjA+PikgKHJldCA8dHlwZSAtMTU+KTsKIGZ1bmMgKHIgPHR5cGUgMjkxPikgTmV4dFBhcnQgKCkgKD8gPHR5cGUgMjY2PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKG1yIDx0eXBlIDI5MT4pIC5taW1lL211bHRpcGFydC5pc0ZpbmFsQm91bmRhcnkgKGxpbmUgPHR5cGUgMjk0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTU+Owo+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgLm5ldC9odHRwLndhbnRzSHR0cDEwS2VlcEFsaXZlICgpIDx0eXBlIC0xNT47CiBmdW5jIChyIDx0eXBlIDI1MT4pIFBhcnNlTXVsdGlwYXJ0Rm9ybSAobWF4TWVtb3J5IDx0eXBlIC00PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgVXNlckFnZW50ICgpIDx0eXBlIC0xNj47CiBmdW5jIChyZXEgPHR5cGUgMjUxPikgLm5ldC9odHRwLndyaXRlICh3IDx0eXBlIDY+LCB1c2luZ1Byb3h5IDx0eXBlIC0xNT4sIGV4dHJhSGVhZGVycyA8dHlwZSAzPikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgQ29va2llcyAoKSA8dHlwZSAyOTUgW10gPHR5cGUgMjk2ICo8dHlwZSAyOTcgIm5ldC9odHRwLkNvb2tpZSIgPHR5cGUgMjk4IHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgVmFsdWUgPHR5cGUgLTE2PjsgUGF0aCA8dHlwZSAtMTY+OyBEb21haW4gPHR5cGUgLTE2PjsgRXhwaXJlcyA8dHlwZSAxNDE+OyBSYXdFeHBpcmVzIDx0eXBlIC0xNj47IE1heEFnZSA8dHlwZSAtMTE+OyBTZWN1cmUgPHR5cGUgLTE1PjsgSHR0cE9ubHkgPHR5cGUgLTE1PjsgUmF3IDx0eXBlIC0xNj47IFVucGFyc2VkIDx0eXBlIDI5OSBbXSA8dHlwZSAtMTY+PjsgfT4KIGZ1bmMgKGMgPHR5cGUgMzAwICo8dHlwZSAyOTc+PikgU3RyaW5nICgpIDx0eXBlIC0xNj47Cj4+PjsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgV3JpdGVQcm94eSAodyA8dHlwZSA2PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgTXVsdGlwYXJ0UmVhZGVyICgpICg/IDx0eXBlIDI1Mj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI1MT4pIFdyaXRlICh3IDx0eXBlIDY+KSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAyNTE+KSAubmV0L2h0dHAud2FudHNDbG9zZSAoKSA8dHlwZSAtMTU+OwogZnVuYyAociA8dHlwZSAyNTE+KSBGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNTE+KSBQYXJzZUZvcm0gKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgQ29va2llIChuYW1lIDx0eXBlIC0xNj4pICg/IDx0eXBlIDI5Nj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDI1MT4pIFBvc3RGb3JtVmFsdWUgKGtleSA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAociA8dHlwZSAyNTE+KSBBZGRDb29raWUgKGMgPHR5cGUgMjk2Pik7CiBmdW5jIChyIDx0eXBlIDI1MT4pIEZvcm1GaWxlIChrZXkgPHR5cGUgLTE2PikgKD8gPHR5cGUgNTg+LCA/IDx0eXBlIDUwPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgLm5ldC9odHRwLmNsb3NlQm9keSAoKTsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgU2V0QmFzaWNBdXRoICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+KTsKIGZ1bmMgKHIgPHR5cGUgMjUxPikgQmFzaWNBdXRoICgpICh1c2VybmFtZSA8dHlwZSAtMTY+LCBwYXNzd29yZCA8dHlwZSAtMTY+LCBvayA8dHlwZSAtMTU+KTsKPj4pOwpmdW5jIEhhbmRsZXIgKG5hbWUgPHR5cGUgLTE2PikgPHR5cGUgMzAxICJuZXQvaHR0cC5IYW5kbGVyIiA8dHlwZSAzMDIgaW50ZXJmYWNlIHsgU2VydmVIVFRQICg/IDx0eXBlIDE+LCA/IDx0eXBlIDIxPik7IH0+PjsKZnVuYyBJbmRleCAodyA8dHlwZSAxPiwgciA8dHlwZSAyMT4pOwpmdW5jIFByb2ZpbGUgKHcgPHR5cGUgMT4sIHIgPHR5cGUgMjE+KTsKZnVuYyBTeW1ib2wgKHcgPHR5cGUgMT4sIHIgPHR5cGUgMjE+KTsKY2hlY2tzdW0gNzQ0Mzc2NzZCRjI0RTEyN0ZDNzJDMjA1QTVCOEZDNzk2M0RGQTBCNzsKAC5zeW10YWIALnN0cnRhYgAuc2hzdHJ0YWIALmdvX2V4cG9ydAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAKR+AAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAANh+AAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAfwAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAIH8AAAEAAAAAAAAAAAAAAAEAAAAAAAAA