{
  "protocol": "OTP/1",
  "version": 1,
  "note": "Generated by `cargo run -p otproto --features serde --example gen_vectors`. Do not edit by hand.",
  "header_len": 21,
  "tag_len": 16,
  "max_datagram": 1200,
  "max_points": 40,
  "token_id": 81985529216486895,
  "token_key_hex": "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
  "k_up_hex": "52c8535360382dd1d2b9d4b5d605f7c46f8a69fd4b5d62dfd900ca10b8ac6196",
  "k_down_hex": "94171a6d07e341d8333b7c0dd809b789b378887cf4890ff1f5520c992d7637bf",
  "revocation_master_hex": "e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff",
  "k_rev_hex": "a2c99bfa84c749a08c3c3b37d18ead4b4d296c608fe168d73b89d24607c60626",
  "points": [
    {
      "name": "all_unknown",
      "point": {
        "ts": 1785000042,
        "lat_e7": 525200080,
        "lon_e7": 134050000,
        "acc_dm": null,
        "alt_m": null,
        "spd_cms": null,
        "brg_cdeg": null,
        "bat_pct": null,
        "flags": 0
      },
      "bytes_hex": "6a64f06a1f4dead007fd70d0ffff8000ffffffffff000000"
    },
    {
      "name": "fully_populated",
      "point": {
        "ts": 1785000042,
        "lat_e7": 525200080,
        "lon_e7": 134050000,
        "acc_dm": 80,
        "alt_m": 34,
        "spd_cms": 450,
        "brg_cdeg": 21400,
        "bat_pct": 76,
        "flags": 2
      },
      "bytes_hex": "6a64f06a1f4dead007fd70d00050002201c253984c020000"
    },
    {
      "name": "southern_western_hemisphere",
      "point": {
        "ts": 1785000042,
        "lat_e7": -338688000,
        "lon_e7": -1754500000,
        "acc_dm": 1200,
        "alt_m": -31,
        "spd_cms": 0,
        "brg_cdeg": 0,
        "bat_pct": 0,
        "flags": 5
      },
      "bytes_hex": "6a64f06aebd00800976c746004b0ffe10000000000050000"
    },
    {
      "name": "extremes",
      "point": {
        "ts": 4294967295,
        "lat_e7": 900000000,
        "lon_e7": -1800000000,
        "acc_dm": 65534,
        "alt_m": -32767,
        "spd_cms": 65534,
        "brg_cdeg": 35999,
        "bat_pct": 100,
        "flags": 15
      },
      "bytes_hex": "ffffffff35a4e90094b62e00fffe8001fffe8c9f640f0000"
    },
    {
      "name": "epoch_zero",
      "point": {
        "ts": 0,
        "lat_e7": 0,
        "lon_e7": 0,
        "acc_dm": null,
        "alt_m": null,
        "spd_cms": null,
        "brg_cdeg": null,
        "bat_pct": null,
        "flags": 0
      },
      "bytes_hex": "000000000000000000000000ffff8000ffffffffff000000"
    }
  ],
  "datagrams": [
    {
      "name": "loc_single",
      "direction": "up",
      "key": "up",
      "msg_type": 1,
      "nonce_hex": "000102030405060708090a0b",
      "header_hex": "110123456789abcdef000102030405060708090a0b",
      "payload_hex": "016a64f06a1f4dead007fd70d00050002201c253984c020000",
      "datagram_hex": "110123456789abcdef000102030405060708090a0bee7fe4db683bd4169d85b517d4e14fceed13336f3437fe90f2c162c7b9a8073cfefc686999c6fa2a83",
      "datagram_len": 62,
      "message": {
        "type": "loc",
        "value": [
          {
            "ts": 1785000042,
            "lat_e7": 525200080,
            "lon_e7": 134050000,
            "acc_dm": 80,
            "alt_m": 34,
            "spd_cms": 450,
            "brg_cdeg": 21400,
            "bat_pct": 76,
            "flags": 2
          }
        ]
      }
    },
    {
      "name": "loc_three_independent",
      "direction": "up",
      "key": "up",
      "msg_type": 1,
      "nonce_hex": "101112131415161718191a1b",
      "header_hex": "110123456789abcdef101112131415161718191a1b",
      "payload_hex": "036a64eff21f4dead007fd70d0ffff8000ffffffffff0000006a64f06a1f4dead007fd70d00050002201c253984c0200006a64f0a61f4dee6807fd74b809c48000ffffffffff060000",
      "datagram_hex": "110123456789abcdef101112131415161718191a1bfcba28492d9b93538f030a25fd0c73922802d86dc08bf593234b35d4b339dfe4e584a79e3ad1910312bdb162639b74536eb61bd445ef23a2fa4cb632d5a6177ae14ecdf7f180111dba2ffaae94033ee3895341dd5df5c9929f",
      "datagram_len": 110,
      "message": {
        "type": "loc",
        "value": [
          {
            "ts": 1784999922,
            "lat_e7": 525200080,
            "lon_e7": 134050000,
            "acc_dm": null,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": null,
            "flags": 0
          },
          {
            "ts": 1785000042,
            "lat_e7": 525200080,
            "lon_e7": 134050000,
            "acc_dm": 80,
            "alt_m": 34,
            "spd_cms": 450,
            "brg_cdeg": 21400,
            "bat_pct": 76,
            "flags": 2
          },
          {
            "ts": 1785000102,
            "lat_e7": 525201000,
            "lon_e7": 134051000,
            "acc_dm": 2500,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": null,
            "flags": 6
          }
        ]
      }
    },
    {
      "name": "loc_max_points",
      "direction": "up",
      "key": "up",
      "msg_type": 1,
      "nonce_hex": "202122232425262728292a2b",
      "header_hex": "110123456789abcdef202122232425262728292a2b",
      "payload_hex": "286a64f06a1f4dead007fd70d000328000ffffffff640000006a64f0881f4deb3407fd70d000338000ffffffff630000006a64f0a61f4deb9807fd70d000348000ffffffff620000006a64f0c41f4debfc07fd70d000358000ffffffff610000006a64f0e21f4dec6007fd70d000368000ffffffff600000006a64f1001f4decc407fd70d000378000ffffffff5f0000006a64f11e1f4ded2807fd70d000388000ffffffff5e0000006a64f13c1f4ded8c07fd70d000398000ffffffff5d0000006a64f15a1f4dedf007fd70d0003a8000ffffffff5c0000006a64f1781f4dee5407fd70d0003b8000ffffffff5b0000006a64f1961f4deeb807fd70d0003c8000ffffffff5a0000006a64f1b41f4def1c07fd70d0003d8000ffffffff590000006a64f1d21f4def8007fd70d0003e8000ffffffff580000006a64f1f01f4defe407fd70d0003f8000ffffffff570000006a64f20e1f4df04807fd70d000408000ffffffff560000006a64f22c1f4df0ac07fd70d000418000ffffffff550000006a64f24a1f4df11007fd70d000428000ffffffff540000006a64f2681f4df17407fd70d000438000ffffffff530000006a64f2861f4df1d807fd70d000448000ffffffff520000006a64f2a41f4df23c07fd70d000458000ffffffff510000006a64f2c21f4df2a007fd70d000468000ffffffff500000006a64f2e01f4df30407fd70d000478000ffffffff4f0000006a64f2fe1f4df36807fd70d000488000ffffffff4e0000006a64f31c1f4df3cc07fd70d000498000ffffffff4d0000006a64f33a1f4df43007fd70d0004a8000ffffffff4c0000006a64f3581f4df49407fd70d0004b8000ffffffff4b0000006a64f3761f4df4f807fd70d0004c8000ffffffff4a0000006a64f3941f4df55c07fd70d0004d8000ffffffff490000006a64f3b21f4df5c007fd70d0004e8000ffffffff480000006a64f3d01f4df62407fd70d0004f8000ffffffff470000006a64f3ee1f4df68807fd70d000508000ffffffff460000006a64f40c1f4df6ec07fd70d000518000ffffffff450000006a64f42a1f4df75007fd70d000528000ffffffff440000006a64f4481f4df7b407fd70d000538000ffffffff430000006a64f4661f4df81807fd70d000548000ffffffff420000006a64f4841f4df87c07fd70d000558000ffffffff410000006a64f4a21f4df8e007fd70d000568000ffffffff400000006a64f4c01f4df94407fd70d000578000ffffffff3f0000006a64f4de1f4df9a807fd70d000588000ffffffff3e0000006a64f4fc1f4dfa0c07fd70d000598000ffffffff3d000000",
      "datagram_hex": "110123456789abcdef202122232425262728292a2bd24428a6fed55b93ae0980e4d45792c41f88e7a5461ab511264a62c55b228627a9c37b15946c830fda93d831337a3836a649adfd1307c8fa78c5800cad4625d0d1a655d2b4622a26b8f171f3411d2df39bea83f5f2d526020e35c0e488a99c5e9c4d052ef96289e9026ca5125583674e317e7ff2ee772f1d9972f3491fb5f9ed20c092007df1c1dcd186363a62d7524f6db4681689f0342e808c1cfa9faf872cb728f9f81c5a61e7a58e4c6223122cd8ce6ad2736c770c40b94a74d19327cb19e321f79fc0dc44da2c0815f756e3cc8a97e824d73f89998a4b6a4633e7c070dfe376d7cfce841dea72af42dbe7f82ada86f0c3021e089ec8795479958e85f5dce0da62bb80752a695f7bfc21d785687e7a13c291d0389c3908d855147a66a071a93e3ea153d44a502c4e128596018cd66bb1d0ae21c2470ebbe0f332c0e36f2575120eb2977d0573ea4bb9cbbd65d4037c18a7d48e55d17581226d8cc34d1459e949155c4c12049aaef715b4de6eb3fe7e8e4edee989553eb873f41e4552b5bf6c24e21866db788a53e18365e49d1fbac65f177c4e2a393fb285f4a06a4c6f0401c71bb85ac025abcdff0a821a3c30f84b76c60b98aea6dc7a9d36829000e5da251cfd6cfc7db36a731f899d0f4215e15a05edb20ae6f60ff7e1bd71a1e424d1855014f5c1b04fc76ad32d1a2c73beb83b4ffb5d88cb4ff8b2486d259558b63131a03a48a51b857124a092419f10fe55ea33648cb08ae0835905007d6048572e48aefa73f7687ae2a9937b754a0924fa83cb2697f14d965de7d80858f0cea02a4b173014000f1683c44309e9303528562c67b367f93f9c9c248704879d606e1dc3a316378da5ca24990e558aa88f52e63da38f7a05e2d7499fc2b412fef499097c3b46f039c98b820673a0e6d9c693a240e4cbac2e590cf5624a6bed7de98ce5dcc47e7d58373335216d050ad73e78b1748057dd568453b25772558f2a9665e2bbace08db2f41541373ee3a6f0ffc181d297cee39bf25ccb36e065fec5cbb9ba61fcbd5883c3f94a52e9eda0c761d1b6d2e2469ff25a741533e288e414448e51ff06f89ce466c1e69136cbfc6ec97a0ffb986d57a087703966a46d97f3ed9948f938b647a5b6f51bb843f6a5aad4261144bbe97bc90c1801a09aafe0746ff5d4d4eaab6ff8589cd08de39bcbfcf2d3badbde4eed2b67732b0ce850c7c8fe1047c60343fa4920a6b41ffee2d3489cd851b9ce729aa682613bcc033bcdf3d2c50e92405b44b3ff366fba7f99d60637642d5f8bd8ca62d2bcd1c4ec5b883b03af4159eefe3617e718f32aaf85cdae7bd412c8813c800bf89293567cde482102bf8b1fedd41b1f1517425d90a2b0f784ba301d",
      "datagram_len": 998,
      "message": {
        "type": "loc",
        "value": [
          {
            "ts": 1785000042,
            "lat_e7": 525200080,
            "lon_e7": 134050000,
            "acc_dm": 50,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 100,
            "flags": 0
          },
          {
            "ts": 1785000072,
            "lat_e7": 525200180,
            "lon_e7": 134050000,
            "acc_dm": 51,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 99,
            "flags": 0
          },
          {
            "ts": 1785000102,
            "lat_e7": 525200280,
            "lon_e7": 134050000,
            "acc_dm": 52,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 98,
            "flags": 0
          },
          {
            "ts": 1785000132,
            "lat_e7": 525200380,
            "lon_e7": 134050000,
            "acc_dm": 53,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 97,
            "flags": 0
          },
          {
            "ts": 1785000162,
            "lat_e7": 525200480,
            "lon_e7": 134050000,
            "acc_dm": 54,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 96,
            "flags": 0
          },
          {
            "ts": 1785000192,
            "lat_e7": 525200580,
            "lon_e7": 134050000,
            "acc_dm": 55,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 95,
            "flags": 0
          },
          {
            "ts": 1785000222,
            "lat_e7": 525200680,
            "lon_e7": 134050000,
            "acc_dm": 56,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 94,
            "flags": 0
          },
          {
            "ts": 1785000252,
            "lat_e7": 525200780,
            "lon_e7": 134050000,
            "acc_dm": 57,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 93,
            "flags": 0
          },
          {
            "ts": 1785000282,
            "lat_e7": 525200880,
            "lon_e7": 134050000,
            "acc_dm": 58,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 92,
            "flags": 0
          },
          {
            "ts": 1785000312,
            "lat_e7": 525200980,
            "lon_e7": 134050000,
            "acc_dm": 59,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 91,
            "flags": 0
          },
          {
            "ts": 1785000342,
            "lat_e7": 525201080,
            "lon_e7": 134050000,
            "acc_dm": 60,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 90,
            "flags": 0
          },
          {
            "ts": 1785000372,
            "lat_e7": 525201180,
            "lon_e7": 134050000,
            "acc_dm": 61,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 89,
            "flags": 0
          },
          {
            "ts": 1785000402,
            "lat_e7": 525201280,
            "lon_e7": 134050000,
            "acc_dm": 62,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 88,
            "flags": 0
          },
          {
            "ts": 1785000432,
            "lat_e7": 525201380,
            "lon_e7": 134050000,
            "acc_dm": 63,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 87,
            "flags": 0
          },
          {
            "ts": 1785000462,
            "lat_e7": 525201480,
            "lon_e7": 134050000,
            "acc_dm": 64,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 86,
            "flags": 0
          },
          {
            "ts": 1785000492,
            "lat_e7": 525201580,
            "lon_e7": 134050000,
            "acc_dm": 65,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 85,
            "flags": 0
          },
          {
            "ts": 1785000522,
            "lat_e7": 525201680,
            "lon_e7": 134050000,
            "acc_dm": 66,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 84,
            "flags": 0
          },
          {
            "ts": 1785000552,
            "lat_e7": 525201780,
            "lon_e7": 134050000,
            "acc_dm": 67,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 83,
            "flags": 0
          },
          {
            "ts": 1785000582,
            "lat_e7": 525201880,
            "lon_e7": 134050000,
            "acc_dm": 68,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 82,
            "flags": 0
          },
          {
            "ts": 1785000612,
            "lat_e7": 525201980,
            "lon_e7": 134050000,
            "acc_dm": 69,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 81,
            "flags": 0
          },
          {
            "ts": 1785000642,
            "lat_e7": 525202080,
            "lon_e7": 134050000,
            "acc_dm": 70,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 80,
            "flags": 0
          },
          {
            "ts": 1785000672,
            "lat_e7": 525202180,
            "lon_e7": 134050000,
            "acc_dm": 71,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 79,
            "flags": 0
          },
          {
            "ts": 1785000702,
            "lat_e7": 525202280,
            "lon_e7": 134050000,
            "acc_dm": 72,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 78,
            "flags": 0
          },
          {
            "ts": 1785000732,
            "lat_e7": 525202380,
            "lon_e7": 134050000,
            "acc_dm": 73,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 77,
            "flags": 0
          },
          {
            "ts": 1785000762,
            "lat_e7": 525202480,
            "lon_e7": 134050000,
            "acc_dm": 74,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 76,
            "flags": 0
          },
          {
            "ts": 1785000792,
            "lat_e7": 525202580,
            "lon_e7": 134050000,
            "acc_dm": 75,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 75,
            "flags": 0
          },
          {
            "ts": 1785000822,
            "lat_e7": 525202680,
            "lon_e7": 134050000,
            "acc_dm": 76,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 74,
            "flags": 0
          },
          {
            "ts": 1785000852,
            "lat_e7": 525202780,
            "lon_e7": 134050000,
            "acc_dm": 77,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 73,
            "flags": 0
          },
          {
            "ts": 1785000882,
            "lat_e7": 525202880,
            "lon_e7": 134050000,
            "acc_dm": 78,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 72,
            "flags": 0
          },
          {
            "ts": 1785000912,
            "lat_e7": 525202980,
            "lon_e7": 134050000,
            "acc_dm": 79,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 71,
            "flags": 0
          },
          {
            "ts": 1785000942,
            "lat_e7": 525203080,
            "lon_e7": 134050000,
            "acc_dm": 80,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 70,
            "flags": 0
          },
          {
            "ts": 1785000972,
            "lat_e7": 525203180,
            "lon_e7": 134050000,
            "acc_dm": 81,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 69,
            "flags": 0
          },
          {
            "ts": 1785001002,
            "lat_e7": 525203280,
            "lon_e7": 134050000,
            "acc_dm": 82,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 68,
            "flags": 0
          },
          {
            "ts": 1785001032,
            "lat_e7": 525203380,
            "lon_e7": 134050000,
            "acc_dm": 83,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 67,
            "flags": 0
          },
          {
            "ts": 1785001062,
            "lat_e7": 525203480,
            "lon_e7": 134050000,
            "acc_dm": 84,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 66,
            "flags": 0
          },
          {
            "ts": 1785001092,
            "lat_e7": 525203580,
            "lon_e7": 134050000,
            "acc_dm": 85,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 65,
            "flags": 0
          },
          {
            "ts": 1785001122,
            "lat_e7": 525203680,
            "lon_e7": 134050000,
            "acc_dm": 86,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 64,
            "flags": 0
          },
          {
            "ts": 1785001152,
            "lat_e7": 525203780,
            "lon_e7": 134050000,
            "acc_dm": 87,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 63,
            "flags": 0
          },
          {
            "ts": 1785001182,
            "lat_e7": 525203880,
            "lon_e7": 134050000,
            "acc_dm": 88,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 62,
            "flags": 0
          },
          {
            "ts": 1785001212,
            "lat_e7": 525203980,
            "lon_e7": 134050000,
            "acc_dm": 89,
            "alt_m": null,
            "spd_cms": null,
            "brg_cdeg": null,
            "bat_pct": 61,
            "flags": 0
          }
        ]
      }
    },
    {
      "name": "ack_single",
      "direction": "down",
      "key": "down",
      "msg_type": 2,
      "nonce_hex": "303132333435363738393a3b",
      "header_hex": "120123456789abcdef303132333435363738393a3b",
      "payload_hex": "01000102030405060708090a0b00",
      "datagram_hex": "120123456789abcdef303132333435363738393a3b64c8a72ba8ab580a637fc66a7efeefd375f778c6db7ebcf42696f1bab284",
      "datagram_len": 51,
      "message": {
        "type": "ack",
        "value": {
          "nonces": [
            [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11
            ]
          ],
          "flags": 0
        }
      }
    },
    {
      "name": "ack_config_pending",
      "direction": "down",
      "key": "down",
      "msg_type": 2,
      "nonce_hex": "404142434445464748494a4b",
      "header_hex": "120123456789abcdef404142434445464748494a4b",
      "payload_hex": "02101112131415161718191a1b202122232425262728292a2b01",
      "datagram_hex": "120123456789abcdef404142434445464748494a4b55ed5ad3b9272addf354b0ac530973a513f3804962d432e6937beba6da315c481aa13a8efef07f201775",
      "datagram_len": 63,
      "message": {
        "type": "ack",
        "value": {
          "nonces": [
            [
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27
            ],
            [
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43
            ]
          ],
          "flags": 1
        }
      }
    },
    {
      "name": "ack_max_throttle",
      "direction": "down",
      "key": "down",
      "msg_type": 2,
      "nonce_hex": "505152535455565758595a5b",
      "header_hex": "120123456789abcdef505152535455565758595a5b",
      "payload_hex": "28000102030405060708090a0b101112131415161718191a1b202122232425262728292a2b303132333435363738393a3b404142434445464748494a4b505152535455565758595a5b606162636465666768696a6b707172737475767778797a7b808182838485868788898a8b909192939495969798999a9ba0a1a2a3a4a5a6a7a8a9aaabb0b1b2b3b4b5b6b7b8b9babbc0c1c2c3c4c5c6c7c8c9cacbd0d1d2d3d4d5d6d7d8d9dadbe0e1e2e3e4e5e6e7e8e9eaebf0f1f2f3f4f5f6f7f8f9fafb000102030405060708090a0b101112131415161718191a1b202122232425262728292a2b303132333435363738393a3b404142434445464748494a4b505152535455565758595a5b606162636465666768696a6b707172737475767778797a7b808182838485868788898a8b909192939495969798999a9ba0a1a2a3a4a5a6a7a8a9aaabb0b1b2b3b4b5b6b7b8b9babbc0c1c2c3c4c5c6c7c8c9cacbd0d1d2d3d4d5d6d7d8d9dadbe0e1e2e3e4e5e6e7e8e9eaebf0f1f2f3f4f5f6f7f8f9fafb000102030405060708090a0b101112131415161718191a1b202122232425262728292a2b303132333435363738393a3b404142434445464748494a4b505152535455565758595a5b606162636465666768696a6b707172737475767778797a7b01",
      "datagram_hex": "120123456789abcdef505152535455565758595a5b046202da952cecd25faf23b82c58e1275cf883d0d2949d1c457dfd620ab46281d93e21ce7fb5dda4dfb24fa9eb7ae4ece8d81ef9b7d2bd2fe32a089bf98149b627c3c2a44e82a4717af026a3d369f0df612dbf65b391ebac81f2773f2c5204ca2eee5f68ec9719b0011cad9f4ad022318f9a6a804f11befc046382e56778cca51cd26b6e233b9c384cd8bb7702bd889665c02257cbe49a75225db87122056ca186ec5fd79f7face5e088696daa15b7e3f310d820b3f4281a3202374b13873291a71563dc5538fd583d8a96f0fe64184fc344fddd843f3cd000afb0493679464b9910955159f4a86a10f8b4240378eb80780052bcf608be178f290f49d45f0a14b190cbfa9625ed0a8f5fd50dca61e43c3fb5f200146a88eb92e1adefe7e7a484a8810bd79079ea4a18d93b7376ad0e09fdeb6b179c78219a28c0c6bbb7b2997e549c8428d80d85ff8eb336dbf22e1ca800d9870fbe5525d26e327166c39b40b1a5c836514ca2bab96c0f405813c2ab007b8ec4773881144aab916b92cc0c1cb4417a51ccf08c4750798f329a1ed0aa206ce518d5cafd89c5a7dd0244bdc5da988c7f2ec603267d636534782c102bd2fc444620e19ab9288354eb9b3b3d4d9aac1378310bcb9f1f5bbb9e94aa54c5e42aa215a578fc3fc07707f18a4f6c4205fb45bce83200a9c684379944bd87ab70c9f28a",
      "datagram_len": 519,
      "message": {
        "type": "ack",
        "value": {
          "nonces": [
            [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11
            ],
            [
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27
            ],
            [
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43
            ],
            [
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59
            ],
            [
              64,
              65,
              66,
              67,
              68,
              69,
              70,
              71,
              72,
              73,
              74,
              75
            ],
            [
              80,
              81,
              82,
              83,
              84,
              85,
              86,
              87,
              88,
              89,
              90,
              91
            ],
            [
              96,
              97,
              98,
              99,
              100,
              101,
              102,
              103,
              104,
              105,
              106,
              107
            ],
            [
              112,
              113,
              114,
              115,
              116,
              117,
              118,
              119,
              120,
              121,
              122,
              123
            ],
            [
              128,
              129,
              130,
              131,
              132,
              133,
              134,
              135,
              136,
              137,
              138,
              139
            ],
            [
              144,
              145,
              146,
              147,
              148,
              149,
              150,
              151,
              152,
              153,
              154,
              155
            ],
            [
              160,
              161,
              162,
              163,
              164,
              165,
              166,
              167,
              168,
              169,
              170,
              171
            ],
            [
              176,
              177,
              178,
              179,
              180,
              181,
              182,
              183,
              184,
              185,
              186,
              187
            ],
            [
              192,
              193,
              194,
              195,
              196,
              197,
              198,
              199,
              200,
              201,
              202,
              203
            ],
            [
              208,
              209,
              210,
              211,
              212,
              213,
              214,
              215,
              216,
              217,
              218,
              219
            ],
            [
              224,
              225,
              226,
              227,
              228,
              229,
              230,
              231,
              232,
              233,
              234,
              235
            ],
            [
              240,
              241,
              242,
              243,
              244,
              245,
              246,
              247,
              248,
              249,
              250,
              251
            ],
            [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11
            ],
            [
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27
            ],
            [
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43
            ],
            [
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59
            ],
            [
              64,
              65,
              66,
              67,
              68,
              69,
              70,
              71,
              72,
              73,
              74,
              75
            ],
            [
              80,
              81,
              82,
              83,
              84,
              85,
              86,
              87,
              88,
              89,
              90,
              91
            ],
            [
              96,
              97,
              98,
              99,
              100,
              101,
              102,
              103,
              104,
              105,
              106,
              107
            ],
            [
              112,
              113,
              114,
              115,
              116,
              117,
              118,
              119,
              120,
              121,
              122,
              123
            ],
            [
              128,
              129,
              130,
              131,
              132,
              133,
              134,
              135,
              136,
              137,
              138,
              139
            ],
            [
              144,
              145,
              146,
              147,
              148,
              149,
              150,
              151,
              152,
              153,
              154,
              155
            ],
            [
              160,
              161,
              162,
              163,
              164,
              165,
              166,
              167,
              168,
              169,
              170,
              171
            ],
            [
              176,
              177,
              178,
              179,
              180,
              181,
              182,
              183,
              184,
              185,
              186,
              187
            ],
            [
              192,
              193,
              194,
              195,
              196,
              197,
              198,
              199,
              200,
              201,
              202,
              203
            ],
            [
              208,
              209,
              210,
              211,
              212,
              213,
              214,
              215,
              216,
              217,
              218,
              219
            ],
            [
              224,
              225,
              226,
              227,
              228,
              229,
              230,
              231,
              232,
              233,
              234,
              235
            ],
            [
              240,
              241,
              242,
              243,
              244,
              245,
              246,
              247,
              248,
              249,
              250,
              251
            ],
            [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11
            ],
            [
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27
            ],
            [
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              41,
              42,
              43
            ],
            [
              48,
              49,
              50,
              51,
              52,
              53,
              54,
              55,
              56,
              57,
              58,
              59
            ],
            [
              64,
              65,
              66,
              67,
              68,
              69,
              70,
              71,
              72,
              73,
              74,
              75
            ],
            [
              80,
              81,
              82,
              83,
              84,
              85,
              86,
              87,
              88,
              89,
              90,
              91
            ],
            [
              96,
              97,
              98,
              99,
              100,
              101,
              102,
              103,
              104,
              105,
              106,
              107
            ],
            [
              112,
              113,
              114,
              115,
              116,
              117,
              118,
              119,
              120,
              121,
              122,
              123
            ]
          ],
          "flags": 1
        }
      }
    },
    {
      "name": "hello",
      "direction": "up",
      "key": "up",
      "msg_type": 4,
      "nonce_hex": "606162636465666768696a6b",
      "header_hex": "140123456789abcdef606162636465666768696a6b",
      "payload_hex": "001122010001",
      "datagram_hex": "140123456789abcdef606162636465666768696a6be793556613e45f7ecd7893ff805bbb0f636315b3742b",
      "datagram_len": 43,
      "message": {
        "type": "hello",
        "value": {
          "app_version_code": 17,
          "os_api_level": 34,
          "flags": 1,
          "config_version": 1
        }
      }
    },
    {
      "name": "config_balanced",
      "direction": "down",
      "key": "down",
      "msg_type": 5,
      "nonce_hex": "707172737475767778797a7b",
      "header_hex": "150123456789abcdef707172737475767778797a7b",
      "payload_hex": "000101010384006400142800",
      "datagram_hex": "150123456789abcdef707172737475767778797a7b92ad85802373b275dc95893e3885ace8290635fd02fbd2e60be71769",
      "datagram_len": 49,
      "message": {
        "type": "config",
        "value": {
          "config_version": 1,
          "profile": "balanced",
          "flags": 1,
          "heartbeat_s": 900,
          "interval_scale_pct": 100,
          "min_distance_m": 20,
          "max_points_per_loc": 40
        }
      }
    },
    {
      "name": "config_battery_saver_paused",
      "direction": "down",
      "key": "down",
      "msg_type": 5,
      "nonce_hex": "808182838485868788898a8b",
      "header_hex": "150123456789abcdef808182838485868788898a8b",
      "payload_hex": "00090002070800fa00641400",
      "datagram_hex": "150123456789abcdef808182838485868788898a8b274ce3908a6f175d4062e2bc70204fcbf3f08c8bab6c2bc004865402",
      "datagram_len": 49,
      "message": {
        "type": "config",
        "value": {
          "config_version": 9,
          "profile": "battery_saver",
          "flags": 2,
          "heartbeat_s": 1800,
          "interval_scale_pct": 250,
          "min_distance_m": 100,
          "max_points_per_loc": 20
        }
      }
    },
    {
      "name": "config_high_accuracy",
      "direction": "down",
      "key": "down",
      "msg_type": 5,
      "nonce_hex": "909192939495969798999a9b",
      "header_hex": "150123456789abcdef909192939495969798999a9b",
      "payload_hex": "0002020102580032000a2800",
      "datagram_hex": "150123456789abcdef909192939495969798999a9bf45dadac47c25bffd827a323e33fcd8086832232daf04e9fb3f658c4",
      "datagram_len": 49,
      "message": {
        "type": "config",
        "value": {
          "config_version": 2,
          "profile": "high_accuracy",
          "flags": 1,
          "heartbeat_s": 600,
          "interval_scale_pct": 50,
          "min_distance_m": 10,
          "max_points_per_loc": 40
        }
      }
    },
    {
      "name": "config_get",
      "direction": "up",
      "key": "up",
      "msg_type": 6,
      "nonce_hex": "a0a1a2a3a4a5a6a7a8a9aaab",
      "header_hex": "160123456789abcdefa0a1a2a3a4a5a6a7a8a9aaab",
      "payload_hex": "0001",
      "datagram_hex": "160123456789abcdefa0a1a2a3a4a5a6a7a8a9aaab1ddf4edda37226b349f0cf2f15d08f8d496b",
      "datagram_len": 39,
      "message": {
        "type": "config_get",
        "value": {
          "have_version": 1
        }
      }
    },
    {
      "name": "ping",
      "direction": "up",
      "key": "up",
      "msg_type": 7,
      "nonce_hex": "b0b1b2b3b4b5b6b7b8b9babb",
      "header_hex": "170123456789abcdefb0b1b2b3b4b5b6b7b8b9babb",
      "payload_hex": "deadbeef0007",
      "datagram_hex": "170123456789abcdefb0b1b2b3b4b5b6b7b8b9babbaaa9eb40514d112664d40269b4d168dbbd77ae9957ce",
      "datagram_len": 43,
      "message": {
        "type": "ping",
        "value": {
          "echo": 3735928559,
          "seq": 7
        }
      }
    },
    {
      "name": "pong",
      "direction": "down",
      "key": "down",
      "msg_type": 8,
      "nonce_hex": "c0c1c2c3c4c5c6c7c8c9cacb",
      "header_hex": "180123456789abcdefc0c1c2c3c4c5c6c7c8c9cacb",
      "payload_hex": "deadbeef0007",
      "datagram_hex": "180123456789abcdefc0c1c2c3c4c5c6c7c8c9cacb7d075ab6f083e35ebf55ef3b44d3430a6806381d7a4b",
      "datagram_len": 43,
      "message": {
        "type": "pong",
        "value": {
          "echo": 3735928559,
          "seq": 7
        }
      }
    },
    {
      "name": "revoked_explicit",
      "direction": "down",
      "key": "rev",
      "msg_type": 9,
      "nonce_hex": "d0d1d2d3d4d5d6d7d8d9dadb",
      "header_hex": "190123456789abcdefd0d1d2d3d4d5d6d7d8d9dadb",
      "payload_hex": "01",
      "datagram_hex": "190123456789abcdefd0d1d2d3d4d5d6d7d8d9dadb6998f929776ef06b618c34357aca9de47e",
      "datagram_len": 38,
      "message": {
        "type": "revoked",
        "value": {
          "reason": "revoked"
        }
      }
    },
    {
      "name": "revoked_expired",
      "direction": "down",
      "key": "rev",
      "msg_type": 9,
      "nonce_hex": "e0e1e2e3e4e5e6e7e8e9eaeb",
      "header_hex": "190123456789abcdefe0e1e2e3e4e5e6e7e8e9eaeb",
      "payload_hex": "02",
      "datagram_hex": "190123456789abcdefe0e1e2e3e4e5e6e7e8e9eaeb77f758cde484776dada217a72eb9be3e18",
      "datagram_len": 38,
      "message": {
        "type": "revoked",
        "value": {
          "reason": "expired"
        }
      }
    },
    {
      "name": "revoked_unknown",
      "direction": "down",
      "key": "rev",
      "msg_type": 9,
      "nonce_hex": "f0f1f2f3f4f5f6f7f8f9fafb",
      "header_hex": "190123456789abcdeff0f1f2f3f4f5f6f7f8f9fafb",
      "payload_hex": "03",
      "datagram_hex": "190123456789abcdeff0f1f2f3f4f5f6f7f8f9fafbb48f9c80666e141ad8a1d9637cf79d02a4",
      "datagram_len": 38,
      "message": {
        "type": "revoked",
        "value": {
          "reason": "unknown"
        }
      }
    },
    {
      "name": "nack_unknown_token",
      "direction": "down",
      "key": "down",
      "msg_type": 3,
      "nonce_hex": "000102030405060708090a0b",
      "header_hex": "130123456789abcdef000102030405060708090a0b",
      "payload_hex": "303132333435363738393a3b0100",
      "datagram_hex": "130123456789abcdef000102030405060708090a0b3bb067de27a9d0ff1932ef2884bdb3cf8c68509bd338566335fa9a3150ae",
      "datagram_len": 51,
      "message": {
        "type": "nack",
        "value": {
          "nonce": [
            48,
            49,
            50,
            51,
            52,
            53,
            54,
            55,
            56,
            57,
            58,
            59
          ],
          "reason": "unknown_token",
          "retry_after_s": 0
        }
      }
    },
    {
      "name": "nack_malformed",
      "direction": "down",
      "key": "down",
      "msg_type": 3,
      "nonce_hex": "101112131415161718191a1b",
      "header_hex": "130123456789abcdef101112131415161718191a1b",
      "payload_hex": "303132333435363738393a3b0200",
      "datagram_hex": "130123456789abcdef101112131415161718191a1b4183e084ad9a89fb168b345b2c86072059c685823f6d60624c17d2d2d8ba",
      "datagram_len": 51,
      "message": {
        "type": "nack",
        "value": {
          "nonce": [
            48,
            49,
            50,
            51,
            52,
            53,
            54,
            55,
            56,
            57,
            58,
            59
          ],
          "reason": "malformed",
          "retry_after_s": 0
        }
      }
    },
    {
      "name": "nack_rate_limited",
      "direction": "down",
      "key": "down",
      "msg_type": 3,
      "nonce_hex": "202122232425262728292a2b",
      "header_hex": "130123456789abcdef202122232425262728292a2b",
      "payload_hex": "303132333435363738393a3b031e",
      "datagram_hex": "130123456789abcdef202122232425262728292a2b11a89f6b98d57c79682ff412abc9a549099aef7092d8e7e3913f37cb2117",
      "datagram_len": 51,
      "message": {
        "type": "nack",
        "value": {
          "nonce": [
            48,
            49,
            50,
            51,
            52,
            53,
            54,
            55,
            56,
            57,
            58,
            59
          ],
          "reason": "rate_limited",
          "retry_after_s": 30
        }
      }
    },
    {
      "name": "nack_storage_full",
      "direction": "down",
      "key": "down",
      "msg_type": 3,
      "nonce_hex": "303132333435363738393a3b",
      "header_hex": "130123456789abcdef303132333435363738393a3b",
      "payload_hex": "303132333435363738393a3b04ff",
      "datagram_hex": "130123456789abcdef303132333435363738393a3b55f9941a9f9a6b3b5c4ef55b71012fd33f014bc0c5fc8ad0898acb6209dd",
      "datagram_len": 51,
      "message": {
        "type": "nack",
        "value": {
          "nonce": [
            48,
            49,
            50,
            51,
            52,
            53,
            54,
            55,
            56,
            57,
            58,
            59
          ],
          "reason": "storage_full",
          "retry_after_s": 255
        }
      }
    }
  ]
}
