PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPmJ6aXAyIGFuZCBsaWJiemlwMiwgdmVyc2lvbiAxLjAuNjwvdGl0bGU+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzUuMiI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+LyogQ29sb3VyczoKIzc0MjQwZiAgZGFyayBicm93biAgICAgIGgxLCBoMiwgaDMsIGg0CiMzMzY2OTkgIG1lZGl1bSBibHVlICAgICBsaW5rcwojMzM5OTk5ICB0dXJxdW9pc2UgICAgICAgbGluayBob3ZlciBjb2xvdXIKIzIwMjAyMCAgYWxtb3N0IGJsYWNrICAgIGdlbmVyYWwgdGV4dAojNzYxNTk2ICBwdXJwbGUgICAgICAgICAgbWQ1c3VtIHRleHQKIzYyNjI2MiAgZGFyayBncmF5ICAgICAgIHByZSBib3JkZXIKI2VlZWVlZSAgdmVyeSBsaWdodCBncmF5IHByZSBiYWNrZ3JvdW5kCiNmMmYyZjkgIHZlcnkgbGlnaHQgYmx1ZSBuYXYgdGFibGUgYmFja2dyb3VuZAojMzM2NmNjICBtZWRpdW0gYmx1ZSAgICAgbmF2IHRhYmxlIGJvcmRlcgoqLwoKYSwgYTpsaW5rLCBhOnZpc2l0ZWQsIGE6YWN0aXZlIHsgY29sb3I6ICMzMzY2OTk7IH0KYTpob3ZlciB7IGNvbG9yOiAjMzM5OTk5OyB9Cgpib2R5IHsgZm9udDogODAlLzEyNiUgc2Fucy1zZXJpZjsgfQpoMSwgaDIsIGgzLCBoNCB7IGNvbG9yOiAjNzQyNDBmOyB9CgpkdCB7IGNvbG9yOiAjMzM2Njk5OyBmb250LXdlaWdodDogYm9sZCB9CmRkIHsgCiBtYXJnaW4tbGVmdDogMS41ZW07IAogcGFkZGluZy1ib3R0b206IDAuOGVtOwp9CgovKiAtLSBydWxlciAtLSAqLwpkaXYuaHJfYmx1ZSB7IAogIGhlaWdodDogIDNweDsgCiAgYmFja2dyb3VuZDojZmZmZmZmIHVybCgiL2ltYWdlcy9ocl9ibHVlLnBuZyIpIHJlcGVhdC14OyB9CmRpdi5ocl9ibHVlIGhyIHsgZGlzcGxheTpub25lOyB9CgovKiByZWxlYXNlIHN0eWxlcyAqLwojcmVsZWFzZSBwIHsgbWFyZ2luLXRvcDogMC40ZW07IH0KI3JlbGVhc2UgLm1kNXN1bSB7IGNvbG9yOiAjNzYxNTk2OyB9CgoKLyogLS0tLS0tIHN0eWxlcyBmb3IgZG9jc3xtYW51YWxzfGhvd3RvIC0tLS0tLSAqLwovKiAtLSBsaXN0cyAtLSAqLwp1bCAgeyAKIG1hcmdpbjogICAgIDBweCA0cHggMTZweCAxNnB4OwogcGFkZGluZzogICAgMHB4OwogbGlzdC1zdHlsZTogdXJsKCIvaW1hZ2VzL2xpLWJsdWUucG5nIik7IAp9CnVsIGxpIHsgCiBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CnVsIHVsCXsgCiBsaXN0LXN0eWxlLXR5cGU6ICBub25lOyAKIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7IAogbWFyZ2luLWxlZnQ6ICAgICAgMHB4OyAKfQoKLyogaGVhZGVyIC8gZm9vdGVyIG5hdiB0YWJsZXMgKi8KdGFibGUubmF2IHsKIGJvcmRlcjogICAgIHNvbGlkIDFweCAjMzM2NmNjOwogYmFja2dyb3VuZDogI2YyZjJmOTsKIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjk7CiBtYXJnaW4tYm90dG9tOiAwLjVlbTsKfQovKiBkb24ndCBoYXZlIHVuZGVybGluZWQgbGlua3MgaW4gY2h1bmtlZCBuYXYgbWVudXMgKi8KdGFibGUubmF2IGEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KdGFibGUubmF2IGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQp0YWJsZS5uYXYgdGQgeyBmb250LXNpemU6IDg1JTsgfQoKY29kZSwgdHQsIHByZSB7IGZvbnQtc2l6ZTogMTIwJTsgfQpjb2RlLCB0dCB7IGNvbG9yOiAjNzYxNTk2OyB9CgpkaXYubGl0ZXJhbGxheW91dCwgcHJlLnByb2dyYW1saXN0aW5nLCBwcmUuc2NyZWVuIHsKIGNvbG9yOiAgICAgICMwMDAwMDA7CiBwYWRkaW5nOiAgICAwLjVlbTsKIGJhY2tncm91bmQ6ICNlZWVlZWU7CiBib3JkZXI6ICAgICAxcHggc29saWQgIzYyNjI2MjsKIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiBtYXJnaW46IDRweCAwcHggNHB4IDBweDsgCn0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+PGRpdiBsYW5nPSJlbiIgY2xhc3M9ImJvb2siIHRpdGxlPSJiemlwMiBhbmQgbGliYnppcDIsIHZlcnNpb24gMS4wLjYiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgo8ZGl2Pgo8ZGl2PjxoMSBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1c2VybWFuIj48L2E+YnppcDIgYW5kIGxpYmJ6aXAyLCB2ZXJzaW9uIDEuMC42PC9oMT48L2Rpdj4KPGRpdj48aDIgY2xhc3M9InN1YnRpdGxlIj5BIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yIGRhdGEgY29tcHJlc3Npb248L2gyPjwvZGl2Pgo8ZGl2PjxkaXYgY2xhc3M9ImF1dGhvcmdyb3VwIj48ZGl2IGNsYXNzPSJhdXRob3IiPgo8aDMgY2xhc3M9ImF1dGhvciI+CjxzcGFuIGNsYXNzPSJmaXJzdG5hbWUiPkp1bGlhbjwvc3Bhbj4gPHNwYW4gY2xhc3M9InN1cm5hbWUiPlNld2FyZDwvc3Bhbj4KPC9oMz4KPGRpdiBjbGFzcz0iYWZmaWxpYXRpb24iPjxzcGFuIGNsYXNzPSJvcmduYW1lIj5odHRwOi8vd3d3LmJ6aXAub3JnPGJyPjwvc3Bhbj48L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+CjxkaXY+PHAgY2xhc3M9InJlbGVhc2VpbmZvIj5WZXJzaW9uIDEuMC42IG9mIDYgU2VwdGVtYmVyIDIwMTA8L3A+PC9kaXY+CjxkaXY+PHAgY2xhc3M9ImNvcHlyaWdodCI+Q29weXJpZ2h0IKkgMTk5Ni0yMDEwIEp1bGlhbiBTZXdhcmQ8L3A+PC9kaXY+CjxkaXY+PGRpdiBjbGFzcz0ibGVnYWxub3RpY2UiIHRpdGxlPSJMZWdhbCBOb3RpY2UiPgo8YSBuYW1lPSJpZDUzNzE4NSI+PC9hPjxwPlRoaXMgcHJvZ3JhbSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4sIHRoZQogIGFzc29jaWF0ZWQgbGlicmFyeSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiwgYW5kCiAgYWxsIGRvY3VtZW50YXRpb24sIGFyZSBjb3B5cmlnaHQgqSAxOTk2LTIwMTAgSnVsaWFuIFNld2FyZC4KICBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KPHA+UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aAogIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlCiAgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDo8L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHR5cGU9ImJ1bGxldCI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUKICAgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQogICBmb2xsb3dpbmcgZGlzY2xhaW1lci48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlCiAgIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsCiAgIHNvZnR3YXJlLiAgSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4KICAgYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQogICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5BbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkCiAgIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwKICAgc29mdHdhcmUuPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvCiAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0CiAgIHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi48L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SICJBUyBJUyIgQU5EIEFOWQogIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQogIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAogIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAogIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAogIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKICBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORwogIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCiAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLjwvcD4KPHA+UEFURU5UUzogVG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLAogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gYW5kCiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiBkbyBub3QgdXNlIGFueSBwYXRlbnRlZAogYWxnb3JpdGhtcy4gIEhvd2V2ZXIsIEkgZG8gbm90IGhhdmUgdGhlIHJlc291cmNlcyB0byBjYXJyeQogb3V0IGEgcGF0ZW50IHNlYXJjaC4gIFRoZXJlZm9yZSBJIGNhbm5vdCBnaXZlIGFueSBndWFyYW50ZWUgb2YKIHRoZSBhYm92ZSBzdGF0ZW1lbnQuCiA8L3A+CjwvZGl2PjwvZGl2Pgo8L2Rpdj4KPGhyPgo8L2Rpdj4KPGRpdiBjbGFzcz0idG9jIj4KPHA+PGI+VGFibGUgb2YgQ29udGVudHM8L2I+PC9wPgo8ZGw+CjxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iI2ludHJvIj4xLiBJbnRyb2R1Y3Rpb248L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iI3VzaW5nIj4yLiBIb3cgdG8gdXNlIGJ6aXAyPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbmFtZSI+Mi4xLiBOQU1FPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjc3lub3BzaXMiPjIuMi4gU1lOT1BTSVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNkZXNjcmlwdGlvbiI+Mi4zLiBERVNDUklQVElPTjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI29wdGlvbnMiPjIuNC4gT1BUSU9OUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50Ij4yLjUuIE1FTU9SWSBNQU5BR0VNRU5UPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcmVjb3ZlcmluZyI+Mi42LiBSRUNPVkVSSU5HIERBVEEgRlJPTSBEQU1BR0VEIEZJTEVTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcGVyZm9ybWFuY2UiPjIuNy4gUEVSRk9STUFOQ0UgTk9URVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNjYXZlYXRzIj4yLjguIENBVkVBVFM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNhdXRob3IiPjIuOS4gQVVUSE9SPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iI2xpYnByb2ciPjMuIApQcm9ncmFtbWluZyB3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+CjwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3RvcC1sZXZlbCI+My4xLiBUb3AtbGV2ZWwgc3RydWN0dXJlPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjbGwtc3VtbWFyeSI+My4xLjEuIExvdy1sZXZlbCBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjaGwtc3VtbWFyeSI+My4xLjIuIEhpZ2gtbGV2ZWwgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3V0aWwtZm5zLXN1bW1hcnkiPjMuMS4zLiBVdGlsaXR5IGZ1bmN0aW9ucyBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNlcnItaGFuZGxpbmciPjMuMi4gRXJyb3IgaGFuZGxpbmc8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNsb3ctbGV2ZWwiPjMuMy4gTG93LWxldmVsIGludGVyZmFjZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Y29tcHJlc3MtaW5pdCI+My4zLjEuIEJaMl9iekNvbXByZXNzSW5pdDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Q29tcHJlc3MiPjMuMy4yLiBCWjJfYnpDb21wcmVzczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6Q29tcHJlc3MtZW5kIj4zLjMuMy4gQloyX2J6Q29tcHJlc3NFbmQ8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MtaW5pdCI+My4zLjQuIEJaMl9iekRlY29tcHJlc3NJbml0PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzIj4zLjMuNS4gQloyX2J6RGVjb21wcmVzczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcy1lbmQiPjMuMy42LiBCWjJfYnpEZWNvbXByZXNzRW5kPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNobC1pbnRlcmZhY2UiPjMuNC4gSGlnaC1sZXZlbCBpbnRlcmZhY2U8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWRvcGVuIj4zLjQuMS4gQloyX2J6UmVhZE9wZW48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWQiPjMuNC4yLiBCWjJfYnpSZWFkPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkZ2V0dW51c2VkIj4zLjQuMy4gQloyX2J6UmVhZEdldFVudXNlZDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZGNsb3NlIj4zLjQuNC4gQloyX2J6UmVhZENsb3NlPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZW9wZW4iPjMuNC41LiBCWjJfYnpXcml0ZU9wZW48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiendyaXRlIj4zLjQuNi4gQloyX2J6V3JpdGU8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiendyaXRlY2xvc2UiPjMuNC43LiBCWjJfYnpXcml0ZUNsb3NlPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjZW1iZWQiPjMuNC44LiBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3N0ZC1yZHdyIj4zLjQuOS4gU3RhbmRhcmQgZmlsZS1yZWFkaW5nL3dyaXRpbmcgY29kZTwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdXRpbC1mbnMiPjMuNS4gVXRpbGl0eSBmdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiemJ1ZmZ0b2J1ZmZjb21wcmVzcyI+My41LjEuIEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmRlY29tcHJlc3MiPjMuNS4yLiBCWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjemxpYi1jb21wYXQiPjMuNi4gemxpYiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N0ZGlvLWZyZWUiPjMuNy4gVXNpbmcgdGhlIGxpYnJhcnkgaW4gYSBzdGRpby1mcmVlIGVudmlyb25tZW50PC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjc3RkaW8tYnllIj4zLjcuMS4gR2V0dGluZyByaWQgb2Ygc3RkaW88L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNjcml0aWNhbC1lcnJvciI+My43LjIuIENyaXRpY2FsIGVycm9yIGhhbmRsaW5nPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN3aW4tZGxsIj4zLjguIE1ha2luZyBhIFdpbmRvd3MgRExMPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iI21pc2MiPjQuIE1pc2NlbGxhbmVhPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbGltaXRzIj40LjEuIExpbWl0YXRpb25zIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcG9ydC1pc3N1ZXMiPjQuMi4gUG9ydGFiaWxpdHkgaXNzdWVzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjYnVncyI+NC4zLiBSZXBvcnRpbmcgYnVnczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BhY2thZ2UiPjQuNC4gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcmVhZGluZyI+NC41LiBGdXJ0aGVyIFJlYWRpbmc8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPC9kbD4KPC9kaXY+CjxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSIxLqBJbnRyb2R1Y3Rpb24iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iaW50cm8iPjwvYT4xLqBJbnRyb2R1Y3Rpb248L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzCnVzaW5nIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2stc29ydGluZyB0ZXh0IGNvbXByZXNzaW9uCmFsZ29yaXRobSwgYW5kIEh1ZmZtYW4gY29kaW5nLiAgQ29tcHJlc3Npb24gaXMgZ2VuZXJhbGx5CmNvbnNpZGVyYWJseSBiZXR0ZXIgdGhhbiB0aGF0IGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsCkxaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywgYW5kIGFwcHJvYWNoZXMgdGhlIHBlcmZvcm1hbmNlIG9mCnRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYnVpbHQgb24gdG9wIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+LCBhIGZsZXhpYmxlIGxpYnJhcnkgZm9yCmhhbmRsaW5nIGNvbXByZXNzZWQgZGF0YSBpbiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0LiAgVGhpcyBtYW51YWwKZGVzY3JpYmVzIGJvdGggaG93IHRvIHVzZSB0aGUgcHJvZ3JhbSBhbmQgaG93IHRvIHdvcmsgd2l0aCB0aGUKbGlicmFyeSBpbnRlcmZhY2UuICBNb3N0IG9mIHRoZSBtYW51YWwgaXMgZGV2b3RlZCB0byB0aGlzCmxpYnJhcnksIG5vdCB0aGUgcHJvZ3JhbSwgd2hpY2ggaXMgZ29vZCBuZXdzIGlmIHlvdXIgaW50ZXJlc3QgaXMKb25seSBpbiB0aGUgcHJvZ3JhbS48L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHR5cGU9ImJ1bGxldCI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxhIGNsYXNzPSJ4cmVmIiBocmVmPSIjdXNpbmciIHRpdGxlPSIyLqBIb3cgdG8gdXNlIGJ6aXAyIj5Ib3cgdG8gdXNlIGJ6aXAyPC9hPiBkZXNjcmliZXMgaG93IHRvIHVzZQogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT47IHRoaXMgaXMgdGhlIG9ubHkgcGFydAogeW91IG5lZWQgdG8gcmVhZCBpZiB5b3UganVzdCB3YW50IHRvIGtub3cgaG93IHRvIG9wZXJhdGUgdGhlCiBwcm9ncmFtLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48YSBjbGFzcz0ieHJlZiIgaHJlZj0iI2xpYnByb2ciIHRpdGxlPSIzLqAgUHJvZ3JhbW1pbmcgd2l0aCBsaWJiemlwMiI+UHJvZ3JhbW1pbmcgd2l0aCBsaWJiemlwMjwvYT4gZGVzY3JpYmVzIHRoZQogcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyBpbiBkZXRhaWwsIGFuZDwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48YSBjbGFzcz0ieHJlZiIgaHJlZj0iI21pc2MiIHRpdGxlPSI0LqBNaXNjZWxsYW5lYSI+TWlzY2VsbGFuZWE8L2E+IHJlY29yZHMgc29tZQogbWlzY2VsbGFuZW91cyBub3RlcyB3aGljaCBJIHRob3VnaHQgb3VnaHQgdG8gYmUgcmVjb3JkZWQKIHNvbWV3aGVyZS48L3A+PC9saT4KPC91bD48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImNoYXB0ZXIiIHRpdGxlPSIyLqBIb3cgdG8gdXNlIGJ6aXAyIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InVzaW5nIj48L2E+Mi6gSG93IHRvIHVzZSBiemlwMjwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbmFtZSI+Mi4xLiBOQU1FPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjc3lub3BzaXMiPjIuMi4gU1lOT1BTSVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNkZXNjcmlwdGlvbiI+Mi4zLiBERVNDUklQVElPTjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI29wdGlvbnMiPjIuNC4gT1BUSU9OUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50Ij4yLjUuIE1FTU9SWSBNQU5BR0VNRU5UPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcmVjb3ZlcmluZyI+Mi42LiBSRUNPVkVSSU5HIERBVEEgRlJPTSBEQU1BR0VEIEZJTEVTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcGVyZm9ybWFuY2UiPjIuNy4gUEVSRk9STUFOQ0UgTk9URVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNjYXZlYXRzIj4yLjguIENBVkVBVFM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNhdXRob3IiPjIuOS4gQVVUSE9SPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPgo8L2Rpdj4KPHA+VGhpcyBjaGFwdGVyIGNvbnRhaW5zIGEgY29weSBvZiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gbWFuIHBhZ2UsIGFuZCBub3RoaW5nCmVsc2UuPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuMS6gTkFNRSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9Im5hbWUiPjwvYT4yLjEuoE5BTUU8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJidWxsZXQiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IC0gYSBibG9jay1zb3J0aW5nIGZpbGUKICBjb21wcmVzc29yLCB2MS4wLjY8L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gLQogICBkZWNvbXByZXNzZXMgZmlsZXMgdG8gc3Rkb3V0PC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiAtCiAgIHJlY292ZXJzIGRhdGEgZnJvbSBkYW1hZ2VkIGJ6aXAyIGZpbGVzPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuMi6gU1lOT1BTSVMiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJzeW5vcHNpcyI+PC9hPjIuMi6gU1lOT1BTSVM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJidWxsZXQiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBbCiAgLWNkZmtxc3R2elZMMTIzNDU2Nzg5IF0gWyBmaWxlbmFtZXMgLi4uICBdPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gWwogIC1ma3ZzVkwgXSBbIGZpbGVuYW1lcyAuLi4gIF08L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gWyAtcyBdIFsKICBmaWxlbmFtZXMgLi4uICBdPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPgogIGZpbGVuYW1lPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuMy6gREVTQ1JJUFRJT04iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJkZXNjcmlwdGlvbiI+PC9hPjIuMy6gREVTQ1JJUFRJT048L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzCnVzaW5nIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2sgc29ydGluZyB0ZXh0IGNvbXByZXNzaW9uCmFsZ29yaXRobSwgYW5kIEh1ZmZtYW4gY29kaW5nLiAgQ29tcHJlc3Npb24gaXMgZ2VuZXJhbGx5CmNvbnNpZGVyYWJseSBiZXR0ZXIgdGhhbiB0aGF0IGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsCkxaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywgYW5kIGFwcHJvYWNoZXMgdGhlIHBlcmZvcm1hbmNlIG9mCnRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLjwvcD4KPHA+VGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGFyZSBkZWxpYmVyYXRlbHkgdmVyeSBzaW1pbGFyIHRvCnRob3NlIG9mIEdOVSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXA8L2NvZGU+LCBidXQgdGhleSBhcmUKbm90IGlkZW50aWNhbC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGV4cGVjdHMgYSBsaXN0IG9mCmZpbGUgbmFtZXMgdG8gYWNjb21wYW55IHRoZSBjb21tYW5kLWxpbmUgZmxhZ3MuICBFYWNoIGZpbGUgaXMKcmVwbGFjZWQgYnkgYSBjb21wcmVzc2VkIHZlcnNpb24gb2YgaXRzZWxmLCB3aXRoIHRoZSBuYW1lCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3JpZ2luYWxfbmFtZS5iejI8L2NvZGU+LiAgRWFjaApjb21wcmVzc2VkIGZpbGUgaGFzIHRoZSBzYW1lIG1vZGlmaWNhdGlvbiBkYXRlLCBwZXJtaXNzaW9ucywgYW5kLAp3aGVuIHBvc3NpYmxlLCBvd25lcnNoaXAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luYWwsIHNvIHRoYXQKdGhlc2UgcHJvcGVydGllcyBjYW4gYmUgY29ycmVjdGx5IHJlc3RvcmVkIGF0IGRlY29tcHJlc3Npb24gdGltZS4KRmlsZSBuYW1lIGhhbmRsaW5nIGlzIG5haXZlIGluIHRoZSBzZW5zZSB0aGF0IHRoZXJlIGlzIG5vCm1lY2hhbmlzbSBmb3IgcHJlc2VydmluZyBvcmlnaW5hbCBmaWxlIG5hbWVzLCBwZXJtaXNzaW9ucywKb3duZXJzaGlwcyBvciBkYXRlcyBpbiBmaWxlc3lzdGVtcyB3aGljaCBsYWNrIHRoZXNlIGNvbmNlcHRzLCBvcgpoYXZlIHNlcmlvdXMgZmlsZSBuYW1lIGxlbmd0aCByZXN0cmljdGlvbnMsIHN1Y2ggYXMKTVMtRE9TLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gd2lsbCBieSBkZWZhdWx0IG5vdApvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuICBJZiB5b3Ugd2FudCB0aGlzIHRvIGhhcHBlbiwgc3BlY2lmeQp0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZjwvY29kZT4gZmxhZy48L3A+CjxwPklmIG5vIGZpbGUgbmFtZXMgYXJlIHNwZWNpZmllZCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gY29tcHJlc3NlcyBmcm9tIHN0YW5kYXJkCmlucHV0IHRvIHN0YW5kYXJkIG91dHB1dC4gIEluIHRoaXMgY2FzZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCBkZWNsaW5lIHRvIHdyaXRlCmNvbXByZXNzZWQgb3V0cHV0IHRvIGEgdGVybWluYWwsIGFzIHRoaXMgd291bGQgYmUgZW50aXJlbHkKaW5jb21wcmVoZW5zaWJsZSBhbmQgdGhlcmVmb3JlIHBvaW50bGVzcy48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gKG9yCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLWQ8L2NvZGU+KSBkZWNvbXByZXNzZXMgYWxsCnNwZWNpZmllZCBmaWxlcy4gIEZpbGVzIHdoaWNoIHdlcmUgbm90IGNyZWF0ZWQgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCBiZSBkZXRlY3RlZCBhbmQKaWdub3JlZCwgYW5kIGEgd2FybmluZyBpc3N1ZWQuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGF0dGVtcHRzIHRvIGd1ZXNzIHRoZQpmaWxlbmFtZSBmb3IgdGhlIGRlY29tcHJlc3NlZCBmaWxlIGZyb20gdGhhdCBvZiB0aGUgY29tcHJlc3NlZApmaWxlIGFzIGZvbGxvd3M6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJidWxsZXQiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLmJ6MiA8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWU8L2NvZGU+PC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUuYnogPC9jb2RlPgogIGJlY29tZXMKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lPC9jb2RlPjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRiejI8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUudGFyPC9jb2RlPjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRieiA8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUudGFyPC9jb2RlPjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmFueW90aGVybmFtZSA8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YW55b3RoZXJuYW1lLm91dDwvY29kZT48L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+SWYgdGhlIGZpbGUgZG9lcyBub3QgZW5kIGluIG9uZSBvZiB0aGUgcmVjb2duaXNlZCBlbmRpbmdzLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LnRiejI8L2NvZGU+IG9yCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LnRiejwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGNvbXBsYWlucyB0aGF0IGl0IGNhbm5vdApndWVzcyB0aGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgZmlsZSwgYW5kIHVzZXMgdGhlIG9yaWdpbmFsIG5hbWUKd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5vdXQ8L2NvZGU+IGFwcGVuZGVkLjwvcD4KPHA+QXMgd2l0aCBjb21wcmVzc2lvbiwgc3VwcGx5aW5nIG5vIGZpbGVuYW1lcyBjYXVzZXMKZGVjb21wcmVzc2lvbiBmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHN0YW5kYXJkIG91dHB1dC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gd2lsbCBjb3JyZWN0bHkKZGVjb21wcmVzcyBhIGZpbGUgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIG9yIG1vcmUKY29tcHJlc3NlZCBmaWxlcy4gIFRoZSByZXN1bHQgaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlCmNvcnJlc3BvbmRpbmcgdW5jb21wcmVzc2VkIGZpbGVzLiAgSW50ZWdyaXR5IHRlc3RpbmcKKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXQ8L2NvZGU+KSBvZiBjb25jYXRlbmF0ZWQgY29tcHJlc3NlZApmaWxlcyBpcyBhbHNvIHN1cHBvcnRlZC48L3A+CjxwPllvdSBjYW4gYWxzbyBjb21wcmVzcyBvciBkZWNvbXByZXNzIGZpbGVzIHRvIHRoZSBzdGFuZGFyZApvdXRwdXQgYnkgZ2l2aW5nIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1jPC9jb2RlPiBmbGFnLgpNdWx0aXBsZSBmaWxlcyBtYXkgYmUgY29tcHJlc3NlZCBhbmQgZGVjb21wcmVzc2VkIGxpa2UgdGhpcy4gIFRoZQpyZXN1bHRpbmcgb3V0cHV0cyBhcmUgZmVkIHNlcXVlbnRpYWxseSB0byBzdGRvdXQuICBDb21wcmVzc2lvbiBvZgptdWx0aXBsZSBmaWxlcyBpbiB0aGlzIG1hbm5lciBnZW5lcmF0ZXMgYSBzdHJlYW0gY29udGFpbmluZwptdWx0aXBsZSBjb21wcmVzc2VkIGZpbGUgcmVwcmVzZW50YXRpb25zLiAgU3VjaCBhIHN0cmVhbSBjYW4gYmUKZGVjb21wcmVzc2VkIGNvcnJlY3RseSBvbmx5IGJ5Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHZlcnNpb24gMC45LjAgb3IgbGF0ZXIuCkVhcmxpZXIgdmVyc2lvbnMgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbApzdG9wIGFmdGVyIGRlY29tcHJlc3NpbmcgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIHN0cmVhbS48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpjYXQ8L2NvZGU+IChvcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC1kYzwvY29kZT4pIGRlY29tcHJlc3NlcyBhbGwKc3BlY2lmaWVkIGZpbGVzIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIHJlYWQgYXJndW1lbnRzCmZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaSVAyPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWklQPC9jb2RlPiwgaW4gdGhhdCBvcmRlciwgYW5kIHdpbGwKcHJvY2VzcyB0aGVtIGJlZm9yZSBhbnkgYXJndW1lbnRzIHJlYWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgpUaGlzIGdpdmVzIGEgY29udmVuaWVudCB3YXkgdG8gc3VwcGx5IGRlZmF1bHQgYXJndW1lbnRzLjwvcD4KPHA+Q29tcHJlc3Npb24gaXMgYWx3YXlzIHBlcmZvcm1lZCwgZXZlbiBpZiB0aGUgY29tcHJlc3NlZApmaWxlIGlzIHNsaWdodGx5IGxhcmdlciB0aGFuIHRoZSBvcmlnaW5hbC4gIEZpbGVzIG9mIGxlc3MgdGhhbgphYm91dCBvbmUgaHVuZHJlZCBieXRlcyB0ZW5kIHRvIGdldCBsYXJnZXIsIHNpbmNlIHRoZSBjb21wcmVzc2lvbgptZWNoYW5pc20gaGFzIGEgY29uc3RhbnQgb3ZlcmhlYWQgaW4gdGhlIHJlZ2lvbiBvZiA1MCBieXRlcy4KUmFuZG9tIGRhdGEgKGluY2x1ZGluZyB0aGUgb3V0cHV0IG9mIG1vc3QgZmlsZSBjb21wcmVzc29ycykgaXMKY29kZWQgYXQgYWJvdXQgOC4wNSBiaXRzIHBlciBieXRlLCBnaXZpbmcgYW4gZXhwYW5zaW9uIG9mIGFyb3VuZAowLjUlLjwvcD4KPHA+QXMgYSBzZWxmLWNoZWNrIGZvciB5b3VyIHByb3RlY3Rpb24sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHVzZXMgMzItYml0IENSQ3MgdG8gbWFrZQpzdXJlIHRoYXQgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIGEgZmlsZSBpcyBpZGVudGljYWwgdG8gdGhlCm9yaWdpbmFsLiAgVGhpcyBndWFyZHMgYWdhaW5zdCBjb3JydXB0aW9uIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEsCmFuZCBhZ2FpbnN0IHVuZGV0ZWN0ZWQgYnVncyBpbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiAoaG9wZWZ1bGx5IHZlcnkgdW5saWtlbHkpLgpUaGUgY2hhbmNlcyBvZiBkYXRhIGNvcnJ1cHRpb24gZ29pbmcgdW5kZXRlY3RlZCBpcyBtaWNyb3Njb3BpYywKYWJvdXQgb25lIGNoYW5jZSBpbiBmb3VyIGJpbGxpb24gZm9yIGVhY2ggZmlsZSBwcm9jZXNzZWQuICBCZQphd2FyZSwgdGhvdWdoLCB0aGF0IHRoZSBjaGVjayBvY2N1cnMgdXBvbiBkZWNvbXByZXNzaW9uLCBzbyBpdApjYW4gb25seSB0ZWxsIHlvdSB0aGF0IHNvbWV0aGluZyBpcyB3cm9uZy4gIEl0IGNhbid0IGhlbHAgeW91CnJlY292ZXIgdGhlIG9yaWdpbmFsIHVuY29tcHJlc3NlZCBkYXRhLiAgWW91IGNhbiB1c2UKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHRvIHRyeSB0byByZWNvdmVyCmRhdGEgZnJvbSBkYW1hZ2VkIGZpbGVzLjwvcD4KPHA+UmV0dXJuIHZhbHVlczogMCBmb3IgYSBub3JtYWwgZXhpdCwgMSBmb3IgZW52aXJvbm1lbnRhbApwcm9ibGVtcyAoZmlsZSBub3QgZm91bmQsIGludmFsaWQgZmxhZ3MsIEkvTyBlcnJvcnMsIGV0Yy4pLCAyCnRvIGluZGljYXRlIGEgY29ycnVwdCBjb21wcmVzc2VkIGZpbGUsIDMgZm9yIGFuIGludGVybmFsCmNvbnNpc3RlbmN5IGVycm9yIChlZywgYnVnKSB3aGljaCBjYXVzZWQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdG8gcGFuaWMuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLjQuoE9QVElPTlMiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJvcHRpb25zIj48L2E+Mi40LqBPUFRJT05TPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48ZGw+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tYyAtLXN0ZG91dDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkNvbXByZXNzIG9yIGRlY29tcHJlc3MgdG8gc3RhbmRhcmQKICBvdXRwdXQuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZCAtLWRlY29tcHJlc3M8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5Gb3JjZSBkZWNvbXByZXNzaW9uLgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gYW5kCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gYXJlIHJlYWxseSB0aGUgc2FtZQogIHByb2dyYW0sIGFuZCB0aGUgZGVjaXNpb24gYWJvdXQgd2hhdCBhY3Rpb25zIHRvIHRha2UgaXMgZG9uZSBvbgogIHRoZSBiYXNpcyBvZiB3aGljaCBuYW1lIGlzIHVzZWQuICBUaGlzIGZsYWcgb3ZlcnJpZGVzIHRoYXQKICBtZWNoYW5pc20sIGFuZCBmb3JjZXMgYnppcDIgdG8gZGVjb21wcmVzcy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi16IC0tY29tcHJlc3M8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5UaGUgY29tcGxlbWVudCB0bwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWQ8L2NvZGU+OiBmb3JjZXMgY29tcHJlc3Npb24sCiAgcmVnYXJkbGVzcyBvZiB0aGUgaW52b2thdGlvbiBuYW1lLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXQgLS10ZXN0PC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+Q2hlY2sgaW50ZWdyaXR5IG9mIHRoZSBzcGVjaWZpZWQgZmlsZShzKSwgYnV0CiAgZG9uJ3QgZGVjb21wcmVzcyB0aGVtLiAgVGhpcyByZWFsbHkgcGVyZm9ybXMgYSB0cmlhbAogIGRlY29tcHJlc3Npb24gYW5kIHRocm93cyBhd2F5IHRoZSByZXN1bHQuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZiAtLWZvcmNlPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+CjxwPkZvcmNlIG92ZXJ3cml0ZSBvZiBvdXRwdXQgZmlsZXMuICBOb3JtYWxseSwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIG5vdCBvdmVyd3JpdGUKICBleGlzdGluZyBvdXRwdXQgZmlsZXMuICBBbHNvIGZvcmNlcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRvIGJyZWFrIGhhcmQgbGlua3MgdG8KICBmaWxlcywgd2hpY2ggaXQgb3RoZXJ3aXNlIHdvdWxkbid0IGRvLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gbm9ybWFsbHkgZGVjbGluZXMKICB0byBkZWNvbXByZXNzIGZpbGVzIHdoaWNoIGRvbid0IGhhdmUgdGhlIGNvcnJlY3QgbWFnaWMgaGVhZGVyCiAgYnl0ZXMuIElmIGZvcmNlZCAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZjwvY29kZT4pLAogIGhvd2V2ZXIsIGl0IHdpbGwgcGFzcyBzdWNoIGZpbGVzIHRocm91Z2ggdW5tb2RpZmllZC4gVGhpcyBpcwogIGhvdyBHTlUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nemlwPC9jb2RlPiBiZWhhdmVzLjwvcD4KPC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1rIC0ta2VlcDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPktlZXAgKGRvbid0IGRlbGV0ZSkgaW5wdXQgZmlsZXMgZHVyaW5nCiAgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbi48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zIC0tc21hbGw8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD4KPHA+UmVkdWNlIG1lbW9yeSB1c2FnZSwgZm9yIGNvbXByZXNzaW9uLAogIGRlY29tcHJlc3Npb24gYW5kIHRlc3RpbmcuICBGaWxlcyBhcmUgZGVjb21wcmVzc2VkIGFuZCB0ZXN0ZWQKICB1c2luZyBhIG1vZGlmaWVkIGFsZ29yaXRobSB3aGljaCBvbmx5IHJlcXVpcmVzIDIuNSBieXRlcyBwZXIKICBibG9jayBieXRlLiAgVGhpcyBtZWFucyBhbnkgZmlsZSBjYW4gYmUgZGVjb21wcmVzc2VkIGluIDIzMDBrCiAgb2YgbWVtb3J5LCBhbGJlaXQgYXQgYWJvdXQgaGFsZiB0aGUgbm9ybWFsIHNwZWVkLjwvcD4KPHA+RHVyaW5nIGNvbXByZXNzaW9uLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zPC9jb2RlPgogIHNlbGVjdHMgYSBibG9jayBzaXplIG9mIDIwMGssIHdoaWNoIGxpbWl0cyBtZW1vcnkgdXNlIHRvIGFyb3VuZAogIHRoZSBzYW1lIGZpZ3VyZSwgYXQgdGhlIGV4cGVuc2Ugb2YgeW91ciBjb21wcmVzc2lvbiByYXRpby4gIEluCiAgc2hvcnQsIGlmIHlvdXIgbWFjaGluZSBpcyBsb3cgb24gbWVtb3J5ICg4IG1lZ2FieXRlcyBvciBsZXNzKSwKICB1c2UgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tczwvY29kZT4gZm9yIGV2ZXJ5dGhpbmcuICBTZWUKICA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50IiB0aXRsZT0iMi41LqBNRU1PUlkgTUFOQUdFTUVOVCI+TUVNT1JZIE1BTkFHRU1FTlQ8L2E+IGJlbG93LjwvcD4KPC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1xIC0tcXVpZXQ8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5TdXBwcmVzcyBub24tZXNzZW50aWFsIHdhcm5pbmcgbWVzc2FnZXMuCiAgTWVzc2FnZXMgcGVydGFpbmluZyB0byBJL08gZXJyb3JzIGFuZCBvdGhlciBjcml0aWNhbCBldmVudHMKICB3aWxsIG5vdCBiZSBzdXBwcmVzc2VkLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXYgLS12ZXJib3NlPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+VmVyYm9zZSBtb2RlIC0tIHNob3cgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGZvcgogIGVhY2ggZmlsZSBwcm9jZXNzZWQuICBGdXJ0aGVyCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdjwvY29kZT4ncyBpbmNyZWFzZSB0aGUgdmVyYm9zaXR5CiAgbGV2ZWwsIHNwZXdpbmcgb3V0IGxvdHMgb2YgaW5mb3JtYXRpb24gd2hpY2ggaXMgcHJpbWFyaWx5IG9mCiAgaW50ZXJlc3QgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tTCAtLWxpY2Vuc2UgLVYgLS12ZXJzaW9uPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+RGlzcGxheSB0aGUgc29mdHdhcmUgdmVyc2lvbiwgbGljZW5zZSB0ZXJtcyBhbmQKICBjb25kaXRpb25zLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTE8L2NvZGU+IChvcgogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWZhc3Q8L2NvZGU+KSB0bwogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gKG9yCiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1iZXN0PC9jb2RlPik8L3NwYW4+PC9kdD4KPGRkPjxwPlNldCB0aGUgYmxvY2sgc2l6ZSB0byAxMDAgaywgMjAwIGsgLi4uICA5MDAgawogIHdoZW4gY29tcHJlc3NpbmcuICBIYXMgbm8gZWZmZWN0IHdoZW4gZGVjb21wcmVzc2luZy4gIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50IiB0aXRsZT0iMi41LqBNRU1PUlkgTUFOQUdFTUVOVCI+TUVNT1JZIE1BTkFHRU1FTlQ8L2E+IGJlbG93LiAgVGhlCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWZhc3Q8L2NvZGU+IGFuZAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1iZXN0PC9jb2RlPiBhbGlhc2VzIGFyZSBwcmltYXJpbHkKICBmb3IgR05VIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z3ppcDwvY29kZT4gY29tcGF0aWJpbGl0eS4KICBJbiBwYXJ0aWN1bGFyLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tZmFzdDwvY29kZT4gZG9lc24ndAogIG1ha2UgdGhpbmdzIHNpZ25pZmljYW50bHkgZmFzdGVyLiAgQW5kCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWJlc3Q8L2NvZGU+IG1lcmVseSBzZWxlY3RzIHRoZQogIGRlZmF1bHQgYmVoYXZpb3VyLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS08L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5UcmVhdHMgYWxsIHN1YnNlcXVlbnQgYXJndW1lbnRzIGFzIGZpbGUgbmFtZXMsCiAgZXZlbiBpZiB0aGV5IHN0YXJ0IHdpdGggYSBkYXNoLiAgVGhpcyBpcyBzbyB5b3UgY2FuIGhhbmRsZQogIGZpbGVzIHdpdGggbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBkYXNoLCBmb3IgZXhhbXBsZToKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC0tCiAgLW15ZmlsZW5hbWU8L2NvZGU+LjwvcD48L2RkPgo8ZHQ+CjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tcmVwZXRpdGl2ZS1mYXN0PC9jb2RlPiwgPC9zcGFuPjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tcmVwZXRpdGl2ZS1iZXN0PC9jb2RlPjwvc3Bhbj4KPC9kdD4KPGRkPjxwPlRoZXNlIGZsYWdzIGFyZSByZWR1bmRhbnQgaW4gdmVyc2lvbnMgMC45LjUgYW5kCiAgYWJvdmUuICBUaGV5IHByb3ZpZGVkIHNvbWUgY29hcnNlIGNvbnRyb2wgb3ZlciB0aGUgYmVoYXZpb3VyIG9mCiAgdGhlIHNvcnRpbmcgYWxnb3JpdGhtIGluIGVhcmxpZXIgdmVyc2lvbnMsIHdoaWNoIHdhcyBzb21ldGltZXMKICB1c2VmdWwuICAwLjkuNSBhbmQgYWJvdmUgaGF2ZSBhbiBpbXByb3ZlZCBhbGdvcml0aG0gd2hpY2gKICByZW5kZXJzIHRoZXNlIGZsYWdzIGlycmVsZXZhbnQuPC9wPjwvZGQ+CjwvZGw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuNS6gTUVNT1JZIE1BTkFHRU1FTlQiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJtZW1vcnktbWFuYWdlbWVudCI+PC9hPjIuNS6gTUVNT1JZIE1BTkFHRU1FTlQ8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGxhcmdlCmZpbGVzIGluIGJsb2Nrcy4gIFRoZSBibG9jayBzaXplIGFmZmVjdHMgYm90aCB0aGUgY29tcHJlc3Npb24KcmF0aW8gYWNoaWV2ZWQsIGFuZCB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgZm9yIGNvbXByZXNzaW9uCmFuZCBkZWNvbXByZXNzaW9uLiAgVGhlIGZsYWdzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTE8L2NvZGU+CnRocm91Z2ggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gc3BlY2lmeSB0aGUgYmxvY2sKc2l6ZSB0byBiZSAxMDAsMDAwIGJ5dGVzIHRocm91Z2ggOTAwLDAwMCBieXRlcyAodGhlIGRlZmF1bHQpCnJlc3BlY3RpdmVseS4gIEF0IGRlY29tcHJlc3Npb24gdGltZSwgdGhlIGJsb2NrIHNpemUgdXNlZCBmb3IKY29tcHJlc3Npb24gaXMgcmVhZCBmcm9tIHRoZSBoZWFkZXIgb2YgdGhlIGNvbXByZXNzZWQgZmlsZSwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gdGhlbiBhbGxvY2F0ZXMgaXRzZWxmCmp1c3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvbXByZXNzIHRoZSBmaWxlLiAgU2luY2UgYmxvY2sgc2l6ZXMgYXJlCnN0b3JlZCBpbiBjb21wcmVzc2VkIGZpbGVzLCBpdCBmb2xsb3dzIHRoYXQgdGhlIGZsYWdzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTE8L2NvZGU+IHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTk8L2NvZGU+IGFyZSBpcnJlbGV2YW50IHRvIGFuZCBzbwppZ25vcmVkIGR1cmluZyBkZWNvbXByZXNzaW9uLjwvcD4KPHA+Q29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gcmVxdWlyZW1lbnRzLCBpbiBieXRlcywgY2FuIGJlCmVzdGltYXRlZCBhczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5Db21wcmVzc2lvbjogICA0MDBrICsgKCA4IHggYmxvY2sgc2l6ZSApCgpEZWNvbXByZXNzaW9uOiAxMDBrICsgKCA0IHggYmxvY2sgc2l6ZSApLCBvcgogICAgICAgICAgICAgICAxMDBrICsgKCAyLjUgeCBibG9jayBzaXplICk8L3ByZT4KPHA+TGFyZ2VyIGJsb2NrIHNpemVzIGdpdmUgcmFwaWRseSBkaW1pbmlzaGluZyBtYXJnaW5hbApyZXR1cm5zLiAgTW9zdCBvZiB0aGUgY29tcHJlc3Npb24gY29tZXMgZnJvbSB0aGUgZmlyc3QgdHdvIG9yCnRocmVlIGh1bmRyZWQgayBvZiBibG9jayBzaXplLCBhIGZhY3Qgd29ydGggYmVhcmluZyBpbiBtaW5kIHdoZW4KdXNpbmcgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gb24gc21hbGwgbWFjaGluZXMuCkl0IGlzIGFsc28gaW1wb3J0YW50IHRvIGFwcHJlY2lhdGUgdGhhdCB0aGUgZGVjb21wcmVzc2lvbiBtZW1vcnkKcmVxdWlyZW1lbnQgaXMgc2V0IGF0IGNvbXByZXNzaW9uIHRpbWUgYnkgdGhlIGNob2ljZSBvZiBibG9jawpzaXplLjwvcD4KPHA+Rm9yIGZpbGVzIGNvbXByZXNzZWQgd2l0aCB0aGUgZGVmYXVsdCA5MDBrIGJsb2NrIHNpemUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gd2lsbCByZXF1aXJlIGFib3V0IDM3MDAKa2J5dGVzIHRvIGRlY29tcHJlc3MuICBUbyBzdXBwb3J0IGRlY29tcHJlc3Npb24gb2YgYW55IGZpbGUgb24gYQo0IG1lZ2FieXRlIG1hY2hpbmUsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gaGFzCmFuIG9wdGlvbiB0byBkZWNvbXByZXNzIHVzaW5nIGFwcHJveGltYXRlbHkgaGFsZiB0aGlzIGFtb3VudCBvZgptZW1vcnksIGFib3V0IDIzMDAga2J5dGVzLiAgRGVjb21wcmVzc2lvbiBzcGVlZCBpcyBhbHNvIGhhbHZlZCwKc28geW91IHNob3VsZCB1c2UgdGhpcyBvcHRpb24gb25seSB3aGVyZSBuZWNlc3NhcnkuICBUaGUgcmVsZXZhbnQKZmxhZyBpcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zPC9jb2RlPi48L3A+CjxwPkluIGdlbmVyYWwsIHRyeSBhbmQgdXNlIHRoZSBsYXJnZXN0IGJsb2NrIHNpemUgbWVtb3J5CmNvbnN0cmFpbnRzIGFsbG93LCBzaW5jZSB0aGF0IG1heGltaXNlcyB0aGUgY29tcHJlc3Npb24gYWNoaWV2ZWQuCkNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHNwZWVkIGFyZSB2aXJ0dWFsbHkgdW5hZmZlY3RlZCBieQpibG9jayBzaXplLjwvcD4KPHA+QW5vdGhlciBzaWduaWZpY2FudCBwb2ludCBhcHBsaWVzIHRvIGZpbGVzIHdoaWNoIGZpdCBpbiBhCnNpbmdsZSBibG9jayAtLSB0aGF0IG1lYW5zIG1vc3QgZmlsZXMgeW91J2QgZW5jb3VudGVyIHVzaW5nIGEKbGFyZ2UgYmxvY2sgc2l6ZS4gIFRoZSBhbW91bnQgb2YgcmVhbCBtZW1vcnkgdG91Y2hlZCBpcwpwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIGZpbGUsIHNpbmNlIHRoZSBmaWxlIGlzIHNtYWxsZXIKdGhhbiBhIGJsb2NrLiAgRm9yIGV4YW1wbGUsIGNvbXByZXNzaW5nIGEgZmlsZSAyMCwwMDAgYnl0ZXMgbG9uZwp3aXRoIHRoZSBmbGFnIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTk8L2NvZGU+IHdpbGwgY2F1c2UgdGhlCmNvbXByZXNzb3IgdG8gYWxsb2NhdGUgYXJvdW5kIDc2MDBrIG9mIG1lbW9yeSwgYnV0IG9ubHkgdG91Y2gKNDAwayArIDIwMDAwICogOCA9IDU2MCBrYnl0ZXMgb2YgaXQuICBTaW1pbGFybHksIHRoZSBkZWNvbXByZXNzb3IKd2lsbCBhbGxvY2F0ZSAzNzAwayBidXQgb25seSB0b3VjaCAxMDBrICsgMjAwMDAgKiA0ID0gMTgwCmtieXRlcy48L3A+CjxwPkhlcmUgaXMgYSB0YWJsZSB3aGljaCBzdW1tYXJpc2VzIHRoZSBtYXhpbXVtIG1lbW9yeSB1c2FnZQpmb3IgZGlmZmVyZW50IGJsb2NrIHNpemVzLiAgQWxzbyByZWNvcmRlZCBpcyB0aGUgdG90YWwgY29tcHJlc3NlZApzaXplIGZvciAxNCBmaWxlcyBvZiB0aGUgQ2FsZ2FyeSBUZXh0IENvbXByZXNzaW9uIENvcnB1cwp0b3RhbGxpbmcgMywxNDEsNjIyIGJ5dGVzLiAgVGhpcyBjb2x1bW4gZ2l2ZXMgc29tZSBmZWVsIGZvciBob3cKY29tcHJlc3Npb24gdmFyaWVzIHdpdGggYmxvY2sgc2l6ZS4gIFRoZXNlIGZpZ3VyZXMgdGVuZCB0bwp1bmRlcnN0YXRlIHRoZSBhZHZhbnRhZ2Ugb2YgbGFyZ2VyIGJsb2NrIHNpemVzIGZvciBsYXJnZXIgZmlsZXMsCnNpbmNlIHRoZSBDb3JwdXMgaXMgZG9taW5hdGVkIGJ5IHNtYWxsZXIgZmlsZXMuPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICAgICAgICBDb21wcmVzcyAgIERlY29tcHJlc3MgICBEZWNvbXByZXNzICAgQ29ycHVzCkZsYWcgICAgIHVzYWdlICAgICAgdXNhZ2UgICAgICAgLXMgdXNhZ2UgICAgIFNpemUKCiAtMSAgICAgIDEyMDBrICAgICAgIDUwMGsgICAgICAgICAzNTBrICAgICAgOTE0NzA0CiAtMiAgICAgIDIwMDBrICAgICAgIDkwMGsgICAgICAgICA2MDBrICAgICAgODc3NzAzCiAtMyAgICAgIDI4MDBrICAgICAgMTMwMGsgICAgICAgICA4NTBrICAgICAgODYwMzM4CiAtNCAgICAgIDM2MDBrICAgICAgMTcwMGsgICAgICAgIDExMDBrICAgICAgODQ2ODk5CiAtNSAgICAgIDQ0MDBrICAgICAgMjEwMGsgICAgICAgIDEzNTBrICAgICAgODQ1MTYwCiAtNiAgICAgIDUyMDBrICAgICAgMjUwMGsgICAgICAgIDE2MDBrICAgICAgODM4NjI2CiAtNyAgICAgIDYxMDBrICAgICAgMjkwMGsgICAgICAgIDE4NTBrICAgICAgODM0MDk2CiAtOCAgICAgIDY4MDBrICAgICAgMzMwMGsgICAgICAgIDIxMDBrICAgICAgODI4NjQyCiAtOSAgICAgIDc2MDBrICAgICAgMzcwMGsgICAgICAgIDIzNTBrICAgICAgODI4NjQyPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuNi6gUkVDT1ZFUklORyBEQVRBIEZST00gREFNQUdFRCBGSUxFUyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InJlY292ZXJpbmciPjwvYT4yLjYuoFJFQ09WRVJJTkcgREFUQSBGUk9NIERBTUFHRUQgRklMRVM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzIGluCmJsb2NrcywgdXN1YWxseSA5MDBrYnl0ZXMgbG9uZy4gIEVhY2ggYmxvY2sgaXMgaGFuZGxlZAppbmRlcGVuZGVudGx5LiAgSWYgYSBtZWRpYSBvciB0cmFuc21pc3Npb24gZXJyb3IgY2F1c2VzIGEKbXVsdGktYmxvY2sgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlIHRvIGJlY29tZQpkYW1hZ2VkLCBpdCBtYXkgYmUgcG9zc2libGUgdG8gcmVjb3ZlciBkYXRhIGZyb20gdGhlIHVuZGFtYWdlZApibG9ja3MgaW4gdGhlIGZpbGUuPC9wPgo8cD5UaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrIGlzIGRlbGltaXRlZCBieQphIDQ4LWJpdCBwYXR0ZXJuLCB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBmaW5kIHRoZSBibG9jawpib3VuZGFyaWVzIHdpdGggcmVhc29uYWJsZSBjZXJ0YWludHkuICBFYWNoIGJsb2NrIGFsc28gY2FycmllcwppdHMgb3duIDMyLWJpdCBDUkMsIHNvIGRhbWFnZWQgYmxvY2tzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20KdW5kYW1hZ2VkIG9uZXMuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gaXMgYSBzaW1wbGUKcHJvZ3JhbSB3aG9zZSBwdXJwb3NlIGlzIHRvIHNlYXJjaCBmb3IgYmxvY2tzIGluCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4gZmlsZXMsIGFuZCB3cml0ZSBlYWNoIGJsb2NrCm91dCBpbnRvIGl0cyBvd24gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlLiAgWW91CmNhbiB0aGVuIHVzZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC10PC9jb2RlPiB0byB0ZXN0CnRoZSBpbnRlZ3JpdHkgb2YgdGhlIHJlc3VsdGluZyBmaWxlcywgYW5kIGRlY29tcHJlc3MgdGhvc2Ugd2hpY2gKYXJlIHVuZGFtYWdlZC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB0YWtlcyBhCnNpbmdsZSBhcmd1bWVudCwgdGhlIG5hbWUgb2YgdGhlIGRhbWFnZWQgZmlsZSwgYW5kIHdyaXRlcyBhCm51bWJlciBvZiBmaWxlcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnJlYzAwMDFmaWxlLmJ6MjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmVjMDAwMmZpbGUuYnoyPC9jb2RlPiwgZXRjLCBjb250YWluaW5nCnRoZSBleHRyYWN0ZWQgYmxvY2tzLiAgVGhlIG91dHB1dCBmaWxlbmFtZXMgYXJlIGRlc2lnbmVkIHNvIHRoYXQKdGhlIHVzZSBvZiB3aWxkY2FyZHMgaW4gc3Vic2VxdWVudCBwcm9jZXNzaW5nIC0tIGZvciBleGFtcGxlLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC1kYyByZWMqZmlsZS5iejIgJmd0OwpyZWNvdmVyZWRfZGF0YTwvY29kZT4gLS0gbGlzdHMgdGhlIGZpbGVzIGluIHRoZSBjb3JyZWN0Cm9yZGVyLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHNob3VsZCBiZSBvZgptb3N0IHVzZSBkZWFsaW5nIHdpdGggbGFyZ2UgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPgpmaWxlcywgYXMgdGhlc2Ugd2lsbCBjb250YWluIG1hbnkgYmxvY2tzLiAgSXQgaXMgY2xlYXJseSBmdXRpbGUKdG8gdXNlIGl0IG9uIGRhbWFnZWQgc2luZ2xlLWJsb2NrIGZpbGVzLCBzaW5jZSBhIGRhbWFnZWQgYmxvY2sKY2Fubm90IGJlIHJlY292ZXJlZC4gIElmIHlvdSB3aXNoIHRvIG1pbmltaXNlIGFueSBwb3RlbnRpYWwgZGF0YQpsb3NzIHRocm91Z2ggbWVkaWEgb3IgdHJhbnNtaXNzaW9uIGVycm9ycywgeW91IG1pZ2h0IGNvbnNpZGVyCmNvbXByZXNzaW5nIHdpdGggYSBzbWFsbGVyIGJsb2NrIHNpemUuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLjcuoFBFUkZPUk1BTkNFIE5PVEVTIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icGVyZm9ybWFuY2UiPjwvYT4yLjcuoFBFUkZPUk1BTkNFIE5PVEVTPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhlIHNvcnRpbmcgcGhhc2Ugb2YgY29tcHJlc3Npb24gZ2F0aGVycyB0b2dldGhlciBzaW1pbGFyCnN0cmluZ3MgaW4gdGhlIGZpbGUuICBCZWNhdXNlIG9mIHRoaXMsIGZpbGVzIGNvbnRhaW5pbmcgdmVyeSBsb25nCnJ1bnMgb2YgcmVwZWF0ZWQgc3ltYm9scywgbGlrZSAiYWFiYWFiYWFiYWFiIC4uLiIgIChyZXBlYXRlZApzZXZlcmFsIGh1bmRyZWQgdGltZXMpIG1heSBjb21wcmVzcyBtb3JlIHNsb3dseSB0aGFuIG5vcm1hbC4KVmVyc2lvbnMgMC45LjUgYW5kIGFib3ZlIGZhcmUgbXVjaCBiZXR0ZXIgdGhhbiBwcmV2aW91cyB2ZXJzaW9ucwppbiB0aGlzIHJlc3BlY3QuICBUaGUgcmF0aW8gYmV0d2VlbiB3b3JzdC1jYXNlIGFuZCBhdmVyYWdlLWNhc2UKY29tcHJlc3Npb24gdGltZSBpcyBpbiB0aGUgcmVnaW9uIG9mIDEwOjEuICBGb3IgcHJldmlvdXMKdmVyc2lvbnMsIHRoaXMgZmlndXJlIHdhcyBtb3JlIGxpa2UgMTAwOjEuICBZb3UgY2FuIHVzZSB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdnZ2djwvY29kZT4gb3B0aW9uIHRvIG1vbml0b3IgcHJvZ3Jlc3MKaW4gZ3JlYXQgZGV0YWlsLCBpZiB5b3Ugd2FudC48L3A+CjxwPkRlY29tcHJlc3Npb24gc3BlZWQgaXMgdW5hZmZlY3RlZCBieSB0aGVzZQpwaGVub21lbmEuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB1c3VhbGx5IGFsbG9jYXRlcwpzZXZlcmFsIG1lZ2FieXRlcyBvZiBtZW1vcnkgdG8gb3BlcmF0ZSBpbiwgYW5kIHRoZW4gY2hhcmdlcyBhbGwKb3ZlciBpdCBpbiBhIGZhaXJseSByYW5kb20gZmFzaGlvbi4gIFRoaXMgbWVhbnMgdGhhdCBwZXJmb3JtYW5jZSwKYm90aCBmb3IgY29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcsIGlzIGxhcmdlbHkgZGV0ZXJtaW5lZCBieQp0aGUgc3BlZWQgYXQgd2hpY2ggeW91ciBtYWNoaW5lIGNhbiBzZXJ2aWNlIGNhY2hlIG1pc3Nlcy4KQmVjYXVzZSBvZiB0aGlzLCBzbWFsbCBjaGFuZ2VzIHRvIHRoZSBjb2RlIHRvIHJlZHVjZSB0aGUgbWlzcwpyYXRlIGhhdmUgYmVlbiBvYnNlcnZlZCB0byBnaXZlIGRpc3Byb3BvcnRpb25hdGVseSBsYXJnZQpwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJIGltYWdpbmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCBwZXJmb3JtIGJlc3Qgb24KbWFjaGluZXMgd2l0aCB2ZXJ5IGxhcmdlIGNhY2hlcy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjIuOC6gQ0FWRUFUUyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImNhdmVhdHMiPjwvYT4yLjguoENBVkVBVFM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5JL08gZXJyb3IgbWVzc2FnZXMgYXJlIG5vdCBhcyBoZWxwZnVsIGFzIHRoZXkgY291bGQgYmUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRyaWVzIGhhcmQgdG8gZGV0ZWN0IEkvTwplcnJvcnMgYW5kIGV4aXQgY2xlYW5seSwgYnV0IHRoZSBkZXRhaWxzIG9mIHdoYXQgdGhlIHByb2JsZW0gaXMKc29tZXRpbWVzIHNlZW0gcmF0aGVyIG1pc2xlYWRpbmcuPC9wPgo8cD5UaGlzIG1hbnVhbCBwYWdlIHBlcnRhaW5zIHRvIHZlcnNpb24gMS4wLjYgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4uICBDb21wcmVzc2VkIGRhdGEgY3JlYXRlZCBieQp0aGlzIHZlcnNpb24gaXMgZW50aXJlbHkgZm9yd2FyZHMgYW5kIGJhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggdGhlCnByZXZpb3VzIHB1YmxpYyByZWxlYXNlcywgdmVyc2lvbnMgMC4xcGwyLCAwLjkuMCBhbmQgMC45LjUsIDEuMC4wLAoxLjAuMSwgMS4wLjIgYW5kIDEuMC4zLCBidXQgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjogMC45LjAgYW5kCmFib3ZlIGNhbiBjb3JyZWN0bHkgZGVjb21wcmVzcyBtdWx0aXBsZSBjb25jYXRlbmF0ZWQgY29tcHJlc3NlZCBmaWxlcy4KMC4xcGwyIGNhbm5vdCBkbyB0aGlzOyBpdCB3aWxsIHN0b3AgYWZ0ZXIgZGVjb21wcmVzc2luZyBqdXN0IHRoZSBmaXJzdApmaWxlIGluIHRoZSBzdHJlYW0uPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gdmVyc2lvbnMKcHJpb3IgdG8gMS4wLjIgdXNlZCAzMi1iaXQgaW50ZWdlcnMgdG8gcmVwcmVzZW50IGJpdCBwb3NpdGlvbnMgaW4KY29tcHJlc3NlZCBmaWxlcywgc28gaXQgY291bGQgbm90IGhhbmRsZSBjb21wcmVzc2VkIGZpbGVzIG1vcmUKdGhhbiA1MTIgbWVnYWJ5dGVzIGxvbmcuICBWZXJzaW9ucyAxLjAuMiBhbmQgYWJvdmUgdXNlIDY0LWJpdCBpbnRzCm9uIHNvbWUgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhlbSAoR05VIHN1cHBvcnRlZCB0YXJnZXRzLCBhbmQKV2luZG93cykuIFRvIGVzdGFibGlzaCB3aGV0aGVyIG9yIG5vdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gd2FzIGJ1aWx0IHdpdGggc3VjaAphIGxpbWl0YXRpb24sIHJ1biBpdCB3aXRob3V0IGFyZ3VtZW50cy4gSW4gYW55IGV2ZW50IHlvdSBjYW4KYnVpbGQgeW91cnNlbGYgYW4gdW5saW1pdGVkIHZlcnNpb24gaWYgeW91IGNhbiByZWNvbXBpbGUgaXQgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk1heWJlVUludDY0PC9jb2RlPiBzZXQgdG8gYmUgYW4KdW5zaWduZWQgNjQtYml0IGludGVnZXIuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIyLjkuoEFVVEhPUiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImF1dGhvciI+PC9hPjIuOS6gQVVUSE9SPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SnVsaWFuIFNld2FyZCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5qc2V3YXJkQGJ6aXAub3JnPC9jb2RlPjwvcD4KPHA+VGhlIGlkZWFzIGVtYm9kaWVkIGluCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGFyZSBkdWUgdG8gKGF0IGxlYXN0KSB0aGUKZm9sbG93aW5nIHBlb3BsZTogTWljaGFlbCBCdXJyb3dzIGFuZCBEYXZpZCBXaGVlbGVyIChmb3IgdGhlCmJsb2NrIHNvcnRpbmcgdHJhbnNmb3JtYXRpb24pLCBEYXZpZCBXaGVlbGVyIChhZ2FpbiwgZm9yIHRoZQpIdWZmbWFuIGNvZGVyKSwgUGV0ZXIgRmVud2ljayAoZm9yIHRoZSBzdHJ1Y3R1cmVkIGNvZGluZyBtb2RlbCBpbgp0aGUgb3JpZ2luYWwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwPC9jb2RlPiwgYW5kIG1hbnkKcmVmaW5lbWVudHMpLCBhbmQgQWxpc3RhaXIgTW9mZmF0LCBSYWRmb3JkIE5lYWwgYW5kIElhbiBXaXR0ZW4KKGZvciB0aGUgYXJpdGhtZXRpYyBjb2RlciBpbiB0aGUgb3JpZ2luYWwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwPC9jb2RlPikuICBJIGFtIG11Y2ggaW5kZWJ0ZWQgZm9yCnRoZWlyIGhlbHAsIHN1cHBvcnQgYW5kIGFkdmljZS4gIFNlZSB0aGUgbWFudWFsIGluIHRoZSBzb3VyY2UKZGlzdHJpYnV0aW9uIGZvciBwb2ludGVycyB0byBzb3VyY2VzIG9mIGRvY3VtZW50YXRpb24uICBDaHJpc3RpYW4Kdm9uIFJvcXVlcyBlbmNvdXJhZ2VkIG1lIHRvIGxvb2sgZm9yIGZhc3RlciBzb3J0aW5nIGFsZ29yaXRobXMsCnNvIGFzIHRvIHNwZWVkIHVwIGNvbXByZXNzaW9uLiAgQmVsYSBMdWJraW4gZW5jb3VyYWdlZCBtZSB0bwppbXByb3ZlIHRoZSB3b3JzdC1jYXNlIGNvbXByZXNzaW9uIHBlcmZvcm1hbmNlLiAgCkRvbm5hIFJvYmluc29uIFhNTGlzZWQgdGhlIGRvY3VtZW50YXRpb24uCk1hbnkgcGVvcGxlIHNlbnQKcGF0Y2hlcywgaGVscGVkIHdpdGggcG9ydGFiaWxpdHkgcHJvYmxlbXMsIGxlbnQgbWFjaGluZXMsIGdhdmUKYWR2aWNlIGFuZCB3ZXJlIGdlbmVyYWxseSBoZWxwZnVsLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjaGFwdGVyIiB0aXRsZT0iMy6gIFByb2dyYW1taW5nIHdpdGggbGliYnppcDIiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ibGlicHJvZyI+PC9hPjMuoApQcm9ncmFtbWluZyB3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+CjwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdG9wLWxldmVsIj4zLjEuIFRvcC1sZXZlbCBzdHJ1Y3R1cmU8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNsbC1zdW1tYXJ5Ij4zLjEuMS4gTG93LWxldmVsIHN1bW1hcnk8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNobC1zdW1tYXJ5Ij4zLjEuMi4gSGlnaC1sZXZlbCBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjdXRpbC1mbnMtc3VtbWFyeSI+My4xLjMuIFV0aWxpdHkgZnVuY3Rpb25zIHN1bW1hcnk8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Vyci1oYW5kbGluZyI+My4yLiBFcnJvciBoYW5kbGluZzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2xvdy1sZXZlbCI+My4zLiBMb3ctbGV2ZWwgaW50ZXJmYWNlPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpjb21wcmVzcy1pbml0Ij4zLjMuMS4gQloyX2J6Q29tcHJlc3NJbml0PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpDb21wcmVzcyI+My4zLjIuIEJaMl9iekNvbXByZXNzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpDb21wcmVzcy1lbmQiPjMuMy4zLiBCWjJfYnpDb21wcmVzc0VuZDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcy1pbml0Ij4zLjMuNC4gQloyX2J6RGVjb21wcmVzc0luaXQ8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MiPjMuMy41LiBCWjJfYnpEZWNvbXByZXNzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzLWVuZCI+My4zLjYuIEJaMl9iekRlY29tcHJlc3NFbmQ8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2hsLWludGVyZmFjZSI+My40LiBIaWdoLWxldmVsIGludGVyZmFjZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZG9wZW4iPjMuNC4xLiBCWjJfYnpSZWFkT3BlbjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZCI+My40LjIuIEJaMl9ielJlYWQ8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWRnZXR1bnVzZWQiPjMuNC4zLiBCWjJfYnpSZWFkR2V0VW51c2VkPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkY2xvc2UiPjMuNC40LiBCWjJfYnpSZWFkQ2xvc2U8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiendyaXRlb3BlbiI+My40LjUuIEJaMl9ieldyaXRlT3BlbjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGUiPjMuNC42LiBCWjJfYnpXcml0ZTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGVjbG9zZSI+My40LjcuIEJaMl9ieldyaXRlQ2xvc2U8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNlbWJlZCI+My40LjguIEhhbmRsaW5nIGVtYmVkZGVkIGNvbXByZXNzZWQgZGF0YSBzdHJlYW1zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjc3RkLXJkd3IiPjMuNC45LiBTdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN1dGlsLWZucyI+My41LiBVdGlsaXR5IGZ1bmN0aW9uczwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmNvbXByZXNzIj4zLjUuMS4gQloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpidWZmdG9idWZmZGVjb21wcmVzcyI+My41LjIuIEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN6bGliLWNvbXBhdCI+My42LiB6bGliIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjc3RkaW8tZnJlZSI+My43LiBVc2luZyB0aGUgbGlicmFyeSBpbiBhIHN0ZGlvLWZyZWUgZW52aXJvbm1lbnQ8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGRpby1ieWUiPjMuNy4xLiBHZXR0aW5nIHJpZCBvZiBzdGRpbzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2NyaXRpY2FsLWVycm9yIj4zLjcuMi4gQ3JpdGljYWwgZXJyb3IgaGFuZGxpbmc8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3dpbi1kbGwiPjMuOC4gTWFraW5nIGEgV2luZG93cyBETEw8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+CjwvZGl2Pgo8cD5UaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4uPC9wPgo8cD5Gb3IgZ2VuZXJhbCBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uLCBwYXJ0aWN1bGFybHkgYWJvdXQKbWVtb3J5IHVzZSBhbmQgcGVyZm9ybWFuY2UgYXNwZWN0cywgeW91J2QgYmUgd2VsbCBhZHZpc2VkIHRvIHJlYWQKPGEgY2xhc3M9InhyZWYiIGhyZWY9IiN1c2luZyIgdGl0bGU9IjIuoEhvdyB0byB1c2UgYnppcDIiPkhvdyB0byB1c2UgYnppcDI8L2E+IGFzIHdlbGwuPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuMS6gVG9wLWxldmVsIHN0cnVjdHVyZSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InRvcC1sZXZlbCI+PC9hPjMuMS6gVG9wLWxldmVsIHN0cnVjdHVyZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGlzIGEgZmxleGlibGUKbGlicmFyeSBmb3IgY29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcgZGF0YSBpbiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGF0YSBmb3JtYXQuICBBbHRob3VnaApwYWNrYWdlZCBhcyBhIHNpbmdsZSBlbnRpdHksIGl0IGhlbHBzIHRvIHJlZ2FyZCB0aGUgbGlicmFyeSBhcwp0aHJlZSBzZXBhcmF0ZSBwYXJ0czogdGhlIGxvdyBsZXZlbCBpbnRlcmZhY2UsIGFuZCB0aGUgaGlnaCBsZXZlbAppbnRlcmZhY2UsIGFuZCBzb21lIHV0aWxpdHkgZnVuY3Rpb25zLjwvcD4KPHA+VGhlIHN0cnVjdHVyZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPidzIGludGVyZmFjZXMgaXMgc2ltaWxhcgp0byB0aGF0IG9mIEplYW4tbG91cCBHYWlsbHkncyBhbmQgTWFyayBBZGxlcidzIGV4Y2VsbGVudAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGxpYnJhcnkuPC9wPgo8cD5BbGwgZXh0ZXJuYWxseSB2aXNpYmxlIHN5bWJvbHMgaGF2ZSBuYW1lcyBiZWdpbm5pbmcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfPC9jb2RlPi4gIFRoaXMgaXMgbmV3IGluIHZlcnNpb24KMS4wLiAgVGhlIGludGVudGlvbiBpcyB0byBtaW5pbWlzZSBwb2xsdXRpb24gb2YgdGhlIG5hbWVzcGFjZXMgb2YKbGlicmFyeSBjbGllbnRzLjwvcD4KPHA+VG8gdXNlIGFueSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCB5b3UgbmVlZCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPiNpbmNsdWRlICZsdDtiemxpYi5oJmd0OzwvY29kZT4KaW50byB5b3VyIHNvdXJjZXMuPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuMS4xLqBMb3ctbGV2ZWwgc3VtbWFyeSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJsbC1zdW1tYXJ5Ij48L2E+My4xLjEuoExvdy1sZXZlbCBzdW1tYXJ5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgc2VydmljZXMgZm9yIGNvbXByZXNzaW5nIGFuZApkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5LiAgVGhlcmUncyBubyBwcm92aXNpb24gZm9yIGRlYWxpbmcKd2l0aCBmaWxlcywgc3RyZWFtcyBvciBhbnkgb3RoZXIgSS9PIG1lY2hhbmlzbXMsIGp1c3Qgc3RyYWlnaHQKbWVtb3J5LXRvLW1lbW9yeSB3b3JrLiAgSW4gZmFjdCwgdGhpcyBwYXJ0IG9mIHRoZSBsaWJyYXJ5IGNhbiBiZQpjb21waWxlZCB3aXRob3V0IGluY2x1c2lvbiBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvLmg8L2NvZGU+LCB3aGljaCBtYXkgYmUgaGVscGZ1bApmb3IgZW1iZWRkZWQgYXBwbGljYXRpb25zLjwvcD4KPHA+VGhlIGxvdy1sZXZlbCBwYXJ0IG9mIHRoZSBsaWJyYXJ5IGhhcyBubyBnbG9iYWwgdmFyaWFibGVzCmFuZCBpcyB0aGVyZWZvcmUgdGhyZWFkLXNhZmUuPC9wPgo8cD5TaXggcm91dGluZXMgbWFrZSB1cCB0aGUgbG93IGxldmVsIGludGVyZmFjZToKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+IGZvcgpjb21wcmVzc2lvbiwgYW5kIGEgY29ycmVzcG9uZGluZyB0cmlvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+IGZvcgpkZWNvbXByZXNzaW9uLiAgVGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KkluaXQ8L2NvZGU+CmZ1bmN0aW9ucyBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gYW5kIGRvCm90aGVyIGluaXRpYWxpc2F0aW9ucywgd2hpbHN0IHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipFbmQ8L2NvZGU+IGZ1bmN0aW9ucyBjbG9zZSBkb3duCm9wZXJhdGlvbnMgYW5kIHJlbGVhc2UgbWVtb3J5LjwvcD4KPHA+VGhlIHJlYWwgd29yayBpcyBkb25lIGJ5Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+LiAgVGhlc2UKY29tcHJlc3MgYW5kIGRlY29tcHJlc3MgZGF0YSBmcm9tIGEgdXNlci1zdXBwbGllZCBpbnB1dCBidWZmZXIgdG8KYSB1c2VyLXN1cHBsaWVkIG91dHB1dCBidWZmZXIuICBUaGVzZSBidWZmZXJzIGNhbiBiZSBhbnkgc2l6ZTsKYXJiaXRyYXJ5IHF1YW50aXRpZXMgb2YgZGF0YSBhcmUgaGFuZGxlZCBieSBtYWtpbmcgcmVwZWF0ZWQgY2FsbHMKdG8gdGhlc2UgZnVuY3Rpb25zLiAgVGhpcyBpcyBhIGZsZXhpYmxlIG1lY2hhbmlzbSBhbGxvd2luZyBhCmNvbnN1bWVyLXB1bGwgc3R5bGUgb2YgYWN0aXZpdHksIG9yIHByb2R1Y2VyLXB1c2gsIG9yIGEgbWl4dHVyZQpvZiBib3RoLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy4xLjIuoEhpZ2gtbGV2ZWwgc3VtbWFyeSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJobC1zdW1tYXJ5Ij48L2E+My4xLjIuoEhpZ2gtbGV2ZWwgc3VtbWFyeTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIHNvbWUgaGFuZHkgd3JhcHBlcnMgYXJvdW5kIHRoZQpsb3ctbGV2ZWwgaW50ZXJmYWNlIHRvIGZhY2lsaXRhdGUgcmVhZGluZyBhbmQgd3JpdGluZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQgZmlsZXMKKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4gZmlsZXMpLiAgVGhlIHJvdXRpbmVzCnByb3ZpZGUgaG9va3MgdG8gZmFjaWxpdGF0ZSByZWFkaW5nIGZpbGVzIGluIHdoaWNoIHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkYXRhIHN0cmVhbSBpcyBlbWJlZGRlZAp3aXRoaW4gc29tZSBsYXJnZXItc2NhbGUgZmlsZSBzdHJ1Y3R1cmUsIG9yIHdoZXJlIHRoZXJlIGFyZQptdWx0aXBsZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkYXRhIHN0cmVhbXMKY29uY2F0ZW5hdGVkIGVuZC10by1lbmQuPC9wPgo8cD5Gb3IgcmVhZGluZyBmaWxlcywKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPiBhbmQgCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT4gYXJlCnN1cHBsaWVkLiAgRm9yIHdyaXRpbmcgZmlsZXMsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVGaW5pc2g8L2NvZGU+IGFyZQphdmFpbGFibGUuPC9wPgo8cD5BcyB3aXRoIHRoZSBsb3ctbGV2ZWwgbGlicmFyeSwgbm8gZ2xvYmFsIHZhcmlhYmxlcyBhcmUgdXNlZApzbyB0aGUgbGlicmFyeSBpcyBwZXIgc2UgdGhyZWFkLXNhZmUuICBIb3dldmVyLCBpZiBJL08gZXJyb3JzCm9jY3VyIHdoaWxzdCByZWFkaW5nIG9yIHdyaXRpbmcgdGhlIHVuZGVybHlpbmcgY29tcHJlc3NlZCBmaWxlcywKeW91IG1heSBoYXZlIHRvIGNvbnN1bHQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5lcnJubzwvY29kZT4gdG8KZGV0ZXJtaW5lIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IuICBJbiB0aGF0IGNhc2UsIHlvdSdkIG5lZWQgYSBDCmxpYnJhcnkgd2hpY2ggY29ycmVjdGx5IHN1cHBvcnRzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+IGluIGEgbXVsdGl0aHJlYWRlZAplbnZpcm9ubWVudC48L3A+CjxwPlRvIG1ha2UgdGhlIGxpYnJhcnkgYSBsaXR0bGUgc2ltcGxlciBhbmQgbW9yZSBwb3J0YWJsZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiByZXF1aXJlIHlvdSB0bwpwYXNzIHRoZW0gZmlsZSBoYW5kbGVzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkZJTEUqPC9jb2RlPnMpCndoaWNoIGhhdmUgcHJldmlvdXNseSBiZWVuIG9wZW5lZCBmb3IgcmVhZGluZyBvciB3cml0aW5nCnJlc3BlY3RpdmVseS4gIFRoYXQgYXZvaWRzIHBvcnRhYmlsaXR5IHByb2JsZW1zIGFzc29jaWF0ZWQgd2l0aApmaWxlIG9wZXJhdGlvbnMgYW5kIGZpbGUgYXR0cmlidXRlcywgd2hpbHN0IG5vdCBiZWluZyBtdWNoIG9mIGFuCmltcG9zaXRpb24gb24gdGhlIHByb2dyYW1tZXIuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjEuMy6gVXRpbGl0eSBmdW5jdGlvbnMgc3VtbWFyeSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGlsLWZucy1zdW1tYXJ5Ij48L2E+My4xLjMuoFV0aWxpdHkgZnVuY3Rpb25zIHN1bW1hcnk8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5Gb3IgdmVyeSBzaW1wbGUgbmVlZHMsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT4gYXJlCnByb3ZpZGVkLiAgVGhlc2UgY29tcHJlc3MgZGF0YSBpbiBtZW1vcnkgZnJvbSBvbmUgYnVmZmVyIHRvCmFub3RoZXIgYnVmZmVyIGluIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuICBZb3Ugc2hvdWxkIGFzc2Vzcwp3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBmdWxmaWxsIHlvdXIgbWVtb3J5LXRvLW1lbW9yeQpjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIHJlcXVpcmVtZW50cyBiZWZvcmUgaW52ZXN0aW5nIGVmZm9ydCBpbgp1bmRlcnN0YW5kaW5nIHRoZSBtb3JlIGdlbmVyYWwgYnV0IG1vcmUgY29tcGxleCBsb3ctbGV2ZWwKaW50ZXJmYWNlLjwvcD4KPHA+WW9zaGlva2EgVHN1bmVvCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRzdW5lb0Byci5paWo0dS5vci5qcDwvY29kZT4pIGhhcwpjb250cmlidXRlZCBzb21lIGZ1bmN0aW9ucyB0byBnaXZlIGJldHRlcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkuICBUaGVzZQpmdW5jdGlvbnMgYXJlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6b3BlbjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6cmVhZDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6d3JpdGU8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemZsdXNoPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpjbG9zZTwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6ZXJyb3I8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemxpYlZlcnNpb248L2NvZGU+LiAgWW91IG1heSBmaW5kCnRoZXNlIGZ1bmN0aW9ucyBtb3JlIGNvbnZlbmllbnQgZm9yIHNpbXBsZSBmaWxlIHJlYWRpbmcgYW5kCndyaXRpbmcsIHRoYW4gdGhvc2UgaW4gdGhlIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlLiAgVGhlc2UgZnVuY3Rpb25zCmFyZSBub3QgKHlldCkgb2ZmaWNpYWxseSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LCBhbmQgYXJlIG1pbmltYWxseQpkb2N1bWVudGVkIGhlcmUuICBJZiB0aGV5IGJyZWFrLCB5b3UgZ2V0IHRvIGtlZXAgYWxsIHRoZSBwaWVjZXMuCkkgaG9wZSB0byBkb2N1bWVudCB0aGVtIHByb3Blcmx5IHdoZW4gdGltZSBwZXJtaXRzLjwvcD4KPHA+WW9zaGlva2EgYWxzbyBjb250cmlidXRlZCBtb2RpZmljYXRpb25zIHRvIGFsbG93IHRoZQpsaWJyYXJ5IHRvIGJlIGJ1aWx0IGFzIGEgV2luZG93cyBETEwuPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy4yLqBFcnJvciBoYW5kbGluZyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImVyci1oYW5kbGluZyI+PC9hPjMuMi6gRXJyb3IgaGFuZGxpbmc8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGUgbGlicmFyeSBpcyBkZXNpZ25lZCB0byByZWNvdmVyIGNsZWFubHkgaW4gYWxsCnNpdHVhdGlvbnMsIGluY2x1ZGluZyB0aGUgd29yc3QtY2FzZSBzaXR1YXRpb24gb2YgZGVjb21wcmVzc2luZwpyYW5kb20gZGF0YS4gIEknbSBub3QgMTAwJSBzdXJlIHRoYXQgaXQgY2FuIGFsd2F5cyBkbyB0aGlzLCBzbwp5b3UgbWlnaHQgd2FudCB0byBhZGQgYSBzaWduYWwgaGFuZGxlciB0byBjYXRjaCBzZWdtZW50YXRpb24KdmlvbGF0aW9ucyBkdXJpbmcgZGVjb21wcmVzc2lvbiBpZiB5b3UgYXJlIGZlZWxpbmcgZXNwZWNpYWxseQpwYXJhbm9pZC4gIEkgd291bGQgYmUgaW50ZXJlc3RlZCBpbiBoZWFyaW5nIG1vcmUgYWJvdXQgdGhlCnJvYnVzdG5lc3Mgb2YgdGhlIGxpYnJhcnkgdG8gY29ycnVwdGVkIGNvbXByZXNzZWQgZGF0YS48L3A+CjxwPlZlcnNpb24gMS4wLjMgbW9yZSByb2J1c3QgaW4gdGhpcyByZXNwZWN0IHRoYW4gYW55CnByZXZpb3VzIHZlcnNpb24uICBJbnZlc3RpZ2F0aW9ucyB3aXRoIFZhbGdyaW5kIChhIHRvb2wgZm9yIGRldGVjdGluZwpwcm9ibGVtcyB3aXRoIG1lbW9yeSBtYW5hZ2VtZW50KSBpbmRpY2F0ZQp0aGF0LCBhdCBsZWFzdCBmb3IgdGhlIGZldyBmaWxlcyBJIHRlc3RlZCwgYWxsIHNpbmdsZS1iaXQgZXJyb3JzCmluIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBhcmUgY2F1Z2h0IHByb3Blcmx5LCB3aXRoIG5vCnNlZ21lbnRhdGlvbiBmYXVsdHMsIG5vIHVzZXMgb2YgdW5pbml0aWFsaXNlZCBkYXRhLCBubyBvdXQgb2YKcmFuZ2UgcmVhZHMgb3Igd3JpdGVzLCBhbmQgbm8gaW5maW5pdGUgbG9vcGluZyBpbiB0aGUgZGVjb21wcmVzc29yLgpTbyBpdCdzIGNlcnRhaW5seSBwcmV0dHkgcm9idXN0LCBhbHRob3VnaApJIHdvdWxkbid0IGNsYWltIGl0IHRvIGJlIHRvdGFsbHkgYm9tYnByb29mLjwvcD4KPHA+VGhlIGZpbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYi5oPC9jb2RlPiBjb250YWlucwphbGwgZGVmaW5pdGlvbnMgbmVlZGVkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEluIHBhcnRpY3VsYXIsIHlvdQpzaG91bGQgZGVmaW5pdGVseSBub3QgaW5jbHVkZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliX3ByaXZhdGUuaDwvY29kZT4uPC9wPgo8cD5JbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliLmg8L2NvZGU+LCB0aGUgdmFyaW91cwpyZXR1cm4gdmFsdWVzIGFyZSBkZWZpbmVkLiAgVGhlIGZvbGxvd2luZyBsaXN0IGlzIG5vdCBpbnRlbmRlZCBhcwphbiBleGhhdXN0aXZlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaXJjdW1zdGFuY2VzIGluIHdoaWNoIGEgZ2l2ZW4KdmFsdWUgbWF5IGJlIHJldHVybmVkIC0tIHRob3NlIGRlc2NyaXB0aW9ucyBhcmUgZ2l2ZW4gbGF0ZXIuClJhdGhlciwgaXQgaXMgaW50ZW5kZWQgdG8gY29udmV5IHRoZSByb3VnaCBtZWFuaW5nIG9mIGVhY2ggcmV0dXJuCnZhbHVlLiAgVGhlIGZpcnN0IGZpdmUgYWN0aW9ucyBhcmUgbm9ybWFsIGFuZCBub3QgaW50ZW5kZWQgdG8KZGVub3RlIGFuIGVycm9yIHNpdHVhdGlvbi48L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5UaGUgcmVxdWVzdGVkIGFjdGlvbiB3YXMgY29tcGxldGVkCiAgIHN1Y2Nlc3NmdWxseS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1JVTl9PSywgQlpfRkxVU0hfT0ssCiAgICBCWl9GSU5JU0hfT0s8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5JbiAKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4sIHRoZSByZXF1ZXN0ZWQKICAgZmx1c2gvZmluaXNoL25vdGhpbmctc3BlY2lhbCBhY3Rpb24gd2FzIGNvbXBsZXRlZAogICBzdWNjZXNzZnVsbHkuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+Q29tcHJlc3Npb24gb2YgZGF0YSB3YXMgY29tcGxldGVkLCBvciB0aGUKICAgbG9naWNhbCBzdHJlYW0gZW5kIHdhcyBkZXRlY3RlZCBkdXJpbmcKICAgZGVjb21wcmVzc2lvbi48L3A+PC9kZD4KPC9kbD48L2Rpdj4KPHA+VGhlIGZvbGxvd2luZyByZXR1cm4gdmFsdWVzIGluZGljYXRlIGFuIGVycm9yIG9mIHNvbWUKa2luZC48L3A+CjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfQ09ORklHX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+SW5kaWNhdGVzIHRoYXQgdGhlIGxpYnJhcnkgaGFzIGJlZW4gaW1wcm9wZXJseQogICBjb21waWxlZCBvbiB5b3VyIHBsYXRmb3JtIC0tIGEgbWFqb3IgY29uZmlndXJhdGlvbiBlcnJvci4KICAgU3BlY2lmaWNhbGx5LCBpdCBtZWFucyB0aGF0CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGNoYXIpPC9jb2RlPiwKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2Yoc2hvcnQpPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YoaW50KTwvY29kZT4gYXJlIG5vdCAxLCAyIGFuZAogICA0IHJlc3BlY3RpdmVseSwgYXMgdGhleSBzaG91bGQgYmUuICBOb3RlIHRoYXQgdGhlIGxpYnJhcnkKICAgc2hvdWxkIHN0aWxsIHdvcmsgcHJvcGVybHkgb24gNjQtYml0IHBsYXRmb3JtcyB3aGljaCBmb2xsb3cKICAgdGhlIExQNjQgcHJvZ3JhbW1pbmcgbW9kZWwgLS0gdGhhdCBpcywgd2hlcmUKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YobG9uZyk8L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNpemVvZih2b2lkKik8L2NvZGU+IGFyZSA4LiAgVW5kZXIKICAgTFA2NCwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2YoaW50KTwvY29kZT4gaXMgc3RpbGwgNCwKICAgc28gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4sIHdoaWNoIGRvZXNuJ3QKICAgdXNlIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxvbmc8L2NvZGU+IHR5cGUsIGlzCiAgIE9LLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRVJST1I8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5XaGVuIHVzaW5nIHRoZSBsaWJyYXJ5LCBpdCBpcyBpbXBvcnRhbnQgdG8gY2FsbAogICB0aGUgZnVuY3Rpb25zIGluIHRoZSBjb3JyZWN0IHNlcXVlbmNlIGFuZCB3aXRoIGRhdGEgc3RydWN0dXJlcwogICAoYnVmZmVycyBldGMpIGluIHRoZSBjb3JyZWN0IHN0YXRlcy4KICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4gY2hlY2tzIGFzIG11Y2ggYXMgaXQKICAgY2FuIHRvIGVuc3VyZSB0aGlzIGlzIGhhcHBlbmluZywgYW5kIHJldHVybnMKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4gaWYgbm90LgogICBDb2RlIHdoaWNoIGNvbXBsaWVzIHByZWNpc2VseSB3aXRoIHRoZSBmdW5jdGlvbiBzZW1hbnRpY3MsIGFzCiAgIGRldGFpbGVkIGJlbG93LCBzaG91bGQgbmV2ZXIgcmVjZWl2ZSB0aGlzIHZhbHVlOyBzdWNoIGFuIGV2ZW50CiAgIGRlbm90ZXMgYnVnZ3kgY29kZSB3aGljaCB5b3Ugc2hvdWxkCiAgIGludmVzdGlnYXRlLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUEFSQU1fRVJST1I8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5SZXR1cm5lZCB3aGVuIGEgcGFyYW1ldGVyIHRvIGEgZnVuY3Rpb24gY2FsbCBpcwogICBvdXQgb2YgcmFuZ2Ugb3Igb3RoZXJ3aXNlIG1hbmlmZXN0bHkgaW5jb3JyZWN0LiAgQXMgd2l0aAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiwgdGhpcwogICBkZW5vdGVzIGEgYnVnIGluIHRoZSBjbGllbnQgY29kZS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfUEFSQU1fRVJST1I8L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPiBpcyBhIGJpdAogICBoYXp5LCBidXQgc3RpbGwgd29ydGggbWFraW5nLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgd2hlbiBhIHJlcXVlc3QgdG8gYWxsb2NhdGUgbWVtb3J5CiAgIGZhaWxlZC4gIE5vdGUgdGhhdCB0aGUgcXVhbnRpdHkgb2YgbWVtb3J5IG5lZWRlZCB0byBkZWNvbXByZXNzCiAgIGEgc3RyZWFtIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIHRoZSBzdHJlYW0ncyBoZWFkZXIgaGFzCiAgIGJlZW4gcmVhZC4gIFNvCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4gYW5kCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gbWF5IHJldHVybgogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gZXZlbiB0aG91Z2ggc29tZQogICBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGhhcyBiZWVuIHJlYWQuICBUaGUgc2FtZSBpcyBub3QgdHJ1ZQogICBmb3IgY29tcHJlc3Npb247IG9uY2UKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+IG9yCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPiBoYXZlCiAgIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQsCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPiBjYW5ub3QKICAgb2NjdXIuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgd2hlbiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIGlzCiAgIGRldGVjdGVkIGR1cmluZyBkZWNvbXByZXNzaW9uLiAgTW9zdCBpbXBvcnRhbnRseSwgdGhpcyBtZWFucwogICB3aGVuIHN0b3JlZCBhbmQgY29tcHV0ZWQgQ1JDcyBmb3IgdGhlIGRhdGEgZG8gbm90IG1hdGNoLiAgVGhpcwogICB2YWx1ZSBpcyBhbHNvIHJldHVybmVkIHVwb24gZGV0ZWN0aW9uIG9mIGFueSBvdGhlciBhbm9tYWx5IGluCiAgIHRoZSBjb21wcmVzc2VkIGRhdGEuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SX01BR0lDPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+QXMgYSBzcGVjaWFsIGNhc2Ugb2YKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9EQVRBX0VSUk9SPC9jb2RlPiwgaXQgaXMKICAgc29tZXRpbWVzIHVzZWZ1bCB0byBrbm93IHdoZW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGRvZXMgbm90CiAgIHN0YXJ0IHdpdGggdGhlIGNvcnJlY3QgbWFnaWMgYnl0ZXMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+J0InICdaJwogICAnaCc8L2NvZGU+KS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0lPX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgYnkKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gd2hlbiB0aGVyZSBpcyBhbgogICBlcnJvciByZWFkaW5nIG9yIHdyaXRpbmcgaW4gdGhlIGNvbXByZXNzZWQgZmlsZSwgYW5kIGJ5CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gZm9yIGF0dGVtcHRzCiAgIHRvIHVzZSBhIGZpbGUgZm9yIHdoaWNoIHRoZSBlcnJvciBpbmRpY2F0b3IgKHZpeiwKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZXJyb3IoZik8L2NvZGU+KSBpcyBzZXQuICBPbgogICByZWNlaXB0IG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfSU9fRVJST1I8L2NvZGU+LCB0aGUKICAgY2FsbGVyIHNob3VsZCBjb25zdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+CiAgIGFuZC9vciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnBlcnJvcjwvY29kZT4gdG8gYWNxdWlyZQogICBvcGVyYXRpbmctc3lzdGVtIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZQogICBwcm9ibGVtLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfVU5FWFBFQ1RFRF9FT0Y8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5SZXR1cm5lZCBieQogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IHdoZW4gdGhlCiAgIGNvbXByZXNzZWQgZmlsZSBmaW5pc2hlcyBiZWZvcmUgdGhlIGxvZ2ljYWwgZW5kIG9mIHN0cmVhbSBpcwogICBkZXRlY3RlZC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09VVEJVRkZfRlVMTDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlJldHVybmVkIGJ5CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT4gdG8KICAgaW5kaWNhdGUgdGhhdCB0aGUgb3V0cHV0IGRhdGEgd2lsbCBub3QgZml0IGludG8gdGhlIG91dHB1dAogICBidWZmZXIgcHJvdmlkZWQuPC9wPjwvZGQ+CjwvZGw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuMy6gTG93LWxldmVsIGludGVyZmFjZSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9Imxvdy1sZXZlbCI+PC9hPjMuMy6gTG93LWxldmVsIGludGVyZmFjZTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy4zLjEuoEJaMl9iekNvbXByZXNzSW5pdCI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiemNvbXByZXNzLWluaXQiPjwvYT4zLjMuMS6gQloyX2J6Q29tcHJlc3NJbml0PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKICBjaGFyICpuZXh0X2luOwogIHVuc2lnbmVkIGludCBhdmFpbF9pbjsKICB1bnNpZ25lZCBpbnQgdG90YWxfaW5fbG8zMjsKICB1bnNpZ25lZCBpbnQgdG90YWxfaW5faGkzMjsKCiAgY2hhciAqbmV4dF9vdXQ7CiAgdW5zaWduZWQgaW50IGF2YWlsX291dDsKICB1bnNpZ25lZCBpbnQgdG90YWxfb3V0X2xvMzI7CiAgdW5zaWduZWQgaW50IHRvdGFsX291dF9oaTMyOwoKICB2b2lkICpzdGF0ZTsKCiAgdm9pZCAqKCpiemFsbG9jKSh2b2lkICosaW50LGludCk7CiAgdm9pZCAoKmJ6ZnJlZSkodm9pZCAqLHZvaWQgKik7CiAgdm9pZCAqb3BhcXVlOwp9IGJ6X3N0cmVhbTsKCmludCBCWjJfYnpDb21wcmVzc0luaXQgKCBiel9zdHJlYW0gKnN0cm0sIAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsb2NrU2l6ZTEwMGssIAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3b3JrRmFjdG9yICk7PC9wcmU+CjxwPlByZXBhcmVzIGZvciBjb21wcmVzc2lvbi4gIFRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6X3N0cmVhbTwvY29kZT4gc3RydWN0dXJlIGhvbGRzIGFsbApkYXRhIHBlcnRhaW5pbmcgdG8gdGhlIGNvbXByZXNzaW9uIGFjdGl2aXR5LiAgQQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6X3N0cmVhbTwvY29kZT4gc3RydWN0dXJlIHNob3VsZCBiZQphbGxvY2F0ZWQgYW5kIGluaXRpYWxpc2VkIHByaW9yIHRvIHRoZSBjYWxsLiAgVGhlIGZpZWxkcyBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6X3N0cmVhbTwvY29kZT4gY29tcHJpc2UgdGhlIGVudGlyZXR5Cm9mIHRoZSB1c2VyLXZpc2libGUgZGF0YS4gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3RhdGU8L2NvZGU+CmlzIGEgcG9pbnRlciB0byB0aGUgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZXMgcmVxdWlyZWQgZm9yCmNvbXByZXNzaW9uLjwvcD4KPHA+Q3VzdG9tIG1lbW9yeSBhbGxvY2F0b3JzIGFyZSBzdXBwb3J0ZWQsIHZpYSBmaWVsZHMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+LCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcGFxdWU8L2NvZGU+LiAgVGhlIHZhbHVlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3BhcXVlPC9jb2RlPiBpcyBwYXNzZWQgdG8gYXMgdGhlIGZpcnN0CmFyZ3VtZW50IHRvIGFsbCBjYWxscyB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6YWxsb2M8L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZnJlZTwvY29kZT4sIGJ1dCBpcyBvdGhlcndpc2UKaWdub3JlZCBieSB0aGUgbGlicmFyeS4gIFRoZSBjYWxsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYyAoCm9wYXF1ZSwgbiwgbSApPC9jb2RlPiBpcyBleHBlY3RlZCB0byByZXR1cm4gYSBwb2ludGVyCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cDwvY29kZT4gdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uICoKbTwvY29kZT4gYnl0ZXMgb2YgbWVtb3J5LCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWUgKApvcGFxdWUsIHAgKTwvY29kZT4gc2hvdWxkIGZyZWUgdGhhdCBtZW1vcnkuPC9wPgo8cD5JZiB5b3UgZG9uJ3Qgd2FudCB0byB1c2UgYSBjdXN0b20gbWVtb3J5IGFsbG9jYXRvciwgc2V0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcGFxdWU8L2NvZGU+IHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TlVMTDwvY29kZT4sIGFuZCB0aGUgbGlicmFyeSB3aWxsIHRoZW4KdXNlIHRoZSBzdGFuZGFyZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm1hbGxvYzwvY29kZT4gLwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZyZWU8L2NvZGU+IHJvdXRpbmVzLjwvcD4KPHA+QmVmb3JlIGNhbGxpbmcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LCBmaWVsZHMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4gc2hvdWxkIGJlIGZpbGxlZAphcHByb3ByaWF0ZWx5LCBhcyBqdXN0IGRlc2NyaWJlZC4gIFVwb24gcmV0dXJuLCB0aGUgaW50ZXJuYWwKc3RhdGUgd2lsbCBoYXZlIGJlZW4gYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW5fbG8zMjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW5faGkzMjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfb3V0X2xvMzI8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX291dF9oaTMyPC9jb2RlPiB3aWxsIGhhdmUgYmVlbgpzZXQgdG8gemVyby4gIFRoZXNlIGZvdXIgZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHRvIGluZm9ybQp0aGUgY2FsbGVyIG9mIHRoZSB0b3RhbCBhbW91bnQgb2YgZGF0YSBwYXNzZWQgaW50byBhbmQgb3V0IG9mIHRoZQpsaWJyYXJ5LCByZXNwZWN0aXZlbHkuICBZb3Ugc2hvdWxkIG5vdCB0cnkgdG8gY2hhbmdlIHRoZW0uICBBcyBvZgp2ZXJzaW9uIDEuMCwgNjQtYml0IGNvdW50cyBhcmUgbWFpbnRhaW5lZCwgZXZlbiBvbiAzMi1iaXQKcGxhdGZvcm1zLCB1c2luZyB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5faGkzMjwvY29kZT4KZmllbGRzIHRvIHN0b3JlIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSBjb3VudC4gIFNvLCBmb3IgZXhhbXBsZSwKdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIGluIGlzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KHRvdGFsX2luX2hpMzIKJmx0OyZsdDsgMzIpICsgdG90YWxfaW5fbG8zMjwvY29kZT4uPC9wPgo8cD5QYXJhbWV0ZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ibG9ja1NpemUxMDBrPC9jb2RlPgpzcGVjaWZpZXMgdGhlIGJsb2NrIHNpemUgdG8gYmUgdXNlZCBmb3IgY29tcHJlc3Npb24uICBJdCBzaG91bGQKYmUgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDkgaW5jbHVzaXZlLCBhbmQgdGhlIGFjdHVhbCBibG9jayBzaXplCnVzZWQgaXMgMTAwMDAwIHggdGhpcyBmaWd1cmUuICA5IGdpdmVzIHRoZSBiZXN0IGNvbXByZXNzaW9uIGJ1dAp0YWtlcyBtb3N0IG1lbW9yeS48L3A+CjxwPlBhcmFtZXRlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gc2hvdWxkCmJlIHNldCB0byBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDQgaW5jbHVzaXZlLiAgMCBpcyBzaWxlbnQsIGFuZApncmVhdGVyIG51bWJlcnMgZ2l2ZSBpbmNyZWFzaW5nbHkgdmVyYm9zZSBtb25pdG9yaW5nL2RlYnVnZ2luZwpvdXRwdXQuICBJZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB3aXRoCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LURCWl9OT19TVERJTzwvY29kZT4sIG5vIHN1Y2ggb3V0cHV0CndpbGwgYXBwZWFyIGZvciBhbnkgdmVyYm9zaXR5IHNldHRpbmcuPC9wPgo8cD5QYXJhbWV0ZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPgpjb250cm9scyBob3cgdGhlIGNvbXByZXNzaW9uIHBoYXNlIGJlaGF2ZXMgd2hlbiBwcmVzZW50ZWQgd2l0aAp3b3JzdCBjYXNlLCBoaWdobHkgcmVwZXRpdGl2ZSwgaW5wdXQgZGF0YS4gIElmIGNvbXByZXNzaW9uIHJ1bnMKaW50byBkaWZmaWN1bHRpZXMgY2F1c2VkIGJ5IHJlcGV0aXRpdmUgZGF0YSwgdGhlIGxpYnJhcnkgc3dpdGNoZXMKZnJvbSB0aGUgc3RhbmRhcmQgc29ydGluZyBhbGdvcml0aG0gdG8gYSBmYWxsYmFjayBhbGdvcml0aG0uICBUaGUKZmFsbGJhY2sgaXMgc2xvd2VyIHRoYW4gdGhlIHN0YW5kYXJkIGFsZ29yaXRobSBieSBwZXJoYXBzIGEKZmFjdG9yIG9mIHRocmVlLCBidXQgYWx3YXlzIGJlaGF2ZXMgcmVhc29uYWJseSwgbm8gbWF0dGVyIGhvdyBiYWQKdGhlIGlucHV0LjwvcD4KPHA+TG93ZXIgdmFsdWVzIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+d29ya0ZhY3RvcjwvY29kZT4KcmVkdWNlIHRoZSBhbW91bnQgb2YgZWZmb3J0IHRoZSBzdGFuZGFyZCBhbGdvcml0aG0gd2lsbCBleHBlbmQKYmVmb3JlIHJlc29ydGluZyB0byB0aGUgZmFsbGJhY2suICBZb3Ugc2hvdWxkIHNldCB0aGlzIHBhcmFtZXRlcgpjYXJlZnVsbHk7IHRvbyBsb3csIGFuZCBtYW55IGlucHV0cyB3aWxsIGJlIGhhbmRsZWQgYnkgdGhlCmZhbGxiYWNrIGFsZ29yaXRobSBhbmQgc28gY29tcHJlc3MgcmF0aGVyIHNsb3dseSwgdG9vIGhpZ2gsIGFuZAp5b3VyIGF2ZXJhZ2UtdG8td29yc3QgY2FzZSBjb21wcmVzc2lvbiB0aW1lcyBjYW4gYmVjb21lIHZlcnkKbGFyZ2UuICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAzMCBnaXZlcyByZWFzb25hYmxlIGJlaGF2aW91ciBvdmVyIGEKd2lkZSByYW5nZSBvZiBjaXJjdW1zdGFuY2VzLjwvcD4KPHA+QWxsb3dhYmxlIHZhbHVlcyByYW5nZSBmcm9tIDAgdG8gMjUwIGluY2x1c2l2ZS4gIDAgaXMgYQpzcGVjaWFsIGNhc2UsIGVxdWl2YWxlbnQgdG8gdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWUgb2YgMzAuPC9wPgo8cD5Ob3RlIHRoYXQgdGhlIGNvbXByZXNzZWQgb3V0cHV0IGdlbmVyYXRlZCBpcyB0aGUgc2FtZQpyZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBmYWxsYmFjayBhbGdvcml0aG0gaXMKdXNlZC48L3A+CjxwPkJlIGF3YXJlIGFsc28gdGhhdCB0aGlzIHBhcmFtZXRlciBtYXkgZGlzYXBwZWFyIGVudGlyZWx5IGluCmZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeS4gIEluIHByaW5jaXBsZSBpdCBzaG91bGQgYmUKcG9zc2libGUgdG8gZGV2aXNlIGEgZ29vZCB3YXkgdG8gYXV0b21hdGljYWxseSBjaG9vc2Ugd2hpY2gKYWxnb3JpdGhtIHRvIHVzZS4gIFN1Y2ggYSBtZWNoYW5pc20gd291bGQgcmVuZGVyIHRoZSBwYXJhbWV0ZXIKb2Jzb2xldGUuPC9wPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX0NPTkZJR19FUlJPUgogIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIG1pcy1jb21waWxlZApCWl9QQVJBTV9FUlJPUgogIGlmIHN0cm0gaXMgTlVMTCAKICBvciBibG9ja1NpemUgJmx0OyAxIG9yIGJsb2NrU2l6ZSAmZ3Q7IDkKICBvciB2ZXJib3NpdHkgJmx0OyAwIG9yIHZlcmJvc2l0eSAmZ3Q7IDQKICBvciB3b3JrRmFjdG9yICZsdDsgMCBvciB3b3JrRmFjdG9yICZndDsgMjUwCkJaX01FTV9FUlJPUiAKICBpZiBub3QgZW5vdWdoIG1lbW9yeSBpcyBhdmFpbGFibGUKQlpfT0sgCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6Q29tcHJlc3MKICBpZiBCWl9PSyBpcyByZXR1cm5lZAogIG5vIHNwZWNpZmljIGFjdGlvbiBuZWVkZWQgaW4gY2FzZSBvZiBlcnJvcjwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjMuMi6gQloyX2J6Q29tcHJlc3MiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpDb21wcmVzcyI+PC9hPjMuMy4yLqBCWjJfYnpDb21wcmVzczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6Q29tcHJlc3MgKCBiel9zdHJlYW0gKnN0cm0sIGludCBhY3Rpb24gKTs8L3ByZT4KPHA+UHJvdmlkZXMgbW9yZSBpbnB1dCBhbmQvb3Igb3V0cHV0IGJ1ZmZlciBzcGFjZSBmb3IgdGhlCmxpYnJhcnkuICBUaGUgY2FsbGVyIG1haW50YWlucyBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMsIGFuZApjYWxscyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB0byB0cmFuc2ZlcgpkYXRhIGJldHdlZW4gdGhlbS48L3A+CjxwPkJlZm9yZSBlYWNoIGNhbGwgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pbjwvY29kZT4gc2hvdWxkIHBvaW50IGF0IHRoZSBkYXRhCnRvIGJlIGNvbXByZXNzZWQsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPgpzaG91bGQgaW5kaWNhdGUgaG93IG1hbnkgYnl0ZXMgdGhlIGxpYnJhcnkgbWF5IHJlYWQuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW48L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgpvZiBieXRlcyBpdCBoYXMgcmVhZC48L3A+CjxwPlNpbWlsYXJseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4gc2hvdWxkCnBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSBjb21wcmVzc2VkIGRhdGEgaXMgdG8gYmUgcGxhY2VkLAp3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfb3V0PC9jb2RlPiBpbmRpY2F0aW5nIGhvdwptdWNoIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfb3V0PC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXQ8L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgpvZiBieXRlcyBvdXRwdXQuPC9wPgo8cD5Zb3UgbWF5IHByb3ZpZGUgYW5kIHJlbW92ZSBhcyBsaXR0bGUgb3IgYXMgbXVjaCBkYXRhIGFzIHlvdQpsaWtlIG9uIGVhY2ggY2FsbCBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi4gIEluIHRoZSBsaW1pdCwKaXQgaXMgYWNjZXB0YWJsZSB0byBzdXBwbHkgYW5kIHJlbW92ZSBkYXRhIG9uZSBieXRlIGF0IGEgdGltZSwKYWx0aG91Z2ggdGhpcyB3b3VsZCBiZSB0ZXJyaWJseSBpbmVmZmljaWVudC4gIFlvdSBzaG91bGQgYWx3YXlzCmVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBieXRlIG9mIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUgYXQKZWFjaCBjYWxsLjwvcD4KPHA+QSBzZWNvbmQgcHVycG9zZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiBpcyB0byByZXF1ZXN0IGEKY2hhbmdlIG9mIG1vZGUgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLjwvcD4KPHA+Q29uY2VwdHVhbGx5LCBhIGNvbXByZXNzZWQgc3RyZWFtIGNhbiBiZSBpbiBvbmUgb2YgZm91cgpzdGF0ZXM6IElETEUsIFJVTk5JTkcsIEZMVVNISU5HIGFuZCBGSU5JU0hJTkcuICBCZWZvcmUKaW5pdGlhbGlzYXRpb24KKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPikgYW5kIGFmdGVyCnRlcm1pbmF0aW9uICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiksCmEgc3RyZWFtIGlzIHJlZ2FyZGVkIGFzIElETEUuPC9wPgo8cD5VcG9uIGluaXRpYWxpc2F0aW9uCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4pLCB0aGUgc3RyZWFtCmlzIHBsYWNlZCBpbiB0aGUgUlVOTklORyBzdGF0ZS4gIFN1YnNlcXVlbnQgY2FsbHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gc2hvdWxkIHBhc3MKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9SVU48L2NvZGU+IGFzIHRoZSByZXF1ZXN0ZWQgYWN0aW9uOwpvdGhlciBhY3Rpb25zIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIHJlc3VsdCBpbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPi48L3A+CjxwPkF0IHNvbWUgcG9pbnQsIHRoZSBjYWxsaW5nIHByb2dyYW0gd2lsbCBoYXZlIHByb3ZpZGVkIGFsbAp0aGUgaW5wdXQgZGF0YSBpdCB3YW50cyB0by4gIEl0IHdpbGwgdGhlbiB3YW50IHRvIGZpbmlzaCB1cCAtLSBpbgplZmZlY3QsIGFza2luZyB0aGUgbGlicmFyeSB0byBwcm9jZXNzIGFueSBkYXRhIGl0IG1pZ2h0IGhhdmUKYnVmZmVyZWQgaW50ZXJuYWxseS4gIEluIHRoaXMgc3RhdGUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHdpbGwgbm8gbG9uZ2VyCmF0dGVtcHQgdG8gcmVhZCBkYXRhIGZyb20KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiwgYnV0IGl0IHdpbGwgd2FudCB0bwp3cml0ZSBkYXRhIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9vdXQ8L2NvZGU+LiAgQmVjYXVzZQp0aGUgb3V0cHV0IGJ1ZmZlciBzdXBwbGllZCBieSB0aGUgdXNlciBjYW4gYmUgYXJiaXRyYXJpbHkgc21hbGwsCnRoZSBmaW5pc2hpbmctdXAgb3BlcmF0aW9uIGNhbm5vdCBuZWNlc3NhcmlseSBiZSBkb25lIHdpdGggYQpzaW5nbGUgY2FsbCBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi48L3A+CjxwPkluc3RlYWQsIHRoZSBjYWxsaW5nIHByb2dyYW0gcGFzc2VzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiBhcyBhbiBhY3Rpb24gdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uICBUaGlzIGNoYW5nZXMKdGhlIHN0cmVhbSdzIHN0YXRlIHRvIEZJTklTSElORy4gIEFueSByZW1haW5pbmcgaW5wdXQgKGllLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW5bMCAuLiBhdmFpbF9pbi0xXTwvY29kZT4pIGlzCmNvbXByZXNzZWQgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAgVG8gZG8gdGhpcywKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gbXVzdCBiZSBjYWxsZWQKcmVwZWF0ZWRseSB1bnRpbCBhbGwgdGhlIG91dHB1dCBoYXMgYmVlbiBjb25zdW1lZC4gIEF0IHRoYXQKcG9pbnQsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHJldHVybnMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiwgYW5kIHRoZSBzdHJlYW0ncwpzdGF0ZSBpcyBzZXQgYmFjayB0byBJRExFLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiBzaG91bGQgdGhlbiBiZQpjYWxsZWQuPC9wPgo8cD5KdXN0IHRvIG1ha2Ugc3VyZSB0aGUgY2FsbGluZyBwcm9ncmFtIGRvZXMgbm90IGNoZWF0LCB0aGUKbGlicmFyeSBtYWtlcyBhIG5vdGUgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4KYXQgdGhlIHRpbWUgb2YgdGhlIGZpcnN0IGNhbGwgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2hpY2ggaGFzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiBhcyBhbiBhY3Rpb24gKGllLCBhdAp0aGUgdGltZSB0aGUgcHJvZ3JhbSBoYXMgYW5ub3VuY2VkIGl0cyBpbnRlbnRpb24gdG8gbm90IHN1cHBseQphbnkgbW9yZSBpbnB1dCkuICBCeSBjb21wYXJpbmcgdGhpcyB2YWx1ZSB3aXRoIHRoYXQgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gb3ZlciBzdWJzZXF1ZW50IGNhbGxzCnRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LCB0aGUgbGlicmFyeQpjYW4gZGV0ZWN0IGFueSBhdHRlbXB0cyB0byBzbGlwIGluIG1vcmUgZGF0YSB0byBjb21wcmVzcy4gIEFueQpjYWxscyBmb3Igd2hpY2ggdGhpcyBpcyBkZXRlY3RlZCB3aWxsIHJldHVybgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPi4gIFRoaXMKaW5kaWNhdGVzIGEgcHJvZ3JhbW1pbmcgbWlzdGFrZSB3aGljaCBzaG91bGQgYmUgY29ycmVjdGVkLjwvcD4KPHA+SW5zdGVhZCBvZiBhc2tpbmcgdG8gZmluaXNoLCB0aGUgY2FsbGluZyBwcm9ncmFtIG1heSBhc2sKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gdG8gdGFrZSBhbGwgdGhlCnJlbWFpbmluZyBpbnB1dCwgY29tcHJlc3MgaXQgYW5kIHRlcm1pbmF0ZSB0aGUgY3VycmVudAooQnVycm93cy1XaGVlbGVyKSBjb21wcmVzc2lvbiBibG9jay4gIFRoaXMgY291bGQgYmUgdXNlZnVsIGZvcgplcnJvciBjb250cm9sIHB1cnBvc2VzLiAgVGhlIG1lY2hhbmlzbSBpcyBhbmFsb2dvdXMgdG8gdGhhdCBmb3IKZmluaXNoaW5nOiBjYWxsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+CndpdGggYW4gYWN0aW9uIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRkxVU0g8L2NvZGU+LApyZW1vdmUgb3V0cHV0IGRhdGEsIGFuZCBwZXJzaXN0IHdpdGggdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRkxVU0g8L2NvZGU+IGFjdGlvbiB1bnRpbCB0aGUgdmFsdWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9SVU48L2NvZGU+IGlzIHJldHVybmVkLiAgQXMgd2l0aApmaW5pc2hpbmcsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+CmRldGVjdHMgYW55IGF0dGVtcHQgdG8gcHJvdmlkZSBtb3JlIGlucHV0IGRhdGEgb25jZSB0aGUgZmx1c2ggaGFzCmJlZ3VuLjwvcD4KPHA+T25jZSB0aGUgZmx1c2ggaXMgY29tcGxldGUsIHRoZSBzdHJlYW0gcmV0dXJucyB0byB0aGUKbm9ybWFsIFJVTk5JTkcgc3RhdGUuPC9wPgo8cD5UaGlzIGFsbCBzb3VuZHMgcHJldHR5IGNvbXBsZXgsIGJ1dCBpc24ndCByZWFsbHkuICBIZXJlJ3MgYQp0YWJsZSB3aGljaCBzaG93cyB3aGljaCBhY3Rpb25zIGFyZSBhbGxvd2FibGUgaW4gZWFjaCBzdGF0ZSwgd2hhdAphY3Rpb24gd2lsbCBiZSB0YWtlbiwgd2hhdCB0aGUgbmV4dCBzdGF0ZSBpcywgYW5kIHdoYXQgdGhlCm5vbi1lcnJvciByZXR1cm4gdmFsdWVzIGFyZS4gIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZXhwbGljaXRseSBhc2sKd2hhdCBzdGF0ZSB0aGUgc3RyZWFtIGlzIGluLCBidXQgbm9yIGRvIHlvdSBuZWVkIHRvIC0tIGl0IGNhbiBiZQppbmZlcnJlZCBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+SURMRS9hbnkKICBJbGxlZ2FsLiAgSURMRSBzdGF0ZSBvbmx5IGV4aXN0cyBhZnRlciBCWjJfYnpDb21wcmVzc0VuZCBvcgogIGJlZm9yZSBCWjJfYnpDb21wcmVzc0luaXQuCiAgUmV0dXJuIHZhbHVlID0gQlpfU0VRVUVOQ0VfRVJST1IKClJVTk5JTkcvQlpfUlVOCiAgQ29tcHJlc3MgZnJvbSBuZXh0X2luIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUuCiAgTmV4dCBzdGF0ZSA9IFJVTk5JTkcKICBSZXR1cm4gdmFsdWUgPSBCWl9SVU5fT0sKClJVTk5JTkcvQlpfRkxVU0gKICBSZW1lbWJlciBjdXJyZW50IHZhbHVlIG9mIG5leHRfaW4uIENvbXByZXNzIGZyb20gbmV4dF9pbgogIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUsIGJ1dCBkbyBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LgogIE5leHQgc3RhdGUgPSBGTFVTSElORwogIFJldHVybiB2YWx1ZSA9IEJaX0ZMVVNIX09LCgpSVU5OSU5HL0JaX0ZJTklTSAogIFJlbWVtYmVyIGN1cnJlbnQgdmFsdWUgb2YgbmV4dF9pbi4gQ29tcHJlc3MgZnJvbSBuZXh0X2luCiAgdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgYnV0IGRvIG5vdCBhY2NlcHQgYW55IG1vcmUgaW5wdXQuCiAgTmV4dCBzdGF0ZSA9IEZJTklTSElORwogIFJldHVybiB2YWx1ZSA9IEJaX0ZJTklTSF9PSwoKRkxVU0hJTkcvQlpfRkxVU0gKICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgCiAgYnV0IGRvIG5vdCBhY2NlcHQgYW55IG1vcmUgaW5wdXQuCiAgSWYgYWxsIHRoZSBleGlzdGluZyBpbnB1dCBoYXMgYmVlbiB1c2VkIHVwIGFuZCBhbGwgY29tcHJlc3NlZAogIG91dHB1dCBoYXMgYmVlbiByZW1vdmVkCiAgICBOZXh0IHN0YXRlID0gUlVOTklORzsgUmV0dXJuIHZhbHVlID0gQlpfUlVOX09LCiAgZWxzZQogICAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9GTFVTSF9PSwoKRkxVU0hJTkcvb3RoZXIgICAgIAogIElsbGVnYWwuCiAgUmV0dXJuIHZhbHVlID0gQlpfU0VRVUVOQ0VfRVJST1IKCkZJTklTSElORy9CWl9GSU5JU0gKICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwKICBidXQgdG8gbm90IGFjY2VwdCBhbnkgbW9yZSBpbnB1dC4gIAogIElmIGFsbCB0aGUgZXhpc3RpbmcgaW5wdXQgaGFzIGJlZW4gdXNlZCB1cCBhbmQgYWxsIGNvbXByZXNzZWQKICBvdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZAogICAgTmV4dCBzdGF0ZSA9IElETEU7IFJldHVybiB2YWx1ZSA9IEJaX1NUUkVBTV9FTkQKICBlbHNlCiAgICBOZXh0IHN0YXRlID0gRklOSVNISU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9GSU5JU0hfT0sKCkZJTklTSElORy9vdGhlcgogIElsbGVnYWwuCiAgUmV0dXJuIHZhbHVlID0gQlpfU0VRVUVOQ0VfRVJST1I8L3ByZT4KPHA+VGhhdCBzdGlsbCBsb29rcyBjb21wbGljYXRlZD8gIFdlbGwsIGZhaXIgZW5vdWdoLiAgVGhlCnVzdWFsIHNlcXVlbmNlIG9mIGNhbGxzIGZvciBjb21wcmVzc2luZyBhIGxvYWQgb2YgZGF0YSBpczo8L3A+CjxkaXYgY2xhc3M9Im9yZGVyZWRsaXN0Ij48b2wgY2xhc3M9Im9yZGVyZWRsaXN0IiB0eXBlPSIxIj4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+R2V0IHN0YXJ0ZWQgd2l0aAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSI+PHA+U2hvdmVsIGRhdGEgaW4gYW5kIHNobHVycCBvdXQgaXRzIGNvbXByZXNzZWQgZm9ybQogIHVzaW5nIHplcm8gb3IgbW9yZSBjYWxscyBvZgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHdpdGggYWN0aW9uID0KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1JVTjwvY29kZT4uPC9wPjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iPjxwPkZpbmlzaCB1cC4gUmVwZWF0ZWRseSBjYWxsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2l0aCBhY3Rpb24gPQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiwgY29weWluZyBvdXQgdGhlCiAgY29tcHJlc3NlZCBvdXRwdXQsIHVudGlsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiBpcwogIHJldHVybmVkLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIj48cD5DbG9zZSB1cCBhbmQgZ28gaG9tZS4gIENhbGwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPi48L3A+PC9saT4KPC9vbD48L2Rpdj4KPHA+SWYgdGhlIGRhdGEgeW91IHdhbnQgdG8gY29tcHJlc3MgZml0cyBpbnRvIHlvdXIgaW5wdXQKYnVmZmVyIGFsbCBhdCBvbmNlLCB5b3UgY2FuIHNraXAgdGhlIGNhbGxzIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3MgKCAuLi4sIEJaX1JVTiApPC9jb2RlPgphbmQganVzdCBkbyB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzcyAoIC4uLiwgQlpfRklOSVNICik8L2NvZGU+IGNhbGxzLjwvcD4KPHA+QWxsIHJlcXVpcmVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LiAgVGhlCmNvbXByZXNzaW9uIGxpYnJhcnkgY2FuIGFjY2VwdCBhbnkgZGF0YSBhdCBhbGwgKG9idmlvdXNseSkuICBTbwp5b3Ugc2hvdWxkbid0IGdldCBhbnkgZXJyb3IgcmV0dXJuIHZhbHVlcyBmcm9tIHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiBjYWxscy4gIElmIHlvdQpkbywgdGhleSB3aWxsIGJlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRVJST1I8L2NvZGU+LCBhbmQgaW5kaWNhdGUKYSBidWcgaW4geW91ciBwcm9ncmFtbWluZy48L3A+CjxwPlRyaXZpYWwgb3RoZXIgcG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9QQVJBTV9FUlJPUgogIGlmIHN0cm0gaXMgTlVMTCwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuMy4zLqBCWjJfYnpDb21wcmVzc0VuZCI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiekNvbXByZXNzLWVuZCI+PC9hPjMuMy4zLqBCWjJfYnpDb21wcmVzc0VuZDwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6Q29tcHJlc3NFbmQgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBjb21wcmVzc2lvbgpzdHJlYW0uPC9wPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMCkJaX09LICAgICAgICAgICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy4zLjQuoEJaMl9iekRlY29tcHJlc3NJbml0Ij4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6RGVjb21wcmVzcy1pbml0Ij48L2E+My4zLjQuoEJaMl9iekRlY29tcHJlc3NJbml0PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpEZWNvbXByZXNzSW5pdCAoIGJ6X3N0cmVhbSAqc3RybSwgaW50IHZlcmJvc2l0eSwgaW50IHNtYWxsICk7PC9wcmU+CjxwPlByZXBhcmVzIGZvciBkZWNvbXByZXNzaW9uLiAgQXMgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sIGEKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IHJlY29yZCBzaG91bGQgYmUKYWxsb2NhdGVkIGFuZCBpbml0aWFsaXNlZCBiZWZvcmUgdGhlIGNhbGwuICBGaWVsZHMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4gc2hvdWxkIGJlIHNldCBpZiBhIGN1c3RvbQptZW1vcnkgYWxsb2NhdG9yIGlzIHJlcXVpcmVkLCBvciBtYWRlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TlVMTDwvY29kZT4gZm9yIHRoZSBub3JtYWwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tYWxsb2M8L2NvZGU+IC8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVlPC9jb2RlPiByb3V0aW5lcy4gIFVwb24gcmV0dXJuLCB0aGUKaW50ZXJuYWwgc3RhdGUgd2lsbCBoYXZlIGJlZW4gaW5pdGlhbGlzZWQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXQ8L2NvZGU+IHdpbGwgYmUgemVyby48L3A+CjxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXIKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KPHA+SWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zbWFsbDwvY29kZT4gaXMgbm9uemVybywgdGhlCmxpYnJhcnkgd2lsbCB1c2UgYW4gYWx0ZXJuYXRpdmUgZGVjb21wcmVzc2lvbiBhbGdvcml0aG0gd2hpY2gKdXNlcyBsZXNzIG1lbW9yeSBidXQgYXQgdGhlIGNvc3Qgb2YgZGVjb21wcmVzc2luZyBtb3JlIHNsb3dseQoocm91Z2hseSBzcGVha2luZywgaGFsZiB0aGUgc3BlZWQsIGJ1dCB0aGUgbWF4aW11bSBtZW1vcnkKcmVxdWlyZW1lbnQgZHJvcHMgdG8gYXJvdW5kIDIzMDBrKS4gIFNlZSA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iI3VzaW5nIiB0aXRsZT0iMi6gSG93IHRvIHVzZSBiemlwMiI+SG93IHRvIHVzZSBiemlwMjwvYT4KZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbWVtb3J5IG1hbmFnZW1lbnQuPC9wPgo8cD5Ob3RlIHRoYXQgdGhlIGFtb3VudCBvZiBtZW1vcnkgbmVlZGVkIHRvIGRlY29tcHJlc3MgYQpzdHJlYW0gY2Fubm90IGJlIGRldGVybWluZWQgdW50aWwgdGhlIHN0cmVhbSdzIGhlYWRlciBoYXMgYmVlbgpyZWFkLCBzbyBldmVuIGlmCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+IHN1Y2NlZWRzLCBhCnN1YnNlcXVlbnQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPgpjb3VsZCBmYWlsIHdpdGgKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NRU1fRVJST1I8L2NvZGU+LjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKQlpfUEFSQU1fRVJST1IKICBpZiAoIHNtYWxsICE9IDAgJmFtcDsmYW1wOyBzbWFsbCAhPSAxICkKICBvciAodmVyYm9zaXR5ICZsdDs7IDAgfHwgdmVyYm9zaXR5ICZndDsgNCkKQlpfTUVNX0VSUk9SCiAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGU8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpEZWNvbXByZXNzCiAgaWYgQlpfT0sgd2FzIHJldHVybmVkCiAgbm8gc3BlY2lmaWMgYWN0aW9uIHJlcXVpcmVkIGluIGNhc2Ugb2YgZXJyb3I8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy4zLjUuoEJaMl9iekRlY29tcHJlc3MiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpEZWNvbXByZXNzIj48L2E+My4zLjUuoEJaMl9iekRlY29tcHJlc3M8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekRlY29tcHJlc3MgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KPHA+UHJvdmlkZXMgbW9yZSBpbnB1dCBhbmQvb3V0IG91dHB1dCBidWZmZXIgc3BhY2UgZm9yIHRoZQpsaWJyYXJ5LiAgVGhlIGNhbGxlciBtYWludGFpbnMgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLCBhbmQgdXNlcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHRvIHRyYW5zZmVyCmRhdGEgYmV0d2VlbiB0aGVtLjwvcD4KPHA+QmVmb3JlIGVhY2ggY2FsbCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW48L2NvZGU+IHNob3VsZCBwb2ludCBhdCB0aGUKY29tcHJlc3NlZCBkYXRhLCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4Kc2hvdWxkIGluZGljYXRlIGhvdyBtYW55IGJ5dGVzIHRoZSBsaWJyYXJ5IG1heSByZWFkLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW48L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgpvZiBieXRlcyBpdCBoYXMgcmVhZC48L3A+CjxwPlNpbWlsYXJseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4gc2hvdWxkCnBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSB1bmNvbXByZXNzZWQgb3V0cHV0IGlzIHRvIGJlCnBsYWNlZCwgd2l0aCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX291dDwvY29kZT4KaW5kaWNhdGluZyBob3cgbXVjaCBvdXRwdXQgc3BhY2UgaXMgYXZhaWxhYmxlLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB1cGRhdGVzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9vdXQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX291dDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfb3V0PC9jb2RlPiB0byByZWZsZWN0IHRoZSBudW1iZXIKb2YgYnl0ZXMgb3V0cHV0LjwvcD4KPHA+WW91IG1heSBwcm92aWRlIGFuZCByZW1vdmUgYXMgbGl0dGxlIG9yIGFzIG11Y2ggZGF0YSBhcyB5b3UKbGlrZSBvbiBlYWNoIGNhbGwgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPi4gIEluIHRoZSBsaW1pdCwKaXQgaXMgYWNjZXB0YWJsZSB0byBzdXBwbHkgYW5kIHJlbW92ZSBkYXRhIG9uZSBieXRlIGF0IGEgdGltZSwKYWx0aG91Z2ggdGhpcyB3b3VsZCBiZSB0ZXJyaWJseSBpbmVmZmljaWVudC4gIFlvdSBzaG91bGQgYWx3YXlzCmVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBieXRlIG9mIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUgYXQKZWFjaCBjYWxsLjwvcD4KPHA+VXNlIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4gaXMKc2ltcGxlciB0aGFuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LjwvcD4KPHA+WW91IHNob3VsZCBwcm92aWRlIGlucHV0IGFuZCByZW1vdmUgb3V0cHV0IGFzIGRlc2NyaWJlZAphYm92ZSwgYW5kIHJlcGVhdGVkbHkgY2FsbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IHVudGlsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gaXMgcmV0dXJuZWQuCkFwcGVhcmFuY2Ugb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPgpkZW5vdGVzIHRoYXQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPgpoYXMgZGV0ZWN0ZWQgdGhlIGxvZ2ljYWwgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiB3aWxsIG5vdApwcm9kdWNlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gdW50aWwgYWxsCm91dHB1dCBkYXRhIGhhcyBiZWVuIHBsYWNlZCBpbnRvIHRoZSBvdXRwdXQgYnVmZmVyLCBzbyBvbmNlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gYXBwZWFycywgeW91IGFyZQpndWFyYW50ZWVkIHRvIGhhdmUgYXZhaWxhYmxlIGFsbCB0aGUgZGVjb21wcmVzc2VkIG91dHB1dCwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4gY2FuIHNhZmVseQpiZSBjYWxsZWQuPC9wPgo8cD5JZiBjYXNlIG9mIGFuIGVycm9yIHJldHVybiB2YWx1ZSwgeW91IHNob3VsZCBjYWxsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4gdG8gY2xlYW4gdXAKYW5kIHJlbGVhc2UgbWVtb3J5LjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9QQVJBTV9FUlJPUgogIGlmIHN0cm0gaXMgTlVMTCBvciBzdHJtLSZndDtzIGlzIE5VTEwKICBvciBzdHJtLSZndDthdmFpbF9vdXQgJmx0OyAxCkJaX0RBVEFfRVJST1IKICBpZiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIGlzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIHN0cmVhbQpCWl9EQVRBX0VSUk9SX01BR0lDCiAgaWYgdGhlIGNvbXByZXNzZWQgc3RyZWFtIGRvZXNuJ3QgYmVnaW4gd2l0aCB0aGUgcmlnaHQgbWFnaWMgYnl0ZXMKQlpfTUVNX0VSUk9SCiAgaWYgdGhlcmUgd2Fzbid0IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxlCkJaX1NUUkVBTV9FTkQKICBpZiB0aGUgbG9naWNhbCBlbmQgb2YgdGhlIGRhdGEgc3RyZWFtIHdhcyBkZXRlY3RlZCBhbmQgYWxsCiAgb3V0cHV0IGluIGhhcyBiZWVuIGNvbnN1bWVkLCBlZyBzLS0mZ3Q7YXZhaWxfb3V0ICZndDsgMApCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9iekRlY29tcHJlc3MKICBpZiBCWl9PSyB3YXMgcmV0dXJuZWQKQloyX2J6RGVjb21wcmVzc0VuZAogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjMuNi6gQloyX2J6RGVjb21wcmVzc0VuZCI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiekRlY29tcHJlc3MtZW5kIj48L2E+My4zLjYuoEJaMl9iekRlY29tcHJlc3NFbmQ8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekRlY29tcHJlc3NFbmQgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBkZWNvbXByZXNzaW9uCnN0cmVhbS48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICBOb25lLjwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy40LqBIaWdoLWxldmVsIGludGVyZmFjZSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImhsLWludGVyZmFjZSI+PC9hPjMuNC6gSGlnaC1sZXZlbCBpbnRlcmZhY2U8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGlzIGludGVyZmFjZSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGZpbGVzLiAgRmlyc3QsIHNvbWUKZ2VuZXJhbCBwb2ludHMuPC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJidWxsZXQiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5BbGwgb2YgdGhlIGZ1bmN0aW9ucyB0YWtlIGFuCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5pbnQqPC9jb2RlPiBmaXJzdCBhcmd1bWVudCwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+LiAgQWZ0ZXIgZWFjaCBjYWxsLAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gc2hvdWxkIGJlIGNvbnN1bHRlZAogIGZpcnN0IHRvIGRldGVybWluZSB0aGUgb3V0Y29tZSBvZiB0aGUgY2FsbC4gIElmCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+LCB0aGUgY2FsbCBjb21wbGV0ZWQKICBzdWNjZXNzZnVsbHksIGFuZCBvbmx5IHRoZW4gc2hvdWxkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCiAgZnVuY3Rpb24gKGlmIGFueSkgYmUgY29uc3VsdGVkLiAgSWYKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGlzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9JT19FUlJPUjwvY29kZT4sIHRoZXJlIHdhcyBhbgogIGVycm9yIHJlYWRpbmcvd3JpdGluZyB0aGUgdW5kZXJseWluZyBjb21wcmVzc2VkIGZpbGUsIGFuZCB5b3UKICBzaG91bGQgdGhlbiBjb25zdWx0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXJybm88L2NvZGU+IC8KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnBlcnJvcjwvY29kZT4gdG8gZGV0ZXJtaW5lIHRoZSBjYXVzZQogIG9mIHRoZSBkaWZmaWN1bHR5LiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPgogIG1heSBhbHNvIGJlIHNldCB0byB2YXJpb3VzIG90aGVyIHZhbHVlczsgcHJlY2lzZSBkZXRhaWxzIGFyZQogIGdpdmVuIG9uIGEgcGVyLWZ1bmN0aW9uIGJhc2lzIGJlbG93LjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5JZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGluZGljYXRlcwogIGFuIGVycm9yIChpZSwgYW55dGhpbmcgZXhjZXB0CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT4gYW5kCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiksIHlvdSBzaG91bGQKICBpbW1lZGlhdGVseSBjYWxsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+IChvcgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4sIGRlcGVuZGluZyBvbgogIHdoZXRoZXIgeW91IGFyZSBhdHRlbXB0aW5nIHRvIHJlYWQgb3IgdG8gd3JpdGUpIHRvIGZyZWUgdXAgYWxsCiAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3RyZWFtLiAgT25jZSBhbiBlcnJvciBoYXMgYmVlbgogIGluZGljYXRlZCwgYmVoYXZpb3VyIG9mIGFsbCBjYWxscyBleGNlcHQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4KICAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPikgaXMKICB1bmRlZmluZWQuICBUaGUgaW1wbGljYXRpb24gaXMgdGhhdCAoMSkKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHNob3VsZCBiZSBjaGVja2VkCiAgYWZ0ZXIgZWFjaCBjYWxsLCBhbmQgKDIpIGlmCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpbmRpY2F0ZXMgYW4gZXJyb3IsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+CiAgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4pIHNob3VsZCB0aGVuCiAgYmUgY2FsbGVkIHRvIGNsZWFuIHVwLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5GSUxFKjwvY29kZT4gYXJndW1lbnRzCiAgcGFzc2VkIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+IC8KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gc2hvdWxkIGJlIHNldAogIHRvIGJpbmFyeSBtb2RlLiAgTW9zdCBVbml4IHN5c3RlbXMgd2lsbCBkbyB0aGlzIGJ5IGRlZmF1bHQsIGJ1dAogIG90aGVyIHBsYXRmb3JtcywgaW5jbHVkaW5nIFdpbmRvd3MgYW5kIE1hYywgd2lsbCBub3QuICBJZiB5b3UKICBvbWl0IHRoaXMsIHlvdSBtYXkgZW5jb3VudGVyIHByb2JsZW1zIHdoZW4gbW92aW5nIGNvZGUgdG8gbmV3CiAgcGxhdGZvcm1zLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5NZW1vcnkgYWxsb2NhdGlvbiByZXF1ZXN0cyBhcmUgaGFuZGxlZCBieQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFsbG9jPC9jb2RlPiAvCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVlPC9jb2RlPi4gIEF0IHByZXNlbnQgdGhlcmUgaXMgbm8KICBmYWNpbGl0eSBmb3IgdXNlci1kZWZpbmVkIG1lbW9yeSBhbGxvY2F0b3JzIGluIHRoZSBmaWxlIEkvTwogIGZ1bmN0aW9ucyAoY291bGQgZWFzaWx5IGJlIGFkZGVkLCB0aG91Z2gpLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuNC4xLqBCWjJfYnpSZWFkT3BlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJienJlYWRvcGVuIj48L2E+My40LjEuoEJaMl9ielJlYWRPcGVuPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgdm9pZCBCWkZJTEU7CgpCWkZJTEUgKkJaMl9ielJlYWRPcGVuKCBpbnQgKmJ6ZXJyb3IsIEZJTEUgKmYsIAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyYm9zaXR5LCBpbnQgc21hbGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVudXNlZCwgaW50IG5VbnVzZWQgKTs8L3ByZT4KPHA+UHJlcGFyZSB0byByZWFkIGNvbXByZXNzZWQgZGF0YSBmcm9tIGZpbGUgaGFuZGxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4gc2hvdWxkIHJlZmVyIHRvIGEgZmlsZSB3aGljaApoYXMgYmVlbiBvcGVuZWQgZm9yIHJlYWRpbmcsIGFuZCBmb3Igd2hpY2ggdGhlIGVycm9yIGluZGljYXRvcgooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZXJyb3IoZik8L2NvZGU+KWlzIG5vdCBzZXQuICBJZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNtYWxsPC9jb2RlPiBpcyAxLCB0aGUgbGlicmFyeSB3aWxsIHRyeQp0byBkZWNvbXByZXNzIHVzaW5nIGxlc3MgbWVtb3J5LCBhdCB0aGUgZXhwZW5zZSBvZiBzcGVlZC48L3A+CjxwPkZvciByZWFzb25zIGV4cGxhaW5lZCBiZWxvdywKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aWxsIGRlY29tcHJlc3MgdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+blVudXNlZDwvY29kZT4gYnl0ZXMgc3RhcnRpbmcgYXQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+LCBiZWZvcmUgc3RhcnRpbmcgdG8gcmVhZApmcm9tIHRoZSBmaWxlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4uICBBdCBtb3N0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUFYX1VOVVNFRDwvY29kZT4gYnl0ZXMgbWF5IGJlCnN1cHBsaWVkIGxpa2UgdGhpcy4gIElmIHRoaXMgZmFjaWxpdHkgaXMgbm90IHJlcXVpcmVkLCB5b3Ugc2hvdWxkCnBhc3MgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5OVUxMPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4wPC9jb2RlPiBmb3IKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+IGFuZApuPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5VbnVzZWQ8L2NvZGU+IHJlc3BlY3RpdmVseS48L3A+CjxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4sIHNlZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPi48L3A+CjxwPlRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCB0byBkZWNvbXByZXNzIGEgZmlsZSBjYW5ub3QgYmUKZGV0ZXJtaW5lZCB1bnRpbCB0aGUgZmlsZSdzIGhlYWRlciBoYXMgYmVlbiByZWFkLiAgU28gaXQgaXMKcG9zc2libGUgdGhhdCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPgpyZXR1cm5zIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+IGJ1dCBhIHN1YnNlcXVlbnQKY2FsbCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IHdpbGwgcmV0dXJuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUVNX0VSUk9SPC9jb2RlPi48L3A+CjxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgZiBpcyBOVUxMCiAgb3Igc21hbGwgaXMgbmVpdGhlciAwIG5vciAxCiAgb3IgKCB1bnVzZWQgPT0gTlVMTCAmYW1wOyZhbXA7IG5VbnVzZWQgIT0gMCApCiAgb3IgKCB1bnVzZWQgIT0gTlVMTCAmYW1wOyZhbXA7ICEoMCAmbHQ7PSBuVW51c2VkICZsdDs9IEJaX01BWF9VTlVTRUQpICkKQlpfSU9fRVJST1IKICBpZiBmZXJyb3IoZikgaXMgbm9uemVybwpCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZQpCWl9PSwogIG90aGVyd2lzZS48L3ByZT4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5Qb2ludGVyIHRvIGFuIGFic3RyYWN0IEJaRklMRQogIGlmIGJ6ZXJyb3IgaXMgQlpfT0sKTlVMTAogIG90aGVyd2lzZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9ielJlYWQKICBpZiBiemVycm9yIGlzIEJaX09LCkJaMl9iekNsb3NlCiAgb3RoZXJ3aXNlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuNC4yLqBCWjJfYnpSZWFkIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6cmVhZCI+PC9hPjMuNC4yLqBCWjJfYnpSZWFkPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpSZWFkICggaW50ICpiemVycm9yLCBCWkZJTEUgKmIsIHZvaWQgKmJ1ZiwgaW50IGxlbiApOzwvcHJlPgo8cD5SZWFkcyB1cCB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxlbjwvY29kZT4KKHVuY29tcHJlc3NlZCkgYnl0ZXMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YjwvY29kZT4gaW50byB0aGUgYnVmZmVyCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVmPC9jb2RlPi4gIElmIHRoZSByZWFkIHdhcwpzdWNjZXNzZnVsLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGlzIHNldCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPiBhbmQgdGhlIG51bWJlciBvZiBieXRlcwpyZWFkIGlzIHJldHVybmVkLiAgSWYgdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSB3YXMgZGV0ZWN0ZWQsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gd2lsbCBiZSBzZXQgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiwgYW5kIHRoZSBudW1iZXIgb2YKYnl0ZXMgcmVhZCBpcyByZXR1cm5lZC4gIEFsbCBvdGhlcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHZhbHVlcyBkZW5vdGUgYW4KZXJyb3IuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IHdpbGwgc3VwcGx5Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGVuPC9jb2RlPiBieXRlcywgdW5sZXNzIHRoZSBsb2dpY2FsCnN0cmVhbSBlbmQgaXMgZGV0ZWN0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLiAgQmVjYXVzZSBvZiB0aGlzLCBpdAppcyBwb3NzaWJsZSB0byBkZXRlY3QgdGhlIHN0cmVhbSBlbmQgYnkgb2JzZXJ2aW5nIHdoZW4gdGhlIG51bWJlcgpvZiBieXRlcyByZXR1cm5lZCBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciByZXF1ZXN0ZWQuCk5ldmVydGhlbGVzcywgdGhpcyBpcyByZWdhcmRlZCBhcyBpbmFkdmlzYWJsZTsgeW91IHNob3VsZCBpbnN0ZWFkCmNoZWNrIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gYWZ0ZXIgZXZlcnkgY2FsbAphbmQgd2F0Y2ggb3V0IGZvcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+LjwvcD4KPHA+SW50ZXJuYWxseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPgpjb3BpZXMgZGF0YSBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUgaW4gY2h1bmtzIG9mIHNpemUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBieXRlcyBiZWZvcmUKZGVjb21wcmVzc2luZyBpdC4gIElmIHRoZSBmaWxlIGNvbnRhaW5zIG1vcmUgYnl0ZXMgdGhhbiBzdHJpY3RseQpuZWVkZWQgdG8gcmVhY2ggdGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aWxsIGFsbW9zdCBjZXJ0YWlubHkKcmVhZCBzb21lIG9mIHRoZSB0cmFpbGluZyBkYXRhIGJlZm9yZSBzaWduYWxsaW5nCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRU5EPC9jb2RlPi4gIFRvIGNvbGxlY3QgdGhlCnJlYWQgYnV0IHVudXNlZCBkYXRhIG9uY2UKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FTkQ8L2NvZGU+IGhhcyBhcHBlYXJlZCwKY2FsbCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+CmltbWVkaWF0ZWx5IGJlZm9yZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4uPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SCiAgaWYgYiBpcyBOVUxMIG9yIGJ1ZiBpcyBOVUxMIG9yIGxlbiAmbHQ7IDAKQlpfU0VRVUVOQ0VfRVJST1IKICBpZiBiIHdhcyBvcGVuZWQgd2l0aCBCWjJfYnpXcml0ZU9wZW4KQlpfSU9fRVJST1IKICBpZiB0aGVyZSBpcyBhbiBlcnJvciByZWFkaW5nIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZQpCWl9VTkVYUEVDVEVEX0VPRgogIGlmIHRoZSBjb21wcmVzc2VkIGZpbGUgZW5kZWQgYmVmb3JlIAogIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkCkJaX0RBVEFfRVJST1IKICBpZiBhIGRhdGEgaW50ZWdyaXR5IGVycm9yIHdhcyBkZXRlY3RlZCBpbiB0aGUgY29tcHJlc3NlZCBzdHJlYW0KQlpfREFUQV9FUlJPUl9NQUdJQwogIGlmIHRoZSBzdHJlYW0gZG9lcyBub3QgYmVnaW4gd2l0aCB0aGUgcmVxdWlzaXRlIGhlYWRlciBieXRlcyAKICAoaWUsIGlzIG5vdCBhIGJ6aXAyIGRhdGEgZmlsZSkuICBUaGlzIGlzIHJlYWxseSAKICBhIHNwZWNpYWwgY2FzZSBvZiBCWl9EQVRBX0VSUk9SLgpCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IHdhcyBhdmFpbGFibGUKQlpfU1RSRUFNX0VORAogIGlmIHRoZSBsb2dpY2FsIGVuZCBvZiBzdHJlYW0gd2FzIGRldGVjdGVkLgpCWl9PSwogIG90aGVyd2lzZS48L3ByZT4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5udW1iZXIgb2YgYnl0ZXMgcmVhZAogIGlmIGJ6ZXJyb3IgaXMgQlpfT0sgb3IgQlpfU1RSRUFNX0VORAp1bmRlZmluZWQKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb2xsZWN0IGRhdGEgZnJvbSBidWYsIHRoZW4gQloyX2J6UmVhZCBvciBCWjJfYnpSZWFkQ2xvc2UKICBpZiBiemVycm9yIGlzIEJaX09LCmNvbGxlY3QgZGF0YSBmcm9tIGJ1ZiwgdGhlbiBCWjJfYnpSZWFkQ2xvc2Ugb3IgQloyX2J6UmVhZEdldFVudXNlZAogIGlmIGJ6ZXJyb3IgaXMgQlpfU0VRVUVOQ0VfRU5ECkJaMl9ielJlYWRDbG9zZQogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjQuMy6gQloyX2J6UmVhZEdldFVudXNlZCI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJienJlYWRnZXR1bnVzZWQiPjwvYT4zLjQuMy6gQloyX2J6UmVhZEdldFVudXNlZDwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIEJaMl9ielJlYWRHZXRVbnVzZWQoIGludCogYnplcnJvciwgQlpGSUxFICpiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogdW51c2VkLCBpbnQqIG5VbnVzZWQgKTs8L3ByZT4KPHA+UmV0dXJucyBkYXRhIHdoaWNoIHdhcyByZWFkIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZSBidXQKd2FzIG5vdCBuZWVkZWQgdG8gZ2V0IHRvIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KnVudXNlZDwvY29kZT4gaXMgc2V0IHRvIHRoZSBhZGRyZXNzIG9mCnRoZSBkYXRhLCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qblVudXNlZDwvY29kZT4gdG8gdGhlCm51bWJlciBvZiBieXRlcy4gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Km5VbnVzZWQ8L2NvZGU+IHdpbGwKYmUgc2V0IHRvIGEgdmFsdWUgYmV0d2VlbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjA8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01BWF9VTlVTRUQ8L2NvZGU+IGluY2x1c2l2ZS48L3A+CjxwPlRoaXMgZnVuY3Rpb24gbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiBoYXMgc2lnbmFsbGVkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gYnV0IGJlZm9yZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4uPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SCiAgaWYgYiBpcyBOVUxMCiAgb3IgdW51c2VkIGlzIE5VTEwgb3IgblVudXNlZCBpcyBOVUxMCkJaX1NFUVVFTkNFX0VSUk9SCiAgaWYgQlpfU1RSRUFNX0VORCBoYXMgbm90IGJlZW4gc2lnbmFsbGVkCiAgb3IgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6V3JpdGVPcGVuCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6UmVhZENsb3NlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuNC40LqBCWjJfYnpSZWFkQ2xvc2UiPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpyZWFkY2xvc2UiPjwvYT4zLjQuNC6gQloyX2J6UmVhZENsb3NlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6UmVhZENsb3NlICggaW50ICpiemVycm9yLCBCWkZJTEUgKmIgKTs8L3ByZT4KPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBwZXJ0YWluaW5nIHRvIHRoZSBjb21wcmVzc2VkIGZpbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+IGRvZXMgbm90IGNhbGwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mY2xvc2U8L2NvZGU+IG9uIHRoZSB1bmRlcmx5aW5nIGZpbGUKaGFuZGxlLCBzbyB5b3Ugc2hvdWxkIGRvIHRoYXQgeW91cnNlbGYgaWYgYXBwcm9wcmlhdGUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPiBzaG91bGQgYmUgY2FsbGVkCnRvIGNsZWFuIHVwIGFmdGVyIGFsbCBlcnJvciBzaXR1YXRpb25zLjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9TRVFVRU5DRV9FUlJPUgogIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9iek9wZW5Xcml0ZQpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPm5vbmU8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy40LjUuoEJaMl9ieldyaXRlT3BlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiendyaXRlb3BlbiI+PC9hPjMuNC41LqBCWjJfYnpXcml0ZU9wZW48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpGSUxFICpCWjJfYnpXcml0ZU9wZW4oIGludCAqYnplcnJvciwgRklMRSAqZiwgCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tTaXplMTAwaywgaW50IHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3b3JrRmFjdG9yICk7PC9wcmU+CjxwPlByZXBhcmUgdG8gd3JpdGUgY29tcHJlc3NlZCBkYXRhIHRvIGZpbGUgaGFuZGxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4gc2hvdWxkIHJlZmVyIHRvIGEgZmlsZSB3aGljaApoYXMgYmVlbiBvcGVuZWQgZm9yIHdyaXRpbmcsIGFuZCBmb3Igd2hpY2ggdGhlIGVycm9yIGluZGljYXRvcgooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZXJyb3IoZik8L2NvZGU+KWlzIG5vdCBzZXQuPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2NrU2l6ZTEwMGs8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+d29ya0ZhY3RvcjwvY29kZT4sIHNlZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgo8cD5BbGwgcmVxdWlyZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCBhdCB0aGlzIHN0YWdlLCBzbyBpZiB0aGUKY2FsbCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gY2Fubm90IGJlIHNpZ25hbGxlZApieSBhIHN1YnNlcXVlbnQgY2FsbCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPi48L3A+CjxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgZiBpcyBOVUxMCiAgb3IgYmxvY2tTaXplMTAwayAmbHQ7IDEgb3IgYmxvY2tTaXplMTAwayAmZ3Q7IDkKQlpfSU9fRVJST1IKICBpZiBmZXJyb3IoZikgaXMgbm9uemVybwpCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZQpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPlBvaW50ZXIgdG8gYW4gYWJzdHJhY3QgQlpGSUxFCiAgaWYgYnplcnJvciBpcyBCWl9PSwpOVUxMCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6V3JpdGUKICBpZiBiemVycm9yIGlzIEJaX09LCiAgKHlvdSBjb3VsZCBnbyBkaXJlY3RseSB0byBCWjJfYnpXcml0ZUNsb3NlLCBidXQgdGhpcyB3b3VsZCBiZSBwcmV0dHkgcG9pbnRsZXNzKQpCWjJfYnpXcml0ZUNsb3NlCiAgb3RoZXJ3aXNlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuNC42LqBCWjJfYnpXcml0ZSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiendyaXRlIj48L2E+My40LjYuoEJaMl9ieldyaXRlPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6V3JpdGUgKCBpbnQgKmJ6ZXJyb3IsIEJaRklMRSAqYiwgdm9pZCAqYnVmLCBpbnQgbGVuICk7PC9wcmU+CjxwPkFic29yYnMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5sZW48L2NvZGU+IGJ5dGVzIGZyb20gdGhlCmJ1ZmZlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1ZjwvY29kZT4sIGV2ZW50dWFsbHkgdG8gYmUKY29tcHJlc3NlZCBhbmQgd3JpdHRlbiB0byB0aGUgZmlsZS48L3A+CjxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBiIGlzIE5VTEwgb3IgYnVmIGlzIE5VTEwgb3IgbGVuICZsdDsgMApCWl9TRVFVRU5DRV9FUlJPUgogIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ielJlYWRPcGVuCkJaX0lPX0VSUk9SCiAgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd3JpdGluZyB0aGUgY29tcHJlc3NlZCBmaWxlLgpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjQuNy6gQloyX2J6V3JpdGVDbG9zZSI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiendyaXRlY2xvc2UiPjwvYT4zLjQuNy6gQloyX2J6V3JpdGVDbG9zZTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIEJaMl9ieldyaXRlQ2xvc2UoIGludCAqYnplcnJvciwgQlpGSUxFKiBmLAogICAgICAgICAgICAgICAgICAgICAgIGludCBhYmFuZG9uLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX291dCApOwoKdm9pZCBCWjJfYnpXcml0ZUNsb3NlNjQoIGludCAqYnplcnJvciwgQlpGSUxFKiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFiYW5kb24sCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19pbl9sbzMyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfaW5faGkzMiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX291dF9sbzMyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfb3V0X2hpMzIgKTs8L3ByZT4KPHA+Q29tcHJlc3NlcyBhbmQgZmx1c2hlcyB0byB0aGUgY29tcHJlc3NlZCBmaWxlIGFsbCBkYXRhIHNvCmZhciBzdXBwbGllZCBieSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPi4KVGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSBtYXJrZXJzIGFyZSBhbHNvIHdyaXR0ZW4sIHNvIHN1YnNlcXVlbnQKY2FsbHMgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gYXJlCmlsbGVnYWwuICBBbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcHJlc3NlZCBmaWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YjwvY29kZT4gaXMgcmVsZWFzZWQuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmZsdXNoPC9jb2RlPiBpcyBjYWxsZWQgb24gdGhlCmNvbXByZXNzZWQgZmlsZSwgYnV0IGl0IGlzIG5vdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4nZC48L3A+CjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4gaXMKY2FsbGVkIHRvIGNsZWFuIHVwIGFmdGVyIGFuIGVycm9yLCB0aGUgb25seSBhY3Rpb24gaXMgdG8gcmVsZWFzZQp0aGUgbWVtb3J5LiAgVGhlIGxpYnJhcnkgcmVjb3JkcyB0aGUgZXJyb3IgY29kZXMgaXNzdWVkIGJ5CnByZXZpb3VzIGNhbGxzLCBzbyB0aGlzIHNpdHVhdGlvbiB3aWxsIGJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkuClRoZXJlIGlzIG5vIGF0dGVtcHQgdG8gY29tcGxldGUgdGhlIGNvbXByZXNzaW9uIG9wZXJhdGlvbiwgbm9yIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmZsdXNoPC9jb2RlPiB0aGUgY29tcHJlc3NlZCBmaWxlLiAgWW91CmNhbiBmb3JjZSB0aGlzIGJlaGF2aW91ciB0byBoYXBwZW4gZXZlbiBpbiB0aGUgY2FzZSBvZiBubyBlcnJvciwKYnkgcGFzc2luZyBhIG5vbnplcm8gdmFsdWUgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hYmFuZG9uPC9jb2RlPi48L3A+CjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmJ5dGVzX2luPC9jb2RlPiBpcyBub24tbnVsbCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qbmJ5dGVzX2luPC9jb2RlPiB3aWxsIGJlIHNldCB0byBiZSB0aGUKdG90YWwgdm9sdW1lIG9mIHVuY29tcHJlc3NlZCBkYXRhIGhhbmRsZWQuICBTaW1pbGFybHksCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmJ5dGVzX291dDwvY29kZT4gd2lsbCBiZSBzZXQgdG8gdGhlCnRvdGFsIHZvbHVtZSBvZiBjb21wcmVzc2VkIGRhdGEgd3JpdHRlbi4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGgKb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnksCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4gb25seSB5aWVsZHMgdGhlCmxvd2VyIDMyIGJpdHMgb2YgdGhlc2UgY291bnRzLiAgVXNlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTY0PC9jb2RlPiBpZiB5b3Ugd2FudAp0aGUgZnVsbCA2NCBiaXQgY291bnRzLiAgVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3RoZXJ3aXNlCmFic29sdXRlbHkgaWRlbnRpY2FsLjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9TRVFVRU5DRV9FUlJPUgogIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ielJlYWRPcGVuCkJaX0lPX0VSUk9SCiAgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd3JpdGluZyB0aGUgY29tcHJlc3NlZCBmaWxlCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuNC44LqBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtcyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJlbWJlZCI+PC9hPjMuNC44LqBIYW5kbGluZyBlbWJlZGRlZCBjb21wcmVzc2VkIGRhdGEgc3RyZWFtczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPlRoZSBoaWdoLWxldmVsIGxpYnJhcnkgZmFjaWxpdGF0ZXMgdXNlIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRhdGEgc3RyZWFtcyB3aGljaCBmb3JtCnNvbWUgcGFydCBvZiBhIHN1cnJvdW5kaW5nLCBsYXJnZXIgZGF0YSBzdHJlYW0uPC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJidWxsZXQiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5Gb3Igd3JpdGluZywgdGhlIGxpYnJhcnkgdGFrZXMgYW4gb3BlbiBmaWxlIGhhbmRsZSwKICB3cml0ZXMgY29tcHJlc3NlZCBkYXRhIHRvIGl0LAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmZsdXNoPC9jb2RlPmVzIGl0IGJ1dCBkb2VzIG5vdAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmNsb3NlPC9jb2RlPiBpdC4gIFRoZSBjYWxsaW5nCiAgYXBwbGljYXRpb24gY2FuIHdyaXRlIGl0cyBvd24gZGF0YSBiZWZvcmUgYW5kIGFmdGVyIHRoZQogIGNvbXByZXNzZWQgZGF0YSBzdHJlYW0sIHVzaW5nIHRoYXQgc2FtZSBmaWxlIGhhbmRsZS48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+UmVhZGluZyBpcyBtb3JlIGNvbXBsZXgsIGFuZCB0aGUgZmFjaWxpdGllcyBhcmUgbm90IGFzCiAgZ2VuZXJhbCBhcyB0aGV5IGNvdWxkIGJlIHNpbmNlIGdlbmVyYWxpdHkgaXMgaGFyZCB0byByZWNvbmNpbGUKICB3aXRoIGVmZmljaWVuY3kuICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+CiAgcmVhZHMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIGluIGJsb2NrcyBvZiBzaXplCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBieXRlcywgYW5kIGluCiAgZG9pbmcgc28gcHJvYmFibHkgd2lsbCBvdmVyc2hvb3QgdGhlIGxvZ2ljYWwgZW5kIG9mIGNvbXByZXNzZWQKICBzdHJlYW0uICBUbyByZWNvdmVyIHRoaXMgZGF0YSBvbmNlIGRlY29tcHJlc3Npb24gaGFzIGVuZGVkLAogIGNhbGwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPiBhZnRlcgogIHRoZSBsYXN0IGNhbGwgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPgogICh0aGUgb25lIHJldHVybmluZwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4pIGJ1dCBiZWZvcmUKICBjYWxsaW5nCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+LjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5UaGlzIG1lY2hhbmlzbSBtYWtlcyBpdCBlYXN5IHRvIGRlY29tcHJlc3MgbXVsdGlwbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gc3RyZWFtcyBwbGFjZWQgZW5kLXRvLWVuZC4KQXMgdGhlIGVuZCBvZiBvbmUgc3RyZWFtLCB3aGVuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gcmV0dXJucwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+LCBjYWxsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT4gdG8gY29sbGVjdAp0aGUgdW51c2VkIGRhdGEgKGNvcHkgaXQgaW50byB5b3VyIG93biBidWZmZXIgc29tZXdoZXJlKS4gIFRoYXQKZGF0YSBmb3JtcyB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29tcHJlc3NlZCBzdHJlYW0uICBUbyBzdGFydAp1bmNvbXByZXNzaW5nIHRoYXQgbmV4dCBzdHJlYW0sIGNhbGwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4gYWdhaW4sIGZlZWRpbmcgaW4KdGhlIHVudXNlZCBkYXRhIHZpYSB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+IC8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uVW51c2VkPC9jb2RlPiBwYXJhbWV0ZXJzLiAgS2VlcCBkb2luZwp0aGlzIHVudGlsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gcmV0dXJuCmNvaW5jaWRlcyB3aXRoIHRoZSBwaHlzaWNhbCBlbmQgb2YgZmlsZQooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZW9mKGYpPC9jb2RlPikuICBJbiB0aGlzIHNpdHVhdGlvbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+IHdpbGwgb2YKY291cnNlIHJldHVybiBubyBkYXRhLjwvcD4KPHA+VGhpcyBzaG91bGQgZ2l2ZSBzb21lIGZlZWwgZm9yIGhvdyB0aGUgaGlnaC1sZXZlbCBpbnRlcmZhY2UKY2FuIGJlIHVzZWQuICBJZiB5b3UgcmVxdWlyZSBleHRyYSBmbGV4aWJpbGl0eSwgeW91J2xsIGhhdmUgdG8KYml0ZSB0aGUgYnVsbGV0IGFuZCBnZXQgdG8gZ3JpcHMgd2l0aCB0aGUgbG93LWxldmVsCmludGVyZmFjZS48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IjMuNC45LqBTdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InN0ZC1yZHdyIj48L2E+My40LjkuoFN0YW5kYXJkIGZpbGUtcmVhZGluZy93cml0aW5nIGNvZGU8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5IZXJlJ3MgaG93IHlvdSdkIHdyaXRlIGRhdGEgdG8gYSBjb21wcmVzc2VkIGZpbGU6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+RklMRSogICBmOwpCWkZJTEUqIGI7CmludCAgICAgbkJ1ZjsKY2hhciAgICBidWZbIC8qIHdoYXRldmVyIHNpemUgeW91IGxpa2UgKi8gXTsKaW50ICAgICBiemVycm9yOwppbnQgICAgIG5Xcml0dGVuOwoKZiA9IGZvcGVuICggIm15ZmlsZS5iejIiLCAidyIgKTsKaWYgKCAhZiApIHsKIC8qIGhhbmRsZSBlcnJvciAqLwp9CmIgPSBCWjJfYnpXcml0ZU9wZW4oICZhbXA7YnplcnJvciwgZiwgOSApOwppZiAoYnplcnJvciAhPSBCWl9PSykgewogQloyX2J6V3JpdGVDbG9zZSAoIGIgKTsKIC8qIGhhbmRsZSBlcnJvciAqLwp9Cgp3aGlsZSAoIC8qIGNvbmRpdGlvbiAqLyApIHsKIC8qIGdldCBkYXRhIHRvIHdyaXRlIGludG8gYnVmLCBhbmQgc2V0IG5CdWYgYXBwcm9wcmlhdGVseSAqLwogbldyaXR0ZW4gPSBCWjJfYnpXcml0ZSAoICZhbXA7YnplcnJvciwgYiwgYnVmLCBuQnVmICk7CiBpZiAoYnplcnJvciA9PSBCWl9JT19FUlJPUikgeyAKICAgQloyX2J6V3JpdGVDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwogICAvKiBoYW5kbGUgZXJyb3IgKi8KIH0KfQoKQloyX2J6V3JpdGVDbG9zZSggJmFtcDtiemVycm9yLCBiICk7CmlmIChiemVycm9yID09IEJaX0lPX0VSUk9SKSB7CiAvKiBoYW5kbGUgZXJyb3IgKi8KfTwvcHJlPgo8cD5BbmQgdG8gcmVhZCBmcm9tIGEgY29tcHJlc3NlZCBmaWxlOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkZJTEUqICAgZjsKQlpGSUxFKiBiOwppbnQgICAgIG5CdWY7CmNoYXIgICAgYnVmWyAvKiB3aGF0ZXZlciBzaXplIHlvdSBsaWtlICovIF07CmludCAgICAgYnplcnJvcjsKaW50ICAgICBuV3JpdHRlbjsKCmYgPSBmb3BlbiAoICJteWZpbGUuYnoyIiwgInIiICk7CmlmICggIWYgKSB7CiAgLyogaGFuZGxlIGVycm9yICovCn0KYiA9IEJaMl9ielJlYWRPcGVuICggJmFtcDtiemVycm9yLCBmLCAwLCBOVUxMLCAwICk7CmlmICggYnplcnJvciAhPSBCWl9PSyApIHsKICBCWjJfYnpSZWFkQ2xvc2UgKCAmYW1wO2J6ZXJyb3IsIGIgKTsKICAvKiBoYW5kbGUgZXJyb3IgKi8KfQoKYnplcnJvciA9IEJaX09LOwp3aGlsZSAoIGJ6ZXJyb3IgPT0gQlpfT0sgJmFtcDsmYW1wOyAvKiBhcmJpdHJhcnkgb3RoZXIgY29uZGl0aW9ucyAqLykgewogIG5CdWYgPSBCWjJfYnpSZWFkICggJmFtcDtiemVycm9yLCBiLCBidWYsIC8qIHNpemUgb2YgYnVmICovICk7CiAgaWYgKCBiemVycm9yID09IEJaX09LICkgewogICAgLyogZG8gc29tZXRoaW5nIHdpdGggYnVmWzAgLi4gbkJ1Zi0xXSAqLwogIH0KfQppZiAoIGJ6ZXJyb3IgIT0gQlpfU1RSRUFNX0VORCApIHsKICAgQloyX2J6UmVhZENsb3NlICggJmFtcDtiemVycm9yLCBiICk7CiAgIC8qIGhhbmRsZSBlcnJvciAqLwp9IGVsc2UgewogICBCWjJfYnpSZWFkQ2xvc2UgKCAmYW1wO2J6ZXJyb3IsIGIgKTsKfTwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy41LqBVdGlsaXR5IGZ1bmN0aW9ucyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InV0aWwtZm5zIj48L2E+My41LqBVdGlsaXR5IGZ1bmN0aW9uczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy41LjEuoEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiemJ1ZmZ0b2J1ZmZjb21wcmVzcyI+PC9hPjMuNS4xLqBCWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzcyggY2hhciogICAgICAgICBkZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIGRlc3RMZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqICAgICAgICAgc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgIHNvdXJjZUxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICBibG9ja1NpemUxMDBrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB3b3JrRmFjdG9yICk7PC9wcmU+CjxwPkF0dGVtcHRzIHRvIGNvbXByZXNzIHRoZSBkYXRhIGluIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c291cmNlWzAKLi4gc291cmNlTGVuLTFdPC9jb2RlPiBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFswIC4uICpkZXN0TGVuLTFdPC9jb2RlPi4gIElmIHRoZQpkZXN0aW5hdGlvbiBidWZmZXIgaXMgYmlnIGVub3VnaCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qZGVzdExlbjwvY29kZT4gaXMgc2V0IHRvIHRoZSBzaXplIG9mCnRoZSBjb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPgppcyByZXR1cm5lZC4gIElmIHRoZSBjb21wcmVzc2VkIGRhdGEgd29uJ3QgZml0LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipkZXN0TGVuPC9jb2RlPiBpcyB1bmNoYW5nZWQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09VVEJVRkZfRlVMTDwvY29kZT4gaXMKcmV0dXJuZWQuPC9wPgo8cD5Db21wcmVzc2lvbiBpbiB0aGlzIG1hbm5lciBpcyBhIG9uZS1zaG90IGV2ZW50LCBkb25lIHdpdGggYQpzaW5nbGUgY2FsbCB0byB0aGlzIGZ1bmN0aW9uLiAgVGhlIHJlc3VsdGluZyBjb21wcmVzc2VkIGRhdGEgaXMgYQpjb21wbGV0ZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQgZGF0YQpzdHJlYW0uICBUaGVyZSBpcyBubyBtZWNoYW5pc20gZm9yIG1ha2luZyBhZGRpdGlvbmFsIGNhbGxzIHRvCnByb3ZpZGUgZXh0cmEgaW5wdXQgZGF0YS4gIElmIHlvdSB3YW50IHRoYXQga2luZCBvZiBtZWNoYW5pc20sCnVzZSB0aGUgbG93LWxldmVsIGludGVyZmFjZS48L3A+CjxwPkZvciB0aGUgbWVhbmluZyBvZiBwYXJhbWV0ZXJzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YmxvY2tTaXplMTAwazwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyYm9zaXR5PC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPiwgc2VlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi48L3A+CjxwPlRvIGd1YXJhbnRlZSB0aGF0IHRoZSBjb21wcmVzc2VkIGRhdGEgd2lsbCBmaXQgaW4gaXRzCmJ1ZmZlciwgYWxsb2NhdGUgYW4gb3V0cHV0IGJ1ZmZlciBvZiBzaXplIDElIGxhcmdlciB0aGFuIHRoZQp1bmNvbXByZXNzZWQgZGF0YSwgcGx1cyBzaXggaHVuZHJlZCBleHRyYSBieXRlcy48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+CndpbGwgbm90IHdyaXRlIGRhdGEgYXQgb3IgYmV5b25kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVzdFsqZGVzdExlbl08L2NvZGU+LCBldmVuIGluIGNhc2Ugb2YKYnVmZmVyIG92ZXJmbG93LjwvcD4KPHA+UG9zc2libGUgcmV0dXJuIHZhbHVlczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKQlpfUEFSQU1fRVJST1IKICBpZiBkZXN0IGlzIE5VTEwgb3IgZGVzdExlbiBpcyBOVUxMCiAgb3IgYmxvY2tTaXplMTAwayAmbHQ7IDEgb3IgYmxvY2tTaXplMTAwayAmZ3Q7IDkKICBvciB2ZXJib3NpdHkgJmx0OyAwIG9yIHZlcmJvc2l0eSAmZ3Q7IDQKICBvciB3b3JrRmFjdG9yICZsdDsgMCBvciB3b3JrRmFjdG9yICZndDsgMjUwCkJaX01FTV9FUlJPUgogIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlIApCWl9PVVRCVUZGX0ZVTEwKICBpZiB0aGUgc2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGV4Y2VlZHMgKmRlc3RMZW4KQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy41LjIuoEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6YnVmZnRvYnVmZmRlY29tcHJlc3MiPjwvYT4zLjUuMi6gQloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKCBjaGFyKiAgICAgICAgIGRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBkZXN0TGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqICAgICAgICAgc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgc291cmNlTGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgc21hbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB2ZXJib3NpdHkgKTs8L3ByZT4KPHA+QXR0ZW1wdHMgdG8gZGVjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZVswCi4uIHNvdXJjZUxlbi0xXTwvY29kZT4gaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlc3RbMCAuLiAqZGVzdExlbi0xXTwvY29kZT4uICBJZiB0aGUKZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmRlc3RMZW48L2NvZGU+IGlzIHNldCB0byB0aGUgc2l6ZSBvZgp0aGUgdW5jb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPgppcyByZXR1cm5lZC4gIElmIHRoZSBjb21wcmVzc2VkIGRhdGEgd29uJ3QgZml0LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipkZXN0TGVuPC9jb2RlPiBpcyB1bmNoYW5nZWQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09VVEJVRkZfRlVMTDwvY29kZT4gaXMKcmV0dXJuZWQuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZTwvY29kZT4gaXMgYXNzdW1lZCB0byBob2xkCmEgY29tcGxldGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGRhdGEKc3RyZWFtLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPiB0cmllcwp0byBkZWNvbXByZXNzIHRoZSBlbnRpcmV0eSBvZiB0aGUgc3RyZWFtIGludG8gdGhlIG91dHB1dApidWZmZXIuPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNtYWxsPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgo8cD5CZWNhdXNlIHRoZSBjb21wcmVzc2lvbiByYXRpbyBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGNhbm5vdApiZSBrbm93biBpbiBhZHZhbmNlLCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBndWFyYW50ZWUgdGhhdCB0aGUKb3V0cHV0IGJ1ZmZlciB3aWxsIGJlIGJpZyBlbm91Z2guICBZb3UgbWF5IG9mIGNvdXJzZSBtYWtlCmFycmFuZ2VtZW50cyBpbiB5b3VyIGNvZGUgdG8gcmVjb3JkIHRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQKZGF0YSwgYnV0IHN1Y2ggYSBtZWNoYW5pc20gaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzCmxpYnJhcnkuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPgp3aWxsIG5vdCB3cml0ZSBkYXRhIGF0IG9yIGJleW9uZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlc3RbKmRlc3RMZW5dPC9jb2RlPiwgZXZlbiBpbiBjYXNlIG9mCmJ1ZmZlciBvdmVyZmxvdy48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgZGVzdCBpcyBOVUxMIG9yIGRlc3RMZW4gaXMgTlVMTAogIG9yIHNtYWxsICE9IDAgJmFtcDsmYW1wOyBzbWFsbCAhPSAxCiAgb3IgdmVyYm9zaXR5ICZsdDsgMCBvciB2ZXJib3NpdHkgJmd0OyA0CkJaX01FTV9FUlJPUgogIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlIApCWl9PVVRCVUZGX0ZVTEwKICBpZiB0aGUgc2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGV4Y2VlZHMgKmRlc3RMZW4KQlpfREFUQV9FUlJPUgogIGlmIGEgZGF0YSBpbnRlZ3JpdHkgZXJyb3Igd2FzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIGRhdGEKQlpfREFUQV9FUlJPUl9NQUdJQwogIGlmIHRoZSBjb21wcmVzc2VkIGRhdGEgZG9lc24ndCBiZWdpbiB3aXRoIHRoZSByaWdodCBtYWdpYyBieXRlcwpCWl9VTkVYUEVDVEVEX0VPRgogIGlmIHRoZSBjb21wcmVzc2VkIGRhdGEgZW5kcyB1bmV4cGVjdGVkbHkKQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjMuNi6gemxpYiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InpsaWItY29tcGF0Ij48L2E+My42LqB6bGliIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+WW9zaGlva2EgVHN1bmVvIGhhcyBjb250cmlidXRlZCBzb21lIGZ1bmN0aW9ucyB0byBnaXZlCmJldHRlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkuClRoZXNlIGZ1bmN0aW9ucyBhcmUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpvcGVuPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpyZWFkPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnp3cml0ZTwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Zmx1c2g8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemNsb3NlPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnplcnJvcjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6bGliVmVyc2lvbjwvY29kZT4uICBUaGVzZQpmdW5jdGlvbnMgYXJlIG5vdCAoeWV0KSBvZmZpY2lhbGx5IHBhcnQgb2YgdGhlIGxpYnJhcnkuICBJZiB0aGV5CmJyZWFrLCB5b3UgZ2V0IHRvIGtlZXAgYWxsIHRoZSBwaWVjZXMuICBOZXZlcnRoZWxlc3MsIEkgdGhpbmsKdGhleSB3b3JrIG9rLjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgdm9pZCBCWkZJTEU7Cgpjb25zdCBjaGFyICogQloyX2J6bGliVmVyc2lvbiAoIHZvaWQgKTs8L3ByZT4KPHA+UmV0dXJucyBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBsaWJyYXJ5IHZlcnNpb24uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpGSUxFICogQloyX2J6b3BlbiAgKCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlICk7CkJaRklMRSAqIEJaMl9iemRvcGVuICggaW50ICAgICAgICBmZCwgICAgY29uc3QgY2hhciAqbW9kZSApOzwvcHJlPgo8cD5PcGVucyBhIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4gZmlsZSBmb3IKcmVhZGluZyBvciB3cml0aW5nLCB1c2luZyBlaXRoZXIgaXRzIG5hbWUgb3IgYSBwcmUtZXhpc3RpbmcgZmlsZQpkZXNjcmlwdG9yLiAgQW5hbG9nb3VzIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Zm9wZW48L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZkb3BlbjwvY29kZT4uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9ienJlYWQgICggQlpGSUxFKiBiLCB2b2lkKiBidWYsIGludCBsZW4gKTsKaW50IEJaMl9iendyaXRlICggQlpGSUxFKiBiLCB2b2lkKiBidWYsIGludCBsZW4gKTs8L3ByZT4KPHA+UmVhZHMvd3JpdGVzIGRhdGEgZnJvbS90byBhIHByZXZpb3VzbHkgb3BlbmVkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpGSUxFPC9jb2RlPi4gIEFuYWxvZ291cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZyZWFkPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5md3JpdGU8L2NvZGU+LjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCAgQloyX2J6Zmx1c2ggKCBCWkZJTEUqIGIgKTsKdm9pZCBCWjJfYnpjbG9zZSAoIEJaRklMRSogYiApOzwvcHJlPgo8cD5GbHVzaGVzL2Nsb3NlcyBhIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpGSUxFPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpmbHVzaDwvY29kZT4gZG9lc24ndCBhY3R1YWxseSBkbwphbnl0aGluZy4gIEFuYWxvZ291cyB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZmbHVzaDwvY29kZT4KYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmNsb3NlPC9jb2RlPi48L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCBjaGFyICogQloyX2J6ZXJyb3IgKCBCWkZJTEUgKmIsIGludCAqZXJybnVtICk8L3ByZT4KPHA+UmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBtb3JlIHJlY2VudCBlcnJvciBzdGF0dXMgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPiwgYW5kIGFsc28gc2V0cwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPiplcnJudW08L2NvZGU+IHRvIGl0cyBudW1lcmljYWwKdmFsdWUuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSIzLjcuoFVzaW5nIHRoZSBsaWJyYXJ5IGluIGEgc3RkaW8tZnJlZSBlbnZpcm9ubWVudCI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InN0ZGlvLWZyZWUiPjwvYT4zLjcuoFVzaW5nIHRoZSBsaWJyYXJ5IGluIGEgc3RkaW8tZnJlZSBlbnZpcm9ubWVudDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iMy43LjEuoEdldHRpbmcgcmlkIG9mIHN0ZGlvIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InN0ZGlvLWJ5ZSI+PC9hPjMuNy4xLqBHZXR0aW5nIHJpZCBvZiBzdGRpbzwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkluIGEgZGVlcGx5IGVtYmVkZGVkIGFwcGxpY2F0aW9uLCB5b3UgbWlnaHQgd2FudCB0byB1c2UKanVzdCB0aGUgbWVtb3J5LXRvLW1lbW9yeSBmdW5jdGlvbnMuICBZb3UgY2FuIGRvIHRoaXMKY29udmVuaWVudGx5IGJ5IGNvbXBpbGluZyB0aGUgbGlicmFyeSB3aXRoIHByZXByb2Nlc3NvciBzeW1ib2wKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9OT19TVERJTzwvY29kZT4gZGVmaW5lZC4gIERvaW5nIHRoaXMKZ2l2ZXMgeW91IGEgbGlicmFyeSBjb250YWluaW5nIG9ubHkgdGhlIGZvbGxvd2luZyBlaWdodApmdW5jdGlvbnM6PC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+PC9wPgo8cD5XaGVuIGNvbXBpbGVkIGxpa2UgdGhpcywgYWxsIGZ1bmN0aW9ucyB3aWxsIGlnbm9yZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gc2V0dGluZ3MuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSIzLjcuMi6gQ3JpdGljYWwgZXJyb3IgaGFuZGxpbmciPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iY3JpdGljYWwtZXJyb3IiPjwvYT4zLjcuMi6gQ3JpdGljYWwgZXJyb3IgaGFuZGxpbmc8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiBjb250YWlucyBhIG51bWJlcgpvZiBpbnRlcm5hbCBhc3NlcnRpb24gY2hlY2tzIHdoaWNoIHNob3VsZCwgbmVlZGxlc3MgdG8gc2F5LCBuZXZlcgpiZSBhY3RpdmF0ZWQuICBOZXZlcnRoZWxlc3MsIGlmIGFuIGFzc2VydGlvbiBzaG91bGQgZmFpbCwKYmVoYXZpb3VyIGRlcGVuZHMgb24gd2hldGhlciBvciBub3QgdGhlIGxpYnJhcnkgd2FzIGNvbXBpbGVkIHdpdGgKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9OT19TVERJTzwvY29kZT4gc2V0LjwvcD4KPHA+Rm9yIGEgbm9ybWFsIGNvbXBpbGUsIGFuIGFzc2VydGlvbiBmYWlsdXJlIHlpZWxkcyB0aGUKbWVzc2FnZTo8L3A+CjxkaXYgY2xhc3M9ImJsb2NrcXVvdGUiPjxibG9ja3F1b3RlIGNsYXNzPSJibG9ja3F1b3RlIj4KPHA+YnppcDIvbGliYnppcDI6IGludGVybmFsIGVycm9yIG51bWJlciBOLjwvcD4KPHA+VGhpcyBpcyBhIGJ1ZyBpbiBiemlwMi9saWJiemlwMiwgMS4wLjYgb2YgNiBTZXB0ZW1iZXIgMjAxMC4KUGxlYXNlIHJlcG9ydCBpdCB0byBtZSBhdDoganNld2FyZEBiemlwLm9yZy4gIElmIHRoaXMgaGFwcGVuZWQKd2hlbiB5b3Ugd2VyZSB1c2luZyBzb21lIHByb2dyYW0gd2hpY2ggdXNlcyBsaWJiemlwMiBhcyBhCmNvbXBvbmVudCwgeW91IHNob3VsZCBhbHNvIHJlcG9ydCB0aGlzIGJ1ZyB0byB0aGUgYXV0aG9yKHMpCm9mIHRoYXQgcHJvZ3JhbS4gIFBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byByZXBvcnQgdGhpcyBidWc7CnRpbWVseSBhbmQgYWNjdXJhdGUgYnVnIHJlcG9ydHMgZXZlbnR1YWxseSBsZWFkIHRvIGhpZ2hlcgpxdWFsaXR5IHNvZnR3YXJlLiAgVGhhbmtzLiAgSnVsaWFuIFNld2FyZCwgNiBTZXB0ZW1iZXIgMjAxMC4KPC9wPgo8L2Jsb2NrcXVvdGU+PC9kaXY+CjxwPndoZXJlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TjwvY29kZT4gaXMgc29tZSBlcnJvciBjb2RlCm51bWJlci4gIElmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TiA9PSAxMDA3PC9jb2RlPiwgaXQgYWxzbwpwcmludHMgc29tZSBleHRyYSB0ZXh0IGFkdmlzaW5nIHRoZSByZWFkZXIgdGhhdCB1bnJlbGlhYmxlIG1lbW9yeQppcyBvZnRlbiBhc3NvY2lhdGVkIHdpdGggaW50ZXJuYWwgZXJyb3IgMTAwNy4gKFRoaXMgaXMgYQpmcmVxdWVudGx5LW9ic2VydmVkLXBoZW5vbWVub24gd2l0aCB2ZXJzaW9ucyAxLjAuMC8xLjAuMSkuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmV4aXQoMyk8L2NvZGU+IGlzIHRoZW4KY2FsbGVkLjwvcD4KPHA+Rm9yIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT4tZnJlZSBsaWJyYXJ5LAphc3NlcnRpb24gZmFpbHVyZXMgcmVzdWx0IGluIGEgY2FsbCB0byBhIGZ1bmN0aW9uIGRlY2xhcmVkCmFzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmV4dGVybiB2b2lkIGJ6X2ludGVybmFsX2Vycm9yICggaW50IGVycmNvZGUgKTs8L3ByZT4KPHA+VGhlIHJlbGV2YW50IGNvZGUgaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyLiAgWW91IHNob3VsZApzdXBwbHkgc3VjaCBhIGZ1bmN0aW9uLjwvcD4KPHA+SW4gZWl0aGVyIGNhc2UsIG9uY2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaGFzIG9jY3VycmVkLCBhbnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iel9zdHJlYW08L2NvZGU+IHJlY29yZHMgaW52b2x2ZWQgY2FuCmJlIHJlZ2FyZGVkIGFzIGludmFsaWQuICBZb3Ugc2hvdWxkIG5vdCBhdHRlbXB0IHRvIHJlc3VtZSBub3JtYWwKb3BlcmF0aW9uIHdpdGggdGhlbS48L3A+CjxwPllvdSBtYXksIG9mIGNvdXJzZSwgY2hhbmdlIGNyaXRpY2FsIGVycm9yIGhhbmRsaW5nIHRvIHN1aXQKeW91ciBuZWVkcy4gIEFzIEkgc2FpZCBhYm92ZSwgY3JpdGljYWwgZXJyb3JzIGluZGljYXRlIGJ1Z3MgaW4KdGhlIGxpYnJhcnkgYW5kIHNob3VsZCBub3Qgb2NjdXIuICBBbGwgIm5vcm1hbCIgZXJyb3Igc2l0dWF0aW9ucwphcmUgaW5kaWNhdGVkIHZpYSBlcnJvciByZXR1cm4gY29kZXMgZnJvbSBmdW5jdGlvbnMsIGFuZCBjYW4gYmUKcmVjb3ZlcmVkIGZyb20uPC9wPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iMy44LqBNYWtpbmcgYSBXaW5kb3dzIERMTCI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9Indpbi1kbGwiPjwvYT4zLjguoE1ha2luZyBhIFdpbmRvd3MgRExMPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+RXZlcnl0aGluZyByZWxhdGVkIHRvIFdpbmRvd3MgaGFzIGJlZW4gY29udHJpYnV0ZWQgYnkKWW9zaGlva2EgVHN1bmVvCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRzdW5lb0Byci5paWo0dS5vci5qcDwvY29kZT4pLCBzbwp5b3Ugc2hvdWxkIHNlbmQgeW91ciBxdWVyaWVzIHRvIGhpbSAoYnV0IHBlcmhhcHMgQ2M6IG1lLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmpzZXdhcmRAYnppcC5vcmc8L2NvZGU+KS48L3A+CjxwPk15IHZhZ3VlIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0byBkbyBpczogdXNpbmcgVmlzdWFsIEMrKwo1LjAsIG9wZW4gdGhlIHByb2plY3QgZmlsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6Mi5kc3A8L2NvZGU+LCBhbmQgYnVpbGQuICBUaGF0J3MKYWxsLjwvcD4KPHA+SWYgeW91IGNhbid0IG9wZW4gdGhlIHByb2plY3QgZmlsZSBmb3Igc29tZSByZWFzb24sIG1ha2UgYQpuZXcgb25lLCBuYW1pbmcgdGhlc2UgZmlsZXM6Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YmxvY2tzb3J0LmM8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6bGliLmM8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNvbXByZXNzLmM8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmNyY3RhYmxlLmM8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlY29tcHJlc3MuYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+aHVmZm1hbi5jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5yYW5kdGFibGUuYzwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnoyLmRlZjwvY29kZT4uICBZb3Ugd2lsbCBhbHNvIG5lZWQKdG8gbmFtZSB0aGUgaGVhZGVyIGZpbGVzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWIuaDwvY29kZT4KYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWJfcHJpdmF0ZS5oPC9jb2RlPi48L3A+CjxwPklmIHlvdSBkb24ndCB1c2UgVkMrKywgeW91IG1heSBuZWVkIHRvIGRlZmluZSB0aGUKcHJvcHJvY2Vzc29yIHN5bWJvbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPl9XSU4zMjwvY29kZT4uPC9wPgo8cD5GaW5hbGx5LCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRsbHRlc3QuYzwvY29kZT4gaXMgYQpzYW1wbGUgcHJvZ3JhbSB1c2luZyB0aGUgRExMLiAgSXQgaGFzIGEgcHJvamVjdCBmaWxlLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRsbHRlc3QuZHNwPC9jb2RlPi48L3A+CjxwPklmIHlvdSBqdXN0IHdhbnQgYSBtYWtlZmlsZSBmb3IgVmlzdWFsIEMsIGhhdmUgYSBsb29rIGF0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFrZWZpbGUubXNjPC9jb2RlPi48L3A+CjxwPkJlIGF3YXJlIHRoYXQgaWYgeW91IGNvbXBpbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXRzZWxmIG9uIFdpbjMyLCB5b3UgbXVzdApzZXQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9VTklYPC9jb2RlPiB0byAwIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0xDQ1dJTjMyPC9jb2RlPiB0byAxLCBpbiB0aGUgZmlsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLmM8L2NvZGU+LCBiZWZvcmUgY29tcGlsaW5nLgpPdGhlcndpc2UgdGhlIHJlc3VsdGluZyBiaW5hcnkgd29uJ3Qgd29yayBjb3JyZWN0bHkuPC9wPgo8cD5JIGhhdmVuJ3QgdHJpZWQgYW55IG9mIHRoaXMgc3R1ZmYgbXlzZWxmLCBidXQgaXQgYWxsIGxvb2tzCnBsYXVzaWJsZS48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2hhcHRlciIgdGl0bGU9IjQuoE1pc2NlbGxhbmVhIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9Im1pc2MiPjwvYT40LqBNaXNjZWxsYW5lYTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InRvYyI+CjxwPjxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPjwvcD4KPGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbGltaXRzIj40LjEuIExpbWl0YXRpb25zIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcG9ydC1pc3N1ZXMiPjQuMi4gUG9ydGFiaWxpdHkgaXNzdWVzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjYnVncyI+NC4zLiBSZXBvcnRpbmcgYnVnczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BhY2thZ2UiPjQuNC4gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcmVhZGluZyI+NC41LiBGdXJ0aGVyIFJlYWRpbmc8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+CjwvZGl2Pgo8cD5UaGVzZSBhcmUganVzdCBzb21lIHJhbmRvbSB0aG91Z2h0cyBvZiBtaW5lLiAgWW91ciBtaWxlYWdlCm1heSB2YXJ5LjwvcD4KPGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSI0LjEuoExpbWl0YXRpb25zIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0Ij4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ibGltaXRzIj48L2E+NC4xLqBMaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMS4wLlg8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjAuOS41PC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4wLjkuMDwvY29kZT4gdXNlIGV4YWN0bHkgdGhlIHNhbWUgZmlsZQpmb3JtYXQgYXMgdGhlIG9yaWdpbmFsIHZlcnNpb24sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDItMC4xPC9jb2RlPi4gIFRoaXMgZGVjaXNpb24gd2FzCm1hZGUgaW4gdGhlIGludGVyZXN0cyBvZiBzdGFiaWxpdHkuICBDcmVhdGluZyB5ZXQgYW5vdGhlcgppbmNvbXBhdGlibGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdCB3b3VsZCBjcmVhdGUgZnVydGhlcgpjb25mdXNpb24gYW5kIGRpc3J1cHRpb24gZm9yIHVzZXJzLjwvcD4KPHA+TmV2ZXJ0aGVsZXNzLCB0aGlzIGlzIG5vdCBhIHBhaW5sZXNzIGRlY2lzaW9uLiAgRGV2ZWxvcG1lbnQKd29yayBzaW5jZSB0aGUgcmVsZWFzZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuMTwvY29kZT4gaW4gQXVndXN0IDE5OTcgaGFzCnNob3duIGNvbXBsZXhpdGllcyBpbiB0aGUgZmlsZSBmb3JtYXQgd2hpY2ggc2xvdyBkb3duCmRlY29tcHJlc3Npb24gYW5kLCBpbiByZXRyb3NwZWN0LCBhcmUgdW5uZWNlc3NhcnkuICBUaGVzZQphcmU6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCBjbGFzcz0iaXRlbWl6ZWRsaXN0IiB0eXBlPSJidWxsZXQiPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgcnVuLWxlbmd0aCBlbmNvZGVyLCB3aGljaCBpcyB0aGUgZmlyc3Qgb2YgdGhlCiAgIGNvbXByZXNzaW9uIHRyYW5zZm9ybWF0aW9ucywgaXMgZW50aXJlbHkgaXJyZWxldmFudC4gIFRoZQogICBvcmlnaW5hbCBwdXJwb3NlIHdhcyB0byBwcm90ZWN0IHRoZSBzb3J0aW5nIGFsZ29yaXRobSBmcm9tIHRoZQogICB2ZXJ5IHdvcnN0IGNhc2UgaW5wdXQ6IGEgc3RyaW5nIG9mIHJlcGVhdGVkIHN5bWJvbHMuICBCdXQKICAgYWxnb3JpdGhtIHN0ZXBzIFE2YSBhbmQgUTZiIGluIHRoZSBvcmlnaW5hbCBCdXJyb3dzLVdoZWVsZXIKICAgdGVjaG5pY2FsIHJlcG9ydCAoU1JDLTEyNCkgc2hvdyBob3cgcmVwZWF0cyBjYW4gYmUgaGFuZGxlZAogICB3aXRob3V0IGRpZmZpY3VsdHkgaW4gYmxvY2sgc29ydGluZy48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CjxwPlRoZSByYW5kb21pc2F0aW9uIG1lY2hhbmlzbSBkb2Vzbid0IHJlYWxseSBuZWVkIHRvIGJlCiAgIHRoZXJlLiAgVWRpIE1hbmJlciBhbmQgR2VuZSBNeWVycyBwdWJsaXNoZWQgYSBzdWZmaXggYXJyYXkKICAgY29uc3RydWN0aW9uIGFsZ29yaXRobSBhIGZldyB5ZWFycyBiYWNrLCB3aGljaCBjYW4gYmUgZW1wbG95ZWQKICAgdG8gc29ydCBhbnkgYmxvY2ssIG5vIG1hdHRlciBob3cgcmVwZXRpdGl2ZSwgaW4gTyhOIGxvZyBOKQogICB0aW1lLiAgU3Vic2VxdWVudCB3b3JrIGJ5IEt1bmloaWtvIFNhZGFrYW5lIGhhcyBwcm9kdWNlZCBhCiAgIGRlcml2YXRpdmUgTyhOIChsb2cgTileMikgYWxnb3JpdGhtIHdoaWNoIHVzdWFsbHkgb3V0cGVyZm9ybXMKICAgdGhlIE1hbmJlci1NeWVycyBhbGdvcml0aG0uPC9wPgo8cD5JIGNvdWxkIGhhdmUgY2hhbmdlZCB0byBTYWRha2FuZSdzIGFsZ29yaXRobSwgYnV0IEkgZmluZAogICBpdCB0byBiZSBzbG93ZXIgdGhhbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPidzCiAgIGV4aXN0aW5nIGFsZ29yaXRobSBmb3IgbW9zdCBpbnB1dHMsIGFuZCB0aGUgcmFuZG9taXNhdGlvbgogICBtZWNoYW5pc20gcHJvdGVjdHMgYWRlcXVhdGVseSBhZ2FpbnN0IGJhZCBjYXNlcy4gIEkgZGlkbid0CiAgIHRoaW5rIGl0IHdhcyBhIGdvb2QgdHJhZGVvZmYgdG8gbWFrZS4gIFBhcnRseSB0aGlzIGlzIGR1ZSB0bwogICB0aGUgZmFjdCB0aGF0IEkgd2FzIG5vdCBmbG9vZGVkIHdpdGggZW1haWwgY29tcGxhaW50cyBhYm91dAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuMTwvY29kZT4ncyBwZXJmb3JtYW5jZSBvbgogICByZXBldGl0aXZlIGRhdGEsIHNvIHBlcmhhcHMgaXQgaXNuJ3QgYSBwcm9ibGVtIGZvciByZWFsCiAgIGlucHV0cy48L3A+CjxwPlByb2JhYmx5IHRoZSBiZXN0IGxvbmctdGVybSBzb2x1dGlvbiwgYW5kIHRoZSBvbmUgSSBoYXZlCiAgIGluY29ycG9yYXRlZCBpbnRvIDAuOS41IGFuZCBhYm92ZSwgaXMgdG8gdXNlIHRoZSBleGlzdGluZwogICBzb3J0aW5nIGFsZ29yaXRobSBpbml0aWFsbHksIGFuZCBmYWxsIGJhY2sgdG8gYSBPKE4gKGxvZyBOKV4yKQogICBhbGdvcml0aG0gaWYgdGhlIHN0YW5kYXJkIGFsZ29yaXRobSBnZXRzIGludG8KICAgZGlmZmljdWx0aWVzLjwvcD4KPC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhlIGNvbXByZXNzZWQgZmlsZSBmb3JtYXQgd2FzIG5ldmVyIGRlc2lnbmVkIHRvIGJlCiAgIGhhbmRsZWQgYnkgYSBsaWJyYXJ5LCBhbmQgSSBoYXZlIGhhZCB0byBqdW1wIHRob3VnaCBzb21lIGhvb3BzCiAgIHRvIHByb2R1Y2UgYW4gZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mIGRlY29tcHJlc3Npb24uICBJdCdzCiAgIGEgYml0IGhhaXJ5LiAgVHJ5IHBhc3NpbmcKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kZWNvbXByZXNzLmM8L2NvZGU+IHRocm91Z2ggdGhlIEMKICAgcHJlcHJvY2Vzc29yIGFuZCB5b3UnbGwgc2VlIHdoYXQgSSBtZWFuLiAgTXVjaCBvZiB0aGlzCiAgIGNvbXBsZXhpdHkgY291bGQgaGF2ZSBiZWVuIGF2b2lkZWQgaWYgdGhlIGNvbXByZXNzZWQgc2l6ZSBvZgogICBlYWNoIGJsb2NrIG9mIGRhdGEgd2FzIHJlY29yZGVkIGluIHRoZSBkYXRhIHN0cmVhbS48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+QW4gQWRsZXItMzIgY2hlY2tzdW0sIHJhdGhlciB0aGFuIGEgQ1JDMzIgY2hlY2tzdW0sCiAgIHdvdWxkIGJlIGZhc3RlciB0byBjb21wdXRlLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5JdCB3b3VsZCBiZSBmYWlyIHRvIHNheSB0aGF0IHRoZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBmb3JtYXQgd2FzIGZyb3plbiBiZWZvcmUgSQpwcm9wZXJseSBhbmQgZnVsbHkgdW5kZXJzdG9vZCB0aGUgcGVyZm9ybWFuY2UgY29uc2VxdWVuY2VzIG9mCmRvaW5nIHNvLjwvcD4KPHA+SW1wcm92ZW1lbnRzIHdoaWNoIEkgd2FzIGFibGUgdG8gaW5jb3Jwb3JhdGUgaW50byAwLjkuMCwKZGVzcGl0ZSB1c2luZyB0aGUgc2FtZSBmaWxlIGZvcm1hdCwgYXJlOjwvcD4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgY2xhc3M9Iml0ZW1pemVkbGlzdCIgdHlwZT0iYnVsbGV0Ij4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+U2luZ2xlIGFycmF5IGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnZlcnNlIEJXVC4gIFRoaXMKICBzaWduaWZpY2FudGx5IHNwZWVkcyB1cCBkZWNvbXByZXNzaW9uLCBwcmVzdW1hYmx5IGJlY2F1c2UgaXQKICByZWR1Y2VzIHRoZSBudW1iZXIgb2YgY2FjaGUgbWlzc2VzLjwvcD48L2xpPgo8bGkgY2xhc3M9Imxpc3RpdGVtIiBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5GYXN0ZXIgaW52ZXJzZSBNVEYgdHJhbnNmb3JtIGZvciBsYXJnZSBNVEYgdmFsdWVzLgogIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIG5vdGlvbiBvZiBzbGlkaW5nIGJsb2NrcwogIG9mIHZhbHVlcy48L3A+PC9saT4KPGxpIGNsYXNzPSJsaXN0aXRlbSIgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMi0wLjkuMDwvY29kZT4gbm93IHJlYWRzCiAgYW5kIHdyaXRlcyBmaWxlcyB3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlYWQ8L2NvZGU+CiAgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZndyaXRlPC9jb2RlPjsgdmVyc2lvbiAwLjEgdXNlZAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cHV0YzwvY29kZT4gYW5kCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nZXRjPC9jb2RlPi4gIER1aCEgIFdlbGwsIHlvdSBsaXZlCiAgYW5kIGxlYXJuLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5GdXJ0aGVyIGFoZWFkLCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gZG8gcmFuZG9tCmFjY2VzcyBpbnRvIGZpbGVzLiAgVGhpcyB3aWxsIHJlcXVpcmUgc29tZSBjYXJlZnVsIGRlc2lnbiBvZgpjb21wcmVzc2VkIGZpbGUgZm9ybWF0cy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjQuMi6gUG9ydGFiaWxpdHkgaXNzdWVzIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icG9ydC1pc3N1ZXMiPjwvYT40LjIuoFBvcnRhYmlsaXR5IGlzc3VlczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkFmdGVyIHNvbWUgY29uc2lkZXJhdGlvbiwgSSBoYXZlIGRlY2lkZWQgbm90IHRvIHVzZSBHTlUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdXRvY29uZjwvY29kZT4gdG8gY29uZmlndXJlIDAuOS41IG9yCjEuMC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXV0b2NvbmY8L2NvZGU+LCBhZG1pcmFibGUgYW5kCndvbmRlcmZ1bCB0aG91Z2ggaXQgaXMsIG1haW5seSBhc3Npc3RzIHdpdGggcG9ydGFiaWxpdHkgcHJvYmxlbXMKYmV0d2VlbiBVbml4LWxpa2UgcGxhdGZvcm1zLiAgQnV0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRvZXNuJ3QgaGF2ZSBtdWNoIGluIHRoZQp3YXkgb2YgcG9ydGFiaWxpdHkgcHJvYmxlbXMgb24gVW5peDsgbW9zdCBvZiB0aGUgZGlmZmljdWx0aWVzCmFwcGVhciB3aGVuIHBvcnRpbmcgdG8gdGhlIE1hYywgb3IgdG8gTWljcm9zb2Z0J3Mgb3BlcmF0aW5nCnN5c3RlbXMuICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF1dG9jb25mPC9jb2RlPiBkb2Vzbid0IGhlbHAKaW4gdGhvc2UgY2FzZXMsIGFuZCBicmluZ3MgaW4gYSB3aG9sZSBsb2FkIG9mIG5ldwpjb21wbGV4aXR5LjwvcD4KPHA+TW9zdCBwZW9wbGUgc2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSB0aGUgbGlicmFyeSBhbmQKcHJvZ3JhbSB1bmRlciBVbml4IHN0cmFpZ2h0IG91dC1vZi10aGUtYm94LCBzbyB0byBzcGVhaywKZXNwZWNpYWxseSBpZiB5b3UgaGF2ZSBhIHZlcnNpb24gb2YgR05VIEMgYXZhaWxhYmxlLjwvcD4KPHA+VGhlcmUgYXJlIGEgY291cGxlIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+X19pbmxpbmVfXzwvY29kZT4gZGlyZWN0aXZlcyBpbiB0aGUKY29kZS4gIEdOVSBDICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmdjYzwvY29kZT4pIHNob3VsZCBiZQphYmxlIHRvIGhhbmRsZSB0aGVtLiAgSWYgeW91J3JlIG5vdCB1c2luZyBHTlUgQywgeW91ciBDIGNvbXBpbGVyCnNob3VsZG4ndCBzZWUgdGhlbSBhdCBhbGwuICBJZiB5b3VyIGNvbXBpbGVyIGRvZXMsIGZvciBzb21lCnJlYXNvbiwgc2VlIHRoZW0gYW5kIGRvZXNuJ3QgbGlrZSB0aGVtLCBqdXN0Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+I2RlZmluZTwvY29kZT4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5fX2lubGluZV9fPC9jb2RlPiB0byBiZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi8qICovPC9jb2RlPi4gIE9uZSBlYXN5IHdheSB0byBkbyB0aGlzCmlzIHRvIGNvbXBpbGUgd2l0aCB0aGUgZmxhZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1EX19pbmxpbmVfXz08L2NvZGU+LCB3aGljaCBzaG91bGQgYmUKdW5kZXJzdG9vZCBieSBtb3N0IFVuaXggY29tcGlsZXJzLjwvcD4KPHA+SWYgeW91IHN0aWxsIGhhdmUgZGlmZmljdWx0aWVzLCB0cnkgY29tcGlsaW5nIHdpdGggdGhlCm1hY3JvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSSUNUX0FOU0k8L2NvZGU+IGRlZmluZWQuClRoaXMgc2hvdWxkIGVuYWJsZSB5b3UgdG8gYnVpbGQgdGhlIGxpYnJhcnkgaW4gYSBzdHJpY3RseSBBTlNJCmNvbXBsaWFudCBlbnZpcm9ubWVudC4gIEJ1aWxkaW5nIHRoZSBwcm9ncmFtIGl0c2VsZiBsaWtlIHRoaXMgaXMKZGFuZ2Vyb3VzIGFuZCBub3Qgc3VwcG9ydGVkLCBzaW5jZSB5b3UgcmVtb3ZlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+J3MgY2hlY2tzIGFnYWluc3QKY29tcHJlc3NpbmcgZGlyZWN0b3JpZXMsIHN5bWJvbGljIGxpbmtzLCBkZXZpY2VzLCBhbmQgb3RoZXIKbm90LXJlYWxseS1hLWZpbGUgZW50aXRpZXMuICBUaGlzIGNvdWxkIGNhdXNlIGZpbGVzeXN0ZW0KY29ycnVwdGlvbiE8L3A+CjxwPk9uZSBvdGhlciB0aGluZzogaWYgeW91IGNyZWF0ZSBhCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGJpbmFyeSBmb3IgcHVibGljIGRpc3RyaWJ1dGlvbiwKcGxlYXNlIGNvbnNpZGVyIGxpbmtpbmcgaXQgc3RhdGljYWxseSAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nY2MKLXN0YXRpYzwvY29kZT4pLiAgVGhpcyBhdm9pZHMgYWxsIHNvcnRzIG9mIGxpYnJhcnktdmVyc2lvbgppc3N1ZXMgdGhhdCBvdGhlcnMgbWF5IGVuY291bnRlciBsYXRlciBvbi48L3A+CjxwPklmIHlvdSBidWlsZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBvbgpXaW4zMiwgeW91IG11c3Qgc2V0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfVU5JWDwvY29kZT4gdG8gMAphbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9MQ0NXSU4zMjwvY29kZT4gdG8gMSwgaW4gdGhlCmZpbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMi5jPC9jb2RlPiwgYmVmb3JlIGNvbXBpbGluZy4KT3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYmluYXJ5IHdvbid0IHdvcmsgY29ycmVjdGx5LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNC4zLqBSZXBvcnRpbmcgYnVncyI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImJ1Z3MiPjwvYT40LjMuoFJlcG9ydGluZyBidWdzPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SSB0cmllZCBwcmV0dHkgaGFyZCB0byBtYWtlIHN1cmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYnVnIGZyZWUsIGJvdGggYnkKZGVzaWduIGFuZCBieSB0ZXN0aW5nLiAgSG9wZWZ1bGx5IHlvdSdsbCBuZXZlciBuZWVkIHRvIHJlYWQgdGhpcwpzZWN0aW9uIGZvciByZWFsLjwvcD4KPHA+TmV2ZXJ0aGVsZXNzLCBpZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkaWVzCndpdGggYSBzZWdtZW50YXRpb24gZmF1bHQsIGEgYnVzIGVycm9yIG9yIGFuIGludGVybmFsIGFzc2VydGlvbgpmYWlsdXJlLCBpdCB3aWxsIGFzayB5b3UgdG8gZW1haWwgbWUgYSBidWcgcmVwb3J0LiAgRXhwZXJpZW5jZSBmcm9tCnllYXJzIG9mIGZlZWRiYWNrIG9mIGJ6aXAyIHVzZXJzIGluZGljYXRlcyB0aGF0IGFsbW9zdCBhbGwgdGhlc2UKcHJvYmxlbXMgY2FuIGJlIHRyYWNlZCB0byBlaXRoZXIgY29tcGlsZXIgYnVncyBvciBoYXJkd2FyZQpwcm9ibGVtcy48L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIGNsYXNzPSJpdGVtaXplZGxpc3QiIHR5cGU9ImJ1bGxldCI+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgo8cD5SZWNvbXBpbGUgdGhlIHByb2dyYW0gd2l0aCBubyBvcHRpbWlzYXRpb24sIGFuZAogIHNlZSBpZiBpdCB3b3Jrcy4gIEFuZC9vciB0cnkgYSBkaWZmZXJlbnQgY29tcGlsZXIuICBJIGhlYXJkIGFsbAogIHNvcnRzIG9mIHN0b3JpZXMgYWJvdXQgdmFyaW91cyBmbGF2b3VycyBvZiBHTlUgQyAoYW5kIG90aGVyCiAgY29tcGlsZXJzKSBnZW5lcmF0aW5nIGJhZCBjb2RlIGZvcgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LCBhbmQgSSd2ZSBydW4gYWNyb3NzIHR3bwogIHN1Y2ggZXhhbXBsZXMgbXlzZWxmLjwvcD4KPHA+Mi43LlggdmVyc2lvbnMgb2YgR05VIEMgYXJlIGtub3duIHRvIGdlbmVyYXRlIGJhZCBjb2RlCiAgZnJvbSB0aW1lIHRvIHRpbWUsIGF0IGhpZ2ggb3B0aW1pc2F0aW9uIGxldmVscy4gIElmIHlvdSBnZXQKICBwcm9ibGVtcywgdHJ5IHVzaW5nIHRoZSBmbGFncwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LU8yPC9jb2RlPgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWZvbWl0LWZyYW1lLXBvaW50ZXI8L2NvZGU+CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZm5vLXN0cmVuZ3RoLXJlZHVjZTwvY29kZT4uICBZb3UKICBzaG91bGQgc3BlY2lmaWNhbGx5IDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPm5vdDwvZW0+PC9zcGFuPiB1c2UKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mdW5yb2xsLWxvb3BzPC9jb2RlPi48L3A+CjxwPllvdSBtYXkgbm90aWNlIHRoYXQgdGhlIE1ha2VmaWxlIHJ1bnMgc2l4IHRlc3RzIGFzIHBhcnQKICBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4gIElmIHRoZSBwcm9ncmFtIHBhc3NlcyBhbGwgb2YgdGhlc2UsIGl0J3MKICBhIHByZXR0eSBnb29kIChidXQgbm90IDEwMCUpIGluZGljYXRpb24gdGhhdCB0aGUgY29tcGlsZXIgaGFzCiAgZG9uZSBpdHMgam9iIGNvcnJlY3RseS48L3A+CjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgo8cD5JZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPgogIGNyYXNoZXMgcmFuZG9tbHksIGFuZCB0aGUgY3Jhc2hlcyBhcmUgbm90IHJlcGVhdGFibGUsIHlvdSBtYXkKICBoYXZlIGEgZmxha3kgbWVtb3J5IHN1YnN5c3RlbS4KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiByZWFsbHkgaGFtbWVycyB5b3VyCiAgbWVtb3J5IGhpZXJhcmNoeSwgYW5kIGlmIGl0J3MgYSBiaXQgbWFyZ2luYWwsIHlvdSBtYXkgZ2V0IHRoZXNlCiAgcHJvYmxlbXMuICBEaXR0byBpZiB5b3VyIGRpc2sgb3IgSS9PIHN1YnN5c3RlbSBpcyBzbG93bHkKICBmYWlsaW5nLiAgWXVwLCB0aGlzIHJlYWxseSBkb2VzIGhhcHBlbi48L3A+CjxwPlRyeSB1c2luZyBhIGRpZmZlcmVudCBtYWNoaW5lIG9mIHRoZSBzYW1lIHR5cGUsIGFuZCBzZWUKICBpZiB5b3UgY2FuIHJlcGVhdCB0aGUgcHJvYmxlbS48L3A+CjwvbGk+CjxsaSBjbGFzcz0ibGlzdGl0ZW0iIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoaXMgaXNuJ3QgcmVhbGx5IGEgYnVnLCBidXQgLi4uIElmCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdGVsbHMgeW91IHlvdXIgZmlsZSBpcwogIGNvcnJ1cHRlZCBvbiBkZWNvbXByZXNzaW9uLCBhbmQgeW91IG9idGFpbmVkIHRoZSBmaWxlIHZpYSBGVFAsCiAgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHlvdSBmb3Jnb3QgdG8gdGVsbCBGVFAgdG8gZG8gYQogIGJpbmFyeSBtb2RlIHRyYW5zZmVyLiAgVGhhdCBhYnNvbHV0ZWx5IHdpbGwgY2F1c2UgdGhlIGZpbGUgdG8KICBiZSBub24tZGVjb21wcmVzc2libGUuICBZb3UnbGwgaGF2ZSB0byB0cmFuc2ZlciBpdAogIGFnYWluLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5JZiB5b3UndmUgaW5jb3Jwb3JhdGVkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGludG8geW91ciBvd24gcHJvZ3JhbQphbmQgYXJlIGdldHRpbmcgcHJvYmxlbXMsIHBsZWFzZSwgcGxlYXNlLCBwbGVhc2UsIGNoZWNrIHRoYXQgdGhlCnBhcmFtZXRlcnMgeW91IGFyZSBwYXNzaW5nIGluIGNhbGxzIHRvIHRoZSBsaWJyYXJ5LCBhcmUgY29ycmVjdCwKYW5kIGluIGFjY29yZGFuY2Ugd2l0aCB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgaXMgYWxsb3dhYmxlLgpJIGhhdmUgdHJpZWQgdG8gbWFrZSB0aGUgbGlicmFyeSByb2J1c3QgYWdhaW5zdCBzdWNoIHByb2JsZW1zLApidXQgSSdtIHN1cmUgSSBoYXZlbid0IHN1Y2NlZWRlZC48L3A+CjxwPkZpbmFsbHksIGlmIHRoZSBhYm92ZSBjb21tZW50cyBkb24ndCBoZWxwLCB5b3UnbGwgaGF2ZSB0bwpzZW5kIG1lIGEgYnVnIHJlcG9ydC4gIE5vdywgaXQncyBqdXN0IGFtYXppbmcgaG93IG1hbnkgcGVvcGxlCndpbGwgc2VuZCBtZSBhIGJ1ZyByZXBvcnQgc2F5aW5nIHNvbWV0aGluZyBsaWtlOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmJ6aXAyIGNyYXNoZWQgd2l0aCBzZWdtZW50YXRpb24gZmF1bHQgb24gbXkgbWFjaGluZTwvcHJlPgo8cD5hbmQgYWJzb2x1dGVseSBub3RoaW5nIGVsc2UuICBOZWVkbGVzcyB0byBzYXksIGEgc3VjaCBhCnJlcG9ydCBpcyA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT50b3RhbGx5LCB1dHRlcmx5LCBjb21wbGV0ZWx5IGFuZApjb21wcmVoZW5zaXZlbHkgMTAwJSB1c2VsZXNzOyBhIHdhc3RlIG9mIHlvdXIgdGltZSwgbXkgdGltZSwgYW5kCm5ldCBiYW5kd2lkdGg8L2VtPjwvc3Bhbj4uICBXaXRoIG5vIGRldGFpbHMgYXQgYWxsLCB0aGVyZSdzIG5vIHdheQpJIGNhbiBwb3NzaWJseSBiZWdpbiB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHByb2JsZW0gaXMuPC9wPgo8cD5UaGUgcnVsZXMgb2YgdGhlIGdhbWUgYXJlOiBmYWN0cywgZmFjdHMsIGZhY3RzLiAgRG9uJ3Qgb21pdAp0aGVtIGJlY2F1c2UgIm9oLCB0aGV5IHdvbid0IGJlIHJlbGV2YW50Ii4gIEF0IHRoZSBiYXJlCm1pbmltdW06PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+TWFjaGluZSB0eXBlLiAgT3BlcmF0aW5nIHN5c3RlbSB2ZXJzaW9uLiAgCkV4YWN0IHZlcnNpb24gb2YgYnppcDIgKGRvIGJ6aXAyIC1WKS4gIApFeGFjdCB2ZXJzaW9uIG9mIHRoZSBjb21waWxlciB1c2VkLiAgCkZsYWdzIHBhc3NlZCB0byB0aGUgY29tcGlsZXIuPC9wcmU+CjxwPkhvd2V2ZXIsIHRoZSBtb3N0IGltcG9ydGFudCBzaW5nbGUgdGhpbmcgdGhhdCB3aWxsIGhlbHAgbWUKaXMgdGhlIGZpbGUgdGhhdCB5b3Ugd2VyZSB0cnlpbmcgdG8gY29tcHJlc3Mgb3IgZGVjb21wcmVzcyBhdCB0aGUKdGltZSB0aGUgcHJvYmxlbSBoYXBwZW5lZC4gIFdpdGhvdXQgdGhhdCwgbXkgYWJpbGl0eSB0byBkbwphbnl0aGluZyBtb3JlIHRoYW4gc3BlY3VsYXRlIGFib3V0IHRoZSBjYXVzZSwgaXMgbGltaXRlZC48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgdGl0bGU9IjQuNC6gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/Ij4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icGFja2FnZSI+PC9hPjQuNC6gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYSByZXNvdXJjZSBob2cuCkl0IHNvYWtzIHVwIGxhcmdlIGFtb3VudHMgb2YgQ1BVIGN5Y2xlcyBhbmQgbWVtb3J5LiAgQWxzbywgaXQKZ2l2ZXMgdmVyeSBsYXJnZSBsYXRlbmNpZXMuICBJbiB0aGUgd29yc3QgY2FzZSwgeW91IGNhbiBmZWVkIG1hbnkKbWVnYWJ5dGVzIG9mIHVuY29tcHJlc3NlZCBkYXRhIGludG8gdGhlIGxpYnJhcnkgYmVmb3JlIGdldHRpbmcKYW55IGNvbXByZXNzZWQgb3V0cHV0LCBzbyB0aGlzIHByb2JhYmx5IHJ1bGVzIG91dCBhcHBsaWNhdGlvbnMKcmVxdWlyaW5nIGludGVyYWN0aXZlIGJlaGF2aW91ci48L3A+CjxwPlRoZXNlIGFyZW4ndCBmYXVsdHMgb2YgbXkgaW1wbGVtZW50YXRpb24sIEkgaG9wZSwgYnV0IG1vcmUKYW4gaW50cmluc2ljIHByb3BlcnR5IG9mIHRoZSBCdXJyb3dzLVdoZWVsZXIgdHJhbnNmb3JtCih1bmZvcnR1bmF0ZWx5KS4gIE1heWJlIHRoaXMgaXNuJ3Qgd2hhdCB5b3Ugd2FudC48L3A+CjxwPklmIHlvdSB3YW50IGEgY29tcHJlc3NvciBhbmQvb3IgbGlicmFyeSB3aGljaCBpcyBmYXN0ZXIsCnVzZXMgbGVzcyBtZW1vcnkgYnV0IGdldHMgcHJldHR5IGdvb2QgY29tcHJlc3Npb24sIGFuZCBoYXMKbWluaW1hbCBsYXRlbmN5LCBjb25zaWRlciBKZWFuLWxvdXAgR2FpbGx5J3MgYW5kIE1hcmsgQWRsZXIncwp3b3JrLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWItMS4yLjE8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXAtMS4yLjQ8L2NvZGU+LiAgTG9vayBmb3IgdGhlbSBhdCAKPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnpsaWIub3JnIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly93d3cuemxpYi5vcmc8L2E+IGFuZCAKPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3Lmd6aXAub3JnIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly93d3cuZ3ppcC5vcmc8L2E+CnJlc3BlY3RpdmVseS48L3A+CjxwPkZvciBzb21ldGhpbmcgZmFzdGVyIGFuZCBsaWdodGVyIHN0aWxsLCB5b3UgbWlnaHQgdHJ5IE1hcmt1cyBGClggSiBPYmVyaHVtZXIncyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkxaTzwvY29kZT4gcmVhbC10aW1lCmNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSwgYXQgCjxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UiIHRhcmdldD0iX3RvcCI+aHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2U8L2E+LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iNC41LqBGdXJ0aGVyIFJlYWRpbmciPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJyZWFkaW5nIj48L2E+NC41LqBGdXJ0aGVyIFJlYWRpbmc8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBpcyBub3QgcmVzZWFyY2gKd29yaywgaW4gdGhlIHNlbnNlIHRoYXQgaXQgZG9lc24ndCBwcmVzZW50IGFueSBuZXcgaWRlYXMuClJhdGhlciwgaXQncyBhbiBlbmdpbmVlcmluZyBleGVyY2lzZSBiYXNlZCBvbiBleGlzdGluZwppZGVhcy48L3A+CjxwPkZvdXIgZG9jdW1lbnRzIGRlc2NyaWJlIGVzc2VudGlhbGx5IGFsbCB0aGUgaWRlYXMgYmVoaW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+OjwvcD4KPGRpdiBjbGFzcz0ibGl0ZXJhbGxheW91dCI+PHA+TWljaGFlbKBCdXJyb3dzoGFuZKBELqBKLqBXaGVlbGVyOjxicj4KoKAiQaBibG9jay1zb3J0aW5noGxvc3NsZXNzoGRhdGGgY29tcHJlc3Npb26gYWxnb3JpdGhtIjxicj4KoKCgMTB0aKBNYXmgMTk5NC6gPGJyPgqgoKBEaWdpdGFsoFNSQ6BSZXNlYXJjaKBSZXBvcnSgMTI0Ljxicj4KoKCgZnRwOi8vZnRwLmRpZ2l0YWwuY29tL3B1Yi9ERUMvU1JDL3Jlc2VhcmNoLXJlcG9ydHMvU1JDLTEyNC5wcy5nejxicj4KoKCgSWageW91oGhhdmWgdHJvdWJsZaBmaW5kaW5noGl0LKB0cnmgc2VhcmNoaW5noGF0oHRoZTxicj4KoKCgTmV3oFplYWxhbmSgRGlnaXRhbKBMaWJyYXJ5LKBodHRwOi8vd3d3Lm56ZGwub3JnLjxicj4KPGJyPgpEYW5pZWygUy6gSGlyc2NoYmVyZ6BhbmSgRGVicmGgQS6gTGVMZXdlcjxicj4KoKAiRWZmaWNpZW50oERlY29kaW5noG9moFByZWZpeKBDb2RlcyI8YnI+CqCgoENvbW11bmljYXRpb25zoG9moHRoZaBBQ00soEFwcmlsoDE5OTAsoFZvbKAzMyygTnVtYmVyoDQuPGJyPgqgoKBZb3WgbWlnaHSgYmWgYWJsZaB0b6BnZXSgYW6gZWxlY3Ryb25pY6Bjb3B5oG9moHRoaXM8YnI+CqCgoGZyb22gdGhloEFDTaBEaWdpdGFsoExpYnJhcnkuPGJyPgo8YnI+CkRhdmlkoEouoFdoZWVsZXI8YnI+CqCgoFByb2dyYW2gYnJlZDMuY6BhbmSgYWNjb21wYW55aW5noGRvY3VtZW50oGJyZWQzLnBzLjxicj4KoKCgVGhpc6Bjb250YWluc6B0aGWgaWRlYaBiZWhpbmSgdGhloG11bHRpLXRhYmxloEh1ZmZtYW6gY29kaW5noHNjaGVtZS48YnI+CqCgoGZ0cDovL2Z0cC5jbC5jYW0uYWMudWsvdXNlcnMvZGp3My88YnI+Cjxicj4KSm9uoEwuoEJlbnRsZXmgYW5koFJvYmVydKBTZWRnZXdpY2s8YnI+CqCgIkZhc3SgQWxnb3JpdGhtc6Bmb3KgU29ydGluZ6BhbmSgU2VhcmNoaW5noFN0cmluZ3MiPGJyPgqgoKBBdmFpbGFibGWgZnJvbaBTZWRnZXdpY2snc6B3ZWKgcGFnZSw8YnI+CqCgoHd3dy5jcy5wcmluY2V0b24uZWR1L35yczxicj4KPC9wPjwvZGl2Pgo8cD5UaGUgZm9sbG93aW5nIHBhcGVyIGdpdmVzIHZhbHVhYmxlIGFkZGl0aW9uYWwgaW5zaWdodHMgaW50bwp0aGUgYWxnb3JpdGhtLCBidXQgaXMgbm90IGltbWVkaWF0ZWx5IHRoZSBiYXNpcyBvZiBhbnkgY29kZSB1c2VkCmluIGJ6aXAyLjwvcD4KPGRpdiBjbGFzcz0ibGl0ZXJhbGxheW91dCI+PHA+UGV0ZXKgRmVud2ljazo8YnI+CqCgoEJsb2NroFNvcnRpbmegVGV4dKBDb21wcmVzc2lvbjxicj4KoKCgUHJvY2VlZGluZ3Ogb2agdGhloDE5dGigQXVzdHJhbGFzaWFuoENvbXB1dGVyoFNjaWVuY2WgQ29uZmVyZW5jZSw8YnI+CqCgoKCgTWVsYm91cm5lLKBBdXN0cmFsaWEuoKBKYW6gMzGgLaBGZWKgMiygMTk5Ni48YnI+CqCgoGZ0cDovL2Z0cC5jcy5hdWNrbGFuZC5hYy5uei9wdWIvcGV0ZXItZi9BQ1NDOTZwYXBlci5wczwvcD48L2Rpdj4KPHA+S3VuaWhpa28gU2FkYWthbmUncyBzb3J0aW5nIGFsZ29yaXRobSwgbWVudGlvbmVkIGFib3ZlLCBpcwphdmFpbGFibGUgZnJvbTo8L3A+CjxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPmh0dHA6Ly9uYW9taS5pcy5zLnUtdG9reW8uYWMuanAvfnNhZGEvcGFwZXJzL1NhZGE5OGIucHMuZ3o8YnI+CjwvcD48L2Rpdj4KPHA+VGhlIE1hbmJlci1NeWVycyBzdWZmaXggYXJyYXkgY29uc3RydWN0aW9uIGFsZ29yaXRobSBpcwpkZXNjcmliZWQgaW4gYSBwYXBlciBhdmFpbGFibGUgZnJvbTo8L3A+CjxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPmh0dHA6Ly93d3cuY3MuYXJpem9uYS5lZHUvcGVvcGxlL2dlbmUvUEFQRVJTL3N1ZmZpeC5wczxicj4KPC9wPjwvZGl2Pgo8cD5GaW5hbGx5LCB0aGUgZm9sbG93aW5nIHBhcGVycyBkb2N1bWVudCBzb21lCmludmVzdGlnYXRpb25zIEkgbWFkZSBpbnRvIHRoZSBwZXJmb3JtYW5jZSBvZiBzb3J0aW5nCmFuZCBkZWNvbXByZXNzaW9uIGFsZ29yaXRobXM6PC9wPgo8ZGl2IGNsYXNzPSJsaXRlcmFsbGF5b3V0Ij48cD5KdWxpYW6gU2V3YXJkPGJyPgqgoKBPbqB0aGWgUGVyZm9ybWFuY2Wgb2agQldUoFNvcnRpbmegQWxnb3JpdGhtczxicj4KoKCgUHJvY2VlZGluZ3Ogb2agdGhloElFRUWgRGF0YaBDb21wcmVzc2lvbqBDb25mZXJlbmNloDIwMDA8YnI+CqCgoKCgU25vd2JpcmQsoFV0YWguoKAyOC0zMKBNYXJjaKAyMDAwLjxicj4KPGJyPgpKdWxpYW6gU2V3YXJkPGJyPgqgoKBTcGFjZS10aW1loFRyYWRlb2Zmc6BpbqB0aGWgSW52ZXJzZaBCLVegVHJhbnNmb3JtPGJyPgqgoKBQcm9jZWVkaW5nc6BvZqB0aGWgSUVFRaBEYXRhoENvbXByZXNzaW9uoENvbmZlcmVuY2WgMjAwMTxicj4KoKCgoKBTbm93YmlyZCygVXRhaC6goDI3LTI5oE1hcmNooDIwMDEuPGJyPgo8L3A+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9ib2R5Pgo8L2h0bWw+Cg==