IyBUaGlzIGlzIGEgZnJvemVuIHN0YXRlIGZpbGUgZ2VuZXJhdGVkIGJ5IEdOVSBNNCAxLjQuMTYKVjEKUTEsMQpbXQpUMTIsNjkKX200X2xpc3RfY21wbTRfaWYoWyQxXSwgW10sIFswbTRfaWdub3JlXSwgWyQyXSwgWzBdLCBbbTRfdW5xdW90ZV0sIFskMm00X2lnbm9yZV0pCkYxMiw5Cm00X2RlYnVnZmlsZWRlYnVnZmlsZQpUOCwwCl9tNF93YXJuClQxNSwyMTgKbTRfbWFwX2FyZ3Nfc2VwbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCiAgICAgICBbJCNdLCBbMV0sIFtdLAogICAgICAgWyQjXSwgWzJdLCBbXSwKICAgICAgIFskI10sIFszXSwgW10sCiAgICAgICBbJCNdLCBbNF0sIFskMVskNF0kMltdXSwKICAgICAgIFskMVskNF0kMltdX200X2ZvcmVhY2goWyQzW10kMV0sIFskMl0sIG00X3NoaWZ0MygkQCkpXSkKVDgsMTUwCm00X2RlZnVubTRfZGVmaW5lKFttNF9sb2NhdGlvbigkMSldLCBtNF9sb2NhdGlvbiltNF9kZWZhdWx0KFskM10sIFttNF9kZWZpbmVdKShbJDFdLAogIFtfbTRfZGVmdW5fcHJvKF1tNF9kcXVvdGUoJFswXSlbKSQyW11fbTRfZGVmdW5fZXBpKF1tNF9kcXVvdGUoJFswXSlbKV0pClQxOCw1MApfbTRfc2V0X2NvbnRlbnRzXzFfbTRfc3RhY2tfcmV2ZXJzZShbX200X3NldChbJDFdKV0sIFtfbTRfc2V0XygkMSldKQpUMTgsOTQKX200X3NldF9jb250ZW50c18yX200X3N0YWNrX3JldmVyc2UoW19tNF9zZXRfKCQxKV0sIFtfbTRfc2V0KFskMV0pXSwKICBbJDJbXV9tNF9kZWZuKFtfbTRfc2V0XygkMSldKSQzXSwgWyQ0W11dKQpUOCw4MQptNF9jaG9tcG00X2Zvcm1hdChbWyUuKnNdXSwgbTRfaW5kZXgobTRfdHJhbnNsaXQoW1skMV1dLCBbCi8uXSwgWy8gIF0pWy4vLl0sIFsvLl0pLCBbJDFdKQpUMTMsODIKbTRfZHF1b3RlX2VsdG00X2lmKFskI10sIFswXSwgW10sCiAgICAgICBbJCNdLCBbMV0sIFtbWyQxXV1dLAogICAgICAgW1tbJDFdXSwkMChtNF9zaGlmdCgkQCkpXSkKVDI0LDMyCm00X2RlZmF1bHRfbmJsYW5rX3F1b3RlZG00X2lmYmxhbmsoWyQxXSwgW1skMl1dLCBbWyQxXV0pClQ5LDU3Cm00X2FwcGVuZG00X2RlZmluZShbJDFdLCBtNF9pZmRlZihbJDFdLCBbX200X2RlZm4oWyQxXSlbJDNdXSlbJDJdKQpUMTEsMzcKbTRfbGlzdF9jbXBfJDBfcmF3KG00X2RxdW90ZSgkMSksIG00X2RxdW90ZSgkMikpClQ3LDg0Cl9tNF9mb3IkNFskMV0kNVtdbTRfaWYoWyQxXSwgWyQyXSwgW10sCgkJIFskMChtNF9ldmFsKFskMSArICQzXSksIFskMl0sIFskM10sIFskNF0sIFskNV0pXSkKVDEyLDc4Cm00X2ZvcmVhY2hfd200X3B1c2hkZWYoWyQxXSltNF9tYXBfYXJnc193KFskMl0sCiAgW200X2RlZmluZShbJDFdLF0sIFspJDNdKW00X3BvcGRlZihbJDFdKQpUMTEsMTY1Cl9tNF9kdW1wZGVmbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBtaXNzaW5nIGFyZ3VtZW50XSldLAogICAgICAgWyQjXSwgWzFdLCBbbTRfYnVpbHRpbihbZHVtcGRlZl0sIFskMV0pXSwKICAgICAgIFttNF9tYXBfYXJnc19zZXAoW200X2J1aWx0aW4oW2R1bXBkZWZdLF0sIFspXSwgW10sICRAKV0pClQxNCwxMzEKbTRfc2V0X2FkZF9hbGxtNF9kZWZpbmUoW19tNF9zZXRfc2l6ZSgkMSldLCBtNF9ldmFsKG00X3NldF9zaXplKFskMV0pCiAgKyBtNF9sZW4obTRfaWZkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldLCBbXyQwX2NoZWNrXSwgW18kMF0pKFskMV0sICRAKSkpKQpGNyw0Cm00X2luY3JpbmNyCkY4LDQKX200X2RlZm5kZWZuClQxMywxMjQKX200X2RlZnVuX3Byb200X2lmZGVmKFtfbTRf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X3NldF9zaXplKFskMV0sIFttNF9pbmNyXSkkM10sIFskNF0pXSwKCSAgW200X2RlZmluZShbX200X3NldChbJDFdLCQyKV0sCgkJICAgICBbMV0pbTRfcHVzaGRlZihbX200X3NldChbJDFdKV0sCgkJCQkgICAgWyQyXSlfbTRfc2V0X3NpemUoWyQxXSwgW200X2luY3JdKSQzXSkKVDE0LDEyMgptNF9hcHBlbmRfdW5pcW00X2lmdmFsKFskM10sIFttNF9pZihtNF9pbmRleChbJDJdLCBbJDNdKSwgWy0xXSwgW10sCgkJICAgICAgIFttNF93YXJuKFtzeW50YXhdLAoJCQkJWyQwOiBgJDInIGNvbnRhaW5zIGAkMyddKV0pXSlfJDAoJEApClQxNSwwCl9tNF9kaXZlcnRfZHVtcApUMjAsMjAKbTRfUEFDS0FHRV9CVUdSRVBPUlRidWctYXV0b2NvbmZAZ251Lm9yZwpUOCw2NgptNF9pZnNldG00X2lmZGVmKFskMV0sCgkgIFttNF9pZnZhbChfbTRfZGVmbihbJDFdKSwgWyQyXSwgWyQzXSldLAoJICBbJDNdKQpUNywxODIKbTRfY29uZG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKICAgICAgIFskI10sIFsxXSwgWyQxXSwKICAgICAgIG00X2V2YWwoWyQjICUgM10pLCBbMl0sIFttNF9mYXRhbChbJDA6IG1pc3NpbmcgYW4gYXJndW1lbnRdKV0sCiAgICAgICBbXyQwKCRAKV0pClQxMiwzMAptNF9lc3lzY21kX3NtNF9jaG9tcF9hbGwobTRfZXN5c2NtZChbJDFdKSkKVDE1LDE0OApfbTRfYXBwZW5kX3VuaXFtNF9pZmRlZihbJDFdLAoJICBbbTRfaWYobTRfaW5kZXgoWyQzXV9tNF9kZWZuKFskMV0pWyQzXSwgWyQzJDIkM10pLCBbLTFdLAoJCSBbbTRfYXBwZW5kKFskMV0sIFskMl0sIFskM10pJDRdLCBbJDVdKV0sCgkgIFttNF9kZWZpbmUoWyQxXSwgWyQyXSkkNF0pClQ5LDMxCl9tNF9hcHBseW00X2lmKFskMl0sIFtdLCBbXSwgWyQxKCQyKVtdXSkKVDEwLDIKbTRfdW5xdW90ZSQqClQ5LDcyCm00X21hcGFsbG00X2lmKFskMl0sIFtdLCBbXSwKICAgICAgIFtfbTRfZm9yZWFjaChbbTRfYXBwbHkoWyQxXSxdLCBbKV0sIFtdLCAkMildKQpGMTQsNgpfbTRfZGl2ZXJ0X3Jhd2RpdmVydApUNiwxMjIKbTRfY2RybTRfaWYoWyQjXSwgMCwgW200X2ZhdGFsKFskMDogY2Fubm90IGJlIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50c10pXSwKICAgICAgIFskI10sIDEsIFtdLAogICAgICAgW200X2RxdW90ZShtNF9zaGlmdCgkQCkpXSkKVDE0LDQxCl9tNF9saXN0X2NtcF8xX200X2xpc3RfY21wXzIoWyQyXSwgW200X3NoaWZ0MigkQCldLCAkMSkKVDE0LDk1Cl9tNF9saXN0X2NtcF8yX200X2xpc3RfY21wKFskMSQzXSwgbTRfY21wKFskMyswXSwgWyQxKzBdKSkoCiAgW19tNF9saXN0X2NtcF8xKG00X2RxdW90ZShtNF9zaGlmdDMoJEApKSwgJDIpXSkKVDExLDUzCl9tNF9qb2luYWxsbTRfaWYoWyQjXSwgWzJdLCBbXSwgW1skMSQzXSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKVDksMTU4Cm00X3BvcGRlZm00X2lmKFskI10sIFswXSwgW1skMF1dLAogICAgICAgWyQjXSwgWzFdLCBbbTRfaWZkZWYoWyQxXSwgW19tNF9wb3BkZWYoWyQxXSldLAoJCQkgICAgW200X2ZhdGFsKFskMDogdW5kZWZpbmVkIG1hY3JvOiAkMV0pXSldLAogICAgICAgW200X21hcF9hcmdzKFskMF0sICRAKV0pClQxMiwxNTIKX200X3NldF9kdW1wbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbWyQyXV9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSlfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sXV9tNF9kZWZuKAoJCVtfbTRfc2V0KFskMV0pXSlbKV0sIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdLCBbJDIkM10pXSkKVDEyLDMyCm00X21ha2VfbGlzdG00X2pvaW4oWywKXSwgbTRfZHF1b3RlX2VsdCgkQCkpClQ1LDczCm00X2RvbTRfaWYoWyQjXSwgMCwgW10sCiAgICAgICBbJCNdLCAxLCBbJDFbXV0sCiAgICAgICBbJDFbXSQwKG00X3NoaWZ0KCRAKSldKQpGOSw2Cm00X3N1YnN0cnN1YnN0cgpUMTgsOAptNF9QQUNLQUdFX1RBUk5BTUVhdXRvY29uZgpUMTMsMjUyCm00X3NldF9yZW1vdmVtNF9zZXRfY29udGFpbnMoWyQxXSwgWyQyXSwgW19tNF9zZXRfc2l6ZShbJDFdLAogICAgW200X2RlY3JdKW00X2lmKF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSksIFskMl0sCgkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgW19tNF9zZXQoWyQxXSldKV0sCgkJICAgIFttNF9kZWZpbmUoW19tNF9zZXRfY2xlYW51cCgkMSldKW00X2RlZmluZSgKCQkgICAgICBbX200X3NldChbJDFdLCQyKV0sIFswXSldKSQzXSwgWyQ0XSkKVDE5LDEwOQpfbTRfZGVmdW5fZXBpX291dGVyX200X3BvcGRlZihbX200X2RpdmVydF9kdW1wXSwgW19tNF9kaXZlcnRpbmcoWyQxXSldLCBbX200X2RpdmVydGluZ10pbTRfZGl2ZXJ0X3BvcChbR1JPV10pbTRfdW5kaXZlcnQoW0dST1ddKQpUMTUsNTgKbTRfZGl2ZXJ0X3N0YWNrbTRfc3RhY2tfZm9yZWFjaF9zZXBfbGlmbyhbX200X2RpdmVydF9zdGFja10sIFtdLCBbXSwgWwpdKQpUMTcsMzEKbTRfZGVmYXVsdF9xdW90ZWRtNF9pZihbJDFdLCBbXSwgW1skMl1dLCBbWyQxXV0pCkY5LDYKbTRfc3lzY21kc3lzY21kClQxMSwxMzYKbTRfc2V0X2R1bXBtNF9pZmRlZihbX200X3NldF9zaXplKCQxKV0sCgkgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X3NpemUoJDEpXSldKW00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwKICAgIFtfJDBfY2hlY2tdLCBbXyQwXSkoWyQxXSwgW10sIFskMl0pClQ5LDU4Cm00X2lmdmFsbm00X2lmKFskMV0sCiAgICAgICBbXSwgICBbbTRfbihbJDNdKV0sCgkgICAgIFttNF9uKFskMl0pXSkKVDcsMApfX2dudV9fClQxMCwyNwptNF9qb2luYWxsWyQyXV8kMChbJDFdLCBtNF9zaGlmdCgkQCkpClQ5LDIyCm00X3NoaWZ0Mm00X3NoaWZ0KG00X3NoaWZ0KCRAKSkKVDE4LDgwCm00X2V4cGFuc2lvbl9zdGFja200X3N0YWNrX2ZvcmVhY2hfc2VwX2xpZm8oW18kMF0sIFtfJDBfZW50cnkoXSwgWykKXSltNF9sb2NhdGlvbls6IHRoZSB0b3AgbGV2ZWxdClQ5LDMyCm00X3NoaWZ0M200X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpClQxNywxNTIKbTRfdmVyc2lvbl9wcmVyZXFtNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUoWzIuNjVdLCBbJDFdKSwKCVstMV0sCglbbTRfZGVmYXVsdChbJDNdLAoJCSAgICBbbTRfZmF0YWwoW0F1dG9jb25mIHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkXSwKCQkJICAgICAgWzYzXSldKV0sCglbJDJdKQpUMTYsNTAKX200X2xpc3RfY21wX3Jhd200X2lmKFskMV0sIFskMl0sIFswXSwgW19tNF9saXN0X2NtcF8xKFskMV0sICQyKV0pClQ4LDAKX191bml4X18KVDE0LDEwOQptNF9maWxlX2FwcGVuZG00X3N5c2NtZChbY2F0ID4+JDEgPDxfbTRlb2YKJDIKX200ZW9mCl0pCm00X2lmKG00X3N5c3ZhbCwgWzBdLCBbXSwKICAgICAgW200X2ZhdGFsKFskMDogY2Fubm90IHdyaXRlOiAkMV0pXSkKVDE1LDQ5Cm00X3JlbmFtZV9mb3JjZW00X2lmZGVmKFskMl0sIFtfbTRfdW5kZWZpbmUoWyQyXSldKW00X3JlbmFtZSgkQCkKVDksMjIyCm00X2JtYXRjaG00X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCiAgICAgICBbJCNdLCAyLCBbJDJdLAogICAgICAgW200X2lmKG00X2JyZWdleHAoWyQxXSwgWyQyXSksIC0xLCBbJDAoWyQxXSwgbTRfc2hpZnQzKCRAKSldLAoJICAgICAgWyQzXSldKQpUMTMsMzI4Cm00X2RpdmVydF9wb3BtNF9pZihbJDFdLCBbXSwgW10sCiAgICAgICBbJDFdLCBfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNpb25dKSwgW10sCiAgICAgICBbbTRfZmF0YWwoWyQwKCQxKTogZGl2ZXJzaW9uIG1pc21hdGNoOgpdbTRfZGl2ZXJ0X3N0YWNrKV0pX200X3BvcGRlZihbX200X2RpdmVydF9zdGFja10sIFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pbTRfaWZkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgW10sCgkgICBbbTRfZmF0YWwoW3RvbyBtYW55IG00X2RpdmVydF9wb3BdKV0pX200X2RpdmVydF9yYXcoX200X2RpdmVydChfbTRfZGVmbihbX200X2RpdmVydF9kaXZlcnNpb25dKSkpClQxMCwxMjEKbTRfcmVfd29yZFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX11bYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XSoKVDE0LDM3Cm00X1BBQ0tBR0VfVVJMaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLwpUMTEsNjIKbTRfY3JfYWxudW1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OQpGMTEsOAptNF90cmFuc2xpdHRyYW5zbGl0ClQxNCwxMDQKbTRfZGl2ZXJ0X3B1c2htNF9kaXZlcnRfc3RhY2tfcHVzaChbJDBdLCBbJDFdKW00X3B1c2hkZWYoW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgWyQxXSlfbTRfZGl2ZXJ0X3JhdyhfbTRfZGl2ZXJ0KFskMV0pKQpUOCw4NwptNF9mYXRhbG00X2VycnByaW50bihtNF9sb2NhdGlvbls6IGVycm9yOiAkMV0KbTRfZXhwYW5zaW9uX3N0YWNrKW00X2V4aXQobTRfaWYoWyQyXSwsIDEsIFskMl0pKQpGOCw1Cm00X2lmZGVmaWZkZWYKVDcsMjAKbTRfd3JhcF9tNF93cmFwKFtdLCBbJDFbXV0pClQxMiwxMTAKX200X3NldF9zaXplbTRfZGVmaW5lKFtfbTRfc2V0X3NpemUoJDEpXSwKCSAgIG00X2lmZGVmKFtfbTRfc2V0X3NpemUoJDEpXSwgWyQyKG00X2luZGlyKFtfbTRfc2V0X3NpemUoJDEpXSkpXSwKCQkgICAgWzFdKSkKVDYsNDMKbTRfbWFwX200X2ZvcmVhY2goW19tNF9hcHBseShbJDFdLF0sIFspXSwgW10sICQyKQpUMTAsNTQKbTRfaW5jbHVkZW00X2luY2x1ZGVfdW5pcXVlKFskMV0pZG5sCm00X2J1aWx0aW4oW2luY2x1ZGVdLCBbJDFdKQpUOCwxODkKbTRfc3BsaXRtNF9pZihbJDFdLCBbXSwgW10sCiAgICAgICBbJDJdLCBbIF0sIFttNF9pZihtNF9pbmRleChbJDFdLCBbIF0pLCBbLTFdLCBbW1skMV1dXSwKCQkJIFtfJDAoWyQxXSwgWyQyXSwgWywgXSldKV0sCiAgICAgICBbJDJdLCBbXSwgW18kMChbJDFdLCBbWwkgXStdLCBbLCBdKV0sCiAgICAgICBbXyQwKFskMV0sIFskMl0sIFssIF0pXSkKVDYsMTkwCm00X21pbm00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFt0b28gZmV3IGFyZ3VtZW50cyB0byAkMF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X2V2YWwoWyQxXSldLAogICAgICAgWyQjJDFdLCBbMiQyXSwgW200X2V2YWwoWyQxXSldLAogICAgICAgWyQjXSwgWzJdLCBbXyQwKCRAKV0sCiAgICAgICBbX200X21pbm1heChbXyQwXSwgJEApXSkKRjE0LDExCm00X2NoYW5nZXF1b3RlY2hhbmdlcXVvdGUKVDEwLDU0Cm00X2lmYmxhbmttNF9pZihtNF90cmFuc2xpdChbWyQxXV0sICBbIF1bCV1bCl0pLCBbXSwgWyQyXSwgWyQzXSkKVDE0LDE2MQptNF9jbGVhcmRpdmVydG00X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFtfbTRfZGl2ZXJ0X3JhdyhbLTFdKW00X3VuZGl2ZXJ0KCRAKV9tNF9kaXZlcnRfcmF3KAoJIF9tNF9kaXZlcnQoX200X2RlZm4oW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSkpKV0pClQxOCwyMDYKX200X3RleHRfd3JhcF93b3JkbTRfZGVmaW5lKFttNF9DdXJzb3JdLCBtNF9ldmFsKG00X0N1cnNvciArIG00X3FsZW4oWyQxXSkgKyAxKSltNF9pZihtNF9ldmFsKG00X0N1cnNvciA+IChbJDNdKSksCiAgICAgIFsxXSwgW200X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfZXZhbChtNF9JbmRlbnQgKyBtNF9xbGVuKFskMV0pICsgMSkpClskMl1dLAogICAgICBbbTRfU2VwYXJhdG9yW11dKVskMV0KVDcsNDgKbTRfcWxlbm00X2lmZGVmKFskMC0kMV0sIFtfbTRfZGVmbihbJDAtXV0sIFtfJDAoXSlbJDFdKQpUNiwxOTAKbTRfbWF4bTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoW3RvbyBmZXcgYXJndW1lbnRzIHRvICQwXSldLAogICAgICAgWyQjXSwgWzFdLCBbbTRfZXZhbChbJDFdKV0sCiAgICAgICBbJCMkMV0sIFsyJDJdLCBbbTRfZXZhbChbJDFdKV0sCiAgICAgICBbJCNdLCBbMl0sIFtfJDAoJEApXSwKICAgICAgIFtfbTRfbWlubWF4KFtfJDBdLCAkQCldKQpGMTEsOAptNF9lcnJwcmludGVycnByaW50ClQxMCw2OApfbTRfZGl2ZXJ0bTRfaWZkZWYoW19tNF9kaXZlcnQoJDEpXSwKCSAgW200X2luZGlyKFtfbTRfZGl2ZXJ0KCQxKV0pXSwKCSAgWyQxXSkKVDEzLDI2Cm00X2NyX0xFVFRFUlNBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWgpUMTcsOTQKX200X3N0YWNrX3JldmVyc2VtNF9pZmRlZihbJDFdLCBbbTRfcHVzaGRlZihbJDJdLAogIF9tNF9kZWZuKFskMV0pKSQzW11fbTRfcG9wZGVmKFskMV0pJDAoWyQxXSwgWyQyXSwgWyQ0JDNdKV0pCkYxMSw3Cm00X21ha2V0ZW1wbWtzdGVtcApUNCwzNwptNF9ubTRfaWYoWyQxXSwKICAgICAgIFtdLCBbXSwKCSAgIFskMQpdKQpUMTAsMTU0Cm00X3Byb3ZpZGVtNF9pZmRlZihbbTRfcHJvdmlkZSgkMSldLCBbXSwKW200X3NldF9hZGQoW19tNF9wcm92aWRlXSwgWyQxXSwgW200X2RlZmluZShbbTRfcHJvdmlkZSgkMSldLAogIG00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nXSwgW19tNF9kZWZuKFtfbTRfZGl2ZXJ0aW5nXSldKSldKV0pClQxMSw2NQptNF9zZXRfc2l6ZW00X2lmZGVmKFtfbTRfc2V0X3NpemUoJDEpXSwgW200X2luZGlyKFtfbTRfc2V0X3NpemUoJDEpXSldLCBbMF0pClQ5LDAKbTRfaWdub3JlClQ5LDI4Cl9tNF9xdW90ZW00X2lmKFskI10sIFswXSwgW10sIFtbJCpdXSkKVDksMzUKbTRfc2hpZnRubTRfYXNzZXJ0KDAgPCAkMSAmJiAkMSA8ICQjKV8kMCgkQCkKVDcsNzUKbTRfd2Fybl9tNF93YXJuKFskMV0sIFskMl0sCm00X2lmZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgW200X2V4cGFuc2lvbl9zdGFja10pKQpUMTYsMjQ1Cm00X2NyX25vdF9kaWdpdHMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC4vOjs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/LQpUMTIsMjUKbTRfc2V0X2xpc3RjbTRfc2V0X21hcF9zZXAoWyQxXSwgWyxdKQpGOSw2Cm00X2Rpdm51bWRpdm51bQpUMjEsNzYKX200X3NldF9hZGRfYWxsX2NoZWNrbTRfaWYoWyQjXSwgWzJdLCBbXSwKICAgICAgIFttNF9zZXRfYWRkKFskMV0sIFskM10pJDAoWyQxXSwgbTRfc2hpZnQyKCRAKSldKQpUMTAsMwptNF9uZXdsaW5lCiQxClQxMywyOTMKbTRfZGVmdW5fb25jZW00X2RlZmluZShbbTRfbG9jYXRpb24oJDEpXSwgbTRfbG9jYXRpb24pbTRfZGVmaW5lKFskMV0sIFtfbTRfZGVmdW5fb25jZShbJDFdLCBbJDJdLCBtNF9pZihfbTRfZGl2ZXJ0X2R1bXAsIFtdLAogIFtbX200X2RlZnVuX3BybyhbJDFdKW00X3VucXVvdGUoXSwgWylfbTRfZGVmdW5fZXBpKFskMV0pXV0sCm00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMV0pXSwgWy1dKSwgWy1dLCBbW200X3VucXVvdGUoXSwgWyldXSwKICBbW19tNF9yZXF1aXJlX2NhbGwoWyQxXSxdLCBbLCBfbTRfZGl2ZXJ0X2R1bXApXV0pKV0pClQxMyw0NzQKX200X3RleHRfd3JhcG00X3B1c2hkZWYoW200X0luZGVudF0sIG00X3FsZW4oWyQyXSkpbTRfcHVzaGRlZihbbTRfQ3Vyc29yXSwgbTRfcWxlbihbJDNdKSltNF9wdXNoZGVmKFttNF9TZXBhcmF0b3JdLCBbbTRfZGVmaW5lKFttNF9TZXBhcmF0b3JdLCBbIF0pXSlbJDNdbTRfY29uZChbbTRfQ3Vyc29yXSwgbTRfSW5kZW50LCBbXSwKCSAgICAgIFttNF9ldmFsKG00X0N1cnNvciA+IG00X0luZGVudCldLCBbMV0sIFsKWyQyXW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0sCgkgICAgICBbbTRfZm9ybWF0KFslKnNdLCBtNF9tYXgoWzBdLAogIG00X2V2YWwobTRfSW5kZW50IC0gbTRfQ3Vyc29yKSksIFtdKW00X2RlZmluZShbbTRfQ3Vyc29yXSwgbTRfSW5kZW50KV0pbTRfbWFwX2FyZ3NfdyhbJDFdLCBbJDBfd29yZChdLCBbLCBbJDJdLCBbJDRdKV0pX200X3BvcGRlZihbbTRfU2VwYXJhdG9yXSwgW200X0N1cnNvcl0sIFttNF9JbmRlbnRdKQpGOSw2Cm00X2Zvcm1hdGZvcm1hdApGMTAsNwptNF9ta3N0ZW1wbWtzdGVtcApGMTEsMTEKX19wcm9ncmFtX19fX3Byb2dyYW1fXwpUNywxNTYKbTRfZGVmbm00X2lmKFskI10sIFswXSwgW1skMF1dLAogICAgICAgWyQjXSwgWzFdLCBbbTRfaWZkZWYoWyQxXSwgW19tNF9kZWZuKFskMV0pXSwKCQkJICAgIFttNF9mYXRhbChbJDA6IHVuZGVmaW5lZCBtYWNybzogJDFdKV0pXSwKICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKQpUMTYsNTQKbTRfYXBwZW5kX3VuaXFfd200X21hcF9hcmdzX3coWyQyXSwgW19tNF9hcHBlbmRfdW5pcShbJDFdLF0sIFssIFsgXSldKQpUMTMsMjA3Cm00X21hcF9hcmdzX3dfJDAoX200X3NwbGl0KFsgXW00X2ZsYXR0ZW4oWyQxXSlbIF0sIFtbCSBdK10sCgkgICAgICAgbTRfaWYobTRfaW5kZXgoWyQyJDMkNF0sIFtcXSksIFstMV0sIFtbJDNbXSQ0W10kMl1dLAoJCSAgICAgW200X2JwYXRzdWJzdChbWyQzW10kNFtdJDJdXSwgW1xcXSwgW1xcXFxdKV0pKSwKICAgICBtNF9sZW4oW1tdJDNbXSQ0XSksIG00X2xlbihbJDRbXSQyW11dKSkKVDYsNAptNF9jYXJbJDFdClQ4LDIKbTRfY291bnQkIwpUMTQsNDIKX200X2RlZnVuX29uY2VtNF9wdXNoZGVmKFskMV0pJDNbJDJbXW00X3Byb3ZpZGUoWyQxXSldJDQKVDE0LDYyCm00X3NldF9mb3JlYWNobTRfcHVzaGRlZihbJDJdKW00X3NldF9tYXBfc2VwKFskMV0sIFttNF9kZWZpbmUoWyQyXSxdLCBbKSQzXSkKVDE2LDEwMQptNF9zdGFja19mb3JlYWNoX200X3N0YWNrX3JldmVyc2UoWyQxXSwgW200X3RtcC0kMV0pX200X3N0YWNrX3JldmVyc2UoW200X3RtcC0kMV0sIFskMV0sIFskMihfbTRfZGVmbihbbTRfdG1wLSQxXSkpXSkKVDEyLDc3Cm00X2Nob21wX2FsbG00X2Zvcm1hdChbWyUuKnNdXSwgbTRfYnJlZ2V4cChtNF90cmFuc2xpdChbWyQxXV0sIFsKL10sIFsvIF0pLCBbLyokXSksIFskMV0pClQ2LDQ2Cm00X2NtcG00X2V2YWwoKChbJDFdKSA+IChbJDJdKSkgLSAoKFskMV0pIDwgKFskMl0pKSkKRjUsNgptNF9pZmlmZWxzZQpUOSwzNgptNF9yZW5hbWVtNF9jb3B5KFskMV0sIFskMl0pbTRfdW5kZWZpbmUoWyQxXSkKRjgsNQptNF9pbmRpcmluZGlyClQxMiwxCl9tNF9kaXZlcnQoKTAKRjEyLDkKbTRfY2hhbmdlY29tY2hhbmdlY29tClQxMCw2MgptNF9ub3F1b3RlbTRfY2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKSQxLT08eygpfT49LW00X2NoYW5nZXF1b3RlKFssXSkKRjgsNQptNF9pbmRleGluZGV4ClQxNCw1OApfbTRfbWFwX2FyZ3Nfd200X3N1YnN0cihbJDFdLCBbJDJdLCBtNF9ldmFsKG00X2xlbihbJDFdKSAtIFskMl0gLSBbJDNdKSkKVDE0LDEwNwptNF9zZXRfbWFwX3NlcG00X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwgW19tNF9zZXRfY29udGVudHNfMWNdLAoJICBbX200X3NldF9jb250ZW50c18xXSkoWyQxXSlfbTRfc2V0X2NvbnRlbnRzXzIoJEApClQ5LDE3NAptNF9leHBhbmRtNF9wdXNoZGVmKFttNF9kaXZlcnRdLCBfbTRfZGVmbihbX200X2RpdmVydF91bnNhZmVdKSltNF9wdXNoZGVmKFttNF9kaXZlcnRfcHVzaF0sIF9tNF9kZWZuKFtfbTRfZGl2ZXJ0X3Vuc2FmZV0pKW00X2Nob21wKF8kMChbJDEKXSkpX200X3BvcGRlZihbbTRfZGl2ZXJ0XSwgW200X2RpdmVydF9wdXNoXSkKVDE3LDIyOQptNF9jcl9ub3RfTEVUVEVSUwECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLi8wMTIzNDU2Nzg5Ojs8PT4/QFtcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KVDE4LDI1NgpfbTRfc2V0X2R1bXBfY2hlY2ttNF9pZmRlZihbX200X3NldChbJDFdKV0sCgkgIFttNF9zZXRfY29udGFpbnMoWyQxXSwgX200X2RlZm4oW19tNF9zZXQoWyQxXSldKSwKCQkJICAgW1skMl1fbTRfZGVmbihbX200X3NldChbJDFdKV0pXSlfbTRfcG9wZGVmKAogICAgW19tNF9zZXQoWyQxXSxdX200X2RlZm4oW19tNF9zZXQoWyQxXSldKVspXSwKICAgIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdLCBbJDIkM10pXSwKCSAgW19tNF9wb3BkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldKV0pClQxMSwxNwptNF9sb2NhdGlvbl9fZmlsZV9fOl9fbGluZV9fClQxMSw1NAptNF9pZm5ibGFua200X2lmKG00X3RyYW5zbGl0KFtbJDFdXSwgIFsgXVsJXVsKXSksIFtdLCBbJDNdLCBbJDJdKQpUMTMsMTM0Cl9tNF9kZWZ1bl9lcGlfbTRfcG9wZGVmKFtfbTRfZXhwYW5kaW5nKCQxKV0sIFtfbTRfZXhwYW5zaW9uX3N0YWNrXSltNF9pZmRlZihbX200X2V4cGFuc2lvbl9zdGFja10sIFtdLCBbX200X2RlZnVuX2VwaV9vdXRlcihbJDFdKV0pbTRfcHJvdmlkZShbJDFdKQpUMTAsNDAKbTRfd2FybmluZ200X2VycnByaW50bihtNF9sb2NhdGlvbls6IHdhcm5pbmc6ICQxXSkKRjcsNAptNF9ldmFsZXZhbApUMTUsNQpfbTRfZGl2ZXJ0X2dyb3cxMDAwMApUNiw1OTgKbTRfZm9ybTRfcHVzaGRlZihbJDFdLCBtNF9ldmFsKFskMl0pKW00X2NvbmQoW200X2V2YWwoKFskM10pID4gKFskMl0pKV0sIDEsCgkgICBbbTRfcHVzaGRlZihbX200X3N0ZXBdLCBtNF9ldmFsKG00X2RlZmF1bHRfcXVvdGVkKFskNF0sCgkgICAgICAxKSkpbTRfYXNzZXJ0KF9tNF9zdGVwID4gMClfJDAoX200X2RlZm4oWyQxXSksCiAgbTRfZXZhbCgoKFskM10pIC0gKFskMl0pKSAvIF9tNF9zdGVwICogX200X3N0ZXAgKyAoWyQyXSkpLCBfbTRfc3RlcCxdLAoJIFttNF9ldmFsKChbJDNdKSA8IChbJDJdKSldLCAxLAoJICAgW200X3B1c2hkZWYoW19tNF9zdGVwXSwgbTRfZXZhbChtNF9kZWZhdWx0X3F1b3RlZChbJDRdLAoJICAgICAgLTEpKSltNF9hc3NlcnQoX200X3N0ZXAgPCAwKV8kMChfbTRfZGVmbihbJDFdKSwKICBtNF9ldmFsKCgoWyQyXSkgLSAoWyQzXSkpIC8gLShfbTRfc3RlcCkgKiBfbTRfc3RlcCArIChbJDJdKSksIF9tNF9zdGVwLF0sCgkgW200X3B1c2hkZWYoW19tNF9zdGVwXSlfJDAoX200X2RlZm4oWyQxXSksIF9tNF9kZWZuKFskMV0pLCAwLF0pW200X2RlZmluZShbJDFdLF0sIFspJDVdKW00X3BvcGRlZihbX200X3N0ZXBdLCBbJDFdKQpUMTYsMjk4Cm00X21hcF9hcmdzX3BhaXJtNF9pZihbJCNdLCBbMF0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIFsxXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjOiAkMV0pXSwKICAgICAgIFskI10sIFsyXSwgW10sCiAgICAgICBbJCNdLCBbM10sIFttNF9kZWZhdWx0KFskMl0sIFskMV0pKFskM10pW11dLAogICAgICAgWyQjXSwgWzRdLCBbJDEoWyQzXSwgWyQ0XSlbXV0sCiAgICAgICBbJDEoWyQzXSwgWyQ0XSlbXSQwKFskMV0sIFskMl0sIG00X3NoaWZ0KG00X3NoaWZ0MygkQCkpKV0pClQ3LDM2Cm00X3NpZ25tNF9ldmFsKCgoWyQxXSkgPiAwKSAtICgoWyQxXSkgPCAwKSkKVDI1LDUzCl9tNF9leHBhbnNpb25fc3RhY2tfZW50cnlfbTRfZGVmbihbbTRfbG9jYXRpb24oJDEpXSlbOiAkMSBpcyBleHBhbmRlZCBmcm9tLi4uXQpUOSwxMjcKX200X3NwbGl0bTRfY2hhbmdlcXVvdGUoWy09PHsoXSxbKX0+PS1dKVttNF9icGF0c3Vic3QoLT08eygtPTx7KCQxKX0+PS0pfT49LSwgLT08eygkMil9Pj0tLAoJICAgICAgIC09PHsoXSQzWyl9Pj0tKV1tNF9jaGFuZ2VxdW90ZShbLCBdKQpUOCw4NQpfbTRfam9pbm00X2lmKFskIyQyXSwgWzJdLCBbXSwKICAgICAgIFttNF9pZihbJDJdLCBbXSwgW10sIFtbJDEkMl1dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKVDEzLDI3NgptNF9zZXRfZGVsZXRlbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbX200X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbihbX200X3NldChbJDFdKV0pWyldLAoJCSAgICAgIFtfbTRfc2V0KFskMV0pXSkkMChbJDFdKV0sCgkgIFttNF9pZmRlZihbX200X3NldF9jbGVhbnVwKCQxKV0sCgkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSldKW00X2lmZGVmKAoJCSAgICBbX200X3NldF9zaXplKCQxKV0sCgkJICAgIFtfbTRfcG9wZGVmKFtfbTRfc2V0X3NpemUoJDEpXSldKV0pClQxMiwxMAptNF9jcl9kaWdpdHMwMTIzNDU2Nzg5ClQxNywxNwptNF9QQUNLQUdFX1NUUklOR0dOVSBBdXRvY29uZiAyLjY1CkYxMCw2Cl9tNF9wb3BkZWZwb3BkZWYKVDcsMTY4OAptNF9pbml0IyBBbGwgdGhlIE00c3VnYXIgbWFjcm9zIHN0YXJ0IHdpdGggYG00XycsIGV4Y2VwdCBgZG5sJyBrZXB0IGFzIGlzCiMgZm9yIHNha2Ugb2Ygc2ltcGxpY2l0eS4KbTRfcGF0dGVybl9mb3JiaWQoW15fP200X10pCm00X3BhdHRlcm5fZm9yYmlkKFteZG5sJF0pCgojIElmIF9fbTRfdmVyc2lvbl9fIGlzIGRlZmluZWQsIHdlIGFzc3VtZSB0aGF0IHdlIGFyZSBiZWluZyBydW4gYnkgTTQKIyAxLjYgb3IgbmV3ZXIsIHRodXMgJEAgcmVjdXJzaW9uIGlzIGxpbmVhciwgYW5kIGRlYnVnbW9kZSgrZG8pCiMgaXMgYXZhaWxhYmxlIGZvciBmYXN0ZXIgY2hlY2tzIG9mIGRlcmVmZXJlbmNpbmcgdW5kZWZpbmVkIG1hY3JvcwojIGFuZCBmb3JjaW5nIGR1bXBkZWYgdG8gcHJpbnQgdG8gc3RkZXJyIHJlZ2FyZGxlc3Mgb2YgZGVidWdmaWxlLgojIEJ1dCBpZiBpdCBpcyBtaXNzaW5nLCB3ZSBhc3N1bWUgd2UgYXJlIGJlaW5nIHJ1biBieSBNNCAxLjQueCwgdGhhdAojICRAIHJlY3Vyc2lvbiBpcyBxdWFkcmF0aWMsIGFuZCB0aGF0IHdlIG5lZWQgZm9yZWFjaC1iYXNlZAojIHJlcGxhY2VtZW50IG1hY3Jvcy4gIEFsc28sIG00IHByaW9yIHRvIDEuNC44IGxvc2VzIHRyYWNrIG9mIGxvY2F0aW9uCiMgZHVyaW5nIG00d3JhcCB0ZXh0OyBfX2xpbmVfXyBzaG91bGQgbmV2ZXIgYmUgMC4KIwojIFVzZSB0aGUgcmF3IGJ1aWx0aW4gdG8gYXZvaWQgdHJpcHBpbmcgdXAgaW5jbHVkZSB0cmFjaW5nLgojIE1lYW53aGlsZSwgYXZvaWQgbTRfY29weSwgc2luY2UgaXQgdGVtcG9yYXJpbHkgdW5kZWZpbmVzIG00X2RlZm4uCm00X2lmZGVmKFtfX200X3ZlcnNpb25fX10sClttNF9kZWJ1Z21vZGUoWytkb10pCm00X2RlZmluZShbbTRfZGVmbl0sIF9tNF9kZWZuKFtfbTRfZGVmbl0pKQptNF9kZWZpbmUoW200X2R1bXBkZWZdLCBfbTRfZGVmbihbX200X2R1bXBkZWZdKSkKbTRfZGVmaW5lKFttNF9wb3BkZWZdLCBfbTRfZGVmbihbX200X3BvcGRlZl0pKQptNF9kZWZpbmUoW200X3VuZGVmaW5lXSwgX200X2RlZm4oW19tNF91bmRlZmluZV0pKV0sClttNF9idWlsdGluKFtpbmNsdWRlXSwgW200c3VnYXIvZm9yZWFjaC5tNF0pCm00X3dyYXBfbGlmbyhbbTRfaWYoX19saW5lX18sIFswXSwgW200X3B1c2hkZWYoW200X2xvY2F0aW9uXSwKXV1tNF9kcXVvdGUobTRfZHF1b3RlKG00X2RxdW90ZShfX2ZpbGVfXzpfX2xpbmVfXykpKVtbKV0pXSldKQoKIyBSZXdyaXRlIHRoZSBmaXJzdCBlbnRyeSBvZiB0aGUgZGl2ZXJzaW9uIHN0YWNrLgptNF9kaXZlcnQoW0tJTExdKQoKIyBDaGVjayB0aGUgZGl2ZXJ0IHB1c2gvcG9wIHBlcmZlY3QgYmFsYW5jZS4KIyBTb21lIHVzZXJzIGFyZSBwcm9uZSB0byBhbHNvIHVzZSBtNF93cmFwIHRvIHJlZ2lzdGVyIGxhc3QtbWludXRlCiMgbTRfZGl2ZXJ0X3RleHQ7IHNvIGFmdGVyIG91ciBkaXZlcnNpb24gY2xlYW51cHMsIHdlIHJlc3RvcmUKIyBLSUxMIGFzIHRoZSBib3R0b20gb2YgdGhlIGRpdmVyc2lvbiBzdGFjay4KbTRfd3JhcChbbTRfcG9wZGVmKFtfbTRfZGl2ZXJ0X2RpdmVyc2lvbl0pbTRfaWZkZWYoCiAgW19tNF9kaXZlcnRfZGl2ZXJzaW9uXSwgW200X2ZhdGFsKFskMDogdW5iYWxhbmNlZCBtNF9kaXZlcnRfcHVzaDoKXW00X2RpdmVydF9zdGFjayldKV9tNF9wb3BkZWYoW19tNF9kaXZlcnRfc3RhY2tdKW00X2RpdmVydF9wdXNoKFtLSUxMXSldKQoKVDExLDE2MgptNF9kdW1wZGVmc200X2lmKFskI10sIFswXSwgW200X2ZhdGFsKFskMDogbWlzc2luZyBhcmd1bWVudF0pXSwKICAgICAgIFskI10sIFsxXSwgW200X3N0YWNrX2ZvcmVhY2hfbGlmbyhbJDFdLCBbbTRfZHVtcGRlZihbJDFdKW00X2lnbm9yZV0pXSwKICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKQpUMTIsMTYKbTRfd3JhcF9saWZvX200X3dyYXAoWyQxW11dKQpUMTAsMTAzCm00X2ZsYXR0ZW5tNF9pZihtNF9pbmRleChbJDFdLCBbCl0pLCBbLTFdLCBbWyQxXV0sCiAgICAgICBbbTRfdHJhbnNsaXQobTRfYnBhdHN1YnN0KFtbWyQxXV1dLCBbXFwKXSksIFsKXSwgWyBdKV0pClQyMCwzNgpfbTRfc2V0X2ludGVyc2VjdGlvbm00X3NldF9jb250YWlucyhbJDFdLCBbJDJdLCBbLFskMl1dKQpUOSwxNTYKbTRfZXNjYXBlbTRfaWYobTRfaW5kZXgobTRfdHJhbnNsaXQoWyQxXSwKICAgW1tdIywoKV1bYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl8wMTIzNDU2Nzg5XSwgWyQkJF0pLCBbJF0pLAogIFstMV0sIFttNF9lY2hvXSwgW18kMF0pKFskMV0pClQxMiwyNAptNF9yZW5hbWVfbTRtNF9yZW5hbWUoWyQxXSwgW200XyQxXSkKVDIwLDExMQptNF9zdGFja19mb3JlYWNoX3NlcF9tNF9zdGFja19yZXZlcnNlKFskMV0sIFttNF90bXAtJDFdKV9tNF9zdGFja19yZXZlcnNlKFttNF90bXAtJDFdLCBbJDFdLCBbJDJbXV9tNF9kZWZuKFttNF90bXAtJDFdKSQzXSwgWyQ0W11dKQpUMTksMTU2Cl9tNF9kZWZ1bl9wcm9fb3V0ZXJtNF9zZXRfZGVsZXRlKFtfbTRfcHJvdmlkZV0pbTRfcHVzaGRlZihbX200X2RpdmVydGluZyhbJDFdKV0pbTRfcHVzaGRlZihbX200X2RpdmVydGluZ10sIFskMV0pbTRfcHVzaGRlZihbX200X2RpdmVydF9kdW1wXSwgbTRfZGl2bnVtKW00X2RpdmVydF9wdXNoKFtHUk9XXSkKVDE3LDYzCm00X3NldF9kaWZmZXJlbmNlbTRfaWYoWyQxXSwgWyQyXSwgW10sIFttNF9zZXRfbWFwX3NlcChbJDFdLCBbXyQwKFskMl0sXSwgWyldKV0pClQxNywyMDkKX200X3JlcXVpcmVfY2hlY2ttNF9pZihfbTRfZGVmbihbX200X2RpdmVydGluZ10pLCBbJDJdLCBbbTRfaWdub3JlXSwKICAgICAgIG00X2lmZGVmKFtfbTRfZGl2ZXJ0aW5nKFskMl0pXSwgWy1dKSwgWy1dLCBbbTRfd2Fybihbc3ludGF4XSwKICAgWyQzOiBgJDEnIHdhcyBleHBhbmRlZCBiZWZvcmUgaXQgd2FzIHJlcXVpcmVkXSlfbTRfcmVxdWlyZV9jYWxsXSwKICAgICAgIFttNF9pZ25vcmVdKQpUMTksMTY2Cm00X3NldF9pbnRlcnNlY3Rpb25tNF9pZihbJDFdLCBbJDJdLCBbbTRfc2V0X2xpc3RjKFskMV0pXSwKICAgICAgIG00X2V2YWwobTRfc2V0X3NpemUoWyQyXSkgPCBtNF9zZXRfc2l6ZShbJDFdKSksIFsxXSwgWyQwKFskMl0sIFskMV0pXSwKICAgICAgIFttNF9zZXRfbWFwX3NlcChbJDFdLCBbXyQwKFskMl0sXSwgWyldKV0pClQyMSwxMDEKbTRfc3RhY2tfZm9yZWFjaF9saWZvX200X3N0YWNrX3JldmVyc2UoWyQxXSwgW200X3RtcC0kMV0sIFskMihfbTRfZGVmbihbbTRfdG1wLSQxXSkpXSlfbTRfc3RhY2tfcmV2ZXJzZShbbTRfdG1wLSQxXSwgWyQxXSkKVDExLDMzCm00X3NldF9saXN0bTRfc2V0X21hcF9zZXAoWyQxXSwgW10sIFtdLCBbLF0pCkY4LDgKX19saW5lX19fX2xpbmVfXwpUMTMsNDEKX200X3NldF91bmlvbm00X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgW10sIFssWyQyXV0pClQxMCw1NQpfbTRfc2hpZnQybTRfaWYoWyQjXSwgWzJdLCBbXSwKICAgICAgIFssIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSldKQpUMTgsNAptNF9QQUNLQUdFX1ZFUlNJT04yLjY1ClQxMCw2NQpfbTRfc2hpZnQzbTRfaWYoWyQjXSwgWzNdLCBbXSwKICAgICAgIFssIG00X3NoaWZ0KG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSkKVDEwLDg0Cl9tNF9taW5tYXhtNF9pZihbJCNdLCBbM10sIFskMShbJDJdLCBbJDNdKV0sCiAgICAgICBbJDAoWyQxXSwgJDEoWyQyXSwgWyQzXSksIG00X3NoaWZ0MygkQCkpXSkKVDExLDIxMAptNF90ZXh0X2JveG00X3B1c2hkZWYoW200X0JvcmRlcl0sCgkgICAgbTRfdHJhbnNsaXQobTRfZm9ybWF0KFslKnNdLCBtNF9kZWNyKG00X3FsZW4oX200X2V4cGFuZChbJDEKXSkpKSwgW10pLCBbIF0sIG00X2RlZmF1bHRfcXVvdGVkKFskMl0sIFstXSkpKVsjI10gbTRfQm9yZGVyIFsjI10KWyMjXSAkMSBbIyNdClsjI10gbTRfQm9yZGVyIFsjI11fbTRfcG9wZGVmKFttNF9Cb3JkZXJdKQpUMTUsMTgwCm00X3NldF9jb250YWluc200X2lmZGVmKFtfbTRfc2V0X2NsZWFudXAoJDEpXSwKCSAgW200X2lmKG00X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwKCQkgICAgW200X2luZGlyKFtfbTRfc2V0KFskMV0sJDIpXSldLCBbMF0pLCBbMV0sIFskM10sIFskNF0pXSwKCSAgW200X2lmZGVmKFtfbTRfc2V0KFskMV0sJDIpXSwgWyQzXSwgWyQ0XSldKQpGMTAsNwptNF9lc3lzY21kZXN5c2NtZApUMTAsMzIKbTRfc2V0X21hcG00X3NldF9tYXBfc2VwKFskMV0sIFskMihdLCBbKV0pClQxNCw1MwptNF9jcl9zeW1ib2xzMWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfClQxNCw2MwptNF9jcl9zeW1ib2xzMmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfMDEyMzQ1Njc4OQpUMTIsMTgKbTRfZXJycHJpbnRubTRfZXJycHJpbnQoWyQxCl0pClQxMywzMDYKbTRfYnBhdHN1YnN0c200X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkI10pXSwKICAgICAgIFskI10sIDEsIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCiAgICAgICBbJCNdLCAyLCBbbTRfdW5xdW90ZShtNF9idWlsdGluKFtwYXRzdWJzdF0sIFtbJDFdXSwgWyQyXSkpXSwKICAgICAgIFskI10sIDMsIFttNF91bnF1b3RlKG00X2J1aWx0aW4oW3BhdHN1YnN0XSwgW1skMV1dLCBbJDJdLCBbJDNdKSldLAogICAgICAgW18kMCgkQG00X2lmKG00X2V2YWwoJCMgJiAxKSwgMCwgWyxdKSldKQpGNyw0Cm00X2RlY3JkZWNyClQxMiw5MwptNF90ZXh0X3dyYXBfJDAobTRfZXNjYXBlKFskMV0pLCBbJDJdLCBtNF9kZWZhdWx0X3F1b3RlZChbJDNdLCBbJDJdKSwKICAgICBtNF9kZWZhdWx0X3F1b3RlZChbJDRdLCBbNzldKSkKVDEyLDkzCm00X3NldF9lbXB0eW00X2lmZGVmKFtfbTRfc2V0X3NpemUoJDEpXSwKCSAgW200X2lmKG00X2luZGlyKFtfbTRfc2V0X3NpemUoJDEpXSksIFswXSwgWyQyXSwgWyQzXSldLCBbJDJdKQpUMTUsMzYKbTRfc2V0X2NvbnRlbnRzbTRfc2V0X21hcF9zZXAoWyQxXSwgW10sIFtdLCBbWyQyXV0pClQxMCwxNjgKbTRfY29tYmluZW00X2lmKFskMl0sIFtdLCBbXSwgbTRfZXZhbChbJCMgPiAzXSksIFsxXSwKW200X21hcF9hcmdzX3NlcChbbTRfbWFwX2FyZ3Nfc2VwKG00X2RxdW90ZShdLCBbKVtbJDNdXSwgW10sIFtbJDFdXSxdXW00X2RxdW90ZShtNF9kcXVvdGUobTRfc2hpZnQzKCRAKSkpW1spXSwgW1skMV1dLCAkMildKQpUMTgsMjAyCm00X2NyX25vdF9zeW1ib2xzMQECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLi8wMTIzNDU2Nzg5Ojs8PT4/QFtcXV5ge3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KVDE4LDE5MgptNF9jcl9ub3Rfc3ltYm9sczIBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC4vOjs8PT4/QFtcXV5ge3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/y0KRjEyLDgKbTRfYnBhdHN1YnN0cGF0c3Vic3QKVDcsMgptNF9lY2hvJEAKVDI1LDExMQptNF9zdGFja19mb3JlYWNoX3NlcF9saWZvX200X3N0YWNrX3JldmVyc2UoWyQxXSwgW200X3RtcC0kMV0sIFskMltdX200X2RlZm4oW200X3RtcC0kMV0pJDNdLCBbJDRbXV0pX200X3N0YWNrX3JldmVyc2UoW200X3RtcC0kMV0sIFskMV0pClQ3LDkxCm00X2FyZ25tNF9hc3NlcnQoWzAgPCAkMV0pbTRfcHVzaGRlZihbXyQwXSwgW19tNF9wb3BkZWYoW18kMF0pXW00X2RxdW90ZShbJF1tNF9pbmNyKFskMV0pKSlfJDAoJEApClQ4LDI3Cm00X2lmdmFsbTRfaWYoWyQxXSwgW10sIFskM10sIFskMl0pClQ3LDE5NwptNF9jb3B5bTRfaWZkZWYoWyQyXSwgW200X2ZhdGFsKFskMDogd29uJ3Qgb3ZlcndyaXRlIGRlZmluZWQgbWFjcm86ICQyXSldLAoJICBbbTRfc3RhY2tfZm9yZWFjaF9zZXAoWyQxXSwgW200X3B1c2hkZWYoWyQyXSxdLCBbKV0pXSltNF9pZmRlZihbbTRfbG9jYXRpb24oJDEpXSwgW200X2RlZmluZShbbTRfbG9jYXRpb24oJDIpXSwgbTRfbG9jYXRpb24pXSkKVDE0LDExMwptNF9leHBhbmRfb25jZW00X3Byb3ZpZGVfaWYobTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWyQxXSksCgkgICAgICAgW10sCgkgICAgICAgW200X3Byb3ZpZGUobTRfZGVmYXVsdF9xdW90ZWQoWyQyXSwgWyQxXSkpW10kMV0pClQxNCw5NgpfbTRfYnBhdHN1YnN0c200X2lmKFskI10sIDIsIFskMV0sCiAgICAgICBbJDAobTRfYnVpbHRpbihbcGF0c3Vic3RdLCBbWyQxXV0sIFskMl0sIFskM10pLAoJICAgbTRfc2hpZnQzKCRAKSldKQpUMTMsNDEKbTRfcHJvdmlkZV9pZm00X2lmZGVmKFttNF9wcm92aWRlKCQxKV0sCgkgIFskMl0sIFskM10pClQyMCw0Cl9tNF9kaXZlcnRfZGl2ZXJzaW9uS0lMTApGMTIsOApfbTRfdW5kaXZlcnR1bmRpdmVydApUNyw1NApfbTRfY2RybTRfaWYoWyQjXSwgMSwgW10sCiAgICAgICBbLCBtNF9kcXVvdGUobTRfc2hpZnQoJEApKV0pClQxMCw4NgptNF90b3VwcGVybTRfdHJhbnNsaXQoW1skMV1dLCBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpdLAoJCSAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXSkKVDgsMTkKbTRfY3VycnkkMShtNF9zaGlmdCgkQCwpXyQwClQxNywyOAptNF9kZWZhdWx0X25ibGFua200X2lmYmxhbmsoWyQxXSwgWyQyXSwgWyQxXSkKVDEyLDQ4Cm00X3JlX2VzY2FwZW00X2JwYXRzdWJzdChbJDFdLAoJICAgICAgW1tdWyorLj9cXiRdXSwgW1xcXCZdKQpUMTIsMjYKbTRfbm9ybWFsaXplbTRfc3RyaXAobTRfZmxhdHRlbihbJDFdKSkKVDE4LDQwCl9tNF9zZXRfZGlmZmVyZW5jZW00X3NldF9jb250YWlucyhbJDFdLCBbJDJdLCBbXSwgWyxbJDJdXSkKRjMsMwpkbmxkbmwKRjEyLDgKX200X3VuZGVmaW5ldW5kZWZpbmUKVDEwLDc5Cl9tNF9zaGlmdG5tNF9pZihbJDFdLCAxLCBbbTRfc2hpZnQoXSwKICAgICAgIFskMChtNF9kZWNyKFskMV0pXSksIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpClQyMCwxNzAKX200X3ZlcnNpb25fdW5sZXR0ZXJtNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KG00X3RyYW5zbGl0KFtbW1swLCQxXV1dXSwgWy4tXSwgWywsXSksW1thYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXV1bK10sCgkgICAgICBbKzEsLTEsWzByMzY6XCZdXSksIFssMF0sIFssWzByMTA6MF1dKQpUMTEsMTM2Cm00X3VuZGl2ZXJ0bTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiBtaXNzaW5nIGFyZ3VtZW50XSldLAogICAgICAgWyQjXSwgWzFdLCBbX200X3VuZGl2ZXJ0KF9tNF9kaXZlcnQoWyQxXSkpXSwKICAgICAgIFttNF9tYXBfYXJncyhbJDBdLCAkQCldKQpUMTAsNDEyCm00X3JlcXVpcmVtNF9pZmRlZihbX200X2V4cGFuZGluZygkMSldLAogIFttNF9mYXRhbChbJDA6IGNpcmN1bGFyIGRlcGVuZGVuY3kgb2YgJDFdKV0pbTRfaWYoX200X2RpdmVydF9kdW1wLCBbXSwKICBbbTRfZmF0YWwoWyQwKCQxKTogY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBhbiBdZG5sCm00X2lmKFskMF0sIFttNF9yZXF1aXJlXSwgW1ttNF9kZWZ1bl1dLCBbW0FDX0RFRlVOXV0pWydkIG1hY3JvXSldKW00X3Byb3ZpZGVfaWYoWyQxXSwgW200X3NldF9jb250YWlucyhbX200X3Byb3ZpZGVdLCBbJDFdLAogICAgW19tNF9yZXF1aXJlX2NoZWNrKFskMV0sIF9tNF9kZWZuKFttNF9wcm92aWRlKCQxKV0pLCBbJDBdKV0sIFttNF9pZ25vcmVdKV0sCiAgW19tNF9yZXF1aXJlX2NhbGxdKShbJDFdLCBbJDJdLCBfbTRfZGl2ZXJ0X2R1bXApClQ3LDExOQptNF9jYXNlbTRfaWYoWyQjXSwgMCwgW10sCiAgICAgICBbJCNdLCAxLCBbXSwKICAgICAgIFskI10sIDIsIFskMl0sCiAgICAgICBbJDFdLCBbJDJdLCBbJDNdLAogICAgICAgWyQwKFskMV0sIG00X3NoaWZ0MygkQCkpXSkKVDExLDU1Cm00X3NpbmNsdWRlbTRfaW5jbHVkZV91bmlxdWUoWyQxXSlkbmwKbTRfYnVpbHRpbihbc2luY2x1ZGVdLCBbJDFdKQpUOSwyNTUKbTRfY3JfYWxsAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywuLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxOSw2MgptNF92ZXJzaW9uX3VubGV0dGVybTRfc3Vic3RyKG00X21hcF9hcmdzKFsubTRfZXZhbF0sIG00X3VucXVvdGUoXyQwKFskMV0pKSksIFszXSkKVDE3LDMyCm00X2RlZmluZV9kZWZhdWx0bTRfaWZuZGVmKFskMV0sIFttNF9kZWZpbmUoJEApXSkKVDExLDE2MAptNF91bmRlZmluZW00X2lmKFskI10sIFswXSwgW1skMF1dLAogICAgICAgWyQjXSwgWzFdLCBbbTRfaWZkZWYoWyQxXSwgW19tNF91bmRlZmluZShbJDFdKV0sCgkJCSAgICBbbTRfZmF0YWwoWyQwOiB1bmRlZmluZWQgbWFjcm86ICQxXSldKV0sCiAgICAgICBbbTRfbWFwX2FyZ3MoWyQwXSwgJEApXSkKVDE1LDEyCm00X1BBQ0tBR0VfTkFNRUdOVSBBdXRvY29uZgpGMTAsNwptNF9idWlsdGluYnVpbHRpbgpUMTQsNDQKbTRfZGl2ZXJ0X29uY2VtNF9leHBhbmRfb25jZShbbTRfZGl2ZXJ0X3RleHQoWyQxXSwgWyQyXSldKQpUMTEsMTQ2Cl9tNF9leHBhbmRfbTRfaWYoWyQ0XSwgW30+PS1dLAogICAgICAgW200X2NoYW5nZXF1b3RlKFstPTx7JDJdLCBbKX0+PS1dKSQzbTRfY2hhbmdlcXVvdGUoWywgXSldLAogICAgICAgWyQwKFskMV0sIFsoJDJdLCAtPTx7KCQyJDEpfT49LSwgW30+PS1dKW00X2lnbm9yZSQyXSkKVDE3LDY0Cl9tNF9kaXZlcnRfdW5zYWZlbTRfZmF0YWwoWyQwOiBjYW5ub3QgY2hhbmdlIGRpdmVyc2lvbiB0byBgJDEnIGluc2lkZSBtNF9leHBhbmRdKQpUOCw5OQpfbTRfY29uZG00X2lmKCgkMSksIFsoJDIpXSwgWyQzXSwKICAgICAgIFskI10sIFszXSwgW10sCiAgICAgICBbJCNdLCBbNF0sIFskNF0sCiAgICAgICBbJDAobTRfc2hpZnQzKCRAKSldKQpUMTYsMAptNF9wYXR0ZXJuX2FsbG93ClQxNywyNDgKbTRfZGl2ZXJ0X3JlcXVpcmVtNF9pZmRlZihbX200X2V4cGFuZGluZygkMildLAogIFttNF9mYXRhbChbJDA6IGNpcmN1bGFyIGRlcGVuZGVuY3kgb2YgJDJdKV0pbTRfaWYoX200X2RpdmVydF9kdW1wLCBbXSwKICBbbTRfZmF0YWwoWyQwKCQyKTogY2Fubm90IGJlIHVzZWQgb3V0c2lkZSBvZiBhbiBtNF9kZWZ1bidkIG1hY3JvXSldKW00X3Byb3ZpZGVfaWYoWyQyXSwgW10sCiAgW19tNF9yZXF1aXJlX2NhbGwoWyQyXSwgWyQzXSwgX200X2RpdmVydChbJDFdKSldKQpGOSw2Cm00X3N5c3ZhbHN5c3ZhbApUMTcsMAptNF9wYXR0ZXJuX2ZvcmJpZApUOSw2OQptNF9hc3NlcnRtNF9pZihtNF9ldmFsKFskMV0pLCAwLAogICAgICAgW200X2ZhdGFsKFthc3NlcnQgZmFpbGVkOiAkMV0sIFskMl0pXSkKRjEwLDcKbTRfcHVzaGRlZnB1c2hkZWYKVDIwLDUzCm00X2RpdmVydF9zdGFja19wdXNobTRfcHVzaGRlZihbX200X2RpdmVydF9zdGFja10sIG00X2xvY2F0aW9uWzogJDE6ICQyXSkKVDE3LDEwNQpfbTRfZGVmaW5lX2NyX25vdG00X2RlZmluZShbbTRfY3Jfbm90XyQxXSwKCSAgIG00X3RyYW5zbGl0KG00X2RxdW90ZShtNF9kZWZuKFttNF9jcl9hbGxdKSksCgkJICAgICAgIG00X2RlZm4oW200X2NyXyQxXSkpKQpUMjMsMzkKbTRfZXhwYW5zaW9uX3N0YWNrX3B1c2htNF9wdXNoZGVmKFtfbTRfZXhwYW5zaW9uX3N0YWNrXSwgWyQxXSkKVDEzLDI2Cm00X2NyX2xldHRlcnNhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5egpUMTAsMzYKX200X2V4cGFuZCQwXyhbJDFdLCBbKF0sIC09PHsoJDEpfT49LSwgW30+PS1dKQpUMTEsMTQ5Cm00X21hcF9hcmdzbTRfaWYoWyQjXSwgWzBdLCBbbTRfZmF0YWwoWyQwOiB0b28gZmV3IGFyZ3VtZW50czogJCNdKV0sCiAgICAgICBbJCNdLCBbMV0sIFtdLAogICAgICAgWyQjXSwgWzJdLCBbJDEoWyQyXSlbXV0sCiAgICAgICBbX200X2ZvcmVhY2goWyQxKF0sIFspXSwgJEApXSkKVDE5LDI4OApfbTRfc2V0X2NvbnRlbnRzXzFjbTRfaWZkZWYoW19tNF9zZXQoWyQxXSldLAoJICBbbTRfc2V0X2NvbnRhaW5zKFskMV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSksCgkJICAgW200X3B1c2hkZWYoW19tNF9zZXRfKCQxKV0sIF9tNF9kZWZuKFtfbTRfc2V0KFskMV0pXSkpXSwKCQkgICBbX200X3BvcGRlZihbX200X3NldChbJDFdLF1fbTRfZGVmbigKICAgICAgW19tNF9zZXQoWyQxXSldKVspXSldKV9tNF9wb3BkZWYoW19tNF9zZXQoWyQxXSldKSQwKFskMV0pXSwKCSAgW19tNF9wb3BkZWYoW19tNF9zZXRfY2xlYW51cCgkMSldKV0pClQ3LDY1Cl9tNF9taW5tNF9ldmFsKCgoWyQxXSkgPCAoWyQyXSkpICogKFskMV0pICsgKChbJDFdKSA+PSAoWyQyXSkpICogKFskMl0pKQpGOCw1Cm00X3NoaWZ0c2hpZnQKVDE2LDQ0NwpfbTRfcmVxdWlyZV9jYWxsbTRfcHVzaGRlZihbX200X2RpdmVydF9ncm93XSwgbTRfZGVjcihfbTRfZGl2ZXJ0X2dyb3cpKW00X3B1c2hkZWYoW19tNF9kaXZlcnRpbmcoWyQxXSldKW00X3B1c2hkZWYoW19tNF9kaXZlcnRpbmddLCBbJDFdKW00X2RpdmVydF9wdXNoKF9tNF9kaXZlcnRfZ3JvdyltNF9pZihbJDJdLCBbXSwgWyQxXSwgWyQyXSkKbTRfcHJvdmlkZV9pZihbJDFdLCBbbTRfc2V0X3JlbW92ZShbX200X3Byb3ZpZGVdLCBbJDFdKV0sCiAgW200X3dhcm4oW3N5bnRheF0sIFskMSBpcyBtNF9yZXF1aXJlJ2QgYnV0IG5vdCBtNF9kZWZ1bidkXSldKV9tNF9kaXZlcnRfcmF3KCQzKV9tNF91bmRpdmVydChfbTRfZGl2ZXJ0X2dyb3cpbTRfZGl2ZXJ0X3BvcChfbTRfZGl2ZXJ0X2dyb3cpX200X3BvcGRlZihbX200X2RpdmVydF9ncm93XSwKW19tNF9kaXZlcnRpbmcoWyQxXSldLCBbX200X2RpdmVydGluZ10pClQxMSw3MApfbTRfZm9yZWFjaG00X2lmKFskI10sIFszXSwgW10sCiAgICAgICBbJDFbJDRdJDJbXSQwKFskMV0sIFskMl0sIG00X3NoaWZ0MygkQCkpXSkKVDcsNjUKX200X21heG00X2V2YWwoKChbJDFdKSA+IChbJDJdKSkgKiAoWyQxXSkgKyAoKFskMV0pIDw9IChbJDJdKSkgKiAoWyQyXSkpCkY4LDgKX19maWxlX19fX2ZpbGVfXwpGMTAsNgptNF9icmVnZXhwcmVnZXhwClQxMyw0MgptNF9tYXBhbGxfc2VwbTRfaWYoWyQzXSwgW10sIFtdLCBbXyQwKFskMV0sIFskMl0sICQzKV0pClQ5LDI2Cm00X2lmbmRlZm00X2lmZGVmKFskMV0sIFskM10sIFskMl0pClQxMyw0NwptNF9jb3B5X2ZvcmNlbTRfaWZkZWYoWyQyXSwgW19tNF91bmRlZmluZShbJDJdKV0pbTRfY29weSgkQCkKVDcsMTA4Cm00X2pvaW5tNF9pZihbJCNdLCBbMV0sIFtdLAogICAgICAgWyQjXSwgWzJdLCBbWyQyXV0sCiAgICAgICBbbTRfaWYoWyQyXSwgW10sIFtdLCBbWyQyXV9dKSQwKFskMV0sIG00X3NoaWZ0MigkQCkpXSkKRjcsNgptNF9leGl0bTRleGl0ClQxMiw4MwptNF9zZXRfdW5pb25tNF9zZXRfbGlzdGMoWyQxXSltNF9pZihbJDFdLCBbJDJdLCBbXSwKICBbbTRfc2V0X21hcF9zZXAoWyQyXSwgW18kMChbJDFdLF0sIFspXSldKQpUMTYsMgpfbTRfZGl2ZXJ0KEtJTEwpLTEKVDEwLDEwMAptNF9mb3JlYWNobTRfaWYoWyQyXSwgW10sIFtdLAogICAgICAgW200X3B1c2hkZWYoWyQxXSlfJDAoW200X2RlZmluZShbJDFdLF0sIFspJDNdLCBbXSwKICAkMiltNF9wb3BkZWYoWyQxXSldKQpGMTEsOAptNF90cmFjZW9mZnRyYWNlb2ZmClQ4LDMzCm00X2FwcGx5bTRfaWYoWyQyXSwgW10sIFskMV0sIFskMSgkMildKVtdClQzMCwwCm00X2luY2x1ZGUobTRzdWdhci92ZXJzaW9uLm00KQpUMTQsNzMKX200X21hcGFsbF9zZXBtNF9hcHBseShbJDFdLCBbJDNdKV9tNF9mb3JlYWNoKFttNF9hcHBseShbJDJbXSQxXSxdLCBbKV0sIG00X3NoaWZ0MigkQCkpClQ5LDEzMgptNF9kaXZlcnRtNF9wb3BkZWYoW19tNF9kaXZlcnRfc3RhY2tdKW00X2RlZmluZShbX200X2RpdmVydF9kaXZlcnNpb25dLCBbJDFdKW00X2RpdmVydF9zdGFja19wdXNoKFskMF0sIFskMV0pX200X2RpdmVydF9yYXcoX200X2RpdmVydChbJDFdKSkKRjEwLDcKbTRfdHJhY2VvbnRyYWNlb24KVDEzLDUyCm00X2NyX0xldHRlcnNhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaClQ5LDc1Cm00X2JlZm9yZW00X3Byb3ZpZGVfaWYoWyQyXSwKCSAgICAgICBbbTRfd2Fybihbc3ludGF4XSwgWyQyIHdhcyBjYWxsZWQgYmVmb3JlICQxXSldKQpUMTAsMTQzCm00X21hcF9zZXBtNF9wdXNoZGVmKFttNF9TZXBdLCBbbTRfZGVmaW5lKFttNF9TZXBdLCBfbTRfZGVmbihbbTRfdW5xdW90ZV0pKV0pX200X2ZvcmVhY2goW19tNF9hcHBseShbbTRfU2VwKFskMl0pW10kMV0sXSwgWyldLCBbXSwgJDMpbTRfcG9wZGVmKFttNF9TZXBdKQpUMTIsNTUKbTRfY29weV91bm00bTRfY29weShbJDFdLCBtNF9icGF0c3Vic3QoWyQxXSwgW15tNF9cKC4qXCldLCBbW1wxXV0pKQpUMTAsODYKbTRfdG9sb3dlcm00X3RyYW5zbGl0KFtbJDFdXSwgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXSwKCQkgICAgIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5el0pClQ4LDE4OQpfbTRfd3JhcG00X2lmZGVmKFskMF90ZXh0XSwKCSAgW200X2RlZmluZShbJDBfdGV4dF0sIFskMV1fbTRfZGVmbihbJDBfdGV4dF0pWyQyXSldLAoJICBbbTRfYnVpbHRpbihbbTR3cmFwXSwgW200X3VucXVvdGUoCiAgX200X2RlZm4oWyQwX3RleHRdKV9tNF9wb3BkZWYoWyQwX3RleHRdKSldKW00X2RlZmluZShbJDBfdGV4dF0sIFskMSQyXSldKQpGOSw2Cm00X2RlZmluZWRlZmluZQpUMTAsMjcKbTRfZGVmYXVsdG00X2lmKFskMV0sIFtdLCBbJDJdLCBbJDFdKQpUOSw1Cl9tNF9jdXJyeVskMV0pClQ4LDE5OApfbTRfcWxlbm00X2RlZmluZShbbTRfcWxlbi0kMV0sCm00X2lmKG00X2luZGV4KFskMV0sIFtAXSksIFstMV0sIFttNF9sZW4oWyQxXSldLAogICAgICBbbTRfbGVuKG00X2JwYXRzdWJzdChbWyQxXV0sCgkJCSAgIFtAXChcKDw6XHw6Plx8U3xcfCU6XHxcezpcfDpcfVwpXChAXClcfCZ0QFwpXSwKCQkJICAgW1wzXSkpXSkpX200X2RlZm4oW200X3FsZW4tJDFdKQpUMTAsNzIKbTRfcmV2ZXJzZW00X2lmKFskI10sIFswXSwgW10sIFskI10sIFsxXSwgW1skMV1dLAogICAgICAgWyQwKG00X3NoaWZ0KCRAKSksIFskMV1dKQpUMTAsMjk0Cl9tNF9lc2NhcGVtNF9jaGFuZ2VxdW90ZShbLT08eyhdLFspfT49LV0pbTRfYnBhdHN1YnN0KG00X2JwYXRzdWJzdChtNF9icGF0c3Vic3QobTRfYnBhdHN1YnN0KAoJICAtPTx7KC09PHsoLT08eygtPTx7KC09PHsoJDEpfT49LSl9Pj0tKX0+PS0pfT49LSl9Pj0tLAoJLT08eygjKX0+PS0sIC09PHsoQCU6QCl9Pj0tKSwKICAgICAgLT08eyhcWyl9Pj0tLCAtPTx7KEA8OkApfT49LSksCiAgICAtPTx7KFxdKX0+PS0sIC09PHsoQDo+QCl9Pj0tKSwKICAtPTx7KFwkKX0+PS0sIC09PHsoQFN8QCl9Pj0tKW00X2NoYW5nZXF1b3RlKFssXSkKVDE2LDU1Cl9tNF9kaXZlcnRfc3RhY2suLi8uLi9saWIvbTRzdWdhci9tNHN1Z2FyLm00OjMyNTE6IG00X2RpdmVydF9wdXNoOiBLSUxMClQxNywyMjkKbTRfY3Jfbm90X2xldHRlcnMBAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYHt8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8tClQxNywxMTcKbTRfaW5jbHVkZV91bmlxdWVtNF9pZmRlZihbbTRfaW5jbHVkZSgkMSldLAoJICBbbTRfd2Fybihbc3ludGF4XSwgW2ZpbGUgYCQxJyBpbmNsdWRlZCBzZXZlcmFsIHRpbWVzXSldKWRubAptNF9kZWZpbmUoW200X2luY2x1ZGUoJDEpXSkKVDgsNzcKbTRfc3RyaXBtNF9icGF0c3Vic3RzKFskMSBdLAoJICAgICAgIFtbCSBdK10sIFsgXSwKCSAgICAgICBbXi4gP1woLipcKSAuJF0sIFtbW1wxXV1dKQpUOSw0Cm00X2RxdW90ZVskQF0KRC0xLDAKCiMgRW5kIG9mIGZyb3plbiBzdGF0ZSBmaWxlCg==