VE9UQUxMT0NLRkNTVAlUb3RhbCBMb2NrIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuVE9UQUxMT0NLRkNTVAlGbG9hdCAJRm9yZWNhc3Qgb2YgdHlwZSAndG90YWwgZm9yZWNhc3QgbG9jaycsIGFsbG9jYXRlZCBieSB0aW1lIGFuZCBub3QgYnkgdGhlIGFsbG9jYXRpb24gY2FsZW5kYXIuCkFMTE9DVE9UQUxMT0NLRkNTVAlBbGxvY2F0ZWQgVG90YWwgTG9jayBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLkFMTE9DVE9UQUxMT0NLRkNTVAlGbG9hdCAJQWxsb2NhdGVkIFRvdGFsIExvY2sgRm9yZWNhc3QgaXMgdGhlIHRvdGFsIGxvY2sgZm9yZWNhc3QgZm9yIHRoaXMgcGVyaW9kLCBiYXNlZCBvbiB0aGUgcHJvZmlsZSBkZWZpbmVkIGJ5IHRoZSBhbGxvY2F0aW9uIGNhbGVuZGFyLiBJZiB0aGUgU0tVRGVtYW5kUGFyYW06UHJvcmF0ZUJ5VHlwZVN3IGlzIHNldCB0byBZZXMsIHRoZSBhbGxvY2F0ZWQgdG90YWwgbG9jayBmb3JlY2FzdCBpcyBwcm9yYXRlZCBieSBTS1VEZW1hbmRUeXBlUGFyYW06RG1kVG9EYXRlLiBTZWUgQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMykgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcm9yYXRlcyB0aGUgZGVtYW5kLgpBREpBTExPQ1RPVEFMTE9DS0ZDU1QJQWRqdXN0ZWQgQWxsb2NhdGVkIFRvdGFsIExvY2sgRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5BREpBTExPQ1RPVEFMTE9DS0ZDU1QJRmxvYXQgCUFkanVzdGVkIEFsbG9jYXRlZCBUb3RhbCBMb2NrIEZvcmVjYXN0IGlzIHRoZSBhbGxvY2F0ZWQgdG90YWwgbG9jayBmb3JlY2FzdCBhZnRlciBiZWluZyBhZGp1c3RlZCB3aXRoIHRoZSB0b3RhbCBsb2NrIGN1c3RvbWVyIG9yZGVycy4gU2VlIEFkakFsbG9jVG90RmNzdCAob24gcGFnZSA3MTEpIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBmb3JlY2FzdCBhZGp1c3RtZW50IHJ1bGVzIG9uIHRoZSBhZGp1c3RlZCBhbGxvY2F0ZWQgdG90YWwgbG9jayBmb3JlY2FzdC4KVE9UQUxMT0NLQ1VTVE9SREVSUwlUb3RhbCBMb2NrIEN1c3RvbWVyIE9yZGVycwlTS1VQUk9KU1RBVElDLlRPVEFMTE9DS0NVU1RPUkRFUlMJRmxvYXQgCUZvcmVjYXN0ZWQgY3VzdG9tZXIgb3JkZXJzIHdob3NlIEZjc3RUeXBlIGlzJ3RvdGFsIGZvcmNhc3QgbG9jaycuClJFQ09OQ0lMRUZDU1QJUmVjb25jaWxlIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuUkVDT05DSUxFRkNTVAlGbG9hdCAJRm9yZWNhc3Qgb2YgdHlwZSAncmVjb25jaWxlJywgYWxsb2NhdGVkIGJ5IHRpbWUgYW5kIG5vdCBieSB0aGUgYWxsb2NhdGlvbiBjYWxlbmRhci4KQUxMT0NSRUNPTkNJTEVGQ1NUCUFsbG9jYXRlZCBSZWNvbmNpbGUgRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5BTExPQ1JFQ09OQ0lMRUZDU1QJRmxvYXQgCUFsbG9jYXRlZCBSZWNvbmNpbGUgRm9yZWNhc3QgaXMgdGhlIHJlY29uY2lsZSBmb3JlY2FzdCBmb3IgdGhpcyBwZXJpb2QsIGJhc2VkIG9uIHRoZSBwcm9maWxlIGRlZmluZWQgYnkgdGhlIGFsbG9jYXRpb24gY2FsZW5kYXIuIElmIHRoZSBTS1VEZW1hbmRQYXJhbTpQcm9yYXRlQnlUeXBlU3cgaXMgc2V0IHRvIFllcywgdGhlIGFsbG9jYXRlZCByZWNvbmNpbGUgZm9yZWNhc3QgaXMgcHJvcmF0ZWQgYnkgU0tVRGVtYW5kVHlwZVBhcmFtOkRtZFRvRGF0ZS4gU2VlIEFsbG9jVG90RmNzdCAob24gcGFnZSA3MTMpIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gcHJvcmF0ZXMgdGhlIGRlbWFuZC4KQURKQUxMT0NSRUNPTkNJTEVGQ1NUCUFkanVzdGVkIEFsbG9jYXRlZCBSZWNvbmNpbGUgRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5BREpBTExPQ1JFQ09OQ0lMRUZDU1QJRmxvYXQgCUFkanVzdGVkIEFsbG9jYXRlZCBSZWNvbmNpbGUgRm9yZWNhc3QgaXMgdGhlIGFsbG9jYXRlZCByZWNvbmNpbGUgZm9yZWNhc3QgYWZ0ZXIgYmVpbmcgYWRqdXN0ZWQgd2l0aCB0aGUgcmVjb25jaWxlIGN1c3RvbWVyIG9yZGVycy4gU2VlIEFkakFsbG9jVG90RmNzdCAob24gcGFnZSA3MTEpIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBmb3JlY2FzdCBhZGp1c3RtZW50IHJ1bGVzIG9uIHRoZSBhZGp1c3RlZCBhbGxvY2F0ZWQgcmVjb25jaWxlIGZvcmVjYXN0LgpSRUNPTkNJTEVDVVNUT1JERVJTCVJlY29uY2lsZSBDdXN0b21lciBPcmRlcnMJU0tVUFJPSlNUQVRJQy5SRUNPTkNJTEVDVVNUT1JERVJTCUZsb2F0IAlGb3JlY2FzdGVkIGN1c3RvbWVyIG9yZGVyIHdob3NlIEZjc3RUeXBlIGlzICdyZWNvbmNpbGUnLgpBVVRPRkNTVAlBdXRvIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuQVVUT0ZDU1QJRmxvYXQgCUZvcmVjYXN0IG9mIHR5cGUgJ2F1dG8nLCBhbGxvY2F0ZWQgYnkgdGltZSBhbmQgbm90IGJ5IHRoZSBhbGxvY2F0aW9uIGNhbGVuZGFyLgpBTExPQ0FVVE9GQ1NUCUFsbG9jYXRlZCBBdXRvIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuQUxMT0NBVVRPRkNTVAlGbG9hdCAJQWxsb2NhdGVkIEF1dG8gRm9yZWNhc3QgaXMgdGhlIGF1dG8gZm9yZWNhc3QgZm9yIHRoaXMgcGVyaW9kLCBiYXNlZCBvbiB0aGUgcHJvZmlsZSBkZWZpbmVkIGJ5IHRoZSBhbGxvY2F0aW9uIGNhbGVuZGFyLiBJZiB0aGUgU0tVRGVtYW5kUGFyYW06UHJvcmF0ZUJ5VHlwZVN3IGlzIHNldCB0byBZZXMsIHRoZSBhbGxvY2F0ZWQgYXV0byBmb3JlY2FzdCBpcyBwcm9yYXRlZCBieSBTS1VEZW1hbmRUeXBlUGFyYW06RG1kVG9EYXRlLiBTZWUgQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMykgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcm9yYXRlcyB0aGUgZGVtYW5kLgpBREpBTExPQ0FVVE9GQ1NUCUFkanVzdGVkIEFsbG9jYXRlZCBBdXRvIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuQURKQUxMT0NBVVRPRkNTVAlGbG9hdCAJQWRqdXN0ZWQgQWxsb2NhdGVkIEF1dG8gRm9yZWNhc3QgaXMgdGhlIGFsbG9jYXRlZCBhdXRvIGZvcmVjYXN0IGFmdGVyIGJlaW5nIGFkanVzdGVkIHdpdGggdGhlIGF1dG8gY3VzdG9tZXIgb3JkZXJzLiBTZWUgQWRqQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMSkgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIGZvcmVjYXN0IGFkanVzdG1lbnQgcnVsZXMgb24gdGhlIGFkanVzdGVkIGFsbG9jYXRlZCBhdXRvIGZvcmVjYXN0LgpBVVRPQ1VTVE9SREVSUwlBdXRvIEN1c3RvbWVyIE9yZGVycwlTS1VQUk9KU1RBVElDLkFVVE9DVVNUT1JERVJTCUZsb2F0IAlGb3JlY2FzdGVkIGN1c3RvbWVyIG9yZGVyIHdob3NlIEZjc3RUeXBlIGlzICdhdXRvJy4KT1ZSSURFRkNTVAlPdmVycmlkZSBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLk9WUklERUZDU1QJRmxvYXQgCUZvcmVjYXN0IG9mIHR5cGUgJ292ZXJyaWRlJywgYWxsb2NhdGVkIGJ5IHRpbWUgYW5kIG5vdCBieSB0aGUgYWxsb2NhdGlvbiBjYWxlbmRhci4KQUxMT0NPVlJJREVGQ1NUCUFsbG9jYXRlZCBPdmVycmlkZSBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLkFMTE9DT1ZSSURFRkNTVAlGbG9hdCAJQWxsb2NhdGVkIE92ZXJyaWRlIEZvcmVjYXN0IGlzIHRoZSBvdmVycmlkZSBmb3JlY2FzdCBmb3IgdGhpcyBwZXJpb2QsIGJhc2VkIG9uIHRoZSBwcm9maWxlIGRlZmluZWQgYnkgdGhlIGFsbG9jYXRpb24gY2FsZW5kYXIuIElmIHRoZSBTS1VEZW1hbmRQYXJhbTpQcm9yYXRlQnlUeXBlU3cgaXMgc2V0IHRvIFllcywgdGhlIGFsbG9jYXRlZCBvdmVycmlkZSBmb3JlY2FzdCBpcyBwcm9yYXRlZCBieSBTS1VEZW1hbmRUeXBlUGFyYW06RG1kVG9EYXRlLiBTZWUgQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMykgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcm9yYXRlcyB0aGUgZGVtYW5kLgpBREpBTExPQ09WUklERUZDU1QJQWRqdXN0ZWQgQWxsb2NhdGVkIE92ZXJyaWRlIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuQURKQUxMT0NPVlJJREVGQ1NUCUZsb2F0IAlBZGp1c3RlZCBBbGxvY2F0ZWQgT3ZlcnJpZGUgRm9yZWNhc3QgaXMgdGhlIGFsbG9jYXRlZCBvdmVycmlkZSBmb3JlY2FzdCBhZnRlciBiZWluZyBhZGp1c3RlZCB3aXRoIHRoZSBvdmVycmlkZSBjdXN0b21lciBvcmRlcnMuIFNlZSBBZGpBbGxvY1RvdEZjc3QgKG9uIHBhZ2UgNzExKSB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgZm9yZWNhc3QgYWRqdXN0bWVudCBydWxlcyBvbiB0aGUgYWRqdXN0ZWQgYWxsb2NhdGVkIG92ZXJyaWRlIGZvcmVjYXN0LgpPVlJJREVDVVNUT1JERVJTCU92ZXJyaWRlIEN1c3RvbWVyIE9yZGVycwlTS1VQUk9KU1RBVElDLk9WUklERUNVU1RPUkRFUlMJRmxvYXQgCUZvcmVjYXN0ZWQgY3VzdG9tZXIgb3JkZXIgd2hvc2UgRmNzdFR5cGUgaXMgJ292ZXJyaWRlJy4KTUtUQUNUVlRZRkNTVAlNYXJrZXQgQWN0aXZpdHkgRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5NS1RBQ1RWVFlGQ1NUCUZsb2F0IAlGb3JlY2FzdCBvZiB0eXBlICdtYXJrZXQgYWN0aXZpdHknLCBhbGxvY2F0ZWQgYnkgdGltZSBhbmQgbm90IGJ5IHRoZSBhbGxvY2F0aW9uIGNhbGVuZGFyLgpBTExPQ01LVEFDVFZUWUZDU1QJQWxsb2NhdGVkIE1hcmtldCBBY3Rpdml0eSBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLkFMTE9DTUtUQUNUVlRZRkNTVAlGbG9hdCAJQWxsb2NhdGVkIE1hcmtldCBBY3Rpdml0eSBGb3JlY2FzdCBpcyB0aGUgbWFya2V0IGFjdGl2aXR5IGZvcmVjYXN0IGZvciB0aGlzIHBlcmlvZCwgYmFzZWQgb24gdGhlIHByb2ZpbGUgZGVmaW5lZCBieSB0aGUgYWxsb2NhdGlvbiBjYWxlbmRhci4gSWYgdGhlIFNLVURlbWFuZFBhcmFtOlByb3JhdGVCeVR5cGVTdyBpcyBzZXQgdG8gWWVzLCB0aGUgYWxsb2NhdGVkIG1hcmtldCBhY3Rpdml0eSBmb3JlY2FzdCBpcyBwcm9yYXRlZCBieSBTS1VEZW1hbmRUeXBlUGFyYW06RG1kVG9EYXRlLiBTZWUgQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMykgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcm9yYXRlcyB0aGUgZGVtYW5kLgpBREpBTExPQ01LVEFDVFZUWUZDU1QJQWRqdXN0ZWQgQWxsb2NhdGVkIE1hcmtldCBBY3Rpdml0eSBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLkFESkFMTE9DTUtUQUNUVlRZRkNTVAlGbG9hdCAJQWRqdXN0ZWQgQWxsb2NhdGVkIE1hcmtldCBBY3Rpdml0eSBGb3JlY2FzdCBpcyB0aGUgYWxsb2NhdGVkIG1hcmtldCBhY3Rpdml0eSBmb3JlY2FzdCBhZnRlciBiZWluZyBhZGp1c3RlZCB3aXRoIHRoZSBtYXJrZXQgYWN0aXZpdHkgY3VzdG9tZXIgb3JkZXJzLiBTZWUgQWRqQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMSkgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIGZvcmVjYXN0IGFkanVzdG1lbnQgcnVsZXMgb24gdGhlIGFkanVzdGVkIGFsbG9jYXRlZCBtYXJrZXQgYWN0aXZpdHkgZm9yZWNhc3QuCk1LVEFDVFZUWUNVU1RPUkRFUlMJTWFya2V0IEFjdGl2aXR5IEN1c3RvbWVyIE9yZGVycwlTS1VQUk9KU1RBVElDLk1LVEFDVFZUWUNVU1RPUkRFUlMJRmxvYXQgCUZvcmVjYXN0ZWQgY3VzdG9tZXIgb3JkZXIgd2hvc2UgRmNzdFR5cGUgaXMgJ21hcmtldCBhY3Rpdml0eScuCkRBVEFEUlZORkNTVAlEYXRhIERyaXZlbiBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLkRBVEFEUlZORkNTVAlGbG9hdCAJRm9yZWNhc3Qgb2YgdHlwZSAnZGF0YSBkcml2ZW4nLCBhbGxvY2F0ZWQgYnkgdGltZSBhbmQgbm90IGJ5IHRoZSBhbGxvY2F0aW9uIGNhbGVuZGFyLgpBTExPQ0RBVEFEUlZORkNTVAlBbGxvY2F0ZWQgRGF0YSBEcml2ZW4gRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5BTExPQ0RBVEFEUlZORkNTVAlGbG9hdCAJQWxsb2NhdGVkIERhdGEgRHJpdmVuIEZvcmVjYXN0IGlzIHRoZSBkYXRhIGRyaXZlbiBmb3JlY2FzdCBmb3IgdGhpcyBwZXJpb2QsIGJhc2VkIG9uIHRoZSBwcm9maWxlIGRlZmluZWQgYnkgdGhlIGFsbG9jYXRpb24gY2FsZW5kYXIuIElmIHRoZSBTS1VEZW1hbmRQYXJhbTpQcm9yYXRlQnlUeXBlU3cgaXMgc2V0IHRvIFllcywgdGhlIGFsbG9jYXRlZCBkYXRhIGRyaXZlbiBmb3JlY2FzdCBpcyBwcm9yYXRlZCBieSBTS1VEZW1hbmRUeXBlUGFyYW06RG1kVG9EYXRlLiBTZWUgQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMykgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBwcm9yYXRlcyB0aGUgZGVtYW5kLgpBREpBTExPQ0RBVEFEUlZORkNTVAlBZGp1c3RlZCBBbGxvY2F0ZWQgRGF0YSBEcml2ZW4gRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5BREpBTExPQ0RBVEFEUlZORkNTVAlGbG9hdCAJQWRqdXN0ZWQgQWxsb2NhdGVkIERhdGEgRHJpdmVuIEZvcmVjYXN0IGlzIHRoZSBhbGxvY2F0ZWQgZGF0YSBkcml2ZW4gZm9yZWNhc3QgYWZ0ZXIgYmVpbmcgYWRqdXN0ZWQgd2l0aCB0aGUgYmFzZSBjdXN0b21lciBvcmRlcnMuIFNlZSBBZGpBbGxvY1RvdEZjc3QgKG9uIHBhZ2UgNzExKSB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgZm9yZWNhc3QgYWRqdXN0bWVudCBydWxlcyBvbiB0aGUgYWRqdXN0ZWQgYWxsb2NhdGVkIGRhdGEgZHJpdmVuIGZvcmVjYXN0LgpEQVRBRFJWTkNVU1RPUkRFUlMJRGF0YSBEcml2ZW4gQ3VzdG9tZXIgT3JkZXJzCVNLVVBST0pTVEFUSUMuREFUQURSVk5DVVNUT1JERVJTCUZsb2F0IAlGb3JlY2FzdGVkIGN1c3RvbWVyIG9yZGVyIHdob3NlIEZjc3RUeXBlIGlzICdkYXRhIGRyaXZlbicuClRBUkdUSU1QQUNUQkFTRUZDU1QJVGFyZ2V0IEltcGFjdCBCYXNlIEZvcmVjYXN0CVNLVVBST0pTVEFUSUMuVEFSR1RJTVBBQ1RCQVNFRkNTVAlGbG9hdCAJRm9yZWNhc3Qgb2YgdHlwZSAndGFyZ2V0IGltcGFjdCBiYXNlJywgYWxsb2NhdGVkIGJ5IHRpbWUgYW5kIG5vdCBieSB0aGUgYWxsb2NhdGlvbiBjYWxlbmRhci4KQUxMT0NUQVJHVElNUEFDVEZDU1QJQWxsb2NhdGVkIFRhcmdldCBJbXBhY3QgQmFzZSBGb3JlY2FzdAlTS1VQUk9KU1RBVElDLkFMTE9DVEFSR1RJTVBBQ1RGQ1NUCUZsb2F0IAlBbGxvY2F0ZWQgVGFyZ2V0IEltcGFjdCBpcyB0aGUgYWxsb2NhdGVkIHRhcmdldCBpbXBhY3QgYmFzZSBmb3JlY2FzdCAsIGJhc2VkIG9uIHRoZSBwcm9maWxlIGRlZmluZWQgYnkgdGhlIGFsbG9jYXRpb24gY2FsZW5kYXIuIElmIHRoZSBTS1VEZW1hbmRQYXJhbTpQcm9yYXRlQnlUeXBlU3cgaXMgc2V0IHRvIFllcywgdGhlIGFsbG9jYXRlZCB0YXJnZXQgaW1wYWN0IGZvcmVjYXN0IGlzIHByb3JhdGVkIGJ5IFNLVURlbWFuZFR5cGVQYXJhbTpEbWRUb0RhdGUuIFNlZSBBbGxvY1RvdEZjc3QgKG9uIHBhZ2UgNzEzKSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIHByb3JhdGVzIHRoZSBkZW1hbmQuCkFESkFMTE9DVEFSR1RJTVBBQ1RGQ1NUCUFkanVzdGVkIEFsbG9jYXRlZCBUYXJnZXQgSW1wYWN0IEJhc2UgRm9yZWNhc3QJU0tVUFJPSlNUQVRJQy5BREpBTExPQ1RBUkdUSU1QQUNURkNTVAlGbG9hdCAJQWRqdXN0ZWQgQWxsb2NhdGVkIFRhcmdldCBJbXBhY3QgQmFzZSBGb3JlY2FzdCBpcyB0aGUgYWxsb2NhdGVkIHRhcmdldCBpbXBhY3QgYmFzZSBmb3JlY2FzdCBhZnRlciBiZWluZyBhZGp1c3RlZCB3aXRoIHRoZSB0YXJnZXQgaW1wYWN0IGJhc2UgY3VzdG9tZXIgb3JkZXJzLiBTZWUgQWRqQWxsb2NUb3RGY3N0IChvbiBwYWdlIDcxMSkgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIGZvcmVjYXN0IGFkanVzdG1lbnQgcnVsZXMgb24gdGhlIGFkanVzdGVkIGFsbG9jYXRlZCB0YXJnZXQgaW1wYWN0IGJhc2UgZm9yZWNhc3QuClRBUkdUSU1QQUNUQ1VTVE9SREVSUwlUYXJnZXQgSW1wYWN0IEN1c3RvbWVyIE9yZGVycwlTS1VQUk9KU1RBVElDLlRBUkdUSU1QQUNUQ1VTVE9SREVSUwlGbG9hdCAJRm9yZWNhc3RlZCBjdXN0b21lciBvcmRlciB3aG9zZSBGY3N0VHlwZSBpcyAndGFyZ2V0IGltcGFjdCcuClVOQ09OTkVUT05IQU5ECVVuY29uc3RyYWluZWQgbmV0IE9uaGFuZAlTS1VQUk9KU1RBVElDLlVOQ09OTkVUT05IQU5ECUZsb2F0IAlUaGUgdW5jb25zdHJhaW5lZCBuZXQgb24gaGFuZCB2YWx1ZSwgbm90IGNvbnNpZGVyaW5nIHRoZSB0aW1lIHZhcnlpbmcgc2FmZXR5IHN0b2NrIGFuZCBzYWZldHkgc3RvY2sgZGVtYW5kcy4KVU5DT05QUk9KT05IQU5ECVVuY29uc3RyYWluZWQgcHJvamVjdGVkIE9uaGFuZCB2YWx1ZQlTS1VQUk9KU1RBVElDLlVOQ09OUFJPSk9OSEFORAlGbG9hdCAJVGhlIHVuY29uc3RyYWluZWQgcHJvamVjdGVkIG9uIGhhbmQgdmFsdWUsIG5vdCBjb25zaWRlcmluZyB0aGUgdGltZSB2YXJ5aW5nIHNhZmV0eSBzdG9jayBhbmQgc2FmZXR5IHN0b2NrIGRlbWFuZHMuClVOQ09OVFZTUwlVbmNvbnN0cmFpbmVkIHRpbWUgdmFyeWluZyBzYWZldHkgc3RvY2sJU0tVUFJPSlNUQVRJQy5VTkNPTlRWU1MJRmxvYXQgCVRoZSB1bmNvbnN0cmFpbmVkIHRpbWUgdmFyeWluZyBzYWZldHkgc3RvY2sgbGV2ZWwgYXZhaWxhYmxlLgpBTFRDT05TVFJDT1ZEVVIJQWx0ZXJuYXRlIENvbnN0cmFpbmVkIENvdmVyYWdlIER1cmF0aW9uCVNLVVBST0pTVEFUSUMuQUxUQ09OU1RSQ09WRFVSCU51bWJlciAJQWx0ZXJuYXRlIENvbnN0cmFpbmVkIENvdmVyYWdlIER1cmF0aW9uIGlzIHRoZSBkdXJhdGlvbiBvZiBjb25zdHJhaW5lZCBjb3ZlcmFnZSwgdGFraW5nIGludG8gYWNjb3VudCBib3RoIGNvbnN0cmFpbmVkIHN1cHBseSBhbmQgY29uc3RyYWluZWQgZGVtYW5kLiBBbHRDb25zdHJDb3ZEdXIgaXMgYmFzZWQgb24gY29uc3RyYWluZWQgdG90YWwgZGVtYW5kLCB0aGF0IGlzLCBhIGNhbGN1bGF0aW9uIG9mIHRvdGFsIGRlbWFuZCB0aGF0IGluY2x1ZGVzIHRvdGFsIHJlY29tbWVuZGVkIHNoaXBtZW50cyBpbnN0ZWFkIG9mIHRvdGFsIHBsYW5uZWQgc2hpcG1lbnRzLCBhbmQgb24gY29uc3RyYWluZWQgc3VwcGx5IChzaW1pbGFyIHRvIEFsdENvbnN0clBPSCksIGJ1dCB3aGljaCBhbHNvIHJlZmxlY3RzIGNvbnN0cmFpbmVkIHN1cHBsaWVzIGFuZCBkZW1hbmRzIHRoYXQgYXJlIGdlbmVyYXRlZCBmcm9tIFN1cGVyc2Vzc2lvbiBpbnZlbnRvcnkgdHJhbnNmZXJzLiBUaGUgY292ZXJhZ2UgZHVyYXRpb24gdmFsdWUgcmVmbGVjdHMgdGhlIGR1cmF0aW9uIHVudGlsIHRoZSBmaXJzdCBwb2ludCBpbiB0aW1lIGF0IHdoaWNoIHRoZSBpbnZlbnRvcnkgbGV2ZWwgZmFsbHMgYmVsb3cgemVybywgYmFzZWQgb24gdGhlIHByb2plY3RlZCBvbiBoYW5kIGFuZCBkZW1hbmRzLiBUaGUgY2FsY3VsYXRpb24gcmVzcGVjdHMgRGlzcGxheVF0eSB2YWx1ZXMgYXMgYSB0ZW1wb3JhcnkgZGVtYW5kOyB0aGF0IGlzLCBmb3IgdGhlIGVmZmVjdGl2ZSBkdXJhdGlvbiBvZiBlYWNoIFNTUHJlc2VudGF0aW9uOkRpc3BsYXlRdHkgcm93LCB0aGUgdmFsdWUgb2YgRGlzcGxheVF0eSBpcyBjb25zaWRlcmVkIG5vdCB0byBiZSBhIHBhcnQgb2YgdGhlIGFsdGVybmF0ZSBjb25zdHJhaW5lZCBwbGFubmVkIHByb2plY3RlZCBvbmhhbmQuICZsdDticiZndDtUaGUgbWF4aW11bSBjb3ZlcmFnZSBkdXJhdGlvbiBpcyAxMCB5ZWFycy4KVU5VU0VBQkxFU1VQUExZCVVudXNlYWJsZSBTdXBwbHkJU0tVUFJPSlNUQVRJQy5VTlVTRUFCTEVTVVBQTFkJRmxvYXQgCUZvciBhIHBlcmlzaGFibGUgU0tVLCBVbnVzZWFibGUgU3VwcGx5IHNob3dzIHRoZSBwb3J0aW9ucyBvZiBzdXBwbHkgdGhhdCB3aWxsIGJlY29tZSB1bnVzZWFibGUgYmVmb3JlIGl0IGlzIHNvbGQsIGJhc2VkIG9uIGFsbCB0b3RhbCBwcm9qZWN0ZWQgc3VwcGxpZXMgYW5kIHRvdGFsIHByb2plY3RlZCBkZW1hbmRzLiBUaGlzIHByb2plY3Rpb24gb2YgdW51c2VhYmxlIHN1cHBseSBpcyBzaG93biBvbiB0aGUgc3VwcGx5IGF2YWlsYWJsZSBkYXRlLgpDT05TVFJVTlVTRUFCTEVTVVBQTFkJQ29uc3RyYWluZWQgVW51c2VhYmxlIFN1cHBseQlTS1VQUk9KU1RBVElDLkNPTlNUUlVOVVNFQUJMRVNVUFBMWQlGbG9hdCAJRm9yIGEgcGVyaXNoYWJsZSBTS1UsIENvbnN0cmFpbmVkIFVudXNlYWJsZSBTdXBwbHkgc2hvd3MgdGhlIHBvcnRpb25zIG9mIHN1cHBseSB0aGF0IHdpbGwgYmVjb21lIHVudXNlYWJsZSBiZWZvcmUgaXQgaXMgc29sZCwgYmFzZWQgb24gYWxsIGNvbnN0cmFpbmVkIHByb2plY3RlZCBzdXBwbGllcyBhbmQgdG90YWwgcHJvamVjdGVkIGRlbWFuZHMuIFRoaXMgcHJvamVjdGlvbiBvZiB1bnVzZWFibGUgc3VwcGx5IGlzIHNob3duIG9uIHRoZSBzdXBwbHkgYXZhaWxhYmxlIGRhdGUuCkFMVENPTlNUUlVOVVNFQUJMRVNVUFBMWQlBbHRlcm5hdGUgQ29uc3RyYWluZWQgVW51c2VhYmxlIFN1cHBseSAJU0tVUFJPSlNUQVRJQy5BTFRDT05TVFJVTlVTRUFCTEVTVVBQTFkJRmxvYXQgCUZvciBhIHBlcmlzaGFibGUgU0tVLCBBbHRlcm5hdGUgQ29uc3RyYWluZWQgVW51c2VhYmxlIFN1cHBseSBzaG93cyB0aGUgcG9ydGlvbnMgb2Ygc3VwcGx5IHRoYXQgd2lsbCBiZWNvbWUgdW51c2VhYmxlIGJlZm9yZSBpdCBpcyBzb2xkLCBiYXNlZCBvbiBhbGwgY29uc3RyYWluZWQgcHJvamVjdGVkIHN1cHBsaWVzIGFuZCBjb25zdHJhaW5lZCBwcm9qZWN0ZWQgZGVtYW5kcy4gVGhpcyBwcm9qZWN0aW9uIG9mIHVudXNlYWJsZSBzdXBwbHkgaXMgc2hvd24gb24gdGhlIHN1cHBseSBhdmFpbGFibGUgZGF0ZS4KVVNFQUJMRVBST0pPSAlVc2VhYmxlIFByb2plY3RlZCBPbmhhbmQJU0tVUFJPSlNUQVRJQy5VU0VBQkxFUFJPSk9ICUZsb2F0IAlUaGUgVXNlYWJsZSBQcm9qZWN0ZWQgT25oYW5kIHNob3dzIHRoZSBwcm9qZWN0ZWQgaW52ZW50b3J5IGV4Y2x1ZGluZyBhbnkgc3VwcGx5IHRoYXQgaXMgcHJvamVjdGVkIHRvIG5vdCBiZSBzb2xkIGJlZm9yZSBpdHMgdW51c2VhYmxlIGRhdGUsIGFzIHNob3duIGluIFVudXNlYWJsZVN1cHBseS4gVGhpcyBwcm9qZWN0aW9uIGlzIHNpZ25pZmljYW50IGZvciBwZXJpc2hhYmxlIFNLVXMgb25seSwgYW5kIGRpZmZlcnMgZnJvbSBQcm9qT0ggYXMgZm9sbG93cy4gV2hlbiBQcm9qT0ggY2FsY3VsYXRlcyB0aGUgcHJvamVjdGVkIGludmVudG9yeSwgaXQgc3VidHJhY3RzIG91dCBhbnkgdW51c2VhYmxlIHN1cHBseSBvbiBpdHMgdW51c2VhYmxlIGRhdGUuIFVzZWFibGVQcm9qT0ggYWxzbyBleGNsdWRlcyB1bnVzZWFibGUgc3VwcGxpZXMsIGJ1dCBpdCBleGNsdWRlcyB0aG9zZSBzdXBwbGllcyBzdGFydGluZyBvbiB0aGVpciBhdmFpbGFibGUgZGF0ZSwgc28gdGhhdCB0aGUgdW51c2VhYmxlIHBvcnRpb25zIG9mIHN1cHBseSBhcmUgbmV2ZXIgcmVmbGVjdGVkIGluIHRoZSBwcm9qZWN0aW9uIGF0IGFsbC4gVGhpcyBwcm9qZWN0aW9uIGlzIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uIG9mIENvdkR1ciBmb3IgcGVyaXNoYWJsZSBpdGVtcy4KQ09OU1RSVVNFQUJMRVBST0pPSAlDb25zdHJhaW5lZCBVc2VhYmxlIFByb2plY3RlZCBPbmhhbmQJU0tVUFJPSlNUQVRJQy5DT05TVFJVU0VBQkxFUFJPSk9ICUZsb2F0IAlUaGUgQ29uc3RyYWluZWQgVXNlYWJsZSBQcm9qZWN0ZWQgT25oYW5kIHNob3dzIHRoZSBwcm9qZWN0ZWQgaW52ZW50b3J5IGV4Y2x1ZGluZyBhbnkgc3VwcGx5IHRoYXQgaXMgcHJvamVjdGVkIG5vdCB0byBiZSBzb2xkIGJlZm9yZSBpdHMgdW51c2VhYmxlIGRhdGUsIGFzIHNob3duIGluIENvbnN0clVudXNlYWJsZVN1cHBseS4gVGhpcyBwcm9qZWN0aW9uIGlzIHNpZ25pZmljYW50IGZvciBwZXJpc2hhYmxlIFNLVXMgb25seSBhbmQgZGlmZmVycyBmcm9tIENvbnN0clByb2pPSCBhcyBmb2xsb3dzLiBXaGVuIENvbnN0clByb2pPSCBjYWxjdWxhdGVzIHRoZSBwcm9qZWN0ZWQgaW52ZW50b3J5IGl0IHN1YnRyYWN0cyBvdXQgYW55IHVudXNlYWJsZSBzdXBwbHkgb24gaXRzIHVudXNlYWJsZSBkYXRlLiBVc2VhYmxlUHJvak9IIGFsc28gZXhjbHVkZXMgdW51c2VhYmxlIHN1cHBsaWVzLCBidXQgaXQgZXhjbHVkZXMgdGhvc2Ugc3VwcGxpZXMgc3RhcnRpbmcgb24gdGhlaXIgYXZhaWxhYmxlIGRhdGUsIHNvIHRoYXQgdGhlIHVudXNlYWJsZSBwb3J0aW9ucyBvZiBzdXBwbHkgYXJlIG5ldmVyIHJlZmxlY3RlZCBpbiB0aGUgcHJvamVjdGlvbiBhdCBhbGwuIFRoaXMgcHJvamVjdGlvbiBpcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBvZiBDb25zdHJDb3ZEdXIgZm9yIHBlcmlzaGFibGUgaXRlbXMuCkFMVENPTlNUUlVTRUFCTEVQUk9KT0gJIEFsdGVybmF0ZSBDb25zdHJhaW5lZCBVc2VhYmxlIFByb2plY3RlZCBPbmhhbmQJU0tVUFJPSlNUQVRJQy5BTFRDT05TVFJVU0VBQkxFUFJPSk9ICUZsb2F0IAlUaGUgQWx0ZXJuYXRlIENvbnN0cmFpbmVkIFVzZWFibGUgUHJvamVjdGVkIE9uaGFuZCBzaG93cyB0aGUgcHJvamVjdGVkIGludmVudG9yeSBleGNsdWRpbmcgYW55IHN1cHBseSB0aGF0IGlzIHByb2plY3RlZCB0byBub3QgYmUgc29sZCBiZWZvcmUgaXRzIFVudXNlYWJsZSBEYXRlLCBhcyBzaG93biBpbiBDb25zdHJVbnVzZWFibGVTdXBwbHkuICZsdDticiZndDtUaGlzIHByb2plY3Rpb24gaXMgc2lnbmlmaWNhbnQgZm9yIHBlcmlzaGFibGUgU0tVcyBvbmx5LCBhbmQgZGlmZmVycyBmcm9tIEFsdENvbnN0clByb2pPSCBhcyBmb2xsb3dzLiBXaGVuIEFsdENvbnN0clByb2pPSCBjYWxjdWxhdGVzIHByb2plY3RlZCBpbnZlbnRvcnksIGl0IHN1YnRyYWN0cyBvdXQgYW55IHVudXNlYWJsZSBzdXBwbHkgb24gaXRzIHVudXNlYWJsZSBkYXRlLiBBbHRDb25zdHJVc2VhYmxlUHJvak9IIGFsc28gZXhjbHVkZXMgdW51c2VhYmxlIHN1cHBsaWVzLCBidXQgaXQgZXhjbHVkZXMgdGhvc2Ugc3VwcGxpZXMgc3RhcnRpbmcgb24gdGhlaXIgYXZhaWxhYmxlIGRhdGUsIHNvIHRoYXQgdGhlIHVudXNlYWJsZSBwb3J0aW9ucyBvZiBzdXBwbHkgYXJlIG5ldmVyIHJlZmxlY3RlZCBpbiB0aGUgcHJvamVjdGlvbiBhdCBhbGwuIFRoaXMgcHJvamVjdGlvbiBpcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBvZiBBbHRDb25zdHJDb3ZEdXIgZm9yIHBlcmlzaGFibGUgaXRlbXMuCkFMTE9DVE9URkNTVE5PUFJPUkFUSU9OCUFsbG9jYXRlZCB0b3RhbCBGb3JlY2FzdCB3aXRob3V0IFByb3JhdGlvbicJU0tVUFJPSlNUQVRJQy5BTExPQ1RPVEZDU1ROT1BST1JBVElPTglGbG9hdCAJVGhpcyBpcyB0aGUgdG90YWwgZm9yZWNhc3QgZm9yIHRoaXMgcGVyaW9kIGJhc2VkIG9uIHRoZSBwcm9maWxlIGRlZmluZWQgYnkgdGhlIGFsbG9jYXRpb24gY2FsZW5kYXIgKFNLVURlbWFuZFBhcmFtOiBBbGxvY0NhbCkgd2l0aG91dCBwcm9yYXRpb24uIElmIFNLVURlbWFuZFBhcmFtOiBQcm9yYXRlU3cgaXMgc2V0IHRvIE4sIEFsbG9jVG90RmNzdE5vUHJvcmF0aW9uIGFuZCBBbGxvY1RvdEZjc3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4KQUdHUE9TUFJPSk9ICUFnZ3JlZ2F0ZWQgUG9zaXRpdmUgUHJvamVjdGVkIE9ICVNLVVBST0pTVEFUSUMuQUdHUE9TUFJPSk9ICUZsb2F0IAlBZ2dyZWdhdGVkIFBvc2l0aXZlIFByb2plY3RlZCBPSCBpcyB0aGUgc3VtIG9mIGFsbCBwb3NpdGl2ZSBQcm9qT0ggKG9uIHBhZ2UgNzI5KSBmb3IgdGhlIFNLVSBhZ2dyZWdhdGlvbiB5b3UgaGF2ZSBzZXQgaW4gdGhlIFBsYW4gQW5hbHlzaXMgcGFnZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gU0tVIGFnZ3JlZ2F0aW9uLCByZWZlciBVc2luZyBTS1UgYWdncmVnYXRpb24gc2VjdGlvbiBpbiB0aGUgV29ya2luZyB3aXRoIFBsYW4gQW5hbHlzaXMgY2hhcHRlciBvZiB0aGUgSkRBIEZ1bGZpbGxtZW50IE9uTGluZSBFeHBlcnQuCkFHR05FR1BST0pPSAlBZ2dyZWdhdGVkIE5lZ2F0aXZlIFByb2plY3RlZCBPSAlTS1VQUk9KU1RBVElDLkFHR05FR1BST0pPSAlGbG9hdCAJQWdncmVnYXRlZCBOZWdhdGl2ZSBQcm9qZWN0ZWQgT0ggaXMgdGhlIHN1bSBvZiBhbGwgbmVnYXRpdmUgUHJvak9IIChvbiBwYWdlIDcyOSkgZm9yIHRoZSBTS1UgYWdncmVnYXRpb24geW91IGhhdmUgc2V0IGluIHRoZSBQbGFuIEFuYWx5c2lzIHBhZ2UuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFNLVSBhZ2dyZWdhdGlvbiwgcmVmZXIgVXNpbmcgU0tVIGFnZ3JlZ2F0aW9uIHNlY3Rpb24gaW4gdGhlIFdvcmtpbmcgd2l0aCBQbGFuIEFuYWx5c2lzIGNoYXB0ZXIgb2YgdGhlIEpEQSBGdWxmaWxsbWVudCBPbkxpbmUgRXhwZXJ0LgpBR0dQT1NDT05TVFJQUk9KT0gJQWdncmVnYXRlZCBQb3NpdGl2ZSBDb25zdHJhaW5lZCBQcm9qZWN0ZWQgT0gJU0tVUFJPSlNUQVRJQy5BR0dQT1NDT05TVFJQUk9KT0gJRmxvYXQgCUFnZ3JlZ2F0ZWQgUG9zaXRpdmUgQ29uc3RyYWluZWQgUHJvamVjdGVkIE9IIGlzIHRoZSBzdW0gb2YgYWxsIHBvc2l0aXZlIENvbnN0clByb2pPSCAob24gcGFnZSA3MTkpIGZvciB0aGUgU0tVIGFnZ3JlZ2F0aW9uIHlvdSBoYXZlIHNldCBpbiB0aGUgUGxhbiBBbmFseXNpcyBwYWdlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBTS1UgYWdncmVnYXRpb24sIHJlZmVyIFVzaW5nIFNLVSBhZ2dyZWdhdGlvbiBzZWN0aW9uIGluIHRoZSBXb3JraW5nIHdpdGggUGxhbiBBbmFseXNpcyBjaGFwdGVyIG9mIHRoZSBKREEgRnVsZmlsbG1lbnQgT25MaW5lIEV4cGVydC4KQUdHTkVHQ09OU1RSUFJPSk9ICUFnZ3JlZ2F0ZWQgTmVnYXRpdmUgQ29uc3RyYWluZWQgUHJvamVjdGVkIE9ICVNLVVBST0pTVEFUSUMuQUdHTkVHQ09OU1RSUFJPSk9ICUZsb2F0IAlBZ2dyZWdhdGVkIE5lZ2F0aXZlIENvbnN0cmFpbmVkIFByb2plY3RlZCBPSCBpcyB0aGUgc3VtIG9mIGFsbCBuZWdhdGl2ZSBDb25zdHJQcm9qT0ggKG9uIHBhZ2UgNzE5KSBmb3IgdGhlIFNLVSBhZ2dyZWdhdGlvbiB5b3UgaGF2ZSBzZXQgaW4gdGhlIFBsYW4gQW5hbHlzaXMgcGFnZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gU0tVIGFnZ3JlZ2F0aW9uLCByZWZlciBVc2luZyBTS1UgYWdncmVnYXRpb24gc2VjdGlvbiBpbiB0aGUgV29ya2luZyB3aXRoIFBsYW4gQW5hbHlzaXMgY2hhcHRlciBvZiB0aGUgSkRBIEZ1bGZpbGxtZW50IE9uTGluZSBFeHBlcnQuCklQT1JFT1JERVJRVFkJSVBPIFJlb3JkZXIgcXVhbnRpdHkJU0tVUFJPSlNUQVRJQy5JUE9SRU9SREVSUVRZCUZsb2F0IAlUaGUgbnVtYmVyIG9mIHVuaXRzIG9mIGEgU0tVIHRoYXQgc2hvdWxkIGJlIG9yZGVyZWQgd2hlbiB0aGUgU0tVJ3MgU3RvY2tMZXZlbCByZWFjaGVzIHRoZSBSZW9yZGVyUG9pbnQuIFRoaXMgdmFsdWUgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgdmFsdWUgc2VsZWN0ZWQgaW4gU0tVSVBPUGFyYW06IFJlb3JkZXJPcHQuIElmIFJlb3JkZXJPcHQgaXMgMSwgdGhlIG9yZGVyIHF1YW50aXR5IGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSBpbiBTS1VJUE9QYXJhbTogRU9RIChvbiBwYWdlIDY4NikuIElmIFJlb3JkZXJPcHQgaXMgMiwgdGhlIG9yZGVyIHF1YW50aXR5IGlzIGNhbGN1bGF0ZWQgYXM6ICZsdDticiZndDtTS1VJUE9QYXJhbTogRndkQ292RHVyIHggbWVhbiBkYWlseSBkZW1hbmQKSVBPUkVPUkRFUlBPSU5UCUlQTyBSZW9yZGVyIFBvaW50CVNLVVBST0pTVEFUSUMuSVBPUkVPUkRFUlBPSU5UCUZsb2F0IAlUaGUgc3RvY2sgcG9pbnQgYXQgd2hpY2ggcmVwbGVuaXNobWVudCAocHVyY2hhc2Ugb3IgcmVwYWlyKSBvcmRlcnMgc2hvdWxkIGJlIGdlbmVyYXRlZC4gV2hlbiB0aGUgaW52ZW50b3J5IHBvc2l0aW9uIChvbi1oYW5kICsgb24tb3JkZXIgJm5kYXNoOyBiYWNrb3JkZXJzKSByZWFjaGVzIHRoZSBSZW9yZGVyIFBvaW50LCB5b3Ugc2hvdWxkIHBsYWNlIGEgcmVwbGVuaXNobWVudCBvcmRlci4gUmVvcmRlciBQb2ludCBpcyBhbiBpbnZlbnRvcnkgcG9saWN5IHJlY29tbWVuZGVkIGJ5IElQTyBhbmQgaXMgZXF1YWwgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBTdG9ja0xldmVsIGFuZCBSZW9yZGVyUXR5LgpJUE9BVkdTVE9DSwlJUE8gQXZlcmFnZSBTdG9jawlTS1VQUk9KU1RBVElDLklQT0FWR1NUT0NLCUZsb2F0IAlUaGUgYXZlcmFnZSBzdG9jayBsZXZlbCBtYWludGFpbmVkIGluIHRoZSBzeXN0ZW0gdG8gbWVldCB0aGUgZGVzaXJlZCB0YXJnZXQuCklQT0VYUEJBQ0tPUkRFUglJUE8gRXhwZWN0ZWQgQmFjayBvcmRlcnMJU0tVUFJPSlNUQVRJQy5JUE9FWFBCQUNLT1JERVIJRmxvYXQgCVRoZSBhdmVyYWdlIG51bWJlciBvZiBiYWNrIG9yZGVycyB0aGF0IGNhbiBiZSBleHBlY3RlZCBpbiB0aGUgb3BlcmF0aW9uYWwgc3lzdGVtLCBwcm92aWRlZCB0aGUgc3BlY2lmaWVkIGludmVudG9yeSBwb2xpY3kgaXMgbWFpbnRhaW5lZC4gSXQgaXMgYSBtZWFzdXJlIG9mIHRoZSBkZW1hbmQgd2FpdGluZyB0byBiZSBzYXRpc2ZpZWQgZm9yIFNLVXMgYmVjYXVzZSBvZiB0aGUgdW5hdmFpbGFiaWxpdHkgb2Ygc3RvY2sgb24gaGFuZC4KSVBPU0FGRVRZU1RPQ0sJSVBPIFNhZmV0eSBTdG9jawlTS1VQUk9KU1RBVElDLklQT1NBRkVUWVNUT0NLCUZsb2F0IAlUaGUgSVBPLXJlY29tbWVuZGVkIHF1YW50aXR5IG9mIHN0b2NrIHRvIGJlIG1haW50YWluZWQgaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGUgZGVzaXJlZCBsb25nLXJ1biBhdmVyYWdlIHBlcmZvcm1hbmNlIG1lYXN1cmVzICh1bml0IGZpbGwgcmF0ZSwgY3VzdG9tZXIgd2FpdCB0aW1lLCBhbmQgb3BlcmF0aW9uYWwgc3lzdGVtIGF2YWlsYWJpbGl0eSkuIENhbGN1bGF0ZWQgYXM6ICZsdDticiZndDtSZW9yZGVyTGV2ZWwgJm5kYXNoOyBleHBlY3RlZCBkZW1hbmQgZHVyaW5nIHRoZSBleHBlY3RlZCBsZWFkIHRpbWUKSVBPRE1ECUlQTyBEZW1hbmQJU0tVUFJPSlNUQVRJQy5JUE9ETUQJRmxvYXQgCVRoZSBhdmVyYWdlIGRhaWx5IGRlbWFuZCBleHBlY3RlZCBmb3IgdGhpcyBTS1UuCklQT1BST0pPSAlJUE8gUHJvamVjdGVkIE9uSGFuZAlTS1VQUk9KU1RBVElDLklQT1BST0pPSAlGbG9hdCAJVGhlIHByb2plY3RlZCBvbi1oYW5kIGludmVudG9yeSBhdCB0aGUgZGVzdGluYXRpb24gU0tVIGFzIG9mIHRoZSBTS1VQcm9qRGF0ZS4gQ2FsY3VsYXRlZCBiYXNlZCBvbiBvbi1oYW5kIGludmVudG9yeSwgTWVhbiBEYWlseSBEZW1hbmQsIFJlb3JkZXIgUG9pbnQgYW5kIFJlb3JkZXIgUXVhbnRpdHkuICZsdDticiZndDtXaGVuIHRoZSBvbi1oYW5kIGludmVudG9yeSByZWFjaGVzIHRoZSBSZW9yZGVyIFBvaW50LCB0aGUgUmVvcmRlciBRdWFudGl0eSBpcyBhZGRlZCB0byBhcnJpdmUgYXQgbmV3IG9uLWhhbmQgaW52ZW50b3J5IGxldmVscy4gV2hlbiB0aGUgb24taGFuZCBpbnZlbnRvcnkgPSAwLCB0aGVuIFIgKyBRIChtYXhpbXVtIHN0b2NrIGxldmVscykuCg==
TOTALLOCKFCST Total Lock Forecast SKUPROJSTATIC.TOTALLOCKFCST Float Forecast of type 'total forecast lock', allocated by time and not by the allocation calendar.
ALLOCTOTALLOCKFCST Allocated Total Lock Forecast SKUPROJSTATIC.ALLOCTOTALLOCKFCST Float Allocated Total Lock Forecast is the total lock forecast for this period, based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated total lock forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCTOTALLOCKFCST Adjusted Allocated Total Lock Forecast SKUPROJSTATIC.ADJALLOCTOTALLOCKFCST Float Adjusted Allocated Total Lock Forecast is the allocated total lock forecast after being adjusted with the total lock customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated total lock forecast.
TOTALLOCKCUSTORDERS Total Lock Customer Orders SKUPROJSTATIC.TOTALLOCKCUSTORDERS Float Forecasted customer orders whose FcstType is'total forcast lock'.
RECONCILEFCST Reconcile Forecast SKUPROJSTATIC.RECONCILEFCST Float Forecast of type 'reconcile', allocated by time and not by the allocation calendar.
ALLOCRECONCILEFCST Allocated Reconcile Forecast SKUPROJSTATIC.ALLOCRECONCILEFCST Float Allocated Reconcile Forecast is the reconcile forecast for this period, based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated reconcile forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCRECONCILEFCST Adjusted Allocated Reconcile Forecast SKUPROJSTATIC.ADJALLOCRECONCILEFCST Float Adjusted Allocated Reconcile Forecast is the allocated reconcile forecast after being adjusted with the reconcile customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated reconcile forecast.
RECONCILECUSTORDERS Reconcile Customer Orders SKUPROJSTATIC.RECONCILECUSTORDERS Float Forecasted customer order whose FcstType is 'reconcile'.
AUTOFCST Auto Forecast SKUPROJSTATIC.AUTOFCST Float Forecast of type 'auto', allocated by time and not by the allocation calendar.
ALLOCAUTOFCST Allocated Auto Forecast SKUPROJSTATIC.ALLOCAUTOFCST Float Allocated Auto Forecast is the auto forecast for this period, based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated auto forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCAUTOFCST Adjusted Allocated Auto Forecast SKUPROJSTATIC.ADJALLOCAUTOFCST Float Adjusted Allocated Auto Forecast is the allocated auto forecast after being adjusted with the auto customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated auto forecast.
AUTOCUSTORDERS Auto Customer Orders SKUPROJSTATIC.AUTOCUSTORDERS Float Forecasted customer order whose FcstType is 'auto'.
OVRIDEFCST Override Forecast SKUPROJSTATIC.OVRIDEFCST Float Forecast of type 'override', allocated by time and not by the allocation calendar.
ALLOCOVRIDEFCST Allocated Override Forecast SKUPROJSTATIC.ALLOCOVRIDEFCST Float Allocated Override Forecast is the override forecast for this period, based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated override forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCOVRIDEFCST Adjusted Allocated Override Forecast SKUPROJSTATIC.ADJALLOCOVRIDEFCST Float Adjusted Allocated Override Forecast is the allocated override forecast after being adjusted with the override customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated override forecast.
OVRIDECUSTORDERS Override Customer Orders SKUPROJSTATIC.OVRIDECUSTORDERS Float Forecasted customer order whose FcstType is 'override'.
MKTACTVTYFCST Market Activity Forecast SKUPROJSTATIC.MKTACTVTYFCST Float Forecast of type 'market activity', allocated by time and not by the allocation calendar.
ALLOCMKTACTVTYFCST Allocated Market Activity Forecast SKUPROJSTATIC.ALLOCMKTACTVTYFCST Float Allocated Market Activity Forecast is the market activity forecast for this period, based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated market activity forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCMKTACTVTYFCST Adjusted Allocated Market Activity Forecast SKUPROJSTATIC.ADJALLOCMKTACTVTYFCST Float Adjusted Allocated Market Activity Forecast is the allocated market activity forecast after being adjusted with the market activity customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated market activity forecast.
MKTACTVTYCUSTORDERS Market Activity Customer Orders SKUPROJSTATIC.MKTACTVTYCUSTORDERS Float Forecasted customer order whose FcstType is 'market activity'.
DATADRVNFCST Data Driven Forecast SKUPROJSTATIC.DATADRVNFCST Float Forecast of type 'data driven', allocated by time and not by the allocation calendar.
ALLOCDATADRVNFCST Allocated Data Driven Forecast SKUPROJSTATIC.ALLOCDATADRVNFCST Float Allocated Data Driven Forecast is the data driven forecast for this period, based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated data driven forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCDATADRVNFCST Adjusted Allocated Data Driven Forecast SKUPROJSTATIC.ADJALLOCDATADRVNFCST Float Adjusted Allocated Data Driven Forecast is the allocated data driven forecast after being adjusted with the base customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated data driven forecast.
DATADRVNCUSTORDERS Data Driven Customer Orders SKUPROJSTATIC.DATADRVNCUSTORDERS Float Forecasted customer order whose FcstType is 'data driven'.
TARGTIMPACTBASEFCST Target Impact Base Forecast SKUPROJSTATIC.TARGTIMPACTBASEFCST Float Forecast of type 'target impact base', allocated by time and not by the allocation calendar.
ALLOCTARGTIMPACTFCST Allocated Target Impact Base Forecast SKUPROJSTATIC.ALLOCTARGTIMPACTFCST Float Allocated Target Impact is the allocated target impact base forecast , based on the profile defined by the allocation calendar. If the SKUDemandParam:ProrateByTypeSw is set to Yes, the allocated target impact forecast is prorated by SKUDemandTypeParam:DmdToDate. See AllocTotFcst (on page 713) to understand how the system prorates the demand.
ADJALLOCTARGTIMPACTFCST Adjusted Allocated Target Impact Base Forecast SKUPROJSTATIC.ADJALLOCTARGTIMPACTFCST Float Adjusted Allocated Target Impact Base Forecast is the allocated target impact base forecast after being adjusted with the target impact base customer orders. See AdjAllocTotFcst (on page 711) to understand the impact of forecast adjustment rules on the adjusted allocated target impact base forecast.
TARGTIMPACTCUSTORDERS Target Impact Customer Orders SKUPROJSTATIC.TARGTIMPACTCUSTORDERS Float Forecasted customer order whose FcstType is 'target impact'.
UNCONNETONHAND Unconstrained net Onhand SKUPROJSTATIC.UNCONNETONHAND Float The unconstrained net on hand value, not considering the time varying safety stock and safety stock demands.
UNCONPROJONHAND Unconstrained projected Onhand value SKUPROJSTATIC.UNCONPROJONHAND Float The unconstrained projected on hand value, not considering the time varying safety stock and safety stock demands.
UNCONTVSS Unconstrained time varying safety stock SKUPROJSTATIC.UNCONTVSS Float The unconstrained time varying safety stock level available.
ALTCONSTRCOVDUR Alternate Constrained Coverage Duration SKUPROJSTATIC.ALTCONSTRCOVDUR Number Alternate Constrained Coverage Duration is the duration of constrained coverage, taking into account both constrained supply and constrained demand. AltConstrCovDur is based on constrained total demand, that is, a calculation of total demand that includes total recommended shipments instead of total planned shipments, and on constrained supply (similar to AltConstrPOH), but which also reflects constrained supplies and demands that are generated from Supersession inventory transfers. The coverage duration value reflects the duration until the first point in time at which the inventory level falls below zero, based on the projected on hand and demands. The calculation respects DisplayQty values as a temporary demand; that is, for the effective duration of each SSPresentation:DisplayQty row, the value of DisplayQty is considered not to be a part of the alternate constrained planned projected onhand. <br>The maximum coverage duration is 10 years.
UNUSEABLESUPPLY Unuseable Supply SKUPROJSTATIC.UNUSEABLESUPPLY Float For a perishable SKU, Unuseable Supply shows the portions of supply that will become unuseable before it is sold, based on all total projected supplies and total projected demands. This projection of unuseable supply is shown on the supply available date.
CONSTRUNUSEABLESUPPLY Constrained Unuseable Supply SKUPROJSTATIC.CONSTRUNUSEABLESUPPLY Float For a perishable SKU, Constrained Unuseable Supply shows the portions of supply that will become unuseable before it is sold, based on all constrained projected supplies and total projected demands. This projection of unuseable supply is shown on the supply available date.
ALTCONSTRUNUSEABLESUPPLY Alternate Constrained Unuseable Supply SKUPROJSTATIC.ALTCONSTRUNUSEABLESUPPLY Float For a perishable SKU, Alternate Constrained Unuseable Supply shows the portions of supply that will become unuseable before it is sold, based on all constrained projected supplies and constrained projected demands. This projection of unuseable supply is shown on the supply available date.
USEABLEPROJOH Useable Projected Onhand SKUPROJSTATIC.USEABLEPROJOH Float The Useable Projected Onhand shows the projected inventory excluding any supply that is projected to not be sold before its unuseable date, as shown in UnuseableSupply. This projection is significant for perishable SKUs only, and differs from ProjOH as follows. When ProjOH calculates the projected inventory, it subtracts out any unuseable supply on its unuseable date. UseableProjOH also excludes unuseable supplies, but it excludes those supplies starting on their available date, so that the unuseable portions of supply are never reflected in the projection at all. This projection is used in the calculation of CovDur for perishable items.
CONSTRUSEABLEPROJOH Constrained Useable Projected Onhand SKUPROJSTATIC.CONSTRUSEABLEPROJOH Float The Constrained Useable Projected Onhand shows the projected inventory excluding any supply that is projected not to be sold before its unuseable date, as shown in ConstrUnuseableSupply. This projection is significant for perishable SKUs only and differs from ConstrProjOH as follows. When ConstrProjOH calculates the projected inventory it subtracts out any unuseable supply on its unuseable date. UseableProjOH also excludes unuseable supplies, but it excludes those supplies starting on their available date, so that the unuseable portions of supply are never reflected in the projection at all. This projection is used in the calculation of ConstrCovDur for perishable items.
ALTCONSTRUSEABLEPROJOH Alternate Constrained Useable Projected Onhand SKUPROJSTATIC.ALTCONSTRUSEABLEPROJOH Float The Alternate Constrained Useable Projected Onhand shows the projected inventory excluding any supply that is projected to not be sold before its Unuseable Date, as shown in ConstrUnuseableSupply. <br>This projection is significant for perishable SKUs only, and differs from AltConstrProjOH as follows. When AltConstrProjOH calculates projected inventory, it subtracts out any unuseable supply on its unuseable date. AltConstrUseableProjOH also excludes unuseable supplies, but it excludes those supplies starting on their available date, so that the unuseable portions of supply are never reflected in the projection at all. This projection is used in the calculation of AltConstrCovDur for perishable items.
ALLOCTOTFCSTNOPRORATION Allocated total Forecast without Proration' SKUPROJSTATIC.ALLOCTOTFCSTNOPRORATION Float This is the total forecast for this period based on the profile defined by the allocation calendar (SKUDemandParam: AllocCal) without proration. If SKUDemandParam: ProrateSw is set to N, AllocTotFcstNoProration and AllocTotFcst have the same value.
AGGPOSPROJOH Aggregated Positive Projected OH SKUPROJSTATIC.AGGPOSPROJOH Float Aggregated Positive Projected OH is the sum of all positive ProjOH (on page 729) for the SKU aggregation you have set in the Plan Analysis page. For more information on SKU aggregation, refer Using SKU aggregation section in the Working with Plan Analysis chapter of the JDA Fulfillment OnLine Expert.
AGGNEGPROJOH Aggregated Negative Projected OH SKUPROJSTATIC.AGGNEGPROJOH Float Aggregated Negative Projected OH is the sum of all negative ProjOH (on page 729) for the SKU aggregation you have set in the Plan Analysis page. For more information on SKU aggregation, refer Using SKU aggregation section in the Working with Plan Analysis chapter of the JDA Fulfillment OnLine Expert.
AGGPOSCONSTRPROJOH Aggregated Positive Constrained Projected OH SKUPROJSTATIC.AGGPOSCONSTRPROJOH Float Aggregated Positive Constrained Projected OH is the sum of all positive ConstrProjOH (on page 719) for the SKU aggregation you have set in the Plan Analysis page. For more information on SKU aggregation, refer Using SKU aggregation section in the Working with Plan Analysis chapter of the JDA Fulfillment OnLine Expert.
AGGNEGCONSTRPROJOH Aggregated Negative Constrained Projected OH SKUPROJSTATIC.AGGNEGCONSTRPROJOH Float Aggregated Negative Constrained Projected OH is the sum of all negative ConstrProjOH (on page 719) for the SKU aggregation you have set in the Plan Analysis page. For more information on SKU aggregation, refer Using SKU aggregation section in the Working with Plan Analysis chapter of the JDA Fulfillment OnLine Expert.
IPOREORDERQTY IPO Reorder quantity SKUPROJSTATIC.IPOREORDERQTY Float The number of units of a SKU that should be ordered when the SKU's StockLevel reaches the ReorderPoint. This value is calculated based on the value selected in SKUIPOParam: ReorderOpt. If ReorderOpt is 1, the order quantity is equal to the value in SKUIPOParam: EOQ (on page 686). If ReorderOpt is 2, the order quantity is calculated as: <br>SKUIPOParam: FwdCovDur x mean daily demand
IPOREORDERPOINT IPO Reorder Point SKUPROJSTATIC.IPOREORDERPOINT Float The stock point at which replenishment (purchase or repair) orders should be generated. When the inventory position (on-hand + on-order – backorders) reaches the Reorder Point, you should place a replenishment order. Reorder Point is an inventory policy recommended by IPO and is equal to the difference between StockLevel and ReorderQty.
IPOAVGSTOCK IPO Average Stock SKUPROJSTATIC.IPOAVGSTOCK Float The average stock level maintained in the system to meet the desired target.
IPOEXPBACKORDER IPO Expected Back orders SKUPROJSTATIC.IPOEXPBACKORDER Float The average number of back orders that can be expected in the operational system, provided the specified inventory policy is maintained. It is a measure of the demand waiting to be satisfied for SKUs because of the unavailability of stock on hand.
IPOSAFETYSTOCK IPO Safety Stock SKUPROJSTATIC.IPOSAFETYSTOCK Float The IPO-recommended quantity of stock to be maintained in order to achieve the desired long-run average performance measures (unit fill rate, customer wait time, and operational system availability). Calculated as: <br>ReorderLevel – expected demand during the expected lead time
IPODMD IPO Demand SKUPROJSTATIC.IPODMD Float The average daily demand expected for this SKU.
IPOPROJOH IPO Projected OnHand SKUPROJSTATIC.IPOPROJOH Float The projected on-hand inventory at the destination SKU as of the SKUProjDate. Calculated based on on-hand inventory, Mean Daily Demand, Reorder Point and Reorder Quantity. <br>When the on-hand inventory reaches the Reorder Point, the Reorder Quantity is added to arrive at new on-hand inventory levels. When the on-hand inventory = 0, then R + Q (maximum stock levels).