From 715faae99ca6a280750b1c2378151dd3b2567a78 Mon Sep 17 00:00:00 2001 From: dnomadb Date: Tue, 29 Mar 2016 13:26:15 -0700 Subject: [PATCH 01/10] first go at non-async lookback --- backend.js | 12 ++++++++++++ test/testsource.js | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/backend.js b/backend.js index 42fa231..6fe4efc 100644 --- a/backend.js +++ b/backend.js @@ -35,6 +35,9 @@ function Backend(opts, callback) { backend._fillzoom = 'fillzoom' in info && !isNaN(parseInt(info.fillzoom, 10)) ? parseInt(info.fillzoom, 10) : undefined; + backend._lookback = 'lookback' in info && !isNaN(parseInt(info.lookback, 10)) ? + parseInt(info.lookback, 10) : + undefined; backend._source = source; if (callback) callback(null, backend); } @@ -72,6 +75,7 @@ Backend.prototype.getTile = function(z, x, y, callback) { var size = 0; var headers = {}; + var lookbacks = 0; // Overzooming support. if (bz > backend._maxzoom) { @@ -90,6 +94,14 @@ Backend.prototype.getTile = function(z, x, y, callback) { by = Math.floor(y / Math.pow(2, z - bz)); headers['x-vector-backend-object'] = 'fillzoom'; return source.getTile(bz, bx, by, sourceGet); + } else if (typeof backend._lookback === 'number' && + err && err.message === 'Tile does not exist' && + lookbacks <= backend._lookback) { + bz = bz - 1; + bx = Math.floor(x / Math.pow(2, z - bz)); + by = Math.floor(y / Math.pow(2, z - bz)); + headers['x-vector-backend-object'] = 'fillzoom'; + return source.getTile(bz, bx, by, sourceGet); } if (err && err.message !== 'Tile does not exist') return callback(err); diff --git a/test/testsource.js b/test/testsource.js index 1aca11e..076bcef 100644 --- a/test/testsource.js +++ b/test/testsource.js @@ -47,6 +47,12 @@ var infos = { maxzoom:1, vector_layers: [] }, + l: { + minzoom:0, + maxzoom:4, + lookback:3, + vector_layers: [] + }, 'invalid-novector': { minzoom:0, maxzoom:1 @@ -120,6 +126,11 @@ Testsource.tiles = { memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'i', basename))); return memo; }, {}), + l: fs.readdirSync(path.resolve(path.join(__dirname, 'fixtures','i'))).reduce(function(memo, basename) { + var key = basename.split('.').slice(0,3).join('.'); + memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'i', basename))); + return memo; + }, {}), gz: fs.readdirSync(path.resolve(path.join(__dirname, 'fixtures','gz'))).reduce(function(memo, basename) { var key = basename.split('.').slice(0,3).join('.'); memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'gz', basename))); From 54870169f5c153f97b440b703e94d9f36e2c29d2 Mon Sep 17 00:00:00 2001 From: dnomadb Date: Tue, 29 Mar 2016 14:36:47 -0700 Subject: [PATCH 02/10] adding tile test requests --- test/backend.js | 3 +++ test/test.js | 1 + 2 files changed, 4 insertions(+) diff --git a/test/backend.js b/test/backend.js index 53eaeeb..25a3b15 100644 --- a/test/backend.js +++ b/test/backend.js @@ -70,6 +70,7 @@ tilelive.protocols['test:'] = Testsource; c: new Backend({ source: new Testsource('b'), minzoom:0, maxzoom: 2, fillzoom: 1, scale: 2, legacy: true }), h: new Backend({ source: new Testsource('b'), minzoom:0, maxzoom: 2, fillzoom: 1, scale: 2 }), i: new Backend({ source: new Testsource('i'), minzoom:0, maxzoom: 1 }), + l: new Backend({ source: new Testsource('i'), minzoom:0, maxzoom: 4, lookback: 3}), invalid: new Backend({ source: new Testsource('invalid'), minzoom:0, maxzoom: 1 }), iv: new Backend({ source: new Testsource('i'), minzoom:0, maxzoom: 1, vector_layers: [{id:'custom_layer_name'}] }), gz: new Backend({ source: new Testsource('gz'), minzoom:0, maxzoom: 0 }), @@ -90,6 +91,8 @@ tilelive.protocols['test:'] = Testsource; h: ['0.0.0', '1.0.0', '1.0.1', '1.1.0', '1.1.1', '2.1.1', '2.1.2', '3.2.2', '3.2.3', '3.2.4'], // wraps image source with vector tiles. i: ['0.0.0', '1.0.0', '1.0.1', '1.1.0', '1.1.1', '2.0.0', '2.0.1'], + // test for multiple lookback + l: ['0.0.0', '1.0.0', '1.0.1', '1.1.0', '1.1.1', '2.0.0'], // wraps image source with vector tiles, with named vector layer. iv: ['0.0.0'], // loads gzip compressed protobuf. diff --git a/test/test.js b/test/test.js index db976b7..5909b11 100644 --- a/test/test.js +++ b/test/test.js @@ -141,6 +141,7 @@ var tests = { i: ['0.0.0', '1.0.0'], // Image sources. 'i@2x': ['0.0.0', '1.0.0'], + l: ['0.0.0', '1.0.1', '2.1.1'], // Invalid tiles that are empty invalid: ['1.1.0', '1.1.1'], From ce176de875cb7754b8b91d1919922c835806e483 Mon Sep 17 00:00:00 2001 From: dnomadb Date: Tue, 29 Mar 2016 14:41:49 -0700 Subject: [PATCH 03/10] adding test fixtures --- test/expected/backend-l.0.0.0.json | 13 +++++++++++++ test/expected/backend-l.1.0.0.json | 13 +++++++++++++ test/expected/backend-l.1.0.1.json | 13 +++++++++++++ test/expected/backend-l.1.1.0.json | 13 +++++++++++++ test/expected/backend-l.1.1.1.json | 13 +++++++++++++ test/expected/backend-l.2.0.0.json | 13 +++++++++++++ test/fixtures/l/0.0.0.jpg | Bin 0 -> 12040 bytes 7 files changed, 78 insertions(+) create mode 100644 test/expected/backend-l.0.0.0.json create mode 100644 test/expected/backend-l.1.0.0.json create mode 100644 test/expected/backend-l.1.0.1.json create mode 100644 test/expected/backend-l.1.1.0.json create mode 100644 test/expected/backend-l.1.1.1.json create mode 100644 test/expected/backend-l.2.0.0.json create mode 100644 test/fixtures/l/0.0.0.jpg diff --git a/test/expected/backend-l.0.0.0.json b/test/expected/backend-l.0.0.0.json new file mode 100644 index 0000000..b87b0f6 --- /dev/null +++ b/test/expected/backend-l.0.0.0.json @@ -0,0 +1,13 @@ +[ + { + "version": 2, + "name": "_image", + "extent": 4096, + "features": [ + { + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f99e8a6938a6eeae8b98d87d14d073413400b9a506994038a2e3b12d25341a70a7b9228a5157f46d26f358bc16ba7c0669b69723200551c9624f000f535db49f0baf8e9af7165a9595ddc428249ede2593312e0725b6edc738ce7143928eec373ce4e69369abfa8e9f73a74e22bc88c6e5770e41047a822aef85f41b9f10ea6b696cf1c4bd5e590fca83d78e4fd053d37031029cd2918afa07c1df0b34682d6f2e359b0d4f5248b9134400461bb076a86cf071c9e3f4cd0f1efc2f863d2d24d174a9a0bb91b7c4ad3a92e8464294049df8e7e983df159bab08bb363b36784487269a0558bcb596d67921b8468e58d8ab230c1523b557ce05363418a434bd69082290c052d20a5c1a601453821346c228b0ae368a795a6e2801292971450312929692900f41cd4869b1f4a5aa5b12c652af5a08a00e690c1bad369ec29a450020341a28a0005380cd20a7a2d0903154568e91691dcdd2fda9a48ed10833491aee2ab9ea077a86d6cae6e9666b682495615df21452762fa9f6af50f849a6f873539755d3353d552ce2bb80c51cb3b6c064206d047a673cfd29ca5caae24aecf57f86de13d322b4dda3dd69d6df641ba57bb51e73c4e32cb27518ca8c1edc92315d578bbc4d6034b95b46d3a2759c932cd3afcbd410a8a3ef64aa9e78e9c1cd78ff0084bc317f1f884787af754d423b337263ba82050aeca7e5562dfc43822ba7f8e1f10747f0ff0085c7847c24f0b4f8d92ca06e64078621bb371827f2ae252955568b34b726ace6b46d3a0f89be26bb7974c736ba79df3246b8695e4272e76f000207ca3dfe95de683f0f6e74db57874bb258cc92923ca88e555c6012c707803f339f4aee7e05c0b2f81f45bfb3b25b0b07b529140e77480073f316c0cee396cf7c8af4caa8a6b45a20b27b9ce5ee832ae9f77f619992eae00698055fdeb05c64f18dc4753debc5fc51a46afa65ec62e66364b33131a00184400183bcff0011279206d03a66be8cae77c6da043af695b5e3df3db9f322193f31eea7eb59d6a4a5ef257669076d0f94f55f83f73a978675af12c97cf04d02bdc0fb410639d413d2438c1206471dc7ad78532e1ebdcbf681f16ea0f709e19f39e28226f32e6147fddb375518031c7a0e9c0ed5e2328ce2bb69ddc13673bd188aa00cd2302dd29f083232a0c649c0c9c57a5693f0c27b79e5ff0084b6e86936826fb20986d709315dc858921421c1f9b3dbdc55e823cc84673cd3c28aeafe20e83a4f86bc512699a56ae357b78914c93c4a1407239504120e38e6b97a690360a32c154649e00ab5796325bcb2c6fcc917de0067ebc8e383c55bfed485459b41671c52c077964032cfc61b38e800fbbebcf3935735bf14dd5fc734102ac104c5bcd3b419650cc1b0ee00cf2a3a0038e9408e7319a368a728c9edf8d069804b6b2c71ef78dd53714c95c0dc3a8fad5622bdd459dbf88be01c76da6c505b9d15deea7ba9464dc49b773a06c7076b0e3bede38071e1f2a152720823b1acd3e62b6213d69314e3498a0a2451f2d14a80914ed9c55589b91f5a5a08c502900a6958718a5d9cd0dc1f6aa110b800f149413924d15050e41935d1e89a2492431ea3788574c59023bf1963e807523d6b02152c4000924e0015db695ac35b5fc71789ac65fb288c44b0aa0854f1804f6e0739a526e2b404aef505d5e1d2fc477f7da525bb5a61556328caaebea14119c11dff009d1a6f88ce93a959eb7a658c31dc5bdc3ae278b745229e406e319193f8629dad6b9a324569fd951ccf7312f9721907c8c9fdc073d07ae3b569e85afe94fac473dd5ecd6ba63cf6e2eac5edfcc475f2995a6c723729c00719e73ed59b7a5ecc69799e99f062e2e46b50f88bc41a7318a659ae1aed6191b3956f948f63ce30401835c4e83adf87fc5ff172f2f754f0e5ecb6b3e3ecd6ba6805a3d9d58a606ec8073d08ce6acbdce8b63a0ddde45f14b579f5282067d3ed234900071f71b24819c91c631d7dabc7ecafa7b1bf86f6da4db730c825472036181c8241e0fe3452a7a37dc252d51fa4ba0cd05c68d6335a5b496b6ef023470491f96d1ae0614af620718ad0af8abe1b7c73f145978c6c4f88f5792f748b89522b94990111a9e37ae00208ebefe86bed45390082083e944a3ca54657169ae70a7240f7a7554d4cdb7d91c5e322c5d7e76da320e47eb8a928f81be30dc4b75e38be96e1e5790b104c8437424704751c63f0ae1253c5745e3df213c59aa7d995122f3df0a8c19473d8f707afe35ccbb126ba13f7518db51c87041af67b9f1edf5cf80215d5aeeda5b7d5ee21b3b8852352d1c16e9b5b0392a4ee43ce0e7918af165a9d1895032703b5095c1935d2451dccc96f2f9d0ab90926ddbbd41e0e3b67d2a2a28ab2428c12401c93da9f0c6f34a9144a5a4760aaa3a927802bd235cbdd13e1fdcc1a77876d60d47c4b678375ac5c12e904f8e5608feefc87a3b0272323b50d81e698209041047041a51c9c53a695e69a496676795d8b3331c9627924d59d32c24d42e3ca8d9540196663d07f5a52928abb1a4dbb2174ad4aeb4e9f7db4b2aa37cb2468e40917bab7a83d2b4fc6d7779aa6b0da95fd959d9c972a1bcbb48f620fc3d7d6b7ac3c3967691c52dc866e4b067fe21ea0569dfdcda98417850228fbcc32c7d87e75c32c6479d72a37f60d2d59e56c9e948b1fad4f310d33945da0b1c2fa73d29a012703ad7759185c403141e2ba0822d11fc38ed29b95d455c60a212b8e7393d3fbb8fa1ac8be8228255105c2ce84677018c7b1a98cf99dac0d58aa4034c2306a4a42335761124a86291918a92a7076b023f314d085c8500927a015a9ae68975a4dc324a8ed0e372c9b48054f427d2b53c26b60b0bc8edbae4e0307c0da3fd9f5ac6a5651873ad4b8c2f2b3394b9b39adce258d933d3231510535e984d8ef6577de98f98050723f1acab8b2d2ee670c96ad1e0fdd53f29c7638f5ae78e2d3f891a3a76d99c9d818e3bb81a7cf942452f8193b73cd7abe9b3e97e28bab8d3279249ec9361531fcb9723ae5b0060fca3fa8ae312dad40c3c0a632c0900608fa56ac5158584f25d691023b98423433a248a4e4138dfca9c0ea3d6b3ab52156cd5d3e83a7745df11f872d341d02686188dc3fda22959b39729b4e50119c60e791d7f411ea9e26786d755bdf0def4b6bfb486ceecca80146da7705c6067a723b9351cbaaeb176d26d58e162b81117c83ee0fafb6314b65605348166e8918910b4aa0ef0ef9f958fe19e9ede99a51a9eeaf68eeee0d6bee9da5f69da2a4f7674d974616f1585a3583dcdb8604aa8dea432f52d9241e5b7579d7c42f0a49a74edaa69cab36973ed667862d890c8c32c817270b9ce0f4c545768da66937204d31613010fef7909d30477c8aeabc21e2196e34cfec79eea092c0c6cae5d3210c89820b63240c0247232bc7ad69072a7795ee85269d95b53c950d7df5f03fc6f078cfc1b0317dda858a24173c6371dbc301ee07e60d7c37e25d02ff00c39ab4b63a946a244381246dba39060105587046083f8d7d27fb1eceee35c59e762c6183cb88001422b38cf0739cfb574d4b349911d19f4ae2bc8bf682bc44d1a0b517525accf8d8fbb0aec5b010e390490003d0679af57bcba86ced65b8b9916286252eeee70000324fe55f1e7c62f8db65e2eb596c748d06dd4e0c4350bb55924099e7cb523e5cfa9e476c1acd45cb445b958f0dba69249e46998b48589624e493df35015c548735139e6ba199214119a957915104cd755a169915be9c750bc8b76e60b0a48386ff00687b0a894d415d85ae73ed148a81d91c29e848e2995d65d4e2e632b315f200fb9dab1751d3d2178de09018a421704f2a7fad453c4467a3d01c6c4fe139160d5c5c6e513c31bc902b7f14a07cbf91e7f0aca6324f392db9e691b9cf25989fe79ad4b3d18cd1ee99fca1c81c72dcf5c76ad6b6d12d8a2a6f26453b967e9b31ebd88a996261193d46a0da1fff0008dc0c614deb1b0b70642dddb3dbf51f9568d8c1059c02258621220c175032ddc1f5e94c123b1c860eeb1fcd81c71fcbbd24b2223a3e0658e1813c138e09af3a75273d1b3a528c75259af0eff9dd9cf4eb9c54fe46e8927999411cac78c9fc7b67ebdaa45bb4554952351327cd9ea38f6e9ef5496e2697cccf0ac493c64f3ffebacb96c6bce88e5b0d3ee9922f2a30cad9564c29273dce39ac9f12693235ec2b6b1abbc9b892806323b1c715af8d80ece4e339ab10391012092dc609fcff00cfe1574eb4e0f9afb133845ab3464e8161f67b4905ccaebe61e5170411ef59da8e8127db02698ad2c6c33862063f13d4575177bbecb1b2282589c90b8e9d79f5e9545aea64545182aa3038e47e35ac3135149cbb984a115a1c5dcc12db4ad14e851c7506988a5d82af527032715da259dadf4f9bb88193030c18ff002ad38fc31a63db882e7cbf3046489233824ff0fb67d78ed5d6b1d0ea895464f54718faf5f4ba59b09662d164618fde0b8fbbf4ad6d29ae24d3a291e3b658f6796a5171237bf4e95c82386ebd6b7f41d5a783fd196059d083b474d9ea73fe35a56a5cd0b4110a4d3d4e86cb4b9ae2212c922c51312506c2ef2019dccaa3960bdf91d462993c2fa7ba99a02f14c82589cab20913b3ae79c76acad63c5171088a1d36e8ac488c10a8dad1b31f98a91d3381cf5c7a66b4f43f89178d6dfd99e25b68354d25db795f2d22955fb30902e7b739ce466b9d619dae5731604705e5948d0c22396300ba97383f9fafa5644312c459a30304e4e4f2726b5356d36080c1716f74cd613a992da4fbc76ff7580e8ca4e0f3efdc5664619620e5485e0838e0fd0d73cbddd07cc5f866dcacf962a3b6727e94d9355fb3c2eee404c7dde6a84ac8bf32b127392bd0d41a9dbb5ddaaf96c37a7214ff0017ff005eaa118b92bec5b9b48ada85edadfd82feea44bd12312c0820a9c6d5ebce307e95afa3ea31db5afd8efac85a4127cd1ca410246dbd093eb9ce7fa5725246e9218dd4ab83820d75a08bdd1bc8cfcac8a5410095c77fd0d76d6e58a49ec6517777ea61788ef7ed1769045753dc595aaf956de77544ea471ee4f35f437ec75af892e754d1ae2e9774717996f0328c91bb2db4f5ea7247d0f6af9e35fd3e2b35b66b77deaf18ddece3afe159b617d75a75d2dc58dc4d6d3ae40922728c01183c8f6ad34947412d1dcf70fda97c757ba8f8eae741b1bdb98f4cb08d619a0076a4929e589c751ca8e7d0d787c12b4722c8bf7948238ef4fd5350bad5b52b8bebf99a6bbb890cb2c8dd5989c9355c9ed56b4427a9d06a9acd8dd69896d6da72c3364169770e7b9e319ce4f5cf4e31deb0194939a00c0cd5c86d1a4b296e432ed8c80c3bf349251560bb64ba3e9575a93badac4ceb18dd230e8a3eb5afabdcec31c2bc32a886319e171c66a868fa84f6d6d776b6e9b8dc05279c602e49a2f9fcc92dd631ba6620827a8f418ac2aa729a4f6045b8c08d511cf9847527bd36ced638dbcc56de5b903d3ffaf52fd959406b9dfbc8076b71820f6c5583090a70bc8e82b8a53b5d27b8730df39c9cb703a5588a60cbb38e8738eac79c5442d1d955ce79cf6cd16d13e4e14100e38acb40e62ec73a2a900053ebebf5aaf70e1b27b8e453dd672470ff004a468c8cfca727b7a5256357252422cc48e0f18c6054c93b21c8c9f6aa6b1b22f5e3a6714e8cc8ff00220cb673f4aa6ae67ccfa170cb962081cf5c54f0384411b61d339eb826ab35b3aa024e1870727bd3763edf94838a8e57d0ae76b7372d2392e21592281a58d0e5948cedea064f5c7154eea1592e8b45f2ab0c9c8c0e9ce6b0753d6a4b42b05b101d7efe7b7b7d6b3e5d6afaf62fb2657f7a40ca8c1fa67d2ba61859c95c1cd33b32f046823b77594904a903391d38fc6a9ea974d630b335c2c57182c818f5f4c62b99d4de5d1adededede5c4d226e95c751c9c28f403f99ac3b8b896794bcb233b7a935a430a9bbb7a0d54696843bd14f1b8fe94f6ba94a9456d887aaaf43f5aaf45765c561d9f5a78351d2ad09833a7f0edd41730cb617b2a44ac3cc8a57c90ae303071d88efdbad6f5a5bc2cc9048fb655970417cab839191e8471eb5c0db92258f1c1dc39af5fd3b4092fb46d3e4b78d47cfbb70525ce49c8181db8e2b871ad42cfb8e9d373ba450bcf0fc6b197e412bc0c9233fceb06fe17b37456182c0e3078eb5ea2d6973268f6f34f80d36586e3f311bb00fd08c1ae1f58b4f30946ce5723835e751aaef690ea53e4d51813c71dddaed6da24eaa71df3df8a985c088363214671838c5034e742c5582287c12c49e31c63eb515d3c7676e59c16638efd7f0aeebded15a98f395e7bb82e116266de1b80a17a67fc2b9b9d0ab1e0823b1ab7757a9e779b0868e43c921bf95569ae4cd9918e5cf526bbe94395587abd480362827bd3072727ad498f96ad142a3e5b06ba5d36f2cddd22923648443b1940ff58c7d71cd72a7afbd75be13d135992582fac6032db970ad8239f6e7af4359d594547de62716f62fe97a12db1134db8bbe4c6390421f5f7ab7169b631c8f298c6fdd956273cfaf26997badda4376609cbc8c8f82aa080a3b9fc39ab161783cf78644dcee4b447390ca070ca4f07dc579d375a4b9d8ac2490b16395ca9cfcdd7e952c3665fcb4452ce381c739aababdfcba7436d1dac2d2b48fb89d840c0eaa3f1cfd2ac786b5b693512b7303c6e1cb0046001d874e6a3d8d474fda25a02e54d731b96fe1ebb745c8249ec47e3f4fc2af69fe139e3b305c7cdd5beb5d7fc39d5edf57f14dee8b7d22401504967134601981eb863d082738fad7a63e93651e9d728df3057c36405c803ef03e8723afa1ae1a8eac15e5a1dd4e14a5b23c2a3d1521db0cea9e713c30e95ce6ada6cff6d1696d1486524601c1c739e3d7f0af5fd46e34e8ee1d618de620150aabb8e4e00c1f4cfe7468ba638ba992ff0049bab98e4f95484da809e548ef9fc41a985597c4554a507eea3c7eefc2fa85adc06bab775126e61b57ee91f53dfdff000ac910345323b7c80b10aa324b1fa7602be929f413a85a4769a8db4ad0a9254efcb0c8c673d73f5cd5397c11a41b71e78680a70b24e141f7ff003c557d6dc7e2427854fe13c12f6c2e6dedd67911846c01dc7dfa551990c681892371c119af46f11d8da25d9b49efe3923b621888db25b39c003d47bd79dea1a95a5acf2cac366e0c23c7273dbffd75d14272a9b238eb4395d9181ac5adbc41f62b09b1b8f3ee2b2eca6f22ea2949e11831fc2a6925fb5acf34b2aa0e8bbb926b2e47cf0bf77f9d7b904e30b4884ae4d7d78f7774f2b13cf0a3d07a544aebc673515142d0bb01a29460d1b7d28b0c4a5a4a5a0055621811dabe88f83dad43ace93259417063d4edd4cf1c18fe2c61997b1190a707a64d7cec3ad69e83a89d33518e7fdef97f764589f6332fb1ec7201fc2b1c45055e36ea5d3a9ece573e978f458e4bf37705bb8821b736ef14d114da7192571c1c9ebfe71c078a123875011a0da18f5c71ef5d07c38f1cbea97b7565757a03cc4be507c81fb155278073d3b72315e69f1175a953c4924368d88e31d0a82771ea33dc578f430951d5707d0e8c4ce12a6b97a972e254f2c9326c8872c7a7f9ff00ebd70daedf7daaf9da372d18f9578c71572c2e2e2ed6e209ccb223af18c9dad9e0d65eab66f637b2c2e55b6b10194e41fc6bd8a386f64aef73cf8db9ac543ef452669cbc9ad8d472a8ea69cedc74a8d9a933557b0ac2819af69f86fa6f89f56f0cfd9b4ad32ce35642ab7172e50321fe2c63939e878e95ca7c1bf0149e3ef13fd89de4874eb74f3aee74032abd154678dcc7819f73dabecdf0e78774fd061b4d3ec630a218963c9624e1470327ad79798d7508a8257674e1e176e4d9f3ab7ecefaac5a6cd7835649a5489d9a18a03b890a4851cf24f4af1e44d534ed5ad6d56caee2bb8d862d591b7b13fec919e7e95f7e992e50f96b11724939240c01d481ff00d7a88e93a7dc6a967a8deda594b776d9f22e1e30658db1d15fae305b3f5ae7c3e653578d6572aa61d6f13e23f0f78c468772566d322b8c4bbc8989ca64fcc39c9fea0d7d11e07f0945e24f0a596b970b6f6571731998429186006e3b771ebd31f81af50d6fc3fa2ea91497375a569cf748095967b58dce7b6491cf6e3bd733f0cfc593eb505c58ea10c76fac69d235bde42830885781b571c291c8ed8e2a7135215a3cf4e3eba8528b8bb3392d3fc113db78decb59b4befb37d8e3689ace48cb2e181ced20f439079e3815daea4f70d6c21ba06547dcac50e4e00ee318cfe154bc5b61e29d3bc5716a5a1daff6b6937a82396cda610fd91c0fbeac78dadc120827238ae224f8d7a469170fa66b5a7eaf657c9b5268a684651b1c93f3648c1cf4aca585a955249dec5c6a4217d2c6958c96d61ae456f736f2a9772229a4dad9c1ceccfbe3f4aee24d74ada8fb346884019f976807d00fd2b95d73fb0f56d2a0943ace67412096363b707a60671eff00fd7ae6a69afacece622f16f2dd72ca67255faff7875fc7df9ac54afee6cd0dbe5f79ad0dcf1778d235b4220927b4bc419578f0c1883c820f1cfbd727abfc401ab58436c36acec9b2425303703d55403c938f6ae4afa69eefcc89ede18e267da642a49461c9da7af20f43db151dc5b889618f7aca910560768e071f9d747d5e2edcceece59e29ef02a78dadcae8bf6b88cef751312cf1be38e859b239f6ef5e7fa808efc5bcab2a232441666627683d8fd7d6ba9f14ebad145750c53279b221491436783c1c8e99e83d6bcea59770da0f1dfdebd8c2c3961a9cf773772dea4f6e96d1416ae64e4b3be3009f6ef59b4e3ca7d2995bb2d2b0e3c1c5000f5a4a0503173ed46483c5253860f068108496393d68a28c5030a7034da70a684cbda56a571a65d0b8b460af8c723a8ad9935bb0d46fa29f50b42930182e8dc1fa8ef5cd0a50b938149d35277ea4bd558dad66d901fb743721e395b08173daa8996e2e2298f91e70382cec092bf8d36d6695710c6a24dc78465ddcfb0af43b2921b1b0822955436ce6241dcf5cfe3eb5156afb18aea46c798bc7f26e0bb4fa5317ad77fa8c516a36ede74504410e1446bb49cd72fa9e8ef6f0b5c4219a0560ac4ff0939c7f23f952a75a33f26529a7a18edc1a54c67e6e94bec7a505456b62cf70fd997c436de1fb9d7a5bcb8d914c90a08b04ee2198eefc0647fc0abe8fd3fc77a6de8062440c780e4e2be08d3efa6b0ba59eddb0ca7a763ec6bb2b4f88535b42a8b0312393f3e066bc9c6e06a55a8ea537b9ac2b3868d5d1f6bc1af5a48f084ba8ca8cb36c6049ff00668bbd73426612ace8278c98d78c11ebf8735f1d787fe20dd4b73e5bc656466fdded3900fa9cf7ad9b8f11decf932ccc08cfcc1793f8d70cf055e9ae5959dcb78a8a7b58fabae75db48ac04a24017195ddd5f8ec0f735e437daa47a578edbc55a4ccf1e9d322c7ab42e7850b909281d38c63db3f5af34d37c433cecb15c4b230196e5b245779a398746b337b7d788fa6842649382093d9b3c719e8783584154c3cbded6fd0de8ce388764ad6ea58f1dfed1565696be5784ac9af65278b9b94290af1d875620fd057cbdac6a977ac6a973a86a3334f7770e649246ee4ff0021ed5d7fc5ff001b0f176b56f1d9b1fecbd3e3f2adc6c09bc9fbcf80063381dba015c1f0df5afa4c35350826959b38eabbc9eb73d4be0c6b0a2eee34bbc98ac5328688b1fba572481e99ac4f1f78c2f757d467b48dda1b18646408af9df83d49efed5c8d8dd4d632a5c5b48d1cc87e565ea2997571f69b8694a8567e4e3b9ee7f1a161e0aababd589d46e2a1d0eefc21e211f614d32f9df6a3995646236a8db83bbbf4a5f1d011c51dd595cbbdbb47b70dd0eeea57f2c5729a0aacd73b032ee236956e8c0f079ec6ad5f5a5ec9702c373c890ffab52780a79cd57b18fb4e78bb1cef7d4cbb1845cc92abe73b0eced96ed5464429232302194e0835bb776cfa7adbbc5be49b25b2bc0c8c7e3c5665fee96e5e7318457390074adb492ba2e2caaa71d7a536a4078e4520018f4c52b16340a3760629c41069ad40060d291c66a49b03a77a8bb50d5816a14a0719a542a3a8cd38e0fdd18a2c1723c1a70a5a514ec2b874a031072090690d1401a1a05dc569ac5b4d725c46adc95c120e383cf5c1ed5d7dc23453946196f5f5f71ec7a8af3ec126bd23e1f6a307886e2dbc3d7f6abf6978cc76d76a4e46dcb61867d33cfb0c835cb898b6b9bb07b3e7765b9588930b88f3bb38f7ad0d3ad1ee77acbc64edd98fbdf855cbcb4363a94b6cfb6531b9438185071c11efed57d22486318014e7820e064f5cd7933aafa0a14d735a4737e26f0be9f6da235e92b0c8177029c027b2907fa579c66bb3f1fde1905adb072026e6283a7a027df835c657af86e7f669cddd9a4b96feeec39052375a54a4635d04f526b3b992dae12588e194e457a82cd05e6996ce136ee8c1041efc93f875f7af29419615eed16836779a669f3e96ecd6d2401e25098c0000393dce4303ee0d716366a314df70f64ea3d3a187691c11cc14012c720dae1f80c3d3db278accf89faa492da5ada5a964b22c59947019801f981daba9fec6360f992374603cc19f4c1c633c579e7887518f54be834f86375449b6ee192dcf04015cd845ed2aa96f61da54e3cbdce4c0c1058714edb8c11d2b6bc5f6b6da7ea49616809f2102bb37566ea7358dd80f4af5a2d495d09a6b718fda9a3ad2b0e685eff4a0058a468a40e84860739adf1aca5c9864924fb3dca0dacdb370615ce9a500922814a29ee74125ef9af23192294edd80af1f88aa90cb240db728ca38381906b43c2de14d4359bc87cab7956d5d807b82b84519e4e4f5af5cd3fc1fa6e945c4118f31a30aef23121bf0ae6af8ea387f765bf637a381ab595e0b43caa3b7d3ae34d33c823478d46fd99cae4e071deb12e62489f03054938901073f957a9de7819211aa4af234cb72859142fdc39c8391db38af2abeb29ac6e1a1b8468e453820d6987af4eadfd9bb984a8ce93b4caf2a6d6ec78ce4542724f4a9d14eece3701d47b5226dddf39207b56ed5c572194e5cd36948c1a2a0a4029c31da9b45301e0d385301ed4e0698828a0d0298086bbaf82bfbbf1dc1700e0c104ae0633bb2bb71ff008f75ae16bbef83b6eb278899c921bcb6008edc66b9f152e5a527e46b47e34753ac069757ba91a404c9293b73d724f5fa715c978ab52b9b48d625b82b21ec9c605741e2cbb8744ba904b26e9d836c8f1939ec4fa738af2cd46f66bdb969677dee7a9af3f0541c9aa92d88a89a9b4472bbcce59d8b31ea58e6a2231499a7039af5b716c2a8e29a4734fed48781c53b08693818af7cf81dae5a5d68474db9da2eb4f2f246adc078dce783ea1b3f98af02abda4eab79a4ced358ccf0c8ca50b2f5c1ae5c5e1feb149d337a157d94d4cf67f885af1b481e7326d95b844c86f9bb578b25e4e9a92dda36275904a1b1fc59ce714ba8ea379a84c25beb99277ec5db38aa8b92d9a30986587872eec55aafb59b913ea3752dedf4d7370dba6958b31c639355c714f6e39ef51f535d36b6c65b8fea280b926851cd29a621bb38a4538233c8a520d34714867d07e16be8aefc33a5dcc6bb5562113301c02bc107d3a56a960d3476ef246c491f2161b88cfa6726be7db5f10ea96960b676b76f0c018b6d4e324fafad67add4eb3097cc6f301ddbb3ce7d735e2cf28e79ca4e56b9ee52ce654e0a1c97b1f5a789a3b5b6d26386ca557555cbb9e08271c0fcebc0be25c51c6d6cfbb74e4e0b7723aff5ab9a07c416362f6fab87965049571ce7d88ae37c4faabeada934ce0280301474a30182ab87abef6cbf138f1988a75d26b7287606a323e614e89b2307ad5a5815ad249490ac8475fe206bddf33ccd8a4ef9e000299451517b96b40a29c16976e45160b8c039a916900c53a9a1311a9b9a5634c3431a1e0d7a87c1eb07324f7c40310cc5b4f193807afa1e9d6bcb075aedfc27af5c45a0dd6931dcf92afbdd72c1304ae09049f6031d4e6b0c445ce9b8a2e9c9424a4cc5f13df4ba8eb57f773471c72cb2b1291905579e808e0fd7bd60f43cd5e2caa594e09e9d7a540c467b56fca924974324db776419a51d6a529bf90471f8546719c52b58ab8f1d2908c1a453520c1155b888f19c9ef4da95b1ebc53720d2b05c60e4d4aa540c544dd78a72631cd086c73608e29a8a58d21c75cd08483c5004ac850f34dcd4a5cc832e496f535031c1a6f4250eeb484500d2e690c611460d293429a062a128eac0f2296e1da4959dce598e49f5a319a691eb45844968a8d3a79a488f3f31039c55dd4278e59b16f1ecb74e2353d71ea7dcd518880df4a25933c29a6acb513d591ed34a01a7800504d2b0ee1da909a42691ba50004d37268a290c3345145030a721c5340cd491a6e6000a10986327d69429af41d6bc0b37863c01a56bfab5a4c6e755919208d9b6a451edcabb01c966192070063273d2bcfe53f371d6aac48631d78a6be3691de985893cd252b8ec2f028dc6928a4302734539971d29a462800a28032714b8e714ac312807078aded0bc23adebb617d7ba569f2cf6964864b89b215235032492c40e00cd65de58dcd85d496d7b6f2dbdc4670f1ca85594fb834ec2b91237f7a9245e7229769adef0ef83fc43e25dff00d87a45ddeaa0cb3c69f28e71f78f155d09ea73b923ad1c9af4df087c18f1678912f98597f67fd959548be578f7924e76f0738c73f8564df7c31f155af889347fec9b97b892431c720899637209190ec00c7ca793c11ce7041a561dce1f068aea23f0378925f100d11347bbfed4259440531b8a824e09e0f03ae79ad3b9f851e3287519ac9742bb9e689d636685772ee2bbb83dfaf27a0345877386069fd6b4759d0753d16ea4b6d52c6e2da58dcc6448840dc3b03d0f51d3d6b3f691da9937237539a6e2a6c9a438a4d0ee34f5a29f28e6a3a6c10734638a29c149ce074a431a05295ae93c11e0dd5bc65ac0d37448564b831b4a4bb6d50abd793f515abe22f865e2cf0fced1de68b772aaf064b7432a838ce32b9edcfd39a7625b3852b4043e95d2783ec2d2f7c5fa4586ac937d926bb8e29d23c2b952c01032460f6afac75dfd9ebc1ba8c20582dc6992e492d0b961db8c3138e9fad2765b8d36cf8b8464d7a97c2cf84dabf8cec1b55b1be86ce0866088e49f33702092076c0c907b918ec71b1ae7c01f1269de28d3f4d827b49ec6fa731457664098c2b39054f25b62336173c03e95ef1f07be1dea7f0fae757b192eed6ef47b9db2c1288b64c1c12087fef0da78e78f419343925b0926f7386fdae035a783fc2d6485da149d86ee80ed8828cfb9c9fa735f2abf535f5e7ed7a211e06d237b66717ea139ede5beeffd97f3af924a834e3aa07a32b114da999314eb7b69ae66586da292595b384452c4e064f0293434c86289e691638919e46380aa324fe15d6e87f0dbc5dad4b6e963e1fd476ce40596581a38c03cee2cc00c7bd7d2df01be10697a6f852c758d7ed1a5d62f156e76b964302ee0c8bc608e00241ebb88391c57b7dadbc56d6d15b5ac51c3044a1238e340aa8a0600007000e381f4a9e648ab1f0f587c09f1f5cea1f666d212000f334b71184c7ae4124fe02ba193f66af17fd8e0963bad31a67277c7e6901076e71cfe55f619538da59ff038a746a2340899000fad2e70b1f1d781ff00676f10ead75707c4320d22d607d8bf289249baf2a32303dcf5cf4af5bd0ff672f07e9b7c25bd6bdd49000424f2855cfd14027d7ad7b4a29524ee6249e84f03e9488a1176839c127f339a4e4c122be99a75969702c3a75a436d081811c4815471e82b0fc51e03f0bf89a5336bba3db5ccc13679a548703d88e6ba614c9dd96362a99c293d7149319f3df8a7f66fb1bfd7e0b9f0fea4b63a5c8ea66b6742c63400676364e49c67e6f5fc2bdcfc31a069de19d0edb4ad1adc41676e36a28e4f2492493c9249249ad088158d4118240c83daa5a6e4d82490a02807fa50bc7e3476a4a91885177eedabbba6714e239ed494b4015ee6cedae828b9822940391bd41c578c78aff675f0dead2de5ce957375a75d4ee5d5410d1213db6e338fc6bdbbbd14d36b613499f0e7c43f82be27f079927487fb4f4d45de6e6d97ee8c64ee4ea31ebc8af2d22bf49f516b754985cb449198cf98d2b00aa9c924e7a01cf3d2bf3dfc673d85ef8b357b9d1a15874e96ea468117a04dc718f407ae3b66b58b6c86ac6332e6a33131385e49ed5f4278ebf674d4b4eb989bc292ddeab6d20398cac2af09007de679101079c60718e7b13adf0b3e00ded97882def7c651a35b245e7451412826395594812107af5fbbb87ca724719bd1ab93669d8e27e0e7c0fbef174b35df88c5de97a6c2c9843115927c827e5247006067bf22beaed1bc1fe1bd2ac16df4cd174f821d8108102ee603a6e6c65bf1279cd6f93d430ebfa5290074ac1cae6a915ecac6cec2354b4b682dd40da0451aa0c7a600a96ee086eeda5b6b98a39a0990a49148a19645230411d0839ef52633452b81cadcfc3cf08dc6e32787f4f0ccb1a868e2f2ca08f1b3615c14c6d1f771d2ba8550a001d29d9cd078c628bb616178c8cd31d4ee20103f95314c9e7c818031f0579fcf8f623f5a97f5a0670df16be1ce9ff1174786daea692d6f2d8b3dadc2f3b19800432f707033df8e0d7c5fe37f05eb5e0dd5a7b2d66d24458df6a5caa1f2a51d8ab639c8edd477afd091cd60f8dbc29a678cb446d275a8cc96eee2405490518670411d0f26aa33b6e44a373f3bcd7d09fb317c37d49bc470f8af57b492dac2da36369bdb6b4b230db9db8e57696eb8e71d6bbdf0d7ecebe1bd1b5482f6f6eeef51681c3ac329558c90723700391d38cd7b600000aa30076f4aa94eeb414616dc318ce09e78a503d2814a062b2340a4a3e941a003f9d1c51ce68fad002f6e290d039a0d00140340e7ad18fca800038a281d28a0031474a33477a0028a28240193c0a00f16fda58de5d78512d749178d7723bc4f1c1bc2c89852c8c3a3123900f3d71debe3f9e192de79219d1a39a3628e8c3054838208afd0f6d21bfb65ef6de4458e67479d181632151b46d3fc3800608f7ac2f1cfc32f0d78b74d9adeeb4fb7b6ba650a977044ab2478e9838e7fc335aa9a4ac66e373b61ce7239e942e33c76a4de3269370193eb591a126320d339ce3a502400f7a378273400eed8a31eb4ddc280e01e050039b819a17e6c126982419c6324d2a8e73e94c7614c6acea4e7238fa8f4a7bf0d8279a4eb43b80d9348420ce79a38dc09ebe94d6900e7f1a6452895dc0040519ce38a007c8e55b27383da98158bb1e76f6e7ad47136e7766e57240fa0a9c3a8229ec20030783934ea6f9800cf6e99a4de290c9292901cd2e450160ce68ef499140a760b0a7fd9a09cd20619a0b01d68b0ec2819ebd28cf38148ad9a70c520b01c7e3498a3f9d2d1615829b9a71eb498a0000cd57d42332d94a8aee848e193af1cf1f9559a6b8c2e48e942022b4431dac6ac72428fc3daa6eb8aa567361e443b880e4658e707a800fd31c55bf300fc69b120c71cd35978acc8354796f27850094a36c08bd43038604f4e39eb57ac2f21beb613db3878892323daaac03f6d38631d29c718e6a3738048e942421739ce281c1e6913934d72db8055079e72718a2c31c3ad4e838a6a2738f4a94e225cb1c01de958ab91e48e94de4d3c8e69ad9c516132aea0fe540ec49c2a963819e00c9e3f0a2d95bc8576c06750703a0ef4bb1d998b03b4fa9efdc7d2a65e80516122351c8f7a738c73438c74a553b873d68b0c0282bf5a8f904015274048a68ce68b012af5ea29d4d0b93c53c0a2c3b8dc5380e28c734f51cd21dc6eda0a715305a4931b69dc0836e38a314a69b482e28a29075a5f7ed4c04279c53b14c1c9a97da86891b4cb9845c5b490b1215d4a920e0e0d4ddba5369580c39e08ed98ce4bb4a8e4c5167ef923038eb9ea73e95a4ae19d9320b2f5c0aa5aac71c37514c06c6c1662bc64f0013ebc0c73db3505948eb1c97304525c87505020c000edc753cf001cfd6aad7449ffd9", + "properties": {} + } + ] + } +] \ No newline at end of file diff --git a/test/expected/backend-l.1.0.0.json b/test/expected/backend-l.1.0.0.json new file mode 100644 index 0000000..848a73e --- /dev/null +++ b/test/expected/backend-l.1.0.0.json @@ -0,0 +1,13 @@ +[ + { + "version": 2, + "name": "_image", + "extent": 4096, + "features": [ + { + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f99c519a4cd2e78ae93103452529c628108681451da90c28cd1450004d1484d19a005069d4c069c0d30168a3345020c52529a4a0029451450028a5cd369714c033485a971498cd201a4e68a7eda4db4582e36956976d382d160b89494f229a7814c043c0a849e69ee738a654b290940a5a5000eb4863e90f1452127bd31067279a526994b9a403b3e9467f3a6834ab400bf5a3348d4940051451400b9e69734da2801c0e6941a677a7d310a39a5a4029c0531094e02940c5761e0bf01ea1e28b59ef849159e950388e4bb9bee87232140ea49a7b6e238f0296bdff00c3fa5782b41d3f4fb7baf0f8d6eee65cdc4f33ba329f65e80633dfb545e2ef863a4dde9bfdb1a4e997fa5d9cee24472e244546036f071d79efdbdeb3f6f04ec572b3c171462ba2d6bc2979a6d9cb781e39ad11b696070c0670091ffebae76b44d3d5121451d4e2bd37e1af83f4eba68eef5b437a5d4490d9c2ff00794673b8f183c7033f5a1bb01e7fa4e957dabdec769a6dacb737121c2a46b926bd5b4af80dae5c5aa4b7975124a705e080091d013819e4753fcabbc8b43bbd5f50bb87c32b059c714664f2d1443248067036939ce00e01c7be4d765e21b6f12c1a1c12d95d41776ad6b23bcc54465e318720e0020f27e5f5ac6556cae8695d9e1175f05f538e56b689ee85ea9198e4b7c2ae471960c7f4af3df17786751f0bead269fabc3e5cebe9d0d7d670e817975a7ff6a6a7ac94d626950db35b380aa0907cc3952e71ce78e3f3af32f187807fb79268b4d925b9d4448656b99a4f3495009ea3b67dbdeb158a4a494dee5723dd1f3d3fa5308eb5b3af68975a1ea32596a1185990f553953f4359320c1aeadd5d093e83568ce4fb521e283c1e290c79a6d38f4a6d0c10868a0d14000a507149466801c69b4668a0029474a4a05002d14a3ad2e2801169ea33480669ea2a9213628152c10c93cc91411b492b9daa8a3258fa0151815d5f86e5bbf0c3db6bb0476b705ff77192039b773d0943df00e33c1a6dd893acf869e07b24d74a78f2136d6d2c256159091873c65b1f771d79fa57a9782acb4dd0525f086a2a66b65977c7228df0dc0671924601edb41f634dd37c450b41629e2496dbec258cc969f31cb39cf9785e7183939e06075c0af5ab78fc1d63a65c4f19b692d12244b978c89942a0e0bb283d3824fae2b963579f565b858b8de16b76d520bb8e1b64816cfecc4633ea01f7e0f5273c0ae4fe20b6836d6969a6cb7525c2d82a85d36027f7ac48cb391d30b938279cf3555bc63a9ea369347a6cc52de71e5dab18c2c8f1118de5792ae7a83d08e71d2b84d66d0594b22d9db4f35ecec72eea6595db192072303039c600ee6b9ab6212f760aecd230befb167c551687a83de6a7736df60d300cbdbf054201dc74c9fe600af16f0dfc3ed43c56f797fa722dbe96923152dcb05cf4c67ae08ea6a2f195feab7f3ad9b5e3ddf920c935bc0acc90053c6e3df1dfb0cd7d3ba5f84efe3b2b2d46d6c63486ead61134568554630086e99efe878fa5387b5a30e6ddbfb909f2cddb64785f873c05a6697e31806a738bcb086511ce8d16ec074f95b1dce4f4c7515df59470e956971696908b569258dec8db8119b7b918e0e78d87af3e9835e82be18c4536a074c9a4d4279d25dd32ef5e300e41e8b81d3009ddd6afbf81efee755593cd48ed1661956c302832ca403dc13e99e4f6ad15593b2fbc970d19a375a43eb2f61ab1b55835ab2f2c90c998cba939dac3ef29dcc3fef9ce08a6f8cb539a6b6bab77d3678e15b71e6b49b46d5638c839c76edf88e2bbab78fca8238f8f9540e0607159fe21d1e2d62c24824da24da446ec81b612319c1ee32714ab45ce364cd29da2eecf0bf14ea3ff0008fdec09335c9bd98030d9c318925c1fbb855391c7d2b9e97c506277b8b6d335537cbca4725bf9441f76e87f1af5b97c071e8f34ba8dacb235fe1a66bc924f9cbe001920676a8dc42807a81ef5e5d1e20bab9b6beb9990de49b5a7955da4752c37601e0123279391d4f18ae1787a707692375cf2574cf1ff008849afeb9aa497fa8dbedd8a156304165183d7df835c3dcdb4b0b6d9e2922623203a953fad7d4be15f06c9a8ebda86aba3c1e6c4d2ff00a224ec76e23c04918f4209c9c0ec3e95d8fc7ef0f68179f0ee797c473db5aea96d0192dee91026f9547dc1ea189fbbfe15eb529c79545238da6db67c3ac3b50bcafd2a5957bd44bc1ad5ab30b8f229952114c6143121290d3b14d3486145145001451450014b8a414e1400014f029053d4552426c502968ad8b8f0ceb16fa143accd6132e9929012e31f292699252b1b479ef2de120a094820b7031ebcd7b8788fc2da96a1f0e44b2fd84c31dc044920fbcd8518738e307383dc1ea3a57917fc24534cfa57da228dbec4a62071f790f63f857d3bf0ebe217842d7495f0e5cc96f2c13026448e3778c066202331fbc471f300073d38ae7ae9b69f634a67806837d3e97ac5b0bcd31aeded033ee822129701b6ee656ea01cf07a9c66bb8b0d67c69f106d7ec50c72ad94ade537cc91a85527e558c003773d48c66b47c65a33785fc4d7179b2d9ad2d9097f2d88f320918104371b8af5c1eb9aecfe12c377a4f8b3ced39631657d0ef9c4ceca91904e6418e18b01d3dab89574e56b1b3a76573d1fe1df83d740b14b9d4a59a7be553b84cdb842dd0ed200c8c018e3e9d6bcbbf683f1ae99a369b73a768e211abdcca184d01e029ceecfbe704fa923d315d47c4cf8b5a7e8905d5ac5757505f5b9cacb0daf98aed8f947ce3182783c8f6af91bc61e207f12eb2f7ef6e96e5970510e72dd598f03924935d94e9a7b2d0c6523e9ef83de0f3e0df0dc97578b149ad5e949a633a83f2156063dddc7cdc8f5e7b57b3f853eca9a2dbdbd846b0dbdba089615e91e00e07b7a73debc1bf64fd3750d5749d62ff5cfb45d69c5a3b7b43712b30ca64b0507b0ca8cfe15f46db411db42b14281507402b2e5a919be67745ae56ae913514515a0c28a28a004232083d2bc43c67e1592cbc405e4959ede6cb44f924c7d8827d4e7d6bdc2b27c49a67f6ae952dba6df37864ddd322b0c452f691d3734a73e5670b6da83d90926d1adec91847f64b41757422fba067e5208c64f20741d3bd7cb3f1a3c7faaf8cfc42f0df18e1b6b26312c16f3b490b3a920b8ec7be0e3a57aa7c6e923f0868c2182dedb52bbd46292de4674252d4e325e31d37727271c71d2be66aeac346d04dee734dfbcec079155c8f9aac1e950b75ada44a1d4d232714e34d1d6818f0b814d7e9c53f34da1888cae0669b5239f96a3a96520a28a280014e519a4a923142063956afe8f62b7f7d1452ce96d0160249dc12a83d78ea7d055bf0be8736bfa9ada4322c2806e926704ac63a64e39249c0007526badd5ad1fc0da9c36fa6cd73730b44b35e128006c670548ce072719a1ce29f22dc5caed7e86478eb44d23488ec7fb1a5be943261e6b98bcb133739641d80e3afad755f0f75cd3d7428ad75ed737c3b8c71594a1b6c273f7c9e98c76e39c5729f103c4a3c537b15c5a593db59db208c0ebc9ee48ee4826b2afa5b484da5d69be5ef6882cb132e42be3938350e0ea43965a31df96574759ff0008ae9b7badeafa6c65e1bac24b65b4160e0f5c01d477fa5741f05b5fd0bc3fa86a565e29b6b06fb345379724d9f99b18c018e4f18cf079af39d1b50d6ae75eb56b192f2e2fc8102470bb091d3a6c18e718e38a66b02dff00b5a38aef4c9b4bd80acf192c5cb64fcd86e47618f6f7a9706fdd93b8d492d51ea3aceb5a778d7c657b2dcea19d336c69145bf697c28c741c90001f5af6ff00823a341126b41ae26bc489840ad7037285e4900f7fc315f3dfc30f07dfeb1a59b8b0d2a4fed4b7996ead6e0a12b2460e082076cf1f8d7baf806e753f05e89a92cfa2cb78cb1bdd5d0865552ac3270031c9f941f7fcf8e3692ac9266eafc976701fb4fe9fa168765696f616d243a9dd30323a4e5048a0924bc78c1e71839e31c7be7fc3cf823ab4f6b61a9dc5ba3b5e44b2c4f36d30c48cb9cb0e4938231c75fcebc6fc61aaddeafe21bfb9bb59e2dd3c852da676636e0b13b067a6338af60f811aafc40fb0edf0c5c477ba742fe4adbdddcae223c31c459dc5707b63f435db521ee593b18425adda3eaff0e68b67e1fd16db4dd3a158ade1180ab9e4939279f524d6a572df0daf35ebef0a5bcbe2b8e38f54deeae51360600f076f6fc3d2ba9a8340a28a2800a28a2800a8e67291b3280481c0271cfd6a4a82e668e20825380ec1467d7b5007c9ff00b46788352babed4ada7b6b68ad2d2e4c50c912e2472e98258f7e011f8d7cf75edbf1a52e6db50d63eccd61359c370ed2090e66dce4a8c8e84f3907b578956f4649c74319269ea1daa1638353678a81fad5c84879a402a4c0a5c5160b8d23029a3ad3d8530f0334302390f38a6d04e4d15050514528a00551935328c5449d6ad410bcf32450aee91c85551dcfa552133b9b3d7b4787c3f6f65a5412c1a918f63bbe023bb70cc4f5e07afe15d17873c35378dac27b99ee8095f0a9b0e36a64800004e1782718cd79dddf85b58b582295ecde449300795f3e09e80e2b4b4af12eaba7cf0e9da85f5c595bdb3e4aac237ab0040047e3d79c571d48369ca84b5fbcd62ecd2a8b43a4d03c2b7b77a46aba084113aca5bcd2a76c9b7a1cf723d3b73eb58d6b636b697d3681a898bcfb6b80f1cdc2071c6e058f438e4678f5a9a6f88f7f6eab6fa7a45240ae5cc9711e5e43effad721aa6ab75aa48ef78eaecd234a4ed00e5b19e7d381574e35657e7d13264e0b6d4f43f155aff64e93a4eafa532ff69c174025c5b2f0fb4365b2383f7573f535d17853544f889e20d5adbc45a2db7f6e4768b25a489ba229b48254eedc17ef020907bf5cd7977fc257a93c1a44372b0cd67a64ab245094c2b118c862392085e6bd022f8a66cbc747c4e7409edad2fac96da48c1c0765607cc56239c74c7eb594a95451b6ef5d7f4294e37b946cfe24f8ef43ba974ab342a4efb758560cb1f70500c91c1c8e3bd6ca78bfe28f82ac67d4b58d3ae2dad6f616b749a7b608b1b123f78428ceee70377073df15d568df1dfc330c51cda8e9f7af711cae6344854ed5e80e777523ae3e9cd65fc4ff008f563e2df87d79a25a585dc17d74e11e460a13cb0d9f5272401c76f5ad69734be2858995ba33c0afaea7bebc9eeeee5696e677692491bab313924fe35b9f0fbc4517863c5167a95ddbcb756b1b7ef618a66899d7d320fe87835cdd2138aea7a991f45ddfed3dab04816c745b24daf972ecd864cf000cf071debdafe11fc58d23e225b3c50afd8b5785774b66edb8ede3e753fc439fa8af828364576bf083c6337823c7167aa4682481b305c4678dd1b63383d88c023e950e09ad0a52699fa114536360e8aca72a4020fad3ab0360a28a2800accd56c3ed52c52b3b048be6d8bdc8e7ea7e95a759fa96a36b6d1949e5d9bc1507a0cfa67a6693b5b503e19f8cfa3c5a4788bccb6927962bd4f30b4a002086e9c139c0c726bceabd1fe2e5ddb7fc2433cfa75ec5730dc29cc580701bf8b038078f624f3815e6b236056f49fb9766325ad8477a8b393cd079a4aa6ee348b5455ed5edad2d6eb658dd8ba8b1cb85239fc6a8d5a77572029ae9ba9d52430cb312228d9c8eb81d2876ea0526183495b93e8776aaaca824c8c9d87907d2b25e120f2307deb34d4be165dfb90e29c06697611d69c169d82e228ad6f0f5b1bad62d62c3637ee6dbd7039359a16aee95a84da5deadcdbedde0608619041ea28927cad477126afa9ec715d8b2885cccc63862f9cb004e0f03fa8ac8f10f842fbc4e45edbc4a97cecb1ac601c91939691ba02003d3a62b9ef12f8c6df51fecf86ceccf936f20964599fe5988ec40e71d7bd7a8f8725bcb8b7197b1b433ae22ff004856209eea7232dec33c578ae1530a9544b5676f346ade3d0f27d07c157775afdad96a84da4125d1b3926003f9726d257be08246383eb5a5e36d1adef3c776da3e956b6563325bac6c158a45348149c8cf20b70003ce4d7a76b11c496f671349249e44f1dc46c176c8aea49e847d7391debcb7e294467d521d46d619823a65a4c7039e3e95d586c54abcf5d3430ab4941686ff00c44d2dd7c19a6ddc5a64364cebfe928a9f748c631d7f135b9e34f889676ff0e1344b6c7f6a3dbc70a8f28ed48ce4330cf1f740e9ebed5c443e2fd4b5bf0ed8f84258a36b99e616ed7370c7214b2ece73c1ea093db1deb0fc73622d3508a412b3ee5f2cab1cedd985033e98c53850f7946aee9b681cfdd6e27a7eb5e12b0f0cfc31f0fda0d2a29359d75d3ed3773c219e2057795466fb876ed031fed1eb552f74bf05e8a9a6de5fe86f36981becd72be792e770cf98194e7782a78c01ce2baef1cf886cfc67e01d2cc7a6de5adcc32c5340b3ec092009824306c118271d08207bd50d7f5bf0e5fe836914b6935bdddb304408814950b8249e84e33ee4f23ad60ebcd495df577358c138bd0f25f893a2e9b61a9417de1bb5d4e0d06fa312db7db61284724101b2430c827aff002ae31abe95d4a587c53e0cb7f0d810fd8c3e219e50239227e769233b49e719c038cf1c9af13f1e7842efc2babc96d20926b6c068ee0a615c7e048eb919cf38c8af46955551799cd3838339653835346c564561d8e6a0c73522f4ad910cfd03f835e2787c4de05d3e55706eed635b7b84ee195400c393c11820fd6bbaaf8b3e07fc459fc3dafe9d6d22adbe93314b699cc7904923e624606476ce71935f698ae669adcd53ec140a5c514144538631304fbd8e2be67f8a1aceb7fda10432cef6d7003ba6176a49824847e9bb1db60fcf9afa33c405c68f78d148d13ac65848a70531ce7f0ebf857cd9e3df105aead3e9fa36aa905c4faa5badca6a42dd9081c91f2b72a41e72bc75ace7b6a0b73e76d73519b53d4a6bab9118918e0ec181596dc9abdac5ab586a97966ec59a099e22c7bed2467f4aa4466bb5249591875b91e293152ede339a692052b0ee587468dca3a9560704118229b5e97e27f0dbea16526a060f2a50a5fcc5000600771d87a7f8579fdee9f756210dd40d1ac9ca31e8df435146bc6aaf31ce0e232d2cee2edc0b785dc670580e07d4f6aefed34a8ad61091a228c0dc477fad71da16af369d218c1cdb48c0c8b8ce3b66bac5d4918a342ed27cbdb0067dbd7f1ae2c6ba8ddba1b50e55abdc7c96e41e090073f4a3ec29763c992dc4a4f52c39c0e49cf6a7cfaac413e466ddd36b20247e22a3975276850aa2c6c7aede3757245496b735728156ff00c2769e4036efb59b2c0eec91ec41ede958b1786a5fb798a59556dd5779940e4fb007bfb56a1ba95b219db0dc900f53eb52c371232b4721ddf2b72dc91c5742af522b4662d41991fd956d0ce4297718ff009683ee9fa77fad4b269115cb47e532e56264009ea71f29cfd4fe953a9380bdbaf4f6f5a0c8f1caae9c3678f6a3db54bdee4a8a1d7fe079e3d352e6ce75965507ce89fe5edd54f7fc715d078793424d2acacf54f0f5c5bdf4e0c5f6896dcbac8e39dcac5860918e0715506b8ed10b672bbd9bccc28c9ce3ff00ae7ad54d4c3ea168b6ff006a911236dc1548233ffd6feb42ab39ae5a9f79ab8c56b13aad675a82cad95c5c08bca652898f9b38e3683dc6073d6b2a6f12c52d8c8e5a267c1df0cff2b1e7278f5209ae71349fb1b24f04d29914e1c93d41e0e0f635726d26cefd419032480eddca403fad44614a9b4db7ea29394909e14d14dcdc36a6d791437b04e935bc7c4b923e6c328391db19ab9e24986b7a78b8789a046dd214382c08cfa7f5c1e69fa669b6fa7d95c794dbc4840264009e9ea06719abb0aa430a46ab198d060a11904f73eff8d693afcd3e68eb61420edcace3b4e7d52c352b7d367965891c0da9c380adce541e39ad8f1049a868f716f14b243345749c2ed0bcfa30edd473e9dead4f0abeb02ede4428b1ec8d4e418f04f03d4735cff8c255fb7dbbc536e91472bd718e87fcfa56f16aacd5d74d49778459dafc37f16ff62dddbcf711437d6e11e392097e65951b2ac08e7071839c7a7bd75babdf691e22f096b70132db5ada27da2de39d83950303cb2c304a8ec3fad78e41ab59c3a35a5ad9da31d44b93349d3712df28047e15e8de15d4adf4eb8537f0472c3b54b2a36e5009ced3f502b3ac9d27ccb61539737bb23c5240031c1c8f5a16bd7be287c37b4866b5d4bc172fdbecafd5a65862520a7cd82a1792307b1e9c735e4382ac558608e08aee84d4d5d19c935a33abd0b5f8ac3488ed6d22956fda6c316daf0c88d9cee4618c8f9707b63e95fa07a1c92cba3d8bdc0c4cd0465f391f36d19fd6bf3dbc24a17cd9a395167475d8a5371ce090476ea2bf40bc2976fa878734cbc9a48e5967b68a4778feeb3141923f1cd6326b99c5171bee6bd14551d5754b3d2ec2eaeefae238a0b589a69598fdd503249a4591eb56d6ba8e9d35a5e31104ca558a9e40e86be58f8e87c07e16b73a5695a741aaeb92aee6bb92e6432db91c7cc5480381c2631ed5e75e37f8a5e22f11ea7a8187509ecb4c9e76923b5b7628141e39239c9ea79c649ae01b2cc49249f535b469db73272b88ec5d8924927924d369d8a42315a12349f96a3eb52374a8aa58d1dff873c66d6db2d3514cdb33317b8c969067a67b115078db59134874fb49219ad0057122a8cf4e83d2b91a9237540c1a3470c3a9ce47d2b3587829f3a43f68dab33a8d06ef495d2cc734314571cac8cee49907b0c7f5ab45e016ac2c510468768651df3d8d62786f4e82ede492ec6615c20192393d4e47a0adb960822711da47e5c18dc493924f4fc38ed5c3888c54da4ddcd232762ab3aefcb65db3fe79a566dcdb883b7d3d3d8568e8da44daa4efe5911c1191e63852e541ce3e51c9e86b6924b14927baf0fe9e27b2b7db1f95a8059249c91f36517f3e3a7ae6b3485a1cab0050374078c679ad348219763a4c11c80037503b73572e349bcd4b476d6f4fd32286c23f9266866dea1c60648249427838fc4573cebf2eec9009ed4dab0cde874559e22c9709f2e49c10781f4acdbeb2303a47214657018143d47f4351594ef6b2a9604c6f8f607dc7e35b5ab2457168650eab32287f2c7539ea71e98c7eb49c6db0ee9a38f6b36170e4fca3040119c6476ff26b46003185238edda9176bf38ce3b52ed448e328fb9c9231b79e3fc9a6e6e5a312d352e2c8de6156e431fcaa5898e7a0e0e3dbf0acfb77577d8ebb5339cf73f855c94ba5b6d85943907048048352d74358cba9335c796c00919d40dccbd87d7b559fb5a1fbb8c360f07358993952460f3d6ab6a3a82db425506257521769c6df7aa8439a5640e492b9b9a7da45aa6aa2c2e6e1b11dbcd70258d32c182fc9c03ea7fc8ae335ab1b8b1bc2b74065c6e561d187b54ba06bb7ba16a0b7b62ebe70cfdf1b8138207e59cfd40a7de5e5c5dc02d12f9aea371f6a97cd50bb640a4b00c793c7d327b74af46109539791cf2929235742b0d3ed5ad6e6e6f3f7ae3242904283c1e3a9c035d66b36867b999e15536c316f0dca20457550070b9c8c67b8f5ae022f0f6a372b0c96d14722caa0aec71c6467073deb5749d7d60b73a7eabe742ea4af9ca32c8474e3ebdbd2b9eb53737cd177b154da8e8d178788b59f0b6857ba2dca3837b166091f91e531392be9923afb57046ba4f186b52ea9f64b794c320b4de893459db20273919e40e7eef6ae618f35d54d5a376b53396aec771f0b7c4b3683aa5d4515bc170b7b0988a4d089541eb92a78238c62beeef06dcdadef85749b9b08a386d65b68de38e35c2a02bd00f41cd7e7069d79258dfc1750edf32170ea08c8241cf35fa0df093c4361e23f0269975a7cd1bf97108a544409e5b8eabb4741e9ed51523af31707d0b5f12bc569e0bf075feb6f099cc0bf247b80cb1e17a919192338e719af877c6ff123c41e30f3d7539d22b79a7f3de0801542d8c0ce4938006319c7e35eebfb60f8a6faced34ef0e40152cef90cf3302097dac30b8c71c806be5366f5ab82495c993bb1fbb35734d9d2def229648e39029ced933b73ef8e6a82d3c1c55ee893d4348f0d58df092761632cf7ac7c98fcd54dac586001c2a8e7a9206338e95ccf8fb4a5d1f541673c4b05fc636cf0abab05e0633b4900f5e335849ab5e476ed0acedb1883cf247d0f5154cb9762cc4924e493deb0a74a519734a572e524d59218fd2a302a7dbbb3d29bb706b76894c7a9c8cd2d565622ac2b03de9a771346d685a8c360c37b4a43e778c70be8473c9eb5d8c0d6d269c675666966019001ce0920e7f0cfe55e6b5aba3d8dc5c133c92b5bd8c58f3276242a8f41ea4e3a0ae6af878cdf35f5294da563bfd235b3e148af2fe38a690980c51100ec594fdd24f1f77248eb838acb8fc6afe1bd3045e18d42ea0d4a62924d730aaa045c366204f2dd5493c7208e700d616abe214bab79ed98c9f63562d0a00aa5db18dee79ce07419e3f5ae4e4937f03a52a549457bdb8b767b47843e2f693a76a56d79aa786c35da121ee6c6e0c45815c1ca636b64e4e38ea6baed6f4af0dfc4244d7bc1e069d6a030bf81b68f224c9da4a83c06033c7a67b1c7cd02b4f46d4ee2c25748e6912098049903101c0391903ae0e08f71553a5192b243bb475da8d86a1a7df5d69d788f05cc04a3c2c71b483d31d3a60823d4566b493870f212768c1c8e80e4577d673d9f8cf46816e26964f115a1937ba8526ee2c82a49272cca030c7b0ae552f160c6f1e65bcca51f7a8cb2938c8f7070723f1ae29269d8a4ee66c7d73939fcea64d9e687008908dbd7b1a8ede096542631bf048c0eb4eb82e92f96c3050e3a608ef58df5b215c1d5da666546f720640f62698acc5b2a7047afeb52fda0a9f9c97edc9c60d5699cb15dbf4ff1ad56a5dd58bd115933bc00c0e063a74ae56fd99af26ddd4311f857451b67046720f349aa5b26a291b6fd92a64640c823deb4a1555396a4cbde472d4559bcb396d1f128c83d1874350c486470abd4fbe2bd2524d5d191dbe9733c1a6da875c61002a3b552f19456f2431dd4308f30b00ee382463bfe95168b705ed14cc4b18db683dc8ad2b93be325412bc1231d41f5af3399d3a97376ef1b1caff654e7423a98e6159bca23b8e3afd33c564c9c1af4886e217d1a7b4750636c82b9c0ede9f87e55e797516c91d7fba71d2bb2955f697b99b56b15eba8f0b78e35ff000d5a5c59e93a94f6d6772ca67890f0f83c73d47e15cb9a01c568076df157c713f8f3c430ea77286331dac76e14fa8c96381eac4d715d4d275a728a0070f5a09a4269a79e05310e1cf4a7018a451814ac703de988703e94e518e48a9b4e08d3aac8321fe5cfa67bd6c78a2d6081a3787386e1428014281fcea5d44a4a3dc76d2e72f8e7152471b13d29a2ea50b85dabee1467f3a8de491ce5dc934ae8ab1a3e6dbda9524adc3f39539da3fc6a3bdd56e2f08f39cb28fbabd02f18e00e074159f4b45ee1ca8733963c9a3b74c53680690ec3c5381a68345508ddd12fcda5cdacc656088ff305254e3ea39e6b6f57b61e65bce9fea274de9b47dde791f51eb5c5a360d76fe12d72c60b1fb0ea96a2e6c9dc33153b6588f42c87a74ae7ad0d39913b31ba65b4b234df6775578c0396202907381f5cf00ff2e2a4b583ed370cb725c4807423a71c53ae8410dfbcb652b14525a225792993d7df18cd6a5aea0351d523927c34ac9b598e327032327f888ec7d315e7d4d22da1b57467dc6952ae761dc3ebc83f4aa72e9f2dba6f930a091d0e7f4af401660c07f76d93c9c8c0fceb36fadc385c80dcf4c038ed915c91c43bd872a7289c7ec52981927d48e3f0a8d5d957920f38eb5b73d818e095b70000c9ebd7fc6b9d20e78eb5d9092992997d1d268f6ba86f50466b2f56b211cf0cc2202d8b7964af1cf5c7e46addb3e18920fb923f955891a29800f18600e707a67b5690a8e9bd362ee9a1c84427ca58d5625185e6a65965504a1240e0f5e87b55291c93f29008e01c714c9e660bf7f685c1c9e292d42e8b514fb25611e0a720641e3f0ef546eed63bc46c20f380f95b38fd2a117ea72bb5bd72475fa7345bddbcf3ac76ea4aae4b12074ada309c5dd6826d330654c64771c541d2afdd452472132a152c4919aa4ebcf15dfbaba250dcd3d48c5459c52e695cab0e269334a3a534f1408915b0b4e55ddce6a06a9627c803d284c1a3acd1ec2d97497ba7512b146382b8da467a1ab5a75b4baae8ad15cf1c8f298738007f8d732f7d7325ba40d3379483014703ff00af5bba66b52c56e20b4b769dd5739e9f901dab9ab539daeb7bfdc66715466928ad4dc7514829698051451400034ea68a75310f5ab366fb2e6339fe219aaa2a7b3c1ba8c31c02c3354f6259e9fe17b18a48aedaed4b5b44a1083918ddc920f638c55268521d5d8e9e18a315785867729c838c7a9e98adef0658a6a705c5bca1a5791b7a8420fa641039e463b7e55d247a119753f36ceddde523e68947cbb402724f6e3a91d2be76552d3773ba3439a9a6ba15ad2edeede569da35119c32ab648fa8e9c1cd41a92a85cc0d80d8c1c7bd6af82b47dd0ea975706016b729244e3cd00aa8c1ce0fbf43c6319a8efade09a749e3c98ca91b84b9523b37f87e39ae69594b429c5ca3738b986d2c18927b023815ce5ddbb8078f9bb13c8c5761a9461252a1831ec579e7deb1e78b23072b839cd75d29f2ea79f5236673060749d0f9c096e304727d4015324bb646092608c8c7209ad87b366bc86455dd1989864119ceec734496d05acd2930b3b3804b1195538f5ee79ce0576ba919ad77b19ec66c56f2cec0aaeec90062a57891582c84310793e953941b46d72549cfdd03a562eb375244ea90c8b823e62a7907d2a69c25525ca89bb62ea368f7241858304eaa0e79aa315c3d848e91f96d9c6e38cfe15564bc7f2847b8851d40efee6aa34c4f4e95e8c21cb1e593b9a24cd5bebd176abb936ba9e0fb567b95079a8639483cf4a495b2722b4568ab21f2ea36460cdc522d25381a92c72d2b52a8a43544919eb48091d29cdd6907279a9287accc3af35d8783f51f3eea3b3982e186d46c0041f73547c31a02eb2a5515d9c3ed38ec3d6bb4b0f87335aea205b5c2c9346bb82f40c7b007d7eb8ae4c4e22924e9cdea354a52578a3c931453b8c74a6d75000a334945201734514530168cd14500193524321491581e41c8a8e814c47b97c39bf486e74ebf8006b674f2274038539c0cfe2707d78cd7a7b1b8d1aecddaf9932323c6c2152a76b2f1fcc8e9e95f33783bc4afa1c92249109ed64237c6c718f71ef5f52e8d796de31f0bc77b611341e682c40f98260f19e7d71d7d6bc1c5d095297325a74677e1e7192e56713aee932597857ceb7b7b859ae017b968e356d85b240c8f9b6e3191c51e1ad3a19fc3b22b5ca99958b84c762aadc9fc7d3f956f2b6af05cdbd83daf9f1c3fb96b88581dd11fe16523a6de323a62ae1d223b2b1952084a7efd89461c707861ec46315c12a8d46cceb549396879d6b360910dc236560392463b57337016362ac09538f435db788c96475461b800c4938f7c7ff5ab838e4617677e0e07def4ae8a0dc91e5e2e2a33b2250029c8c607526a94f3492ca028e338e9c62a5f3bcc0c48e0919c5437372b671b492b118e013d4ff8575422dbb2dce377667f882f4dbd888e3055a4e3777f7fe95c73ca7279ad1d73536be901da1517ee815906bd7a30f6504ba9a4501249c9a28c719ed456858519a28a4000669eabcd0a29d9c55244b648303ad3240319078a4ce7eb51b139a6d89210f5a5c1c671428c91d29cd9ce2a4a3d2be174ba70b578e79152eda4d8a8d2005f7631b471e9fad77be20d4b4ed374295ef6e6dd268d1c46d148a656623e5521739eff004e335e59f0fbc1d7dae4c97fb0a69b6f28f364f5239da3f4fcebdcf41f839e1c96282f6ee397cedc5cc4643221cf4057fa66bc4c6fd5e35b9aa49fa23be87b570b457ccf957145253837b0af68e01b8a0d3ce0f238f6a4da7190323d453b00d1452d25218b45252d0006941a4a502988729c1af47f86da8eaf7568fa768f2dc25dd83b6a70f96ff2b045cbc6c33d187d79e08e78f37a9ada792da749a091e3950e55d0e083ec694e3ceac09d9dcfa317c6314ba9c1a8e8d2936b29cb0742a636ee8464e08e3bfe75df4bac4b3d9497389651e503246b80324f38f7e4d7cc4de23b68b50fb6d9a32c578a05ddab7255c019756e0609c91e9c83ea7d9bc01afb5c698967bd248a45caef19cfa30ef9ebf9578389c27b1d7a1e8d0aeea5e2f7317c6b37f65c534d7a4793bbe5207507a01ef5e5a3c41007941b6728df7497f9bfc2badf8abaa48d633d983e6c5f6af96565c1c727181d3d2bca57713c735df81c341d3bc95ee70577cd366e8d7a55b826348f664e011cfe756f58125f68d6d7c33f7b6b8ce707a5735e5b0c63935d2d85aea1159089ed1da091c3919c9201190a07d2bbfd8c62d492b3461276396b8cac8548208ea0d455d6f8d74db55bf964d3ee3cd50e428763bcae32320f4c0e0e79c8ae49815382306aea45c58e9545522a482933452541a8b4e5eb4d14f4a1098e2714c2d431a6d36c121c0e0d25252d218a837301d2b7fc31e18d53c4ba97d8343b56bcbbda5ca4647ca83ab12780391d6b0e2192057dabf007c0d1f84bc151c97d146356d5409e67d9878a3651b22e79e3a9e9c9f6acabd65421cdd4708f3cac56f871f0fae74af0ad8e9f7b74b3793976f2c8f2f731c9db9ebd8648eddabd26c2c951d546d7445c727240ab73ac56b032c312608c9c8c007d6934731796de548aff00ecaf6af95a8954abef3d5eacf539da869b23f37703d68e3b5368afafb9e48b4aac548c1231494945c64d712249b0aa6d7030e7b13eb8ed515252d0ddc4145145030a075a28a603a9c29a3a52d32476715d9f84fc51169f6c96d3130b29caca327ffd55c553aa2a538d58f2c8136b63d4b584b4d6b4f942b8f31fe62e9ca939fbd8fe78ae66c7c332dbdc6eba9206442708adb8be2b9786e67b7cf912bc79ebb5b15a7a5ebf71680acfba78c9c80cc720fa835846954a5171a6c8926cb1e2c251eda24c01b4b10a31b79c63f4ac68e69d190a3c80a1cae5ba5767637963ab993088b2e3a48a33f9f7ae6b5c963fb748b12aaaa7ca02fb56d46575caf46898bfb24b7ba835d794b75f662c304ccaa77fd09ef51eac34c9114db5ddc3c81001e6ae40007ddcfb565aabc8d85058fa0abb73a35fc1179935bb2a60124f419e99f4e9d2b47d916924526b700e2395243fec83fd6a0208382306ac471bae7e53c5174b9766ee4f3438e855f520a7ad329cadeb490d88dd69b4e61cd34d2602d395091900914ca92294c79c0049efe94d01240e62951d7ef290457e82f85f583ab785747bfba2cb2dc5a43349191862cc80b038f7e7b57e7d5a3017319750ea186549e08f4afab97c7eb1470ada442389515445d542ed18c7b6071ed5e466fcee315046d87946327cccf7a02de50b92bb48c019c8fa52bac50aed80221f615e25a7f8ce6b994195cc680f181d79e7f4c574765e234965db24c58927696c01c9e07e02bc3759c16b1d4ec8a52d9e87c318e334034b495f6479c28a52b8a4a729ec7f3a684368a08c1c518a56185145290298098a294f0292801c38a29053a988514b4da514c404514b4e44dc7e519340896cee25b59d6681b6baf7ad392eb4c9c3dc4f0c9f69ee8a708c7b9f6ac73c0c54b656d25e5c2410a9676a1a5b89aea777e1ab4b286d5a6b70e5ae3a17c1d8be9fd6b7a3559610b20dcacb8d87900771cf6e3a564e9e8ba6d82c44ab18c739ea79ed4db9d4a599888db646063038e2bc6af79d46d33356bdd96271a22ac8b14203b0193b78cff9f6ae4356d21a692496d109eec80e7ea47f856b94323671c0fc80ab7a949148d19810a1db86f7c77ad69d49537bdc39ba9c15d594d6e079b13a13fde522aaed35dd18fcd9042ffbc563b080339cf19fad73fe23d1a5d1efdada52181512238180ea4641fe9f506bba9d58d476ea691936b53141c75a319e94a47b7340e2b42c42a6900a938348453b05c4076104574be16f107d8e430de4aff6761f2f7d87fa5732493d693915328a92e57b09c6fb9ecfa56a9978ca49c67230c0822b6935a7139dcff74e47b9af088351bb82231c33ba21ec0d21bfba28c9f68976b751b8f35c12cbe127b9294e3a267fffd9", + "properties": {} + } + ] + } +] \ No newline at end of file diff --git a/test/expected/backend-l.1.0.1.json b/test/expected/backend-l.1.0.1.json new file mode 100644 index 0000000..82784f7 --- /dev/null +++ b/test/expected/backend-l.1.0.1.json @@ -0,0 +1,13 @@ +[ + { + "version": 2, + "name": "_image", + "extent": 4096, + "features": [ + { + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f9773452ed39a5238ad08100cd14e0074a471834c2e2519a05140c75148a69c45021b9f4a5eb498e696800a28a5028100a5e94b4d34c05cd3e299e17dd1b156c6322a3141a2e161e5c9249aeb3e1fc529b9bebb484490dbc3893d5771c03f9f15c7d6af8735ab9d16f8c96f2308655f2e788310b2a67255bd4700fd4035152f28b484e3747572967763d89e99a61da17ae7fad686b3682071344fe65acea2485c7704035988a5db0bc1fd05797ea6528b8bb32405780323d734994072493ed8c7eb4f82d9a6731a95dc7eef3f7be951c7034a5b6e063aeee3153742b1234c9902255471d08cb1cfd6ad883ce8912e638e48d70a1a4e71d78e79eb51dbd94a2eca36d550a19f904018ae8ade24953722aec54c9c9c0c03e9594eab8dac6b4e939bb1c9bf84ad2ede46b792685413d70c07f2ae5f58d0ef74b726e226f27b4a07ca6bd9b4eb681ad1c79611998a865cf63dfdeb98f8877b05ae9325a3481e597855db82067a91dba574e1b1b52a54e492b9d3530feca29dcf2a270783464d21a415e9988e04d3c73d698b520e95484c630a681cd3cd3738e948689dd7a83c1f7a85b6e31821875f7ab2cc1e405b8f5aa85b7313552d098803834ac771a4a054142804f4a923883b6d2c14fbd463ad38b13804d52b7501ef0947c1a611834bb89ea49a3afbd1a3d843694504502900b4a29296a8421a4a534869318506928a57003d29a3ad3a971819a067a57c3ed56c2fb469746d56f04374ae1ad4ca708cbdd437639e7078393ce700ef788bc2aba7c0ad16f13e70632a7e618cf1e87193cf519c578a93935eedf00efaeb56d2f51b0bf9bcdb5d3da268b7e498d5cb0600e0f19da71f5f535c18aa5c89d58bf546f4946a5a125f33953b0468f6ca4383f78751576d23478da676c3c8416553dfd4d6f78de08b4dd687d9768cef4f9546dc0fe639ae6a08489f38393fc2075af3f994a37472d483a337165e8acd3cd79636cc8e3047600d5b48fcb723ee285da3d7f2fa53a345da84eeddd30a7200a6bb0128dc49e319e9583936cde3a59b0b7bb36e708c7cd2a59548e09e7193edc9af23d66f27bed4669ae58b39623e82bd2354bc5b2b5bdbb2adbb05539ce32303f5af2d95b7393c735eb6029da2e44ce6e4edd884f5a295a92bbc42ad3fb5314f34f06a912c4a61eb4e634da4c689a53f21c1e4f150629f3b6580fc6999a25b82d8052d145218669c067ad36973c5310b8c1a5a40dd8d1400a0d2d3694534c43a8a4a514c4211462968a004c518a28140c314869692930100c57bbfece4eb6ba0f88a568b719a68630dc741b89047e20d78457bcfc21ca782a08226f2ccf3c921656e4b703f0385e2b8b1f2e5a2fcceac22bd55e437c773993c4738118510a88d31d4924926b010bbb2193aafddcff002adcd796292f5ddc11348fba4511ed084003007bf5acb7449a7298033c80be9fe4578e9a51b186253751dcad26a8522754eabf2e467bd606b1e209ed898a354dcc376e20f15bb789122f0638a33f31661c01ea4d79d6a977f6ab967e00e8a07a5776068466f99ad119b6de825e6a17374bb6799dd47404f1544d29a5550475af5edd102d08a8a9081cf151e2958ab8a053c74a68a776a684c6914da79a4c5218c3cb1268029ec29314ac02514a79e4525030a28a2800a33451400f1466980e29c3a53b8ac2e69c2994e14d085a4a534d34c42d14829d40c6d141a29000193815ee1f0ce096cf40050b075c10a1b04b30cff223f5af15b304dd458193b871eb5ef9f0e190e9b746525419885ce0e3b107f4af33329354d23ab07ad431759dc2e5f259987de39e72793fd2a923451c12dcce5d04685d70a4e7033fd2baff0010c11dbb4b2becdaaa5a4dac39503ad790eafe2592f22962b7844313f0496cb62b8b0d4275f65a19e261c92b90f88f5f1a846b141198e01c907ab1ff000ae65df269d3be5b02a2af76308d35c90d8c22809a506928aa287e78a4a40696810e02834abd6835421b412053aa36cd2d865928b82722a172a3a535ce188cd3686c120ef451454941452f5a4c5300a28a290052ad039a5a6214528a414e14d0829a69d4d2686014521a334863851494669dc45ad3f2b72ae064af23eb5eeff0f6157d252d81282490fceb9eb819e3eb5e3fe06b14d47c49616d3413cf0cb3a23c76e332b0279083fbc6bdd7c3f67e4db087704662fbb61da6327ae0fe3d6bcbccdfba91d5835efb679cfc66b9b2fede86d2ce325e1802b4bbf3c6e276e0715e6d336d5e2b57c43676f61acdd5b59de0bd8636c09c0c6e3dfebf5ac9994b74af4a85354e928c4e6a92e79b6caa4f3450c083c8a4a063a8a4cd1400a29d4dc528e94c43c529a68a7678aa421b40e29cc314def4980d2d918c52514549414628a70e94c4262969714628b05c4c50453a97008cd3b0ae460629c2948a050900a28a3b521a620a6d29a4a4c6213494ea6d218a0fad2d36956803aff863a8ae95e2fd36f1f3b21b88dce0e0f0c3bfb75fc2bbff0011789ee17c353cfa7940ccbb7e619c03c31fad78cd9dc35b5c248bd54835dcdbdf58dfdadedd35ec71bc99dd632ab12771e4abf4e324f415cd88a3cee32ec5c2a385d2ea717534b6c52d9663244437014382df954773e5c52b2a49bd41e0e2a02ea7b9aedbdf630b08f83d69bb57d050580ed9a6e4d4b6521c7681c01516de6a50411822a62901b5dcb2b79e1b1e594e36e3a86cfaf6c516b85ec552b8a5ed9a462d9e948a739a9285a51499a514210f03346d1480d3b22a8441453b19a315255c6e39a752e2940a2c2b80a5a0504d5080d19a4269295c62d25252134ae02e7146ea6d140ec2e6806928a000f268c7345140c28a28a005079a9118af4351814e1421314f27269314b4004f414c4252814f09c50aa09ea69d8571bde8c538a95393cd19005003453651c86f5a7e4531cee3ec2863437049a5c528229a4d48c7022949a8f345170b1262940a51467d2a890e290d04d21a00526909a4cd252b8ec29a434a6929301a4e68a28a0a0a28a2800a28a2800a28a55a004a5029714502002940a054d1216230324f007ad34ae26c75b5bc93c816346763d80aeaa4f05ead6ba0a6aba9462cace5844f0a1e649e3e3f78173f746e5e4e3a8c03ce3d87f66df86df6c12788b588964b0923f2a1b6901c4ae1c365973864e17ae41e78e01af25f8bb16a56ff0011f5c875b9fed17b14e54ca06ddc981b381d3e42b57e489f338fb809bd844cc63c9da586091ee327f9d41bb69e0d4925427ad290d0acf9eb4c2c734119a422a2e5242e693268a281851451400514503ad004878e9466839a6d36c917341a4a295c028a28a061451450014528a5c51610da3029fc7a52114ec171b8a4c53c8a4c52b05c6e2940e78a5009ed4eda45160b8dc518a91538e69ea8055728b98646b9fa56b787f526d23548af52de29e48d5c46b283b43152037b95ce47b815d3fc20f07d978e3c55fd8d7b3dedbb3c2d246f6d12ba8dbc9de49f946381807923a57d5517c2df0dc2ba142d6ccd168f2196dc3303bcf70f9fbc0fa7b0fa1a4d458acdea75fe058c43e0ed1d040901fb246e6344081495ce02f60338c57c57f1dee67baf8b5e246bafbc970234c2edf9155427fe3a073dfad7ddd0aa2dbed456080602e3a7e15f007c5849d3e2678a05deef34ea1313b8e4e0b92bfa1159c2dccda2a5b1c73f5a6114f7eb4c354c486d14a692a46211c5253a93140c4a2948a9acad2e2f6e120b48249e67e1638d4b337d00e4d0043834638ae9f41f04788f5d91174ad26e67672bb4602e77062a7e62383b1f07a7c8dfdd38f49f057ecf5e27d4f5c3178921fecad3223fbc98488ef271c08c0ce79ee7a7d78a6d5b70d4f1775c8cd426a77e9c5426aa44a1b452e28a8b0c4a28a2818514b8a704c8a2c2b8d029e16a48e224e0024fa015ee5f06fe0b5af8e7c1f26b573a84905c0b9786281a3fddbec0bf788c360938e3d3d6aad6dc5bec785aad3b60afa0fc55fb3f6a10a25be8fb2e351f2ccc658f31dbbe1be64da725186e5c65b2c3240e1b1e3faef83b5cd12e6e61beb1901b63895939556dbbb6e7bb6d05b1d76fcdf779aa4afb09a673bb456df837c357be2cf11da68da62af9f70dcb3748d47de73ec07358cc3070460fbd777f04b57bfd23c7d6674a36e2e2e8c76b99caa82ad34658066042e54104f5da582fcc453b76123d2af3f665d404b6cb63af5b3c673e734b1152be9b4679fc48fad797788fe1b6bba25e35bb24174e198048a41e6719272870dd0678c8f7afbe531c8c000924107b52fca5437f10e067a8fa562aa5b72f92e7e69cd13c32bc532347221dacac3054fa114431b4b2a471a967760aa07727802bee2f893f07fc3fe328aeae12de2b3d6a6d845ea827a1e72a180248c8c9e8704e40c1f33f871fb3d4b65e29b96f1a470dde9b02235bb4328d9339e4865fbdc7b8c1e7820d5a9a684e0d1e3df0f2e6c740f167d9fc6779ad6936301f3648ad1595da5520aac8a3071d7f4f5cd7dd2cc258bcd8d558300ea4fbe0e7f235ce78f3e1d683e368238f57b45578c1db342aab20ca9017760900120e063951d4641dfd07498345d12c34cb6691a0b2812de33236e62aa00193f8544a49ea54558bb0333c7f36010bce2be1ff00da2ac25b1f8b7ad34b1796973e5dc47e8ca51413ff007d061f857dc6eabe5b02405238ec7f0af88bf692d44dff00c5bd5137ef5b48e1b61ec446091edf331a74f714f63cb5969a56a5a08ad6c45cae4537153b2d4656a5a293194538ad5cd3b4abfd484ed61677372b02ef94c3197d8bea71d054d877343c11e16d43c61e21b7d274b4ccb27ccee47cb1a0eac7dabea6f01fc2597451a2be9925b2e95711b3eacd710b2dd5c2942044b901914f1c0da47be71537ecade113a1f82a5d5aeed6586fb547de0c8307ca5242000f2327737b82a457b68236f20823f2352e5cba0e2afa8c8238e28618e18d2348d42aa2a80aa0740074007b53e5e036deb8cfe348477a07cc724601fcfa54147e68b0c8a8cad4d484574b462995c8a43560a8c537ca24e075352d0d321adef0bf8475df14dca43a16997377b9c219110f9687fda6e82ba0f0a7c34d7f51bdd3e5b8d2ae0db4d32810b02b24eb905801d546dcfcc70071cf35f6df863c2fa5787ad6d92c74fb086e2187c969ada0f2f3d376dc9620315538dc73819248cd4bd16a5ad4f26f097ecebe1db6d2248bc51035ddf92a04f6d76ea00d8bb8e36800efde075e003dc81e96de00f0acda75b59cbe1ed366b781046be6c2acfb40c7dec649e0739aea2d65f301dfb73ca91f8f7f7a791f295071fd2b3e663b238bf0c7c32f0b787ed2682d74cb798b80ad2cf0a1723680412a01c120b11eac40c2e1475d63656d616d1db595bc76f6f18c2c71285551ec054d8c12401920034a33c2e383fa52726dea348518c1c645230c9391c9ee7d29588009a68c6d2cbd5b9fd38a43380f889f0c344f1ac96735e58c62eade4dad32b18cb478e41dbf7bb60123ea2b8bb8f812346d6741d4fc097e9657562c4dc1be667f3724e186d18cf24153f29007b9af745276807ae39a4e2ae3371d89714c8ad93693d7f1efc62a5c9231437b52ad4b771a5614120520ebed4646720d2a904819e0f6a431af919009cfad34b1638ea075eddaa4917048cf4a6a8561c8e7d0f4fa8a68424b1ef099c7cbfad7c43f1bbc01e24f0d789f51d535512dfe9f7b70d2aea489f2b1639dae07dc61d31d3d2bee1273d739f7aa5aa69561abdb7d9f54b2b7bc87921278c3804a952467a1dacc323b134e12b3138dcfcdea2bde3e377c13bad1750fed3f07595cdd697372f6d183235b11e9dcafb9af0ebab49ed4a0b88ca6f1b94f50c3241c1f6208fa8ae84efb1935620a4c0a5a4a041806be9cfd92749d5ecadb58bc96ce11a65dc90c6cf34c55d711b3e563c1ce43c5d76e55f209c60f93fc2ff84fae78f273242a6c74b4203ddcc8707d907f11e3d40afb3bc13e18b5f08f86acb46b29ae2e20b55204970fb9d892493ec324e0761c544e4ad62e09ee6cb1c0daa08ed91da9e5cec200f9bd695b9e7bd34676f3581a898c281c8ff1ef4fedcd266940cd007e73ebde1ad6bc3c621ade997563e6e4219a32a18800900fa8041c7b8ac9afd1ed6344d2f5cb616face9d697f00e425cc2b200718c8c8e0fb8ae1e7f82be009ae6691f4084248a14451c8e8b19c9cb2ed6ce4e40c1240da300739dd545d4cb919f0cd7b17c14f867aa6abade83afee8bec515ca5cb47b77108ad90581e003b4fbf22bd9b50fd9dbc132dc452db2df5bc4a732442e59838cfa9e4771f8d7ac689a3d8e85a55b69da55ba5bd940812345e7007a9ea4fb9a25356d0518bbb4d16d19426dc05cfa53dd48da4138a61cf21867d0d018f4ed589b0d11053f2800673c714febd69dfc34dce0d17017240a690378207cdd33e94bd7a5382823de810841ce68147340ebed4860683d28ef4500001cd2f7a5ed4ceb4011cf2f952c08594798d8e7bf07814f032158755e08aafa843e6451b2cad1bc6e1f8246700e41e3a104d58e7ccdea723d7d69f410f0dbc80dc6290f5e2958e79f5a41d4fa0eb4860681c1a45f5ed4b8a0009e78af08f8eff0007affc61abc3abf87a7816e121292db4bf229e720a903a924e73ed5ef38e94d842b31ce7269a972ea84d5f43f3ced7c11e28bb9a68adbc3faa48f0922402d9be523f0f6af4ef853f0375dbdd6edaff00c576674ed32170fe4cc4096738c8000e83a726bebf91406390377d2a39149db8e839c55fb46c9e4b090c4902058915100000031c53ce71433858cb370314abeac3159961f8e45149c678a5340099c9a70a31c714500275e94840038a69c87229e083f5a6037b734e8f206d2723a8a6923753c52010e41f6a42a01c8e29c323d2948340588ff9519ce40a465c1e6946060a8e6980a99ef4e27f2a43c75a073f8d200340e69718a0f14001a41d69714c90e07502801c48edd69075c814918e9520231c50031d37ab29246e18c8ea2ab5b2cf83149e5e23e8549c9f41cf238fafe956ce31cf029540ddc01b8f14ef615818e40c0c714de991f8d4920da003d6a3ce4d21877a01f4ef4d20e081ff00eaa70edf4a042b1c2fbd362186e7ad19dadb8f4f4a703f3161dff4a062cc70dcf27a53436e3fd29186793c01510765c8c0ebc1f6f5a690ae2cefb464f41ce4f4148926ee01e7af4ed4d961f3d503b9e1b3effe1536d3b460a86da01e33d3f5a7a0841d69e29385f5f4a5c60d2b8c326941e79a00a4ea78a43038ce7bd02a3dd406a0073ae69dbb23d2981a90bf6a043f276d3d09c74c8a84be451e61e9da81dc9580ebd69a17be6981f1eb4bbf8c01400fe79a0f1c53377146ea007f34bdaa32c71406cfd28024ce0d0402083c835097c66951cb37a0c649a005276a9c75e9f4a588ed0693a9ed4f031cd31d87672011484e18519cd046690587cdebf8d3231c5296e307b545e65022438cd15196e334d67c2d0048f8228e838aa33dc3e311a33b1e83381f89ed5750e2df9e4d30219e4c6013d7b53c2ee45f61c9aaadfbcbacff007063f3ab48f8078e69b625b9260818cf34e504e4e73516fe334ab2100e3a548c71018114fedef5087cf4e2937f340225ce68e3151efe33406a07605e40a31d69c1481cd14d12329add6a5c534af2734ec030507ad3c8ed48171458040b9e4d38019a41d694f0334580434734dddcd3b1d295800f5a5c7149d28ce29d806b019a70f6a4e491f9d28fe748648a29e69b1d3f14143338e2941f4a46a6914098a4d34e074a00a5ef4084380b552e5f3b54f009c13e839abb20c28f7ac9d527105a5c5c30cac71962338e993d7e80d090992e54aef5009c71ea7d2ae1ca2aa1c640e7ebdeab6956e915b871b98c9f382dd4038200f6008c55a61eb431d888000d3d4e47b9a6f6cd3e3eb8a2c2060693000f7a918640c7ad31c7cd8a2c3b004c1c8348eb8e7b5394f3cd3ce0f14586881720d38373cd2629a9f7a900e37f122832b6c05777cc31ed8fafb54db95f25483b4e0e3b1f7ae575bbc46bff00b1c5710cb73044d72e8e3b64a82547054302300fa55b8dae6e2e2dd2cc98a3b755698ca4ff0012060ac7ae79157622e7403ef529193597a6ea915e5d35b61848aa0abe30b28c7257e872307f515a5d29d8008a422979a46614ac0348c73de90b640a7120d46e718f4aab00a793ef4f1cf5a8c1f7a900cf434ac0231a677a561cfeb502dbc867121b9942860de5a850318c119ebcf5a0659032052a8e4601229c140501470062a48d70314868231cd3c52edc0ce2a19ee2280c7e6b84dec1173dc9e00fc69586291ce7bd27b538e306928b098702984f39a711da98fd0014ec2b95ee2621c236155ba1e727d79e9f4a6c881b2a4020e4b67bf602966865951e3531f998dc8cca70b82011c739a944610607b0a62162f94e07dd1c0a7e334d5e9c5396958a4c611ce3b53470d5211ce474fe74c61cd1601e0e45230e698ac474a93391400d3d38a5278e7ad28eb48e3a500349c9e9d6853cd1da940a00ffd9", + "properties": {} + } + ] + } +] \ No newline at end of file diff --git a/test/expected/backend-l.1.1.0.json b/test/expected/backend-l.1.1.0.json new file mode 100644 index 0000000..d654f6c --- /dev/null +++ b/test/expected/backend-l.1.1.0.json @@ -0,0 +1,13 @@ +[ + { + "version": 2, + "name": "_image", + "extent": 4096, + "features": [ + { + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f984e7b518a53456e660690d04d25201452d36945002d14514c4145145001451462800a28c518a0028a28a0007bd21f6a5a2818941a5c6693a5200a4a5eb494005145140c514f5eb4c15228e69a258f078a69a53c0a4354c430f5a28a2a4614e1d29b4e5a0061e4d21e694d200681894549b09a611834ac171294514b400514629714c42514e0b4f119a760b910a5a90c748168b05c6515262908a2c1719452e2822900da2968a004a283450020eb41a534948625145140c55eb538e950a0e6a5278aa892c4345145021a7ad253e9b8e690c4a70e9498a5a60205cf352050050b4a69a44b62138a898e4d3fbd2f9743d46b422a502a5f2c539500a5ca1718169c129e0628aab0ae200052d078a92089a7992242a19c85059828e7d49e07d4d3111d34ad74be24b05d3e3b5b086ea2ba580177d91019760092ae3efafa1cf183c0ef99a8a3dc4297d0e9e2d2cce210d1ee28cea067962793d48f7ed4019946334a29c280181682b4fa28b01095a6915b0745d486a8ba6bd8dc2dfb155103210d9600af07d411f9d51bbb696d6e258278da39a2628e8c30548e08352d0d32a52629ec314da92843d293b53a9a339340c4a5a3145201cbd6a43d29a829cd54b6258945145001484734034b40051451400e43c52e335183f3715734f896e2f2de191c469248a8ce7f8413826a9099005ad6b7d0b519f49975286d2692d227547911490a5b3827db835ec937c23d2b48f1969865b937de1e9aead5564f30309a295d9198b0c6ddac147fc0abadd2fc430fc3cd76f7c13afc9a769be1b21a557b88a59e696172db63241c020719c639f5a9e6ec16ee7cd5aae8da86947fd3ad64890b322c98ca31538386e879f4aaf6767737b23a59dbcd3ba2348cb12162a8a3258e3a003bd7d3dfb48fc47d13fe10f8bc35e1cb8b4bc7bbdad2988ee10c630ca4638c9e3dfad7cbd0dc4d0acab0cb246b2aec9023101d739c1f51902aa2db5a8322a28a2988ef742d0bc3ef649abdebdd9d22d760b8690012dc4a43663891720741cb30ee7dab374163a76a4758b5b226c2495e2b68ae0eef3064653701b5980232186d3e9dab9982e25b770d0c8c841cf078f4feb48f2bbccd2e42b962ff200a01ce780381f851603dc6eae348d3fc4ef77e3eb69347074c6fb1d8d849fbc6dc4831cd8e5491919c0ce7a8c579a788fc5e756f0de97a1dae9969a7d959132379392d3c84637b13ed8e2b9d9af2e274916790ca647f319dfe672dcff0011e7b9ef55e8b009fc54b45488b198a42f21590636aedc86f5e7b50013c9e6c85f6247d06d418151d145007d1ffb26f86adefa5d5f5ad4fcb758f64716e7cb0c6739f41d3df8f4af3afda122d361f89da92e931aac6c16479125deb2b32825863a7a1f7156fe0fea2da86b9a3f87ed63b4864b89b64aedb87da5402de5c801195cf27bf031e95e97f1bf46d19fe17dd5edfd8dbd9f88f4c9a1b111c5f205f9b2303f8c32966cff0081ae752b54d51a5af1d0f96e4151118ab93c3242db26428d8ce0f5aaeeb5b35d494c8e90d2e28a9189452d1400e434f34c406a50bc55213198a4c54a06282b4ec2b90818a5a732e29b53618528a4a51d28403454d6eca245f3012808dc075c5403ad3d0e0d0819f4ad8fc4c8353f09f83744d2ed25bcb98894bbb5562ec9e56d287240c293c800f0063d2b57e3f6bfa6f8bef60f0bdbd9c1f6f4b137e9792abf988fb4b792aaa339201ceee39f6cd796fc013a75d7898e9fab6af3d8c7232cb0c48180b870705772fcca70723b1c7d2b0b59f187fc5d0bbf12d9daa2797705ade2491954055d88491c9e809f5e6a391a93681bbab1c63298dd924521d4e083c60d358ee6270067b01815b3e31d663f10788aef5286ce1b38e62b88a140a3850376071938c9f7358b5b22428a28a0028a28a0028a29d1a3cb22c712b3bb10aaaa3249f402801b4549710cb6d3bc37113c534676ba3a95653e841e951d001452d3a34dee1772ae7bb741400432c904a92c323c7221caba1c107d41aee741f18eb5ab451f87b55ba175a55dde457176f380d232a11d643c8000ae131ce0734ec3ab94190c7e5201ebed532498d33d8fe36ea7e05d5a0f33c38f24daccb3091a48c8f2b91b59791923e5041273cf35e35221562ae0ab03820f515d52f86231a53bbb4a6f02ee0aa3209eeb8ae59d4ab1073907bd4519464ad1771c935b90b2e298454e4669a52b4684991629ca99a704f5a7d0905c455c52d145310514504e064d0014d2b4ea280222b8a053d85369586463ad3a994ea928b5657335a5cc5716b2bc33c4c1d2446dacac3a1045349c9c9eb5121e6a4ab440514514005145140051455bd26ca5d4752b6b3b750649a40833d064f53e83d4d00775f0abe14eb5f102633db85b4d1e29364d7921000ee428fe238fc3d6bbe8edfc01f066f9ef23d4dfc4fe2fb725608a350b0dbb7232d8246707d491d80ab7f19bc7d17847c3b6de05f072ad87970aade4b6e71c951b803d724e727a9cd7ce5d7ad42bcb5e83d8d2f136b371e21d7eff0056bdc0b8bc95a570bd067b0acca28abd842d253f2db591492a4827f0ff00f5d757e1cd36de3892edf124847cb9e83f0acab5654a3cccb8439dd9191a56877578db995a141d19d7afd2b774af0da899a4bac49861b115feefb922ba5b3b2926569ce1611925db9c63aff314d6b958637f2541c020161924fa8ec2bcba98ba93db43b234611dcbd1daa88ddee25f2e3c15dddce7fba3bd655e58e9eafe5dbdb298c704b00c587d6833c9332b6d650c30436091e99aab797eb68a8000d7327dc52c300fa93d85634dbbd9153b3d4e1356812df51b88a2c6c56e31d87a554a9ef9a47bc9da665690b9dc54f04e7b54201270064d7bd1d95cf3989452d3a38da40db47dd1934c0d5d134593500eecc1110e3041cb1eb8fcaacf8a3c2f79a16a1342e04b12608743d880791d475c1f7a6786f5b934b9420b7f3dbcc574427196c8e0f7c1c0ad7f18f8c353d66e9e6d42c20b6ba63879220c0301d06093f9d72b9565574b58b7c9cbe6718c197e560460f43487a915d35feb1a75f696fe75be2f08c0e3a1f506b98ae8849c96aac4b0a28a2a8414d614ea2802002969a4d28350592275a7d46a6a4ab4430a2ad43617330531c2c431c0ed9350cd0c904852646471d9860d09a6047451450015defc301169ad7baf4f31416b1b08d047bb73019e4e46d1d3eb9ae0abb4d02ee0bdf0ddd696be5c136c2725b1bcfafb9ac6bb6a25c126ce6358d426d5b54babfba399a790bb7b67b7e154a9f2c6d148c9202aea7041a92c6d9ef2ee2b78b1be46da33dab5ba4afd08356d743967d09af11373925970dfc20e0f1f9d55161bac564456666e770cf03b822bbb11359682b05b302d1c663e475cf53fce96ce2d3e0b18c40307682a5c64107939f7c8af2de324aefccea741248c2f0ee8f613d93bcf089a4490a960c7071e9835b8b6d042a046aaaaa080abc002aacc91c574971187492421180c0073dcfe552b382a467183deb9ead494ddee6b08a5a22692ee5687cb0dfbb5ea3a67fcfbd445fae476e6ab4b36c638c06f5355bcd25c0fe9cd66a372ef6341e6d8a427df3c283515bc2049299479ad28f9b2300e3b7e55734db48625335f0679490522e99f727fc29f7b32b0558e28e3dadb8951ce3eb4af6d114927ab33d349d359a433d9ae5893b949e3f0cf15933786a48efd6681a26b70c1b60cf4cf4ad992e9448d8c80477a9ed1d6e248e3676443f7d801c7d2b48d7a90ea47b284ba189a9d84570ee4c0237e9903a5722e0a3b2e7a1c7d6bd46e6381e278965de40215c8c13e99ae2ec34196e7ed2b701a290380848e0f527fa735d985c4a516e6f430ad49dec9193a77986fa1f253cc937642fad7712fdb2ea2305c5820dcb82fe602071d4566e97a741673f98be619010327b7afe75b8f76fbf2403d8fa9a8c4625392e444c68dd3e6385d5749b9d39ff7a84c7d9c0e2b3abd16f66fb55a3dbba830b8da4f3c7b8ac0b0f0a49705ccd751c4ab9c103766baa8e2e328de6eccce54da765a9ccd15a7ab68f3e9d2904acb1f50ebdc566575464a4ae8cc28a2a7b1816e6ea38a49a38118f3249f7547ad3033e8a9140c539579cd458ab8b04124c708a49032715da695a0d9c76d1cf7c5b729ce0af0fc6401fe4552f0768f737b3fdacc520d3e27db2ca010b9c67693ef8fd6b575dbb47bcf2ad9d0c71a84cc68514f1ce01ae5af55c5f2c47157d58e92e92da27cc29865c2b11960036460f6acbd4613aa7ef27b8632226d8d58f41d719a40d9039c539a68e3219f6907af6207b572c6728bbc772a566ac60df69f7165b4cc9856e8c391552bb38e58678b6ccbe646e4f56c8c76cff8d73e628ad75b5446cc61c7bfe15db4b11ce9a6b544b8db629db5b99d6660e88234de771c67d852456d34a85e389d901c16038cd6d5a69ab35e4b35f4623407841c06fcbb56dee8f09d06cced000007bd454c5a8bb2d47185f739ad32ccdc620ba8596376c897182a71ebdc1c55a97489b4cbb86e6ddda78e260ec506180079adff003148e581e38a9ed308924d310a982109eededf4feb5ccf1736fcbb17ecd223176b71621e2e438dd9c7229b6f347b2258ce3e50a0e38071c8cfe751c9711451fcbb54039dabdcd38c720d3d33c1560c4b0fbb93ff00d7ae776368bea49736e2640e4fcc983eb934db6264695e450cb172c010327b75a7ac862255d181e381ce7e87d2a934b19bb6f319bcb272c8bd58ff009cfe74450a73b3d0e82da14ba8e305e34cb6d39e7f1a759adbd94cb3488b2ed60385edf4f5acd82e000554152795e738faff008d32e1d8c790dd4723fcf7a524996aa6971f35e2b6a0f2c8c581ce07a03492dc24d1b6d043118e9935455189e793568298d06100f5c75a1ab094990f94c4f231528755070707341230719069ac9fbb271db3cd66cd63a2ba24b7959d1b81e648703d87f9ef57256f23633287d831b73c127d6aa5abeef2c73e838c8ff38a96e5833ed3d00efc554968429134091cac19919a4e871d09aa5772c793b015f66e6b47490f23bc5182b2f1b18f4ce7233ef5972c4f31763c3f4618ef44626739761f6d7b1c36c5245676249fafbfa521bb4046c1b01ed9e2ab360a85e770eb9edf4aaef1966efcf3cd528a33e768b3a822df42b6ef36c07f8c7f5aa09e180932486613c00e4a8f949f6cf6ab5b55429e437f31eb5a964e3690a4903f84e07d6b48d69c15a2c718c66f53174ad06d6f2de413c53c33ac8ca06eeddbb7eb4ba8f8366485a6b190c817aa3f0c4fb7f8576286deda269a22c242b83e611c67d315722b980da144043b3296600b1c83c1c7a75a6b17579af7d0d7d846c787a54c8a5d9557924e052451348ea88096620003b9aee2cfc1f7365a7c17b7a444f3a97891810c547048cf1d78af56a5454e376716ec6c12ad968d1430b6d9594861b720e7a907dfa63159170fe442efd7038abf7e0249b06485e393e9e9f8d60b4c2eef56290910eec601eb5c308b9be67ea56c5bb09649a0679f685cf07a55808ac7d87539cfe14310b8440020e00a646f9538383db8e959c9ddb6868cc921992ee54b72548395507191ed5ad630ac689b970cdcb6ee4e7145b4913a1ca832ab100f5a9725f71570ac39ce719a752aca4b94168c91e65270a33d3f0a125dc47240f4eb55802a70c307da9c5829e00391f9562d07317adbca937bcce55410005192dd7f2e94f95cca59ce06d0005eca2a809019580f5ce7a76ab0921647443cb11c1ee076a96ac172e2448e9927e65e9df1f4353bb946c7540705ba8e39ace590a8e84f7e0e2a53396196241c75cd1ca6d1d892e25cf3bb27fc6a9300af19271cf51d454acc7230703b0c541390475e7e942563392ee5af39514104927834e1316070481d7154a27182a73d3b548001c822aac2b96bcc236b2e437422a78a76e01239fd6a9063db8fa50ccdfc246e271f854b40aa345b94a3e49ea4d2b10d100c1885f4191558b61739e7e9de9636201c1233c1c7a566d6a5c6abb925912acbf36d2a79e7a8f6ad070b34a1d18027d4f35457611f70023b8a7a805065806a6d8f9bb1a168f240c1930483d00c818a742219ae8b492491a1232c39ebd78e9f99aada533f98cb9251bae7f87deb56e746bab71336e8a5808277a367206082075e723ad56c5277464eaf6c225520625cfcd8391f507b8e95481fe0db9cfa8ce2b4e695e783cb650d86c15ce318a8ad60dcd99404c119e7b73939fa508c9efa096f015609228daddcf6c763561f646bf2052e09184fcbfc6925bd8257630c91ccb1f521b8ff003c03ef555275bc8d258530243bbe61838a2cd6e5a6968873cecc5c632146e3ea7e94926a9f61679e49648c0f9b2a3049e3007e95626885b2897cc5dc4618e40007f215cf6adaa6972dacf6c0ced2143875c15dc0f03e9c0aba549d496da17ed7951cbc0db278dbd181aefbc4faa472c36314729dab123b124805881d8938c00076e3d2bcf6b4adade5beb79a79a525205e84f24e2bd4af4d4acdbd0e44ec5f0c653b4b0e3dfa0acb711d9df704c81483c569194a5aa492feecb29c6463ff00d75956107da6f21893827924fb7358518d949bd86d9a52cb34b19786cf0a79dcc71c7d29eb68cd2432bc8158021957907d2afdbd94b6f094b86f30127e6ea36ff8d44e06d1b07193df9ae77516d115c8c4401c8032dd4fd28da1090c3bfe3563ca1b7e74c9383f4e689e2dc488c723938e6b2b8af72b31240001e2902e01ce78ce715a3656e5cecdb2073c805700fe3e9435b49c968d43138e077a5ceae1a99a80094804904d5c8f68c0007d4546201e7003eeb7033ea2ad8b6652723903f034db4545d8433303c63239276f526a2f3599be7008cfa0c8a9fecaf8cf009f4a6ada49dc13cf5c54dd16a69e844ca700839c9f5a24418dc4647a67156040c080c085ff00eb67f3a8bca63c8f9cf43fec9a771b76dca510eaac391d0d4c1b0bc03cfa8a93cacbed2002adb73df9a49176e02e0e38cd36ee6611c992077a1a4c1273c8a8cfcac4e467a71535bda9941918818c9c9381c51615ae2c692b47e61c6d39f6cd346770e6b496d442e8b2480a15ce4a920e47afad453451ab281804739047eb4345729591883c9341701aa40a9c6f5e9ebce4ff00852341b9b28067a71de972a16db166d5c22120658838cf6a82e75c8e3768dae0a9da148e78e9fe154f53bf6d3600abb4cf2a9da0ff000afad728c4b312c4927924d75d0c37b45796c1cd63b58fc4568aebbf2ec71f32f18aa3e27d6da78cdbdaf96b04a7736cc67e9ec39ae5ead69b6c6f2ed62edc96fa0ae8586a74df3f60e67b17fc3f633ea1e6c5b8a59a0f3666ce0003dff1ab37be24108f2ace1d8a8a157756b4e915a6897168a8224971b8938c01c8527d49e7e80579f39cb13510e5aedc9a1459afaa6b5717b12c67091f0580fe23eb5921ce73431c814dae849455a256fb9a3f659bed42d8c644c4ed0a78e6ba6d374a96d2ce78e695034846367cc0119ebdbbff009e2b4b4ed3c167d4af2226f64cfc8a41d800edf85595decec40098fe0cf20e3d7debcfaf8be75cb1f9936302f34569e45925ba66079718ee7fbb56ed3438ece71322b16c60063c29feb9abe2556983aa85607ee83cd587ba5dc4338caf3b48c7e7dab9e55ea35cb7d06d22938dd290ce0104e003e9fd7daa131abc430b97e80f1f9d5c92159959e3723772070460d462231e4313d80ed59a64efb115ac7c067ce08c1c9ceea5485565053819c83f53ff00d6ab4aa7a11562d6ca4b962003c0c93ed49cadb951a729688a3196724846018e7f2153ac6769ea7071d0f15d3db68bb2053e51773ea7deafae86ac5f0a54e391dbad60ebc51d51c24ada9c0e936ad313236e0aac422e3a7ad6b1b3ce4aaf4e0f1d38aec34cd044436aa719dd823b93ff00ebab9268e89192887a64e071fe71532c4abe8691c1b4b5385b2b24b9931925b81f4e7bd5e934808eca141383dff9574173a62400ba052471bbae33e829b6c05c49e5ce08cff1fa7d697b5bec5c30b18ab491c55fda490e43a61546493d571ce7e958d76c629e27603cc183f29e1876ff000c5767e23b5b8b58f10c8a4b300724938e9819f4e2b0b4cd0a7d4ee4390aea300ab93f974c7e75d14a69abb392a536a7cb131f5131a5deeb69439e8db3a0f606886df037c24ccb8dcc3ba9af431e08d91cad21820fdd9db9859d58e7a7f7ba107774e78158169a25ed9a5d4798c4c395e41ce3af1d3f1aa55a0d5932bd84afa9cdbc4a712060633f313e949a64859e66c9c1c05e33c0c93f99357c69be7de62759102fcec15b8c819e6ab895a49d96da3f933d33c7ff00aab45356d0c92e562caef27524e3fc9350963927bd74d6da34b3d96f5c07638e31923e9e9589abd8b594caad91bb8c6318c5671a89bb21ce2d6a5228cdb4e411df8e680ec18a8dc33d79cd5b8225465129c0c6793c66a9c84acedc1c83818eb8ad232bbb185f5b19773a5b4f33b093a8c82dd49ff0ac9bdb496d16332800b82460e6baa9c9b71938f3026700703d2b9dbf669ec6da491b2e320e7ae33c57a187a93968f604cce06b5bc37204d4d73d1948febfd2b1eac5acff0066613e7053ee8f535d735cd168ab1abe25d49879b6aa55c39cb9239047415ce2b9542a402a79e9c8a49e569a5691ce4b1ce69aa79aca11505ca8b4ac89511a4cec1bb0326917ae08a8b38391c1a912791338c1cfa8abb858f5833852638e4247dddb80323fc8ef55d6de464f3373f98ca5f6852db7ebdb93d3fa550f116aff00d937a882de06b8425648cb6e1d31dbbf5eb58907886edef05d3cac90c4c3f74ac791d3f90af228e16728f309ad753a259644bd452e11d0e189c6ef7071d3e95a8608361b8c0042f5031c7b573d728d25c1d574851731ba96b8889c939ef8ec7af4e78cd5cd1aec6a36f2980b2c67e5789cf438ce01fc3a9f4a9ab45a8f3adba82762c58ed37aa22c6d94126307eeb7b7e54f9afeca2d596c6691bcd6c7cca32013d055b8e59da194dbc2be64685f605209c0c8edf8f5af377b7bfbabc7731c866662e4918e735786a0ab36e5a2417e43be96e517556b148a466407749b7e4fc31d6ba0d0cc7e680d82a78db8ed5e492c3a9d8ce24712866e770c90d5db786b509e4b5594a4a26cf53cf03bff0093462b07cb0e68bd070aee13bf43d35f5ab2d1ee21b69959c4ab908b8f947439278c77aecf4bb1fed6b392e63b27b6da410ac49dc08e3b5780f8d4de482daf8a18a4887ce00c6ce7e53cf18f7fa57d11f0a3c6569e2ef0fd9acaab6b7f6e8627855c156d8141651fc20f50a7a7d2b8d6097b2f68b5efe4742c4ce7553e6b47b7716d74861264dbc922a901f6601518249e7b75e3ad5ad5f451705fc841bd0021780c57b123fc457452cff67d5606fb3bc1624344e5a2c16901da0fae08e84f18a835c963c7992958b03019701b07b6783f866b8eaaa74d5ba9d90949bb9c35ee94d16e1b46dc66a8c5a647259cd340a9e544c51c1701891d783fd7ad4fab6b9e5c9218c33aaae7700724671ce38fc7f3ac296ff51be8e28e084ca253c2e400573ce4f4db8f4c9e78a54e2de891539f665691e296f5a3b72085504ee56254e781bba7e63eb5d65a78363b9d245db882caf7cbdcb2db29562deac3a77c74fa62b21743d6c11358adada975545114cd8cf38439e3383dbfc2b7749d0f5bb7965b67b916c92286c603fcd8e47f75b1c7a7515ab835b18c65ccfde2d68827b7897cf0aca6331b6d7e383c1c0e41c8f4ae6f58f0b3ea12cf2d84a3cd7c910b3e08f619e08cd75e9e1f9449e7992349547cc0c5b54e7e87b7356edecee0266178e58cf00b74cfbff81acf95c7546f74d58f38b6f085d343b6fed963948c32f273e87ffd554e7f031b12c22876b1009ea71d7aff009f4af598a0bef30032428a5896518dabf43d7144da8e9f116579a265fe37de181c7bfe358fb49aea1ece2fa1e34be65bf9b12abf98836e76f23f1e95ca4b63717baa348e3273b546323776cfbd7a578f6ff4a8616fb2bcb1b13f71318739e31fad72b36a5676f6ea34a13ac8ebcfdd03279fbc79033cfad74d1949aba4725782bdae719acc1b2574072cb8ebc60f707f5a224582ce49523ddb40cc8c703247f9e2aa5e5c195d4e49e793cf38ee7d6b12fbc43b525b78b7ba6ece4f1b8f4e6bd385194d591e7495de843abdeb619437ef24fbd8f4accbb3b628546edc17041fcea288b5d5e2f98f8dedc935aba8ded8a5ba46b0349246bb017e0823bfbd7ab08aa694521dada18db1b6ee7f957af3dea0924de703ee8e944ced2b65ba7a532a9b35480d2529a290c0f5a2948fe54da00d2632dc2c8cb0b48c4ee693049f7ab9696fa81d36eade3b299a37db2bb0427685cf3f4e6beddd1bc23a5db8543676fb4e07312e703a01d8015178abc056ede1bd461d26dadae2fa581d235bb6c212dc72546460138fa0af2a19b7b5d5434f53a2785e4ea7c5ba624fa75b7f68c379188c1d8f1a49f3e4e7823af6ebd2adf853599135168a79014998125ce32c38193efdcd1e27f05f88fc371b3eb9a3ddda421f679ac998f77fbc323f5e6b2b41d0355d7ef3ecba2d85cdf5c633b2042c40f53e95ea4a30a917b34ce549a763a8d39e18bc4ceb71726e2de4263676e7bf424fd3afd6bd53c3163a2fda20b72619669537c32328f9543761f5c8f4e2bc0afd6ef4e99ed6f2d5ed6ea262ae24465704704107bfe150d95dc96f711cc773ec1800bb2fea0823f0ae7c4e0956b72cac694eaf26e8fa37fb2f49bfbcba8221f6a9a01d5002a0f20807f3a962d15212865b68d6024a9ca6383c630077c1fe7577f662d223b6f0e4f7fa8062f792349046633b768e33bbd720f15edfa8245259bf9910923fbcdcf383e9fa5783569b84e508caf63bd38ca29b8ee7ce3e39d32ef48f0edd2e961a75949857232638db0768cfa631f8fad3ff00674d692c2c75ab6bc64003a496f1ed3be491b0a5578c90401c67b0ed5ea775a6b69ae536f9b62ec591c7cd81dbf019e95a3a769ba7dabbcb6d6115bc8ea373a2fdf1d803e99aba38992a52a4d6e653c3a73538b2d43aaa4881268da3940fba3e607d70475f7acfd6e292fed658e384cfc60291c2f1c02a6b47ec96e97391b94ffb24e081d88fafa5624d697304f330b7919d9c73cfa1e73dfb74ae294249dce9b2d8e562b4b91a8ada5ec6c21ced1e5808d919efd874e7e95b7a0699676735b5baaf971b2e77c983b0e7919e9d39f7ce6b2f5dd3af649e558ae2489a1c799202bb724160318c9c74e0e2a9f81f5ab95f374eb9285e3cb2a939423a17563ce41ebec6bb68a8b567b984a4a2ec7aeda476704664b5489378f9a45032d8e3934cb8d5a085c2a61998e3e6e87fc6b968eee5611a3471c722310ca5339f7fa73d47e3515fb16539203672360e7f2a994d45e868a9df73a69de39ad84e92c4d237aa8e31ee78eb5c2f893c4d7fa05d44f756c26b477201236e067b11c7b60d66df6b53d9878d26065380d9c9c7d40e7f0ae3b59f17de5d5bbabb84933d47a0ea08e9dfdbe9426e7d09a8d416e7aed9788ed351d1a4b8d3402e72be5cca786c8c83db1cfafd6b84f176a76de5b35bf972cb1fca536a80bd8723d0579fdaf8a6eedede7b55937a3ae539e87d78feb45a6a31dc5c3916a1eea7055a469c7b03b463038f5cf7c5258469dfa18fd715add4bf246faaa196ec2c8a4b2a2edf94727041ea7a75f4ae175a8f5bd264bdb9b9b78d2362634c3e11071caae79cf1d6bd1609563b90628c6c03f89f209efc9ed9ed5c0fc4ed3ee9e45d4da5636c5c44b0b71b38ea07a1c75f5af4f06973f2bb599cb526a5d4a2d1b5ff00874dcdb48bf68518976ae307ff00d5dc5715b79cf5aded3b565b1b030c110f39db2cecdc631e9f9fe74821b1b04dd778999d0300bd39af4a11f6575d3a18dcada269f24d7514aca562521b763af3d07bd676b1324da84af18c296240ad93e22688ecd3a1581154aa93f31c1f5cf1dfd2b996259989eb9a7ab7765453bdd866928a514cd0503d6929cfc7d6994085f4a5228078c629c36d3b01fa3f04fba5db1c242a9e09181ef534d32a9f9ce73c62aadd59bb4acf2b968970db173cf3d3dc557b6d34b879e1f3236207eedc9c1f5e3b1af8d7095b43d5f75bbb1da8d8596a7a74d69a959c177652ff00ac8e550508073920fa11f5acbf027817c2de1cbdbdd63c310344ba8a2a32a4acd128539f954f4c9f527db038ae8edc2058e28dfe6fe363dbd45496f716f6f9b68230238f83b71804fb574e1ab3843de7a19548a93d1106b3e1dd1f5a8fcbd5b4db2bf01760fb540b2ed1ec48c8fc08ae12ff00e17f8374f99eea2f0dda490411ef7b62c4abe5f0c7073c85c91cfb63a57a242f2899c336f4739fa7ff005aa2d4de316c56539933b5081ce4f5fc31d6b78625b5a36919ba6afa9cb78435cd1b59d3e14f0c7d916c51da248adc6d550a7180303071838ed9efd6bab49555bcb91178183839e3debe678a47f863f14ee74d2b3c5a0eb52ac96b2a8f961949c71cf4058a9ef820e0f43f40f86f7b6971b4a2562060993ef1f539efdea6bd09427cd17a3d51a424a51d7a1cbfc6ad6b51f086810eb5a269b15ec46611de7985888e223a803a0278cf6247ad4fe12d52d35fd1fedba15e0bbb52b80060b42c541dac3d464647b715dc4f6516a1a6dcd95caeeb6ba85a2914f3c30c1ebf5af15b7f8131d8f8b2f6fa2d61ad34999dda3d3ed0bc65d48f9519b23e5cf5033c703ad744634a74ef3f75afc4c79a7097bbaa67a058cf32451cf71190532091f32b73c1cf63edefdf8ad3b99cbc6e65da11c00b86c9e7d457ccbe28d6be20fc2f4b2b4d41ac6ef4c07ca81a4b652085e8a5800d9c63bf4efc5635b7c73f139bdb67b98f4f6b6470cf0a418dcb9e403938fad5ac04e6af169a1bc424f547d212e98753526c2678a0914ac9349191bb1c700f5ce3a8ae1fc4fe1378ae0b4173bd87ceacab86439edfe7eb5d4e85e34d3b56f0fade69d302260ce8920dbb393f2e39e9cf7accbdd49d8857618041c838cf15e54dce9cedb346d1a6aa4798e66dbc517f617223d72d818c8319ba894e5471ced1c7e5f87bea5cea96d7301b8b7d4acca47f39f367c32e31fc2dcf00f61ffd627962bede1625328e0055cfe958faf58d9f931b850c413bb001c01faf4cd6f19c66d292d4c64ead257dd183aadedb876984d05e9793016373231c1e48c60f1d77122b1bc46da7ab23e992165953950d960c47523d091dfdfa549736770f7f1d92799be51f28200dd93e98f6fd2a1b3b64b2ba94b45968f2b9230091d78aef8b8a8d9238fdb394aef619a64896d6ef1c9036d76dca46093ec4f4e3934d8e34fb6c1318c300f9d8ab9c0f7efc56bdc5c43f638da264f33243718db9e98ed59cd16c224041918ff7bdbd3f0a22dc96a6356ca5eeb25beba5c3ba18e16886d8994925bd723fc6b0fc4faf7fc52b3584fb66799c04671f3021b248f603bfbd49af5cdb69ef2477773179aa7798e360ecd9e70319fd715c56b97715ddba5e12a1ddcc6b129cf968a3bfa939eb5d586a0eea52d9046e65771505d4cd33fccd90a368fa0a6bcc48213201e0fbd47918c0af4252b9aa561d1b60d46c0863efcd381e734e94fa74a9e857522a5a28c52185252e2928016969b4b822803f4aade5c9772e0f3fa532cae8cf7ad12465e300e5fa053e95c841e25d31e296349024c01f507d339abf63e208fca0219cb3f7ce39f5c57c6c711aae63d27156d0eae6b189e27461c3e77638ce6b26df4dfecc8a7c3191188605ba8c7ad649f1cc70dfac1346a212bf2c8ae3391d411f91e2aade78d609a42be62c67b03d3f3ad6bce8ca3ee934dcaf63b1b727ca49180dede9515ccca2464900248eb9e83358763ac9b91e6619429c2e0f5e3bfb565eb9e2380c1308261f694f4e475e9e95cbedda4a313554f5bb38cfda07c333eb5e1b8ae74831acda739bb4550773800eec1f5c60e3dbe956be0d78f3fe127d2a396f48fed242b0dc00a4283bb2180e801c927b03c7008aab278aee9fcd8646578b3f3e3aafd3f2ae5248acbc03abcbe22b39a4b6d2ef2145921dbb8ac995656403f84e08c76e3ad7ad42afb6a4e8c97bcb6ff2309c1c65ceb6ea7d2e92aaed53cb1e9e9585e24f15e81e1c8e4baf10ea5696c11372c6d203230cf65ea7f015f397883e3febbaac4b65e17d2fca9c908b70c9e64879fe140319e9eb5e27e23d4352d5b53babfd6ee1a7d41df6ca65387c8e318ed8c6315db430127ad5309d64be13a7f8c3f106e7c7de246b91be2d2e0256d2ddb1f2038c938ea4919fd3b57060d309e696bd58a51564733d4e83c33afdf6973c51c1773456cd2ab491ab70c33cfe95f44926e5606b71b924c15c73c7bff8d7cb30e7771d7b57bdfc2df12a5ce8c61bb7669624dbf293bb1820fe9fcebcccd28de2aaa5b6e75612a72c9c1bdcd8f126bd0e816d3c976eb18c0540a33ce39c8f5f4ff0af12f1378c350d72e839736f0a82aa9131191eadea68f88f7b25df8b2f55a779238d822a93c2600c81f8e6b98cd6f82c2c69454deecc6b4dcd9e81f0c7c4135bebd676f22b4cde683131c9209e08fa6093ed8aec6f9266d4676ba89959c16000233939dd5e35653cd6656eade578a60485643823d6bb8f0aebcd0d8bdcead3cd2469b90316dcdf311c73d7bd3c5619b7ed21b9cf2dac6e6a66fb4fb379a0519f2cece03ae48c74c7f938af3f9b5693fb32581e6b86b8964def9380b8ec2bd367d54eafa49364c9242a9f3ed52bb0678fe55e65e2e8a382f62319e5a305b8c7359e0a5ab84d6a2514b4461c929c9a992ca5934c9aec63cb460a7ea6aa90cdd8d7436016e7454b29c30224dea5073823a9f502bd177e85bd0e608c52559bfb77b5b868e4f4c8f707a5571d6a0b5a8b522f20719a8c53d5c2fb91e9eb4d0319dc8f4a4e8693eb45218e068a414b838cf6a005500739e6949e29878a09a7711ef3ff000914315ce7ed709ba63c44241bb7631835b707883ecf19965c07ff009671e7bf7c7f5cd7ce30caf1c81d490ca720d75fe1fd5efeeeeda3b99048a1771dc391f4af32a65b06ae85ed270d533d5e7f1609a46322a6d63bb0a79ce3b1fceb266d79c67c95381cf2727f3ae5dde42edb703773802a47ba9160319dbb8f2580e715c8f091812f1351e973aeb3f13dd89232669319e00722ad8d46499ced677520e32726bcf239de3cf422b7b47bb6116f3ba3248e41c8c7bd63530ca3aa42f6d3968d9d0e8f3b8bc98de298e34c92e79cfa71ebcd77fa04ada8e932c7716f05d586c08d6b2a06f31719c303c91903b75fa562690d63a9da4100558ee000096c00589edf51fae7a54bac78822f08d8efb99fc840d932200cedea2b867cd3928d35a9ef61611852e6a8d58e9f5bf1559f837c0579aaae996b6ae836c090aaa2c92370a08033ee7d94d7c5f757125d5d4b713b1796572eec7a924e49aecbe2678f6e7c61791c48ad06976e4982027924f566f7ec0761c7ae787afa4c061a74297ef1de4f73cec5558d4a8dc15a23f8614dc1a01c53c60d77ee736c2dba932aaaf52702ba0f0b788a7f0eddcb3c2bbd9948dbb881bb040ce3a8f6ac1b76d9711b7a303fad170f995cf624f144a2a51e596c2d6fa1b1e2578aecdbea02556b9b905a6507f8bd6b101a66695482692d340b589e3f9d36f3b81e07ad6ee8fe5dd58dc58b8c4ac37c79381915cf24a639032e7839e2bafd224875010c8e765cc672b20e38cf423fcf5a273e58dcce68ada56b779a1acf6e10e5976856380a7d7deb0ee6479e42f33b3b1e4963926ba4f1459055b7ba03f76d98f1b86411eb54ec7476bb4599dc47160860a32d91e83de9c650e4f68f4b92a496a66d8dbbdd49b510b2a02481c671daac69f752db5e8b899cc51265738ce474c019adfb689208f65baec4553b98ff00335ca5cdb5ddc3b485848b9383b80cfb8a9855f697b6c34f9996fc571c292dab47389a468f2e47bf23a5622004f2702b405a9915a3cae634dc48f5f4aa6e8c802b291f5aae468d23a2b0c5c669db57af4a601cd39f3da81832ae29bb69326a4419146e1b0ce4500f6a7b0c5331e940c1bd69a69fd453293047ffd9", + "properties": {} + } + ] + } +] \ No newline at end of file diff --git a/test/expected/backend-l.1.1.1.json b/test/expected/backend-l.1.1.1.json new file mode 100644 index 0000000..fc7c6d6 --- /dev/null +++ b/test/expected/backend-l.1.1.1.json @@ -0,0 +1,13 @@ +[ + { + "version": 2, + "name": "_image", + "extent": 4096, + "features": [ + { + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f9833835afe1ed4c585d1320cc52615f1d40ac5ce69e870456bbe8ccdaba3d9b4c8226b19e45d9247260a4847238e9f91ac9bfb578e4dca498cf3923a7b7f9f5a87c3376f3787215699488dca11ce5790547ea6afbccbb994bee8c11853fcbf0af1e7785468e7b3d8cf5b4924b7f31391cf518c56dda58dbea505bd94ae638c1cb904751c60d567bdf3136820328ea0633c53f4ed8cd209810cc06d653921bd4fa83c56729c9aec6b497bdaa3b1b65b4d35924668c08db265079da304e3df18af13f1bf88ae7c41ac4f34cc4421dbcb8fb019ebf5af48bcbf92ee18e15522245f9411c9cf723f315e3b7f0bc3752c722ed656208f4ae8cb6924e5297c474d6abcc9423b22a1eb52451efee07d68dbd3a7347dd38cf4af552ee637108c71d0d02a451bfeb4cc60d3b0839dc314c63926a407009a8a931a014aa79a4a55a43133cd5bd3af1ad66561d339aa9451706ae7a1c735beaba54db81936a6e655c6e158561a94564cd1f97298b8c73820f7ac2b1be9eca759addcabaf435ad1f8843cacf75656d31618395c66a6308a8b83d533174da342f754865b075b7de923fca5471f2d33cb8c69f1885504c21f33e7504b004822b2e6beb29a5dde4342bfdd4c114afe43c6811d9f79cf18057ea6b48538c55a22e52bdbce88afbf3113c32aa678fc4d695bde5bcb1c91caa194f08e13907dea85c476d19db11695c757cf1ff00d7a442d16c922429b4e738ce4d53575629d99b76fa4da5ec1b90ef7eef19c73f4aa973a13c313bc3224a07254f0d8a9741d46dac55d2ea397321199130703e95b1ae5f269f05b4b6e527f3be60c188f97e9d41fad73355a32f775467ccd3b1c825b195f02060a78e3b54524422660ac1941c6474ad6bed97b24934178f89065a20d820fd2b2a326d9da3605a363f3291d6ba56aaed1aa772175e334cdb56dd21784bc470e3f80fa555da766e1d3a52686861e29a4d29073401938c541684a54eb4829f1ae0824d0819ec3a7682345d0ac17c96fb64f025c38e4f2e370cfa6176e3f1aac74db8ddbdd321b93d01fcabb5f016b435ff00090bbfb2c72dc58c2969748df748036a301d46540fc41a174b334058b44581cb60f4e38af9fab5a50ab253dee75fb0e68a94363878f4d94ce029c83f3038cf15a3636cf6cfe6aa3b8dc0a91820f39ebf8574773a14d0da092411ae5bcb29924b7e1d71597771b25adc960c92b29091a7e008a87579b433541a5cc65ac62093cb571b187f1718049af36d7fe7d7aed6d4f9819f0368ce7dab43c57aa5c8bd92d83346a980483cb0c71d3b550f0b24d2ebd642de3f32412038232303a935ec61a93a517524f74735ee6959f8765b7d22eaf75284460a158d1f8209efff00d6ae4fbd7a77c4bbc7b6d3d6cc9e5cf38c60fb8fd7f3af31452c78c7e35786ab2ab0e797534a905095912463a9a68a5240000391de818aea3318dd29b4f614d22a59484a700369229b4e1f70d0818cef413cd2d3690c52734a0f4c5260e334e4033cf14210841cf4ab96503caea91a9676e0015a3a36857fac330b0b66942f56c8551f89e2bd43c0de029747d4c5eeaf346cea8764717cc013dc9ef58d7c5d2c326e4f5edd4da8e16ae21a505a77399b1f87b77756025372914e30cc8e38c13ebeb5da5be8515b69f1d9dd04951001f30041238cf35d6dcc201611f24f43eb5599211005982bb0380ac32306be7eae6b52b75b23d78e4dcaaed5da3c4fc6fa7dc41ac31fb2c91c3b4042178207d2afebba13cbe17b3b95251ede20ccb8eb902bd6ae2ca36b732c7107424020fcc07b63d2b2f5ab295ad4c4573138c314238fa76aed8e6bcfcaadb6e79d3c0ba526a5f23e7d287aa9a40cc7ae4e3a66ba4f11787e5d2a5cab79901e8d8c63eb5cfba90d835ee45a9c54a3b1c1b3b32263c60d4b6f187de0750b9c67ad21500e473f5a7b40c81668c864ea08fe5f5a696a321cd3e3467384524fa0148d8dd95e952c372f0a3a28187ea71c8fa1a17981553ef7b52b1f9f8a46e178a6d46c56e7b07ecf376dfdb3ae69ea9bcdde9cc40cf531bab7e78cd7b3695651aabe42a395c9e70471d2be50f0e6af77a1eab6fa869f27977303654e3208230411dc10483f5afa934fd6ec357d060bbb5fdd99a20f90df8608f6e47af15f3b9dd1929aaab667ad96cd38ba6ccff12de384f2e3452aad8273f91ae0f54d5becab34d3966112861b79c6382003fd7deb76f992dd1f6bef07a9033938e00af2bf1a6ae433d8c6c8c49cc840e9df159e0687b5925d09c75470f76273bafdf2ea1a8c97291f96ad80149ce3029de18d4c695addb5dbef31a361c2f52bdc565ca7205246327e95f4ae09c793a6c794aeb53a0f1b6b71eb5a9f9b6eaeb028c287001ae701c54921e31d6a3029460a9a518ec8a727277600d3852018e4d00f35448fea293146697ad310da5c7ca68a728ca9cd00454019a9542fad057e5c628b0ee45922a44dace33519eb4038391493b0da3e86f02c56d27846ca18c6244895b2482ad9272491ff00ebfcab52d98c721507a7be0f1fe7b570df07f53373a5cfa7b4c1248a4dd182bfc2c3907f11fad764f23412859804c1009dc0f7193faf4af91c6d2946bcd3eba9f61976229ce8c5754bf2274b829bf78cee6cd33093cca3253beecf7fad4b34691db79924a912e7ac9c00bee7b7e74cd31eda59e29ec6eadee0c4c18889c30cfa1ae55069732477fb5a72f75bd4ebb45d1e4895a5997109f95770c863d7f96715cef89e4588cde521d9bc803d07a81dfb577275a8bfb3e1b47b7280b138240032b9cd703afb46225318c11969016cee24e718fcfbd452f88f32b4655dbe656384d5a36beb4b886e22da84ed041fbc72391eddebca75388da5f4b013bb61c6715ecdac4aa96e542e015ddbb0005008eb5e39af4e6e35495b807807f015f5196d4934e3d0f98af4d42562b2f229119977282403d450838a403935eb9ce31ba9c74a45ea29e3041a6af5a9191939a28a2a4b1c8d822bbcd03c773e95a2259456eacd1e761c80bdf9231c9e6b82c719a327d6a2a528555cb515d0e13941de0eccec357f1dea5a84450a5bc44f568d306b932e6472ce4b313924f5269107ca69b4e9d28535682b1329393bc9dc243934b11c1a675a915703356b7b89ed606e4f148063ad3b803a5358d310d63401494ab5250b4e5a6d3d383cd3448878a33c529e69314c06d19a7114da431a7ad2a9001c8a314605219d1f83f5f8b43bdf3a48d981e0ed35afa8fc44bab99e631da40236fba5b2587be4719fc2b84345632a14e72e792bb348d49c55a2cbf7daadddf4cd2ddcf24aedd4bb134ed3b529ac6ea3b8b595a296360c083e959b4b5af4e5b6867d6fd4f6bf0b78d23d435111c920b732aec8541e840ee39e49271db802ba2bf9b7ae2561226d38e4e41f53f535f3c5a5ccb6b3c7342c55d18329f422ba987c5b7b2daf94e88c3f8994b06c7b73c7d6bcac4658a7352a5a1df4f30a908f2cf53a3f1a6af1a5a3b4123f988c141038ce3a67dbd2bcbd999dcb13927924d5fd4ee649405fbb137cc101e959fdb8aefc3d0f610e538aa547525ccc9227f5a931824f63558706ac2364d754599b44b6f089a511860a5b804f03351bc66372ac30470454b126e71d703a90338ad5f11bc3f232a219a54560c0f6c7523d4d4ca5669137d4e79be6a4e052e39a52010282c6139a2971cd21a431771a4ea6929ebea680d8722f14f233d299bb14a1cd56848a4629869fbf9cd358e4f4a18119e29569719a963419e692436c8f14a2a678b68c918cf4a888c53b58570a334945002d21a296801b8a4a7e2908a4034f3498a76292818d231453b1452b05c6e2a7b394c3306ed51e38a45e185160b97353b917971e60508028181ec2a8e7d2a57008cad4468b5b44082acd94325c5c2450a96773802ab015a1a5dcb59ceb34614b29ce08c8346bd0246fdd5a43a1582f9b287bf9e3c84d990993ebeb5cdb9dedb9d8b37a9356350bc9efee9a7b96dce78fa0f4aaa573de9c22d2bcb7208c8c537a9a7e41a6934ca0c52629375286cd2188473484d2b9a6526343969fb4d317ad3f763a5342634e4503de94b7ad2311fc340099e6a557c706a1a72f4a13068bb25d497091a4ae59635da83d054122fa5311b69a959b764f73577b93b101a4a731f5a603cd4143a969b4b408766933499a2980b499a292900a2969b9a506818ec714dc714b4e1cd310c1494b8e68a400054d1636d427d2a58d805eb4e20c90f1503c87240a5926ecbf9d4344a5d8231ee389a69a28a9b9420a5068a290c09cd145140051451400514514005390e29b4a0531324dc3d39a7a8e2a1ef5287e2a93ee4b1b22771518e0d58078a84f5a1a04c4a28a2900514514005211cd2d140c6d2834b4639a41716941a6d2d310e3cd276a01a777a6031ba532a52b4d2b49a1a6328a306940a561dc3071d292a5278c533193458571b453f68c537145877128a29c8b93400da29587cdc0a5514582e2629306af69f633ea17b05a59c4d2dccee238d17ab313802bd94fecdbe303a41bb5b8d31ae8297fb28958b1c0e81b6edc9fae3de9b5615cf0d03d696b6bc49e18d67c357496fae69d71652b8ca0917861ec7a1fc2b200a2c171b8a5a76da4c7b53b0850dc734dab767a75ddeb6db4b69a76c8188a32c727a0e3e86bd4745f803e32d574eb2bd55b0b68ae543edb89591e352320b8dbc7d3af34304791819a77979aefe5f847e3487587d3bfb0ae9dd580fb420cc2c3fbcafd08fd6be85d5be01784e5b3b4fb3c7750bc4816568989798050090338de7191db268d02cd9f1c95c1a315f437c59f80d2e8da6c9aaf8552e6f035cb13631a1668a16fba0724b15e87ff00ac6bcf7c03f0cb50f13788aeb47bc8ef74dba802972f6f911e59721f732edf95b70ee70700d095f60d763cef6d262bd0bc7bf0b7c49e10d565b69ec2e2f2d01fdd5e5bc4592407a74ce0fb1a8fe1e7c36d47c7506a474ab8863b9b2284c1302be629241dae7e5c8c74245160381c51835edfe3ff008177da14de1fb5d01aeb54bbbedc972de5e238586de723a2fcc793fddfc2a927c02f1a36af25a2da40d6b1c88a6ebcd50ac8dd5d41209c0edc52d0353c771462bbff001bfc2df11f8535d8b4d96ca5bdf3f1e44d6913ba49ec38ebed5c3c903c72346ea55d4ed2a46083e94ec1720a7034ef2c8a4c5160149a4cfad006690d002951d453714b9a33400da551cd7d0bad7ecc5ad412c8da3eb56373167e41708d1363df1b856e7867f6648937bf88b5b129c0db1da44405e39c96233cf4ff002295d0eccf97d8734dc57db7e0df817e0fd165ba9e481f53694e217ba21fca5da3a2e319ce4e483dbe95923f673f0e5c4a9717b24f14ccb1b49042c360703e701805ca93e88bf41d00da04ae7c758ab1656d35ccbb2de192590f45452c7f215efb37ecefa84fe2ebe5b36316836d770c43cc24cb22308cbb2960aa540739209c6d61cb0c57d19e13f06e8be1bd1e2b6d334dd3e398c4b1cf2c106c129fe238259b079e0b37d4f73992d41a67c449f0bbc692436b327873502973831931e383dd81fbbf8e2bd1bc25fb377883510926b97b6fa6c648cc6bfbd7c7d471f9135f5ecc0bc4fe5901f1c6464648a86d63f2208e2dccfb142ee6ea703bd473f62944e4fc31f0d7c33e13481b45d2e15b95410bdcb73232f7249ef9eb8ff003b1b58a3822db18c22a851cf4a14fcb83467b54bd4a460f8bfc29a678af45b8d3b55843452a14de00de84ff0012920e0fbd78d6abfb3268f25a28d2b5bbd86eb3cb4e8b2211f41b4e7f1afa13d8536495225dd21217bb63814d49ad84d267c51f14fe0f5ef80ec6c5e29ee75696e19cbbdbdab08e145c7de3cf273edd0d798d8da4d7f7b05a59c4d2dccf22c51c6a396627000fc6bf48fce8e7b6f3571244c323b835c969ff000d7c2963e297f10db68d6a9a91e55c29db1bf7755ced0dee067f1c9ad154ee43876395f80ff0c2f3c05a66a0dabde453dddf346c62872522d81bb9ea4eeea00e9debd68a851d3afe340ebc74a731f9ba715937765a56107038eb4a46547d68cd296ce78e290c68ef4df2a3dccc234dcf8dc42f271d327bfe34ef6a51e9400d74575c300cbe8466a2b7b686d9365bc49126776d4000cfaf1531a3ad000caac30c037d4503e51c74c6297a8e9d293bd000003c91d2b0ae3c23e1db8d452f65d0b4d7bc122cbe79b64de1c746ce339f7adea45ee68d80f937e27fc03d6a2f124b71e0fb75bbd3ae4bcbe59754301ebb793c839e3fc9af28f16f80fc47e13489f5ed2e5b68a52424990ea48ed95271f8d7e84f7a8aeed60bd81e0bc8639e0718649064115a2a8d6e4381f9a4460d0715f70fc44f82de19f1458402d238b459e152ab25ac11a87ce00dfc02718c0c103e639078c7cd3e39f83be20f0d597f69da18758d1593cd4bdb36dc0c78cee239e31ce41231cd5a9264b4d1e6349de9e45308a00fd30de4000217ff006b2304d2b79e0a9558c1e7396cfd2a4c051c0a0671cd6268456cb2c681a67df231cb6380be800febcd586603961c81d69bd3e947d68029b5d4eee765ac851002a58e0b1f4ab80e383d4e4d118da588e3341eb431244303399a7ddf7430da3d062a5ef470a78ef4809a18d6804e0f14e149efeb4b80290216a394e2363ce4038c1c1a73ee2842101bb67a552ba8ee1a1c799b4e41254903af41df1f5a69036496c5c4112775c0248c671e95648ef9e6abd844f0da451cac59d41c92724f24ff005a980f9cd0f7043c7028ce683494862819e694d1da83d78a004c6293bd2d14001e9476a434b40074fc6968038a28003d29051db9a05002d078149450047721dedd91594161fc433fe7b551bfb786eecae2def6259adae6331cb1b701c118619f704d5bbb6090316708318dc7a2e7a1fa66a290801dee1b65b463cc2ec428031939ed818ce4fd6a9099f12fc7af075a784bc5f18d2a230e9d7d089e28b0d888f464c9ebcf38edb8579a631f5aeebe3178affe12ef1e6a17b05cbcfa7c4e60b42dc0f2d4fde03b64e4fe2335c4119add2326f53f4bb1eb4bd28fe745731b09ce69693bd079a000f341e94a062908cd002633cd281467147539a00318a5e9d681cd0450014d61b8608c8a51d79a33cd02023a7e5498c1a775a050310d1d451ef466801075ef4b9a075a5c60d002519a33ce28a004cd293c714738a314002934b498c525003bad06928a0028ef41a43d38e3eb40886ed0cb0ba2e0938f7c73dc57cadf1d3c6de238f48b9f0eeaf147612cb78eb12da4d91259ae71b8ab1cee27041c7dde457d3f7b7b05bdca5b3b491c93a9c49b3e5f7e4f19e6be4df8b1a1de789fcdd52c2c8dbdd595c4b6f7566c08791c125a54cfdf0c558f03f0ce49da9a22478ad157f5ed22fb40d5ee34cd5a0f22f60204911604a920119c7b11542b4333f4bbbd2134134b8e2b94e8128e73474a5c8a0043d39a40734a79e28db4001ed4518a5ed408293ad039a5c503108a3ad29f7a4e94007b518cf149d79a774e70280107bd21f6a56048a518ef40083834a7a52014a4f14008477a3bd1450014a2928068101a40294f5a2800a28a3140c28c7140a6cb22c6bba460abef408e4fc771eaa6eb459b4b7648a0b80f38daac8e33b429cf4e4939c7f4a8b423a36ada989add6dfeda8cf23f046e739569139c9ce1806f43ef5d4dc40b700c2eb1c96edc9ddc9ce41c1f6a8ecb4ab4b29236b44f2762ecda8000c318008f6ed8c7e5569d90ada9c65e7c21f07ea1032eaf612ea376ea03dedcdc48d3be0b104be724e1b19392405c93818f11f8c9f0293c3da5dbea3e0d8f51be065d93db1c4ac8a7a32e003d78c73d7dabeaf3c52139e0d253681c531df4a33476a0d494251c5039a4a0075277a419a5cd0019a00cd140a005c62919b071eb4a4e69a466801fc6290d20e292801463149d4d14e036f5eb400a05277c52331cd20c9eb400e3cf4a3a52e4014dc8340075a3bd28028c62800c5000c64d1ce79a434080f5a09e693346298314d140049a752189591e20ba9e081043034ab236c7dafb4a03fc59ebc75c807b56b0e4fbd55d4768b76668c3b2e0a8f7c8c7bfe14d6e2e843a3cb3490bf9ec8c0bfeef6e7715c0e5bb67e95a1dea0b1896382305712ed05f9ce09cff00f5ea6279a6f7d010ec669a3de954d2f7e4548c418e7347ae29b9cd2834ec3b0a05068cf1499a2c2b0a47e546001c75a4cf5a33ed458760a5a4a09a2c2b0a78a728c8f6a88b52ab1c628b0ec388a5c0eb4d27d45217c0a2c161f40ebc544189a7a9e28b058523e6cd2f41499e6968b05843c9a00346681c9a2c161475a28ef46690585349d68a09a0561a451de9dda8a6d8582834518a4020e41e48cf7a63200140e1472727af6e4d498a648ed1955c6431c74cfeb4058ad0cb27da1d0946811b686de493c1273ee318c55b201ac79a7116a4d0c8d1b47383b411b48da077ef8fa7a7a55fb7918c6bbc8dc46703b03d39fa537dc48b38c1cd2f5a8f7d37cccd218b91da9c29a00079229e3029942f6a40334b47418a006f7a29c7a518e6801052914a053bbd3023c52eda7e38a5028019838a6b2f15362908a00854629d4a4518a004a4a5a29000a28a0734001340e941a2800a3348dd2917ad16b92c7f4a0d2819a08a4034d2d18a3bd002a8f5aa1ad895ac985aee131380ca013efd78fd6b43ad2346aca43e48208fc28039736e63bf4ba4b48cdd4b036e04658b61401bba741d73eb8ab7a4c530bfd4659f7264a478230acaa33b973cf39233c7dd157593fd2776d0a22c2c6a5b01ba76fc001f8d67f882e4b449656ea24bd940611a9c1600a8623db93d48cf356b5d096ada9b0082010720f20d262a09992d65c6c1b36e19d724e46028c7be6ac630707b1c54b403997bd28cfad2d2815455c551c52ff3a29474a9b0ee211cd1ede947ad039a760169e0714df6a72f434810014a053b1cd28140c4c531c7cd52d44f9ce6802314b41eb48681099a052502818528a4a514c414638a3a9a0f1c516010d20a4a72f34d08907141a0d1da934000714114a33476a2c037e9452f7a3b516033755b05bd31493dddc430c2c1cac526c5383ceee3a74f4acbd2269d2692f268600938ca2c4a4bb46a484cb1e07cbd877c7bd74aca0c6c58e0019ce338f7ae74c855ca34643b13b86402476e9c0cf5c7bfd69c7b12dd86cf3b1bed3e192612cf29cbc25bf873f23103fda5c7279c1ad2d26476d1ed6798e328198753924f1f9d606937b14b1457d6d0a473eab1aaa48251fdccaa853c9200623a77ad0ba8f507b4b5168acd0850bc90485c601393c939c93db1dea9ae825dcfffd9", + "properties": {} + } + ] + } +] \ No newline at end of file diff --git a/test/expected/backend-l.2.0.0.json b/test/expected/backend-l.2.0.0.json new file mode 100644 index 0000000..848a73e --- /dev/null +++ b/test/expected/backend-l.2.0.0.json @@ -0,0 +1,13 @@ +[ + { + "version": 2, + "name": "_image", + "extent": 4096, + "features": [ + { + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f99c519a4cd2e78ae93103452529c628108681451da90c28cd1450004d1484d19a005069d4c069c0d30168a3345020c52529a4a0029451450028a5cd369714c033485a971498cd201a4e68a7eda4db4582e36956976d382d160b89494f229a7814c043c0a849e69ee738a654b290940a5a5000eb4863e90f1452127bd31067279a526994b9a403b3e9467f3a6834ab400bf5a3348d4940051451400b9e69734da2801c0e6941a677a7d310a39a5a4029c0531094e02940c5761e0bf01ea1e28b59ef849159e950388e4bb9bee87232140ea49a7b6e238f0296bdff00c3fa5782b41d3f4fb7baf0f8d6eee65cdc4f33ba329f65e80633dfb545e2ef863a4dde9bfdb1a4e997fa5d9cee24472e244546036f071d79efdbdeb3f6f04ec572b3c171462ba2d6bc2979a6d9cb781e39ad11b696070c0670091ffebae76b44d3d5121451d4e2bd37e1af83f4eba68eef5b437a5d4490d9c2ff00794673b8f183c7033f5a1bb01e7fa4e957dabdec769a6dacb737121c2a46b926bd5b4af80dae5c5aa4b7975124a705e080091d013819e4753fcabbc8b43bbd5f50bb87c32b059c714664f2d1443248067036939ce00e01c7be4d765e21b6f12c1a1c12d95d41776ad6b23bcc54465e318720e0020f27e5f5ac6556cae8695d9e1175f05f538e56b689ee85ea9198e4b7c2ae471960c7f4af3df17786751f0bead269fabc3e5cebe9d0d7d670e817975a7ff6a6a7ac94d626950db35b380aa0907cc3952e71ce78e3f3af32f187807fb79268b4d925b9d4448656b99a4f3495009ea3b67dbdeb158a4a494dee5723dd1f3d3fa5308eb5b3af68975a1ea32596a1185990f553953f4359320c1aeadd5d093e83568ce4fb521e283c1e290c79a6d38f4a6d0c10868a0d14000a507149466801c69b4668a0029474a4a05002d14a3ad2e2801169ea33480669ea2a9213628152c10c93cc91411b492b9daa8a3258fa0151815d5f86e5bbf0c3db6bb0476b705ff77192039b773d0943df00e33c1a6dd893acf869e07b24d74a78f2136d6d2c256159091873c65b1f771d79fa57a9782acb4dd0525f086a2a66b65977c7228df0dc0671924601edb41f634dd37c450b41629e2496dbec258cc969f31cb39cf9785e7183939e06075c0af5ab78fc1d63a65c4f19b692d12244b978c89942a0e0bb283d3824fae2b963579f565b858b8de16b76d520bb8e1b64816cfecc4633ea01f7e0f5273c0ae4fe20b6836d6969a6cb7525c2d82a85d36027f7ac48cb391d30b938279cf3555bc63a9ea369347a6cc52de71e5dab18c2c8f1118de5792ae7a83d08e71d2b84d66d0594b22d9db4f35ecec72eea6595db192072303039c600ee6b9ab6212f760aecd230befb167c551687a83de6a7736df60d300cbdbf054201dc74c9fe600af16f0dfc3ed43c56f797fa722dbe96923152dcb05cf4c67ae08ea6a2f195feab7f3ad9b5e3ddf920c935bc0acc90053c6e3df1dfb0cd7d3ba5f84efe3b2b2d46d6c63486ead61134568554630086e99efe878fa5387b5a30e6ddbfb909f2cddb64785f873c05a6697e31806a738bcb086511ce8d16ec074f95b1dce4f4c7515df59470e956971696908b569258dec8db8119b7b918e0e78d87af3e9835e82be18c4536a074c9a4d4279d25dd32ef5e300e41e8b81d3009ddd6afbf81efee755593cd48ed1661956c302832ca403dc13e99e4f6ad15593b2fbc970d19a375a43eb2f61ab1b55835ab2f2c90c998cba939dac3ef29dcc3fef9ce08a6f8cb539a6b6bab77d3678e15b71e6b49b46d5638c839c76edf88e2bbab78fca8238f8f9540e0607159fe21d1e2d62c24824da24da446ec81b612319c1ee32714ab45ce364cd29da2eecf0bf14ea3ff0008fdec09335c9bd98030d9c318925c1fbb855391c7d2b9e97c506277b8b6d335537cbca4725bf9441f76e87f1af5b97c071e8f34ba8dacb235fe1a66bc924f9cbe001920676a8dc42807a81ef5e5d1e20bab9b6beb9990de49b5a7955da4752c37601e0123279391d4f18ae1787a707692375cf2574cf1ff008849afeb9aa497fa8dbedd8a156304165183d7df835c3dcdb4b0b6d9e2922623203a953fad7d4be15f06c9a8ebda86aba3c1e6c4d2ff00a224ec76e23c04918f4209c9c0ec3e95d8fc7ef0f68179f0ee797c473db5aea96d0192dee91026f9547dc1ea189fbbfe15eb529c79545238da6db67c3ac3b50bcafd2a5957bd44bc1ad5ab30b8f229952114c6143121290d3b14d3486145145001451450014b8a414e1400014f029053d4552426c502968ad8b8f0ceb16fa143accd6132e9929012e31f292699252b1b479ef2de120a094820b7031ebcd7b8788fc2da96a1f0e44b2fd84c31dc044920fbcd8518738e307383dc1ea3a57917fc24534cfa57da228dbec4a62071f790f63f857d3bf0ebe217842d7495f0e5cc96f2c13026448e3778c066202331fbc471f300073d38ae7ae9b69f634a67806837d3e97ac5b0bcd31aeded033ee822129701b6ee656ea01cf07a9c66bb8b0d67c69f106d7ec50c72ad94ade537cc91a85527e558c003773d48c66b47c65a33785fc4d7179b2d9ad2d9097f2d88f320918104371b8af5c1eb9aecfe12c377a4f8b3ced39631657d0ef9c4ceca91904e6418e18b01d3dab89574e56b1b3a76573d1fe1df83d740b14b9d4a59a7be553b84cdb842dd0ed200c8c018e3e9d6bcbbf683f1ae99a369b73a768e211abdcca184d01e029ceecfbe704fa923d315d47c4cf8b5a7e8905d5ac5757505f5b9cacb0daf98aed8f947ce3182783c8f6af91bc61e207f12eb2f7ef6e96e5970510e72dd598f03924935d94e9a7b2d0c6523e9ef83de0f3e0df0dc97578b149ad5e949a633a83f2156063dddc7cdc8f5e7b57b3f853eca9a2dbdbd846b0dbdba089615e91e00e07b7a73debc1bf64fd3750d5749d62ff5cfb45d69c5a3b7b43712b30ca64b0507b0ca8cfe15f46db411db42b14281507402b2e5a919be67745ae56ae913514515a0c28a28a004232083d2bc43c67e1592cbc405e4959ede6cb44f924c7d8827d4e7d6bdc2b27c49a67f6ae952dba6df37864ddd322b0c452f691d3734a73e5670b6da83d90926d1adec91847f64b41757422fba067e5208c64f20741d3bd7cb3f1a3c7faaf8cfc42f0df18e1b6b26312c16f3b490b3a920b8ec7be0e3a57aa7c6e923f0868c2182dedb52bbd46292de4674252d4e325e31d37727271c71d2be66aeac346d04dee734dfbcec079155c8f9aac1e950b75ada44a1d4d232714e34d1d6818f0b814d7e9c53f34da1888cae0669b5239f96a3a96520a28a280014e519a4a923142063956afe8f62b7f7d1452ce96d0160249dc12a83d78ea7d055bf0be8736bfa9ada4322c2806e926704ac63a64e39249c0007526badd5ad1fc0da9c36fa6cd73730b44b35e128006c670548ce072719a1ce29f22dc5caed7e86478eb44d23488ec7fb1a5be943261e6b98bcb133739641d80e3afad755f0f75cd3d7428ad75ed737c3b8c71594a1b6c273f7c9e98c76e39c5729f103c4a3c537b15c5a593db59db208c0ebc9ee48ee4826b2afa5b484da5d69be5ef6882cb132e42be3938350e0ea43965a31df96574759ff0008ae9b7badeafa6c65e1bac24b65b4160e0f5c01d477fa5741f05b5fd0bc3fa86a565e29b6b06fb345379724d9f99b18c018e4f18cf079af39d1b50d6ae75eb56b192f2e2fc8102470bb091d3a6c18e718e38a66b02dff00b5a38aef4c9b4bd80acf192c5cb64fcd86e47618f6f7a9706fdd93b8d492d51ea3aceb5a778d7c657b2dcea19d336c69145bf697c28c741c90001f5af6ff00823a341126b41ae26bc489840ad7037285e4900f7fc315f3dfc30f07dfeb1a59b8b0d2a4fed4b7996ead6e0a12b2460e082076cf1f8d7baf806e753f05e89a92cfa2cb78cb1bdd5d0865552ac3270031c9f941f7fcf8e3692ac9266eafc976701fb4fe9fa168765696f616d243a9dd30323a4e5048a0924bc78c1e71839e31c7be7fc3cf823ab4f6b61a9dc5ba3b5e44b2c4f36d30c48cb9cb0e4938231c75fcebc6fc61aaddeafe21bfb9bb59e2dd3c852da676636e0b13b067a6338af60f811aafc40fb0edf0c5c477ba742fe4adbdddcae223c31c459dc5707b63f435db521ee593b18425adda3eaff0e68b67e1fd16db4dd3a158ade1180ab9e4939279f524d6a572df0daf35ebef0a5bcbe2b8e38f54deeae51360600f076f6fc3d2ba9a8340a28a2800a28a2800a8e67291b3280481c0271cfd6a4a82e668e20825380ec1467d7b5007c9ff00b46788352babed4ada7b6b68ad2d2e4c50c912e2472e98258f7e011f8d7cf75edbf1a52e6db50d63eccd61359c370ed2090e66dce4a8c8e84f3907b578956f4649c74319269ea1daa1638353678a81fad5c84879a402a4c0a5c5160b8d23029a3ad3d8530f0334302390f38a6d04e4d15050514528a00551935328c5449d6ad410bcf32450aee91c85551dcfa552133b9b3d7b4787c3f6f65a5412c1a918f63bbe023bb70cc4f5e07afe15d17873c35378dac27b99ee8095f0a9b0e36a64800004e1782718cd79dddf85b58b582295ecde449300795f3e09e80e2b4b4af12eaba7cf0e9da85f5c595bdb3e4aac237ab0040047e3d79c571d48369ca84b5fbcd62ecd2a8b43a4d03c2b7b77a46aba084113aca5bcd2a76c9b7a1cf723d3b73eb58d6b636b697d3681a898bcfb6b80f1cdc2071c6e058f438e4678f5a9a6f88f7f6eab6fa7a45240ae5cc9711e5e43effad721aa6ab75aa48ef78eaecd234a4ed00e5b19e7d381574e35657e7d13264e0b6d4f43f155aff64e93a4eafa532ff69c174025c5b2f0fb4365b2383f7573f535d17853544f889e20d5adbc45a2db7f6e4768b25a489ba229b48254eedc17ef020907bf5cd7977fc257a93c1a44372b0cd67a64ab245094c2b118c862392085e6bd022f8a66cbc747c4e7409edad2fac96da48c1c0765607cc56239c74c7eb594a95451b6ef5d7f4294e37b946cfe24f8ef43ba974ab342a4efb758560cb1f70500c91c1c8e3bd6ca78bfe28f82ac67d4b58d3ae2dad6f616b749a7b608b1b123f78428ceee70377073df15d568df1dfc330c51cda8e9f7af711cae6344854ed5e80e777523ae3e9cd65fc4ff008f563e2df87d79a25a585dc17d74e11e460a13cb0d9f5272401c76f5ad69734be2858995ba33c0afaea7bebc9eeeee5696e677692491bab313924fe35b9f0fbc4517863c5167a95ddbcb756b1b7ef618a66899d7d320fe87835cdd2138aea7a991f45ddfed3dab04816c745b24daf972ecd864cf000cf071debdafe11fc58d23e225b3c50afd8b5785774b66edb8ede3e753fc439fa8af828364576bf083c6337823c7167aa4682481b305c4678dd1b63383d88c023e950e09ad0a52699fa114536360e8aca72a4020fad3ab0360a28a2800accd56c3ed52c52b3b048be6d8bdc8e7ea7e95a759fa96a36b6d1949e5d9bc1507a0cfa67a6693b5b503e19f8cfa3c5a4788bccb6927962bd4f30b4a002086e9c139c0c726bceabd1fe2e5ddb7fc2433cfa75ec5730dc29cc580701bf8b038078f624f3815e6b236056f49fb9766325ad8477a8b393cd079a4aa6ee348b5455ed5edad2d6eb658dd8ba8b1cb85239fc6a8d5a77572029ae9ba9d52430cb312228d9c8eb81d2876ea0526183495b93e8776aaaca824c8c9d87907d2b25e120f2307deb34d4be165dfb90e29c06697611d69c169d82e228ad6f0f5b1bad62d62c3637ee6dbd7039359a16aee95a84da5deadcdbedde0608619041ea28927cad477126afa9ec715d8b2885cccc63862f9cb004e0f03fa8ac8f10f842fbc4e45edbc4a97cecb1ac601c91939691ba02003d3a62b9ef12f8c6df51fecf86ceccf936f20964599fe5988ec40e71d7bd7a8f8725bcb8b7197b1b433ae22ff004856209eea7232dec33c578ae1530a9544b5676f346ade3d0f27d07c157775afdad96a84da4125d1b3926003f9726d257be08246383eb5a5e36d1adef3c776da3e956b6563325bac6c158a45348149c8cf20b70003ce4d7a76b11c496f671349249e44f1dc46c176c8aea49e847d7391debcb7e294467d521d46d619823a65a4c7039e3e95d586c54abcf5d3430ab4941686ff00c44d2dd7c19a6ddc5a64364cebfe928a9f748c631d7f135b9e34f889676ff0e1344b6c7f6a3dbc70a8f28ed48ce4330cf1f740e9ebed5c443e2fd4b5bf0ed8f84258a36b99e616ed7370c7214b2ece73c1ea093db1deb0fc73622d3508a412b3ee5f2cab1cedd985033e98c53850f7946aee9b681cfdd6e27a7eb5e12b0f0cfc31f0fda0d2a29359d75d3ed3773c219e2057795466fb876ed031fed1eb552f74bf05e8a9a6de5fe86f36981becd72be792e770cf98194e7782a78c01ce2baef1cf886cfc67e01d2cc7a6de5adcc32c5340b3ec092009824306c118271d08207bd50d7f5bf0e5fe836914b6935bdddb304408814950b8249e84e33ee4f23ad60ebcd495df577358c138bd0f25f893a2e9b61a9417de1bb5d4e0d06fa312db7db61284724101b2430c827aff002ae31abe95d4a587c53e0cb7f0d810fd8c3e219e50239227e769233b49e719c038cf1c9af13f1e7842efc2babc96d20926b6c068ee0a615c7e048eb919cf38c8af46955551799cd3838339653835346c564561d8e6a0c73522f4ad910cfd03f835e2787c4de05d3e55706eed635b7b84ee195400c393c11820fd6bbaaf8b3e07fc459fc3dafe9d6d22adbe93314b699cc7904923e624606476ce71935f698ae669adcd53ec140a5c514144538631304fbd8e2be67f8a1aceb7fda10432cef6d7003ba6176a49824847e9bb1db60fcf9afa33c405c68f78d148d13ac65848a70531ce7f0ebf857cd9e3df105aead3e9fa36aa905c4faa5badca6a42dd9081c91f2b72a41e72bc75ace7b6a0b73e76d73519b53d4a6bab9118918e0ec181596dc9abdac5ab586a97966ec59a099e22c7bed2467f4aa4466bb5249591875b91e293152ede339a692052b0ee587468dca3a9560704118229b5e97e27f0dbea16526a060f2a50a5fcc5000600771d87a7f8579fdee9f756210dd40d1ac9ca31e8df435146bc6aaf31ce0e232d2cee2edc0b785dc670580e07d4f6aefed34a8ad61091a228c0dc477fad71da16af369d218c1cdb48c0c8b8ce3b66bac5d4918a342ed27cbdb0067dbd7f1ae2c6ba8ddba1b50e55abdc7c96e41e090073f4a3ec29763c992dc4a4f52c39c0e49cf6a7cfaac413e466ddd36b20247e22a3975276850aa2c6c7aede3757245496b735728156ff00c2769e4036efb59b2c0eec91ec41ede958b1786a5fb798a59556dd5779940e4fb007bfb56a1ba95b219db0dc900f53eb52c371232b4721ddf2b72dc91c5742af522b4662d41991fd956d0ce4297718ff009683ee9fa77fad4b269115cb47e532e56264009ea71f29cfd4fe953a9380bdbaf4f6f5a0c8f1caae9c3678f6a3db54bdee4a8a1d7fe079e3d352e6ce75965507ce89fe5edd54f7fc715d078793424d2acacf54f0f5c5bdf4e0c5f6896dcbac8e39dcac5860918e0715506b8ed10b672bbd9bccc28c9ce3ff00ae7ad54d4c3ea168b6ff006a911236dc1548233ffd6feb42ab39ae5a9f79ab8c56b13aad675a82cad95c5c08bca652898f9b38e3683dc6073d6b2a6f12c52d8c8e5a267c1df0cff2b1e7278f5209ae71349fb1b24f04d29914e1c93d41e0e0f635726d26cefd419032480eddca403fad44614a9b4db7ea29394909e14d14dcdc36a6d791437b04e935bc7c4b923e6c328391db19ab9e24986b7a78b8789a046dd214382c08cfa7f5c1e69fa669b6fa7d95c794dbc4840264009e9ea06719abb0aa430a46ab198d060a11904f73eff8d693afcd3e68eb61420edcace3b4e7d52c352b7d367965891c0da9c380adce541e39ad8f1049a868f716f14b243345749c2ed0bcfa30edd473e9dead4f0abeb02ede4428b1ec8d4e418f04f03d4735cff8c255fb7dbbc536e91472bd718e87fcfa56f16aacd5d74d49778459dafc37f16ff62dddbcf711437d6e11e392097e65951b2ac08e7071839c7a7bd75babdf691e22f096b70132db5ada27da2de39d83950303cb2c304a8ec3fad78e41ab59c3a35a5ad9da31d44b93349d3712df28047e15e8de15d4adf4eb8537f0472c3b54b2a36e5009ced3f502b3ac9d27ccb61539737bb23c5240031c1c8f5a16bd7be287c37b4866b5d4bc172fdbecafd5a65862520a7cd82a1792307b1e9c735e4382ac558608e08aee84d4d5d19c935a33abd0b5f8ac3488ed6d22956fda6c316daf0c88d9cee4618c8f9707b63e95fa07a1c92cba3d8bdc0c4cd0465f391f36d19fd6bf3dbc24a17cd9a395167475d8a5371ce090476ea2bf40bc2976fa878734cbc9a48e5967b68a4778feeb3141923f1cd6326b99c5171bee6bd14551d5754b3d2ec2eaeefae238a0b589a69598fdd503249a4591eb56d6ba8e9d35a5e31104ca558a9e40e86be58f8e87c07e16b73a5695a741aaeb92aee6bb92e6432db91c7cc5480381c2631ed5e75e37f8a5e22f11ea7a8187509ecb4c9e76923b5b7628141e39239c9ea79c649ae01b2cc49249f535b469db73272b88ec5d8924927924d369d8a42315a12349f96a3eb52374a8aa58d1dff873c66d6db2d3514cdb33317b8c969067a67b115078db59134874fb49219ad0057122a8cf4e83d2b91a9237540c1a3470c3a9ce47d2b3587829f3a43f68dab33a8d06ef495d2cc734314571cac8cee49907b0c7f5ab45e016ac2c510468768651df3d8d62786f4e82ede492ec6615c20192393d4e47a0adb960822711da47e5c18dc493924f4fc38ed5c3888c54da4ddcd232762ab3aefcb65db3fe79a566dcdb883b7d3d3d8568e8da44daa4efe5911c1191e63852e541ce3e51c9e86b6924b14927baf0fe9e27b2b7db1f95a8059249c91f36517f3e3a7ae6b3485a1cab0050374078c679ad348219763a4c11c80037503b73572e349bcd4b476d6f4fd32286c23f9266866dea1c60648249427838fc4573cebf2eec9009ed4dab0cde874559e22c9709f2e49c10781f4acdbeb2303a47214657018143d47f4351594ef6b2a9604c6f8f607dc7e35b5ab2457168650eab32287f2c7539ea71e98c7eb49c6db0ee9a38f6b36170e4fca3040119c6476ff26b46003185238edda9176bf38ce3b52ed448e328fb9c9231b79e3fc9a6e6e5a312d352e2c8de6156e431fcaa5898e7a0e0e3dbf0acfb77577d8ebb5339cf73f855c94ba5b6d85943907048048352d74358cba9335c796c00919d40dccbd87d7b559fb5a1fbb8c360f07358993952460f3d6ab6a3a82db425506257521769c6df7aa8439a5640e492b9b9a7da45aa6aa2c2e6e1b11dbcd70258d32c182fc9c03ea7fc8ae335ab1b8b1bc2b74065c6e561d187b54ba06bb7ba16a0b7b62ebe70cfdf1b8138207e59cfd40a7de5e5c5dc02d12f9aea371f6a97cd50bb640a4b00c793c7d327b74af46109539791cf2929235742b0d3ed5ad6e6e6f3f7ae3242904283c1e3a9c035d66b36867b999e15536c316f0dca20457550070b9c8c67b8f5ae022f0f6a372b0c96d14722caa0aec71c6467073deb5749d7d60b73a7eabe742ea4af9ca32c8474e3ebdbd2b9eb53737cd177b154da8e8d178788b59f0b6857ba2dca3837b166091f91e531392be9923afb57046ba4f186b52ea9f64b794c320b4de893459db20273919e40e7eef6ae618f35d54d5a376b53396aec771f0b7c4b3683aa5d4515bc170b7b0988a4d089541eb92a78238c62beeef06dcdadef85749b9b08a386d65b68de38e35c2a02bd00f41cd7e7069d79258dfc1750edf32170ea08c8241cf35fa0df093c4361e23f0269975a7cd1bf97108a544409e5b8eabb4741e9ed51523af31707d0b5f12bc569e0bf075feb6f099cc0bf247b80cb1e17a919192338e719af877c6ff123c41e30f3d7539d22b79a7f3de0801542d8c0ce4938006319c7e35eebfb60f8a6faced34ef0e40152cef90cf3302097dac30b8c71c806be5366f5ab82495c993bb1fbb35734d9d2def229648e39029ced933b73ef8e6a82d3c1c55ee893d4348f0d58df092761632cf7ac7c98fcd54dac586001c2a8e7a9206338e95ccf8fb4a5d1f541673c4b05fc636cf0abab05e0633b4900f5e335849ab5e476ed0acedb1883cf247d0f5154cb9762cc4924e493deb0a74a519734a572e524d59218fd2a302a7dbbb3d29bb706b76894c7a9c8cd2d565622ac2b03de9a771346d685a8c360c37b4a43e778c70be8473c9eb5d8c0d6d269c675666966019001ce0920e7f0cfe55e6b5aba3d8dc5c133c92b5bd8c58f3276242a8f41ea4e3a0ae6af878cdf35f5294da563bfd235b3e148af2fe38a690980c51100ec594fdd24f1f77248eb838acb8fc6afe1bd3045e18d42ea0d4a62924d730aaa045c366204f2dd5493c7208e700d616abe214bab79ed98c9f63562d0a00aa5db18dee79ce07419e3f5ae4e4937f03a52a549457bdb8b767b47843e2f693a76a56d79aa786c35da121ee6c6e0c45815c1ca636b64e4e38ea6baed6f4af0dfc4244d7bc1e069d6a030bf81b68f224c9da4a83c06033c7a67b1c7cd02b4f46d4ee2c25748e6912098049903101c0391903ae0e08f71553a5192b243bb475da8d86a1a7df5d69d788f05cc04a3c2c71b483d31d3a60823d4566b493870f212768c1c8e80e4577d673d9f8cf46816e26964f115a1937ba8526ee2c82a49272cca030c7b0ae552f160c6f1e65bcca51f7a8cb2938c8f7070723f1ae29269d8a4ee66c7d73939fcea64d9e687008908dbd7b1a8ede096542631bf048c0eb4eb82e92f96c3050e3a608ef58df5b215c1d5da666546f720640f62698acc5b2a7047afeb52fda0a9f9c97edc9c60d5699cb15dbf4ff1ad56a5dd58bd115933bc00c0e063a74ae56fd99af26ddd4311f857451b67046720f349aa5b26a291b6fd92a64640c823deb4a1555396a4cbde472d4559bcb396d1f128c83d1874350c486470abd4fbe2bd2524d5d191dbe9733c1a6da875c61002a3b552f19456f2431dd4308f30b00ee382463bfe95168b705ed14cc4b18db683dc8ad2b93be325412bc1231d41f5af3399d3a97376ef1b1caff654e7423a98e6159bca23b8e3afd33c564c9c1af4886e217d1a7b4750636c82b9c0ede9f87e55e797516c91d7fba71d2bb2955f697b99b56b15eba8f0b78e35ff000d5a5c59e93a94f6d6772ca67890f0f83c73d47e15cb9a01c568076df157c713f8f3c430ea77286331dac76e14fa8c96381eac4d715d4d275a728a0070f5a09a4269a79e05310e1cf4a7018a451814ac703de988703e94e518e48a9b4e08d3aac8321fe5cfa67bd6c78a2d6081a3787386e1428014281fcea5d44a4a3dc76d2e72f8e7152471b13d29a2ea50b85dabee1467f3a8de491ce5dc934ae8ab1a3e6dbda9524adc3f39539da3fc6a3bdd56e2f08f39cb28fbabd02f18e00e074159f4b45ee1ca8733963c9a3b74c53680690ec3c5381a68345508ddd12fcda5cdacc656088ff305254e3ea39e6b6f57b61e65bce9fea274de9b47dde791f51eb5c5a360d76fe12d72c60b1fb0ea96a2e6c9dc33153b6588f42c87a74ae7ad0d39913b31ba65b4b234df6775578c0396202907381f5cf00ff2e2a4b583ed370cb725c4807423a71c53ae8410dfbcb652b14525a225792993d7df18cd6a5aea0351d523927c34ac9b598e327032327f888ec7d315e7d4d22da1b57467dc6952ae761dc3ebc83f4aa72e9f2dba6f930a091d0e7f4af401660c07f76d93c9c8c0fceb36fadc385c80dcf4c038ed915c91c43bd872a7289c7ec52981927d48e3f0a8d5d957920f38eb5b73d818e095b70000c9ebd7fc6b9d20e78eb5d9092992997d1d268f6ba86f50466b2f56b211cf0cc2202d8b7964af1cf5c7e46addb3e18920fb923f955891a29800f18600e707a67b5690a8e9bd362ee9a1c84427ca58d5625185e6a65965504a1240e0f5e87b55291c93f29008e01c714c9e660bf7f685c1c9e292d42e8b514fb25611e0a720641e3f0ef546eed63bc46c20f380f95b38fd2a117ea72bb5bd72475fa7345bddbcf3ac76ea4aae4b12074ada309c5dd6826d330654c64771c541d2afdd452472132a152c4919aa4ebcf15dfbaba250dcd3d48c5459c52e695cab0e269334a3a534f1408915b0b4e55ddce6a06a9627c803d284c1a3acd1ec2d97497ba7512b146382b8da467a1ab5a75b4baae8ad15cf1c8f298738007f8d732f7d7325ba40d3379483014703ff00af5bba66b52c56e20b4b769dd5739e9f901dab9ab539daeb7bfdc66715466928ad4dc7514829698051451400034ea68a75310f5ab366fb2e6339fe219aaa2a7b3c1ba8c31c02c3354f6259e9fe17b18a48aedaed4b5b44a1083918ddc920f638c55268521d5d8e9e18a315785867729c838c7a9e98adef0658a6a705c5bca1a5791b7a8420fa641039e463b7e55d247a119753f36ceddde523e68947cbb402724f6e3a91d2be76552d3773ba3439a9a6ba15ad2edeede569da35119c32ab648fa8e9c1cd41a92a85cc0d80d8c1c7bd6af82b47dd0ea975706016b729244e3cd00aa8c1ce0fbf43c6319a8efade09a749e3c98ca91b84b9523b37f87e39ae69594b429c5ca3738b986d2c18927b023815ce5ddbb8078f9bb13c8c5761a9461252a1831ec579e7deb1e78b23072b839cd75d29f2ea79f5236673060749d0f9c096e304727d4015324bb646092608c8c7209ad87b366bc86455dd1989864119ceec734496d05acd2930b3b3804b1195538f5ee79ce0576ba919ad77b19ec66c56f2cec0aaeec90062a57891582c84310793e953941b46d72549cfdd03a562eb375244ea90c8b823e62a7907d2a69c25525ca89bb62ea368f7241858304eaa0e79aa315c3d848e91f96d9c6e38cfe15564bc7f2847b8851d40efee6aa34c4f4e95e8c21cb1e593b9a24cd5bebd176abb936ba9e0fb567b95079a8639483cf4a495b2722b4568ab21f2ea36460cdc522d25381a92c72d2b52a8a43544919eb48091d29cdd6907279a9287accc3af35d8783f51f3eea3b3982e186d46c0041f73547c31a02eb2a5515d9c3ed38ec3d6bb4b0f87335aea205b5c2c9346bb82f40c7b007d7eb8ae4c4e22924e9cdea354a52578a3c931453b8c74a6d75000a334945201734514530168cd14500193524321491581e41c8a8e814c47b97c39bf486e74ebf8006b674f2274038539c0cfe2707d78cd7a7b1b8d1aecddaf9932323c6c2152a76b2f1fcc8e9e95f33783bc4afa1c92249109ed64237c6c718f71ef5f52e8d796de31f0bc77b611341e682c40f98260f19e7d71d7d6bc1c5d095297325a74677e1e7192e56713aee932597857ceb7b7b859ae017b968e356d85b240c8f9b6e3191c51e1ad3a19fc3b22b5ca99958b84c762aadc9fc7d3f956f2b6af05cdbd83daf9f1c3fb96b88581dd11fe16523a6de323a62ae1d223b2b1952084a7efd89461c707861ec46315c12a8d46cceb549396879d6b360910dc236560392463b57337016362ac09538f435db788c96475461b800c4938f7c7ff5ab838e4617677e0e07def4ae8a0dc91e5e2e2a33b2250029c8c607526a94f3492ca028e338e9c62a5f3bcc0c48e0919c5437372b671b492b118e013d4ff8575422dbb2dce377667f882f4dbd888e3055a4e3777f7fe95c73ca7279ad1d73536be901da1517ee815906bd7a30f6504ba9a4501249c9a28c719ed456858519a28a4000669eabcd0a29d9c55244b648303ad3240319078a4ce7eb51b139a6d89210f5a5c1c671428c91d29cd9ce2a4a3d2be174ba70b578e79152eda4d8a8d2005f7631b471e9fad77be20d4b4ed374295ef6e6dd268d1c46d148a656623e5521739eff004e335e59f0fbc1d7dae4c97fb0a69b6f28f364f5239da3f4fcebdcf41f839e1c96282f6ee397cedc5cc4643221cf4057fa66bc4c6fd5e35b9aa49fa23be87b570b457ccf957145253837b0af68e01b8a0d3ce0f238f6a4da7190323d453b00d1452d25218b45252d0006941a4a502988729c1af47f86da8eaf7568fa768f2dc25dd83b6a70f96ff2b045cbc6c33d187d79e08e78f37a9ada792da749a091e3950e55d0e083ec694e3ceac09d9dcfa317c6314ba9c1a8e8d2936b29cb0742a636ee8464e08e3bfe75df4bac4b3d9497389651e503246b80324f38f7e4d7cc4de23b68b50fb6d9a32c578a05ddab7255c019756e0609c91e9c83ea7d9bc01afb5c698967bd248a45caef19cfa30ef9ebf9578389c27b1d7a1e8d0aeea5e2f7317c6b37f65c534d7a4793bbe5207507a01ef5e5a3c41007941b6728df7497f9bfc2badf8abaa48d633d983e6c5f6af96565c1c727181d3d2bca57713c735df81c341d3bc95ee70577cd366e8d7a55b826348f664e011cfe756f58125f68d6d7c33f7b6b8ce707a5735e5b0c63935d2d85aea1159089ed1da091c3919c9201190a07d2bbfd8c62d492b3461276396b8cac8548208ea0d455d6f8d74db55bf964d3ee3cd50e428763bcae32320f4c0e0e79c8ae49815382306aea45c58e9545522a482933452541a8b4e5eb4d14f4a1098e2714c2d431a6d36c121c0e0d25252d218a837301d2b7fc31e18d53c4ba97d8343b56bcbbda5ca4647ca83ab12780391d6b0e2192057dabf007c0d1f84bc151c97d146356d5409e67d9878a3651b22e79e3a9e9c9f6acabd65421cdd4708f3cac56f871f0fae74af0ad8e9f7b74b3793976f2c8f2f731c9db9ebd8648eddabd26c2c951d546d7445c727240ab73ac56b032c312608c9c8c007d6934731796de548aff00ecaf6af95a8954abef3d5eacf539da869b23f37703d68e3b5368afafb9e48b4aac548c1231494945c64d712249b0aa6d7030e7b13eb8ed515252d0ddc4145145030a075a28a603a9c29a3a52d32476715d9f84fc51169f6c96d3130b29caca327ffd55c553aa2a538d58f2c8136b63d4b584b4d6b4f942b8f31fe62e9ca939fbd8fe78ae66c7c332dbdc6eba9206442708adb8be2b9786e67b7cf912bc79ebb5b15a7a5ebf71680acfba78c9c80cc720fa835846954a5171a6c8926cb1e2c251eda24c01b4b10a31b79c63f4ac68e69d190a3c80a1cae5ba5767637963ab993088b2e3a48a33f9f7ae6b5c963fb748b12aaaa7ca02fb56d46575caf46898bfb24b7ba835d794b75f662c304ccaa77fd09ef51eac34c9114db5ddc3c81001e6ae40007ddcfb565aabc8d85058fa0abb73a35fc1179935bb2a60124f419e99f4e9d2b47d916924526b700e2395243fec83fd6a0208382306ac471bae7e53c5174b9766ee4f3438e855f520a7ad329cadeb490d88dd69b4e61cd34d2602d395091900914ca92294c79c0049efe94d01240e62951d7ef290457e82f85f583ab785747bfba2cb2dc5a43349191862cc80b038f7e7b57e7d5a3017319750ea186549e08f4afab97c7eb1470ada442389515445d542ed18c7b6071ed5e466fcee315046d87946327cccf7a02de50b92bb48c019c8fa52bac50aed80221f615e25a7f8ce6b994195cc680f181d79e7f4c574765e234965db24c58927696c01c9e07e02bc3759c16b1d4ec8a52d9e87c318e334034b495f6479c28a52b8a4a729ec7f3a684368a08c1c518a56185145290298098a294f0292801c38a29053a988514b4da514c404514b4e44dc7e519340896cee25b59d6681b6baf7ad392eb4c9c3dc4f0c9f69ee8a708c7b9f6ac73c0c54b656d25e5c2410a9676a1a5b89aea777e1ab4b286d5a6b70e5ae3a17c1d8be9fd6b7a3559610b20dcacb8d87900771cf6e3a564e9e8ba6d82c44ab18c739ea79ed4db9d4a599888db646063038e2bc6af79d46d33356bdd96271a22ac8b14203b0193b78cff9f6ae4356d21a692496d109eec80e7ea47f856b94323671c0fc80ab7a949148d19810a1db86f7c77ad69d49537bdc39ba9c15d594d6e079b13a13fde522aaed35dd18fcd9042ffbc563b080339cf19fad73fe23d1a5d1efdada52181512238180ea4641fe9f506bba9d58d476ea691936b53141c75a319e94a47b7340e2b42c42a6900a938348453b05c4076104574be16f107d8e430de4aff6761f2f7d87fa5732493d693915328a92e57b09c6fb9ecfa56a9978ca49c67230c0822b6935a7139dcff74e47b9af088351bb82231c33ba21ec0d21bfba28c9f68976b751b8f35c12cbe127b9294e3a267fffd9", + "properties": {} + } + ] + } +] \ No newline at end of file diff --git a/test/fixtures/l/0.0.0.jpg b/test/fixtures/l/0.0.0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b87113aa8c40e0e7b9970bf47471a3df4e9f63e GIT binary patch literal 12040 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 literal 0 HcmV?d00001 From fcfefd5f338ae3332bde2e757a8cb5149cffe1b9 Mon Sep 17 00:00:00 2001 From: dnomadb Date: Thu, 31 Mar 2016 12:09:24 -0700 Subject: [PATCH 04/10] multiple lookback tests --- backend.js | 1 + test/expected/l.0.0.0.png | Bin 0 -> 33752 bytes test/expected/l.1.0.0.png | Bin 0 -> 32188 bytes test/expected/l.1.0.1.png | Bin 0 -> 23185 bytes test/expected/l.1.1.1.png | Bin 0 -> 25070 bytes test/expected/l.2.0.0.png | Bin 0 -> 11339 bytes test/expected/l.2.3.3.png | Bin 0 -> 9729 bytes test/fixtures/l.xml | 27 +++++++++++++++++++++++++++ test/fixtures/l/1.0.0.jpg | Bin 0 -> 12146 bytes test/test.js | 5 ++++- test/testsource.js | 1 + 11 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 test/expected/l.0.0.0.png create mode 100644 test/expected/l.1.0.0.png create mode 100644 test/expected/l.1.0.1.png create mode 100644 test/expected/l.1.1.1.png create mode 100644 test/expected/l.2.0.0.png create mode 100644 test/expected/l.2.3.3.png create mode 100644 test/fixtures/l.xml create mode 100644 test/fixtures/l/1.0.0.jpg diff --git a/backend.js b/backend.js index 6fe4efc..86348f8 100644 --- a/backend.js +++ b/backend.js @@ -97,6 +97,7 @@ Backend.prototype.getTile = function(z, x, y, callback) { } else if (typeof backend._lookback === 'number' && err && err.message === 'Tile does not exist' && lookbacks <= backend._lookback) { + lookbacks += 1 bz = bz - 1; bx = Math.floor(x / Math.pow(2, z - bz)); by = Math.floor(y / Math.pow(2, z - bz)); diff --git a/test/expected/l.0.0.0.png b/test/expected/l.0.0.0.png new file mode 100644 index 0000000000000000000000000000000000000000..f56aa31d24b13e54ff0fedeaa4cdbac070495819 GIT binary patch literal 33752 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 z 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%0A2g|gQK**xO&0@HI?$tN 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 WKKx)vXZSUh9Z*(KldqPw2>TyRrFp&p literal 0 HcmV?d00001 diff --git a/test/expected/l.1.0.1.png b/test/expected/l.1.0.1.png new file mode 100644 index 0000000000000000000000000000000000000000..394d2d883aa3f38a8ed58f4cf7fa19c691aa27aa GIT binary patch literal 23185 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 VSQv=hH2{ah#K1!Tt*%S>{{V+*V2=O* literal 0 HcmV?d00001 diff --git a/test/expected/l.2.0.0.png b/test/expected/l.2.0.0.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbc6b3a5eb8c1b20b347fe8d2d87169f1f7f6a7 GIT binary patch literal 11339 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 AivR!s literal 0 HcmV?d00001 diff --git a/test/expected/l.2.3.3.png b/test/expected/l.2.3.3.png new file mode 100644 index 0000000000000000000000000000000000000000..e7bd907113943467e490f5a102139accb1576928 GIT binary patch literal 9729 zcmd^lhc{f^_xG7GM(-tB7&W3!^dN``f=5XNL3B~0x2TioM6@7?6r%Uuf>A?+5WTk$ zqj!eEJKx{G@$Pl+K4;yv?zv~}zCY(i>uRe}kg|{h04N@*t2_n(f}cVFF# lyUr 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 z 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 baH2fXDnl + + + + + -180,-85.0511,180,85.0511 + 0,0,2 + png8:m=h + 0 + 8 + 1 + test:///l + + + + + + + _image + + + diff --git a/test/fixtures/l/1.0.0.jpg b/test/fixtures/l/1.0.0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78ad885baf21855f33fec333f54e72d6f6d82e67 GIT binary patch literal 12146 zcmbWdbyO5i^zgmp(g@OxOLuqog4EKf(#z5fOQ#~alp@_o$5MjQDIndQO9|45`1t)j zZ=Cb~^}g?&bN`w-bM9y6&fJOnck%Bg;F+cxSPg)N1^}S_D}cW%0A&C+CKfgpCN?$} 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�Ur_<}{%29)8&d1fn`(2Dso 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 Date: Thu, 14 Apr 2016 10:16:52 -0700 Subject: [PATCH 05/10] first attempt at modularizing --- backend.js | 57 +++++++++++++++++++++++++++++++++++++++++++--------- package.json | 1 + test/test.js | 2 +- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/backend.js b/backend.js index 86348f8..ac82a44 100644 --- a/backend.js +++ b/backend.js @@ -3,6 +3,7 @@ var crypto = require('crypto'); var mapnik = require('mapnik'); var util = require('util'); var sm = new (require('sphericalmercator'))(); +var queue = require('d3-queue'); module.exports = Backend; @@ -75,7 +76,7 @@ Backend.prototype.getTile = function(z, x, y, callback) { var size = 0; var headers = {}; - var lookbacks = 0; + var lookbacks = true; // Overzooming support. if (bz > backend._maxzoom) { @@ -85,7 +86,32 @@ Backend.prototype.getTile = function(z, x, y, callback) { headers['x-vector-backend-object'] = 'overzoom'; } - source.getTile(bz, bx, by, function sourceGet(err, body, head) { + function testAsync(callback) { + // do nothing + return callback(); + } + + function loadAsync(lz, lx, ly, callback) { + source.getTile(lz, lx, ly, function (err, body, head) { + if (err && err.message !== 'Tile does not exist') return callback(err); + return callback(null, { + err: err, + body: body, + head: head, + z: lz, + x: lx, + y: ly + }); + }); + } + + function loadMultipleWrapper(err, body, head, callback) { + return callback(err, body, head) + } + + source.getTile(bz, bx, by, sourceGet); + + function sourceGet(err, body, head) { if (typeof backend._fillzoom === 'number' && err && err.message === 'Tile does not exist' && bz > backend._fillzoom) { @@ -96,13 +122,26 @@ Backend.prototype.getTile = function(z, x, y, callback) { return source.getTile(bz, bx, by, sourceGet); } else if (typeof backend._lookback === 'number' && err && err.message === 'Tile does not exist' && - lookbacks <= backend._lookback) { - lookbacks += 1 - bz = bz - 1; - bx = Math.floor(x / Math.pow(2, z - bz)); - by = Math.floor(y / Math.pow(2, z - bz)); + lookbacks === true) { + lookbacks == false; + var q = new queue.queue(); headers['x-vector-backend-object'] = 'fillzoom'; - return source.getTile(bz, bx, by, sourceGet); + for (var lb = 1; lb <= backend._lookback; lb++) { + bz-= 1 + bx = Math.floor(x / Math.pow(2, z - bz)); + by = Math.floor(y / Math.pow(2, z - bz)); + q.defer(loadAsync, bz, bx, by); + } + return q.awaitAll(function(err, data) { + data = data.filter(function(d, i) { + return d === null || i === 0; + }); + bz = data[0].z; + bx = data[0].x; + by = data[0].y; + source.getTile(bz, bx, by, sourceGet); + }); + } if (err && err.message !== 'Tile does not exist') return callback(err); @@ -135,7 +174,7 @@ Backend.prototype.getTile = function(z, x, y, callback) { headers = head || {}; return makevtile(body); } - }); + }; function makevtile(data, type) { // If no last modified is provided, use epoch. diff --git a/package.json b/package.json index 2c0c65f..9f1568c 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ ], "dependencies": { "aws-sdk": "^2.2.30", + "d3-queue": "^2.0.3", "s3urls": "^1.3.0", "mapnik": "~3.5.0", "tilelive": "~5.12.0", diff --git a/test/test.js b/test/test.js index f13eceb..907705c 100644 --- a/test/test.js +++ b/test/test.js @@ -144,7 +144,7 @@ var tests = { // Image sources. 'i@2x': ['0.0.0', '1.0.0'], // Image sources for multiple lookback - l: ['0.0.0', '1.0.0', '1.1.1', '2.0.0', '2.3.3'], + l: ['0.0.0', '1.0.0', '1.1.1', '2.0.0', '2.3.3', '3.1.1'], // Invalid tiles that are empty invalid: ['1.1.0', '1.1.1'], From ce14e1aaded25a75c32a987f7c9ea471d0d573eb Mon Sep 17 00:00:00 2001 From: dnomadb Date: Thu, 14 Apr 2016 10:24:37 -0700 Subject: [PATCH 06/10] including test fixture --- test/expected/l.3.1.1.png | Bin 0 -> 6931 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/expected/l.3.1.1.png diff --git a/test/expected/l.3.1.1.png b/test/expected/l.3.1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..40773fc5e9aeb404c5ec99658b96280db2218fe8 GIT binary patch literal 6931 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 literal 0 HcmV?d00001 From ded6147078e505d0e2c1f3f38b6caf4bd6718819 Mon Sep 17 00:00:00 2001 From: dnomadb Date: Wed, 20 Apr 2016 10:32:24 -0700 Subject: [PATCH 07/10] loading asyncronously --- backend.js | 32 ++++++++--------------------- test/expected/backend-l.2.0.0.json | 2 +- test/expected/l.2.0.0.png | Bin 11339 -> 4796 bytes test/expected/l.2.3.3.png | Bin 9729 -> 3769 bytes test/expected/l.3.1.1.png | Bin 6931 -> 3248 bytes 5 files changed, 10 insertions(+), 24 deletions(-) diff --git a/backend.js b/backend.js index ac82a44..6c93aad 100644 --- a/backend.js +++ b/backend.js @@ -86,11 +86,6 @@ Backend.prototype.getTile = function(z, x, y, callback) { headers['x-vector-backend-object'] = 'overzoom'; } - function testAsync(callback) { - // do nothing - return callback(); - } - function loadAsync(lz, lx, ly, callback) { source.getTile(lz, lx, ly, function (err, body, head) { if (err && err.message !== 'Tile does not exist') return callback(err); @@ -105,13 +100,7 @@ Backend.prototype.getTile = function(z, x, y, callback) { }); } - function loadMultipleWrapper(err, body, head, callback) { - return callback(err, body, head) - } - - source.getTile(bz, bx, by, sourceGet); - - function sourceGet(err, body, head) { + source.getTile(bz, bx, by, function sourceGet(err, body, head) { if (typeof backend._fillzoom === 'number' && err && err.message === 'Tile does not exist' && bz > backend._fillzoom) { @@ -123,25 +112,22 @@ Backend.prototype.getTile = function(z, x, y, callback) { } else if (typeof backend._lookback === 'number' && err && err.message === 'Tile does not exist' && lookbacks === true) { - lookbacks == false; + lookbacks = false; var q = new queue.queue(); - headers['x-vector-backend-object'] = 'fillzoom'; - for (var lb = 1; lb <= backend._lookback; lb++) { - bz-= 1 - bx = Math.floor(x / Math.pow(2, z - bz)); - by = Math.floor(y / Math.pow(2, z - bz)); - q.defer(loadAsync, bz, bx, by); + for (var lb = 1; lb <= Math.min(backend._lookback, z); lb++) { + q.defer(loadAsync, bz - lb, Math.floor(x / Math.pow(2, lb)), Math.floor(y / Math.pow(2, lb))); } return q.awaitAll(function(err, data) { + if (err) return callback(err); data = data.filter(function(d, i) { - return d === null || i === 0; + return d === null || i === data.length - 1; }); + headers['x-vector-backend-object'] = 'fillzoom'; bz = data[0].z; bx = data[0].x; by = data[0].y; - source.getTile(bz, bx, by, sourceGet); + sourceGet(data[0].err, data[0].body, data[0].head); }); - } if (err && err.message !== 'Tile does not exist') return callback(err); @@ -174,7 +160,7 @@ Backend.prototype.getTile = function(z, x, y, callback) { headers = head || {}; return makevtile(body); } - }; + }); function makevtile(data, type) { // If no last modified is provided, use epoch. diff --git a/test/expected/backend-l.2.0.0.json b/test/expected/backend-l.2.0.0.json index 848a73e..b87b0f6 100644 --- a/test/expected/backend-l.2.0.0.json +++ b/test/expected/backend-l.2.0.0.json @@ -5,7 +5,7 @@ "extent": 4096, "features": [ { - "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f99c519a4cd2e78ae93103452529c628108681451da90c28cd1450004d1484d19a005069d4c069c0d30168a3345020c52529a4a0029451450028a5cd369714c033485a971498cd201a4e68a7eda4db4582e36956976d382d160b89494f229a7814c043c0a849e69ee738a654b290940a5a5000eb4863e90f1452127bd31067279a526994b9a403b3e9467f3a6834ab400bf5a3348d4940051451400b9e69734da2801c0e6941a677a7d310a39a5a4029c0531094e02940c5761e0bf01ea1e28b59ef849159e950388e4bb9bee87232140ea49a7b6e238f0296bdff00c3fa5782b41d3f4fb7baf0f8d6eee65cdc4f33ba329f65e80633dfb545e2ef863a4dde9bfdb1a4e997fa5d9cee24472e244546036f071d79efdbdeb3f6f04ec572b3c171462ba2d6bc2979a6d9cb781e39ad11b696070c0670091ffebae76b44d3d5121451d4e2bd37e1af83f4eba68eef5b437a5d4490d9c2ff00794673b8f183c7033f5a1bb01e7fa4e957dabdec769a6dacb737121c2a46b926bd5b4af80dae5c5aa4b7975124a705e080091d013819e4753fcabbc8b43bbd5f50bb87c32b059c714664f2d1443248067036939ce00e01c7be4d765e21b6f12c1a1c12d95d41776ad6b23bcc54465e318720e0020f27e5f5ac6556cae8695d9e1175f05f538e56b689ee85ea9198e4b7c2ae471960c7f4af3df17786751f0bead269fabc3e5cebe9d0d7d670e817975a7ff6a6a7ac94d626950db35b380aa0907cc3952e71ce78e3f3af32f187807fb79268b4d925b9d4448656b99a4f3495009ea3b67dbdeb158a4a494dee5723dd1f3d3fa5308eb5b3af68975a1ea32596a1185990f553953f4359320c1aeadd5d093e83568ce4fb521e283c1e290c79a6d38f4a6d0c10868a0d14000a507149466801c69b4668a0029474a4a05002d14a3ad2e2801169ea33480669ea2a9213628152c10c93cc91411b492b9daa8a3258fa0151815d5f86e5bbf0c3db6bb0476b705ff77192039b773d0943df00e33c1a6dd893acf869e07b24d74a78f2136d6d2c256159091873c65b1f771d79fa57a9782acb4dd0525f086a2a66b65977c7228df0dc0671924601edb41f634dd37c450b41629e2496dbec258cc969f31cb39cf9785e7183939e06075c0af5ab78fc1d63a65c4f19b692d12244b978c89942a0e0bb283d3824fae2b963579f565b858b8de16b76d520bb8e1b64816cfecc4633ea01f7e0f5273c0ae4fe20b6836d6969a6cb7525c2d82a85d36027f7ac48cb391d30b938279cf3555bc63a9ea369347a6cc52de71e5dab18c2c8f1118de5792ae7a83d08e71d2b84d66d0594b22d9db4f35ecec72eea6595db192072303039c600ee6b9ab6212f760aecd230befb167c551687a83de6a7736df60d300cbdbf054201dc74c9fe600af16f0dfc3ed43c56f797fa722dbe96923152dcb05cf4c67ae08ea6a2f195feab7f3ad9b5e3ddf920c935bc0acc90053c6e3df1dfb0cd7d3ba5f84efe3b2b2d46d6c63486ead61134568554630086e99efe878fa5387b5a30e6ddbfb909f2cddb64785f873c05a6697e31806a738bcb086511ce8d16ec074f95b1dce4f4c7515df59470e956971696908b569258dec8db8119b7b918e0e78d87af3e9835e82be18c4536a074c9a4d4279d25dd32ef5e300e41e8b81d3009ddd6afbf81efee755593cd48ed1661956c302832ca403dc13e99e4f6ad15593b2fbc970d19a375a43eb2f61ab1b55835ab2f2c90c998cba939dac3ef29dcc3fef9ce08a6f8cb539a6b6bab77d3678e15b71e6b49b46d5638c839c76edf88e2bbab78fca8238f8f9540e0607159fe21d1e2d62c24824da24da446ec81b612319c1ee32714ab45ce364cd29da2eecf0bf14ea3ff0008fdec09335c9bd98030d9c318925c1fbb855391c7d2b9e97c506277b8b6d335537cbca4725bf9441f76e87f1af5b97c071e8f34ba8dacb235fe1a66bc924f9cbe001920676a8dc42807a81ef5e5d1e20bab9b6beb9990de49b5a7955da4752c37601e0123279391d4f18ae1787a707692375cf2574cf1ff008849afeb9aa497fa8dbedd8a156304165183d7df835c3dcdb4b0b6d9e2922623203a953fad7d4be15f06c9a8ebda86aba3c1e6c4d2ff00a224ec76e23c04918f4209c9c0ec3e95d8fc7ef0f68179f0ee797c473db5aea96d0192dee91026f9547dc1ea189fbbfe15eb529c79545238da6db67c3ac3b50bcafd2a5957bd44bc1ad5ab30b8f229952114c6143121290d3b14d3486145145001451450014b8a414e1400014f029053d4552426c502968ad8b8f0ceb16fa143accd6132e9929012e31f292699252b1b479ef2de120a094820b7031ebcd7b8788fc2da96a1f0e44b2fd84c31dc044920fbcd8518738e307383dc1ea3a57917fc24534cfa57da228dbec4a62071f790f63f857d3bf0ebe217842d7495f0e5cc96f2c13026448e3778c066202331fbc471f300073d38ae7ae9b69f634a67806837d3e97ac5b0bcd31aeded033ee822129701b6ee656ea01cf07a9c66bb8b0d67c69f106d7ec50c72ad94ade537cc91a85527e558c003773d48c66b47c65a33785fc4d7179b2d9ad2d9097f2d88f320918104371b8af5c1eb9aecfe12c377a4f8b3ced39631657d0ef9c4ceca91904e6418e18b01d3dab89574e56b1b3a76573d1fe1df83d740b14b9d4a59a7be553b84cdb842dd0ed200c8c018e3e9d6bcbbf683f1ae99a369b73a768e211abdcca184d01e029ceecfbe704fa923d315d47c4cf8b5a7e8905d5ac5757505f5b9cacb0daf98aed8f947ce3182783c8f6af91bc61e207f12eb2f7ef6e96e5970510e72dd598f03924935d94e9a7b2d0c6523e9ef83de0f3e0df0dc97578b149ad5e949a633a83f2156063dddc7cdc8f5e7b57b3f853eca9a2dbdbd846b0dbdba089615e91e00e07b7a73debc1bf64fd3750d5749d62ff5cfb45d69c5a3b7b43712b30ca64b0507b0ca8cfe15f46db411db42b14281507402b2e5a919be67745ae56ae913514515a0c28a28a004232083d2bc43c67e1592cbc405e4959ede6cb44f924c7d8827d4e7d6bdc2b27c49a67f6ae952dba6df37864ddd322b0c452f691d3734a73e5670b6da83d90926d1adec91847f64b41757422fba067e5208c64f20741d3bd7cb3f1a3c7faaf8cfc42f0df18e1b6b26312c16f3b490b3a920b8ec7be0e3a57aa7c6e923f0868c2182dedb52bbd46292de4674252d4e325e31d37727271c71d2be66aeac346d04dee734dfbcec079155c8f9aac1e950b75ada44a1d4d232714e34d1d6818f0b814d7e9c53f34da1888cae0669b5239f96a3a96520a28a280014e519a4a923142063956afe8f62b7f7d1452ce96d0160249dc12a83d78ea7d055bf0be8736bfa9ada4322c2806e926704ac63a64e39249c0007526badd5ad1fc0da9c36fa6cd73730b44b35e128006c670548ce072719a1ce29f22dc5caed7e86478eb44d23488ec7fb1a5be943261e6b98bcb133739641d80e3afad755f0f75cd3d7428ad75ed737c3b8c71594a1b6c273f7c9e98c76e39c5729f103c4a3c537b15c5a593db59db208c0ebc9ee48ee4826b2afa5b484da5d69be5ef6882cb132e42be3938350e0ea43965a31df96574759ff0008ae9b7badeafa6c65e1bac24b65b4160e0f5c01d477fa5741f05b5fd0bc3fa86a565e29b6b06fb345379724d9f99b18c018e4f18cf079af39d1b50d6ae75eb56b192f2e2fc8102470bb091d3a6c18e718e38a66b02dff00b5a38aef4c9b4bd80acf192c5cb64fcd86e47618f6f7a9706fdd93b8d492d51ea3aceb5a778d7c657b2dcea19d336c69145bf697c28c741c90001f5af6ff00823a341126b41ae26bc489840ad7037285e4900f7fc315f3dfc30f07dfeb1a59b8b0d2a4fed4b7996ead6e0a12b2460e082076cf1f8d7baf806e753f05e89a92cfa2cb78cb1bdd5d0865552ac3270031c9f941f7fcf8e3692ac9266eafc976701fb4fe9fa168765696f616d243a9dd30323a4e5048a0924bc78c1e71839e31c7be7fc3cf823ab4f6b61a9dc5ba3b5e44b2c4f36d30c48cb9cb0e4938231c75fcebc6fc61aaddeafe21bfb9bb59e2dd3c852da676636e0b13b067a6338af60f811aafc40fb0edf0c5c477ba742fe4adbdddcae223c31c459dc5707b63f435db521ee593b18425adda3eaff0e68b67e1fd16db4dd3a158ade1180ab9e4939279f524d6a572df0daf35ebef0a5bcbe2b8e38f54deeae51360600f076f6fc3d2ba9a8340a28a2800a28a2800a8e67291b3280481c0271cfd6a4a82e668e20825380ec1467d7b5007c9ff00b46788352babed4ada7b6b68ad2d2e4c50c912e2472e98258f7e011f8d7cf75edbf1a52e6db50d63eccd61359c370ed2090e66dce4a8c8e84f3907b578956f4649c74319269ea1daa1638353678a81fad5c84879a402a4c0a5c5160b8d23029a3ad3d8530f0334302390f38a6d04e4d15050514528a00551935328c5449d6ad410bcf32450aee91c85551dcfa552133b9b3d7b4787c3f6f65a5412c1a918f63bbe023bb70cc4f5e07afe15d17873c35378dac27b99ee8095f0a9b0e36a64800004e1782718cd79dddf85b58b582295ecde449300795f3e09e80e2b4b4af12eaba7cf0e9da85f5c595bdb3e4aac237ab0040047e3d79c571d48369ca84b5fbcd62ecd2a8b43a4d03c2b7b77a46aba084113aca5bcd2a76c9b7a1cf723d3b73eb58d6b636b697d3681a898bcfb6b80f1cdc2071c6e058f438e4678f5a9a6f88f7f6eab6fa7a45240ae5cc9711e5e43effad721aa6ab75aa48ef78eaecd234a4ed00e5b19e7d381574e35657e7d13264e0b6d4f43f155aff64e93a4eafa532ff69c174025c5b2f0fb4365b2383f7573f535d17853544f889e20d5adbc45a2db7f6e4768b25a489ba229b48254eedc17ef020907bf5cd7977fc257a93c1a44372b0cd67a64ab245094c2b118c862392085e6bd022f8a66cbc747c4e7409edad2fac96da48c1c0765607cc56239c74c7eb594a95451b6ef5d7f4294e37b946cfe24f8ef43ba974ab342a4efb758560cb1f70500c91c1c8e3bd6ca78bfe28f82ac67d4b58d3ae2dad6f616b749a7b608b1b123f78428ceee70377073df15d568df1dfc330c51cda8e9f7af711cae6344854ed5e80e777523ae3e9cd65fc4ff008f563e2df87d79a25a585dc17d74e11e460a13cb0d9f5272401c76f5ad69734be2858995ba33c0afaea7bebc9eeeee5696e677692491bab313924fe35b9f0fbc4517863c5167a95ddbcb756b1b7ef618a66899d7d320fe87835cdd2138aea7a991f45ddfed3dab04816c745b24daf972ecd864cf000cf071debdafe11fc58d23e225b3c50afd8b5785774b66edb8ede3e753fc439fa8af828364576bf083c6337823c7167aa4682481b305c4678dd1b63383d88c023e950e09ad0a52699fa114536360e8aca72a4020fad3ab0360a28a2800accd56c3ed52c52b3b048be6d8bdc8e7ea7e95a759fa96a36b6d1949e5d9bc1507a0cfa67a6693b5b503e19f8cfa3c5a4788bccb6927962bd4f30b4a002086e9c139c0c726bceabd1fe2e5ddb7fc2433cfa75ec5730dc29cc580701bf8b038078f624f3815e6b236056f49fb9766325ad8477a8b393cd079a4aa6ee348b5455ed5edad2d6eb658dd8ba8b1cb85239fc6a8d5a77572029ae9ba9d52430cb312228d9c8eb81d2876ea0526183495b93e8776aaaca824c8c9d87907d2b25e120f2307deb34d4be165dfb90e29c06697611d69c169d82e228ad6f0f5b1bad62d62c3637ee6dbd7039359a16aee95a84da5deadcdbedde0608619041ea28927cad477126afa9ec715d8b2885cccc63862f9cb004e0f03fa8ac8f10f842fbc4e45edbc4a97cecb1ac601c91939691ba02003d3a62b9ef12f8c6df51fecf86ceccf936f20964599fe5988ec40e71d7bd7a8f8725bcb8b7197b1b433ae22ff004856209eea7232dec33c578ae1530a9544b5676f346ade3d0f27d07c157775afdad96a84da4125d1b3926003f9726d257be08246383eb5a5e36d1adef3c776da3e956b6563325bac6c158a45348149c8cf20b70003ce4d7a76b11c496f671349249e44f1dc46c176c8aea49e847d7391debcb7e294467d521d46d619823a65a4c7039e3e95d586c54abcf5d3430ab4941686ff00c44d2dd7c19a6ddc5a64364cebfe928a9f748c631d7f135b9e34f889676ff0e1344b6c7f6a3dbc70a8f28ed48ce4330cf1f740e9ebed5c443e2fd4b5bf0ed8f84258a36b99e616ed7370c7214b2ece73c1ea093db1deb0fc73622d3508a412b3ee5f2cab1cedd985033e98c53850f7946aee9b681cfdd6e27a7eb5e12b0f0cfc31f0fda0d2a29359d75d3ed3773c219e2057795466fb876ed031fed1eb552f74bf05e8a9a6de5fe86f36981becd72be792e770cf98194e7782a78c01ce2baef1cf886cfc67e01d2cc7a6de5adcc32c5340b3ec092009824306c118271d08207bd50d7f5bf0e5fe836914b6935bdddb304408814950b8249e84e33ee4f23ad60ebcd495df577358c138bd0f25f893a2e9b61a9417de1bb5d4e0d06fa312db7db61284724101b2430c827aff002ae31abe95d4a587c53e0cb7f0d810fd8c3e219e50239227e769233b49e719c038cf1c9af13f1e7842efc2babc96d20926b6c068ee0a615c7e048eb919cf38c8af46955551799cd3838339653835346c564561d8e6a0c73522f4ad910cfd03f835e2787c4de05d3e55706eed635b7b84ee195400c393c11820fd6bbaaf8b3e07fc459fc3dafe9d6d22adbe93314b699cc7904923e624606476ce71935f698ae669adcd53ec140a5c514144538631304fbd8e2be67f8a1aceb7fda10432cef6d7003ba6176a49824847e9bb1db60fcf9afa33c405c68f78d148d13ac65848a70531ce7f0ebf857cd9e3df105aead3e9fa36aa905c4faa5badca6a42dd9081c91f2b72a41e72bc75ace7b6a0b73e76d73519b53d4a6bab9118918e0ec181596dc9abdac5ab586a97966ec59a099e22c7bed2467f4aa4466bb5249591875b91e293152ede339a692052b0ee587468dca3a9560704118229b5e97e27f0dbea16526a060f2a50a5fcc5000600771d87a7f8579fdee9f756210dd40d1ac9ca31e8df435146bc6aaf31ce0e232d2cee2edc0b785dc670580e07d4f6aefed34a8ad61091a228c0dc477fad71da16af369d218c1cdb48c0c8b8ce3b66bac5d4918a342ed27cbdb0067dbd7f1ae2c6ba8ddba1b50e55abdc7c96e41e090073f4a3ec29763c992dc4a4f52c39c0e49cf6a7cfaac413e466ddd36b20247e22a3975276850aa2c6c7aede3757245496b735728156ff00c2769e4036efb59b2c0eec91ec41ede958b1786a5fb798a59556dd5779940e4fb007bfb56a1ba95b219db0dc900f53eb52c371232b4721ddf2b72dc91c5742af522b4662d41991fd956d0ce4297718ff009683ee9fa77fad4b269115cb47e532e56264009ea71f29cfd4fe953a9380bdbaf4f6f5a0c8f1caae9c3678f6a3db54bdee4a8a1d7fe079e3d352e6ce75965507ce89fe5edd54f7fc715d078793424d2acacf54f0f5c5bdf4e0c5f6896dcbac8e39dcac5860918e0715506b8ed10b672bbd9bccc28c9ce3ff00ae7ad54d4c3ea168b6ff006a911236dc1548233ffd6feb42ab39ae5a9f79ab8c56b13aad675a82cad95c5c08bca652898f9b38e3683dc6073d6b2a6f12c52d8c8e5a267c1df0cff2b1e7278f5209ae71349fb1b24f04d29914e1c93d41e0e0f635726d26cefd419032480eddca403fad44614a9b4db7ea29394909e14d14dcdc36a6d791437b04e935bc7c4b923e6c328391db19ab9e24986b7a78b8789a046dd214382c08cfa7f5c1e69fa669b6fa7d95c794dbc4840264009e9ea06719abb0aa430a46ab198d060a11904f73eff8d693afcd3e68eb61420edcace3b4e7d52c352b7d367965891c0da9c380adce541e39ad8f1049a868f716f14b243345749c2ed0bcfa30edd473e9dead4f0abeb02ede4428b1ec8d4e418f04f03d4735cff8c255fb7dbbc536e91472bd718e87fcfa56f16aacd5d74d49778459dafc37f16ff62dddbcf711437d6e11e392097e65951b2ac08e7071839c7a7bd75babdf691e22f096b70132db5ada27da2de39d83950303cb2c304a8ec3fad78e41ab59c3a35a5ad9da31d44b93349d3712df28047e15e8de15d4adf4eb8537f0472c3b54b2a36e5009ced3f502b3ac9d27ccb61539737bb23c5240031c1c8f5a16bd7be287c37b4866b5d4bc172fdbecafd5a65862520a7cd82a1792307b1e9c735e4382ac558608e08aee84d4d5d19c935a33abd0b5f8ac3488ed6d22956fda6c316daf0c88d9cee4618c8f9707b63e95fa07a1c92cba3d8bdc0c4cd0465f391f36d19fd6bf3dbc24a17cd9a395167475d8a5371ce090476ea2bf40bc2976fa878734cbc9a48e5967b68a4778feeb3141923f1cd6326b99c5171bee6bd14551d5754b3d2ec2eaeefae238a0b589a69598fdd503249a4591eb56d6ba8e9d35a5e31104ca558a9e40e86be58f8e87c07e16b73a5695a741aaeb92aee6bb92e6432db91c7cc5480381c2631ed5e75e37f8a5e22f11ea7a8187509ecb4c9e76923b5b7628141e39239c9ea79c649ae01b2cc49249f535b469db73272b88ec5d8924927924d369d8a42315a12349f96a3eb52374a8aa58d1dff873c66d6db2d3514cdb33317b8c969067a67b115078db59134874fb49219ad0057122a8cf4e83d2b91a9237540c1a3470c3a9ce47d2b3587829f3a43f68dab33a8d06ef495d2cc734314571cac8cee49907b0c7f5ab45e016ac2c510468768651df3d8d62786f4e82ede492ec6615c20192393d4e47a0adb960822711da47e5c18dc493924f4fc38ed5c3888c54da4ddcd232762ab3aefcb65db3fe79a566dcdb883b7d3d3d8568e8da44daa4efe5911c1191e63852e541ce3e51c9e86b6924b14927baf0fe9e27b2b7db1f95a8059249c91f36517f3e3a7ae6b3485a1cab0050374078c679ad348219763a4c11c80037503b73572e349bcd4b476d6f4fd32286c23f9266866dea1c60648249427838fc4573cebf2eec9009ed4dab0cde874559e22c9709f2e49c10781f4acdbeb2303a47214657018143d47f4351594ef6b2a9604c6f8f607dc7e35b5ab2457168650eab32287f2c7539ea71e98c7eb49c6db0ee9a38f6b36170e4fca3040119c6476ff26b46003185238edda9176bf38ce3b52ed448e328fb9c9231b79e3fc9a6e6e5a312d352e2c8de6156e431fcaa5898e7a0e0e3dbf0acfb77577d8ebb5339cf73f855c94ba5b6d85943907048048352d74358cba9335c796c00919d40dccbd87d7b559fb5a1fbb8c360f07358993952460f3d6ab6a3a82db425506257521769c6df7aa8439a5640e492b9b9a7da45aa6aa2c2e6e1b11dbcd70258d32c182fc9c03ea7fc8ae335ab1b8b1bc2b74065c6e561d187b54ba06bb7ba16a0b7b62ebe70cfdf1b8138207e59cfd40a7de5e5c5dc02d12f9aea371f6a97cd50bb640a4b00c793c7d327b74af46109539791cf2929235742b0d3ed5ad6e6e6f3f7ae3242904283c1e3a9c035d66b36867b999e15536c316f0dca20457550070b9c8c67b8f5ae022f0f6a372b0c96d14722caa0aec71c6467073deb5749d7d60b73a7eabe742ea4af9ca32c8474e3ebdbd2b9eb53737cd177b154da8e8d178788b59f0b6857ba2dca3837b166091f91e531392be9923afb57046ba4f186b52ea9f64b794c320b4de893459db20273919e40e7eef6ae618f35d54d5a376b53396aec771f0b7c4b3683aa5d4515bc170b7b0988a4d089541eb92a78238c62beeef06dcdadef85749b9b08a386d65b68de38e35c2a02bd00f41cd7e7069d79258dfc1750edf32170ea08c8241cf35fa0df093c4361e23f0269975a7cd1bf97108a544409e5b8eabb4741e9ed51523af31707d0b5f12bc569e0bf075feb6f099cc0bf247b80cb1e17a919192338e719af877c6ff123c41e30f3d7539d22b79a7f3de0801542d8c0ce4938006319c7e35eebfb60f8a6faced34ef0e40152cef90cf3302097dac30b8c71c806be5366f5ab82495c993bb1fbb35734d9d2def229648e39029ced933b73ef8e6a82d3c1c55ee893d4348f0d58df092761632cf7ac7c98fcd54dac586001c2a8e7a9206338e95ccf8fb4a5d1f541673c4b05fc636cf0abab05e0633b4900f5e335849ab5e476ed0acedb1883cf247d0f5154cb9762cc4924e493deb0a74a519734a572e524d59218fd2a302a7dbbb3d29bb706b76894c7a9c8cd2d565622ac2b03de9a771346d685a8c360c37b4a43e778c70be8473c9eb5d8c0d6d269c675666966019001ce0920e7f0cfe55e6b5aba3d8dc5c133c92b5bd8c58f3276242a8f41ea4e3a0ae6af878cdf35f5294da563bfd235b3e148af2fe38a690980c51100ec594fdd24f1f77248eb838acb8fc6afe1bd3045e18d42ea0d4a62924d730aaa045c366204f2dd5493c7208e700d616abe214bab79ed98c9f63562d0a00aa5db18dee79ce07419e3f5ae4e4937f03a52a549457bdb8b767b47843e2f693a76a56d79aa786c35da121ee6c6e0c45815c1ca636b64e4e38ea6baed6f4af0dfc4244d7bc1e069d6a030bf81b68f224c9da4a83c06033c7a67b1c7cd02b4f46d4ee2c25748e6912098049903101c0391903ae0e08f71553a5192b243bb475da8d86a1a7df5d69d788f05cc04a3c2c71b483d31d3a60823d4566b493870f212768c1c8e80e4577d673d9f8cf46816e26964f115a1937ba8526ee2c82a49272cca030c7b0ae552f160c6f1e65bcca51f7a8cb2938c8f7070723f1ae29269d8a4ee66c7d73939fcea64d9e687008908dbd7b1a8ede096542631bf048c0eb4eb82e92f96c3050e3a608ef58df5b215c1d5da666546f720640f62698acc5b2a7047afeb52fda0a9f9c97edc9c60d5699cb15dbf4ff1ad56a5dd58bd115933bc00c0e063a74ae56fd99af26ddd4311f857451b67046720f349aa5b26a291b6fd92a64640c823deb4a1555396a4cbde472d4559bcb396d1f128c83d1874350c486470abd4fbe2bd2524d5d191dbe9733c1a6da875c61002a3b552f19456f2431dd4308f30b00ee382463bfe95168b705ed14cc4b18db683dc8ad2b93be325412bc1231d41f5af3399d3a97376ef1b1caff654e7423a98e6159bca23b8e3afd33c564c9c1af4886e217d1a7b4750636c82b9c0ede9f87e55e797516c91d7fba71d2bb2955f697b99b56b15eba8f0b78e35ff000d5a5c59e93a94f6d6772ca67890f0f83c73d47e15cb9a01c568076df157c713f8f3c430ea77286331dac76e14fa8c96381eac4d715d4d275a728a0070f5a09a4269a79e05310e1cf4a7018a451814ac703de988703e94e518e48a9b4e08d3aac8321fe5cfa67bd6c78a2d6081a3787386e1428014281fcea5d44a4a3dc76d2e72f8e7152471b13d29a2ea50b85dabee1467f3a8de491ce5dc934ae8ab1a3e6dbda9524adc3f39539da3fc6a3bdd56e2f08f39cb28fbabd02f18e00e074159f4b45ee1ca8733963c9a3b74c53680690ec3c5381a68345508ddd12fcda5cdacc656088ff305254e3ea39e6b6f57b61e65bce9fea274de9b47dde791f51eb5c5a360d76fe12d72c60b1fb0ea96a2e6c9dc33153b6588f42c87a74ae7ad0d39913b31ba65b4b234df6775578c0396202907381f5cf00ff2e2a4b583ed370cb725c4807423a71c53ae8410dfbcb652b14525a225792993d7df18cd6a5aea0351d523927c34ac9b598e327032327f888ec7d315e7d4d22da1b57467dc6952ae761dc3ebc83f4aa72e9f2dba6f930a091d0e7f4af401660c07f76d93c9c8c0fceb36fadc385c80dcf4c038ed915c91c43bd872a7289c7ec52981927d48e3f0a8d5d957920f38eb5b73d818e095b70000c9ebd7fc6b9d20e78eb5d9092992997d1d268f6ba86f50466b2f56b211cf0cc2202d8b7964af1cf5c7e46addb3e18920fb923f955891a29800f18600e707a67b5690a8e9bd362ee9a1c84427ca58d5625185e6a65965504a1240e0f5e87b55291c93f29008e01c714c9e660bf7f685c1c9e292d42e8b514fb25611e0a720641e3f0ef546eed63bc46c20f380f95b38fd2a117ea72bb5bd72475fa7345bddbcf3ac76ea4aae4b12074ada309c5dd6826d330654c64771c541d2afdd452472132a152c4919aa4ebcf15dfbaba250dcd3d48c5459c52e695cab0e269334a3a534f1408915b0b4e55ddce6a06a9627c803d284c1a3acd1ec2d97497ba7512b146382b8da467a1ab5a75b4baae8ad15cf1c8f298738007f8d732f7d7325ba40d3379483014703ff00af5bba66b52c56e20b4b769dd5739e9f901dab9ab539daeb7bfdc66715466928ad4dc7514829698051451400034ea68a75310f5ab366fb2e6339fe219aaa2a7b3c1ba8c31c02c3354f6259e9fe17b18a48aedaed4b5b44a1083918ddc920f638c55268521d5d8e9e18a315785867729c838c7a9e98adef0658a6a705c5bca1a5791b7a8420fa641039e463b7e55d247a119753f36ceddde523e68947cbb402724f6e3a91d2be76552d3773ba3439a9a6ba15ad2edeede569da35119c32ab648fa8e9c1cd41a92a85cc0d80d8c1c7bd6af82b47dd0ea975706016b729244e3cd00aa8c1ce0fbf43c6319a8efade09a749e3c98ca91b84b9523b37f87e39ae69594b429c5ca3738b986d2c18927b023815ce5ddbb8078f9bb13c8c5761a9461252a1831ec579e7deb1e78b23072b839cd75d29f2ea79f5236673060749d0f9c096e304727d4015324bb646092608c8c7209ad87b366bc86455dd1989864119ceec734496d05acd2930b3b3804b1195538f5ee79ce0576ba919ad77b19ec66c56f2cec0aaeec90062a57891582c84310793e953941b46d72549cfdd03a562eb375244ea90c8b823e62a7907d2a69c25525ca89bb62ea368f7241858304eaa0e79aa315c3d848e91f96d9c6e38cfe15564bc7f2847b8851d40efee6aa34c4f4e95e8c21cb1e593b9a24cd5bebd176abb936ba9e0fb567b95079a8639483cf4a495b2722b4568ab21f2ea36460cdc522d25381a92c72d2b52a8a43544919eb48091d29cdd6907279a9287accc3af35d8783f51f3eea3b3982e186d46c0041f73547c31a02eb2a5515d9c3ed38ec3d6bb4b0f87335aea205b5c2c9346bb82f40c7b007d7eb8ae4c4e22924e9cdea354a52578a3c931453b8c74a6d75000a334945201734514530168cd14500193524321491581e41c8a8e814c47b97c39bf486e74ebf8006b674f2274038539c0cfe2707d78cd7a7b1b8d1aecddaf9932323c6c2152a76b2f1fcc8e9e95f33783bc4afa1c92249109ed64237c6c718f71ef5f52e8d796de31f0bc77b611341e682c40f98260f19e7d71d7d6bc1c5d095297325a74677e1e7192e56713aee932597857ceb7b7b859ae017b968e356d85b240c8f9b6e3191c51e1ad3a19fc3b22b5ca99958b84c762aadc9fc7d3f956f2b6af05cdbd83daf9f1c3fb96b88581dd11fe16523a6de323a62ae1d223b2b1952084a7efd89461c707861ec46315c12a8d46cceb549396879d6b360910dc236560392463b57337016362ac09538f435db788c96475461b800c4938f7c7ff5ab838e4617677e0e07def4ae8a0dc91e5e2e2a33b2250029c8c607526a94f3492ca028e338e9c62a5f3bcc0c48e0919c5437372b671b492b118e013d4ff8575422dbb2dce377667f882f4dbd888e3055a4e3777f7fe95c73ca7279ad1d73536be901da1517ee815906bd7a30f6504ba9a4501249c9a28c719ed456858519a28a4000669eabcd0a29d9c55244b648303ad3240319078a4ce7eb51b139a6d89210f5a5c1c671428c91d29cd9ce2a4a3d2be174ba70b578e79152eda4d8a8d2005f7631b471e9fad77be20d4b4ed374295ef6e6dd268d1c46d148a656623e5521739eff004e335e59f0fbc1d7dae4c97fb0a69b6f28f364f5239da3f4fcebdcf41f839e1c96282f6ee397cedc5cc4643221cf4057fa66bc4c6fd5e35b9aa49fa23be87b570b457ccf957145253837b0af68e01b8a0d3ce0f238f6a4da7190323d453b00d1452d25218b45252d0006941a4a502988729c1af47f86da8eaf7568fa768f2dc25dd83b6a70f96ff2b045cbc6c33d187d79e08e78f37a9ada792da749a091e3950e55d0e083ec694e3ceac09d9dcfa317c6314ba9c1a8e8d2936b29cb0742a636ee8464e08e3bfe75df4bac4b3d9497389651e503246b80324f38f7e4d7cc4de23b68b50fb6d9a32c578a05ddab7255c019756e0609c91e9c83ea7d9bc01afb5c698967bd248a45caef19cfa30ef9ebf9578389c27b1d7a1e8d0aeea5e2f7317c6b37f65c534d7a4793bbe5207507a01ef5e5a3c41007941b6728df7497f9bfc2badf8abaa48d633d983e6c5f6af96565c1c727181d3d2bca57713c735df81c341d3bc95ee70577cd366e8d7a55b826348f664e011cfe756f58125f68d6d7c33f7b6b8ce707a5735e5b0c63935d2d85aea1159089ed1da091c3919c9201190a07d2bbfd8c62d492b3461276396b8cac8548208ea0d455d6f8d74db55bf964d3ee3cd50e428763bcae32320f4c0e0e79c8ae49815382306aea45c58e9545522a482933452541a8b4e5eb4d14f4a1098e2714c2d431a6d36c121c0e0d25252d218a837301d2b7fc31e18d53c4ba97d8343b56bcbbda5ca4647ca83ab12780391d6b0e2192057dabf007c0d1f84bc151c97d146356d5409e67d9878a3651b22e79e3a9e9c9f6acabd65421cdd4708f3cac56f871f0fae74af0ad8e9f7b74b3793976f2c8f2f731c9db9ebd8648eddabd26c2c951d546d7445c727240ab73ac56b032c312608c9c8c007d6934731796de548aff00ecaf6af95a8954abef3d5eacf539da869b23f37703d68e3b5368afafb9e48b4aac548c1231494945c64d712249b0aa6d7030e7b13eb8ed515252d0ddc4145145030a075a28a603a9c29a3a52d32476715d9f84fc51169f6c96d3130b29caca327ffd55c553aa2a538d58f2c8136b63d4b584b4d6b4f942b8f31fe62e9ca939fbd8fe78ae66c7c332dbdc6eba9206442708adb8be2b9786e67b7cf912bc79ebb5b15a7a5ebf71680acfba78c9c80cc720fa835846954a5171a6c8926cb1e2c251eda24c01b4b10a31b79c63f4ac68e69d190a3c80a1cae5ba5767637963ab993088b2e3a48a33f9f7ae6b5c963fb748b12aaaa7ca02fb56d46575caf46898bfb24b7ba835d794b75f662c304ccaa77fd09ef51eac34c9114db5ddc3c81001e6ae40007ddcfb565aabc8d85058fa0abb73a35fc1179935bb2a60124f419e99f4e9d2b47d916924526b700e2395243fec83fd6a0208382306ac471bae7e53c5174b9766ee4f3438e855f520a7ad329cadeb490d88dd69b4e61cd34d2602d395091900914ca92294c79c0049efe94d01240e62951d7ef290457e82f85f583ab785747bfba2cb2dc5a43349191862cc80b038f7e7b57e7d5a3017319750ea186549e08f4afab97c7eb1470ada442389515445d542ed18c7b6071ed5e466fcee315046d87946327cccf7a02de50b92bb48c019c8fa52bac50aed80221f615e25a7f8ce6b994195cc680f181d79e7f4c574765e234965db24c58927696c01c9e07e02bc3759c16b1d4ec8a52d9e87c318e334034b495f6479c28a52b8a4a729ec7f3a684368a08c1c518a56185145290298098a294f0292801c38a29053a988514b4da514c404514b4e44dc7e519340896cee25b59d6681b6baf7ad392eb4c9c3dc4f0c9f69ee8a708c7b9f6ac73c0c54b656d25e5c2410a9676a1a5b89aea777e1ab4b286d5a6b70e5ae3a17c1d8be9fd6b7a3559610b20dcacb8d87900771cf6e3a564e9e8ba6d82c44ab18c739ea79ed4db9d4a599888db646063038e2bc6af79d46d33356bdd96271a22ac8b14203b0193b78cff9f6ae4356d21a692496d109eec80e7ea47f856b94323671c0fc80ab7a949148d19810a1db86f7c77ad69d49537bdc39ba9c15d594d6e079b13a13fde522aaed35dd18fcd9042ffbc563b080339cf19fad73fe23d1a5d1efdada52181512238180ea4641fe9f506bba9d58d476ea691936b53141c75a319e94a47b7340e2b42c42a6900a938348453b05c4076104574be16f107d8e430de4aff6761f2f7d87fa5732493d693915328a92e57b09c6fb9ecfa56a9978ca49c67230c0822b6935a7139dcff74e47b9af088351bb82231c33ba21ec0d21bfba28c9f68976b751b8f35c12cbe127b9294e3a267fffd9", + "raster": "ffd8ffe000104a46494600010100000100010000ffdb00430006040506050406060506070706080a100a0a09090a140e0f0c1017141818171416161a1d251f1a1b231c1616202c20232627292a29191f2d302d283025282928ffdb0043010707070a080a130a0a13281a161a2828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828282828ffc00011080100010003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00f99e8a6938a6eeae8b98d87d14d073413400b9a506994038a2e3b12d25341a70a7b9228a5157f46d26f358bc16ba7c0669b69723200551c9624f000f535db49f0baf8e9af7165a9595ddc428249ede2593312e0725b6edc738ce7143928eec373ce4e69369abfa8e9f73a74e22bc88c6e5770e41047a822aef85f41b9f10ea6b696cf1c4bd5e590fca83d78e4fd053d37031029cd2918afa07c1df0b34682d6f2e359b0d4f5248b9134400461bb076a86cf071c9e3f4cd0f1efc2f863d2d24d174a9a0bb91b7c4ad3a92e8464294049df8e7e983df159bab08bb363b36784487269a0558bcb596d67921b8468e58d8ab230c1523b557ce05363418a434bd69082290c052d20a5c1a601453821346c228b0ae368a795a6e2801292971450312929692900f41cd4869b1f4a5aa5b12c652af5a08a00e690c1bad369ec29a450020341a28a0005380cd20a7a2d0903154568e91691dcdd2fda9a48ed10833491aee2ab9ea077a86d6cae6e9666b682495615df21452762fa9f6af50f849a6f873539755d3353d552ce2bb80c51cb3b6c064206d047a673cfd29ca5caae24aecf57f86de13d322b4dda3dd69d6df641ba57bb51e73c4e32cb27518ca8c1edc92315d578bbc4d6034b95b46d3a2759c932cd3afcbd410a8a3ef64aa9e78e9c1cd78ff0084bc317f1f884787af754d423b337263ba82050aeca7e5562dfc43822ba7f8e1f10747f0ff0085c7847c24f0b4f8d92ca06e64078621bb371827f2ae252955568b34b726ace6b46d3a0f89be26bb7974c736ba79df3246b8695e4272e76f000207ca3dfe95de683f0f6e74db57874bb258cc92923ca88e555c6012c707803f339f4aee7e05c0b2f81f45bfb3b25b0b07b529140e77480073f316c0cee396cf7c8af4caa8a6b45a20b27b9ce5ee832ae9f77f619992eae00698055fdeb05c64f18dc4753debc5fc51a46afa65ec62e66364b33131a00184400183bcff0011279206d03a66be8cae77c6da043af695b5e3df3db9f322193f31eea7eb59d6a4a5ef257669076d0f94f55f83f73a978675af12c97cf04d02bdc0fb410639d413d2438c1206471dc7ad78532e1ebdcbf681f16ea0f709e19f39e28226f32e6147fddb375518031c7a0e9c0ed5e2328ce2bb69ddc13673bd188aa00cd2302dd29f083232a0c649c0c9c57a5693f0c27b79e5ff0084b6e86936826fb20986d709315dc858921421c1f9b3dbdc55e823cc84673cd3c28aeafe20e83a4f86bc512699a56ae357b78914c93c4a1407239504120e38e6b97a690360a32c154649e00ab5796325bcb2c6fcc917de0067ebc8e383c55bfed485459b41671c52c077964032cfc61b38e800fbbebcf3935735bf14dd5fc734102ac104c5bcd3b419650cc1b0ee00cf2a3a0038e9408e7319a368a728c9edf8d069804b6b2c71ef78dd53714c95c0dc3a8fad5622bdd459dbf88be01c76da6c505b9d15deea7ba9464dc49b773a06c7076b0e3bede38071e1f2a152720823b1acd3e62b6213d69314e3498a0a2451f2d14a80914ed9c55589b91f5a5a08c502900a6958718a5d9cd0dc1f6aa110b800f149413924d15050e41935d1e89a2492431ea3788574c59023bf1963e807523d6b02152c4000924e0015db695ac35b5fc71789ac65fb288c44b0aa0854f1804f6e0739a526e2b404aef505d5e1d2fc477f7da525bb5a61556328caaebea14119c11dff009d1a6f88ce93a959eb7a658c31dc5bdc3ae278b745229e406e319193f8629dad6b9a324569fd951ccf7312f9721907c8c9fdc073d07ae3b569e85afe94fac473dd5ecd6ba63cf6e2eac5edfcc475f2995a6c723729c00719e73ed59b7a5ecc69799e99f062e2e46b50f88bc41a7318a659ae1aed6191b3956f948f63ce30401835c4e83adf87fc5ff172f2f754f0e5ecb6b3e3ecd6ba6805a3d9d58a606ec8073d08ce6acbdce8b63a0ddde45f14b579f5282067d3ed234900071f71b24819c91c631d7dabc7ecafa7b1bf86f6da4db730c825472036181c8241e0fe3452a7a37dc252d51fa4ba0cd05c68d6335a5b496b6ef023470491f96d1ae0614af620718ad0af8abe1b7c73f145978c6c4f88f5792f748b89522b94990111a9e37ae00208ebefe86bed45390082083e944a3ca54657169ae70a7240f7a7554d4cdb7d91c5e322c5d7e76da320e47eb8a928f81be30dc4b75e38be96e1e5790b104c8437424704751c63f0ae1253c5745e3df213c59aa7d995122f3df0a8c19473d8f707afe35ccbb126ba13f7518db51c87041af67b9f1edf5cf80215d5aeeda5b7d5ee21b3b8852352d1c16e9b5b0392a4ee43ce0e7918af165a9d1895032703b5095c1935d2451dccc96f2f9d0ab90926ddbbd41e0e3b67d2a2a28ab2428c12401c93da9f0c6f34a9144a5a4760aaa3a927802bd235cbdd13e1fdcc1a77876d60d47c4b678375ac5c12e904f8e5608feefc87a3b0272323b50d81e698209041047041a51c9c53a695e69a496676795d8b3331c9627924d59d32c24d42e3ca8d9540196663d07f5a52928abb1a4dbb2174ad4aeb4e9f7db4b2aa37cb2468e40917bab7a83d2b4fc6d7779aa6b0da95fd959d9c972a1bcbb48f620fc3d7d6b7ac3c3967691c52dc866e4b067fe21ea0569dfdcda98417850228fbcc32c7d87e75c32c6479d72a37f60d2d59e56c9e948b1fad4f310d33945da0b1c2fa73d29a012703ad7759185c403141e2ba0822d11fc38ed29b95d455c60a212b8e7393d3fbb8fa1ac8be8228255105c2ce84677018c7b1a98cf99dac0d58aa4034c2306a4a42335761124a86291918a92a7076b023f314d085c8500927a015a9ae68975a4dc324a8ed0e372c9b48054f427d2b53c26b60b0bc8edbae4e0307c0da3fd9f5ac6a5651873ad4b8c2f2b3394b9b39adce258d933d3231510535e984d8ef6577de98f98050723f1acab8b2d2ee670c96ad1e0fdd53f29c7638f5ae78e2d3f891a3a76d99c9d818e3bb81a7cf942452f8193b73cd7abe9b3e97e28bab8d3279249ec9361531fcb9723ae5b0060fca3fa8ae312dad40c3c0a632c0900608fa56ac5158584f25d691023b98423433a248a4e4138dfca9c0ea3d6b3ab52156cd5d3e83a7745df11f872d341d02686188dc3fda22959b39729b4e50119c60e791d7f411ea9e26786d755bdf0def4b6bfb486ceecca80146da7705c6067a723b9351cbaaeb176d26d58e162b81117c83ee0fafb6314b65605348166e8918910b4aa0ef0ef9f958fe19e9ede99a51a9eeaf68eeee0d6bee9da5f69da2a4f7674d974616f1585a3583dcdb8604aa8dea432f52d9241e5b7579d7c42f0a49a74edaa69cab36973ed667862d890c8c32c817270b9ce0f4c545768da66937204d31613010fef7909d30477c8aeabc21e2196e34cfec79eea092c0c6cae5d3210c89820b63240c0247232bc7ad69072a7795ee85269d95b53c950d7df5f03fc6f078cfc1b0317dda858a24173c6371dbc301ee07e60d7c37e25d02ff00c39ab4b63a946a244381246dba39060105587046083f8d7d27fb1eceee35c59e762c6183cb88001422b38cf0739cfb574d4b349911d19f4ae2bc8bf682bc44d1a0b517525accf8d8fbb0aec5b010e390490003d0679af57bcba86ced65b8b9916286252eeee70000324fe55f1e7c62f8db65e2eb596c748d06dd4e0c4350bb55924099e7cb523e5cfa9e476c1acd45cb445b958f0dba69249e46998b48589624e493df35015c548735139e6ba199214119a957915104cd755a169915be9c750bc8b76e60b0a48386ff00687b0a894d415d85ae73ed148a81d91c29e848e2995d65d4e2e632b315f200fb9dab1751d3d2178de09018a421704f2a7fad453c4467a3d01c6c4fe139160d5c5c6e513c31bc902b7f14a07cbf91e7f0aca6324f392db9e691b9cf25989fe79ad4b3d18cd1ee99fca1c81c72dcf5c76ad6b6d12d8a2a6f26453b967e9b31ebd88a996261193d46a0da1fff0008dc0c614deb1b0b70642dddb3dbf51f9568d8c1059c02258621220c175032ddc1f5e94c123b1c860eeb1fcd81c71fcbbd24b2223a3e0658e1813c138e09af3a75273d1b3a528c75259af0eff9dd9cf4eb9c54fe46e8927999411cac78c9fc7b67ebdaa45bb4554952351327cd9ea38f6e9ef5496e2697cccf0ac493c64f3ffebacb96c6bce88e5b0d3ee9922f2a30cad9564c29273dce39ac9f12693235ec2b6b1abbc9b892806323b1c715af8d80ece4e339ab10391012092dc609fcff00cfe1574eb4e0f9afb133845ab3464e8161f67b4905ccaebe61e5170411ef59da8e8127db02698ad2c6c33862063f13d4575177bbecb1b2282589c90b8e9d79f5e9545aea64545182aa3038e47e35ac3135149cbb984a115a1c5dcc12db4ad14e851c7506988a5d82af527032715da259dadf4f9bb88193030c18ff002ad38fc31a63db882e7cbf3046489233824ff0fb67d78ed5d6b1d0ea895464f54718faf5f4ba59b09662d164618fde0b8fbbf4ad6d29ae24d3a291e3b658f6796a5171237bf4e95c82386ebd6b7f41d5a783fd196059d083b474d9ea73fe35a56a5cd0b4110a4d3d4e86cb4b9ae2212c922c51312506c2ef2019dccaa3960bdf91d462993c2fa7ba99a02f14c82589cab20913b3ae79c76acad63c5171088a1d36e8ac488c10a8dad1b31f98a91d3381cf5c7a66b4f43f89178d6dfd99e25b68354d25db795f2d22955fb30902e7b739ce466b9d619dae5731604705e5948d0c22396300ba97383f9fafa5644312c459a30304e4e4f2726b5356d36080c1716f74cd613a992da4fbc76ff7580e8ca4e0f3efdc5664619620e5485e0838e0fd0d73cbddd07cc5f866dcacf962a3b6727e94d9355fb3c2eee404c7dde6a84ac8bf32b127392bd0d41a9dbb5ddaaf96c37a7214ff0017ff005eaa118b92bec5b9b48ada85edadfd82feea44bd12312c0820a9c6d5ebce307e95afa3ea31db5afd8efac85a4127cd1ca410246dbd093eb9ce7fa5725246e9218dd4ab83820d75a08bdd1bc8cfcac8a5410095c77fd0d76d6e58a49ec6517777ea61788ef7ed1769045753dc595aaf956de77544ea471ee4f35f437ec75af892e754d1ae2e9774717996f0328c91bb2db4f5ea7247d0f6af9e35fd3e2b35b66b77deaf18ddece3afe159b617d75a75d2dc58dc4d6d3ae40922728c01183c8f6ad34947412d1dcf70fda97c757ba8f8eae741b1bdb98f4cb08d619a0076a4929e589c751ca8e7d0d787c12b4722c8bf7948238ef4fd5350bad5b52b8bebf99a6bbb890cb2c8dd5989c9355c9ed56b4427a9d06a9acd8dd69896d6da72c3364169770e7b9e319ce4f5cf4e31deb0194939a00c0cd5c86d1a4b296e432ed8c80c3bf349251560bb64ba3e9575a93badac4ceb18dd230e8a3eb5afabdcec31c2bc32a886319e171c66a868fa84f6d6d776b6e9b8dc05279c602e49a2f9fcc92dd631ba6620827a8f418ac2aa729a4f6045b8c08d511cf9847527bd36ced638dbcc56de5b903d3ffaf52fd959406b9dfbc8076b71820f6c5583090a70bc8e82b8a53b5d27b8730df39c9cb703a5588a60cbb38e8738eac79c5442d1d955ce79cf6cd16d13e4e14100e38acb40e62ec73a2a900053ebebf5aaf70e1b27b8e453dd672470ff004a468c8cfca727b7a5256357252422cc48e0f18c6054c93b21c8c9f6aa6b1b22f5e3a6714e8cc8ff00220cb673f4aa6ae67ccfa170cb962081cf5c54f0384411b61d339eb826ab35b3aa024e1870727bd3763edf94838a8e57d0ae76b7372d2392e21592281a58d0e5948cedea064f5c7154eea1592e8b45f2ab0c9c8c0e9ce6b0753d6a4b42b05b101d7efe7b7b7d6b3e5d6afaf62fb2657f7a40ca8c1fa67d2ba61859c95c1cd33b32f046823b77594904a903391d38fc6a9ea974d630b335c2c57182c818f5f4c62b99d4de5d1adededede5c4d226e95c751c9c28f403f99ac3b8b896794bcb233b7a935a430a9bbb7a0d54696843bd14f1b8fe94f6ba94a9456d887aaaf43f5aaf45765c561d9f5a78351d2ad09833a7f0edd41730cb617b2a44ac3cc8a57c90ae303071d88efdbad6f5a5bc2cc9048fb655970417cab839191e8471eb5c0db92258f1c1dc39af5fd3b4092fb46d3e4b78d47cfbb70525ce49c8181db8e2b871ad42cfb8e9d373ba450bcf0fc6b197e412bc0c9233fceb06fe17b37456182c0e3078eb5ea2d6973268f6f34f80d36586e3f311bb00fd08c1ae1f58b4f30946ce5723835e751aaef690ea53e4d51813c71dddaed6da24eaa71df3df8a985c088363214671838c5034e742c5582287c12c49e31c63eb515d3c7676e59c16638efd7f0aeebded15a98f395e7bb82e116266de1b80a17a67fc2b9b9d0ab1e0823b1ab7757a9e779b0868e43c921bf95569ae4cd9918e5cf526bbe94395587abd480362827bd3072727ad498f96ad142a3e5b06ba5d36f2cddd22923648443b1940ff58c7d71cd72a7afbd75be13d135992582fac6032db970ad8239f6e7af4359d594547de62716f62fe97a12db1134db8bbe4c6390421f5f7ab7169b631c8f298c6fdd956273cfaf26997badda4376609cbc8c8f82aa080a3b9fc39ab161783cf78644dcee4b447390ca070ca4f07dc579d375a4b9d8ac2490b16395ca9cfcdd7e952c3665fcb4452ce381c739aababdfcba7436d1dac2d2b48fb89d840c0eaa3f1cfd2ac786b5b693512b7303c6e1cb0046001d874e6a3d8d474fda25a02e54d731b96fe1ebb745c8249ec47e3f4fc2af69fe139e3b305c7cdd5beb5d7fc39d5edf57f14dee8b7d22401504967134601981eb863d082738fad7a63e93651e9d728df3057c36405c803ef03e8723afa1ae1a8eac15e5a1dd4e14a5b23c2a3d1521db0cea9e713c30e95ce6ada6cff6d1696d1486524601c1c739e3d7f0af5fd46e34e8ee1d618de620150aabb8e4e00c1f4cfe7468ba638ba992ff0049bab98e4f95484da809e548ef9fc41a985597c4554a507eea3c7eefc2fa85adc06bab775126e61b57ee91f53dfdff000ac910345323b7c80b10aa324b1fa7602be929f413a85a4769a8db4ad0a9254efcb0c8c673d73f5cd5397c11a41b71e78680a70b24e141f7ff003c557d6dc7e2427854fe13c12f6c2e6dedd67911846c01dc7dfa551990c681892371c119af46f11d8da25d9b49efe3923b621888db25b39c003d47bd79dea1a95a5acf2cac366e0c23c7273dbffd75d14272a9b238eb4395d9181ac5adbc41f62b09b1b8f3ee2b2eca6f22ea2949e11831fc2a6925fb5acf34b2aa0e8bbb926b2e47cf0bf77f9d7b904e30b4884ae4d7d78f7774f2b13cf0a3d07a544aebc673515142d0bb01a29460d1b7d28b0c4a5a4a5a0055621811dabe88f83dad43ace93259417063d4edd4cf1c18fe2c61997b1190a707a64d7cec3ad69e83a89d33518e7fdef97f764589f6332fb1ec7201fc2b1c45055e36ea5d3a9ece573e978f458e4bf37705bb8821b736ef14d114da7192571c1c9ebfe71c078a123875011a0da18f5c71ef5d07c38f1cbea97b7565757a03cc4be507c81fb155278073d3b72315e69f1175a953c4924368d88e31d0a82771ea33dc578f430951d5707d0e8c4ce12a6b97a972e254f2c9326c8872c7a7f9ff00ebd70daedf7daaf9da372d18f9578c71572c2e2e2ed6e209ccb223af18c9dad9e0d65eab66f637b2c2e55b6b10194e41fc6bd8a386f64aef73cf8db9ac543ef452669cbc9ad8d472a8ea69cedc74a8d9a933557b0ac2819af69f86fa6f89f56f0cfd9b4ad32ce35642ab7172e50321fe2c63939e878e95ca7c1bf0149e3ef13fd89de4874eb74f3aee74032abd154678dcc7819f73dabecdf0e78774fd061b4d3ec630a218963c9624e1470327ad79798d7508a8257674e1e176e4d9f3ab7ecefaac5a6cd7835649a5489d9a18a03b890a4851cf24f4af1e44d534ed5ad6d56caee2bb8d862d591b7b13fec919e7e95f7e992e50f96b11724939240c01d481ff00d7a88e93a7dc6a967a8deda594b776d9f22e1e30658db1d15fae305b3f5ae7c3e653578d6572aa61d6f13e23f0f78c468772566d322b8c4bbc8989ca64fcc39c9fea0d7d11e07f0945e24f0a596b970b6f6571731998429186006e3b771ebd31f81af50d6fc3fa2ea91497375a569cf748095967b58dce7b6491cf6e3bd733f0cfc593eb505c58ea10c76fac69d235bde42830885781b571c291c8ed8e2a7135215a3cf4e3eba8528b8bb3392d3fc113db78decb59b4befb37d8e3689ace48cb2e181ced20f439079e3815daea4f70d6c21ba06547dcac50e4e00ee318cfe154bc5b61e29d3bc5716a5a1daff6b6937a82396cda610fd91c0fbeac78dadc120827238ae224f8d7a469170fa66b5a7eaf657c9b5268a684651b1c93f3648c1cf4aca585a955249dec5c6a4217d2c6958c96d61ae456f736f2a9772229a4dad9c1ceccfbe3f4aee24d74ada8fb346884019f976807d00fd2b95d73fb0f56d2a0943ace67412096363b707a60671eff00fd7ae6a69afacece622f16f2dd72ca67255faff7875fc7df9ac54afee6cd0dbe5f79ad0dcf1778d235b4220927b4bc419578f0c1883c820f1cfbd727abfc401ab58436c36acec9b2425303703d55403c938f6ae4afa69eefcc89ede18e267da642a49461c9da7af20f43db151dc5b889618f7aca910560768e071f9d747d5e2edcceece59e29ef02a78dadcae8bf6b88cef751312cf1be38e859b239f6ef5e7fa808efc5bcab2a232441666627683d8fd7d6ba9f14ebad145750c53279b221491436783c1c8e99e83d6bcea59770da0f1dfdebd8c2c3961a9cf773772dea4f6e96d1416ae64e4b3be3009f6ef59b4e3ca7d2995bb2d2b0e3c1c5000f5a4a0503173ed46483c5253860f068108496393d68a28c5030a7034da70a684cbda56a571a65d0b8b460af8c723a8ad9935bb0d46fa29f50b42930182e8dc1fa8ef5cd0a50b938149d35277ea4bd558dad66d901fb743721e395b08173daa8996e2e2298f91e70382cec092bf8d36d6695710c6a24dc78465ddcfb0af43b2921b1b0822955436ce6241dcf5cfe3eb5156afb18aea46c798bc7f26e0bb4fa5317ad77fa8c516a36ede74504410e1446bb49cd72fa9e8ef6f0b5c4219a0560ac4ff0939c7f23f952a75a33f26529a7a18edc1a54c67e6e94bec7a505456b62cf70fd997c436de1fb9d7a5bcb8d914c90a08b04ee2198eefc0647fc0abe8fd3fc77a6de8062440c780e4e2be08d3efa6b0ba59eddb0ca7a763ec6bb2b4f88535b42a8b0312393f3e066bc9c6e06a55a8ea537b9ac2b3868d5d1f6bc1af5a48f084ba8ca8cb36c6049ff00668bbd73426612ace8278c98d78c11ebf8735f1d787fe20dd4b73e5bc656466fdded3900fa9cf7ad9b8f11decf932ccc08cfcc1793f8d70cf055e9ae5959dcb78a8a7b58fabae75db48ac04a24017195ddd5f8ec0f735e437daa47a578edbc55a4ccf1e9d322c7ab42e7850b909281d38c63db3f5af34d37c433cecb15c4b230196e5b245779a398746b337b7d788fa6842649382093d9b3c719e8783584154c3cbded6fd0de8ce388764ad6ea58f1dfed1565696be5784ac9af65278b9b94290af1d875620fd057cbdac6a977ac6a973a86a3334f7770e649246ee4ff0021ed5d7fc5ff001b0f176b56f1d9b1fecbd3e3f2adc6c09bc9fbcf80063381dba015c1f0df5afa4c35350826959b38eabbc9eb73d4be0c6b0a2eee34bbc98ac5328688b1fba572481e99ac4f1f78c2f757d467b48dda1b18646408af9df83d49efed5c8d8dd4d632a5c5b48d1cc87e565ea2997571f69b8694a8567e4e3b9ee7f1a161e0aababd589d46e2a1d0eefc21e211f614d32f9df6a3995646236a8db83bbbf4a5f1d011c51dd595cbbdbb47b70dd0eeea57f2c5729a0aacd73b032ee236956e8c0f079ec6ad5f5a5ec9702c373c890ffab52780a79cd57b18fb4e78bb1cef7d4cbb1845cc92abe73b0eced96ed5464429232302194e0835bb776cfa7adbbc5be49b25b2bc0c8c7e3c5665fee96e5e7318457390074adb492ba2e2caaa71d7a536a4078e4520018f4c52b16340a3760629c41069ad40060d291c66a49b03a77a8bb50d5816a14a0719a542a3a8cd38e0fdd18a2c1723c1a70a5a514ec2b874a031072090690d1401a1a05dc569ac5b4d725c46adc95c120e383cf5c1ed5d7dc23453946196f5f5f71ec7a8af3ec126bd23e1f6a307886e2dbc3d7f6abf6978cc76d76a4e46dcb61867d33cfb0c835cb898b6b9bb07b3e7765b9588930b88f3bb38f7ad0d3ad1ee77acbc64edd98fbdf855cbcb4363a94b6cfb6531b9438185071c11efed57d22486318014e7820e064f5cd7933aafa0a14d735a4737e26f0be9f6da235e92b0c8177029c027b2907fa579c66bb3f1fde1905adb072026e6283a7a027df835c657af86e7f669cddd9a4b96feeec39052375a54a4635d04f526b3b992dae12588e194e457a82cd05e6996ce136ee8c1041efc93f875f7af29419615eed16836779a669f3e96ecd6d2401e25098c0000393dce4303ee0d716366a314df70f64ea3d3a187691c11cc14012c720dae1f80c3d3db278accf89faa492da5ada5a964b22c59947019801f981daba9fec6360f992374603cc19f4c1c633c579e7887518f54be834f86375449b6ee192dcf04015cd845ed2aa96f61da54e3cbdce4c0c1058714edb8c11d2b6bc5f6b6da7ea49616809f2102bb37566ea7358dd80f4af5a2d495d09a6b718fda9a3ad2b0e685eff4a0058a468a40e84860739adf1aca5c9864924fb3dca0dacdb370615ce9a500922814a29ee74125ef9af23192294edd80af1f88aa90cb240db728ca38381906b43c2de14d4359bc87cab7956d5d807b82b84519e4e4f5af5cd3fc1fa6e945c4118f31a30aef23121bf0ae6af8ea387f765bf637a381ab595e0b43caa3b7d3ae34d33c823478d46fd99cae4e071deb12e62489f03054938901073f957a9de7819211aa4af234cb72859142fdc39c8391db38af2abeb29ac6e1a1b8468e453820d6987af4eadfd9bb984a8ce93b4caf2a6d6ec78ce4542724f4a9d14eece3701d47b5226dddf39207b56ed5c572194e5cd36948c1a2a0a4029c31da9b45301e0d385301ed4e0698828a0d0298086bbaf82bfbbf1dc1700e0c104ae0633bb2bb71ff008f75ae16bbef83b6eb278899c921bcb6008edc66b9f152e5a527e46b47e34753ac069757ba91a404c9293b73d724f5fa715c978ab52b9b48d625b82b21ec9c605741e2cbb8744ba904b26e9d836c8f1939ec4fa738af2cd46f66bdb969677dee7a9af3f0541c9aa92d88a89a9b4472bbcce59d8b31ea58e6a2231499a7039af5b716c2a8e29a4734fed48781c53b08693818af7cf81dae5a5d68474db9da2eb4f2f246adc078dce783ea1b3f98af02abda4eab79a4ced358ccf0c8ca50b2f5c1ae5c5e1feb149d337a157d94d4cf67f885af1b481e7326d95b844c86f9bb578b25e4e9a92dda36275904a1b1fc59ce714ba8ea379a84c25beb99277ec5db38aa8b92d9a30986587872eec55aafb59b913ea3752dedf4d7370dba6958b31c639355c714f6e39ef51f535d36b6c65b8fea280b926851cd29a621bb38a4538233c8a520d34714867d07e16be8aefc33a5dcc6bb5562113301c02bc107d3a56a960d3476ef246c491f2161b88cfa6726be7db5f10ea96960b676b76f0c018b6d4e324fafad67add4eb3097cc6f301ddbb3ce7d735e2cf28e79ca4e56b9ee52ce654e0a1c97b1f5a789a3b5b6d26386ca557555cbb9e08271c0fcebc0be25c51c6d6cfbb74e4e0b7723aff5ab9a07c416362f6fab87965049571ce7d88ae37c4faabeada934ce0280301474a30182ab87abef6cbf138f1988a75d26b7287606a323e614e89b2307ad5a5815ad249490ac8475fe206bddf33ccd8a4ef9e000299451517b96b40a29c16976e45160b8c039a916900c53a9a1311a9b9a5634c3431a1e0d7a87c1eb07324f7c40310cc5b4f193807afa1e9d6bcb075aedfc27af5c45a0dd6931dcf92afbdd72c1304ae09049f6031d4e6b0c445ce9b8a2e9c9424a4cc5f13df4ba8eb57f773471c72cb2b1291905579e808e0fd7bd60f43cd5e2caa594e09e9d7a540c467b56fca924974324db776419a51d6a529bf90471f8546719c52b58ab8f1d2908c1a453520c1155b888f19c9ef4da95b1ebc53720d2b05c60e4d4aa540c544dd78a72631cd086c73608e29a8a58d21c75cd08483c5004ac850f34dcd4a5cc832e496f535031c1a6f4250eeb484500d2e690c611460d293429a062a128eac0f2296e1da4959dce598e49f5a319a691eb45844968a8d3a79a488f3f31039c55dd4278e59b16f1ecb74e2353d71ea7dcd518880df4a25933c29a6acb513d591ed34a01a7800504d2b0ee1da909a42691ba50004d37268a290c3345145030a721c5340cd491a6e6000a10986327d69429af41d6bc0b37863c01a56bfab5a4c6e755919208d9b6a451edcabb01c966192070063273d2bcfe53f371d6aac48631d78a6be3691de985893cd252b8ec2f028dc6928a4302734539971d29a462800a28032714b8e714ac312807078aded0bc23adebb617d7ba569f2cf6964864b89b215235032492c40e00cd65de58dcd85d496d7b6f2dbdc4670f1ca85594fb834ec2b91237f7a9245e7229769adef0ef83fc43e25dff00d87a45ddeaa0cb3c69f28e71f78f155d09ea73b923ad1c9af4df087c18f1678912f98597f67fd959548be578f7924e76f0738c73f8564df7c31f155af889347fec9b97b892431c720899637209190ec00c7ca793c11ce7041a561dce1f068aea23f0378925f100d11347bbfed4259440531b8a824e09e0f03ae79ad3b9f851e3287519ac9742bb9e689d636685772ee2bbb83dfaf27a0345877386069fd6b4759d0753d16ea4b6d52c6e2da58dcc6448840dc3b03d0f51d3d6b3f691da9937237539a6e2a6c9a438a4d0ee34f5a29f28e6a3a6c10734638a29c149ce074a431a05295ae93c11e0dd5bc65ac0d37448564b831b4a4bb6d50abd793f515abe22f865e2cf0fced1de68b772aaf064b7432a838ce32b9edcfd39a7625b3852b4043e95d2783ec2d2f7c5fa4586ac937d926bb8e29d23c2b952c01032460f6afac75dfd9ebc1ba8c20582dc6992e492d0b961db8c3138e9fad2765b8d36cf8b8464d7a97c2cf84dabf8cec1b55b1be86ce0866088e49f33702092076c0c907b918ec71b1ae7c01f1269de28d3f4d827b49ec6fa731457664098c2b39054f25b62336173c03e95ef1f07be1dea7f0fae757b192eed6ef47b9db2c1288b64c1c12087fef0da78e78f419343925b0926f7386fdae035a783fc2d6485da149d86ee80ed8828cfb9c9fa735f2abf535f5e7ed7a211e06d237b66717ea139ede5beeffd97f3af924a834e3aa07a32b114da999314eb7b69ae66586da292595b384452c4e064f0293434c86289e691638919e46380aa324fe15d6e87f0dbc5dad4b6e963e1fd476ce40596581a38c03cee2cc00c7bd7d2df01be10697a6f852c758d7ed1a5d62f156e76b964302ee0c8bc608e00241ebb88391c57b7dadbc56d6d15b5ac51c3044a1238e340aa8a0600007000e381f4a9e648ab1f0f587c09f1f5cea1f666d212000f334b71184c7ae4124fe02ba193f66af17fd8e0963bad31a67277c7e6901076e71cfe55f619538da59ff038a746a2340899000fad2e70b1f1d781ff00676f10ead75707c4320d22d607d8bf289249baf2a32303dcf5cf4af5bd0ff672f07e9b7c25bd6bdd49000424f2855cfd14027d7ad7b4a29524ee6249e84f03e9488a1176839c127f339a4e4c122be99a75969702c3a75a436d081811c4815471e82b0fc51e03f0bf89a5336bba3db5ccc13679a548703d88e6ba614c9dd96362a99c293d7149319f3df8a7f66fb1bfd7e0b9f0fea4b63a5c8ea66b6742c63400676364e49c67e6f5fc2bdcfc31a069de19d0edb4ad1adc41676e36a28e4f2492493c9249249ad088158d4118240c83daa5a6e4d82490a02807fa50bc7e3476a4a91885177eedabbba6714e239ed494b4015ee6cedae828b9822940391bd41c578c78aff675f0dead2de5ce957375a75d4ee5d5410d1213db6e338fc6bdbbbd14d36b613499f0e7c43f82be27f079927487fb4f4d45de6e6d97ee8c64ee4ea31ebc8af2d22bf49f516b754985cb449198cf98d2b00aa9c924e7a01cf3d2bf3dfc673d85ef8b357b9d1a15874e96ea468117a04dc718f407ae3b66b58b6c86ac6332e6a33131385e49ed5f4278ebf674d4b4eb989bc292ddeab6d20398cac2af09007de679101079c60718e7b13adf0b3e00ded97882def7c651a35b245e7451412826395594812107af5fbbb87ca724719bd1ab93669d8e27e0e7c0fbef174b35df88c5de97a6c2c9843115927c827e5247006067bf22beaed1bc1fe1bd2ac16df4cd174f821d8108102ee603a6e6c65bf1279cd6f93d430ebfa5290074ac1cae6a915ecac6cec2354b4b682dd40da0451aa0c7a600a96ee086eeda5b6b98a39a0990a49148a19645230411d0839ef52633452b81cadcfc3cf08dc6e32787f4f0ccb1a868e2f2ca08f1b3615c14c6d1f771d2ba8550a001d29d9cd078c628bb616178c8cd31d4ee20103f95314c9e7c818031f0579fcf8f623f5a97f5a0670df16be1ce9ff1174786daea692d6f2d8b3dadc2f3b19800432f707033df8e0d7c5fe37f05eb5e0dd5a7b2d66d24458df6a5caa1f2a51d8ab639c8edd477afd091cd60f8dbc29a678cb446d275a8cc96eee2405490518670411d0f26aa33b6e44a373f3bcd7d09fb317c37d49bc470f8af57b492dac2da36369bdb6b4b230db9db8e57696eb8e71d6bbdf0d7ecebe1bd1b5482f6f6eeef51681c3ac329558c90723700391d38cd7b600000aa30076f4aa94eeb414616dc318ce09e78a503d2814a062b2340a4a3e941a003f9d1c51ce68fad002f6e290d039a0d00140340e7ad18fca800038a281d28a0031474a33477a0028a28240193c0a00f16fda58de5d78512d749178d7723bc4f1c1bc2c89852c8c3a3123900f3d71debe3f9e192de79219d1a39a3628e8c3054838208afd0f6d21bfb65ef6de4458e67479d181632151b46d3fc3800608f7ac2f1cfc32f0d78b74d9adeeb4fb7b6ba650a977044ab2478e9838e7fc335aa9a4ac66e373b61ce7239e942e33c76a4de3269370193eb591a126320d339ce3a502400f7a378273400eed8a31eb4ddc280e01e050039b819a17e6c126982419c6324d2a8e73e94c7614c6acea4e7238fa8f4a7bf0d8279a4eb43b80d9348420ce79a38dc09ebe94d6900e7f1a6452895dc0040519ce38a007c8e55b27383da98158bb1e76f6e7ad47136e7766e57240fa0a9c3a8229ec20030783934ea6f9800cf6e99a4de290c9292901cd2e450160ce68ef499140a760b0a7fd9a09cd20619a0b01d68b0ec2819ebd28cf38148ad9a70c520b01c7e3498a3f9d2d1615829b9a71eb498a0000cd57d42332d94a8aee848e193af1cf1f9559a6b8c2e48e942022b4431dac6ac72428fc3daa6eb8aa567361e443b880e4658e707a800fd31c55bf300fc69b120c71cd35978acc8354796f27850094a36c08bd43038604f4e39eb57ac2f21beb613db3878892323daaac03f6d38631d29c718e6a3738048e942421739ce281c1e6913934d72db8055079e72718a2c31c3ad4e838a6a2738f4a94e225cb1c01de958ab91e48e94de4d3c8e69ad9c516132aea0fe540ec49c2a963819e00c9e3f0a2d95bc8576c06750703a0ef4bb1d998b03b4fa9efdc7d2a65e80516122351c8f7a738c73438c74a553b873d68b0c0282bf5a8f904015274048a68ce68b012af5ea29d4d0b93c53c0a2c3b8dc5380e28c734f51cd21dc6eda0a715305a4931b69dc0836e38a314a69b482e28a29075a5f7ed4c04279c53b14c1c9a97da86891b4cb9845c5b490b1215d4a920e0e0d4ddba5369580c39e08ed98ce4bb4a8e4c5167ef923038eb9ea73e95a4ae19d9320b2f5c0aa5aac71c37514c06c6c1662bc64f0013ebc0c73db3505948eb1c97304525c87505020c000edc753cf001cfd6aad7449ffd9", "properties": {} } ] diff --git a/test/expected/l.2.0.0.png b/test/expected/l.2.0.0.png index bfbc6b3a5eb8c1b20b347fe8d2d87169f1f7f6a7..87e1414573374e8afc6cce987a03b853119366f6 100644 GIT binary patch literal 4796 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 literal 11339 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 AivR!s diff --git a/test/expected/l.2.3.3.png b/test/expected/l.2.3.3.png index e7bd907113943467e490f5a102139accb1576928..1f2a55c7632ab7f42c2694bfe672078bd181cdde 100644 GIT binary patch literal 3769 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 PJpg#V0h}A`aN&OdyvmE> literal 9729 zcmd^lhc{f^_xG7GM(-tB7&W3!^dN``f=5XNL3B~0x2TioM6@7?6r%Uuf>A?+5WTk$ zqj!eEJKx{G@$Pl+K4;yv?zv~}zCY(i>uRe}kg|{h04N@*t2_n(f}cVFF# lyUr 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 z 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 baH2fXDnlh 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 P`H8?Xl-Y_7xz79_T2S6D literal 6931 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 From 20948fd1f7fbaa1065f740f664d7e92f9d2e750a Mon Sep 17 00:00:00 2001 From: dnomadb Date: Wed, 20 Apr 2016 11:27:59 -0700 Subject: [PATCH 08/10] removing extraneous fixture --- test/expected/l.1.0.1.png | Bin 23185 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/expected/l.1.0.1.png diff --git a/test/expected/l.1.0.1.png b/test/expected/l.1.0.1.png deleted file mode 100644 index 394d2d883aa3f38a8ed58f4cf7fa19c691aa27aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23185 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 Date: Wed, 20 Apr 2016 11:59:31 -0700 Subject: [PATCH 09/10] fixing incorrect reference to i instead of l --- test/expected/l.1.1.1.png | Bin 25070 -> 11696 bytes test/testsource.js | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/expected/l.1.1.1.png b/test/expected/l.1.1.1.png index 58758f3082bba4dd05d9555edfddf9312b136b24..1f3f1173c47cafe5238738f992bb370da5ba8298 100644 GIT binary patch literal 11696 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 literal 25070 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 VSQv=hH2{ah#K1!Tt*%S>{{V+*V2=O* diff --git a/test/testsource.js b/test/testsource.js index 13384f0..119d81f 100644 --- a/test/testsource.js +++ b/test/testsource.js @@ -126,9 +126,9 @@ Testsource.tiles = { memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'i', basename))); return memo; }, {}), - l: fs.readdirSync(path.resolve(path.join(__dirname, 'fixtures','i'))).reduce(function(memo, basename) { + l: fs.readdirSync(path.resolve(path.join(__dirname, 'fixtures','l'))).reduce(function(memo, basename) { var key = basename.split('.').slice(0,3).join('.'); - memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'i', basename))); + memo[key] = fs.readFileSync(path.resolve(path.join(__dirname, 'fixtures', 'l', basename))); return memo; }, {}), gz: fs.readdirSync(path.resolve(path.join(__dirname, 'fixtures','gz'))).reduce(function(memo, basename) { From e7eca4cee79bd4dc48945577c5a3a131e3f19688 Mon Sep 17 00:00:00 2001 From: dnomadb Date: Wed, 20 Apr 2016 14:49:12 -0700 Subject: [PATCH 10/10] cleaning up namespaces --- backend.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend.js b/backend.js index 6c93aad..712b4be 100644 --- a/backend.js +++ b/backend.js @@ -117,16 +117,16 @@ Backend.prototype.getTile = function(z, x, y, callback) { for (var lb = 1; lb <= Math.min(backend._lookback, z); lb++) { q.defer(loadAsync, bz - lb, Math.floor(x / Math.pow(2, lb)), Math.floor(y / Math.pow(2, lb))); } - return q.awaitAll(function(err, data) { + return q.awaitAll(function(err, lookbackTiles) { if (err) return callback(err); - data = data.filter(function(d, i) { - return d === null || i === data.length - 1; + lookbackTiles = lookbackTiles.filter(function(t, i) { + return t === null || i === lookbackTiles.length - 1; }); headers['x-vector-backend-object'] = 'fillzoom'; - bz = data[0].z; - bx = data[0].x; - by = data[0].y; - sourceGet(data[0].err, data[0].body, data[0].head); + bz = lookbackTiles[0].z; + bx = lookbackTiles[0].x; + by = lookbackTiles[0].y; + sourceGet(lookbackTiles[0].err, lookbackTiles[0].body, lookbackTiles[0].head); }); } if (err && err.message !== 'Tile does not exist') return callback(err);