diff --git a/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs b/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs
index e297fac..4b033b5 100644
--- a/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs
+++ b/src/ZB.MOM.WW.MxGateway.Contracts/Generated/MxaccessGateway.cs
@@ -287,7 +287,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
"Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhFdmVudCI1ChxBY2tub3dsZWRnZUFs",
"YXJtUmVwbHlQYXlsb2FkEhUKDW5hdGl2ZV9zdGF0dXMYASABKAUiXAodUXVl",
"cnlBY3RpdmVBbGFybXNSZXBseVBheWxvYWQSOwoJc25hcHNob3RzGAEgAygL",
- "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90IscH",
+ "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90Io8I",
"CgdNeEV2ZW50EjIKBmZhbWlseRgBIAEoDjIiLm14YWNjZXNzX2dhdGV3YXku",
"djEuTXhFdmVudEZhbWlseRISCgpzZXNzaW9uX2lkGAIgASgJEhUKDXNlcnZl",
"cl9oYW5kbGUYAyABKAUSEwoLaXRlbV9oYW5kbGUYBCABKAUSKwoFdmFsdWUY",
@@ -298,225 +298,228 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
"CSABKAQSNAoQd29ya2VyX3RpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90",
"b2J1Zi5UaW1lc3RhbXASPQoZZ2F0ZXdheV9yZWNlaXZlX3RpbWVzdGFtcBgL",
"IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHaHJlc3VsdBgM",
- "IAEoBUgBiAEBEhIKCnJhd19zdGF0dXMYDSABKAkSQAoOb25fZGF0YV9jaGFu",
- "Z2UYFCABKAsyJi5teGFjY2Vzc19nYXRld2F5LnYxLk9uRGF0YUNoYW5nZUV2",
- "ZW50SAASRgoRb25fd3JpdGVfY29tcGxldGUYFSABKAsyKS5teGFjY2Vzc19n",
- "YXRld2F5LnYxLk9uV3JpdGVDb21wbGV0ZUV2ZW50SAASSQoSb3BlcmF0aW9u",
- "X2NvbXBsZXRlGBYgASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5PcGVyYXRp",
- "b25Db21wbGV0ZUV2ZW50SAASUQoXb25fYnVmZmVyZWRfZGF0YV9jaGFuZ2UY",
- "FyABKAsyLi5teGFjY2Vzc19nYXRld2F5LnYxLk9uQnVmZmVyZWREYXRhQ2hh",
- "bmdlRXZlbnRIABJKChNvbl9hbGFybV90cmFuc2l0aW9uGBggASgLMisubXhh",
- "Y2Nlc3NfZ2F0ZXdheS52MS5PbkFsYXJtVHJhbnNpdGlvbkV2ZW50SAASXgoe",
- "b25fYWxhcm1fcHJvdmlkZXJfbW9kZV9jaGFuZ2VkGBkgASgLMjQubXhhY2Nl",
- "c3NfZ2F0ZXdheS52MS5PbkFsYXJtUHJvdmlkZXJNb2RlQ2hhbmdlZEV2ZW50",
- "SABCBgoEYm9keUIKCghfaHJlc3VsdCITChFPbkRhdGFDaGFuZ2VFdmVudCIW",
- "ChRPbldyaXRlQ29tcGxldGVFdmVudCIYChZPcGVyYXRpb25Db21wbGV0ZUV2",
- "ZW50ItQBChlPbkJ1ZmZlcmVkRGF0YUNoYW5nZUV2ZW50EjIKCWRhdGFfdHlw",
- "ZRgBIAEoDjIfLm14YWNjZXNzX2dhdGV3YXkudjEuTXhEYXRhVHlwZRI0Cg5x",
- "dWFsaXR5X3ZhbHVlcxgCIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhB",
- "cnJheRI2ChB0aW1lc3RhbXBfdmFsdWVzGAMgASgLMhwubXhhY2Nlc3NfZ2F0",
- "ZXdheS52MS5NeEFycmF5EhUKDXJhd19kYXRhX3R5cGUYBCABKAUi0AQKFk9u",
- "QWxhcm1UcmFuc2l0aW9uRXZlbnQSHAoUYWxhcm1fZnVsbF9yZWZlcmVuY2UY",
- "ASABKAkSHwoXc291cmNlX29iamVjdF9yZWZlcmVuY2UYAiABKAkSFwoPYWxh",
- "cm1fdHlwZV9uYW1lGAMgASgJEkEKD3RyYW5zaXRpb25fa2luZBgEIAEoDjIo",
- "Lm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1UcmFuc2l0aW9uS2luZBIQCghz",
- "ZXZlcml0eRgFIAEoBRI8ChhvcmlnaW5hbF9yYWlzZV90aW1lc3RhbXAYBiAB",
- "KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKFHRyYW5zaXRpb25f",
- "dGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIV",
- "Cg1vcGVyYXRvcl91c2VyGAggASgJEhgKEG9wZXJhdG9yX2NvbW1lbnQYCSAB",
- "KAkSEAoIY2F0ZWdvcnkYCiABKAkSEwoLZGVzY3JpcHRpb24YCyABKAkSMwoN",
- "Y3VycmVudF92YWx1ZRgMIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhW",
- "YWx1ZRIxCgtsaW1pdF92YWx1ZRgNIAEoCzIcLm14YWNjZXNzX2dhdGV3YXku",
- "djEuTXhWYWx1ZRIQCghkZWdyYWRlZBgOIAEoCBI/Cg9zb3VyY2VfcHJvdmlk",
- "ZXIYDyABKA4yJi5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJtUHJvdmlkZXJN",
- "b2RlIqABCh9PbkFsYXJtUHJvdmlkZXJNb2RlQ2hhbmdlZEV2ZW50EjQKBG1v",
- "ZGUYASABKA4yJi5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJtUHJvdmlkZXJN",
- "b2RlEg4KBnJlYXNvbhgCIAEoCRIPCgdocmVzdWx0GAMgASgFEiYKAmF0GAQg",
- "ASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLQBAoTQWN0aXZlQWxh",
- "cm1TbmFwc2hvdBIcChRhbGFybV9mdWxsX3JlZmVyZW5jZRgBIAEoCRIfChdz",
- "b3VyY2Vfb2JqZWN0X3JlZmVyZW5jZRgCIAEoCRIXCg9hbGFybV90eXBlX25h",
- "bWUYAyABKAkSEAoIc2V2ZXJpdHkYBCABKAUSPAoYb3JpZ2luYWxfcmFpc2Vf",
- "dGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI/",
- "Cg1jdXJyZW50X3N0YXRlGAYgASgOMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5B",
- "bGFybUNvbmRpdGlvblN0YXRlEhAKCGNhdGVnb3J5GAcgASgJEhMKC2Rlc2Ny",
- "aXB0aW9uGAggASgJEj0KGWxhc3RfdHJhbnNpdGlvbl90aW1lc3RhbXAYCSAB",
- "KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDW9wZXJhdG9yX3Vz",
- "ZXIYCiABKAkSGAoQb3BlcmF0b3JfY29tbWVudBgLIAEoCRIzCg1jdXJyZW50",
- "X3ZhbHVlGAwgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEjEK",
- "C2xpbWl0X3ZhbHVlGA0gASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZh",
- "bHVlEhAKCGRlZ3JhZGVkGA4gASgIEj8KD3NvdXJjZV9wcm92aWRlchgPIAEo",
- "DjImLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1Qcm92aWRlck1vZGUikAEK",
- "F0Fja25vd2xlZGdlQWxhcm1SZXF1ZXN0Eh0KFWNsaWVudF9jb3JyZWxhdGlv",
- "bl9pZBgCIAEoCRIcChRhbGFybV9mdWxsX3JlZmVyZW5jZRgDIAEoCRIPCgdj",
- "b21tZW50GAQgASgJEhUKDW9wZXJhdG9yX3VzZXIYBSABKAlKBAgBEAJSCnNl",
- "c3Npb25faWQi8QEKFUFja25vd2xlZGdlQWxhcm1SZXBseRIWCg5jb3JyZWxh",
- "dGlvbl9pZBgCIAEoCRI8Cg9wcm90b2NvbF9zdGF0dXMYAyABKAsyIy5teGFj",
- "Y2Vzc19nYXRld2F5LnYxLlByb3RvY29sU3RhdHVzEhQKB2hyZXN1bHQYBCAB",
- "KAVIAIgBARIyCgZzdGF0dXMYBSABKAsyIi5teGFjY2Vzc19nYXRld2F5LnYx",
- "Lk14U3RhdHVzUHJveHkSGgoSZGlhZ25vc3RpY19tZXNzYWdlGAYgASgJQgoK",
- "CF9ocmVzdWx0SgQIARACUgpzZXNzaW9uX2lkIlEKE1N0cmVhbUFsYXJtc1Jl",
- "cXVlc3QSHQoVY2xpZW50X2NvcnJlbGF0aW9uX2lkGAEgASgJEhsKE2FsYXJt",
- "X2ZpbHRlcl9wcmVmaXgYAiABKAkihAIKEEFsYXJtRmVlZE1lc3NhZ2USQAoM",
- "YWN0aXZlX2FsYXJtGAEgASgLMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3Rp",
- "dmVBbGFybVNuYXBzaG90SAASGwoRc25hcHNob3RfY29tcGxldGUYAiABKAhI",
- "ABJBCgp0cmFuc2l0aW9uGAMgASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5P",
- "bkFsYXJtVHJhbnNpdGlvbkV2ZW50SAASQwoPcHJvdmlkZXJfc3RhdHVzGAQg",
- "ASgLMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVByb3ZpZGVyU3RhdHVz",
- "SABCCQoHcGF5bG9hZCKYAQoTQWxhcm1Qcm92aWRlclN0YXR1cxI0CgRtb2Rl",
- "GAEgASgOMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVByb3ZpZGVyTW9k",
- "ZRIQCghkZWdyYWRlZBgCIAEoCBIOCgZyZWFzb24YAyABKAkSKQoFc2luY2UY",
- "BCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIusBCg1NeFN0YXR1",
- "c1Byb3h5Eg8KB3N1Y2Nlc3MYASABKAUSNwoIY2F0ZWdvcnkYAiABKA4yJS5t",
- "eGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzQ2F0ZWdvcnkSOAoLZGV0ZWN0",
- "ZWRfYnkYAyABKA4yIy5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzU291",
- "cmNlEg4KBmRldGFpbBgEIAEoBRIUCgxyYXdfY2F0ZWdvcnkYBSABKAUSFwoP",
- "cmF3X2RldGVjdGVkX2J5GAYgASgFEhcKD2RpYWdub3N0aWNfdGV4dBgHIAEo",
- "CSKnAwoHTXhWYWx1ZRIyCglkYXRhX3R5cGUYASABKA4yHy5teGFjY2Vzc19n",
- "YXRld2F5LnYxLk14RGF0YVR5cGUSFAoMdmFyaWFudF90eXBlGAIgASgJEg8K",
- "B2lzX251bGwYAyABKAgSFgoOcmF3X2RpYWdub3N0aWMYBCABKAkSFQoNcmF3",
- "X2RhdGFfdHlwZRgFIAEoBRIUCgpib29sX3ZhbHVlGAogASgISAASFQoLaW50",
- "MzJfdmFsdWUYCyABKAVIABIVCgtpbnQ2NF92YWx1ZRgMIAEoA0gAEhUKC2Zs",
- "b2F0X3ZhbHVlGA0gASgCSAASFgoMZG91YmxlX3ZhbHVlGA4gASgBSAASFgoM",
- "c3RyaW5nX3ZhbHVlGA8gASgJSAASNQoPdGltZXN0YW1wX3ZhbHVlGBAgASgL",
- "MhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAEjMKC2FycmF5X3ZhbHVl",
- "GBEgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeEFycmF5SAASEwoJcmF3",
- "X3ZhbHVlGBIgASgMSABCBgoEa2luZCL+BAoHTXhBcnJheRI6ChFlbGVtZW50",
- "X2RhdGFfdHlwZRgBIAEoDjIfLm14YWNjZXNzX2dhdGV3YXkudjEuTXhEYXRh",
- "VHlwZRIUCgx2YXJpYW50X3R5cGUYAiABKAkSEgoKZGltZW5zaW9ucxgDIAMo",
- "DRIWCg5yYXdfZGlhZ25vc3RpYxgEIAEoCRIdChVyYXdfZWxlbWVudF9kYXRh",
- "X3R5cGUYBSABKAUSNQoLYm9vbF92YWx1ZXMYCiABKAsyHi5teGFjY2Vzc19n",
- "YXRld2F5LnYxLkJvb2xBcnJheUgAEjcKDGludDMyX3ZhbHVlcxgLIAEoCzIf",
- "Lm14YWNjZXNzX2dhdGV3YXkudjEuSW50MzJBcnJheUgAEjcKDGludDY0X3Zh",
- "bHVlcxgMIAEoCzIfLm14YWNjZXNzX2dhdGV3YXkudjEuSW50NjRBcnJheUgA",
- "EjcKDGZsb2F0X3ZhbHVlcxgNIAEoCzIfLm14YWNjZXNzX2dhdGV3YXkudjEu",
- "RmxvYXRBcnJheUgAEjkKDWRvdWJsZV92YWx1ZXMYDiABKAsyIC5teGFjY2Vz",
- "c19nYXRld2F5LnYxLkRvdWJsZUFycmF5SAASOQoNc3RyaW5nX3ZhbHVlcxgP",
- "IAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEuU3RyaW5nQXJyYXlIABI/ChB0",
- "aW1lc3RhbXBfdmFsdWVzGBAgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5U",
- "aW1lc3RhbXBBcnJheUgAEjMKCnJhd192YWx1ZXMYESABKAsyHS5teGFjY2Vz",
- "c19nYXRld2F5LnYxLlJhd0FycmF5SABCCAoGdmFsdWVzIhsKCUJvb2xBcnJh",
- "eRIOCgZ2YWx1ZXMYASADKAgiHAoKSW50MzJBcnJheRIOCgZ2YWx1ZXMYASAD",
- "KAUiHAoKSW50NjRBcnJheRIOCgZ2YWx1ZXMYASADKAMiHAoKRmxvYXRBcnJh",
- "eRIOCgZ2YWx1ZXMYASADKAIiHQoLRG91YmxlQXJyYXkSDgoGdmFsdWVzGAEg",
- "AygBIh0KC1N0cmluZ0FycmF5Eg4KBnZhbHVlcxgBIAMoCSI8Cg5UaW1lc3Rh",
- "bXBBcnJheRIqCgZ2YWx1ZXMYASADKAsyGi5nb29nbGUucHJvdG9idWYuVGlt",
- "ZXN0YW1wIhoKCFJhd0FycmF5Eg4KBnZhbHVlcxgBIAMoDCJYCg5Qcm90b2Nv",
- "bFN0YXR1cxI1CgRjb2RlGAEgASgOMicubXhhY2Nlc3NfZ2F0ZXdheS52MS5Q",
- "cm90b2NvbFN0YXR1c0NvZGUSDwoHbWVzc2FnZRgCIAEoCSqfCwoNTXhDb21t",
- "YW5kS2luZBIfChtNWF9DT01NQU5EX0tJTkRfVU5TUEVDSUZJRUQQABIcChhN",
- "WF9DT01NQU5EX0tJTkRfUkVHSVNURVIQARIeChpNWF9DT01NQU5EX0tJTkRf",
- "VU5SRUdJU1RFUhACEhwKGE1YX0NPTU1BTkRfS0lORF9BRERfSVRFTRADEh0K",
- "GU1YX0NPTU1BTkRfS0lORF9BRERfSVRFTTIQBBIfChtNWF9DT01NQU5EX0tJ",
- "TkRfUkVNT1ZFX0lURU0QBRIaChZNWF9DT01NQU5EX0tJTkRfQURWSVNFEAYS",
- "HQoZTVhfQ09NTUFORF9LSU5EX1VOX0FEVklTRRAHEiYKIk1YX0NPTU1BTkRf",
- "S0lORF9BRFZJU0VfU1VQRVJWSVNPUlkQCBIlCiFNWF9DT01NQU5EX0tJTkRf",
- "QUREX0JVRkZFUkVEX0lURU0QCRIwCixNWF9DT01NQU5EX0tJTkRfU0VUX0JV",
- "RkZFUkVEX1VQREFURV9JTlRFUlZBTBAKEhsKF01YX0NPTU1BTkRfS0lORF9T",
- "VVNQRU5EEAsSHAoYTVhfQ09NTUFORF9LSU5EX0FDVElWQVRFEAwSGQoVTVhf",
- "Q09NTUFORF9LSU5EX1dSSVRFEA0SGgoWTVhfQ09NTUFORF9LSU5EX1dSSVRF",
- "MhAOEiEKHU1YX0NPTU1BTkRfS0lORF9XUklURV9TRUNVUkVEEA8SIgoeTVhf",
- "Q09NTUFORF9LSU5EX1dSSVRFX1NFQ1VSRUQyEBASJQohTVhfQ09NTUFORF9L",
- "SU5EX0FVVEhFTlRJQ0FURV9VU0VSEBESKAokTVhfQ09NTUFORF9LSU5EX0FS",
- "Q0hFU1RSQV9VU0VSX1RPX0lEEBISIQodTVhfQ09NTUFORF9LSU5EX0FERF9J",
- "VEVNX0JVTEsQExIkCiBNWF9DT01NQU5EX0tJTkRfQURWSVNFX0lURU1fQlVM",
- "SxAUEiQKIE1YX0NPTU1BTkRfS0lORF9SRU1PVkVfSVRFTV9CVUxLEBUSJwoj",
- "TVhfQ09NTUFORF9LSU5EX1VOX0FEVklTRV9JVEVNX0JVTEsQFhIiCh5NWF9D",
- "T01NQU5EX0tJTkRfU1VCU0NSSUJFX0JVTEsQFxIkCiBNWF9DT01NQU5EX0tJ",
- "TkRfVU5TVUJTQ1JJQkVfQlVMSxAYEiQKIE1YX0NPTU1BTkRfS0lORF9TVUJT",
- "Q1JJQkVfQUxBUk1TEBkSJgoiTVhfQ09NTUFORF9LSU5EX1VOU1VCU0NSSUJF",
- "X0FMQVJNUxAaEiUKIU1YX0NPTU1BTkRfS0lORF9BQ0tOT1dMRURHRV9BTEFS",
- "TRAbEicKI01YX0NPTU1BTkRfS0lORF9RVUVSWV9BQ1RJVkVfQUxBUk1TEBwS",
- "LQopTVhfQ09NTUFORF9LSU5EX0FDS05PV0xFREdFX0FMQVJNX0JZX05BTUUQ",
- "HRIeChpNWF9DT01NQU5EX0tJTkRfV1JJVEVfQlVMSxAeEh8KG01YX0NPTU1B",
- "TkRfS0lORF9XUklURTJfQlVMSxAfEiYKIk1YX0NPTU1BTkRfS0lORF9XUklU",
- "RV9TRUNVUkVEX0JVTEsQIBInCiNNWF9DT01NQU5EX0tJTkRfV1JJVEVfU0VD",
- "VVJFRDJfQlVMSxAhEh0KGU1YX0NPTU1BTkRfS0lORF9SRUFEX0JVTEsQIhIY",
- "ChRNWF9DT01NQU5EX0tJTkRfUElORxBkEiUKIU1YX0NPTU1BTkRfS0lORF9H",
- "RVRfU0VTU0lPTl9TVEFURRBlEiMKH01YX0NPTU1BTkRfS0lORF9HRVRfV09S",
- "S0VSX0lORk8QZhIgChxNWF9DT01NQU5EX0tJTkRfRFJBSU5fRVZFTlRTEGcS",
- "IwofTVhfQ09NTUFORF9LSU5EX1NIVVRET1dOX1dPUktFUhBoKnoKEUFsYXJt",
- "UHJvdmlkZXJNb2RlEiMKH0FMQVJNX1BST1ZJREVSX01PREVfVU5TUEVDSUZJ",
- "RUQQABIgChxBTEFSTV9QUk9WSURFUl9NT0RFX0FMQVJNTUdSEAESHgoaQUxB",
- "Uk1fUFJPVklERVJfTU9ERV9TVUJUQUcQAiqtAgoNTXhFdmVudEZhbWlseRIf",
- "ChtNWF9FVkVOVF9GQU1JTFlfVU5TUEVDSUZJRUQQABIiCh5NWF9FVkVOVF9G",
- "QU1JTFlfT05fREFUQV9DSEFOR0UQARIlCiFNWF9FVkVOVF9GQU1JTFlfT05f",
- "V1JJVEVfQ09NUExFVEUQAhImCiJNWF9FVkVOVF9GQU1JTFlfT1BFUkFUSU9O",
- "X0NPTVBMRVRFEAMSKwonTVhfRVZFTlRfRkFNSUxZX09OX0JVRkZFUkVEX0RB",
- "VEFfQ0hBTkdFEAQSJwojTVhfRVZFTlRfRkFNSUxZX09OX0FMQVJNX1RSQU5T",
- "SVRJT04QBRIyCi5NWF9FVkVOVF9GQU1JTFlfT05fQUxBUk1fUFJPVklERVJf",
- "TU9ERV9DSEFOR0VEEAYqygEKE0FsYXJtVHJhbnNpdGlvbktpbmQSJQohQUxB",
- "Uk1fVFJBTlNJVElPTl9LSU5EX1VOU1BFQ0lGSUVEEAASHwobQUxBUk1fVFJB",
- "TlNJVElPTl9LSU5EX1JBSVNFEAESJQohQUxBUk1fVFJBTlNJVElPTl9LSU5E",
- "X0FDS05PV0xFREdFEAISHwobQUxBUk1fVFJBTlNJVElPTl9LSU5EX0NMRUFS",
- "EAMSIwofQUxBUk1fVFJBTlNJVElPTl9LSU5EX1JFVFJJR0dFUhAEKqoBChNB",
- "bGFybUNvbmRpdGlvblN0YXRlEiUKIUFMQVJNX0NPTkRJVElPTl9TVEFURV9V",
- "TlNQRUNJRklFRBAAEiAKHEFMQVJNX0NPTkRJVElPTl9TVEFURV9BQ1RJVkUQ",
- "ARImCiJBTEFSTV9DT05ESVRJT05fU1RBVEVfQUNUSVZFX0FDS0VEEAISIgoe",
- "QUxBUk1fQ09ORElUSU9OX1NUQVRFX0lOQUNUSVZFEAMqpQMKEE14U3RhdHVz",
- "Q2F0ZWdvcnkSIgoeTVhfU1RBVFVTX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAAS",
- "HgoaTVhfU1RBVFVTX0NBVEVHT1JZX1VOS05PV04QARIZChVNWF9TVEFUVVNf",
- "Q0FURUdPUllfT0sQAhIeChpNWF9TVEFUVVNfQ0FURUdPUllfUEVORElORxAD",
- "Eh4KGk1YX1NUQVRVU19DQVRFR09SWV9XQVJOSU5HEAQSKgomTVhfU1RBVFVT",
- "X0NBVEVHT1JZX0NPTU1VTklDQVRJT05fRVJST1IQBRIqCiZNWF9TVEFUVVNf",
- "Q0FURUdPUllfQ09ORklHVVJBVElPTl9FUlJPUhAGEigKJE1YX1NUQVRVU19D",
- "QVRFR09SWV9PUEVSQVRJT05BTF9FUlJPUhAHEiUKIU1YX1NUQVRVU19DQVRF",
- "R09SWV9TRUNVUklUWV9FUlJPUhAIEiUKIU1YX1NUQVRVU19DQVRFR09SWV9T",
- "T0ZUV0FSRV9FUlJPUhAJEiIKHk1YX1NUQVRVU19DQVRFR09SWV9PVEhFUl9F",
- "UlJPUhAKKsoCCg5NeFN0YXR1c1NvdXJjZRIgChxNWF9TVEFUVVNfU09VUkNF",
- "X1VOU1BFQ0lGSUVEEAASHAoYTVhfU1RBVFVTX1NPVVJDRV9VTktOT1dOEAES",
- "IwofTVhfU1RBVFVTX1NPVVJDRV9SRVFVRVNUSU5HX0xNWBACEiMKH01YX1NU",
- "QVRVU19TT1VSQ0VfUkVTUE9ORElOR19MTVgQAxIjCh9NWF9TVEFUVVNfU09V",
- "UkNFX1JFUVVFU1RJTkdfTk1YEAQSIwofTVhfU1RBVFVTX1NPVVJDRV9SRVNQ",
- "T05ESU5HX05NWBAFEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVRVUVTVElOR19B",
- "VVRPTUFUSU9OX09CSkVDVBAGEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVTUE9O",
- "RElOR19BVVRPTUFUSU9OX09CSkVDVBAHKt0ECgpNeERhdGFUeXBlEhwKGE1Y",
- "X0RBVEFfVFlQRV9VTlNQRUNJRklFRBAAEhgKFE1YX0RBVEFfVFlQRV9VTktO",
- "T1dOEAESGAoUTVhfREFUQV9UWVBFX05PX0RBVEEQAhIYChRNWF9EQVRBX1RZ",
- "UEVfQk9PTEVBThADEhgKFE1YX0RBVEFfVFlQRV9JTlRFR0VSEAQSFgoSTVhf",
- "REFUQV9UWVBFX0ZMT0FUEAUSFwoTTVhfREFUQV9UWVBFX0RPVUJMRRAGEhcK",
- "E01YX0RBVEFfVFlQRV9TVFJJTkcQBxIVChFNWF9EQVRBX1RZUEVfVElNRRAI",
- "Eh0KGU1YX0RBVEFfVFlQRV9FTEFQU0VEX1RJTUUQCRIfChtNWF9EQVRBX1RZ",
- "UEVfUkVGRVJFTkNFX1RZUEUQChIcChhNWF9EQVRBX1RZUEVfU1RBVFVTX1RZ",
- "UEUQCxIVChFNWF9EQVRBX1RZUEVfRU5VTRAMEi0KKU1YX0RBVEFfVFlQRV9T",
- "RUNVUklUWV9DTEFTU0lGSUNBVElPTl9FTlVNEA0SIgoeTVhfREFUQV9UWVBF",
- "X0RBVEFfUVVBTElUWV9UWVBFEA4SHwobTVhfREFUQV9UWVBFX1FVQUxJRklF",
- "RF9FTlVNEA8SIQodTVhfREFUQV9UWVBFX1FVQUxJRklFRF9TVFJVQ1QQEBIp",
- "CiVNWF9EQVRBX1RZUEVfSU5URVJOQVRJT05BTElaRURfU1RSSU5HEBESGwoX",
- "TVhfREFUQV9UWVBFX0JJR19TVFJJTkcQEhIUChBNWF9EQVRBX1RZUEVfRU5E",
- "EBMqowMKElByb3RvY29sU3RhdHVzQ29kZRIkCiBQUk9UT0NPTF9TVEFUVVNf",
- "Q09ERV9VTlNQRUNJRklFRBAAEhsKF1BST1RPQ09MX1NUQVRVU19DT0RFX09L",
- "EAESKAokUFJPVE9DT0xfU1RBVFVTX0NPREVfSU5WQUxJRF9SRVFVRVNUEAIS",
- "KgomUFJPVE9DT0xfU1RBVFVTX0NPREVfU0VTU0lPTl9OT1RfRk9VTkQQAxIq",
- "CiZQUk9UT0NPTF9TVEFUVVNfQ09ERV9TRVNTSU9OX05PVF9SRUFEWRAEEisK",
- "J1BST1RPQ09MX1NUQVRVU19DT0RFX1dPUktFUl9VTkFWQUlMQUJMRRAFEiAK",
- "HFBST1RPQ09MX1NUQVRVU19DT0RFX1RJTUVPVVQQBhIhCh1QUk9UT0NPTF9T",
- "VEFUVVNfQ09ERV9DQU5DRUxFRBAHEisKJ1BST1RPQ09MX1NUQVRVU19DT0RF",
- "X1BST1RPQ09MX1ZJT0xBVElPThAIEikKJVBST1RPQ09MX1NUQVRVU19DT0RF",
- "X01YQUNDRVNTX0ZBSUxVUkUQCSq/AgoMU2Vzc2lvblN0YXRlEh0KGVNFU1NJ",
- "T05fU1RBVEVfVU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX1NUQVRFX0NSRUFU",
- "SU5HEAESIQodU0VTU0lPTl9TVEFURV9TVEFSVElOR19XT1JLRVIQAhIiCh5T",
- "RVNTSU9OX1NUQVRFX1dBSVRJTkdfRk9SX1BJUEUQAxIdChlTRVNTSU9OX1NU",
- "QVRFX0hBTkRTSEFLSU5HEAQSJQohU0VTU0lPTl9TVEFURV9JTklUSUFMSVpJ",
- "TkdfV09SS0VSEAUSFwoTU0VTU0lPTl9TVEFURV9SRUFEWRAGEhkKFVNFU1NJ",
- "T05fU1RBVEVfQ0xPU0lORxAHEhgKFFNFU1NJT05fU1RBVEVfQ0xPU0VEEAgS",
- "GQoVU0VTU0lPTl9TVEFURV9GQVVMVEVEEAkywwUKD014QWNjZXNzR2F0ZXdh",
- "eRJdCgtPcGVuU2Vzc2lvbhInLm14YWNjZXNzX2dhdGV3YXkudjEuT3BlblNl",
- "c3Npb25SZXF1ZXN0GiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5PcGVuU2Vzc2lv",
- "blJlcGx5EmAKDENsb3NlU2Vzc2lvbhIoLm14YWNjZXNzX2dhdGV3YXkudjEu",
- "Q2xvc2VTZXNzaW9uUmVxdWVzdBomLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xv",
- "c2VTZXNzaW9uUmVwbHkSVAoGSW52b2tlEiUubXhhY2Nlc3NfZ2F0ZXdheS52",
- "MS5NeENvbW1hbmRSZXF1ZXN0GiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENv",
- "bW1hbmRSZXBseRJYCgxTdHJlYW1FdmVudHMSKC5teGFjY2Vzc19nYXRld2F5",
- "LnYxLlN0cmVhbUV2ZW50c1JlcXVlc3QaHC5teGFjY2Vzc19nYXRld2F5LnYx",
- "Lk14RXZlbnQwARJsChBBY2tub3dsZWRnZUFsYXJtEiwubXhhY2Nlc3NfZ2F0",
- "ZXdheS52MS5BY2tub3dsZWRnZUFsYXJtUmVxdWVzdBoqLm14YWNjZXNzX2dh",
- "dGV3YXkudjEuQWNrbm93bGVkZ2VBbGFybVJlcGx5EmEKDFN0cmVhbUFsYXJt",
- "cxIoLm14YWNjZXNzX2dhdGV3YXkudjEuU3RyZWFtQWxhcm1zUmVxdWVzdBol",
- "Lm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1GZWVkTWVzc2FnZTABEm4KEVF1",
- "ZXJ5QWN0aXZlQWxhcm1zEi0ubXhhY2Nlc3NfZ2F0ZXdheS52MS5RdWVyeUFj",
- "dGl2ZUFsYXJtc1JlcXVlc3QaKC5teGFjY2Vzc19nYXRld2F5LnYxLkFjdGl2",
- "ZUFsYXJtU25hcHNob3QwAUImqgIjWkIuTU9NLldXLk14R2F0ZXdheS5Db250",
- "cmFjdHMuUHJvdG9iBnByb3RvMw=="));
+ "IAEoBUgBiAEBEhIKCnJhd19zdGF0dXMYDSABKAkSNwoKcmVwbGF5X2dhcBgO",
+ "IAEoCzIeLm14YWNjZXNzX2dhdGV3YXkudjEuUmVwbGF5R2FwSAKIAQESQAoO",
+ "b25fZGF0YV9jaGFuZ2UYFCABKAsyJi5teGFjY2Vzc19nYXRld2F5LnYxLk9u",
+ "RGF0YUNoYW5nZUV2ZW50SAASRgoRb25fd3JpdGVfY29tcGxldGUYFSABKAsy",
+ "KS5teGFjY2Vzc19nYXRld2F5LnYxLk9uV3JpdGVDb21wbGV0ZUV2ZW50SAAS",
+ "SQoSb3BlcmF0aW9uX2NvbXBsZXRlGBYgASgLMisubXhhY2Nlc3NfZ2F0ZXdh",
+ "eS52MS5PcGVyYXRpb25Db21wbGV0ZUV2ZW50SAASUQoXb25fYnVmZmVyZWRf",
+ "ZGF0YV9jaGFuZ2UYFyABKAsyLi5teGFjY2Vzc19nYXRld2F5LnYxLk9uQnVm",
+ "ZmVyZWREYXRhQ2hhbmdlRXZlbnRIABJKChNvbl9hbGFybV90cmFuc2l0aW9u",
+ "GBggASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkFsYXJtVHJhbnNpdGlv",
+ "bkV2ZW50SAASXgoeb25fYWxhcm1fcHJvdmlkZXJfbW9kZV9jaGFuZ2VkGBkg",
+ "ASgLMjQubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkFsYXJtUHJvdmlkZXJNb2Rl",
+ "Q2hhbmdlZEV2ZW50SABCBgoEYm9keUIKCghfaHJlc3VsdEINCgtfcmVwbGF5",
+ "X2dhcCJQCglSZXBsYXlHYXASIAoYcmVxdWVzdGVkX2FmdGVyX3NlcXVlbmNl",
+ "GAEgASgEEiEKGW9sZGVzdF9hdmFpbGFibGVfc2VxdWVuY2UYAiABKAQiEwoR",
+ "T25EYXRhQ2hhbmdlRXZlbnQiFgoUT25Xcml0ZUNvbXBsZXRlRXZlbnQiGAoW",
+ "T3BlcmF0aW9uQ29tcGxldGVFdmVudCLUAQoZT25CdWZmZXJlZERhdGFDaGFu",
+ "Z2VFdmVudBIyCglkYXRhX3R5cGUYASABKA4yHy5teGFjY2Vzc19nYXRld2F5",
+ "LnYxLk14RGF0YVR5cGUSNAoOcXVhbGl0eV92YWx1ZXMYAiABKAsyHC5teGFj",
+ "Y2Vzc19nYXRld2F5LnYxLk14QXJyYXkSNgoQdGltZXN0YW1wX3ZhbHVlcxgD",
+ "IAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhBcnJheRIVCg1yYXdfZGF0",
+ "YV90eXBlGAQgASgFItAEChZPbkFsYXJtVHJhbnNpdGlvbkV2ZW50EhwKFGFs",
+ "YXJtX2Z1bGxfcmVmZXJlbmNlGAEgASgJEh8KF3NvdXJjZV9vYmplY3RfcmVm",
+ "ZXJlbmNlGAIgASgJEhcKD2FsYXJtX3R5cGVfbmFtZRgDIAEoCRJBCg90cmFu",
+ "c2l0aW9uX2tpbmQYBCABKA4yKC5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJt",
+ "VHJhbnNpdGlvbktpbmQSEAoIc2V2ZXJpdHkYBSABKAUSPAoYb3JpZ2luYWxf",
+ "cmFpc2VfdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVz",
+ "dGFtcBI4ChR0cmFuc2l0aW9uX3RpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5w",
+ "cm90b2J1Zi5UaW1lc3RhbXASFQoNb3BlcmF0b3JfdXNlchgIIAEoCRIYChBv",
+ "cGVyYXRvcl9jb21tZW50GAkgASgJEhAKCGNhdGVnb3J5GAogASgJEhMKC2Rl",
+ "c2NyaXB0aW9uGAsgASgJEjMKDWN1cnJlbnRfdmFsdWUYDCABKAsyHC5teGFj",
+ "Y2Vzc19nYXRld2F5LnYxLk14VmFsdWUSMQoLbGltaXRfdmFsdWUYDSABKAsy",
+ "HC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSEAoIZGVncmFkZWQYDiAB",
+ "KAgSPwoPc291cmNlX3Byb3ZpZGVyGA8gASgOMiYubXhhY2Nlc3NfZ2F0ZXdh",
+ "eS52MS5BbGFybVByb3ZpZGVyTW9kZSKgAQofT25BbGFybVByb3ZpZGVyTW9k",
+ "ZUNoYW5nZWRFdmVudBI0CgRtb2RlGAEgASgOMiYubXhhY2Nlc3NfZ2F0ZXdh",
+ "eS52MS5BbGFybVByb3ZpZGVyTW9kZRIOCgZyZWFzb24YAiABKAkSDwoHaHJl",
+ "c3VsdBgDIAEoBRImCgJhdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l",
+ "c3RhbXAi0AQKE0FjdGl2ZUFsYXJtU25hcHNob3QSHAoUYWxhcm1fZnVsbF9y",
+ "ZWZlcmVuY2UYASABKAkSHwoXc291cmNlX29iamVjdF9yZWZlcmVuY2UYAiAB",
+ "KAkSFwoPYWxhcm1fdHlwZV9uYW1lGAMgASgJEhAKCHNldmVyaXR5GAQgASgF",
+ "EjwKGG9yaWdpbmFsX3JhaXNlX3RpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5w",
+ "cm90b2J1Zi5UaW1lc3RhbXASPwoNY3VycmVudF9zdGF0ZRgGIAEoDjIoLm14",
+ "YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1Db25kaXRpb25TdGF0ZRIQCghjYXRl",
+ "Z29yeRgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRI9ChlsYXN0X3RyYW5z",
+ "aXRpb25fdGltZXN0YW1wGAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVz",
+ "dGFtcBIVCg1vcGVyYXRvcl91c2VyGAogASgJEhgKEG9wZXJhdG9yX2NvbW1l",
+ "bnQYCyABKAkSMwoNY3VycmVudF92YWx1ZRgMIAEoCzIcLm14YWNjZXNzX2dh",
+ "dGV3YXkudjEuTXhWYWx1ZRIxCgtsaW1pdF92YWx1ZRgNIAEoCzIcLm14YWNj",
+ "ZXNzX2dhdGV3YXkudjEuTXhWYWx1ZRIQCghkZWdyYWRlZBgOIAEoCBI/Cg9z",
+ "b3VyY2VfcHJvdmlkZXIYDyABKA4yJi5teGFjY2Vzc19nYXRld2F5LnYxLkFs",
+ "YXJtUHJvdmlkZXJNb2RlIpABChdBY2tub3dsZWRnZUFsYXJtUmVxdWVzdBId",
+ "ChVjbGllbnRfY29ycmVsYXRpb25faWQYAiABKAkSHAoUYWxhcm1fZnVsbF9y",
+ "ZWZlcmVuY2UYAyABKAkSDwoHY29tbWVudBgEIAEoCRIVCg1vcGVyYXRvcl91",
+ "c2VyGAUgASgJSgQIARACUgpzZXNzaW9uX2lkIvEBChVBY2tub3dsZWRnZUFs",
+ "YXJtUmVwbHkSFgoOY29ycmVsYXRpb25faWQYAiABKAkSPAoPcHJvdG9jb2xf",
+ "c3RhdHVzGAMgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5Qcm90b2NvbFN0",
+ "YXR1cxIUCgdocmVzdWx0GAQgASgFSACIAQESMgoGc3RhdHVzGAUgASgLMiIu",
+ "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFN0YXR1c1Byb3h5EhoKEmRpYWdub3N0",
+ "aWNfbWVzc2FnZRgGIAEoCUIKCghfaHJlc3VsdEoECAEQAlIKc2Vzc2lvbl9p",
+ "ZCJRChNTdHJlYW1BbGFybXNSZXF1ZXN0Eh0KFWNsaWVudF9jb3JyZWxhdGlv",
+ "bl9pZBgBIAEoCRIbChNhbGFybV9maWx0ZXJfcHJlZml4GAIgASgJIoQCChBB",
+ "bGFybUZlZWRNZXNzYWdlEkAKDGFjdGl2ZV9hbGFybRgBIAEoCzIoLm14YWNj",
+ "ZXNzX2dhdGV3YXkudjEuQWN0aXZlQWxhcm1TbmFwc2hvdEgAEhsKEXNuYXBz",
+ "aG90X2NvbXBsZXRlGAIgASgISAASQQoKdHJhbnNpdGlvbhgDIAEoCzIrLm14",
+ "YWNjZXNzX2dhdGV3YXkudjEuT25BbGFybVRyYW5zaXRpb25FdmVudEgAEkMK",
+ "D3Byb3ZpZGVyX3N0YXR1cxgEIAEoCzIoLm14YWNjZXNzX2dhdGV3YXkudjEu",
+ "QWxhcm1Qcm92aWRlclN0YXR1c0gAQgkKB3BheWxvYWQimAEKE0FsYXJtUHJv",
+ "dmlkZXJTdGF0dXMSNAoEbW9kZRgBIAEoDjImLm14YWNjZXNzX2dhdGV3YXku",
+ "djEuQWxhcm1Qcm92aWRlck1vZGUSEAoIZGVncmFkZWQYAiABKAgSDgoGcmVh",
+ "c29uGAMgASgJEikKBXNpbmNlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRp",
+ "bWVzdGFtcCLrAQoNTXhTdGF0dXNQcm94eRIPCgdzdWNjZXNzGAEgASgFEjcK",
+ "CGNhdGVnb3J5GAIgASgOMiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFN0YXR1",
+ "c0NhdGVnb3J5EjgKC2RldGVjdGVkX2J5GAMgASgOMiMubXhhY2Nlc3NfZ2F0",
+ "ZXdheS52MS5NeFN0YXR1c1NvdXJjZRIOCgZkZXRhaWwYBCABKAUSFAoMcmF3",
+ "X2NhdGVnb3J5GAUgASgFEhcKD3Jhd19kZXRlY3RlZF9ieRgGIAEoBRIXCg9k",
+ "aWFnbm9zdGljX3RleHQYByABKAkipwMKB014VmFsdWUSMgoJZGF0YV90eXBl",
+ "GAEgASgOMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEhQKDHZh",
+ "cmlhbnRfdHlwZRgCIAEoCRIPCgdpc19udWxsGAMgASgIEhYKDnJhd19kaWFn",
+ "bm9zdGljGAQgASgJEhUKDXJhd19kYXRhX3R5cGUYBSABKAUSFAoKYm9vbF92",
+ "YWx1ZRgKIAEoCEgAEhUKC2ludDMyX3ZhbHVlGAsgASgFSAASFQoLaW50NjRf",
+ "dmFsdWUYDCABKANIABIVCgtmbG9hdF92YWx1ZRgNIAEoAkgAEhYKDGRvdWJs",
+ "ZV92YWx1ZRgOIAEoAUgAEhYKDHN0cmluZ192YWx1ZRgPIAEoCUgAEjUKD3Rp",
+ "bWVzdGFtcF92YWx1ZRgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh",
+ "bXBIABIzCgthcnJheV92YWx1ZRgRIAEoCzIcLm14YWNjZXNzX2dhdGV3YXku",
+ "djEuTXhBcnJheUgAEhMKCXJhd192YWx1ZRgSIAEoDEgAQgYKBGtpbmQi/gQK",
+ "B014QXJyYXkSOgoRZWxlbWVudF9kYXRhX3R5cGUYASABKA4yHy5teGFjY2Vz",
+ "c19nYXRld2F5LnYxLk14RGF0YVR5cGUSFAoMdmFyaWFudF90eXBlGAIgASgJ",
+ "EhIKCmRpbWVuc2lvbnMYAyADKA0SFgoOcmF3X2RpYWdub3N0aWMYBCABKAkS",
+ "HQoVcmF3X2VsZW1lbnRfZGF0YV90eXBlGAUgASgFEjUKC2Jvb2xfdmFsdWVz",
+ "GAogASgLMh4ubXhhY2Nlc3NfZ2F0ZXdheS52MS5Cb29sQXJyYXlIABI3Cgxp",
+ "bnQzMl92YWx1ZXMYCyABKAsyHy5teGFjY2Vzc19nYXRld2F5LnYxLkludDMy",
+ "QXJyYXlIABI3CgxpbnQ2NF92YWx1ZXMYDCABKAsyHy5teGFjY2Vzc19nYXRl",
+ "d2F5LnYxLkludDY0QXJyYXlIABI3CgxmbG9hdF92YWx1ZXMYDSABKAsyHy5t",
+ "eGFjY2Vzc19nYXRld2F5LnYxLkZsb2F0QXJyYXlIABI5Cg1kb3VibGVfdmFs",
+ "dWVzGA4gASgLMiAubXhhY2Nlc3NfZ2F0ZXdheS52MS5Eb3VibGVBcnJheUgA",
+ "EjkKDXN0cmluZ192YWx1ZXMYDyABKAsyIC5teGFjY2Vzc19nYXRld2F5LnYx",
+ "LlN0cmluZ0FycmF5SAASPwoQdGltZXN0YW1wX3ZhbHVlcxgQIAEoCzIjLm14",
+ "YWNjZXNzX2dhdGV3YXkudjEuVGltZXN0YW1wQXJyYXlIABIzCgpyYXdfdmFs",
+ "dWVzGBEgASgLMh0ubXhhY2Nlc3NfZ2F0ZXdheS52MS5SYXdBcnJheUgAQggK",
+ "BnZhbHVlcyIbCglCb29sQXJyYXkSDgoGdmFsdWVzGAEgAygIIhwKCkludDMy",
+ "QXJyYXkSDgoGdmFsdWVzGAEgAygFIhwKCkludDY0QXJyYXkSDgoGdmFsdWVz",
+ "GAEgAygDIhwKCkZsb2F0QXJyYXkSDgoGdmFsdWVzGAEgAygCIh0KC0RvdWJs",
+ "ZUFycmF5Eg4KBnZhbHVlcxgBIAMoASIdCgtTdHJpbmdBcnJheRIOCgZ2YWx1",
+ "ZXMYASADKAkiPAoOVGltZXN0YW1wQXJyYXkSKgoGdmFsdWVzGAEgAygLMhou",
+ "Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIaCghSYXdBcnJheRIOCgZ2YWx1",
+ "ZXMYASADKAwiWAoOUHJvdG9jb2xTdGF0dXMSNQoEY29kZRgBIAEoDjInLm14",
+ "YWNjZXNzX2dhdGV3YXkudjEuUHJvdG9jb2xTdGF0dXNDb2RlEg8KB21lc3Nh",
+ "Z2UYAiABKAkqnwsKDU14Q29tbWFuZEtpbmQSHwobTVhfQ09NTUFORF9LSU5E",
+ "X1VOU1BFQ0lGSUVEEAASHAoYTVhfQ09NTUFORF9LSU5EX1JFR0lTVEVSEAES",
+ "HgoaTVhfQ09NTUFORF9LSU5EX1VOUkVHSVNURVIQAhIcChhNWF9DT01NQU5E",
+ "X0tJTkRfQUREX0lURU0QAxIdChlNWF9DT01NQU5EX0tJTkRfQUREX0lURU0y",
+ "EAQSHwobTVhfQ09NTUFORF9LSU5EX1JFTU9WRV9JVEVNEAUSGgoWTVhfQ09N",
+ "TUFORF9LSU5EX0FEVklTRRAGEh0KGU1YX0NPTU1BTkRfS0lORF9VTl9BRFZJ",
+ "U0UQBxImCiJNWF9DT01NQU5EX0tJTkRfQURWSVNFX1NVUEVSVklTT1JZEAgS",
+ "JQohTVhfQ09NTUFORF9LSU5EX0FERF9CVUZGRVJFRF9JVEVNEAkSMAosTVhf",
+ "Q09NTUFORF9LSU5EX1NFVF9CVUZGRVJFRF9VUERBVEVfSU5URVJWQUwQChIb",
+ "ChdNWF9DT01NQU5EX0tJTkRfU1VTUEVORBALEhwKGE1YX0NPTU1BTkRfS0lO",
+ "RF9BQ1RJVkFURRAMEhkKFU1YX0NPTU1BTkRfS0lORF9XUklURRANEhoKFk1Y",
+ "X0NPTU1BTkRfS0lORF9XUklURTIQDhIhCh1NWF9DT01NQU5EX0tJTkRfV1JJ",
+ "VEVfU0VDVVJFRBAPEiIKHk1YX0NPTU1BTkRfS0lORF9XUklURV9TRUNVUkVE",
+ "MhAQEiUKIU1YX0NPTU1BTkRfS0lORF9BVVRIRU5USUNBVEVfVVNFUhAREigK",
+ "JE1YX0NPTU1BTkRfS0lORF9BUkNIRVNUUkFfVVNFUl9UT19JRBASEiEKHU1Y",
+ "X0NPTU1BTkRfS0lORF9BRERfSVRFTV9CVUxLEBMSJAogTVhfQ09NTUFORF9L",
+ "SU5EX0FEVklTRV9JVEVNX0JVTEsQFBIkCiBNWF9DT01NQU5EX0tJTkRfUkVN",
+ "T1ZFX0lURU1fQlVMSxAVEicKI01YX0NPTU1BTkRfS0lORF9VTl9BRFZJU0Vf",
+ "SVRFTV9CVUxLEBYSIgoeTVhfQ09NTUFORF9LSU5EX1NVQlNDUklCRV9CVUxL",
+ "EBcSJAogTVhfQ09NTUFORF9LSU5EX1VOU1VCU0NSSUJFX0JVTEsQGBIkCiBN",
+ "WF9DT01NQU5EX0tJTkRfU1VCU0NSSUJFX0FMQVJNUxAZEiYKIk1YX0NPTU1B",
+ "TkRfS0lORF9VTlNVQlNDUklCRV9BTEFSTVMQGhIlCiFNWF9DT01NQU5EX0tJ",
+ "TkRfQUNLTk9XTEVER0VfQUxBUk0QGxInCiNNWF9DT01NQU5EX0tJTkRfUVVF",
+ "UllfQUNUSVZFX0FMQVJNUxAcEi0KKU1YX0NPTU1BTkRfS0lORF9BQ0tOT1dM",
+ "RURHRV9BTEFSTV9CWV9OQU1FEB0SHgoaTVhfQ09NTUFORF9LSU5EX1dSSVRF",
+ "X0JVTEsQHhIfChtNWF9DT01NQU5EX0tJTkRfV1JJVEUyX0JVTEsQHxImCiJN",
+ "WF9DT01NQU5EX0tJTkRfV1JJVEVfU0VDVVJFRF9CVUxLECASJwojTVhfQ09N",
+ "TUFORF9LSU5EX1dSSVRFX1NFQ1VSRUQyX0JVTEsQIRIdChlNWF9DT01NQU5E",
+ "X0tJTkRfUkVBRF9CVUxLECISGAoUTVhfQ09NTUFORF9LSU5EX1BJTkcQZBIl",
+ "CiFNWF9DT01NQU5EX0tJTkRfR0VUX1NFU1NJT05fU1RBVEUQZRIjCh9NWF9D",
+ "T01NQU5EX0tJTkRfR0VUX1dPUktFUl9JTkZPEGYSIAocTVhfQ09NTUFORF9L",
+ "SU5EX0RSQUlOX0VWRU5UUxBnEiMKH01YX0NPTU1BTkRfS0lORF9TSFVURE9X",
+ "Tl9XT1JLRVIQaCp6ChFBbGFybVByb3ZpZGVyTW9kZRIjCh9BTEFSTV9QUk9W",
+ "SURFUl9NT0RFX1VOU1BFQ0lGSUVEEAASIAocQUxBUk1fUFJPVklERVJfTU9E",
+ "RV9BTEFSTU1HUhABEh4KGkFMQVJNX1BST1ZJREVSX01PREVfU1VCVEFHEAIq",
+ "rQIKDU14RXZlbnRGYW1pbHkSHwobTVhfRVZFTlRfRkFNSUxZX1VOU1BFQ0lG",
+ "SUVEEAASIgoeTVhfRVZFTlRfRkFNSUxZX09OX0RBVEFfQ0hBTkdFEAESJQoh",
+ "TVhfRVZFTlRfRkFNSUxZX09OX1dSSVRFX0NPTVBMRVRFEAISJgoiTVhfRVZF",
+ "TlRfRkFNSUxZX09QRVJBVElPTl9DT01QTEVURRADEisKJ01YX0VWRU5UX0ZB",
+ "TUlMWV9PTl9CVUZGRVJFRF9EQVRBX0NIQU5HRRAEEicKI01YX0VWRU5UX0ZB",
+ "TUlMWV9PTl9BTEFSTV9UUkFOU0lUSU9OEAUSMgouTVhfRVZFTlRfRkFNSUxZ",
+ "X09OX0FMQVJNX1BST1ZJREVSX01PREVfQ0hBTkdFRBAGKsoBChNBbGFybVRy",
+ "YW5zaXRpb25LaW5kEiUKIUFMQVJNX1RSQU5TSVRJT05fS0lORF9VTlNQRUNJ",
+ "RklFRBAAEh8KG0FMQVJNX1RSQU5TSVRJT05fS0lORF9SQUlTRRABEiUKIUFM",
+ "QVJNX1RSQU5TSVRJT05fS0lORF9BQ0tOT1dMRURHRRACEh8KG0FMQVJNX1RS",
+ "QU5TSVRJT05fS0lORF9DTEVBUhADEiMKH0FMQVJNX1RSQU5TSVRJT05fS0lO",
+ "RF9SRVRSSUdHRVIQBCqqAQoTQWxhcm1Db25kaXRpb25TdGF0ZRIlCiFBTEFS",
+ "TV9DT05ESVRJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBTEFSTV9DT05E",
+ "SVRJT05fU1RBVEVfQUNUSVZFEAESJgoiQUxBUk1fQ09ORElUSU9OX1NUQVRF",
+ "X0FDVElWRV9BQ0tFRBACEiIKHkFMQVJNX0NPTkRJVElPTl9TVEFURV9JTkFD",
+ "VElWRRADKqUDChBNeFN0YXR1c0NhdGVnb3J5EiIKHk1YX1NUQVRVU19DQVRF",
+ "R09SWV9VTlNQRUNJRklFRBAAEh4KGk1YX1NUQVRVU19DQVRFR09SWV9VTktO",
+ "T1dOEAESGQoVTVhfU1RBVFVTX0NBVEVHT1JZX09LEAISHgoaTVhfU1RBVFVT",
+ "X0NBVEVHT1JZX1BFTkRJTkcQAxIeChpNWF9TVEFUVVNfQ0FURUdPUllfV0FS",
+ "TklORxAEEioKJk1YX1NUQVRVU19DQVRFR09SWV9DT01NVU5JQ0FUSU9OX0VS",
+ "Uk9SEAUSKgomTVhfU1RBVFVTX0NBVEVHT1JZX0NPTkZJR1VSQVRJT05fRVJS",
+ "T1IQBhIoCiRNWF9TVEFUVVNfQ0FURUdPUllfT1BFUkFUSU9OQUxfRVJST1IQ",
+ "BxIlCiFNWF9TVEFUVVNfQ0FURUdPUllfU0VDVVJJVFlfRVJST1IQCBIlCiFN",
+ "WF9TVEFUVVNfQ0FURUdPUllfU09GVFdBUkVfRVJST1IQCRIiCh5NWF9TVEFU",
+ "VVNfQ0FURUdPUllfT1RIRVJfRVJST1IQCirKAgoOTXhTdGF0dXNTb3VyY2US",
+ "IAocTVhfU1RBVFVTX1NPVVJDRV9VTlNQRUNJRklFRBAAEhwKGE1YX1NUQVRV",
+ "U19TT1VSQ0VfVU5LTk9XThABEiMKH01YX1NUQVRVU19TT1VSQ0VfUkVRVUVT",
+ "VElOR19MTVgQAhIjCh9NWF9TVEFUVVNfU09VUkNFX1JFU1BPTkRJTkdfTE1Y",
+ "EAMSIwofTVhfU1RBVFVTX1NPVVJDRV9SRVFVRVNUSU5HX05NWBAEEiMKH01Y",
+ "X1NUQVRVU19TT1VSQ0VfUkVTUE9ORElOR19OTVgQBRIxCi1NWF9TVEFUVVNf",
+ "U09VUkNFX1JFUVVFU1RJTkdfQVVUT01BVElPTl9PQkpFQ1QQBhIxCi1NWF9T",
+ "VEFUVVNfU09VUkNFX1JFU1BPTkRJTkdfQVVUT01BVElPTl9PQkpFQ1QQByrd",
+ "BAoKTXhEYXRhVHlwZRIcChhNWF9EQVRBX1RZUEVfVU5TUEVDSUZJRUQQABIY",
+ "ChRNWF9EQVRBX1RZUEVfVU5LTk9XThABEhgKFE1YX0RBVEFfVFlQRV9OT19E",
+ "QVRBEAISGAoUTVhfREFUQV9UWVBFX0JPT0xFQU4QAxIYChRNWF9EQVRBX1RZ",
+ "UEVfSU5URUdFUhAEEhYKEk1YX0RBVEFfVFlQRV9GTE9BVBAFEhcKE01YX0RB",
+ "VEFfVFlQRV9ET1VCTEUQBhIXChNNWF9EQVRBX1RZUEVfU1RSSU5HEAcSFQoR",
+ "TVhfREFUQV9UWVBFX1RJTUUQCBIdChlNWF9EQVRBX1RZUEVfRUxBUFNFRF9U",
+ "SU1FEAkSHwobTVhfREFUQV9UWVBFX1JFRkVSRU5DRV9UWVBFEAoSHAoYTVhf",
+ "REFUQV9UWVBFX1NUQVRVU19UWVBFEAsSFQoRTVhfREFUQV9UWVBFX0VOVU0Q",
+ "DBItCilNWF9EQVRBX1RZUEVfU0VDVVJJVFlfQ0xBU1NJRklDQVRJT05fRU5V",
+ "TRANEiIKHk1YX0RBVEFfVFlQRV9EQVRBX1FVQUxJVFlfVFlQRRAOEh8KG01Y",
+ "X0RBVEFfVFlQRV9RVUFMSUZJRURfRU5VTRAPEiEKHU1YX0RBVEFfVFlQRV9R",
+ "VUFMSUZJRURfU1RSVUNUEBASKQolTVhfREFUQV9UWVBFX0lOVEVSTkFUSU9O",
+ "QUxJWkVEX1NUUklORxAREhsKF01YX0RBVEFfVFlQRV9CSUdfU1RSSU5HEBIS",
+ "FAoQTVhfREFUQV9UWVBFX0VORBATKqMDChJQcm90b2NvbFN0YXR1c0NvZGUS",
+ "JAogUFJPVE9DT0xfU1RBVFVTX0NPREVfVU5TUEVDSUZJRUQQABIbChdQUk9U",
+ "T0NPTF9TVEFUVVNfQ09ERV9PSxABEigKJFBST1RPQ09MX1NUQVRVU19DT0RF",
+ "X0lOVkFMSURfUkVRVUVTVBACEioKJlBST1RPQ09MX1NUQVRVU19DT0RFX1NF",
+ "U1NJT05fTk9UX0ZPVU5EEAMSKgomUFJPVE9DT0xfU1RBVFVTX0NPREVfU0VT",
+ "U0lPTl9OT1RfUkVBRFkQBBIrCidQUk9UT0NPTF9TVEFUVVNfQ09ERV9XT1JL",
+ "RVJfVU5BVkFJTEFCTEUQBRIgChxQUk9UT0NPTF9TVEFUVVNfQ09ERV9USU1F",
+ "T1VUEAYSIQodUFJPVE9DT0xfU1RBVFVTX0NPREVfQ0FOQ0VMRUQQBxIrCidQ",
+ "Uk9UT0NPTF9TVEFUVVNfQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04QCBIpCiVQ",
+ "Uk9UT0NPTF9TVEFUVVNfQ09ERV9NWEFDQ0VTU19GQUlMVVJFEAkqvwIKDFNl",
+ "c3Npb25TdGF0ZRIdChlTRVNTSU9OX1NUQVRFX1VOU1BFQ0lGSUVEEAASGgoW",
+ "U0VTU0lPTl9TVEFURV9DUkVBVElORxABEiEKHVNFU1NJT05fU1RBVEVfU1RB",
+ "UlRJTkdfV09SS0VSEAISIgoeU0VTU0lPTl9TVEFURV9XQUlUSU5HX0ZPUl9Q",
+ "SVBFEAMSHQoZU0VTU0lPTl9TVEFURV9IQU5EU0hBS0lORxAEEiUKIVNFU1NJ",
+ "T05fU1RBVEVfSU5JVElBTElaSU5HX1dPUktFUhAFEhcKE1NFU1NJT05fU1RB",
+ "VEVfUkVBRFkQBhIZChVTRVNTSU9OX1NUQVRFX0NMT1NJTkcQBxIYChRTRVNT",
+ "SU9OX1NUQVRFX0NMT1NFRBAIEhkKFVNFU1NJT05fU1RBVEVfRkFVTFRFRBAJ",
+ "MsMFCg9NeEFjY2Vzc0dhdGV3YXkSXQoLT3BlblNlc3Npb24SJy5teGFjY2Vz",
+ "c19nYXRld2F5LnYxLk9wZW5TZXNzaW9uUmVxdWVzdBolLm14YWNjZXNzX2dh",
+ "dGV3YXkudjEuT3BlblNlc3Npb25SZXBseRJgCgxDbG9zZVNlc3Npb24SKC5t",
+ "eGFjY2Vzc19nYXRld2F5LnYxLkNsb3NlU2Vzc2lvblJlcXVlc3QaJi5teGFj",
+ "Y2Vzc19nYXRld2F5LnYxLkNsb3NlU2Vzc2lvblJlcGx5ElQKBkludm9rZRIl",
+ "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhDb21tYW5kUmVxdWVzdBojLm14YWNj",
+ "ZXNzX2dhdGV3YXkudjEuTXhDb21tYW5kUmVwbHkSWAoMU3RyZWFtRXZlbnRz",
+ "EigubXhhY2Nlc3NfZ2F0ZXdheS52MS5TdHJlYW1FdmVudHNSZXF1ZXN0Ghwu",
+ "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeEV2ZW50MAESbAoQQWNrbm93bGVkZ2VB",
+ "bGFybRIsLm14YWNjZXNzX2dhdGV3YXkudjEuQWNrbm93bGVkZ2VBbGFybVJl",
+ "cXVlc3QaKi5teGFjY2Vzc19nYXRld2F5LnYxLkFja25vd2xlZGdlQWxhcm1S",
+ "ZXBseRJhCgxTdHJlYW1BbGFybXMSKC5teGFjY2Vzc19nYXRld2F5LnYxLlN0",
+ "cmVhbUFsYXJtc1JlcXVlc3QaJS5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJt",
+ "RmVlZE1lc3NhZ2UwARJuChFRdWVyeUFjdGl2ZUFsYXJtcxItLm14YWNjZXNz",
+ "X2dhdGV3YXkudjEuUXVlcnlBY3RpdmVBbGFybXNSZXF1ZXN0GigubXhhY2Nl",
+ "c3NfZ2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90MAFCJqoCI1pCLk1P",
+ "TS5XVy5NeEdhdGV3YXkuQ29udHJhY3RzLlByb3RvYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState), }, null, new pbr::GeneratedClrTypeInfo[] {
@@ -593,7 +596,8 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply.Parser, new[]{ "Events" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload.Parser, new[]{ "NativeStatus" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload), global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload.Parser, new[]{ "Snapshots" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent.Parser, new[]{ "Family", "SessionId", "ServerHandle", "ItemHandle", "Value", "Quality", "SourceTimestamp", "Statuses", "WorkerSequence", "WorkerTimestamp", "GatewayReceiveTimestamp", "Hresult", "RawStatus", "OnDataChange", "OnWriteComplete", "OperationComplete", "OnBufferedDataChange", "OnAlarmTransition", "OnAlarmProviderModeChanged" }, new[]{ "Body", "Hresult" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent.Parser, new[]{ "Family", "SessionId", "ServerHandle", "ItemHandle", "Value", "Quality", "SourceTimestamp", "Statuses", "WorkerSequence", "WorkerTimestamp", "GatewayReceiveTimestamp", "Hresult", "RawStatus", "ReplayGap", "OnDataChange", "OnWriteComplete", "OperationComplete", "OnBufferedDataChange", "OnAlarmTransition", "OnAlarmProviderModeChanged" }, new[]{ "Body", "Hresult", "ReplayGap" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap.Parser, new[]{ "RequestedAfterSequence", "OldestAvailableSequence" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent.Parser, null, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent.Parser, null, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent.Parser, null, null, null, null, null),
@@ -23373,6 +23377,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
gatewayReceiveTimestamp_ = other.gatewayReceiveTimestamp_ != null ? other.gatewayReceiveTimestamp_.Clone() : null;
hresult_ = other.hresult_;
rawStatus_ = other.rawStatus_;
+ replayGap_ = other.replayGap_ != null ? other.replayGap_.Clone() : null;
switch (other.BodyCase) {
case BodyOneofCase.OnDataChange:
OnDataChange = other.OnDataChange.Clone();
@@ -23573,6 +23578,33 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
}
}
+ /// Field number for the "replay_gap" field.
+ public const int ReplayGapFieldNumber = 14;
+ private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap replayGap_;
+ ///
+ /// Gateway-synthesized reconnect-replay gap signal. Set ONLY on the single
+ /// sentinel MxEvent the gateway emits at the head of a StreamEvents stream
+ /// that was resumed via StreamEventsRequest.after_worker_sequence when the
+ /// requested sequence is older than the oldest event still retained in the
+ /// session replay ring (i.e. events were evicted and cannot be replayed).
+ /// On that sentinel, `family` is UNSPECIFIED, the `body` oneof is unset, and
+ /// no per-item fields (server_handle/item_handle/value/...) are populated;
+ /// clients MUST treat a present `replay_gap` as "you missed events — discard
+ /// local state and re-snapshot" and read `requested_after_sequence` /
+ /// `oldest_available_sequence` from it. Unset on every normal MXAccess event.
+ /// Additive (proto3): existing clients that ignore this field continue to
+ /// deserialize the stream unchanged. (Reconnect/replay logic is Task 12; this
+ /// is the contract surface only.)
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap ReplayGap {
+ get { return replayGap_; }
+ set {
+ replayGap_ = value;
+ }
+ }
+
/// Field number for the "on_data_change" field.
public const int OnDataChangeFieldNumber = 20;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -23698,6 +23730,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
if (!object.Equals(GatewayReceiveTimestamp, other.GatewayReceiveTimestamp)) return false;
if (Hresult != other.Hresult) return false;
if (RawStatus != other.RawStatus) return false;
+ if (!object.Equals(ReplayGap, other.ReplayGap)) return false;
if (!object.Equals(OnDataChange, other.OnDataChange)) return false;
if (!object.Equals(OnWriteComplete, other.OnWriteComplete)) return false;
if (!object.Equals(OperationComplete, other.OperationComplete)) return false;
@@ -23725,6 +23758,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
if (gatewayReceiveTimestamp_ != null) hash ^= GatewayReceiveTimestamp.GetHashCode();
if (HasHresult) hash ^= Hresult.GetHashCode();
if (RawStatus.Length != 0) hash ^= RawStatus.GetHashCode();
+ if (replayGap_ != null) hash ^= ReplayGap.GetHashCode();
if (bodyCase_ == BodyOneofCase.OnDataChange) hash ^= OnDataChange.GetHashCode();
if (bodyCase_ == BodyOneofCase.OnWriteComplete) hash ^= OnWriteComplete.GetHashCode();
if (bodyCase_ == BodyOneofCase.OperationComplete) hash ^= OperationComplete.GetHashCode();
@@ -23799,6 +23833,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
output.WriteRawTag(106);
output.WriteString(RawStatus);
}
+ if (replayGap_ != null) {
+ output.WriteRawTag(114);
+ output.WriteMessage(ReplayGap);
+ }
if (bodyCase_ == BodyOneofCase.OnDataChange) {
output.WriteRawTag(162, 1);
output.WriteMessage(OnDataChange);
@@ -23882,6 +23920,10 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
output.WriteRawTag(106);
output.WriteString(RawStatus);
}
+ if (replayGap_ != null) {
+ output.WriteRawTag(114);
+ output.WriteMessage(ReplayGap);
+ }
if (bodyCase_ == BodyOneofCase.OnDataChange) {
output.WriteRawTag(162, 1);
output.WriteMessage(OnDataChange);
@@ -23953,6 +23995,9 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
if (RawStatus.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(RawStatus);
}
+ if (replayGap_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(ReplayGap);
+ }
if (bodyCase_ == BodyOneofCase.OnDataChange) {
size += 2 + pb::CodedOutputStream.ComputeMessageSize(OnDataChange);
}
@@ -24032,6 +24077,12 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
if (other.RawStatus.Length != 0) {
RawStatus = other.RawStatus;
}
+ if (other.replayGap_ != null) {
+ if (replayGap_ == null) {
+ ReplayGap = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap();
+ }
+ ReplayGap.MergeFrom(other.ReplayGap);
+ }
switch (other.BodyCase) {
case BodyOneofCase.OnDataChange:
if (OnDataChange == null) {
@@ -24154,6 +24205,13 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
RawStatus = input.ReadString();
break;
}
+ case 114: {
+ if (replayGap_ == null) {
+ ReplayGap = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap();
+ }
+ input.ReadMessage(ReplayGap);
+ break;
+ }
case 162: {
global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent();
if (bodyCase_ == BodyOneofCase.OnDataChange) {
@@ -24291,6 +24349,13 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
RawStatus = input.ReadString();
break;
}
+ case 114: {
+ if (replayGap_ == null) {
+ ReplayGap = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap();
+ }
+ input.ReadMessage(ReplayGap);
+ break;
+ }
case 162: {
global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent();
if (bodyCase_ == BodyOneofCase.OnDataChange) {
@@ -24352,6 +24417,258 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
}
+ ///
+ /// Reconnect-replay gap signal carried by a sentinel MxEvent (MxEvent.replay_gap)
+ /// when a client resumes StreamEvents via after_worker_sequence but the requested
+ /// sequence predates the oldest event still held in the session replay ring.
+ /// The events in the open interval (requested_after_sequence, oldest_available_sequence)
+ /// were evicted from the ring and cannot be replayed, so the client must
+ /// re-snapshot rather than assume a contiguous event history.
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class ReplayGap : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ReplayGap());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ReplayGap() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ReplayGap(ReplayGap other) : this() {
+ requestedAfterSequence_ = other.requestedAfterSequence_;
+ oldestAvailableSequence_ = other.oldestAvailableSequence_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ReplayGap Clone() {
+ return new ReplayGap(this);
+ }
+
+ /// Field number for the "requested_after_sequence" field.
+ public const int RequestedAfterSequenceFieldNumber = 1;
+ private ulong requestedAfterSequence_;
+ ///
+ /// The worker_sequence the client asked to resume after
+ /// (StreamEventsRequest.after_worker_sequence).
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ulong RequestedAfterSequence {
+ get { return requestedAfterSequence_; }
+ set {
+ requestedAfterSequence_ = value;
+ }
+ }
+
+ /// Field number for the "oldest_available_sequence" field.
+ public const int OldestAvailableSequenceFieldNumber = 2;
+ private ulong oldestAvailableSequence_;
+ ///
+ /// The oldest worker_sequence still retained in the replay ring. Events with
+ /// worker_sequence in (requested_after_sequence, oldest_available_sequence)
+ /// were evicted and are unrecoverable.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ulong OldestAvailableSequence {
+ get { return oldestAvailableSequence_; }
+ set {
+ oldestAvailableSequence_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as ReplayGap);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(ReplayGap other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestedAfterSequence != other.RequestedAfterSequence) return false;
+ if (OldestAvailableSequence != other.OldestAvailableSequence) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestedAfterSequence != 0UL) hash ^= RequestedAfterSequence.GetHashCode();
+ if (OldestAvailableSequence != 0UL) hash ^= OldestAvailableSequence.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestedAfterSequence != 0UL) {
+ output.WriteRawTag(8);
+ output.WriteUInt64(RequestedAfterSequence);
+ }
+ if (OldestAvailableSequence != 0UL) {
+ output.WriteRawTag(16);
+ output.WriteUInt64(OldestAvailableSequence);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestedAfterSequence != 0UL) {
+ output.WriteRawTag(8);
+ output.WriteUInt64(RequestedAfterSequence);
+ }
+ if (OldestAvailableSequence != 0UL) {
+ output.WriteRawTag(16);
+ output.WriteUInt64(OldestAvailableSequence);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestedAfterSequence != 0UL) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestedAfterSequence);
+ }
+ if (OldestAvailableSequence != 0UL) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt64Size(OldestAvailableSequence);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(ReplayGap other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestedAfterSequence != 0UL) {
+ RequestedAfterSequence = other.RequestedAfterSequence;
+ }
+ if (other.OldestAvailableSequence != 0UL) {
+ OldestAvailableSequence = other.OldestAvailableSequence;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 8: {
+ RequestedAfterSequence = input.ReadUInt64();
+ break;
+ }
+ case 16: {
+ OldestAvailableSequence = input.ReadUInt64();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 8: {
+ RequestedAfterSequence = input.ReadUInt64();
+ break;
+ }
+ case 16: {
+ OldestAvailableSequence = input.ReadUInt64();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
[global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
public sealed partial class OnDataChangeEvent : pb::IMessage
#if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
@@ -24367,7 +24684,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -24528,7 +24845,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -24689,7 +25006,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -24850,7 +25167,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -25183,7 +25500,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[79]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -25995,7 +26312,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[79]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[80]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -26320,7 +26637,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[80]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[81]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -27095,7 +27412,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[81]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[82]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -27415,7 +27732,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[82]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[83]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -27813,7 +28130,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[83]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[84]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -28057,7 +28374,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[84]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[85]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -28472,7 +28789,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[85]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[86]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -28796,7 +29113,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[86]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[87]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -29227,7 +29544,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[87]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[88]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -30084,7 +30401,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[88]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[89]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -30872,7 +31189,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[89]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[90]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31061,7 +31378,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[90]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[91]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31250,7 +31567,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[91]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[92]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31439,7 +31756,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[92]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[93]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31628,7 +31945,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[93]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[94]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -31817,7 +32134,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[94]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[95]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32004,7 +32321,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[95]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[96]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32191,7 +32508,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[96]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[97]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -32378,7 +32695,7 @@ namespace ZB.MOM.WW.MxGateway.Contracts.Proto {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pbr::MessageDescriptor Descriptor {
- get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[97]; }
+ get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[98]; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
diff --git a/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto b/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto
index 5ace9b5..a56fb3c 100644
--- a/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto
+++ b/src/ZB.MOM.WW.MxGateway.Contracts/Protos/mxaccess_gateway.proto
@@ -715,6 +715,20 @@ message MxEvent {
google.protobuf.Timestamp gateway_receive_timestamp = 11;
optional int32 hresult = 12;
string raw_status = 13;
+ // Gateway-synthesized reconnect-replay gap signal. Set ONLY on the single
+ // sentinel MxEvent the gateway emits at the head of a StreamEvents stream
+ // that was resumed via StreamEventsRequest.after_worker_sequence when the
+ // requested sequence is older than the oldest event still retained in the
+ // session replay ring (i.e. events were evicted and cannot be replayed).
+ // On that sentinel, `family` is UNSPECIFIED, the `body` oneof is unset, and
+ // no per-item fields (server_handle/item_handle/value/...) are populated;
+ // clients MUST treat a present `replay_gap` as "you missed events — discard
+ // local state and re-snapshot" and read `requested_after_sequence` /
+ // `oldest_available_sequence` from it. Unset on every normal MXAccess event.
+ // Additive (proto3): existing clients that ignore this field continue to
+ // deserialize the stream unchanged. (Reconnect/replay logic is Task 12; this
+ // is the contract surface only.)
+ optional ReplayGap replay_gap = 14;
oneof body {
OnDataChangeEvent on_data_change = 20;
@@ -726,6 +740,22 @@ message MxEvent {
}
}
+// Reconnect-replay gap signal carried by a sentinel MxEvent (MxEvent.replay_gap)
+// when a client resumes StreamEvents via after_worker_sequence but the requested
+// sequence predates the oldest event still held in the session replay ring.
+// The events in the open interval (requested_after_sequence, oldest_available_sequence)
+// were evicted from the ring and cannot be replayed, so the client must
+// re-snapshot rather than assume a contiguous event history.
+message ReplayGap {
+ // The worker_sequence the client asked to resume after
+ // (StreamEventsRequest.after_worker_sequence).
+ uint64 requested_after_sequence = 1;
+ // The oldest worker_sequence still retained in the replay ring. Events with
+ // worker_sequence in (requested_after_sequence, oldest_available_sequence)
+ // were evicted and are unrecoverable.
+ uint64 oldest_available_sequence = 2;
+}
+
enum MxEventFamily {
MX_EVENT_FAMILY_UNSPECIFIED = 0;
MX_EVENT_FAMILY_ON_DATA_CHANGE = 1;