f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAACYEgAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHN0cmluZ3M7CnBrZ3BhdGggc3RyaW5nczsKcHJpb3JpdHkgNDsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgdW5pY29kZSB1bmljb2RlICJ1bmljb2RlIjsKaW1wb3J0IHV0ZjggdW5pY29kZS91dGY4ICJ1bmljb2RlL3V0ZjgiOwppbml0IHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzeW5jIHN5bmMuLmltcG9ydCAyIGlvIGlvLi5pbXBvcnQgMzsKZnVuYyBDb250YWlucyAocyA8dHlwZSAtMTY+LCBzdWJzdHIgPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKZnVuYyBDb250YWluc0FueSAocyA8dHlwZSAtMTY+LCBjaGFycyA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+OwpmdW5jIENvbnRhaW5zUnVuZSAocyA8dHlwZSAtMTY+LCByIDx0eXBlIC0yMT4pIDx0eXBlIC0xNT47CmZ1bmMgQ291bnQgKHMgPHR5cGUgLTE2Piwgc2VwIDx0eXBlIC0xNj4pIDx0eXBlIC0xMT47CmZ1bmMgRXF1YWxGb2xkIChzIDx0eXBlIC0xNj4sIHQgPHR5cGUgLTE2PikgPHR5cGUgLTE1PjsKZnVuYyBGaWVsZHMgKHMgPHR5cGUgLTE2PikgPHR5cGUgMSBbXSA8dHlwZSAtMTY+PjsKZnVuYyBGaWVsZHNGdW5jIChzIDx0eXBlIC0xNj4sIGYgPHR5cGUgMiAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgPHR5cGUgMyBbXSA8dHlwZSAtMTY+PjsKZnVuYyBIYXNQcmVmaXggKHMgPHR5cGUgLTE2PiwgcHJlZml4IDx0eXBlIC0xNj4pIDx0eXBlIC0xNT47CmZ1bmMgSGFzU3VmZml4IChzIDx0eXBlIC0xNj4sIHN1ZmZpeCA8dHlwZSAtMTY+KSA8dHlwZSAtMTU+OwpmdW5jIEluZGV4IChzIDx0eXBlIC0xNj4sIHNlcCA8dHlwZSAtMTY+KSA8dHlwZSAtMTE+OwpmdW5jIEluZGV4QW55IChzIDx0eXBlIC0xNj4sIGNoYXJzIDx0eXBlIC0xNj4pIDx0eXBlIC0xMT47CmZ1bmMgSW5kZXhCeXRlIChzIDx0eXBlIC0xNj4sIGMgPHR5cGUgLTIwPikgPHR5cGUgLTExPjsKZnVuYyBJbmRleEZ1bmMgKHMgPHR5cGUgLTE2PiwgZiA8dHlwZSA0ICg/IDx0eXBlIC0yMT4pIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTE+OwpmdW5jIEluZGV4UnVuZSAocyA8dHlwZSAtMTY+LCByIDx0eXBlIC0yMT4pIDx0eXBlIC0xMT47CmZ1bmMgSm9pbiAoYSA8dHlwZSA1IFtdIDx0eXBlIC0xNj4+LCBzZXAgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBMYXN0SW5kZXggKHMgPHR5cGUgLTE2Piwgc2VwIDx0eXBlIC0xNj4pIDx0eXBlIC0xMT47CmZ1bmMgTGFzdEluZGV4QW55IChzIDx0eXBlIC0xNj4sIGNoYXJzIDx0eXBlIC0xNj4pIDx0eXBlIC0xMT47CmZ1bmMgTGFzdEluZGV4RnVuYyAocyA8dHlwZSAtMTY+LCBmIDx0eXBlIDYgKD8gPHR5cGUgLTIxPikgPHR5cGUgLTE1Pj4pIDx0eXBlIC0xMT47CmZ1bmMgTWFwIChtYXBwaW5nIDx0eXBlIDcgKD8gPHR5cGUgLTIxPikgPHR5cGUgLTIxPj4sIHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBOZXdSZWFkZXIgKHMgPHR5cGUgLTE2PikgPHR5cGUgOCAqPHR5cGUgOSAiUmVhZGVyIiA8dHlwZSAxMCBzdHJ1Y3QgeyAuc3RyaW5ncy5zIDx0eXBlIC0xNj47IC5zdHJpbmdzLmkgPHR5cGUgLTQ+OyAuc3RyaW5ncy5wcmV2UnVuZSA8dHlwZSAtMTE+OyB9PgogZnVuYyAociA8dHlwZSAxMSAqPHR5cGUgOT4+KSBMZW4gKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBSZWFkIChiIDx0eXBlIDEyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDExPikgUmVhZEF0IChiIDx0eXBlIDEzIFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDExPikgUmVhZEJ5dGUgKCkgKGIgPHR5cGUgLTIwPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAociA8dHlwZSAxMT4pIFVucmVhZEJ5dGUgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHIgPHR5cGUgMTE+KSBSZWFkUnVuZSAoKSAoY2ggPHR5cGUgLTIxPiwgc2l6ZSA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDExPikgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAociA8dHlwZSAxMT4pIFNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAtND4sID8gPHR5cGUgLTE5Pik7CiBmdW5jIChyIDx0eXBlIDExPikgV3JpdGVUbyAodyA8dHlwZSAxNCAiaW8uV3JpdGVyIiA8dHlwZSAxNSBpbnRlcmZhY2UgeyBXcml0ZSAocCA8dHlwZSAxNiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4pIChuIDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwo+PjsKZnVuYyBOZXdSZXBsYWNlciAob2xkbmV3IC4uLjx0eXBlIC0xNj4pIDx0eXBlIDE3ICo8dHlwZSAxOCAiUmVwbGFjZXIiIDx0eXBlIDE5IHN0cnVjdCB7IC5zdHJpbmdzLnIgPHR5cGUgMjAgIi5zdHJpbmdzLnJlcGxhY2VyIiA8dHlwZSAyMSBpbnRlcmZhY2UgeyBSZXBsYWNlIChzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47IFdyaXRlU3RyaW5nICh3IDx0eXBlIDE0PiwgcyA8dHlwZSAtMTY+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgfT4KIGZ1bmMgKHIgPHR5cGUgMjIgKjx0eXBlIDE4Pj4pIFJlcGxhY2UgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHIgPHR5cGUgMjI+KSBXcml0ZVN0cmluZyAodyA8dHlwZSAxND4sIHMgPHR5cGUgLTE2PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwo+PjsKdHlwZSA8dHlwZSA5PjsKZnVuYyBSZXBlYXQgKHMgPHR5cGUgLTE2PiwgY291bnQgPHR5cGUgLTExPikgPHR5cGUgLTE2PjsKZnVuYyBSZXBsYWNlIChzIDx0eXBlIC0xNj4sIG9sZCA8dHlwZSAtMTY+LCBuZXcgPHR5cGUgLTE2PiwgbiA8dHlwZSAtMTE+KSA8dHlwZSAtMTY+Owp0eXBlIDx0eXBlIDE4PjsKZnVuYyBTcGxpdCAocyA8dHlwZSAtMTY+LCBzZXAgPHR5cGUgLTE2PikgPHR5cGUgMjMgW10gPHR5cGUgLTE2Pj47CmZ1bmMgU3BsaXRBZnRlciAocyA8dHlwZSAtMTY+LCBzZXAgPHR5cGUgLTE2PikgPHR5cGUgMjQgW10gPHR5cGUgLTE2Pj47CmZ1bmMgU3BsaXRBZnRlck4gKHMgPHR5cGUgLTE2Piwgc2VwIDx0eXBlIC0xNj4sIG4gPHR5cGUgLTExPikgPHR5cGUgMjUgW10gPHR5cGUgLTE2Pj47CmZ1bmMgU3BsaXROIChzIDx0eXBlIC0xNj4sIHNlcCA8dHlwZSAtMTY+LCBuIDx0eXBlIC0xMT4pIDx0eXBlIDI2IFtdIDx0eXBlIC0xNj4+OwpmdW5jIFRpdGxlIChzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CmZ1bmMgVG9Mb3dlciAocyA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpmdW5jIFRvTG93ZXJTcGVjaWFsIChfY2FzZSA8dHlwZSAyNyAidW5pY29kZS5TcGVjaWFsQ2FzZSIgPHR5cGUgMjggW10gPHR5cGUgMjkgInVuaWNvZGUuQ2FzZVJhbmdlIiA8dHlwZSAzMCBzdHJ1Y3QgeyBMbyA8dHlwZSAtNz47IEhpIDx0eXBlIC03PjsgRGVsdGEgPHR5cGUgMzEgIi51bmljb2RlLmQiIDx0eXBlIDMyIFszIF0gPHR5cGUgLTIxPj4+OyB9Pj4+CiBmdW5jIChzcGVjaWFsIDx0eXBlIDI3PikgVG9Mb3dlciAociA8dHlwZSAtMjE+KSA8dHlwZSAtMjE+OwogZnVuYyAoc3BlY2lhbCA8dHlwZSAyNz4pIFRvVGl0bGUgKHIgPHR5cGUgLTIxPikgPHR5cGUgLTIxPjsKIGZ1bmMgKHNwZWNpYWwgPHR5cGUgMjc+KSBUb1VwcGVyIChyIDx0eXBlIC0yMT4pIDx0eXBlIC0yMT47Cj4sIHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBUb1RpdGxlIChzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CmZ1bmMgVG9UaXRsZVNwZWNpYWwgKF9jYXNlIDx0eXBlIDI3PiwgcyA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpmdW5jIFRvVXBwZXIgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBUb1VwcGVyU3BlY2lhbCAoX2Nhc2UgPHR5cGUgMjc+LCBzIDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CmZ1bmMgVHJpbSAocyA8dHlwZSAtMTY+LCBjdXRzZXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBUcmltRnVuYyAocyA8dHlwZSAtMTY+LCBmIDx0eXBlIDMzICg/IDx0eXBlIC0yMT4pIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTY+OwpmdW5jIFRyaW1MZWZ0IChzIDx0eXBlIC0xNj4sIGN1dHNldCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpmdW5jIFRyaW1MZWZ0RnVuYyAocyA8dHlwZSAtMTY+LCBmIDx0eXBlIDM0ICg/IDx0eXBlIC0yMT4pIDx0eXBlIC0xNT4+KSA8dHlwZSAtMTY+OwpmdW5jIFRyaW1QcmVmaXggKHMgPHR5cGUgLTE2PiwgcHJlZml4IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CmZ1bmMgVHJpbVJpZ2h0IChzIDx0eXBlIC0xNj4sIGN1dHNldCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpmdW5jIFRyaW1SaWdodEZ1bmMgKHMgPHR5cGUgLTE2PiwgZiA8dHlwZSAzNSAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgPHR5cGUgLTE2PjsKZnVuYyBUcmltU3BhY2UgKHMgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKZnVuYyBUcmltU3VmZml4IChzIDx0eXBlIC0xNj4sIHN1ZmZpeCA8dHlwZSAtMTY+KSA8dHlwZSAtMTY+OwpjaGVja3N1bSBBM0I1RDIwOUQ1MjExMTJFOUFEOEZEM0JBOENFRUNBRDUxOTVBQTM0OwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAAZEgAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAABNEgAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAdBIAACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAAJQSAAABAAAAAAAAAAAAAAABAAAAAAAAAA==