LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogRElTQ0xBSU1FUg0KKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCiogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCiogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQoqIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCiogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQoqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQoqIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQoqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCiogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCiogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCiogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQoqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQoqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQoqIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQoqIGZvbGxvd2luZyBsaW5rOg0KKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCioNCiogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogRmlsZSBOYW1lICAgICA6IHJpaWNfaW9kZWZpbmUuaA0KKiBWZXJzaW9uICAgICAgIDogMC4wMQ0KKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQoqIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCiogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCiogICAgICAgICAgICAgICA6IA0KKiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KKiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KKiAgICAgICAgIDogMjcuMDcuMjAxMiAwLjAxCQmOUY1sjpGXv4FGUlpfQTFIXzA1Sl8xMjEwMTBfMTEucGRmDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KI2lmbmRlZiBfX1JJSUNfSU9ERUZJTkVfSF9fDQojZGVmaW5lIF9fUklJQ19JT0RFRklORV9IX18NCg0KI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCg0KdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ1NBUnkgICovDQogICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCiAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgU1ZBMDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTVkEwICAgICAgICovDQogICAgICAgICAgICAgX1VEV09SRCBTVkE6OTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNWQSAgICAgICAgKi8NCiAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgRlN5OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBGU3kgICAgICAgICovDQogICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KfSBSSUlDbklDU0FSeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQoNCnN0cnVjdCBzdF9yaWljX24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBSSUlDICAqLw0KICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0NSMSAgICovDQogICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCiAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEQUk6MTsgICAgICAgICAgICAgLyogICBTREFJICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMSToxOyAgICAgICAgICAgICAvKiAgIFNDTEkgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREFPOjE7ICAgICAgICAgICAgIC8qICAgU0RBTyAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTE86MTsgICAgICAgICAgICAgLyogICBTQ0xPICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU09XUDoxOyAgICAgICAgICAgICAvKiAgIFNPV1AgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTE86MTsgICAgICAgICAgICAgIC8qICAgQ0xPICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElJQ1JTVDoxOyAgICAgICAgICAgLyogICBJSUNSU1QgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUNFOjE7ICAgICAgICAgICAgICAvKiAgIElDRSAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDQ1IxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJJSUNuSUNDUjIgICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUOjE7ICAgICAgICAgICAgICAgLyogICBTVCAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlM6MTsgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUDoxOyAgICAgICAgICAgICAgIC8qICAgU1AgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJTOjE7ICAgICAgICAgICAgICAvKiAgIFRSUyAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNU1Q6MTsgICAgICAgICAgICAgIC8qICAgTVNUICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJCU1k6MTsgICAgICAgICAgICAgLyogICBCQlNZICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0gUklJQ25JQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDTVIxICAgKi8NCiAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkM6MzsgICAgICAgICAgICAgICAvKiAgIEJDICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQ1dQOjE7ICAgICAgICAgICAgIC8qICAgQkNXUCAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENLUzozOyAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTVRXUDoxOyAgICAgICAgICAgICAvKiAgIE1UV1AgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDTVIxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJJSUNuSUNNUjIgICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9TOjE7ICAgICAgICAgICAgIC8qICAgVE1PUyAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0w6MTsgICAgICAgICAgICAgLyogICBUTU9MICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSDoxOyAgICAgICAgICAgICAvKiAgIFRNT0ggICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEREw6MzsgICAgICAgICAgICAgLyogICBTRERMICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRExDUzoxOyAgICAgICAgICAgICAvKiAgIERMQ1MgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDTVIyOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJJSUNuSUNNUjMgICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBORjoyOyAgICAgICAgICAgICAgIC8qICAgTkYgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFDS0JSOjE7ICAgICAgICAgICAgLyogICBBQ0tCUiAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUNLQlQ6MTsgICAgICAgICAgICAvKiAgIEFDS0JUICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQ0tXUDoxOyAgICAgICAgICAgIC8qICAgQUNLV1AgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEUkZTOjE7ICAgICAgICAgICAgLyogICBSRFJGUyAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV0FJVDoxOyAgICAgICAgICAgICAvKiAgIFdBSVQgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTTUJTOjE7ICAgICAgICAgICAgIC8qICAgU01CUyAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICB9IFJJSUNuSUNNUjM7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0ZFUiAgICovDQogICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCiAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0U6MTsgICAgICAgICAgICAgLyogICBUTU9FICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUFMRToxOyAgICAgICAgICAgICAvKiAgIE1BTEUgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUxFOjE7ICAgICAgICAgICAgIC8qICAgTkFMRSAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBTEU6MTsgICAgICAgICAgICAgLyogICBTQUxFICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFDS0U6MTsgICAgICAgICAgICAvKiAgIE5BQ0tFICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBORkU6MTsgICAgICAgICAgICAgIC8qICAgTkZFICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTEU6MTsgICAgICAgICAgICAgLyogICBTQ0xFICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRk1QRToxOyAgICAgICAgICAgICAvKiAgIEZNUEUgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDRkVSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJJSUNuSUNTRVIgICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQVIwRToxOyAgICAgICAgICAgIC8qICAgU0FSMEUgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBUjFFOjE7ICAgICAgICAgICAgLyogICBTQVIxRSAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0FSMkU6MTsgICAgICAgICAgICAvKiAgIFNBUjJFICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHQ0FFOjE7ICAgICAgICAgICAgIC8qICAgR0NBRSAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElERToxOyAgICAgICAgICAgICAvKiAgIERJREUgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhPQUU6MTsgICAgICAgICAgICAgLyogICBIT0FFICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0gUklJQ25JQ1NFUjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDSUVSICAgKi8NCiAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSUU6MTsgICAgICAgICAgICAvKiAgIFRNT0lFICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTElFOjE7ICAgICAgICAgICAgIC8qICAgQUxJRSAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSUU6MTsgICAgICAgICAgICAgLyogICBTVElFICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJRToxOyAgICAgICAgICAgICAvKiAgIFNQSUUgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJRToxOyAgICAgICAgICAgIC8qICAgTkFLSUUgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJRToxOyAgICAgICAgICAgICAgLyogICBSSUUgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJRToxOyAgICAgICAgICAgICAvKiAgIFRFSUUgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSUU6MTsgICAgICAgICAgICAgIC8qICAgVElFICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICB9IFJJSUNuSUNJRVI7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ1NSMSAgICovDQogICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCiAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFBUzA6MTsgICAgICAgICAgICAgLyogICBBQVMwICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUFTMToxOyAgICAgICAgICAgICAvKiAgIEFBUzEgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQVMyOjE7ICAgICAgICAgICAgIC8qICAgQUFTMiAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdDQToxOyAgICAgICAgICAgICAgLyogICBHQ0EgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBESUQ6MTsgICAgICAgICAgICAgIC8qICAgRElEICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSE9BOjE7ICAgICAgICAgICAgICAvKiAgIEhPQSAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDU1IxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJJSUNuSUNTUjIgICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9GOjE7ICAgICAgICAgICAgIC8qICAgVE1PRiAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMOjE7ICAgICAgICAgICAgICAgLyogICBBTCAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RBUlQ6MTsgICAgICAgICAgICAvKiAgIFNUQVJUICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVE9QOjE7ICAgICAgICAgICAgIC8qICAgU1RPUCAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BQ0tGOjE7ICAgICAgICAgICAgLyogICBOQUNLRiAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkRSRjoxOyAgICAgICAgICAgICAvKiAgIFJEUkYgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURU5EOjE7ICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFREUkU6MTsgICAgICAgICAgICAgLyogICBURFJFICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0gUklJQ25JQ1NSMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQoJCVJJSUNuSUNTQVJ5IFJJSUNuSUNTQVIwOwkJCQkvKiBSSUlDbklDU0FSMCAgKi8NCgkJUklJQ25JQ1NBUnkgUklJQ25JQ1NBUjE7CQkJCS8qIFJJSUNuSUNTQVIxICAqLw0KCQlSSUlDbklDU0FSeSBSSUlDbklDU0FSMjsJCQkJLyogUklJQ25JQ1NBUjIgICovDQogICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDQlJMICAgKi8NCiAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJMOjU7ICAgICAgICAgICAgICAvKiAgIEJSTCAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDQlJMOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJJSUNuSUNCUkggICAqLw0KICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQogICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkg6NTsgICAgICAgICAgICAgIC8qICAgQlJIICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICB9IFJJSUNuSUNCUkg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0RSVCAgICovDQogICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCiAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElDRFJTOjg7ICAgICAgICAgICAgLyogICBJQ0RSUyAgICAgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0gUklJQ25JQ0RSVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSSUlDbklDRFJSICAgKi8NCiAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQogICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUNEUlI6ODsgICAgICAgICAgICAvKiAgIElDRFJSICAgICAgKi8NCiAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQogICAgICAgICAgICAgfSBSSUlDbklDRFJSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCn07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KDQojZGVmaW5lIFJJSUNfMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmlpY19uICopMHhGQ0ZFRTAwMCkgICAgLyogUklJQ18wIEFkZHJlc3MgKi8NCiNkZWZpbmUgUklJQ18xICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9yaWljX24gKikweEZDRkVFNDAwKSAgICAvKiBSSUlDXzEgQWRkcmVzcyAqLw0KI2RlZmluZSBSSUlDXzIgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JpaWNfbiAqKTB4RkNGRUU4MDApICAgIC8qIFJJSUNfMiBBZGRyZXNzICovDQojZGVmaW5lIFJJSUNfMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmlpY19uICopMHhGQ0ZFRUMwMCkgICAgLyogUklJQ18zIEFkZHJlc3MgKi8NCg0KDQojZW5kaWYgLyogX19SSUlDX0lPREVGSU5FX0hfXyAqLw0KDQovKiBFbmQgb2YgRmlsZSAqLw0K