LyoKICogV2lubW0KICogRnJlbmNoIGxhbmd1YWdlIHN1cHBvcnQKICoKICogQ29weXJpZ2h0IDE5OTkgRXJpYyBQb3VlY2gKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgIndpbmRlZi5oIgojaW5jbHVkZSAibW1kZGsuaCIKCkxBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFCkJFR0lOCgovKiBNTVNZUyBlcnJvcnMgKi8KTU1TWVNFUlJfTk9FUlJPUiwgCQkiTGEgY29tbWFuZGUgc3DpY2lmaellIGEg6XTpIGV46WN1dOllLiIKTU1TWVNFUlJfRVJST1IsCQkJIkVycmV1ciBleHRlcm5lIG5vbiBk6WZpbmllLiIKTU1TWVNFUlJfQkFEREVWSUNFSUQsIAkJIlVuIGlkZW50aWZpY2F0ZXVyIGRlIHDpcmlwaOlyaXF1ZSBob3JzIGRlcyBsaW1pdGVzIHBvdXIgdm90cmUgc3lzdOhtZSBhIOl06SB1dGlsaXPpLiIKTU1TWVNFUlJfTk9URU5BQkxFRCwJCSJMZSBwaWxvdGUgbidhIHBhcyDpdOkgYWN0aXbpLiIKTU1TWVNFUlJfQUxMT0NBVEVELCAJCSJMZSBw6XJpcGjpcmlxdWUgc3DpY2lmaekgZXN0IGVuIGNvdXJzIGQndXRpbGlzYXRpb24uIEF0dGVuZGV6IHF1J2lsIHNvaXQgbGlicmUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNTVNZU0VSUl9JTlZBTEhBTkRMRSwgCQkiTGUgaGFuZGxlIGRlIHDpcmlwaOlyaXF1ZSBzcOljaWZp6SBuJ2VzdCBwYXMgdmFsaWRlLiIKTU1TWVNFUlJfTk9EUklWRVIsIAkJIklsIG4neSBhIHBhcyBkZSBwaWxvdGUgaW5zdGFsbOkgc3VyIHZvdHJlIHN5c3TobWUuIgpNTVNZU0VSUl9OT01FTSwJCQkiTeltb2lyZSBpbnN1ZmZpc2FudGUgcG91ciBjZXR0ZSB04mNoZS4gUXVpdHRleiB1biBvdSBwbHVzaWV1cnMgcHJvZ3JhbW1lcywgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1NU1lTRVJSX05PVFNVUFBPUlRFRCwgCQkiRm9uY3Rpb24gbm9uIHByaXNlIGVuIGNoYXJnZS4gVXRpbGlzZXogbGEgZm9uY3Rpb24gQ2FwYWNpdOlzIHBvdXIgb2J0ZW5pciBsZXMgZm9uY3Rpb25zIGRlIGNlIHBpbG90ZS4iCk1NU1lTRVJSX0JBREVSUk5VTSwgCQkiVW4gbnVt6XJvIGQnZXJyZXVyIG5vbiBk6WZpbmkgZGFucyBsZSBzeXN06G1lIGEg6XTpIHNw6WNpZmnpLiIKTU1TWVNFUlJfSU5WQUxGTEFHLCAJCSJVbiBpbmRpY2F0ZXVyIG5vbiB2YWxpZGUgYSDpdOkgdHJhbnNtaXMg4CB1bmUgZm9uY3Rpb24gc3lzdOhtZS4iCk1NU1lTRVJSX0lOVkFMUEFSQU0sCQkiVW4gcGFyYW3odHJlIG5vbiB2YWxpZGUgYSDpdOkgcGFzc+kg4CB1bmUgZm9uY3Rpb24gc3lzdOhtZS4iCgovKiBXQVZFIGVycm9ycyAqLwpXQVZFUlJfQkFERk9STUFULCAJCSJMZSBmb3JtYXQgY2hvaXNpIG5lIHBldXQg6nRyZSB0cmFkdWl0IG91IHV0aWxpc+kuIFV0aWxpc2V6IENhcGFjaXTpcyBwb3VyIHZvaXIgbGVzIGZvcm1hdHMgcHJpcyBlbiBjaGFyZ2UuIgpXQVZFUlJfU1RJTExQTEFZSU5HLCAJCSJMZSBMZWN0ZXVyIG11bHRpbelkaWEgY29udGludWUg4CBsaXJlIGRlcyBkb25u6WVzLiBS6WluaXRpYWxpc2V6LWxlIG91IGF0dGVuZGV6IHF1ZSB0b3V0ZXMgbGVzIGRvbm7pZXMgYWllbnQg6XTpIGx1ZXMuIgpXQVZFUlJfVU5QUkVQQVJFRCwgCQkiTCdlbi106nRlIGR1IHNvbiBuJ2EgcGFzIOl06SBwculwYXLpLiBVdGlsaXNleiBsYSBmb25jdGlvbiBQculwYXJlciBwb3VyIGxlIGZhaXJlLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKV0FWRVJSX1NZTkMsIAkJCSJJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIHDpcmlwaOlyaXF1ZSBzYW5zIHV0aWxpc2VyIGwnaW5kaWNhdGV1ciBXQVZFX0FMTE9XU1lOQy4gVXRpbGlzZXogbCdpbmRpY2F0ZXVyLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKCi8qIE1JREkgZXJyb3JzICovCk1JRElFUlJfVU5QUkVQQVJFRCwgCQkiTCdlbi106nRlIE1JREkgbidhIHBhcyDpdOkgcHLpcGFy6S4gVXRpbGlzZXogbGEgZm9uY3Rpb24gUHLpcGFyZXIgcG91ciBsZSBmYWlyZSwgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1JRElFUlJfU1RJTExQTEFZSU5HLCAJCSJMZSBMZWN0ZXVyIG11bHRpbelkaWEgY29udGludWUg4CBsaXJlIGRlcyBkb25u6WVzLiBS6WluaXRpYWxpc2V6LWxlIG91IGF0dGVuZGV6IHF1ZSB0b3V0ZXMgbGVzIGRvbm7pZXMgYWllbnQg6XTpLiBsdWVzLiIKTUlESUVSUl9OT01BUCwgCQkJIklsIG4neSBhIHBhcyBkJ2luc3RydW1lbnQgZOlmaW5pIHBvdXIgdW4gbWFwcGV1ciBNSURJLiBVdGlsaXNlciBsJ29uZ2xldCBNSURJIGRhbnMgUHJvcHJp6XTpcyBtdWx0aW3pZGlhIHBvdXIgaW5zdGFsbGVyIGxlcyBpbnN0cnVtZW50cy4iCk1JRElFUlJfTk9UUkVBRFksIAkJIkxlIHBvcnQgdHJhbnNtZXQgZGVzIGRvbm7pZXMgYXUgcOlyaXBo6XJpcXVlLiBBdHRlbmRleiBsYSBmaW4gZGUgbGEgdHJhbnNtaXNzaW9uLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTUlESUVSUl9OT0RFVklDRSwgCQkiTGUgZmljaGllciBkZSBkZXNjcmlwdGlvbiBkJ2luc3RydW1lbnQgTUlESSAoLklERikgbidlc3QgcGFzIHZhbGlkZS4gUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLCBjb250YWN0ZXogbGUgY29uc3RydWN0ZXVyIGRlIGwnaW5zdHJ1bWVudC4iCk1JRElFUlJfSU5WQUxJRFNFVFVQLCAJCSJVbiBhcHBlbCBNSURJIG5vbiB2YWxpZGUgZGFucyBsZSBtb2RlIGQnb3V2ZXJ0dXJlIGVuIGNvdXJzIGEg6XTpIOltaXMuIE91dnJleiDgIG5vdXZlYXUgbGUgcOlyaXBo6XJpcXVlIGVuIGVtcGxveWFudCBsZSBtb2RlIGNvcnJlY3QuIgoKLyogTUNJIGVycm9ycyAqLwpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfSUQsIAkiSUQgZGUgcOlyaXBo6XJpcXVlIE1DSSBub24gdmFsaWRlLiBVdGlsaXNleiBsJ0lEIHJlbnZveekgbG9yc3F1ZSB2b3VzIGF2ZXogb3V2ZXJ0IGxlIHDpcmlwaOlyaXF1ZSBNQ0kuIgpNQ0lFUlJfVU5SRUNPR05JWkVEX0tFWVdPUkQsIAkiTGUgcGFyYW3qdHJlIGRlIGNvbW1hbmRlIHV0aWxpc+kgbidlc3QgcGFzIGTpZmluaSBkYW5zIGwnZW5zZW1ibGUgZGUgY29tbWFuZGVzIE1DSS4iCk1DSUVSUl9VTlJFQ09HTklaRURfQ09NTUFORCwJIkxhIGNvbW1hbmRlIHV0aWxpc+llIG4nZXN0IHBhcyB1bmUgY29tbWFuZGUgTUNJIHZhbGlkZS4iCk1DSUVSUl9IQVJEV0FSRSwgCQkiVm90cmUgcOlyaXBo6XJpcXVlIG11bHRpbelkaWEgcHLpc2VudGUgdW4gcHJvYmzobWUuIFbpcmlmaWV6IHF1J2lsIGZvbmN0aW9ubmUgY29udmVuYWJsZW1lbnQgb3UgY29udGFjdGV6IGxlIGNvbnN0cnVjdGV1ci4iCk1DSUVSUl9JTlZBTElEX0RFVklDRV9OQU1FLCAJIkNlIG4nZXN0IHBhcyB1biBw6XJpcGjpcmlxdWUgTUNJIGNvbm51LiIKTUNJRVJSX09VVF9PRl9NRU1PUlksIAkJIk3pbW9pcmUgaW5zdWZmaXNhbnRlIHBvdXIgY2V0dGUgdOJjaGUuIFF1aXR0ZXogdW4gb3UgcGx1c2lldXJzIHByb2dyYW1tZXMsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfREVWSUNFX09QRU4sIAkJIkNldCBhbGlhcyBlc3QgZOlq4CB1dGlsaXPpIHBhciBjZSBwcm9ncmFtbWUuIEVtcGxveWV6IHVuIGFsaWFzIHVuaXF1ZSBwbHV09HQgcXVlIGxlIG5vbSBkdSBw6XJpcGjpcmlxdWUuIgpNQ0lFUlJfQ0FOTk9UX0xPQURfRFJJVkVSLCAJIkxlIHBpbG90ZSBkZSBw6XJpcGjpcmlxdWUgbidhIHBhcyBwdSDqdHJlIGNoYXJn6S4gVulyaWZpZXogcXUnaWwgZXN0IGluc3RhbGzpIGNvcnJlY3RlbWVudC4iCk1DSUVSUl9NSVNTSU5HX0NPTU1BTkRfU1RSSU5HLCAJIkxhIGNoYe5uZSBkZSBjb21tYW5kZSBlc3QgdmlkZS4iCk1DSUVSUl9QQVJBTV9PVkVSRkxPVywgCQkiTGEgY2hh7m5lIGRlIHNvcnRpZSDpdGFpdCB0cm9wIGdyYW5kZSBwb3VyIHRlbmlyIGRhbnMgbGEgbeltb2lyZSB0YW1wb24gZGUgcmV0b3VyLiBBdWdtZW50ZXogbGEgdGFpbGxlIGRlIGxhIG3pbW9pcmUgdGFtcG9uLiIKTUNJRVJSX01JU1NJTkdfU1RSSU5HX0FSR1VNRU5ULCAiTGEgY29tbWFuZGUgc3DpY2lmaellIG7pY2Vzc2l0ZSB1biBwYXJhbep0cmUgY2hh7m5lIGRlIGNhcmFjdOhyZXMgOiB2ZXVpbGxleiBsJ2VudHJlci4iCk1DSUVSUl9CQURfSU5URUdFUiwgCQkiTGUgbm9tYnJlIGVudGllciBxdWUgdm91cyBhdmV6IHNw6WNpZmnpIG4nZXN0IHBhcyB2YWxpZGUgcG91ciBjZXR0ZSBjb21tYW5kZS4gRW50cmV6IHVuIG5vbWJyZS4iCk1DSUVSUl9QQVJTRVJfSU5URVJOQUwsIAkiTGUgcGlsb3RlIGRlIHDpcmlwaOlyaXF1ZSBhIHJlbnZveekgdW5lIHLpcG9uc2UgZGUgdHlwZSBub24gdmFsaWRlLiBQb3VyIG9idGVuaXIgdW4gbm91dmVhdSBwaWxvdGUsIGNvbnRhY3RleiBsZSBjb25zdHJ1Y3RldXIgZHUgcOlyaXBo6XJpcXVlLiIKTUNJRVJSX0RSSVZFUl9JTlRFUk5BTCwgCSJMZSBwaWxvdGUgZGUgcOlyaXBo6XJpcXVlIHBy6XNlbnRlIHVuIHByb2Js6G1lLiBEZW1hbmRleiBhdSBjb25zdHJ1Y3RldXIgZHUgcOlyaXBo6XJpcXVlIGRlIHZvdXMgZm91cm5pciB1biBub3V2ZWF1IHBpbG90ZS4iCk1DSUVSUl9NSVNTSU5HX1BBUkFNRVRFUiwgCSJJbCBtYW5xdWUgdW4gcGFyYW3qdHJlIGRhbnMgbGEgY29tbWFuZGUgc3DpY2lmaellIDogdmV1aWxsZXogbCdlbnRyZXIuIgpNQ0lFUlJfVU5TVVBQT1JURURfRlVOQ1RJT04sIAkiTGUgcOlyaXBo6XJpcXVlIE1DSSBxdWUgdm91cyB1dGlsaXNleiBuZSBwcmVuZCBwYXMgZW4gY2hhcmdlIGxhIGNvbW1hbmRlIHNw6WNpZmnpZS4iCk1DSUVSUl9GSUxFX05PVF9GT1VORCwgCQkiTGUgZmljaGllciBzcOljaWZp6SBlc3QgaW50cm91dmFibGUuIFbpcmlmaWV6IHF1ZSBsZSBjaGVtaW4gZCdhY2PocyBldCBsZSBub20gZGUgZmljaGllciBzb250IGNvcnJlY3RzLiIKTUNJRVJSX0RFVklDRV9OT1RfUkVBRFksIAkiTGUgcGlsb3RlIGRlIHDpcmlwaOlyaXF1ZSBuJ2VzdCBwYXMgcHLqdC4gQXR0ZW5kZXogdW5lIG1pbnV0ZSBhdmFudCBkJ2Vzc2F5ZXIg4CBub3V2ZWF1LiIKTUNJRVJSX0lOVEVSTkFMLCAJCSJVbiBwcm9ibOhtZSBlc3Qgc3VydmVudSBsb3JzIGRlIGwnaW5pdGlhbGlzYXRpb24gZGUgTUNJLiBFc3NheWV6IGRlIHJlZOltYXJyZXIgV2luZG93cy4iCk1DSUVSUl9EUklWRVIsIAkJCSJVbmUgZXJyZXVyIHNw6WNpZmlxdWUgYXUgcGlsb3RlIGEgcHJvdm9xdekgc2EgZmVybWV0dXJlLiBFc3NheWV6IGRlIHJlbGFuY2VyIGxhIGNvbW1hbmRlLiIKTUNJRVJSX0NBTk5PVF9VU0VfQUxMLCAJCSJVdGlsaXNleiB1biBub20gZGUgcOlyaXBo6XJpcXVlIHNw6WNpZmlxdWUgcG91ciBjZXR0ZSBjb21tYW5kZS4iCk1DSUVSUl9NVUxUSVBMRSwgCQkiRGVzIGVycmV1cnMgc2Ugc29udCBwcm9kdWl0ZXMgZGFucyBwbHVzaWV1cnMgcOlyaXBo6XJpcXVlcy4gU3DpY2lmaWV6IGNoYXF1ZSBjb21tYW5kZSBldCBjaGFxdWUgcOlyaXBo6XJpcXVlIHPpcGFy6W1lbnQgYWZpbiBkZSBk6XRlcm1pbmVyIGxlcyBw6XJpcGjpcmlxdWVzIHF1aSBvbnQgcHJvdm9xdekgbGVzIGVycmV1cnMuIgpNQ0lFUlJfRVhURU5TSU9OX05PVF9GT1VORCwgCSJJbXBvc3NpYmxlIGRlIGpvdWVyIGNlIGZpY2hpZXIuIFbpcmlmaWV6IGxlIG5vbSBkZSBmaWNoaWVyIG91IGluc3RhbGxleiB1biBwaWxvdGUgcXVpIHJlY29ubmHudCBjZSB0eXBlIGRlIGZpY2hpZXIuIgpNQ0lFUlJfT1VUT0ZSQU5HRSwgCQkiTGUgcGFyYW3qdHJlIGVzdCBob3JzIGxpbWl0ZXMgcG91ciBsYSBjb21tYW5kZSBzcOljaWZp6WUuIgpNQ0lFUlJfRkxBR1NfTk9UX0NPTVBBVElCTEUsIAkiTGVzIHBhcmFt6nRyZXMgc3DpY2lmaelzIG5lIHBldXZlbnQg6nRyZSB1dGlsaXPpcyBlbnNlbWJsZS4iCk1DSUVSUl9GSUxFX05PVF9TQVZFRCwgCQkiSWwgZXN0IGltcG9zc2libGUgZCdlbnJlZ2lzdHJlciBsZSBmaWNoaWVyIHNw6WNpZmnpLiBW6XJpZmlleiBxdWUgdm91cyBhdmV6IGFzc2V6IGQnZXNwYWNlIGRpc3F1ZSBvdSBxdWUgdm91cyDqdGVzIHRvdWpvdXJzIGNvbm5lY3TpIGF1IHLpc2VhdS4iCk1DSUVSUl9ERVZJQ0VfVFlQRV9SRVFVSVJFRCwgCSJMZSBw6XJpcGjpcmlxdWUgc3DpY2lmaekgZXN0IGludHJvdXZhYmxlLiBW6XJpZmlleiBzJ2lsIGVzdCBpbnN0YWxs6SBvdSBzaSBzb24gbm9tIGVzdCBjb3JyZWN0ZW1lbnQgb3J0aG9ncmFwaGnpLiIKTUNJRVJSX0RFVklDRV9MT0NLRUQsIAkJIkxlIHDpcmlwaOlyaXF1ZSBzcOljaWZp6SBlc3QgZW4gY291cnMgZGUgZmVybWV0dXJlLiBBdHRlbmRleiBxdWVscXVlcyBzZWNvbmRlcywgcHVpcyBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9EVVBMSUNBVEVfQUxJQVMsIAkiTCdhbGlhcyBzcOljaWZp6SBlc3QgZOlq4CB1dGlsaXPpIGRhbnMgY2V0dGUgYXBwbGljYXRpb24uIFV0aWxpc2V6IHVuIGFsaWFzIHVuaXF1ZS4iCk1DSUVSUl9CQURfQ09OU1RBTlQsIAkJIkxhIGNvbnN0YW50ZSB1dGlsaXPpZSBuJ2VzdCBwYXMgY29ycmVjdGUgcG91ciBjZXR0ZSBjb21tYW5kZS4iCk1DSUVSUl9NVVNUX1VTRV9TSEFSRUFCTEUsIAkiTGUgcGlsb3RlIGRlIHDpcmlwaOlyaXF1ZSBlc3QgZOlq4CB1dGlsaXPpIGVuIGNlIG1vbWVudC4gUG91ciBsZSBwYXJ0YWdlciwgdXRpbGlzZXogbGUgcGFyYW3qdHJlIGRlIHBhcnRhZ2UgKCdzaGFyZWFibGUnKSBkYW5zIGNoYXF1ZSBjb21tYW5kZSBkJ291dmVydHVyZSAoJ29wZW4nKS4iCk1DSUVSUl9NSVNTSU5HX0RFVklDRV9OQU1FLCAJIkxhIGNvbW1hbmRlIHNw6WNpZmnpZSByZXF1aWVydCB1biBub20gZCdhbGlhcywgZGUgZmljaGllciwgZGUgcGlsb3RlIG91IGRlIHDpcmlwaOlyaXF1ZSA6IHZldWlsbGV6IGwnZW50cmVyLiIKTUNJRVJSX0JBRF9USU1FX0ZPUk1BVCwgCSJMYSB2YWxldXIgc3DpY2lmaellIGNvbW1lIGZvcm1hdCBob3JhaXJlIG4nZXN0IHBhcyB2YWxpZGUuIExlcyBmb3JtYXRzIHZhbGlkZXMgc29udCBpbmRpcXXpcyBkYW5zIGxhIGRvY3VtZW50YXRpb24gTUNJLiIKTUNJRVJSX05PX0NMT1NJTkdfUVVPVEUsIAkiVW4gZ3VpbGxlbWV0IGRvdWJsZSBmZXJtYW50IG1hbnF1ZSBkYW5zIGxhIHZhbGV1ciBkdSBwYXJhbep0cmUuIEFqb3V0ZXotbGUuIgpNQ0lFUlJfRFVQTElDQVRFX0ZMQUdTLCAJIlVuIHBhcmFt6nRyZSBvdSB1bmUgdmFsZXVyIGEg6XTpIHNw6WNpZmnpIGRldXggZm9pcyBldCBuZSBkb2l0IOp0cmUgc3DpY2lmaekgcXUndW5lIHNldWxlIGZvaXMuIgpNQ0lFUlJfSU5WQUxJRF9GSUxFLCAJCSJMZSBmaWNoaWVyIG5lIHBldXQgcGFzIOp0cmUgZXjpY3V06SBzdXIgdW4gcOlyaXBo6XJpcXVlIE1DSSBzcOljaWZp6S4gTGUgZmljaGllciBlc3QgZW5kb21tYWfpIG91IHNvbiBmb3JtYXQgbidlc3QgcGFzIGNvcnJlY3QuIgpNQ0lFUlJfTlVMTF9QQVJBTUVURVJfQkxPQ0ssIAkiVW4gYmxvYyBkZSBwYXJhbep0cmVzIG51bHMgYSDpdOkgcGFzc+kg4CBNQ0kuIgpNQ0lFUlJfVU5OQU1FRF9SRVNPVVJDRSwgCSJJbXBvc3NpYmxlIGQnZW5yZWdpc3RyZXIgdW4gZmljaGllciBzYW5zIG5vbS4gRW50cmV6IHVuIG5vbSBkZSBmaWNoaWVyLiIKTUNJRVJSX05FV19SRVFVSVJFU19BTElBUywgCSJWb3VzIGRldmV6IHNw6WNpZmllciB1biBhbGlhcyBsb3JzcXVlIHZvdXMgZW1wbG95ZXogbGUgcGFyYW3qdHJlICdub3V2ZWF1Jy4iCk1DSUVSUl9OT1RJRllfT05fQVVUT19PUEVOLCAJIklsIGVzdCBpbXBvc3NpYmxlIGQndXRpbGlzZXIgbCdpbmRpY2F0ZXVyICdub3RpZmllcicgYXZlYyBsZXMgcOlyaXBo6XJpcXVlcyDgIG91dmVydHVyZSBhdXRvbWF0aXF1ZS4iCk1DSUVSUl9OT19FTEVNRU5UX0FMTE9XRUQsIAkiSW1wb3NzaWJsZSBkJ3V0aWxpc2VyIHVuIG5vbSBkZSBmaWNoaWVyIGF2ZWMgbGUgcOlyaXBo6XJpcXVlIHNw6WNpZmnpLiIKTUNJRVJSX05PTkFQUExJQ0FCTEVfRlVOQ1RJT04sIAkiSW1wb3NzaWJsZSBkJ2V46WN1dGVyIGxlcyBjb21tYW5kZXMgZGFucyBsJ29yZHJlIHNw6WNpZmnpLiBDb3JyaWdleiBsJ29yZHJlIGRlcyBjb21tYW5kZXMsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfSUxMRUdBTF9GT1JfQVVUT19PUEVOLCAJIkltcG9zc2libGUgZCdleOljdXRlciBjZXR0ZSBjb21tYW5kZSBzdXIgdW4gcOlyaXBo6XJpcXVlIOAgb3V2ZXJ0dXJlIGF1dG9tYXRpcXVlLiBBdHRlbmRleiBxdWUgbGUgcOlyaXBo6XJpcXVlIHNvaXQgZmVybekgcG91ciBlc3NheWVyIOAgbm91dmVhdS4iCk1DSUVSUl9GSUxFTkFNRV9SRVFVSVJFRCwgCSJMZSBub20gZGUgZmljaGllciBlc3QgaW5jb3JyZWN0LiIKTUNJRVJSX0VYVFJBX0NIQVJBQ1RFUlMsIAkiSWwgZXN0IGltcG9zc2libGUgZGUgc3DpY2lmaWVyIGRlcyBjYXJhY3TocmVzIHN1cHBs6W1lbnRhaXJlcyBhcHLocyB1bmUgY2hh7m5lIHBsYWPpZSBlbnRyZSBndWlsbGVtZXRzLiIKTUNJRVJSX0RFVklDRV9OT1RfSU5TVEFMTEVELCAJIkNlIHDpcmlwaOlyaXF1ZSBuJ2VzdCBwYXMgaW5zdGFsbOkuIFBvdXIgaW5zdGFsbGVyIHVuIG5vdXZlYXUgcGlsb3RlLCBkb3VibGUtY2xpcXVleiBzdXIgbCdpY/RuZSBBam91dCBkZSBw6XJpcGjpcmlxdWUgZGFucyBsZSBQYW5uZWF1IGRlIGNvbmZpZ3VyYXRpb24uIgpNQ0lFUlJfR0VUX0NELCAJCQkiSW1wb3NzaWJsZSBkJ2FjY+lkZXIgYXUgZmljaGllciBvdSBhdSBw6XJpcGjpcmlxdWUgTUNJIHNw6WNpZmnpLiBFc3NheWV6IGRlIGNoYW5nZXIgZGUgculwZXJ0b2lyZSBvdSBkZSByZWTpbWFycmVyIHZvdHJlIG9yZGluYXRldXIuIgpNQ0lFUlJfU0VUX0NELCAJCQkiSW1wb3NzaWJsZSBkJ2FjY+lkZXIgYXUgZmljaGllciBvdSBhdSBw6XJpcGjpcmlxdWUgTUNJIHNw6WNpZmnpLCBjYXIgbCdhcHBsaWNhdGlvbiBuZSBwZXV0IHBhcyBjaGFuZ2VyIGRlIHLpcGVydG9pcmUuIgpNQ0lFUlJfU0VUX0RSSVZFLCAJCSJJbXBvc3NpYmxlIGQnYWNj6WRlciBhdSBmaWNoaWVyIG91IGF1IHDpcmlwaOlyaXF1ZSBNQ0kgc3DpY2lmaeksIGNhciBsJ2FwcGxpY2F0aW9uIG5lIHBldXQgcGFzIGNoYW5nZXIgZGUgbGVjdGV1ci4iCk1DSUVSUl9ERVZJQ0VfTEVOR1RILCAJCSJTcOljaWZpZXogdW4gbm9tIGRlIHDpcmlwaOlyaXF1ZSBvdSBkZSBwaWxvdGUgZGUgbW9pbnMgZGUgNzkgY2FyYWN06HJlcy4iCk1DSUVSUl9ERVZJQ0VfT1JEX0xFTkdUSCwgCSJTcOljaWZpZXogdW4gbm9tIGRlIHDpcmlwaOlyaXF1ZSBvdSBkZSBwaWxvdGUgY29tcHRhbnQgbW9pbnMgZGUgNjkgY2FyYWN06HJlcy4iCk1DSUVSUl9OT19JTlRFR0VSLCAJCSJMYSBjb21tYW5kZSBzcOljaWZp6WUgbuljZXNzaXRlIHVuIHBhcmFt6nRyZSBudW3pcmlxdWUuIEV4ZW1wbGUgOiAiImpvdWVyIGp1c3F1J+AgMTAiIi4gRW50cmV6IGNlIHBhcmFt6nRyZS4iCk1DSUVSUl9XQVZFX09VVFBVVFNJTlVTRSwgCSJUb3VzIGxlcyBw6XJpcGjpcmlxdWVzIGF1ZGlvIGNhcGFibGVzIGRlIGpvdWVyIGRlcyBmaWNoaWVycyBzb3VzIGNlIGZvcm1hdCBzb250IGVuIGNvdXJzIGQndXRpbGlzYXRpb24uIEF0dGVuZGV6IHF1J3VuIHDpcmlwaOlyaXF1ZSBhdWRpbyBzb2l0IGxpYnJlLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUSU5VU0UsIAkiTGUgcOlyaXBo6XJpcXVlIGF1ZGlvIGRlIGxlY3R1cmUgZXN0IGVuIGNvdXJzIGQndXRpbGlzYXRpb24uIEF0dGVuZGV6IHF1J2lsIHNvaXQgbGlicmUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfV0FWRV9JTlBVVFNJTlVTRSwgCSJUb3VzIGxlcyBw6XJpcGjpcmlxdWVzIGF1ZGlvIGNhcGFibGVzIGQnZW5yZWdpc3RyZXIgZGVzIGZpY2hpZXJzIHNvdXMgY2UgZm9ybWF0IHNvbnQgZW4gY291cnMgZCd1dGlsaXNhdGlvbi4gQXR0ZW5kZXogcXUndW4gcOlyaXBo6XJpcXVlIGF1ZGlvIHNvaXQgbGlicmUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVElOVVNFLCAJIkxlIHDpcmlwaOlyaXF1ZSBhdWRpbyBkJ2VucmVnaXN0cmVtZW50IGVzdCBlbiBjb3VycyBkJ3V0aWxpc2F0aW9uLiBBdHRlbmRleiBxdSdpbCBzb2l0IGxpYnJlLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTUNJRVJSX1dBVkVfT1VUUFVUVU5TUEVDSUZJRUQsCSJOJ2ltcG9ydGUgcXVlbCBw6XJpcGjpcmlxdWUgYXVkaW8gZGUgbGVjdHVyZSBwZXV0IOp0cmUgdXRpbGlz6S4iCk1DSUVSUl9XQVZFX0lOUFVUVU5TUEVDSUZJRUQsIAkiTidpbXBvcnRlIHF1ZWwgcOlyaXBo6XJpcXVlIGF1ZGlvIGQnZW5yZWdpc3RyZW1lbnQgcGV1dCDqdHJlIHV0aWxpc+kuIgpNQ0lFUlJfV0FWRV9PVVRQVVRTVU5TVUlUQUJMRSwgCSJBdWN1biBw6XJpcGjpcmlxdWUgYXVkaW8gY2FwYWJsZSBkZSBqb3VlciBkZXMgZmljaGllcnMgc291cyBsZSBmb3JtYXQgZW4gY291cnMgbidhIOl06SBpbnN0YWxs6S4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVFVOU1VJVEFCTEUsIkNlIHDpcmlwaOlyaXF1ZSBuZSBwYXJ2aWVudCBwYXMg4CByZWNvbm5h7nRyZSBsZSBmb3JtYXQgZHUgZmljaGllciBhY3R1ZWwuIFPpbGVjdGlvbm5leiB1biBhdXRyZSBw6XJpcGjpcmlxdWUsIHB1aXMgZXNzYXlleiDgIG5vdXZlYXUuIgpNQ0lFUlJfV0FWRV9JTlBVVFNVTlNVSVRBQkxFLCAJIkF1Y3VuIHDpcmlwaOlyaXF1ZSBhdWRpbyBjYXBhYmxlIGQnZW5yZWdpc3RyZXIgZGVzIGZpY2hpZXJzIHNvdXMgbGUgZm9ybWF0IGVuIGNvdXJzIG4nYSDpdOkgaW5zdGFsbOkuIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVFVOU1VJVEFCTEUsICJDZSBw6XJpcGjpcmlxdWUgbmUgcGFydmllbnQgcGFzIOAgcmVjb25uYe50cmUgbGUgZm9ybWF0IGR1IGZpY2hpZXIgYWN0dWVsLiBT6WxlY3Rpb25uZXogdW4gYXV0cmUgcOlyaXBo6XJpcXVlLCBwdWlzIGVzc2F5ZXog4CBub3V2ZWF1LiIKTUNJRVJSX05PX1dJTkRPVywgCQkiSWwgbid5IHBhcyBkZSBmZW7qdHJlIGQnYWZmaWNoYWdlLiIKTUNJRVJSX0NSRUFURVdJTkRPVywgCQkiSW1wb3NzaWJsZSBkJ3V0aWxpc2VyIG91IGRlIGNy6WVyIHVuZSBmZW7qdHJlLiIKTUNJRVJSX0ZJTEVfUkVBRCwgCQkiSW1wb3NzaWJsZSBkZSBsaXJlIGNlIGZpY2hpZXIuIEFzc3VyZXotdm91cyBxdSdpbCBuJ2EgcGFzIOl06SBzdXBwcmlt6SBvdSB26XJpZmlleiB2b3RyZSBkaXNxdWUgb3Ugdm90cmUgY29ubmV4aW9uIHLpc2VhdS4iCk1DSUVSUl9GSUxFX1dSSVRFLCAJCSJJbCBlc3QgaW1wb3NzaWJsZSBkJ+ljcmlyZSBkZXMgaW5mb3JtYXRpb25zIGRhbnMgbGUgZmljaGllciBzcOljaWZp6S4gVulyaWZpZXogcXVlIHZvdXMgYXZleiBhc3NleiBkJ2VzcGFjZSBkaXNxdWUgb3UgcXVlIHZvdXMg6nRlcyB0b3Vqb3VycyBjb25uZWN06SBhdSBy6XNlYXUuIgpNQ0lFUlJfU0VRX0RJVl9JTkNPTVBBVElCTEUsIAkiSWwgZXN0IGltcG9zc2libGUgZCd1dGlsaXNlciBsZSBmb3JtYXQgaG9yYWlyZSBwb2ludGV1ciBkZSBwaXN0ZSBldCBsZSBmb3JtYXQgaG9yYWlyZSBTTVBURSBlbiBt6m1lIHRlbXBzLiIKTUNJRVJSX1NFUV9OT01JRElQUkVTRU5ULCAJIkxlIHN5c3TobWUgbidhIHBhcyBkZSBw6XJpcGjpcmlxdWVzIE1JREkgaW5zdGFsbOlzLiBQb3VyIGluc3RhbGxlciB1biBub3V2ZWF1IHBpbG90ZSwgZG91YmxlLWNsaXF1ZXogc3VyIGwnaWP0bmUgQWpvdXQgZGUgcOlyaXBo6XJpcXVlIGRhbnMgbGUgUGFubmVhdSBkZSBjb25maWd1cmF0aW9uLiIKTUNJRVJSX1NFUV9QT1JUX0lOVVNFLCAJCSJMZSBwb3J0IE1JREkgc3DpY2lmaekgZXN0IGTpauAgdXRpbGlz6S4gQXR0ZW5kZXogcXUnaWwgc29pdCBsaWJyZSBldCBlc3NheWV6IOAgbm91dmVhdS4iCk1DSUVSUl9TRVFfUE9SVF9NQVBOT0RFVklDRSwgCSJMYSBjb25maWd1cmF0aW9uIGFjdHVlbGxlIGR1IG1hcHBldXIgTUlESSBmYWl0IHLpZulyZW5jZSDgIHVuIHDpcmlwaOlyaXF1ZSBNSURJIG5vbiBpbnN0YWxs6SBzdXIgdm90cmUgc3lzdOhtZS4gVXRpbGlzZXogbCdvcHRpb24gbWFwcGV1ciBNSURJIGRhbnMgbGUgQ29udHJvbCBQYW5lbCBwb3VyIGNoYW5nZXIgbGEgY29uZmlndXJhdGlvbi4iCk1DSUVSUl9TRVFfUE9SVF9NSVNDRVJST1IsIAkiVW5lIGVycmV1ciBlc3Qgc3VydmVudWUgc3VyIGxlIHBvcnQgc3DpY2lmaekuIgpNQ0lFUlJfU0VRX1BPUlRfTk9ORVhJU1RFTlQsIAkiQ2UgcOlyaXBo6XJpcXVlIG4nZXN0IHBhcyBpbnN0YWxs6S4gUG91ciBpbnN0YWxsZXIgdW4gbm91dmVhdSBwaWxvdGUsIGRvdWJsZS1jbGlxdWV6IHN1ciBsJ2lj9G5lIEFqb3V0IGRlIHDpcmlwaOlyaXF1ZSBkYW5zIGxlIFBhbm5lYXUgZGUgY29uZmlndXJhdGlvbi4iCk1DSUVSUl9TRVFfUE9SVFVOU1BFQ0lGSUVELCAJIkxlIHN5c3TobWUgbidhIHBhcyBzcOljaWZp6SBkZSBwb3J0IE1JREkgcGFyIGTpZmF1dC4iCk1DSUVSUl9TRVFfVElNRVIsIAkJIlRvdXMgbGVzIHRpbWVycyBtdWx0aW3pZGlhIHNvbnQgZW4gY291cnMgZCd1dGlsaXNhdGlvbiBwYXIgZCdhdXRyZXMgYXBwbGljYXRpb25zLiBRdWl0dGV6IHVuZSBkZSBjZXMgYXBwbGljYXRpb25zIGV0IGVzc2F5ZXog4CBub3V2ZWF1LiIKCkVORAo=