f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAABwKgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHN1ZmZpeGFycmF5Owpwa2dwYXRoIGluZGV4L3N1ZmZpeGFycmF5Owpwcmlvcml0eSA3OwppbXBvcnQgYnl0ZXMgYnl0ZXMgImJ5dGVzIjsKaW1wb3J0IGJpbmFyeSBlbmNvZGluZy9iaW5hcnkgImVuY29kaW5nL2JpbmFyeSI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgcmVnZXhwIHJlZ2V4cCAicmVnZXhwIjsKaW1wb3J0IHNvcnQgc29ydCAic29ydCI7CmluaXQgbWF0aCBtYXRoLi5pbXBvcnQgMSBydW50aW1lIHJ1bnRpbWUuLmltcG9ydCAxIHVuaWNvZGUgdW5pY29kZS4uaW1wb3J0IDEgc3RyY29udiBzdHJjb252Li5pbXBvcnQgMiBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMyByZWZsZWN0IHJlZmxlY3QuLmltcG9ydCAzIGJpbmFyeSBlbmNvZGluZ19iaW5hcnkuLmltcG9ydCA0IGJ5dGVzIGJ5dGVzLi5pbXBvcnQgNCBzeW50YXggcmVnZXhwX3N5bnRheC4uaW1wb3J0IDUgcmVnZXhwIHJlZ2V4cC4uaW1wb3J0IDY7CnR5cGUgPHR5cGUgMSAiSW5kZXgiIDx0eXBlIDIgc3RydWN0IHsgLmluZGV4L3N1ZmZpeGFycmF5LmRhdGEgPHR5cGUgMyBbXSA8dHlwZSAtMjA+PjsgLmluZGV4L3N1ZmZpeGFycmF5LnNhIDx0eXBlIDQgW10gPHR5cGUgLTExPj47IH0+CiBmdW5jICh4IDx0eXBlIDUgKjx0eXBlIDE+PikgUmVhZCAociA8dHlwZSA2ICJpby5SZWFkZXIiIDx0eXBlIDcgaW50ZXJmYWNlIHsgUmVhZCAocCA8dHlwZSA4IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHggPHR5cGUgNT4pIFdyaXRlICh3IDx0eXBlIDkgImlvLldyaXRlciIgPHR5cGUgMTAgaW50ZXJmYWNlIHsgV3JpdGUgKHAgPHR5cGUgMTEgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeCA8dHlwZSA1PikgQnl0ZXMgKCkgPHR5cGUgMTIgW10gPHR5cGUgLTIwPj47CiBmdW5jICh4IDx0eXBlIDU+KSAuaW5kZXgvc3VmZml4YXJyYXkuYXQgKGkgPHR5cGUgLTExPikgPHR5cGUgMTMgW10gPHR5cGUgLTIwPj47CiBmdW5jICh4IDx0eXBlIDU+KSAuaW5kZXgvc3VmZml4YXJyYXkubG9va3VwQWxsIChzIDx0eXBlIDE0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAxNSBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHggPHR5cGUgNT4pIExvb2t1cCAocyA8dHlwZSAxNiBbXSA8dHlwZSAtMjA+PiwgbiA8dHlwZSAtMTE+KSAocmVzdWx0IDx0eXBlIDE3IFtdIDx0eXBlIC0xMT4+KTsKIGZ1bmMgKHggPHR5cGUgNT4pIEZpbmRBbGxJbmRleCAociA8dHlwZSAxOCAqPHR5cGUgMTkgInJlZ2V4cC5SZWdleHAiIDx0eXBlIDIwIHN0cnVjdCB7IC5yZWdleHAuZXhwciA8dHlwZSAtMTY+OyAucmVnZXhwLnByb2cgPHR5cGUgMjEgKjx0eXBlIDIyICJyZWdleHAvc3ludGF4LlByb2ciICJzeW50YXgiIDx0eXBlIDIzIHN0cnVjdCB7IEluc3QgPHR5cGUgMjQgW10gPHR5cGUgMjUgInJlZ2V4cC9zeW50YXguSW5zdCIgPHR5cGUgMjYgc3RydWN0IHsgT3AgPHR5cGUgMjcgInJlZ2V4cC9zeW50YXguSW5zdE9wIiA8dHlwZSAtNT4KIGZ1bmMgKGkgPHR5cGUgMjc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsgT3V0IDx0eXBlIC03PjsgQXJnIDx0eXBlIC03PjsgUnVuZSA8dHlwZSAyOCBbXSA8dHlwZSAtMjE+PjsgfT4KIGZ1bmMgKGkgPHR5cGUgMjkgKjx0eXBlIDI1Pj4pIC5yZWdleHAvc3ludGF4Lm9wICgpIDx0eXBlIDI3PjsKIGZ1bmMgKGkgPHR5cGUgMjk+KSBNYXRjaFJ1bmUgKHIgPHR5cGUgLTIxPikgPHR5cGUgLTE1PjsKIGZ1bmMgKGkgPHR5cGUgMjk+KSBNYXRjaFJ1bmVQb3MgKHIgPHR5cGUgLTIxPikgPHR5cGUgLTExPjsKIGZ1bmMgKGkgPHR5cGUgMjk+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGkgPHR5cGUgMjk+KSBNYXRjaEVtcHR5V2lkdGggKGJlZm9yZSA8dHlwZSAtMjE+LCBhZnRlciA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+Owo+PjsgU3RhcnQgPHR5cGUgLTExPjsgTnVtQ2FwIDx0eXBlIC0xMT47IH0+CiBmdW5jIChwIDx0eXBlIDMwICo8dHlwZSAyMj4+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHAgPHR5cGUgMzA+KSAucmVnZXhwL3N5bnRheC5za2lwTm9wIChwYyA8dHlwZSAtNz4pICg/IDx0eXBlIDI5PiwgPyA8dHlwZSAtNz4pOwogZnVuYyAocCA8dHlwZSAzMD4pIFN0YXJ0Q29uZCAoKSA8dHlwZSAzMSAicmVnZXhwL3N5bnRheC5FbXB0eU9wIiA8dHlwZSAtNT4+OwogZnVuYyAocCA8dHlwZSAzMD4pIFByZWZpeCAoKSAocHJlZml4IDx0eXBlIC0xNj4sIGNvbXBsZXRlIDx0eXBlIC0xNT4pOwo+PjsgLnJlZ2V4cC5vbmVwYXNzIDx0eXBlIDMyICo8dHlwZSAzMyAiLnJlZ2V4cC5vbmVQYXNzUHJvZyIgPHR5cGUgMzQgc3RydWN0IHsgSW5zdCA8dHlwZSAzNSBbXSA8dHlwZSAzNiAiLnJlZ2V4cC5vbmVQYXNzSW5zdCIgPHR5cGUgMzcgc3RydWN0IHsgPyA8dHlwZSAyNT47IE5leHQgPHR5cGUgMzggW10gPHR5cGUgLTc+PjsgfT4+PjsgU3RhcnQgPHR5cGUgLTExPjsgTnVtQ2FwIDx0eXBlIC0xMT47IH0+Pj47IC5yZWdleHAucHJlZml4IDx0eXBlIC0xNj47IC5yZWdleHAucHJlZml4Qnl0ZXMgPHR5cGUgMzkgW10gPHR5cGUgLTIwPj47IC5yZWdleHAucHJlZml4Q29tcGxldGUgPHR5cGUgLTE1PjsgLnJlZ2V4cC5wcmVmaXhSdW5lIDx0eXBlIC0yMT47IC5yZWdleHAucHJlZml4RW5kIDx0eXBlIC03PjsgLnJlZ2V4cC5jb25kIDx0eXBlIDMxPjsgLnJlZ2V4cC5udW1TdWJleHAgPHR5cGUgLTExPjsgLnJlZ2V4cC5zdWJleHBOYW1lcyA8dHlwZSA0MCBbXSA8dHlwZSAtMTY+PjsgLnJlZ2V4cC5sb25nZXN0IDx0eXBlIC0xNT47IC5yZWdleHAubXUgPHR5cGUgNDEgInN5bmMuTXV0ZXgiICJzeW5jIiA8dHlwZSA0MiBzdHJ1Y3QgeyAuc3luYy5zdGF0ZSA8dHlwZSAtMz47IC5zeW5jLnNlbWEgPHR5cGUgLTc+OyB9PgogZnVuYyAobSA8dHlwZSA0MyAqPHR5cGUgNDE+PikgVW5sb2NrICgpOwogZnVuYyAobSA8dHlwZSA0Mz4pIExvY2sgKCk7Cj47IC5yZWdleHAubWFjaGluZSA8dHlwZSA0NCBbXSA8dHlwZSA0NSAqPHR5cGUgNDYgIi5yZWdleHAubWFjaGluZSIgPHR5cGUgNDcgc3RydWN0IHsgLnJlZ2V4cC5yZSA8dHlwZSA0OCAqPHR5cGUgMTk+PjsgLnJlZ2V4cC5wIDx0eXBlIDIxPjsgLnJlZ2V4cC5vcCA8dHlwZSAzMj47IC5yZWdleHAucTAgPHR5cGUgNDkgIi5yZWdleHAucXVldWUiIDx0eXBlIDUwIHN0cnVjdCB7IC5yZWdleHAuc3BhcnNlIDx0eXBlIDUxIFtdIDx0eXBlIC03Pj47IC5yZWdleHAuZGVuc2UgPHR5cGUgNTIgW10gPHR5cGUgNTMgIi5yZWdleHAuZW50cnkiIDx0eXBlIDU0IHN0cnVjdCB7IC5yZWdleHAucGMgPHR5cGUgLTc+OyAucmVnZXhwLnQgPHR5cGUgNTUgKjx0eXBlIDU2ICIucmVnZXhwLnRocmVhZCIgPHR5cGUgNTcgc3RydWN0IHsgLnJlZ2V4cC5pbnN0IDx0eXBlIDI5PjsgLnJlZ2V4cC5jYXAgPHR5cGUgNTggW10gPHR5cGUgLTExPj47IH0+Pj47IH0+Pj47IH0+PjsgLnJlZ2V4cC5xMSA8dHlwZSA0OT47IC5yZWdleHAucG9vbCA8dHlwZSA1OSBbXSA8dHlwZSA1NT4+OyAucmVnZXhwLm1hdGNoZWQgPHR5cGUgLTE1PjsgLnJlZ2V4cC5tYXRjaGNhcCA8dHlwZSA2MCBbXSA8dHlwZSAtMTE+PjsgLnJlZ2V4cC5pbnB1dEJ5dGVzIDx0eXBlIDYxICIucmVnZXhwLmlucHV0Qnl0ZXMiIDx0eXBlIDYyIHN0cnVjdCB7IC5yZWdleHAuc3RyIDx0eXBlIDYzIFtdIDx0eXBlIC0yMD4+OyB9PgogZnVuYyAoaSA8dHlwZSA2NCAqPHR5cGUgNjE+PikgLnJlZ2V4cC5jYW5DaGVja1ByZWZpeCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSA2ND4pIC5yZWdleHAuY29udGV4dCAocG9zIDx0eXBlIC0xMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKGkgPHR5cGUgNjQ+KSAucmVnZXhwLmluZGV4IChyZSA8dHlwZSA0OD4sIHBvcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoaSA8dHlwZSA2ND4pIC5yZWdleHAuaGFzUHJlZml4IChyZSA8dHlwZSA0OD4pIDx0eXBlIC0xNT47CiBmdW5jIChpIDx0eXBlIDY0PikgLnJlZ2V4cC5zdGVwIChwb3MgPHR5cGUgLTExPikgKD8gPHR5cGUgLTIxPiwgPyA8dHlwZSAtMTE+KTsKPjsgLnJlZ2V4cC5pbnB1dFN0cmluZyA8dHlwZSA2NSAiLnJlZ2V4cC5pbnB1dFN0cmluZyIgPHR5cGUgNjYgc3RydWN0IHsgLnJlZ2V4cC5zdHIgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGkgPHR5cGUgNjcgKjx0eXBlIDY1Pj4pIC5yZWdleHAuY2FuQ2hlY2tQcmVmaXggKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKGkgPHR5cGUgNjc+KSAucmVnZXhwLmNvbnRleHQgKHBvcyA8dHlwZSAtMTE+KSA8dHlwZSAzMT47CiBmdW5jIChpIDx0eXBlIDY3PikgLnJlZ2V4cC5pbmRleCAocmUgPHR5cGUgNDg+LCBwb3MgPHR5cGUgLTExPikgPHR5cGUgLTExPjsKIGZ1bmMgKGkgPHR5cGUgNjc+KSAucmVnZXhwLmhhc1ByZWZpeCAocmUgPHR5cGUgNDg+KSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSA2Nz4pIC5yZWdleHAuc3RlcCAocG9zIDx0eXBlIC0xMT4pICg/IDx0eXBlIC0yMT4sID8gPHR5cGUgLTExPik7Cj47IC5yZWdleHAuaW5wdXRSZWFkZXIgPHR5cGUgNjggIi5yZWdleHAuaW5wdXRSZWFkZXIiIDx0eXBlIDY5IHN0cnVjdCB7IC5yZWdleHAuciA8dHlwZSA3MCAiaW8uUnVuZVJlYWRlciIgPHR5cGUgNzEgaW50ZXJmYWNlIHsgUmVhZFJ1bmUgKCkgKHIgPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgLnJlZ2V4cC5hdEVPVCA8dHlwZSAtMTU+OyAucmVnZXhwLnBvcyA8dHlwZSAtMTE+OyB9PgogZnVuYyAoaSA8dHlwZSA3MiAqPHR5cGUgNjg+PikgLnJlZ2V4cC5jYW5DaGVja1ByZWZpeCAoKSA8dHlwZSAtMTU+OwogZnVuYyAoaSA8dHlwZSA3Mj4pIC5yZWdleHAuY29udGV4dCAocG9zIDx0eXBlIC0xMT4pIDx0eXBlIDMxPjsKIGZ1bmMgKGkgPHR5cGUgNzI+KSAucmVnZXhwLmluZGV4IChyZSA8dHlwZSA0OD4sIHBvcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAoaSA8dHlwZSA3Mj4pIC5yZWdleHAuaGFzUHJlZml4IChyZSA8dHlwZSA0OD4pIDx0eXBlIC0xNT47CiBmdW5jIChpIDx0eXBlIDcyPikgLnJlZ2V4cC5zdGVwIChwb3MgPHR5cGUgLTExPikgKD8gPHR5cGUgLTIxPiwgPyA8dHlwZSAtMTE+KTsKPjsgfT4KIGZ1bmMgKG0gPHR5cGUgNzMgKjx0eXBlIDQ2Pj4pIC5yZWdleHAuYWRkIChxIDx0eXBlIDc0ICo8dHlwZSA0OT4+LCBwYyA8dHlwZSAtNz4sIHBvcyA8dHlwZSAtMTE+LCBjYXAgPHR5cGUgNzUgW10gPHR5cGUgLTExPj4sIGNvbmQgPHR5cGUgMzE+LCB0IDx0eXBlIDU1PikgPHR5cGUgNTU+OwogZnVuYyAobSA8dHlwZSA3Mz4pIC5yZWdleHAuYWxsb2MgKGkgPHR5cGUgMjk+KSA8dHlwZSA1NT47CiBmdW5jIChtIDx0eXBlIDczPikgLnJlZ2V4cC5uZXdJbnB1dFN0cmluZyAocyA8dHlwZSAtMTY+KSA8dHlwZSA3NiAiLnJlZ2V4cC5pbnB1dCIgPHR5cGUgNzcgaW50ZXJmYWNlIHsgLnJlZ2V4cC5zdGVwIChwb3MgPHR5cGUgLTExPikgKHIgPHR5cGUgLTIxPiwgd2lkdGggPHR5cGUgLTExPik7IC5yZWdleHAuY2FuQ2hlY2tQcmVmaXggKCkgPHR5cGUgLTE1PjsgLnJlZ2V4cC5oYXNQcmVmaXggKHJlIDx0eXBlIDQ4PikgPHR5cGUgLTE1PjsgLnJlZ2V4cC5pbmRleCAocmUgPHR5cGUgNDg+LCBwb3MgPHR5cGUgLTExPikgPHR5cGUgLTExPjsgLnJlZ2V4cC5jb250ZXh0IChwb3MgPHR5cGUgLTExPikgPHR5cGUgMzE+OyB9Pj47CiBmdW5jIChtIDx0eXBlIDczPikgLnJlZ2V4cC5pbml0IChuY2FwIDx0eXBlIC0xMT4pOwogZnVuYyAobSA8dHlwZSA3Mz4pIC5yZWdleHAuZnJlZSAodCA8dHlwZSA1NT4pOwogZnVuYyAobSA8dHlwZSA3Mz4pIC5yZWdleHAub25lcGFzcyAoaSA8dHlwZSA3Nj4sIHBvcyA8dHlwZSAtMTE+KSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSA3Mz4pIC5yZWdleHAubmV3SW5wdXRSZWFkZXIgKHIgPHR5cGUgNzA+KSA8dHlwZSA3Nj47CiBmdW5jIChtIDx0eXBlIDczPikgLnJlZ2V4cC5uZXdJbnB1dEJ5dGVzIChiIDx0eXBlIDc4IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA3Nj47CiBmdW5jIChtIDx0eXBlIDczPikgLnJlZ2V4cC5jbGVhciAocSA8dHlwZSA3ND4pOwogZnVuYyAobSA8dHlwZSA3Mz4pIC5yZWdleHAuc3RlcCAocnVucSA8dHlwZSA3ND4sIG5leHRxIDx0eXBlIDc0PiwgcG9zIDx0eXBlIC0xMT4sIG5leHRQb3MgPHR5cGUgLTExPiwgYyA8dHlwZSAtMjE+LCBuZXh0Q29uZCA8dHlwZSAzMT4pOwogZnVuYyAobSA8dHlwZSA3Mz4pIC5yZWdleHAubWF0Y2ggKGkgPHR5cGUgNzY+LCBwb3MgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKPj4+OyB9PgogZnVuYyAocmUgPHR5cGUgNDg+KSBSZXBsYWNlQWxsIChzcmMgPHR5cGUgNzkgW10gPHR5cGUgLTIwPj4sIHJlcGwgPHR5cGUgNzk+KSA8dHlwZSA4MCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgTGl0ZXJhbFByZWZpeCAoKSAocHJlZml4IDx0eXBlIC0xNj4sIGNvbXBsZXRlIDx0eXBlIC0xNT4pOwogZnVuYyAocmUgPHR5cGUgNDg+KSBOdW1TdWJleHAgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgU3BsaXQgKHMgPHR5cGUgLTE2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSA4MSBbXSA8dHlwZSAtMTY+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZFN0cmluZyAocyA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBGaW5kU3RyaW5nU3VibWF0Y2hJbmRleCAocyA8dHlwZSAtMTY+KSA8dHlwZSA4MiBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZFN1Ym1hdGNoIChiIDx0eXBlIDgzIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA4NCBbXSA8dHlwZSA4NSBbXSA8dHlwZSAtMjA+Pj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIEZpbmRBbGxTdHJpbmcgKHMgPHR5cGUgLTE2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSA4NiBbXSA8dHlwZSAtMTY+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgUmVwbGFjZUFsbExpdGVyYWwgKHNyYyA8dHlwZSA4NyBbXSA8dHlwZSAtMjA+PiwgcmVwbCA8dHlwZSA4Nz4pIDx0eXBlIDg4IFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBGaW5kSW5kZXggKGIgPHR5cGUgODkgW10gPHR5cGUgLTIwPj4pIChsb2MgPHR5cGUgOTAgW10gPHR5cGUgLTExPj4pOwogZnVuYyAocmUgPHR5cGUgNDg+KSBGaW5kQWxsU3RyaW5nU3VibWF0Y2hJbmRleCAocyA8dHlwZSAtMTY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDkxIFtdIDx0eXBlIDkyIFtdIDx0eXBlIC0xMT4+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgLnJlZ2V4cC5nZXQgKCkgPHR5cGUgNDU+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBGaW5kU3VibWF0Y2hJbmRleCAoYiA8dHlwZSA5MyBbXSA8dHlwZSAtMjA+PikgPHR5cGUgOTQgW10gPHR5cGUgLTExPj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIEZpbmRBbGwgKGIgPHR5cGUgOTUgW10gPHR5cGUgLTIwPj4sIG4gPHR5cGUgLTExPikgPHR5cGUgOTYgW10gPHR5cGUgOTcgW10gPHR5cGUgLTIwPj4+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBGaW5kUmVhZGVySW5kZXggKHIgPHR5cGUgNzA+KSAobG9jIDx0eXBlIDk4IFtdIDx0eXBlIC0xMT4+KTsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZEFsbFN0cmluZ0luZGV4IChzIDx0eXBlIC0xNj4sIG4gPHR5cGUgLTExPikgPHR5cGUgOTkgW10gPHR5cGUgMTAwIFtdIDx0eXBlIC0xMT4+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZEFsbFN0cmluZ1N1Ym1hdGNoIChzIDx0eXBlIC0xNj4sIG4gPHR5cGUgLTExPikgPHR5cGUgMTAxIFtdIDx0eXBlIDEwMiBbXSA8dHlwZSAtMTY+Pj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIEZpbmRTdHJpbmdTdWJtYXRjaCAocyA8dHlwZSAtMTY+KSA8dHlwZSAxMDMgW10gPHR5cGUgLTE2Pj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIFJlcGxhY2VBbGxTdHJpbmdGdW5jIChzcmMgPHR5cGUgLTE2PiwgcmVwbCA8dHlwZSAxMDQgKD8gPHR5cGUgLTE2PikgPHR5cGUgLTE2Pj4pIDx0eXBlIC0xNj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIC5yZWdleHAucGFkIChhIDx0eXBlIDEwNSBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMTA2IFtdIDx0eXBlIC0xMT4+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBGaW5kQWxsU3VibWF0Y2hJbmRleCAoYiA8dHlwZSAxMDcgW10gPHR5cGUgLTIwPj4sIG4gPHR5cGUgLTExPikgPHR5cGUgMTA4IFtdIDx0eXBlIDEwOSBbXSA8dHlwZSAtMTE+Pj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIEZpbmQgKGIgPHR5cGUgMTEwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAxMTEgW10gPHR5cGUgLTIwPj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIC5yZWdleHAucmVwbGFjZUFsbCAoYnNyYyA8dHlwZSAxMTIgW10gPHR5cGUgLTIwPj4sIHNyYyA8dHlwZSAtMTY+LCBubWF0Y2ggPHR5cGUgLTExPiwgcmVwbCA8dHlwZSAxMTMgKGRzdCA8dHlwZSAxMTQgW10gPHR5cGUgLTIwPj4sIG0gPHR5cGUgMTE1IFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAxMTYgW10gPHR5cGUgLTIwPj4+KSA8dHlwZSAxMTcgW10gPHR5cGUgLTIwPj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIE1hdGNoIChiIDx0eXBlIDExOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIEV4cGFuZFN0cmluZyAoZHN0IDx0eXBlIDExOSBbXSA8dHlwZSAtMjA+PiwgdGVtcGxhdGUgPHR5cGUgLTE2Piwgc3JjIDx0eXBlIC0xNj4sIG1hdGNoIDx0eXBlIDEyMCBbXSA8dHlwZSAtMTE+PikgPHR5cGUgMTIxIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBMb25nZXN0ICgpOwogZnVuYyAocmUgPHR5cGUgNDg+KSAucmVnZXhwLmV4cGFuZCAoZHN0IDx0eXBlIDEyMiBbXSA8dHlwZSAtMjA+PiwgdGVtcGxhdGUgPHR5cGUgLTE2PiwgYnNyYyA8dHlwZSAxMjMgW10gPHR5cGUgLTIwPj4sIHNyYyA8dHlwZSAtMTY+LCBtYXRjaCA8dHlwZSAxMjQgW10gPHR5cGUgLTExPj4pIDx0eXBlIDEyNSBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgTWF0Y2hTdHJpbmcgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgLnJlZ2V4cC5hbGxNYXRjaGVzIChzIDx0eXBlIC0xNj4sIGIgPHR5cGUgMTI2IFtdIDx0eXBlIC0yMD4+LCBuIDx0eXBlIC0xMT4sIGRlbGl2ZXIgPHR5cGUgMTI3ICg/IDx0eXBlIDEyOCBbXSA8dHlwZSAtMTE+Pik+KTsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgU3ViZXhwTmFtZXMgKCkgPHR5cGUgMTI5IFtdIDx0eXBlIC0xNj4+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBFeHBhbmQgKGRzdCA8dHlwZSAxMzAgW10gPHR5cGUgLTIwPj4sIHRlbXBsYXRlIDx0eXBlIDEzMSBbXSA8dHlwZSAtMjA+Piwgc3JjIDx0eXBlIDEzMiBbXSA8dHlwZSAtMjA+PiwgbWF0Y2ggPHR5cGUgMTMzIFtdIDx0eXBlIC0xMT4+KSA8dHlwZSAxMzQgW10gPHR5cGUgLTIwPj47CiBmdW5jIChyZSA8dHlwZSA0OD4pIE1hdGNoUmVhZGVyIChyIDx0eXBlIDcwPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgLnJlZ2V4cC5wdXQgKHogPHR5cGUgNDU+KTsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZFN0cmluZ0luZGV4IChzIDx0eXBlIC0xNj4pIChsb2MgPHR5cGUgMTM1IFtdIDx0eXBlIC0xMT4+KTsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgUmVwbGFjZUFsbEZ1bmMgKHNyYyA8dHlwZSAxMzYgW10gPHR5cGUgLTIwPj4sIHJlcGwgPHR5cGUgMTM3ICg/IDx0eXBlIDEzOCBbXSA8dHlwZSAtMjA+PikgPHR5cGUgMTM5IFtdIDx0eXBlIC0yMD4+PikgPHR5cGUgMTQwIFtdIDx0eXBlIC0yMD4+OwogZnVuYyAocmUgPHR5cGUgMTQxICo8dHlwZSAxOT4+KSAucmVnZXhwLmRvRXhlY3V0ZSAociA8dHlwZSA3MD4sIGIgPHR5cGUgMTQyIFtdIDx0eXBlIC0yMD4+LCBzIDx0eXBlIC0xNj4sIHBvcyA8dHlwZSAtMTE+LCBuY2FwIDx0eXBlIC0xMT4pIDx0eXBlIDE0MyBbXSA8dHlwZSAtMTE+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgUmVwbGFjZUFsbFN0cmluZyAoc3JjIDx0eXBlIC0xNj4sIHJlcGwgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZEFsbFN1Ym1hdGNoIChiIDx0eXBlIDE0NCBbXSA8dHlwZSAtMjA+PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAxNDUgW10gPHR5cGUgMTQ2IFtdIDx0eXBlIDE0NyBbXSA8dHlwZSAtMjA+Pj4+OwogZnVuYyAocmUgPHR5cGUgNDg+KSBSZXBsYWNlQWxsTGl0ZXJhbFN0cmluZyAoc3JjIDx0eXBlIC0xNj4sIHJlcGwgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZEFsbEluZGV4IChiIDx0eXBlIDE0OCBbXSA8dHlwZSAtMjA+PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAxNDkgW10gPHR5cGUgMTUwIFtdIDx0eXBlIC0xMT4+PjsKIGZ1bmMgKHJlIDx0eXBlIDQ4PikgRmluZFJlYWRlclN1Ym1hdGNoSW5kZXggKHIgPHR5cGUgNzA+KSA8dHlwZSAxNTEgW10gPHR5cGUgLTExPj47Cj4+LCBuIDx0eXBlIC0xMT4pIChyZXN1bHQgPHR5cGUgMTUyIFtdIDx0eXBlIDE1MyBbXSA8dHlwZSAtMTE+Pj4pOwo+OwpmdW5jIE5ldyAoZGF0YSA8dHlwZSAxNTQgW10gPHR5cGUgLTIwPj4pIDx0eXBlIDU+OwpjaGVja3N1bSA0Mzc2M0YxNjM1QzhBN0U5NzM1MEVBMDY4QTFBRjYwQjA5MTI5RjczOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAPIpAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAACYqAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAABMKgAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAbCoAAAEAAAAAAAAAAAAAAAEAAAAAAAAA