diff --git a/.gitignore b/.gitignore index 864883743..7f9805f39 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ node_modules dist/* +e2e/dms/*/ +!e2e/dms/temp/ npm-debug.log .eslintcache datasources.*.json diff --git a/back/methods/dms/download.js b/back/methods/dms/downloadFile.js similarity index 52% rename from back/methods/dms/download.js rename to back/methods/dms/downloadFile.js index 9211cc8f8..72090f33b 100644 --- a/back/methods/dms/download.js +++ b/back/methods/dms/downloadFile.js @@ -1,14 +1,13 @@ const UserError = require('vn-loopback/util/user-error'); -const fs = require('fs-extra'); module.exports = Self => { - Self.remoteMethodCtx('download', { + Self.remoteMethodCtx('downloadFile', { description: 'Download a document', accessType: 'READ', accepts: [ { arg: 'id', - type: 'String', + type: 'Number', description: 'The document id', http: {source: 'path'} } @@ -29,48 +28,38 @@ module.exports = Self => { } ], http: { - path: `/:id/download`, + path: `/:id/downloadFile`, verb: 'GET' } }); - Self.download = async function(ctx, id) { - const userId = ctx.req.accessToken.userId; + Self.downloadFile = async function(ctx, id) { const env = process.env.NODE_ENV; - const document = await Self.findById(id, { - include: { - relation: 'dmsType', - scope: { - fields: ['path', 'readRoleFk'], - include: { - relation: 'readRole' - } - } - } - }); - const readRole = document.dmsType().readRole().name; - const hasRequiredRole = await Self.app.models.Account.hasRole(userId, readRole); + const storageConnector = Self.app.dataSources.storage.connector; + const models = Self.app.models; + const dms = await Self.findById(id); - if (!hasRequiredRole) + const hasReadRole = await models.DmsType.hasReadRole(ctx, dms.dmsTypeFk); + if (!hasReadRole) throw new UserError(`You don't have enough privileges`); if (env && env != 'development') { - const path = `/${document.companyFk}/${document.dmsType().path}/${document.file}`; + const pathHash = storageConnector.getPathHash(dms.id); file = { - path: `/var/lib/salix/dms/${path}`, contentType: 'application/octet-stream', - name: document.file + container: pathHash, + name: dms.file }; } else { file = { - path: `${process.cwd()}/README.md`, contentType: 'text/plain', - name: `README.md` + container: 'temp', + name: `file.txt` }; } - await fs.access(file.path); - let stream = fs.createReadStream(file.path); + const stream = await models.Container.downloadStream(file.container, file.name); + return [stream, file.contentType, `filename="${file.name}"`]; }; }; diff --git a/back/methods/dms/removeFile.js b/back/methods/dms/removeFile.js new file mode 100644 index 000000000..350bea6bc --- /dev/null +++ b/back/methods/dms/removeFile.js @@ -0,0 +1,34 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('removeFile', { + description: 'Makes a logical delete moving a file to a trash folder', + accessType: 'WRITE', + accepts: [{ + arg: 'id', + type: 'Number', + description: 'The document id', + http: {source: 'path'} + }], + returns: { + type: 'Object', + root: true + }, + http: { + path: `/:id/removeFile`, + verb: 'POST' + } + }); + + Self.removeFile = async(ctx, id) => { + const models = Self.app.models; + const trashDmsType = await models.DmsType.findOne({where: {code: 'trash'}}); + const dms = await models.Dms.findById(id); + + const hasWriteRole = await models.DmsType.hasWriteRole(ctx, dms.dmsTypeFk); + if (!hasWriteRole) + throw new UserError(`You don't have enough privileges`); + + return dms.updateAttribute('dmsTypeFk', trashDmsType.id); + }; +}; diff --git a/back/methods/dms/specs/download.spec.js b/back/methods/dms/specs/downloadFile.spec.js similarity index 64% rename from back/methods/dms/specs/download.spec.js rename to back/methods/dms/specs/downloadFile.spec.js index 085662662..ae8a4fe53 100644 --- a/back/methods/dms/specs/download.spec.js +++ b/back/methods/dms/specs/downloadFile.spec.js @@ -1,15 +1,11 @@ const app = require('vn-loopback/server/server'); -/** - * Pendiente de fixtures dms, dmsType, ticketDms - * CAU: 10728 - */ -xdescribe('dms download()', () => { +describe('dms downloadFile()', () => { let dmsId = 1; it('should return a response for an employee with text content-type', async() => { - let workerFk = 107; - let ctx = {req: {accessToken: {userId: workerFk}}}; - const result = await app.models.Dms.download(ctx, dmsId); + let workerId = 107; + let ctx = {req: {accessToken: {userId: workerId}}}; + const result = await app.models.Dms.downloadFile(ctx, dmsId); expect(result[1]).toEqual('text/plain'); }); @@ -19,7 +15,7 @@ xdescribe('dms download()', () => { let ctx = {req: {accessToken: {userId: clientId}}}; let error; - await app.models.Dms.download(ctx, dmsId).catch(e => { + await app.models.Dms.downloadFile(ctx, dmsId).catch(e => { error = e; }).finally(() => { expect(error.message).toEqual(`You don't have enough privileges`); diff --git a/back/methods/dms/specs/removeFile.spec.js b/back/methods/dms/specs/removeFile.spec.js new file mode 100644 index 000000000..1006d1329 --- /dev/null +++ b/back/methods/dms/specs/removeFile.spec.js @@ -0,0 +1,19 @@ +const app = require('vn-loopback/server/server'); + +describe('dms removeFile()', () => { + let dmsId = 1; + + it(`should return an error for a user without enough privileges`, async() => { + let clientId = 101; + let ctx = {req: {accessToken: {userId: clientId}}}; + + let error; + await app.models.Dms.removeFile(ctx, dmsId).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/back/methods/dms/specs/uploadFile.spec.js b/back/methods/dms/specs/uploadFile.spec.js new file mode 100644 index 000000000..afd70d068 --- /dev/null +++ b/back/methods/dms/specs/uploadFile.spec.js @@ -0,0 +1,18 @@ +const app = require('vn-loopback/server/server'); + +describe('dms uploadFile()', () => { + it(`should return an error for a user without enough privileges`, async() => { + let clientId = 101; + let ticketDmsTypeId = 14; + let ctx = {req: {accessToken: {userId: clientId}}, args: {dmsTypeId: ticketDmsTypeId}}; + + let error; + await app.models.Dms.uploadFile(ctx).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/back/methods/dms/uploadFile.js b/back/methods/dms/uploadFile.js new file mode 100644 index 000000000..9ef60c005 --- /dev/null +++ b/back/methods/dms/uploadFile.js @@ -0,0 +1,141 @@ +const UserError = require('vn-loopback/util/user-error'); +const fs = require('fs-extra'); + +module.exports = Self => { + Self.remoteMethodCtx('uploadFile', { + description: 'Uploads a file and inserts into dms model', + accessType: 'WRITE', + accepts: [ + { + arg: 'warehouseId', + type: 'Number', + description: '' + }, { + arg: 'companyId', + type: 'Number', + description: '' + }, { + arg: 'dmsTypeId', + type: 'Number', + description: '' + }, { + arg: 'reference', + type: 'String', + description: '' + }, { + arg: 'description', + type: 'String', + description: '' + }, { + arg: 'hasFile', + type: 'Boolean', + description: '' + }], + returns: { + type: 'Object', + root: true + }, + http: { + path: `/uploadFile`, + verb: 'POST' + } + }); + + Self.uploadFile = async(ctx, options) => { + const storageConnector = Self.app.dataSources.storage.connector; + const models = Self.app.models; + const fileOptions = {}; + const args = ctx.args; + + let tx; + let myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } + + try { + const hasWriteRole = await models.DmsType.hasWriteRole(ctx, args.dmsTypeId); + if (!hasWriteRole) + throw new UserError(`You don't have enough privileges`); + + // Upload file to temporary path + const tempContainer = await getContainer('temp'); + const uploaded = await models.Container.upload(tempContainer.name, ctx.req, ctx.result, fileOptions); + const files = Object.values(uploaded.files).map(file => { + return file[0]; + }); + + const addedDms = []; + for (const file of files) { + const newDms = await createDms(ctx, file.name, myOptions); + const pathHash = storageConnector.getPathHash(newDms.id); + const container = await getContainer(pathHash); + + const originPath = `${tempContainer.client.root}/${tempContainer.name}/${file.name}`; + const destinationPath = `${container.client.root}/${pathHash}/${newDms.file}`; + + fs.rename(originPath, destinationPath); + + addedDms.push(newDms); + } + + if (tx) await tx.commit(); + return addedDms; + } catch (e) { + if (tx) await tx.rollback(); + throw e; + } + }; + + async function createDms(ctx, fileName, myOptions) { + const models = Self.app.models; + const storageConnector = Self.app.dataSources.storage.connector; + const myUserId = ctx.req.accessToken.userId; + const myWorker = await models.Worker.findOne({where: {userFk: myUserId}}); + const args = ctx.args; + + const newDms = await Self.create({ + workerFk: myWorker.id, + dmsTypeFk: args.dmsTypeId, + companyFk: args.companyId, + warehouseFk: args.warehouseId, + reference: args.reference, + description: args.description, + hasFile: args.hasFile + }, myOptions); + + const extension = storageConnector.getFileExtension(fileName); + fileName = `${newDms.id}.${extension}`; + + return newDms.updateAttribute('file', fileName, myOptions); + } + + + /** + * Returns a container instance + * If doesn't exists creates a new one + * + * @param {String} name Container name + * @return {Object} Container instance + */ + async function getContainer(name) { + const models = Self.app.models; + let container; + try { + container = await models.Container.getContainer(name); + } catch (err) { + if (err.code === 'ENOENT') { + container = await models.Container.createContainer({ + name: name + }); + } else throw err; + } + + return container; + } +}; diff --git a/back/model-config.json b/back/model-config.json index dc67a5422..b24226507 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -11,6 +11,9 @@ "Company": { "dataSource": "vn" }, + "Container": { + "dataSource": "storage" + }, "Delivery": { "dataSource": "vn" }, @@ -43,6 +46,12 @@ }, "DmsType": { "dataSource": "vn" + }, + "Town": { + "dataSource": "vn" + }, + "Postcode": { + "dataSource": "vn" } } diff --git a/back/models/account.json b/back/models/account.json index ad0c8aa5d..7186621b4 100644 --- a/back/models/account.json +++ b/back/models/account.json @@ -51,7 +51,12 @@ "type": "hasOne", "model": "EmailUser", "foreignKey": "userFk" - } + }, + "worker": { + "type": "hasOne", + "model": "Worker", + "foreignKey": "userFk" + } }, "acls": [ { diff --git a/back/models/container.json b/back/models/container.json new file mode 100644 index 000000000..eca4c30c7 --- /dev/null +++ b/back/models/container.json @@ -0,0 +1,13 @@ +{ + "name": "Container", + "base": "VnModel", + "idInjection": true, + "options": { + "validateUpsert": true + }, + "properties": {}, + "validations": [], + "relations": {}, + "acls": [], + "methods": [] + } \ No newline at end of file diff --git a/back/models/dms.js b/back/models/dms.js index 97a405eef..d3471178b 100644 --- a/back/models/dms.js +++ b/back/models/dms.js @@ -1,3 +1,5 @@ module.exports = Self => { - require('../methods/dms/download')(Self); + require('../methods/dms/downloadFile')(Self); + require('../methods/dms/uploadFile')(Self); + require('../methods/dms/removeFile')(Self); }; diff --git a/back/models/dms.json b/back/models/dms.json index d5ec4b8b7..dc421a7a1 100644 --- a/back/models/dms.json +++ b/back/models/dms.json @@ -1,3 +1,4 @@ + { "name": "Dms", "description": "Documental Managment system", @@ -22,6 +23,12 @@ "description": { "type": "string" }, + "hardCopyNumber": { + "type": "Number" + }, + "hasFile": { + "type": "boolean" + }, "created": { "type": "Date" } diff --git a/back/models/dmsType.js b/back/models/dmsType.js new file mode 100644 index 000000000..f76b095df --- /dev/null +++ b/back/models/dmsType.js @@ -0,0 +1,62 @@ +module.exports = Self => { + /** + * Checks if current user has + * read privileges over a dms + * + * @param {Object} ctx - Request context + * @param {Interger} id - DmsType id + * @return {Boolean} True for user with read privileges + */ + Self.hasReadRole = async(ctx, id) => { + const models = Self.app.models; + const dmsType = await models.DmsType.findById(id, { + include: { + relation: 'readRole' + } + }); + + return await hasRole(ctx, dmsType); + }; + + /** + * Checks if current user has + * write privileges over a dms + * + * @param {Object} ctx - Request context + * @param {Interger} id - DmsType id + * @return {Boolean} True for user with write privileges + */ + Self.hasWriteRole = async(ctx, id) => { + const models = Self.app.models; + const dmsType = await models.DmsType.findById(id, { + include: { + relation: 'writeRole' + } + }); + + return await hasRole(ctx, dmsType); + }; + + /** + * Checks if current user has + * read or write privileges + * @param {Object} ctx - Context + * @param {Object} dmsType - Dms type [read/write] + */ + async function hasRole(ctx, dmsType) { + const models = Self.app.models; + const myUserId = ctx.req.accessToken.userId; + + const readRole = dmsType.readRole() && dmsType.readRole().name; + const writeRole = dmsType.writeRole() && dmsType.writeRole().name; + const requiredRole = readRole || writeRole; + + const hasRequiredRole = await models.Account.hasRole(myUserId, requiredRole); + const isRoot = await models.Account.hasRole(myUserId, 'root'); + + if (isRoot || hasRequiredRole) + return true; + + return false; + } +}; diff --git a/back/models/dmsType.json b/back/models/dmsType.json index 9efc92cf5..b51c810ac 100644 --- a/back/models/dmsType.json +++ b/back/models/dmsType.json @@ -20,6 +20,10 @@ "path": { "type": "string", "required": true + }, + "code": { + "type": "string", + "required": true } }, "relations": { diff --git a/back/models/postcode.js b/back/models/postcode.js new file mode 100644 index 000000000..b08fdaa40 --- /dev/null +++ b/back/models/postcode.js @@ -0,0 +1,9 @@ +let UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.rewriteDbError(function(err) { + if (err.code === 'ER_DUP_ENTRY') + return new UserError(`This postcode already exists`); + return err; + }); +}; diff --git a/back/models/postcode.json b/back/models/postcode.json new file mode 100644 index 000000000..e28a77dc4 --- /dev/null +++ b/back/models/postcode.json @@ -0,0 +1,50 @@ +{ + "name": "Postcode", + "base": "VnModel", + "options": { + "mysql": { + "table": "postCode" + } + }, + "properties": { + "code": { + "id": true, + "type": "String" + } + }, + "relations": { + "town": { + "type": "belongsTo", + "model": "Town", + "foreignKey": "townFk" + }, + "geo": { + "type": "belongsTo", + "model": "ZoneGeo", + "foreignKey": "geoFk" + } + }, + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }], + "scopes": { + "location": { + "include": { + "relation": "town", + "scope": { + "include": { + "relation": "province", + "scope": { + "include": { + "relation": "country" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/back/models/sip.js b/back/models/sip.js index 86e06c9b6..f6b007314 100644 --- a/back/models/sip.js +++ b/back/models/sip.js @@ -1,6 +1,4 @@ module.exports = Self => { - // Validations - Self.validatesUniquenessOf('extension', { message: `The extension must be unique` }); diff --git a/back/models/sip.json b/back/models/sip.json index b64000be6..7a7cb8605 100644 --- a/back/models/sip.json +++ b/back/models/sip.json @@ -16,7 +16,8 @@ } }, "extension": { - "type": "Number" + "type": "String", + "required": true } }, "relations": { diff --git a/back/models/town.json b/back/models/town.json new file mode 100644 index 000000000..41633fe0a --- /dev/null +++ b/back/models/town.json @@ -0,0 +1,57 @@ +{ + "name": "Town", + "base": "VnModel", + "options": { + "mysql": { + "table": "town" + } + }, + "properties": { + "id": { + "id": true, + "type": "Number" + }, + "name": { + "type": "String" + } + }, + "relations": { + "province": { + "type": "belongsTo", + "model": "Province", + "foreignKey": "provinceFk" + }, + "postcodes": { + "type": "hasMany", + "model": "Postcode", + "foreignKey": "townFk" + }, + "geo": { + "type": "belongsTo", + "model": "ZoneGeo", + "foreignKey": "geoFk" + } + }, + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }], + "scopes": { + "location": { + "include": [{ + "relation": "postcodes" + }, + { + "relation": "province", + "scope": { + "include": { + "relation": "country" + } + } + }], + "fields": ["id", "name", "provinceFk"] + } + } +} \ No newline at end of file diff --git a/back/models/warehouse.json b/back/models/warehouse.json index 667aaab14..f66bcffe9 100644 --- a/back/models/warehouse.json +++ b/back/models/warehouse.json @@ -31,5 +31,5 @@ "permission": "ALLOW" } ], - "scope" : {"where": {"isInventory": {"neq": 0}}} + "scope" : {"where": {"isForTicket": {"neq": 0}}} } diff --git a/db/changes/10002-lent/00-ACL.sql b/db/changes/10002-lent/00-ACL.sql deleted file mode 100644 index 6ca46845d..000000000 --- a/db/changes/10002-lent/00-ACL.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('160', 'TicketServiceType', '*', 'READ', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/10002-lent/00-clientGetSalesPerson.sql b/db/changes/10002-lent/00-clientGetSalesPerson.sql deleted file mode 100644 index f93e528a2..000000000 --- a/db/changes/10002-lent/00-clientGetSalesPerson.sql +++ /dev/null @@ -1,76 +0,0 @@ - -DROP function IF EXISTS `vn`.`clientGetSalesPerson`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` FUNCTION `vn`.`clientGetSalesPerson`(vClientFk INT, vDated DATE) RETURNS int(11) - DETERMINISTIC -BEGIN -/** - * Dado un id cliente y una fecha, devuelve su comercial para ese dia, teniendo - * en cuenta la jerarquía de las tablas: 1º la de sharingClient, 2º la de - * sharingCart y tercero la de clientes. - * - * @param vClientFk El id del cliente - * @param vDated Fecha a comprobar - * @return El id del comercial para la fecha dada - **/ - DECLARE vSalesperson INT DEFAULT NULL; - DECLARE vSubstitute INT DEFAULT NULL; - DECLARE vLoop BOOLEAN; - - -- Obtiene el comercial original y el de sharingClient - - SELECT c.salesPersonFk, s.workerFk - INTO vSalesperson, vSubstitute - FROM client c - LEFT JOIN sharingClient s - ON c.id = s.clientFk - AND vDated BETWEEN s.started AND s.ended - WHERE c.id = vClientFk - ORDER BY s.id - LIMIT 1; - - -- Si no hay ninguno en sharingClient busca en sharingCart - - IF vSubstitute IS NOT NULL - THEN - SET vSalesperson = vSubstitute; - ELSEIF vSalesperson IS NOT NULL - THEN - DROP TEMPORARY TABLE IF EXISTS tmp.stack; - CREATE TEMPORARY TABLE tmp.stack - (INDEX (substitute)) - ENGINE = MEMORY - SELECT vSalesperson substitute; - - l: LOOP - SELECT workerSubstitute INTO vSubstitute - FROM sharingCart - WHERE vDated BETWEEN started AND ended - AND workerFk = vSalesperson - ORDER BY id - LIMIT 1; - - IF vSubstitute IS NULL THEN - LEAVE l; - END IF; - - SELECT COUNT(*) > 0 INTO vLoop - FROM tmp.stack WHERE substitute = vSubstitute; - - IF vLoop THEN - LEAVE l; - END IF; - - INSERT INTO tmp.stack SET - substitute = vSubstitute; - - SET vSalesperson = vSubstitute; - END LOOP; - - DROP TEMPORARY TABLE tmp.stack; - END IF; - - RETURN vSalesperson; -END$$ - -DELIMITER ; \ No newline at end of file diff --git a/db/changes/10002-lent/00-greugesShipped.sql b/db/changes/10002-lent/00-greugesShipped.sql deleted file mode 100644 index 25cb4df2f..000000000 --- a/db/changes/10002-lent/00-greugesShipped.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE `vn2008`.`Greuges` CHANGE COLUMN `Fecha` `Fecha` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ; \ No newline at end of file diff --git a/db/changes/10002-lent/00-invoiceOut.sql b/db/changes/10002-lent/00-invoiceOut.sql deleted file mode 100644 index ed58227ac..000000000 --- a/db/changes/10002-lent/00-invoiceOut.sql +++ /dev/null @@ -1,9 +0,0 @@ -ALTER TABLE `vn2008`.`Facturas` -DROP FOREIGN KEY `invoice_bank_id`; -ALTER TABLE `vn2008`.`Facturas` -CHANGE COLUMN `Id_Banco` `Id_Banco` INT(11) NULL DEFAULT NULL ; -ALTER TABLE `vn2008`.`Facturas` -ADD CONSTRAINT `invoice_bank_id` - FOREIGN KEY (`Id_Banco`) - REFERENCES `vn2008`.`Bancos` (`Id_Banco`) - ON UPDATE CASCADE; diff --git a/db/changes/10002-lent/00-printQueue.sql b/db/changes/10002-lent/00-printQueue.sql deleted file mode 100644 index f4fd5b569..000000000 --- a/db/changes/10002-lent/00-printQueue.sql +++ /dev/null @@ -1,13 +0,0 @@ -ALTER TABLE `vn2008`.`Colas` -DROP FOREIGN KEY `Colas_ibfk_1`, -DROP FOREIGN KEY `Colas_ibfk_2`, -DROP FOREIGN KEY `Colas_ibfk_3`, -DROP FOREIGN KEY `Colas_ibfk_5`; -ALTER TABLE `vn2008`.`Colas` -CHANGE COLUMN `Id_Impresora` `Id_Impresora` TINYINT(3) UNSIGNED NULL DEFAULT NULL , -CHANGE COLUMN `Id_Prioridad` `Id_Prioridad` TINYINT(3) UNSIGNED NULL DEFAULT NULL ; -ALTER TABLE `vn2008`.`Colas` -ADD CONSTRAINT `Colas_ibfk_3` - FOREIGN KEY (`Id_Prioridad`) - REFERENCES `vn2008`.`Prioridades` (`Id_Prioridad`) - ON UPDATE CASCADE; diff --git a/db/changes/10002-lent/00-routeLog.sql b/db/changes/10002-lent/00-routeLog.sql deleted file mode 100644 index b6430fcb6..000000000 --- a/db/changes/10002-lent/00-routeLog.sql +++ /dev/null @@ -1,21 +0,0 @@ -DROP TABLE IF EXISTS `vn`.`routeLog`; - -CREATE TABLE `vn`.`routeLog` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `originFk` int(10) unsigned NOT NULL, - `userFk` int(10) unsigned DEFAULT NULL, - `action` set('insert','update','delete') COLLATE utf8_unicode_ci NOT NULL, - `creationDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP, - `description` text CHARACTER SET utf8, - `changedModel` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - `oldInstance` text COLLATE utf8_unicode_ci, - `newInstance` text COLLATE utf8_unicode_ci, - `changedModelId` int(11) DEFAULT NULL, - `changedModelValue` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `originFk` (`originFk`), - KEY `userFk` (`userFk`), - CONSTRAINT `routeLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Rutas` (`Id_Ruta`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `routeLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - diff --git a/db/changes/10002-lent/00-sharingCart.sql b/db/changes/10002-lent/00-sharingCart.sql deleted file mode 100644 index 1267cd044..000000000 --- a/db/changes/10002-lent/00-sharingCart.sql +++ /dev/null @@ -1,14 +0,0 @@ -CREATE - ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`sharingCart` AS - SELECT - `s`.`id` AS `id`, - `s`.`Id_Trabajador` AS `workerFk`, - `s`.`datSTART` AS `started`, - `s`.`datEND` AS `ended`, - `s`.`Id_Suplente` AS `workerSubstitute`, - `s`.`odbc_date` AS `created` - FROM - `vn2008`.`sharingcart` `s` \ No newline at end of file diff --git a/db/changes/10002-lent/00-sharingclient.sql b/db/changes/10002-lent/00-sharingclient.sql deleted file mode 100644 index ab76ec6c5..000000000 --- a/db/changes/10002-lent/00-sharingclient.sql +++ /dev/null @@ -1,13 +0,0 @@ -CREATE - OR REPLACE ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`sharingClient` AS - SELECT - `s`.`id` AS `id`, - `s`.`Id_Trabajador` AS `workerFk`, - `s`.`datSTART` AS `started`, - `s`.`datEND` AS `ended`, - `s`.`Id_Cliente` AS `clientFk` - FROM - `vn2008`.`sharingclient` `s`; diff --git a/db/changes/10002-lent/00-ticket.sql b/db/changes/10002-lent/00-ticket.sql deleted file mode 100644 index b98550328..000000000 --- a/db/changes/10002-lent/00-ticket.sql +++ /dev/null @@ -1,11 +0,0 @@ -DROP TRIGGER IF EXISTS `vn2008`.`TicketsAfterUpdate`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` TRIGGER `vn2008`.`TicketsAfterUpdate` - AFTER UPDATE ON `Tickets` FOR EACH ROW -BEGIN - - CALL stock.queueAdd ('ticket', NEW.Id_Ticket, OLD.Id_Ticket); -END$$ -DELIMITER ; diff --git a/db/changes/10002-lent/00-ticketConfig.sql b/db/changes/10002-lent/00-ticketConfig.sql deleted file mode 100644 index 8c93d084f..000000000 --- a/db/changes/10002-lent/00-ticketConfig.sql +++ /dev/null @@ -1,4 +0,0 @@ -DROP TABLE IF EXISTS `vn`.`ticketConfig`; - -CREATE TABLE `vn`.`ticketConfig` (`id` INT NOT NULL AUTO_INCREMENT, `scopeDays` TINYINT(3) NULL, PRIMARY KEY (`id`)); -INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`) VALUES ('1', '6'); diff --git a/db/changes/10002-lent/00-ticketCreateWithUser.sql b/db/changes/10002-lent/00-ticketCreateWithUser.sql deleted file mode 100644 index e8578ac98..000000000 --- a/db/changes/10002-lent/00-ticketCreateWithUser.sql +++ /dev/null @@ -1,74 +0,0 @@ - -DROP procedure IF EXISTS `vn`.`ticketCreateWithUser`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticketCreateWithUser`( - vClientId INT - ,vShipped DATE - ,vWarehouseId INT - ,vCompanyFk INT - ,vAddressFk INT - ,vAgencyType INT - ,vRouteFk INT - ,vlanded DATE - ,vUserId INT - ,OUT vNewTicket INT) -BEGIN - - IF vClientId IS NULL THEN - CALL util.throw ('CLIENT_NOT_ESPECIFIED'); - END IF; - - IF NOT vAddressFk OR vAddressFk IS NULL THEN - SELECT id INTO vAddressFk - FROM address - WHERE clientFk = vClientId AND isDefaultAddress; - END IF; - - INSERT INTO vn2008.Tickets ( - Id_Cliente, - Fecha, - Id_Consigna, - Id_Agencia, - Alias, - warehouse_id, - Id_Ruta, - empresa_id, - landing - ) - SELECT - vClientId, - vShipped, - a.id, - IF(vAgencyType, vAgencyType, a.agencyModeFk), - a.nickname, - vWarehouseId, - IF(vRouteFk,vRouteFk,NULL), - vCompanyFk, - vlanded - FROM address a - JOIN agencyMode am ON am.id = a.agencyModeFk - WHERE a.id = vAddressFk; - - SET vNewTicket = LAST_INSERT_ID(); - - INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) - SELECT vNewTicket, ao.observationTypeFk, ao.description - FROM addressObservation ao - JOIN address a ON a.id = ao.addressFk - WHERE a.id = vAddressFk; - - -- CALL logAddWithUser(vNewTicket, vUserId, 'insert', 'ticket', CONCAT('Ha creado el ticket', ' ', vNewTicket)); - INSERT INTO vn.ticketLog - SET originFk = vNewTicket, userFk = vUserId, `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket); - - IF (SELECT ct.isCreatedAsServed FROM vn.clientType ct JOIN vn.client c ON c.typeFk = ct.code WHERE c.id = vClientId ) <> FALSE THEN - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, vNewTicket, getWorker() - FROM state - WHERE `code` = 'DELIVERED'; - END IF; -END$$ - -DELIMITER ; - diff --git a/db/changes/10002-lent/00-ticketServiceType.sql b/db/changes/10002-lent/00-ticketServiceType.sql deleted file mode 100644 index 5f887a10f..000000000 --- a/db/changes/10002-lent/00-ticketServiceType.sql +++ /dev/null @@ -1,13 +0,0 @@ -DROP TABLE IF EXISTS `vn`.`ticketServiceType`; - -CREATE TABLE vn.`ticketServiceType` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de los posibles servicios a elegir'; - -INSERT INTO `vn`.`ticketServiceType` (`name`) VALUES ('Porte Agencia'); -INSERT INTO `vn`.`ticketServiceType` (`name`) VALUES ('Portes Retorno'); -INSERT INTO `vn`.`ticketServiceType` (`name`) VALUES ('Porte Carry'); -INSERT INTO `vn`.`ticketServiceType` (`name`) VALUES ('Cargo FITOSANITARIO'); -INSERT INTO `vn`.`ticketServiceType` (`name`) VALUES ('Documentos'); diff --git a/db/changes/10002-lent/00-workerGetHierarch.sql b/db/changes/10002-lent/00-workerGetHierarch.sql deleted file mode 100644 index 8070a0ee2..000000000 --- a/db/changes/10002-lent/00-workerGetHierarch.sql +++ /dev/null @@ -1,46 +0,0 @@ -DROP procedure IF EXISTS `vn`.`worker_getHierarch`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`worker_getHierarch`(vBoss INT) -BEGIN - DECLARE EXIT HANDLER FOR 1062 BEGIN - CALL util.throw('INFINITE_LOOP'); - END; - - DROP TEMPORARY TABLE IF EXISTS workerHierarch; - CREATE TEMPORARY TABLE workerHierarch - (PRIMARY KEY (workerFk)) - ENGINE = MEMORY - SELECT vBoss AS workerFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.workerHierarchList; - CREATE TEMPORARY TABLE tmp.workerHierarchList - (PRIMARY KEY (workerFk)) - ENGINE = MEMORY - SELECT vBoss AS workerFk, 0 AS isChecked; - - - WHILE (SELECT COUNT(*) FROM tmp.workerHierarchList WHERE NOT isChecked) > 0 DO - - INSERT INTO tmp.workerHierarchList - SELECT w.id, 0 - FROM worker w - JOIN workerHierarch wh ON wh.workerFk = w.bossFk; - - UPDATE tmp.workerHierarchList whl - JOIN workerHierarch wh ON wh.workerFk = whl.workerFk - SET whl.isChecked = 1; - - TRUNCATE workerHierarch; - - INSERT INTO workerHierarch - SELECT workerFk - FROM tmp.workerHierarchList - WHERE NOT isChecked; - - END WHILE; - - DROP TEMPORARY TABLE IF EXISTS workerHierarch; -END$$ - -DELIMITER ; \ No newline at end of file diff --git a/db/changes/10003-easter/00-ACL.sql b/db/changes/10003-easter/00-ACL.sql deleted file mode 100644 index 7485b5a0e..000000000 --- a/db/changes/10003-easter/00-ACL.sql +++ /dev/null @@ -1,6 +0,0 @@ -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (161, 'TicketConfig', '*', 'READ', 'ALLOW', 'ROLE', 'employee'); -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (162, 'InvoiceOut', 'delete', 'WRITE', 'ALLOW', 'ROLE', 'invoicing'); -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (163, 'InvoiceOut', 'book', 'WRITE', 'ALLOW', 'ROLE', 'invoicing'); -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (164, 'InvoiceOut', 'regenerate', 'WRITE', 'ALLOW', 'ROLE', 'invoicing'); -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (165, 'TicketDms', '*', 'READ', 'ALLOW', 'ROLE', 'employee'); -INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES (166, 'Dms', 'download', 'READ', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/10003-easter/00-nodeAdd.sql b/db/changes/10003-easter/00-nodeAdd.sql deleted file mode 100644 index 80c716b45..000000000 --- a/db/changes/10003-easter/00-nodeAdd.sql +++ /dev/null @@ -1,71 +0,0 @@ -DROP procedure IF EXISTS `nst`.`nodeAdd`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `nst`.`nodeAdd`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vParentFk` INT, IN `vChild` VARCHAR(100)) -BEGIN - DECLARE vSql TEXT; - DECLARE vTableClone VARCHAR(45); - - SET vTableClone = CONCAT(vTable, 'Clone'); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone)); - CALL util.exec(CONCAT( - 'CREATE TEMPORARY TABLE tmp.', vTableClone, - ' ENGINE = MEMORY', - ' SELECT * FROM ', vScheme, '.', vTable - )); - - CALL util.exec(CONCAT( - 'SELECT COUNT(c.id) INTO @childs', - ' FROM ', vScheme, '.', vTable, ' p', - ' LEFT JOIN tmp.', vTableClone, ' c ON c.lft', - ' BETWEEN p.lft AND p.rgt AND c.id != ', vParentFk, - ' WHERE p.id = ', vParentFk - )); - - IF @childs = 0 THEN - CALL util.exec(CONCAT( - 'SELECT lft INTO @vLeft', - ' FROM ', vScheme, '.', vTable, - ' WHERE id = ', vParentFk - )); - ELSE - CALL util.exec(CONCAT( - 'SELECT c.rgt INTO @vLeft', - ' FROM ', vScheme, '.', vTable, ' p', - ' JOIN tmp.', vTableClone, ' c ON c.lft BETWEEN p.lft AND p.rgt', - ' WHERE p.id = ', vParentFk, - ' ORDER BY c.lft', - ' DESC LIMIT 1' - )); - END IF; - - CALL util.exec(CONCAT( - 'UPDATE ', vScheme, '.', vTable, ' SET rgt = rgt + 2', - ' WHERE rgt > @vLeft', - ' ORDER BY rgt DESC' - )); - CALL util.exec(CONCAT( - 'UPDATE ', vScheme, '.', vTable, ' SET lft = lft + 2', - ' WHERE lft > @vLeft', - ' ORDER BY lft DESC' - )); - - SET vChild = REPLACE(vChild, "'", "\\'"); - - CALL util.exec(CONCAT( - 'INSERT INTO ', vScheme, '.', vTable, ' (name, lft, rgt)', - ' VALUES ("', vChild, '", @vLeft + 1, @vLeft + 2)' - )); - - CALL util.exec(CONCAT( - 'SELECT id, name, lft, rgt, depth, sons', - ' FROM ', vScheme, '.', vTable, - ' WHERE id = LAST_INSERT_ID()' - )); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone)); -END$$ - -DELIMITER ; - diff --git a/db/changes/10003-easter/00-nodeDelete.sql b/db/changes/10003-easter/00-nodeDelete.sql deleted file mode 100644 index 906428c88..000000000 --- a/db/changes/10003-easter/00-nodeDelete.sql +++ /dev/null @@ -1,34 +0,0 @@ -DROP procedure IF EXISTS `nst`.`nodeDelete`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `nst`.`nodeDelete`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vNodeId` INT) -BEGIN - DECLARE vMyRight INT; - DECLARE vMyLeft INT; - DECLARE vMyWidth INT; - - CALL util.exec(CONCAT( - 'SELECT t.rgt, t.lft, t.rgt - t.lft + 1', - ' INTO @vMyRight, @vMyLeft, @vMyWidth', - ' FROM ', vScheme, '.', vTable, ' t', - ' WHERE t.id = ', vNodeId - )); - - CALL util.exec(CONCAT( - 'DELETE FROM ', vScheme, '.', vTable, - ' WHERE lft BETWEEN @vMyLeft AND @vMyRight' - )); - - CALL util.exec(CONCAT( - 'UPDATE ', vScheme, '.', vTable, ' SET rgt = rgt - @vMyWidth' - ' WHERE rgt > @vMyRight ORDER BY rgt' - )); - - CALL util.exec(CONCAT( - 'UPDATE ', vScheme, '.', vTable, ' SET lft = lft - @vMyWidth' - ' WHERE lft > @vMyRight ORDER BY lft' - )); -END$$ - -DELIMITER ; - diff --git a/db/changes/10003-easter/00-nodeRecalc.sql b/db/changes/10003-easter/00-nodeRecalc.sql deleted file mode 100644 index ff103bda7..000000000 --- a/db/changes/10003-easter/00-nodeRecalc.sql +++ /dev/null @@ -1,23 +0,0 @@ -DROP procedure IF EXISTS `nst`.`nodeRecalc`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `nst`.`nodeRecalc`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45)) -BEGIN - CALL util.exec(CONCAT ( - 'UPDATE ', vScheme, '.', vTable, ' d', - ' JOIN (SELECT', - ' node.id,', - ' COUNT(parent.id) - 1 as depth,', - ' cast((node.rgt - node.lft - 1) / 2 as DECIMAL) as sons', - ' FROM ', - ' ', vScheme, '.', vTable, ' AS node,', - ' ', vScheme, '.', vTable, ' AS parent', - ' WHERE node.lft BETWEEN parent.lft AND parent.rgt', - ' GROUP BY node.id', - ' ORDER BY node.lft) n ON n.id = d.id ', - ' SET d.`depth` = n.depth, d.sons = n.sons' - )); -END$$ - -DELIMITER ; - diff --git a/db/changes/10003-easter/01-dmsTicketRename.sql b/db/changes/10003-easter/01-dmsTicketRename.sql deleted file mode 100644 index 60318dfdb..000000000 --- a/db/changes/10003-easter/01-dmsTicketRename.sql +++ /dev/null @@ -1,12 +0,0 @@ -DROP VIEW IF EXISTS `vn`.`dmsTicket` ; -USE `vn`; -CREATE - OR REPLACE ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`ticketDms` AS - SELECT - `g`.`Id_Ticket` AS `ticketFk`, - `g`.`gestdoc_id` AS `dmsFk` - FROM - `vn2008`.`tickets_gestdoc` `g`; diff --git a/db/changes/10003-easter/02-dmsTypeAddRoleFields.sql b/db/changes/10003-easter/02-dmsTypeAddRoleFields.sql deleted file mode 100644 index 3898fb813..000000000 --- a/db/changes/10003-easter/02-dmsTypeAddRoleFields.sql +++ /dev/null @@ -1,7 +0,0 @@ -ALTER TABLE `vn2008`.`gesttip` -ADD COLUMN `writeRoleFk` INT(10) UNSIGNED NULL AFTER `path`, -ADD COLUMN `readRoleFk` INT(10) UNSIGNED NULL AFTER `writeRoleFk`, -ADD CONSTRAINT `readRoleFk` FOREIGN KEY (`readRoleFk`) REFERENCES `account`.`role` (`id`), -ADD CONSTRAINT `writeRoleFk` FOREIGN KEY (`writeRoleFk`) REFERENCES `account`.`role` (`id`); - -UPDATE `vn2008`.`gesttip` SET `readRoleFk`='1' WHERE `id`='14'; diff --git a/db/changes/10003-easter/03-dmsType.sql b/db/changes/10003-easter/03-dmsType.sql deleted file mode 100644 index 6f38571e6..000000000 --- a/db/changes/10003-easter/03-dmsType.sql +++ /dev/null @@ -1,13 +0,0 @@ -CREATE - OR REPLACE ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`dmsType` AS - SELECT - `g`.`id` AS `id`, - `g`.`tipo` AS `name`, - `g`.`path` AS `path`, - `g`.`readRoleFk` AS `readRoleFk`, - `g`.`writeRoleFk` AS `writeRoleFk` - FROM - `vn2008`.`gesttip` `g`; diff --git a/db/changes/10003-easter/04-zoneAlter.sql b/db/changes/10003-easter/04-zoneAlter.sql deleted file mode 100644 index 36bfbf336..000000000 --- a/db/changes/10003-easter/04-zoneAlter.sql +++ /dev/null @@ -1,5 +0,0 @@ - -ALTER TABLE `vn`.`zone` -DROP PRIMARY KEY, -ADD PRIMARY KEY (`id`), -ADD INDEX `zone_name_idx` (`name` ASC); \ No newline at end of file diff --git a/db/changes/10031-zone/00-device.sql b/db/changes/10031-zone/00-device.sql deleted file mode 100644 index 665d2c8e7..000000000 --- a/db/changes/10031-zone/00-device.sql +++ /dev/null @@ -1,15 +0,0 @@ -CREATE TABLE `vn`.`device` ( - `id` INT NOT NULL, - `sn` VARCHAR(50) NULL, - `model` VARCHAR(50) NULL, - `userFk` INT(10) UNSIGNED NOT NULL, - PRIMARY KEY (`id`), - INDEX `device_fk1_idx` (`userFk` ASC), - CONSTRAINT `device_fk1` - FOREIGN KEY (`userFk`) - REFERENCES `account`.`user` (`id`) - ON DELETE NO ACTION - ON UPDATE NO ACTION); - -ALTER TABLE `vn`.`device` -CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ; diff --git a/db/changes/10031-zone/00-nodeAdd.sql b/db/changes/10031-zone/00-nodeAdd.sql deleted file mode 100644 index 2c6165ac0..000000000 --- a/db/changes/10031-zone/00-nodeAdd.sql +++ /dev/null @@ -1,74 +0,0 @@ -USE `nst`; -DROP procedure IF EXISTS `nodeAdd`; - -DELIMITER $$ -USE `nst`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `nodeAdd`(IN `vScheme` VARCHAR(45), IN `vTable` VARCHAR(45), IN `vParentFk` INT, IN `vChild` VARCHAR(100)) -BEGIN - DECLARE vSql TEXT; - DECLARE vTableClone VARCHAR(45); - - SET vTableClone = CONCAT(vTable, 'Clone'); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone)); - CALL util.exec(CONCAT( - 'CREATE TEMPORARY TABLE tmp.', vTableClone, - ' ENGINE = MEMORY', - ' SELECT * FROM ', vScheme, '.', vTable - )); - - CALL util.exec(CONCAT( - 'SELECT COUNT(c.id) INTO @childs', - ' FROM ', vScheme, '.', vTable, ' p', - ' LEFT JOIN tmp.', vTableClone, ' c ON c.lft', - ' BETWEEN p.lft AND p.rgt AND c.id != ', vParentFk, - ' WHERE p.id = ', vParentFk - )); - - IF @childs = 0 THEN - CALL util.exec(CONCAT( - 'SELECT lft INTO @vLeft', - ' FROM ', vScheme, '.', vTable, - ' WHERE id = ', vParentFk - )); - ELSE - CALL util.exec(CONCAT( - 'SELECT c.rgt INTO @vLeft', - ' FROM ', vScheme, '.', vTable, ' p', - ' JOIN tmp.', vTableClone, ' c ON c.depth = p.depth + 1' - ' AND c.lft BETWEEN p.lft AND p.rgt', - ' WHERE p.id = ', vParentFk, - ' ORDER BY c.lft', - ' DESC LIMIT 1' - )); - END IF; - - CALL util.exec(CONCAT( - 'UPDATE ', vScheme, '.', vTable, ' SET rgt = rgt + 2', - ' WHERE rgt > @vLeft', - ' ORDER BY rgt DESC' - )); - CALL util.exec(CONCAT( - 'UPDATE ', vScheme, '.', vTable, ' SET lft = lft + 2', - ' WHERE lft > @vLeft', - ' ORDER BY lft DESC' - )); - - SET vChild = REPLACE(vChild, "'", "\\'"); - - CALL util.exec(CONCAT( - 'INSERT INTO ', vScheme, '.', vTable, ' (name, lft, rgt)', - ' VALUES ("', vChild, '", @vLeft + 1, @vLeft + 2)' - )); - - -- CALL util.exec(CONCAT( - -- 'SELECT id, name, lft, rgt, depth, sons', - -- ' FROM ', vScheme, '.', vTable, - -- ' WHERE id = LAST_INSERT_ID()' - -- )); - - CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone)); -END$$ - -DELIMITER ; - diff --git a/db/changes/10031-zone/00-zone.sql b/db/changes/10031-zone/00-zone.sql deleted file mode 100644 index f7b6da53e..000000000 --- a/db/changes/10031-zone/00-zone.sql +++ /dev/null @@ -1,2533 +0,0 @@ --- Kkear agencyHourGetShipped --------------------------------------------------------------- - -USE `vn`; -DROP procedure IF EXISTS `vn`.`agencyHourGetShipped`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetShippedKk`(vLanded DATE, vAddressFk INT, vAgencyFk INT) -BEGIN -/** - * DEPRECATED usar zoneGetShipped - * Devuelve las posibles fechas de envío de un ticket - * - * @param vLanded La fecha de recepcion - * @param vAddressFk Id del consignatario - * @param vAgencyFk Id de la agencia - * @return tmp.agencyHourGetShipped - */ - DECLARE vDone BOOL; - DECLARE vWarehouseFk SMALLINT; - - DECLARE vCur CURSOR FOR - SELECT w.id warehouseFk - FROM vn.warehouse w - WHERE w.hasAvailable; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; - CREATE TEMPORARY TABLE tmp.agencyHourGetShipped - ( - warehouseFk TINYINT NOT NULL PRIMARY KEY, - shipped DATE NOT NULL, - landed DATE NOT NULL - ) - ENGINE = MEMORY; - - OPEN vCur; - - l: LOOP - SET vDone = FALSE; - FETCH vCur INTO vWarehouseFk; - - IF vDone THEN - LEAVE l; - END IF; - INSERT INTO tmp.agencyHourGetShipped (warehouseFk, shipped, landed) - SELECT vWarehouseFk, shipping, vLanded FROM ( - SELECT TIMESTAMPADD(DAY, -ah.substractDay, vLanded) shipping, ah.maxHour - FROM agencyHour ah - LEFT JOIN address a ON a.id = vAddressFk - WHERE ah.warehouseFk = vWarehouseFk - AND (weekDay = WEEKDAY(vLanded) - OR weekDay IS NULL) - AND (ah.agencyFk = vAgencyFk - OR ah.agencyFk IS NULL) - AND (ah.provinceFk = a.provinceFk - OR ah.provinceFk IS NULL - OR vAddressFk IS NULL) - ORDER BY ( - (ah.weekDay IS NOT NULL) + - (ah.agencyFk IS NOT NULL) + - ((ah.provinceFk IS NOT NULL) * 3) - ) DESC - LIMIT 1 - ) t - WHERE t.shipping >= CURDATE() - AND IF(t.shipping = CURDATE(), t.maxHour > HOUR(NOW()), TRUE); - END LOOP; - - CLOSE vCur; -END$$ - -DELIMITER ; -; - --- ticketCalculateClon----------------------------------------------------------------------- -USE `vn`; -DROP procedure IF EXISTS `ticketCalculateClon`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateClon`(IN vTicketNew INT, vTicketOld INT) -BEGIN - /* - * @vTicketNew id del nuevo ticket clonado - * @vTicketOld id ticket original, a partir del qual se clonara el nuevo - * Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo - */ - DECLARE vShipped DATE; - DECLARE vClient INT; - DECLARE vWarehouse SMALLINT; - DECLARE vAgencyMode INT; - DECLARE vAddress INT; - DECLARE vLanded DATE; - DECLARE vAgency INT; - - REPLACE INTO orderTicket(orderFk,ticketFk) - SELECT orderFk, vTicketNew - FROM orderTicket - WHERE ticketFk = vTicketOld; - - SELECT t.clientFk, t.warehouseFk, date(t.shipped), t.addressFk, t.agencyModeFk, t.landed, a.agencyFk - INTO vClient, vWarehouse, vShipped, vAddress, vAgencyMode, vLanded, vAgency - FROM vn.agencyMode a - JOIN vn.ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicketNew; - - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetShipped; - CALL zoneGetShippedWarehouse(vLanded, vAddress, vAgencyMode); - DELETE FROM tmp.zoneGetShipped WHERE warehouseFk <> vWarehouse; - - CALL buyUltimate(vWarehouse, vShipped); -- rellena la tabla tmp.buyUltimate con la ultima compra - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouse warehouseFk, NULL available, s.itemFk, bu.buyFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketOld GROUP BY s.itemFk; - - CALL ticketComponentCalculate(vAddress,vAgencyMode); - - -- Bionizamos lineas con Preu = 0 - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, vWarehouse warehouseFk - FROM sale s - JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew AND s.price = 0; - - CALL ticketComponentUpdateSale(1); - - -- Bionizamos lineas con Preu > 0 - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT s.id saleFk, vWarehouse warehouseFk - FROM sale s - JOIN ticket t on t.id = s.ticketFk WHERE s.ticketFk = vTicketNew - AND s.price > 0; - - CALL ticketComponentUpdateSale(6); - - IF vLanded IS NULL THEN - CALL zoneGetLanded(vShipped, vAddress, vAgency,vWarehouse); - UPDATE ticket t - JOIN tmp.zoneGetLanded zgl ON t.warehouseFk = zgl.warehouseFk - SET t.landed = zgl.landed - WHERE t.id = vTicketNew; - END IF; - - -- Log - CALL `logAdd`(vTicketNew, 'update', ' ticket' , 'Bioniza Ticket'); - - -- Limpieza - DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate; - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetLanded; -END$$ - -DELIMITER ; --- ------------------------------------------------------------------------------------------ - -DROP VIEW IF EXISTS `vn`.`agencyWeekDayBonus` ; - -DROP VIEW IF EXISTS `vn`.`agencyHour` ; - -ALTER TABLE `vn2008`.`agency_weekday_bonus` -RENAME TO `vn2008`.`agency_weekday_bonusKk` ; - -ALTER TABLE `vn2008`.`preparation_percentage` -RENAME TO `vn2008`.`preparation_percentageKk` ; - -DROP VIEW IF EXISTS `vn`.`preparationPercentage` ; - -ALTER TABLE `vn2008`.`agency_hour` -RENAME TO `vn2008`.`agency_hourKk` ; - - --- clonWeeklyTickets----------------------------------------------------------------------- -USE `vn2008`; -DROP procedure IF EXISTS `clonWeeklyTickets`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `clonWeeklyTickets`(IN vWeek INT) -BEGIN - DECLARE done BIT DEFAULT 0; - DECLARE vLanding DATE; - DECLARE vShipment DATE; - DECLARE vWarehouse INT; - DECLARE vTicket INT; - DECLARE vWeekDay INT; - DECLARE vClient INT; - DECLARE vEmpresa INT; - DECLARE vConsignatario INT; - DECLARE vAgencia INT; - DECLARE vNewTicket INT; - DECLARE vYear INT; - - DECLARE rsTicket CURSOR FOR - SELECT tt.Id_Ticket, weekDay, Id_Cliente, warehouse_id, empresa_id, Id_Consigna, Id_Agencia - FROM Tickets_turno tt - JOIN Tickets t ON tt.Id_Ticket = t.Id_Ticket; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; - - SET done = 0; - SET vYear = YEAR(CURDATE()) + IF(vWeek < WEEK(CURDATE()),1, 0); - - OPEN rsTicket; - - FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; - - WHILE NOT done DO - - SELECT date INTO vShipment - FROM time - WHERE year = vYear AND week = vWeek - AND WEEKDAY(date) = vWeekDay; - - -- busca si el ticket ya ha sido clonado - IF (select count(*) FROM Tickets t JOIN ticket_observation tob ON t.Id_Ticket = tob.Id_Ticket - WHERE Id_Consigna = vConsignatario AND Fecha = vShipment AND tob.text LIKE CONCAT('%',vTicket,'%')) = 0 - THEN - - IF (SELECT COUNT(*) FROM Agencias WHERE Id_Agencia = vAgencia AND Agencia LIKE '%turno%') THEN - SET vAgencia = NULL; - END IF; - - CALL vn.ticketCreate(vClient, vShipment, vWarehouse, vEmpresa, vConsignatario, vAgencia, NULL, vLanding, vNewTicket); - - INSERT INTO Movimientos (Id_Ticket, Id_Article, Concepte, Cantidad, Preu, Descuento, CostFixat, PrecioFijado) - SELECT vNewTicket, Id_Article, Concepte, Cantidad, Preu, Descuento, CostFixat, PrecioFijado - FROM Movimientos WHERE Id_Ticket = vTicket; - - INSERT INTO Ordenes (orden,datorden,datticket,codvendedor,codcomprador,cantidad,preciomax,preu,id_article,id_cliente,comentario, - ok, total,datcompra,ko,id_movimiento) - SELECT o.orden,o.datorden,vShipment,o.codvendedor,o.codcomprador,o.cantidad,o.preciomax,o.preu,o.id_article,o.id_cliente,o.comentario, - o.ok, o.total,o.datcompra,o.ko,m2.Id_Movimiento - FROM Movimientos m JOIN Ordenes o ON o.Id_Movimiento = m.Id_Movimiento - JOIN Movimientos m2 ON m.Concepte = m2.Concepte AND m.Cantidad = m2.Cantidad AND m.Id_Article = m2.Id_Article - WHERE m.Id_Ticket = vTicket AND m2.Id_Ticket = vNewTicket; - - INSERT INTO ticket_observation(Id_Ticket,observation_type_id,text) VALUES(vNewTicket,4,CONCAT('turno desde ticket: ',vTicket)) - ON DUPLICATE KEY UPDATE text = CONCAT(ticket_observation.text,VALUES(text),' '); - - INSERT INTO ticket_observation(Id_Ticket,observation_type_id,text) VALUES(vNewTicket,1,'ATENCION: Contiene lineas de TURNO') - ON DUPLICATE KEY UPDATE text = CONCAT(ticket_observation.text,VALUES(text),' '); - - CALL vn.ticketCalculateClon(vNewTicket, vTicket); - END IF; - FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; - - END WHILE; - - CLOSE rsTicket; - -END$$ - -DELIMITER ; - - --- ticketComponentCalculate----------------------------------------------------------------------- -USE `vn`; -DROP procedure IF EXISTS `ticketComponentCalculate`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentCalculate`( - vAddressFk INT, - vAgencyModeFk INT) -proc: BEGIN -/** - * Calcula los componentes de un ticket - * - * @param vAddressFk Id del consignatario - * @param vAgencyModeFk Id del modo de agencia - * @return tmp.ticketComponent(itemFk, warehouseFk, available, rate2, rate3, minPrice, - * packing, grouping, groupingMode, buyFk, typeFk) - * @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, grouping, price) - */ - - DECLARE vClientFk INT; - DECLARE vGeneralInflationCoefficient INT DEFAULT 1; - DECLARE vMinimumDensityWeight INT DEFAULT 167; - DECLARE vBoxFreightItem INT DEFAULT 71; - DECLARE vBoxVolume BIGINT; -- DEFAULT 138000; - DECLARE vSpecialPriceComponent INT DEFAULT 10; - DECLARE vDeliveryComponent INT DEFAULT 15; - DECLARE vRecoveryComponent INT DEFAULT 17; - DECLARE vSellByPacketComponent INT DEFAULT 22; - DECLARE vBuyValueComponent INT DEFAULT 28; - DECLARE vMarginComponent INT DEFAULT 29; - DECLARE vDiscountLastItemComponent INT DEFAULT 32; - DECLARE vExtraBaggedComponent INT DEFAULT 38; - DECLARE vManaAutoComponent INT DEFAULT 39; - - - SELECT volume INTO vBoxVolume - FROM vn.packaging - WHERE id = '94'; - - SELECT clientFk INTO vClientFK - FROM address - WHERE id = vAddressFk; - - SET @rate2 := 0; - SET @rate3 := 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate; - CREATE TEMPORARY TABLE tmp.ticketComponentCalculate - (PRIMARY KEY (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT - tl.itemFk, tl.warehouseFk, tl.available, - IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2, - IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3, - IFNULL(pf.rate3, 0) AS minPrice, - IFNULL(pf.packing, b.packing) packing, - IFNULL(pf.`grouping`, b.`grouping`) grouping, - ABS(IFNULL(pf.box, b.groupingMode)) groupingMode, - tl.buyFk, i.typeFk - FROM tmp.ticketLot tl - JOIN buy b ON b.id = tl.buyFk - JOIN item i ON i.id = tl.itemFk - JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk - LEFT JOIN ( - SELECT * FROM ( - SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, aho.warehouseFk - FROM priceFixed pf - JOIN tmp.zoneGetShipped aho ON pf.warehouseFk = aho.warehouseFk OR pf.warehouseFk = 0 - WHERE aho.shipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC - ) tpf - GROUP BY tpf.itemFk, tpf.warehouseFk - ) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk - WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.display <> 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent; - CREATE TEMPORARY TABLE tmp.ticketComponent ( - `warehouseFk` INT UNSIGNED NOT NULL, - `itemFk` INT NOT NULL, - `componentFk` INT UNSIGNED NOT NULL, - `cost` DECIMAL(10,4) NOT NULL, - INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC), - UNIQUE INDEX `itemWarehouseComponent` (`itemFk` ASC, `warehouseFk` ASC, `componentFk` ASC)); - - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vBuyValueComponent, - b.buyingValue + b.freightValue + b.packageValue + b.comissionValue - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vMarginComponent, - tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase; - CREATE TEMPORARY TABLE tmp.ticketComponentBase ENGINE = MEMORY - SELECT tc.itemFk, ROUND(SUM(tc.cost), 4) AS base, tc.warehouseFk - FROM tmp.ticketComponent tc - GROUP BY tc.itemFk, warehouseFk; - - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, tcb.itemFk, vRecoveryComponent, ROUND(tcb.base * LEAST(cr.recobro, 0.25), 3) - FROM tmp.ticketComponentBase tcb - JOIN bi.claims_ratio cr ON cr.Id_Cliente = vClientFk - WHERE cr.recobro > 0.009; - - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, tcb.itemFk, vManaAutoComponent, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto - FROM tmp.ticketComponentBase tcb - JOIN `client` c on c.id = vClientFk - JOIN bs.mana_spellers ms ON c.salesPersonFk = ms.Id_Trabajador - WHERE ms.prices_modifier_activated - HAVING manaAuto <> 0; - - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, - tcb.itemFk, - cr.id, - GREATEST(IFNULL(ROUND(tcb.base * cr.tax, 4), 0), tcc.minPrice - tcc.rate3) - FROM tmp.ticketComponentBase tcb - JOIN componentRate cr - JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk - LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - WHERE cr.id = vDiscountLastItemComponent AND cr.tax <> 0 AND tcc.minPrice < tcc.rate3 AND sp.value IS NULL; - - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, tcc.itemFk, vSellByPacketComponent, tcc.rate2 - tcc.rate3 - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk - LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - WHERE sp.value IS NULL; - - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFK, - tcc.itemFk, - vDeliveryComponent, - vGeneralInflationCoefficient - * ROUND(( - i.compression - * r.cm3 - * IF(am.deliveryMethodFk = 1, (GREATEST(i.density, vMinimumDensityWeight) / vMinimumDensityWeight), 1) - * IFNULL((z.price - z.bonus) - * 1/*amz.inflation*/, 50)) / vBoxVolume, 4 - ) cost - FROM tmp.ticketComponentCalculate tcc - JOIN item i ON i.id = tcc.itemFk - JOIN agencyMode am ON am.id = vAgencyModeFk - JOIN `address` a ON a.id = vAddressFk - JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = tcc.warehouseFk - JOIN zone z ON z.id = zgs.id - LEFT JOIN bi.rotacion r ON r.warehouse_id = tcc.warehouseFk - AND r.Id_Article = tcc.itemFk - HAVING cost <> 0; - - IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = vAddressFk) THEN - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, b.itemFk, vExtraBaggedComponent, ap.packagingValue cost - FROM tmp.ticketComponentCalculate tcc - JOIN vn.addressForPackaging ap - WHERE ap.addressFk = vAddressFk; - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; - CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY - SELECT * FROM tmp.ticketComponent; - - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, - tcc.itemFk, - vSpecialPriceComponent, - sp.value - SUM(tcc.cost) sumCost - FROM tmp.ticketComponentCopy tcc - JOIN componentRate cr ON cr.id = tcc.componentFk - JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk - WHERE cr.classRate IS NULL - GROUP BY tcc.itemFk, tcc.warehouseFk - HAVING ABS(sumCost) > 0.001; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentSum; - CREATE TEMPORARY TABLE tmp.ticketComponentSum - (INDEX (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT SUM(cost) sumCost, tc.itemFk, tc.warehouseFk, cr.classRate - FROM tmp.ticketComponent tc - JOIN componentRate cr ON cr.id = tc.componentFk - GROUP BY tc.itemFk, tc.warehouseFk, cr.classRate; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate; - CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY - SELECT tcc.warehouseFk, - tcc.itemFk, - 1 rate, - IF(tcc.groupingMode = 1, tcc.`grouping`, 1) grouping, - CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) price - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 1) = 1 - AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0) - GROUP BY tcs.warehouseFk, tcs.itemFk; - - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, grouping, price) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 2 rate, - tcc.packing grouping, - SUM(tcs.sumCost) price - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 - AND tcc.packing > 0 AND tcc.available >= tcc.packing) - GROUP BY tcs.warehouseFk, tcs.itemFk; - - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, grouping, price) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 3 rate, - tcc.available grouping, - SUM(tcs.sumCost) price - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 3) = 3 - GROUP BY tcs.warehouseFk, tcs.itemFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentPrice; - CREATE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY - SELECT * FROM ( - SELECT * FROM tmp.ticketComponentRate ORDER BY price - ) t - GROUP BY itemFk, warehouseFk, `grouping`; - - DROP TEMPORARY TABLE - tmp.ticketComponentCalculate, - tmp.ticketComponentSum, - tmp.ticketComponentBase, - tmp.ticketComponentRate, - tmp.ticketComponentCopy; -END$$ - -DELIMITER ; - --- bionic_calc_clon----------------------------------------------------------------------- - - -USE `vn2008`; -DROP procedure IF EXISTS `vn2008`.`bionic_calc_clon`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clonKk`(IN v_ticket BIGINT) -BEGIN - -/* -* DEPRECATED vn.ticketCalculateClon -* -Este procedimiento "rebioniza" una linea, eliminando los componentes existentes e insertandolos de nuevo -*/ - DECLARE v_shipment DATE; - DECLARE v_customer INT; - DECLARE v_wh SMALLINT; - DECLARE v_agencia INT; - DECLARE v_consigna INT; - DECLARE v_landing DATE; - DECLARE v_agency INT; - - REPLACE order_Tickets(order_id,Id_Ticket) VALUES(48, v_ticket); - - SELECT t.Id_Cliente , t.warehouse_id, date(t.Fecha), t.Id_Consigna, t.Id_Agencia, t.landing, a.agency_id - INTO v_customer, v_wh, v_shipment, v_consigna, v_agencia, v_landing, v_agency - FROM vn2008.Agencias a - JOIN vn2008.Tickets t ON t.Id_Agencia = a.Id_Agencia - WHERE t.Id_Ticket = v_ticket; - - DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; - CREATE TEMPORARY TABLE tmp.agencyHourGetShipped ENGINE = MEMORY - SELECT v_wh warehouseFk, v_shipment shipped, v_landing landed; - - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra - - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; - CREATE TEMPORARY TABLE tmp.bionic_lot - SELECT v_wh warehouse_id,NULL available, - m.Id_Article item_id,ilb.buy_id - FROM Movimientos m - LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article - WHERE m.Id_Ticket = v_ticket GROUP BY m.Id_Article; - - CALL bionic_calc_component(v_consigna,v_agencia); - - -- Bionizamos lineas con Preu = 0 - DROP TEMPORARY TABLE IF EXISTS tmp.movement; - CREATE TEMPORARY TABLE tmp.movement - (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY - SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m - JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu = 0; - - CALL bionic_movement_update(1); - - -- Bionizamos lineas con Preu > 0 - DROP TEMPORARY TABLE IF EXISTS tmp.movement; - CREATE TEMPORARY TABLE tmp.movement - (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY - SELECT Id_Movimiento, v_wh warehouse_id FROM Movimientos m - JOIN Tickets t on t.Id_Ticket = m.Id_Ticket WHERE m.Id_Ticket = v_ticket AND Preu > 0; - CALL bionic_movement_update(6); - - IF v_landing IS NULL THEN - CALL travel_tree_shipment(v_shipment, v_consigna, v_agency,v_wh); - UPDATE Tickets t - JOIN travel_tree_shipment tts ON t.warehouse_id = tts.warehouse_id - SET t.landing = tts.landing - WHERE Id_Ticket = v_ticket; - END IF; - - -- Log - call Ditacio(v_ticket - ,'Bioniza Ticket' - ,'T' - , 20 - , 'proc bionic_calc_clon' - , NULL); - - -- Limpieza - DROP TEMPORARY TABLE t_item_last_buy; -END$$ - -DELIMITER ; - - --- bionic_calc_component----------------------------------------------------------------------- - - -USE `vn2008`; -DROP procedure IF EXISTS `vn2008`.`bionic_calc_component`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component`(IN `v_consigna` INT, IN `v_agencia` INT) -proc: BEGIN - - DECLARE v_customer INT; - DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.0; - DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; - DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT; -- DEFAULT 138000; - -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; - - SELECT Volumen INTO VOLUMEN_CAJA_VERDNATURA - FROM Cubos - WHERE Id_Cubo = '94'; - - SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; - SET @rate2 := 0; - SET @rate3 := 0; - - DROP TEMPORARY TABLE IF EXISTS t_bionic_temp; - CREATE TEMPORARY TABLE t_bionic_temp - (PRIMARY KEY (item_id,warehouse_id)) - ENGINE = MEMORY - SELECT - b.item_id, b.warehouse_id,available, - IF((@rate2 := IFNULL(pf.rate_2,c.Tarifa2)) < a.PVP AND a.`Min`, a.PVP, @rate2) * 1.0 rate_2, - IF((@rate3 := IFNULL(pf.rate_3,c.Tarifa3)) < a.PVP AND a.`Min`, a.PVP, @rate3) * 1.0 rate_3, - ifnull(pf.rate_3,0) AS min_price, - IFNULL(pf.Packing,c.Packing) packing, - IFNULL(pf.`grouping`,c.`grouping`) `grouping`, - ABS(IFNULL(pf.caja,c.caja)) box, - b.buy_id, a.tipo_id - FROM tmp.bionic_lot b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra - JOIN vn2008.Articles a ON b.item_id = a.Id_Article - JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id - LEFT JOIN vn2008.reinos r ON r.id = t.reino_id - LEFT JOIN vn2008.PreciosEspeciales p ON a.Id_Article = p.Id_Article AND p.Id_Cliente = v_customer - LEFT JOIN ( - SELECT * FROM ( - SELECT p.item_id, p.`grouping`, p.Packing, p.caja, p.rate_2, p.rate_3, zgs.warehouseFk AS warehouse_id - FROM vn2008.price_fixed p - JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = p.warehouse_id OR p.warehouse_id = 0 - WHERE zgs.shipped BETWEEN p.date_start AND p.date_end ORDER BY p.item_id, p.warehouse_id DESC - ) t - GROUP BY item_id, warehouse_id - ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id - -- descartamos articulos con coste menor de 0.01 - WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; - - -- Creamos la tabla tmp.bionic_component - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; - CREATE TEMPORARY TABLE tmp.bionic_component LIKE - template_bionic_component; - - -- Componentes del precio, valores absolutos - INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) - SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - - INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) - SELECT b.warehouse_id, b.item_id, 28, Costefijo + Portefijo + Embalajefijo + Comisionfija - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - - -- Ahora los valores en funcion de la base - - DROP TEMPORARY TABLE IF EXISTS t_components_base; - - CREATE TEMPORARY TABLE t_components_base - SELECT bc.item_id, ROUND(SUM(cost), 4) AS base, bc.warehouse_id - FROM tmp.bionic_component bc - GROUP BY bc.item_id,warehouse_id; - - -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge - - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) - FROM t_components_base cb - JOIN bi.claims_ratio ON Id_Cliente = v_customer - WHERE recobro > 0.009; - - -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. - - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, 39, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto - FROM t_components_base cb - JOIN Clientes c on c.Id_Cliente = v_customer - JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador - WHERE ms.prices_modifier_activated - AND c.Id_Trabajador != 196 -- Ruben Espinosa - HAVING manaAuto <> 0 ; - - -/* - -- Vendedor variable - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) - FROM t_components_base cb - JOIN bi.tarifa_componentes - WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; - */ - - --- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL - -- Descuento por ultimas unidades - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) - FROM t_components_base cb - JOIN bi.tarifa_componentes - JOIN t_bionic_temp b ON b.item_id = cb.item_id AND b.warehouse_id = cb.warehouse_id - LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; - - -- Incremento por paquete suelto - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra - LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE PrecioEspecial IS NULL; - --- ******* Fin Bloque para componentes con tarifa_class diferente de NULL - - -- Reparto - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id - , b.item_id - , 15 - , COEFICIENTE_DE_INFLACION_GENERAL - * ROUND( - r.cm3 - * art.compression - * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) - * IFNULL(az.price - * az.inflacion ,50) - / VOLUMEN_CAJA_VERDNATURA, 4 - ) cost - FROM t_bionic_temp b - JOIN vn2008.Articles art ON art.Id_Article = b.item_id - JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia - JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna - JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id - LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id - HAVING cost <> 0; - --- Reparto bonificado - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id - , b.item_id - , 41 - , COEFICIENTE_DE_INFLACION_GENERAL - * ROUND( - r.cm3 - * art.compression - * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) - * awb.bonus - * az.inflacion - / VOLUMEN_CAJA_VERDNATURA, 4 - ) cost - FROM t_bionic_temp b - JOIN vn2008.Articles art ON art.Id_Article = b.item_id - JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia - JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna - JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id - JOIN vn2008.agency_weekday_bonus awb ON awb.warehouse_id = az.warehouse_id AND awb.zona = az.zona AND a.agency_id = awb.agency_id - LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = awb.warehouse_id AND weekday(ah.landed) = awb.weekDay - HAVING cost <> 0 - LIMIT 1; - --- PAK 12-05-2015 - -- EMBOLSADO - IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN - - -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN - - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost - FROM t_bionic_temp b - JOIN vn.addressForPackaging ap - WHERE ap.addressFk = v_consigna; - - END IF; - - -- JGF 14-08-2015 - -- Modificacion de precio por dia de preparacion del pedido - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) - FROM t_components_base cb - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = cb.warehouse_id - LEFT JOIN vn2008.preparation_percentage pp ON pp.week_day = weekday(ah.shipped) AND cb.warehouse_id = IFNULL(pp.warehouse_id,cb.warehouse_id) - LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = ah.shipped AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) - WHERE IFNULL(pe.percentage,pp.percentage); - - -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; - CREATE TEMPORARY TABLE tmp.bionic_component_copy - SELECT * FROM tmp.bionic_component; - - -- JGF 19-01-2016 - -- Precios especiales - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost - FROM tmp.bionic_component_copy b - JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente - JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE t.tarifa_class IS NULL - GROUP BY b.item_id, b.warehouse_id - HAVING ABS(sum_cost) > 0.001; - - -- Lotes - DROP TEMPORARY TABLE IF EXISTS t_component_sum; - CREATE TEMPORARY TABLE t_component_sum - (INDEX (item_id, warehouse_id)) - ENGINE = MEMORY - SELECT SUM(cost) sum_cost, b.item_id, b.warehouse_id, t.tarifa_class - FROM tmp.bionic_component b - JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente - GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; - - -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas - -- Tarifa por unidad minima - DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; - CREATE TEMPORARY TABLE t_bionic_rate - ENGINE = MEMORY - SELECT b.warehouse_id, item_id, 1 rate, - IF(box = 1, `grouping`, 1) `grouping`, SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > `grouping` or box = 0) - GROUP BY warehouse_id, item_id; - - -- Tarifa por caja - INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) - SELECT b.warehouse_id, item_id, 2 rate, packing `grouping`, - SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) - GROUP BY warehouse_id, item_id; - - -- Tarifa para toda la cantidad disponible - INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) - SELECT b.warehouse_id, item_id, 3 rate, available `grouping`, - SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE IFNULL(cs.tarifa_class,3) = 3 - GROUP BY warehouse_id, item_id; - - -- ***** Fin Modifica t_bionic_rate las diferentes tarifas - - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; - CREATE TEMPORARY TABLE tmp.bionic_price - LIKE template_bionic_price; - - INSERT INTO tmp.bionic_price (warehouse_id, item_id, rate, `grouping`, price) - SELECT * FROM ( - SELECT * FROM t_bionic_rate ORDER BY price - ) t - GROUP BY item_id, warehouse_id, `grouping`; - - - DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; - CREATE TEMPORARY TABLE tmp.travel_tree - ENGINE = MEMORY - SELECT * FROM tmp.agencyHourGetShipped; - - -- Limpieza - - DROP TEMPORARY TABLE tmp.agencyHourGetShipped; - DROP TEMPORARY TABLE t_bionic_temp; - DROP TEMPORARY TABLE t_component_sum; - DROP TEMPORARY TABLE t_components_base; - DROP TEMPORARY TABLE t_bionic_rate; - DROP TEMPORARY TABLE tmp.bionic_component_copy; -END$$ - -DELIMITER ; - --- ALTER TABLE `vn2008`.`Tickets`----------------------------------------------------------------------- -/* -ALTER TABLE `vn2008`.`Tickets` -ADD COLUMN `zoneFk` INT(11) NULL DEFAULT NULL AFTER `isDeleted`, -ADD INDEX `Tickets_zoneFk_fk_idx` (`zoneFk` ASC); -; -ALTER TABLE `vn2008`.`Tickets` -ADD CONSTRAINT `Tickets_zoneFk_fk` - FOREIGN KEY (`zoneFk`) - REFERENCES `vn`.`zone` (`id`) - ON DELETE RESTRICT - ON UPDATE CASCADE; -*/ - --- ticketCreateWithUser ----------------------------------------------------------------------- -USE `vn`; -DROP procedure IF EXISTS `ticketCreateWithUser`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreateWithUser`( - vClientId INT - ,vShipped DATE - ,vWarehouseFk INT - ,vCompanyFk INT - ,vAddressFk INT - ,vAgencyModeFk INT - ,vRouteFk INT - ,vlanded DATE - ,vUserId INT - ,OUT vNewTicket INT) -BEGIN - - DECLARE vCount INT; - - IF vClientId IS NULL THEN - CALL util.throw ('CLIENT_NOT_ESPECIFIED'); - END IF; - - IF NOT vAddressFk OR vAddressFk IS NULL THEN - SELECT id INTO vAddressFk - FROM address - WHERE clientFk = vClientId AND isDefaultAddress; - END IF; - - IF NOT vAgencyModeFk OR vAgencyModeFk IS NULL THEN - SELECT agencyModeFk INTO vAgencyModeFk - FROM address - WHERE clientFk = vClientId AND isDefaultAddress; - END IF; - - CALL vn.zoneGetLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk); - - SELECT COUNT(*) INTO vCount FROM tmp.zoneGetLanded - WHERE landed = vlanded; - - IF vCount IS NULL OR vCount = 0 THEN - CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS'); - END IF; - - INSERT INTO vn2008.Tickets ( - Id_Cliente, - Fecha, - Id_Consigna, - Id_Agencia, - Alias, - warehouse_id, - Id_Ruta, - empresa_id, - landing - ) - SELECT - vClientId, - vShipped, - a.id, - IF(vAgencyModeFk, vAgencyModeFk, a.agencyModeFk), - a.nickname, - vWarehouseFk, - IF(vRouteFk,vRouteFk,NULL), - vCompanyFk, - vlanded - FROM address a - JOIN agencyMode am ON am.id = a.agencyModeFk - WHERE a.id = vAddressFk; - - SET vNewTicket = LAST_INSERT_ID(); - - INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) - SELECT vNewTicket, ao.observationTypeFk, ao.description - FROM addressObservation ao - JOIN address a ON a.id = ao.addressFk - WHERE a.id = vAddressFk; - - -- CALL logAddWithUser(vNewTicket, vUserId, 'insert', 'ticket', CONCAT('Ha creado el ticket', ' ', vNewTicket)); - INSERT INTO vn.ticketLog - SET originFk = vNewTicket, userFk = vUserId, `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket); - - IF (SELECT ct.isCreatedAsServed FROM vn.clientType ct JOIN vn.client c ON c.typeFk = ct.code WHERE c.id = vClientId ) <> FALSE THEN - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, vNewTicket, getWorker() - FROM state - WHERE `code` = 'DELIVERED'; - END IF; -END$$ - -DELIMITER ; - --- hasZone ----------------------------------------------------------------------- - -USE `vn`; -DROP function IF EXISTS `hasZone`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` FUNCTION `hasZone`(vLanded DATE, vAddress INT, vAgencyModeFk INT) RETURNS tinyint(1) - DETERMINISTIC -BEGIN - DECLARE vHasZone BOOLEAN DEFAULT FALSE; - DECLARE vPostalCode varchar(10); - - SELECT postalCode INTO vPostalCode - FROM address WHERE id = vAddress; - - SELECT COUNT(*), id zoneFk, isIncluded INTO vHasZone, @trash, @trash FROM ( - SELECT z.id, - TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, - vLanded landed, - zi.isIncluded - FROM zoneGeo zgSon - JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt - JOIN zoneIncluded zi ON zi.geoFk = zgFather.id - JOIN zone z ON z.id = zi.zoneFk - JOIN zoneCalendar zc ON zc.zoneFk = z.id - AND zc.delivered = vLanded - AND z.agencyModeFk = vAgencyModeFk - AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) - ORDER BY z.id, landed ASC, zgFather.depth DESC) t - GROUP BY id - HAVING isIncluded > 0 LIMIT 1; - RETURN vHasZone; -END$$ - -DELIMITER ; - --- zoneGetShippedWarehouse ----------------------------------------------------------------------- - -USE `vn`; -DROP procedure IF EXISTS `zoneGetShippedWarehouse`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGetShippedWarehouse`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT) -BEGIN -/** - * Devuelve la mínima fecha de envío para cada warehouse - * - * @param vLanded La fecha de recepcion - * @param vAddressFk Id del consignatario - * @param vAgencyModeFk Id de la agencia - * @return tmp.zoneGetShipped - */ - - DECLARE vPostalCode varchar(10); - - SELECT postalCode INTO vPostalCode - FROM address WHERE id = vAddressFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetShipped; - CREATE TEMPORARY TABLE tmp.zoneGetShipped - ENGINE = MEMORY - SELECT * FROM ( - SELECT z.id, - TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, - zi.isIncluded,z.warehouseFk - FROM zoneGeo zgSon - JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt - JOIN zoneIncluded zi ON zi.geoFk = zgFather.id - JOIN zone z ON z.id = zi.zoneFk - JOIN zoneCalendar zc ON zc.zoneFk = z.id - WHERE zgSon.`name` LIKE vPostalCode - AND zc.delivered = vLanded - AND z.agencyModeFk = vAgencyModeFk - AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) - ORDER BY z.id, shipped ASC, zgFather.depth DESC) t - GROUP BY warehouseFk - HAVING isIncluded > 0; -END$$ - -DELIMITER ; - - --- bionic_calc ----------------------------------------------------------------------- - -USE `vn2008`; -DROP procedure IF EXISTS `bionic_calc`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc`( - vLanded DATE, - vAddress INT, - vAgency INT) -proc: BEGIN --- @DEPRECATED use vn.ticketCalculate - DECLARE vAvailableCalc INT; - DECLARE vShipped DATE; - DECLARE vCustomer INT; - DECLARE vWh SMALLINT; - DECLARE vDone BOOL; - DECLARE cTravelTree CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.zoneGetShippedWarehouse; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DROP TEMPORARY TABLE IF EXISTS - tmp.bionic_item, - tmp.bionic_component, - tmp.bionic_lot, - tmp.bionic_price; - - -- Establece los almacenes y las fechas que van a entrar al disponible - - SELECT Id_Cliente INTO vCustomer FROM Consignatarios WHERE Id_Consigna = vAddress; - - CALL vn.zoneGetShippedWarehouse(vLanded, vAddress, vAgency); - - -- Crea la tabla temporal que almacenará los lotes - - CREATE TEMPORARY TABLE tmp.bionic_lot LIKE - template_bionic_lot; - - OPEN cTravelTree; - - l: LOOP - SET vDone = FALSE; - FETCH cTravelTree INTO vWh, vShipped; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipped); - CALL item_last_buy_ (vWh, vShipped); - - INSERT INTO tmp.bionic_lot (warehouse_id, item_id, available, buy_id) - SELECT - vWh, - i.item_id, - IFNULL(i.available, 0), - ilb.buy_id - FROM `cache`.available i - JOIN tmp.bionic_calc br ON br.item_id = i.item_id - LEFT JOIN Articles a ON a.Id_Article = i.item_id - LEFT JOIN t_item_last_buy ilb ON ilb.item_id = i.item_id - WHERE i.calc_id = vAvailableCalc - AND a.Id_Article != 100 - AND i.available > 0; - - DROP TEMPORARY TABLE t_item_last_buy; - END LOOP; - - CLOSE cTravelTree; - - CALL bionic_calc_component(vAddress, vAgency); - - CREATE TEMPORARY TABLE tmp.bionic_item - ENGINE = MEMORY - SELECT b.item_id, SUM(b.available) available, p.name producer, - a.Article item, a.Medida size, a.Tallos stems, a.Categoria category, - a.Color, a.Foto image, o.Abreviatura origin, bl.min_price price - FROM tmp.bionic_lot b - JOIN Articles a ON b.item_id = a.Id_Article - LEFT JOIN producer p ON p.producer_id = a.producer_id AND p.visible - JOIN Origen o ON o.id = a.id_origen - JOIN ( - SELECT MIN(price) min_price, item_id - FROM tmp.bionic_price - GROUP BY item_id - ) bl ON bl.item_id = b.item_id - GROUP BY b.item_id; - - DROP TEMPORARY TABLE tmp.zoneGetShippedWarehouse; -END$$ - -DELIMITER ; - --- bionic_calc_component ----------------------------------------------------------------------- - -USE `vn2008`; -DROP procedure IF EXISTS `bionic_calc_component`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component`(IN `v_consigna` INT, IN `v_agencia` INT) -proc: BEGIN - - DECLARE v_customer INT; - DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.0; - DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; - DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT; -- DEFAULT 138000; - -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; - - SELECT Volumen INTO VOLUMEN_CAJA_VERDNATURA - FROM Cubos - WHERE Id_Cubo = '94'; - - SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; - SET @rate2 := 0; - SET @rate3 := 0; - - DROP TEMPORARY TABLE IF EXISTS t_bionic_temp; - CREATE TEMPORARY TABLE t_bionic_temp - (PRIMARY KEY (item_id,warehouse_id)) - ENGINE = MEMORY - SELECT - b.item_id, b.warehouse_id,available, - IF((@rate2 := IFNULL(pf.rate_2,c.Tarifa2)) < a.PVP AND a.`Min`, a.PVP, @rate2) * 1.0 rate_2, - IF((@rate3 := IFNULL(pf.rate_3,c.Tarifa3)) < a.PVP AND a.`Min`, a.PVP, @rate3) * 1.0 rate_3, - ifnull(pf.rate_3,0) AS min_price, - IFNULL(pf.Packing,c.Packing) packing, - IFNULL(pf.`grouping`,c.`grouping`) `grouping`, - ABS(IFNULL(pf.caja,c.caja)) box, - b.buy_id, a.tipo_id - FROM tmp.bionic_lot b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra - JOIN vn2008.Articles a ON b.item_id = a.Id_Article - JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id - LEFT JOIN vn2008.reinos r ON r.id = t.reino_id - LEFT JOIN vn2008.PreciosEspeciales p ON a.Id_Article = p.Id_Article AND p.Id_Cliente = v_customer - LEFT JOIN ( - SELECT * FROM ( - SELECT p.item_id, p.`grouping`, p.Packing, p.caja, p.rate_2, p.rate_3, zgs.warehouseFk AS warehouse_id - FROM vn2008.price_fixed p - JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = p.warehouse_id OR p.warehouse_id = 0 - WHERE zgs.shipped BETWEEN p.date_start AND p.date_end ORDER BY p.item_id, p.warehouse_id DESC - ) t - GROUP BY item_id, warehouse_id - ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id - -- descartamos articulos con coste menor de 0.01 - WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; - - -- Creamos la tabla tmp.bionic_component - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; - CREATE TEMPORARY TABLE tmp.bionic_component LIKE - template_bionic_component; - - -- Componentes del precio, valores absolutos - INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) - SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - - INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) - SELECT b.warehouse_id, b.item_id, 28, Costefijo + Portefijo + Embalajefijo + Comisionfija - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - - -- Ahora los valores en funcion de la base - - DROP TEMPORARY TABLE IF EXISTS t_components_base; - - CREATE TEMPORARY TABLE t_components_base - SELECT bc.item_id, ROUND(SUM(cost), 4) AS base, bc.warehouse_id - FROM tmp.bionic_component bc - GROUP BY bc.item_id,warehouse_id; - - -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge - - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) - FROM t_components_base cb - JOIN bi.claims_ratio ON Id_Cliente = v_customer - WHERE recobro > 0.009; - - -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. - - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, 39, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto - FROM t_components_base cb - JOIN Clientes c on c.Id_Cliente = v_customer - JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador - WHERE ms.prices_modifier_activated - AND c.Id_Trabajador != 196 -- Ruben Espinosa - HAVING manaAuto <> 0 ; - - -/* - -- Vendedor variable - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) - FROM t_components_base cb - JOIN bi.tarifa_componentes - WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; - */ - - --- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL - -- Descuento por ultimas unidades - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) - FROM t_components_base cb - JOIN bi.tarifa_componentes - JOIN t_bionic_temp b ON b.item_id = cb.item_id AND b.warehouse_id = cb.warehouse_id - LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; - - -- Incremento por paquete suelto - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra - LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE PrecioEspecial IS NULL; - --- ******* Fin Bloque para componentes con tarifa_class diferente de NULL - - -- Reparto - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id - , b.item_id - , 15 - , COEFICIENTE_DE_INFLACION_GENERAL - * ROUND( - r.cm3 - * art.compression - * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) - * IFNULL(az.price - * az.inflacion ,50) - / VOLUMEN_CAJA_VERDNATURA, 4 - ) cost - FROM t_bionic_temp b - JOIN vn2008.Articles art ON art.Id_Article = b.item_id - JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia - JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna - JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id - LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id - HAVING cost <> 0; - --- Reparto bonificado - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id - , b.item_id - , 41 - , COEFICIENTE_DE_INFLACION_GENERAL - * ROUND( - r.cm3 - * art.compression - * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) - -- * awb.bonus - * az.inflacion - / VOLUMEN_CAJA_VERDNATURA, 4 - ) cost - FROM t_bionic_temp b - JOIN vn2008.Articles art ON art.Id_Article = b.item_id - JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia - JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna - JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id - -- JOIN vn2008.agency_weekday_bonus awb ON awb.warehouse_id = az.warehouse_id AND awb.zona = az.zona AND a.agency_id = awb.agency_id - LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = awb.warehouse_id AND weekday(ah.landed) = awb.weekDay - HAVING cost <> 0 - LIMIT 1; - --- PAK 12-05-2015 - -- EMBOLSADO - IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN - - -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN - - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost - FROM t_bionic_temp b - JOIN vn.addressForPackaging ap - WHERE ap.addressFk = v_consigna; - - END IF; - - -- JGF 14-08-2015 - -- Modificacion de precio por dia de preparacion del pedido - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) - FROM t_components_base cb - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = cb.warehouse_id - LEFT JOIN vn2008.preparation_percentage pp ON pp.week_day = weekday(ah.shipped) AND cb.warehouse_id = IFNULL(pp.warehouse_id,cb.warehouse_id) - LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = ah.shipped AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) - WHERE IFNULL(pe.percentage,pp.percentage); - - -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; - CREATE TEMPORARY TABLE tmp.bionic_component_copy - SELECT * FROM tmp.bionic_component; - - -- JGF 19-01-2016 - -- Precios especiales - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost - FROM tmp.bionic_component_copy b - JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente - JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE t.tarifa_class IS NULL - GROUP BY b.item_id, b.warehouse_id - HAVING ABS(sum_cost) > 0.001; - - -- Lotes - DROP TEMPORARY TABLE IF EXISTS t_component_sum; - CREATE TEMPORARY TABLE t_component_sum - (INDEX (item_id, warehouse_id)) - ENGINE = MEMORY - SELECT SUM(cost) sum_cost, b.item_id, b.warehouse_id, t.tarifa_class - FROM tmp.bionic_component b - JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente - GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; - - -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas - -- Tarifa por unidad minima - DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; - CREATE TEMPORARY TABLE t_bionic_rate - ENGINE = MEMORY - SELECT b.warehouse_id, item_id, 1 rate, - IF(box = 1, `grouping`, 1) `grouping`, SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > `grouping` or box = 0) - GROUP BY warehouse_id, item_id; - - -- Tarifa por caja - INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) - SELECT b.warehouse_id, item_id, 2 rate, packing `grouping`, - SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) - GROUP BY warehouse_id, item_id; - - -- Tarifa para toda la cantidad disponible - INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) - SELECT b.warehouse_id, item_id, 3 rate, available `grouping`, - SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE IFNULL(cs.tarifa_class,3) = 3 - GROUP BY warehouse_id, item_id; - - -- ***** Fin Modifica t_bionic_rate las diferentes tarifas - - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; - CREATE TEMPORARY TABLE tmp.bionic_price - LIKE template_bionic_price; - - INSERT INTO tmp.bionic_price (warehouse_id, item_id, rate, `grouping`, price) - SELECT * FROM ( - SELECT * FROM t_bionic_rate ORDER BY price - ) t - GROUP BY item_id, warehouse_id, `grouping`; - - - DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; - CREATE TEMPORARY TABLE tmp.travel_tree - ENGINE = MEMORY - SELECT * FROM tmp.agencyHourGetShipped; - - -- Limpieza - - DROP TEMPORARY TABLE tmp.agencyHourGetShipped; - DROP TEMPORARY TABLE t_bionic_temp; - DROP TEMPORARY TABLE t_component_sum; - DROP TEMPORARY TABLE t_components_base; - DROP TEMPORARY TABLE t_bionic_rate; - DROP TEMPORARY TABLE tmp.bionic_component_copy; -END$$ - -DELIMITER ; - -/* -- bionic_from_ticket ----------------------------------------------------------------------- -USE `vn2008`; -DROP procedure IF EXISTS `bionic_from_ticket`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_ticket`( - -- DEPRECATED use vn.ticketComponentPreview - vLanded DATE, -- fecha de recepcion de mercancia - v_consigna INT, - v_agencia INT, - v_ticket INT) -BEGIN - DECLARE vWarehouseFk INT; - DECLARE vShipped DATE; - - SELECT warehouse_id INTO vWarehouseFk FROM Tickets WHERE Id_Ticket = v_ticket; - - CALL bionic_free(); - CALL vn.zoneGetShippedWarehouse(vLanded,v_consigna, v_agencia); - - SELECT shipped INTO vShipped FROM tmp.zoneGetShipped WHERE warehouseFk = vWarehouseFk; - - CALL item_last_buy_ (vWarehouseFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; - CREATE TEMPORARY TABLE tmp.bionic_lot - SELECT ilb.warehouse_id, NULL available, - m.Id_Article item_id, ilb.buy_id - FROM Movimientos m - LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article - WHERE m.Id_Ticket = v_ticket - AND m.Id_Article != 100 - GROUP BY warehouse_id, item_id; - - DROP TEMPORARY TABLE t_item_last_buy; - - CALL bionic_calc_component ( v_consigna, v_agencia); - - REPLACE INTO tmp.bionic_component (warehouse_id, item_id, component_id, cost) - SELECT t.warehouse_id, m.Id_Article, mc.Id_Componente, mc.Valor - FROM Movimientos_componentes mc - JOIN Movimientos m ON m.Id_Movimiento = mc.Id_Movimiento - JOIN Tickets t ON t.Id_Ticket = m.Id_Ticket - JOIN tarifa_componentes tc ON tc.Id_componente = mc.Id_Componente - WHERE m.Id_Ticket = v_ticket AND tc.is_renewable = FALSE; - - -- para recuperar el shipment en caso de que se necesite - - SET @shipment = vShipped; - DROP TEMPORARY TABLE tmp.bionic_lot; - - IF IFNULL(vShipped,CURDATE() - 1) < CURDATE() THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'No se puede realizar el cambio'; - END IF; -END$$ - -DELIMITER ; - */ --- ticketCalculate ---------------------------------------------------------------------- - -USE `vn`; -DROP procedure IF EXISTS `ticketCalculate`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculate`( - vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT) -proc: BEGIN -/** - * Calcula los articulos disponibles y sus precios - * - * @table tmp.item(itemFk) Listado de artículos a calcular - * @param vLanded Fecha de recepcion de mercancia - * @param vAddressFk Id del consignatario - * @param vAgencyModeFk Id de la agencia - * @return tmp.ticketCalculateItem(itemFk, available, producer, - * item, size, stems, category, inkFk, image, origin, price) - * @return tmp.ticketLot(warehouseFk, itemFk, available, buyFk) - * @return tmp.ticketComponent - * @return tmp.ticketComponentPrice - * @return tmp.zoneGetShipped - - **/ - - DECLARE vAvailableCalc INT; - DECLARE vShipment DATE; - DECLARE vClient INT; - DECLARE vWarehouseFk SMALLINT; - DECLARE vDone BOOL; - DECLARE cTravelTree CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.zoneGetShipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Establece los almacenes y las fechas que van a entrar al disponible - - SELECT clientFk INTO vClient - FROM address WHERE id = vAddressFk; - - CALL vn.zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot( - `warehouseFk` smallint(5) unsigned NOT NULL, - `itemFk` int(11) NOT NULL, - `available` double DEFAULT NULL, - `buyFk` int(11) DEFAULT NULL, - `fix` tinyint(3) unsigned DEFAULT '0', - KEY `itemFk` (`itemFk`), - KEY `item_warehouse` (`itemFk`,`warehouseFk`) USING HASH - ) ENGINE=MEMORY DEFAULT CHARSET=utf8; - - OPEN cTravelTree; - - l: LOOP - SET vDone = FALSE; - FETCH cTravelTree INTO vWarehouseFk, vShipment; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWarehouseFk, vShipment); - CALL buyUltimate (vWarehouseFk, vShipment); - - INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk) - SELECT vWarehouseFk, - i.item_id, - IFNULL(i.available, 0), - bu.buyFk - FROM `cache`.available i - JOIN tmp.item br ON br.itemFk = i.item_id - LEFT JOIN item it ON it.id = i.item_id - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = i.item_id - WHERE i.calc_id = vAvailableCalc - AND it.id != 100 - AND i.available > 0; - - DROP TEMPORARY TABLE tmp.buyUltimate; - END LOOP; - - CLOSE cTravelTree; - - CALL vn.ticketComponentCalculate(vAddressFk, vAgencyModeFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketCalculateItem; - CREATE TEMPORARY TABLE tmp.ticketCalculateItem - ENGINE = MEMORY - SELECT - b.itemFk, - SUM(b.available) available, - p.name producer, - i.name item, - i.size size, - i.stems, - i.category, - i.inkFk, - i.image, - o.code origin, bl.price - FROM tmp.ticketLot b - JOIN item i ON b.itemFk = i.id - LEFT JOIN producer p ON p.id = i.producerFk AND p.isVisible - JOIN origin o ON o.id = i.originFk - JOIN ( - SELECT MIN(price) price, itemFk - FROM tmp.ticketComponentPrice - GROUP BY itemFk - ) bl ON bl.itemFk = b.itemFk - GROUP BY b.itemFk; - -END$$ - -DELIMITER ; - --- ticketCalculateSale ---------------------------------------------------------------------- - -USE `vn`; -DROP procedure IF EXISTS `ticketCalculateSale`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSale`(IN vSale BIGINT) -proc: BEGIN - - DECLARE vShipped DATE; - DECLARE vWarehouse SMALLINT; - DECLARE vAgencyMode INT; - DECLARE vAddress INT; - DECLARE vTicket BIGINT; - DECLARE vItem BIGINT; - DECLARE vLanded DATE; - DECLARE vTicketFree BOOLEAN DEFAULT TRUE; - - SELECT FALSE - INTO vTicketFree - FROM vn.ticket t - JOIN vn.sale s ON s.ticketFk = t.id - LEFT JOIN vn.ticketState ts ON ts.ticketFk = t.id - WHERE s.id = vSale - AND (t.refFk != "" OR (ts.alertLevel > 0 AND s.price != 0)) - LIMIT 1; - - SELECT ticketFk, itemFk - INTO vTicket, vItem - FROM sale - WHERE id = vSale; - - SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.agencyModeFk, t.landed - INTO vWarehouse, vShipped, vAddress, vAgencyMode, vLanded - FROM agencyMode a - JOIN ticket t ON t.agencyModeFk = a.id - WHERE t.id = vTicket; - - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetShipped; - CREATE TEMPORARY TABLE tmp.zoneGetShipped ENGINE = MEMORY - SELECT vWarehouse warehouseFk, vShipped shipped, vLanded landed; - - CALL buyUltimate (vWarehouse, vShipped); - - DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouse warehouseFk, NULL available, vItem itemFk, buyFk - FROM tmp.buyUltimate - WHERE itemFk = vItem; - - CALL ticketComponentCalculate(vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouse warehouseFk; - - CALL ticketComponentUpdateSale(IF(vTicketFree,1,6)); - - INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) - VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); - - DROP TEMPORARY TABLE tmp.buyUltimate; -END$$ - -DELIMITER ; - --- zoneGetAgency --------------------------------------------------------------------------------- -USE `vn`; -DROP procedure IF EXISTS `zoneGetAgency`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `zoneGetAgency`(vAddress INT, vLanded DATE) -BEGIN -/** - * Devuelve el listado de agencias disponibles para la fecha - * y dirección pasadas. - * - * @param vAddress Id de dirección de envío, %NULL si es recogida - * @param vDate Fecha de recogida - * @select Listado de agencias disponibles - */ - - DECLARE vPostalCode varchar(10); - - SELECT postalCode INTO vPostalCode - FROM address WHERE id = vAddress; - - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetAgency; - CREATE TEMPORARY TABLE tmp.zoneGetAgency - (INDEX (agencyModeFk)) ENGINE = MEMORY - SELECT * FROM ( - SELECT am.id agencyModeFk, - am.name agencyMode, - am.description, - am.deliveryMethodFk, - TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, - zi.isIncluded, - z.warehouseFk - FROM zoneGeo zgSon - JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt - JOIN zoneIncluded zi ON zi.geoFk = zgFather.id - JOIN zone z ON z.id = zi.zoneFk - JOIN zoneCalendar zc ON zc.zoneFk = z.id - JOIN agencyMode am ON am.id = z.agencyModeFk - WHERE zgSon.`name` LIKE vPostalCode - AND zc.delivered = vLanded - AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) - ORDER BY zgFather.depth DESC) t - GROUP BY agencyModeFk - HAVING isIncluded > 0; - -END$$ - -DELIMITER ; - --- bionic_available_type_filters --------------------------------------------------------------------- -USE `vn2008`; -DROP procedure IF EXISTS `bionic_available_types_filter`; - -DELIMITER $$ - -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_filter`( - v_date DATE, - v_consigna INT, - v_agencia INT) -BEGIN -/** - * Este procedimiento devuelve una tabla t_bionic_available_types - * que debe de ser borrar por quien la llame, y se conecta con la tabla articlelist - * que tambien hay que eliminar. - * - * @param vDatefecha de recepcion de mercancia - * @table t_bionic_available_types - */ - - CALL vn.ticketCalculate(v_date, v_consigna, v_agencia); - - -- Introducimos los valores en una tabla temporal - DROP TEMPORARY TABLE IF EXISTS t_bionic_available_types; - - CALL check_table_existence('articlelist'); - - IF @table_exists THEN - call util.throw('No usar articlelist'); - -- SET v_list = 'JOIN vn2008.articlelist AL ON AL.Id_Article = a.Id_Article '; - END IF; - - CREATE TEMPORARY TABLE t_bionic_available_types - SELECT a.tipo_id, t.Tipo, r.reino, count(*) as item_count - FROM tmp.ticketCalculateItem tci - JOIN vn2008.Articles a ON tci.itemFk = a.Id_Article - JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id - JOIN vn2008.reinos r ON r.id = t.reino_id - WHERE tci.available > 0 - GROUP BY a.tipo_id; - - DROP TEMPORARY TABLE tmp.ticketCalculateItem; -END$$ - -DELIMITER ; --- ticketCalculateFromType --------------------------------------------------------------------- -USE `vn`; -DROP procedure IF EXISTS `ticketCalculateFromType`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateFromType`( vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT, - vTypeFk INT) -BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT id itemFk FROM vn.item - WHERE typeFk = vTypeFk; - - CALL ticketCalculate(vLanded, vAddressFk, vAgencyModeFk); - DROP TEMPORARY TABLE tmp.item; - DROP TEMPORARY TABLE tmp.ticketLot; - -END$$ - -DELIMITER ; - --- order_confirmWithUser` --------------------------------------------------------------------- - -USE `hedera`; -DROP PROCEDURE IF EXISTS `orderConfirm`; -DROP procedure IF EXISTS `order_confirm_bionic`; -DROP procedure IF EXISTS `orderConfirmWithUser`; - -DROP procedure IF EXISTS `order_confirmWithUser`; -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `order_confirmWithUser`(IN `vOrder` INT, IN `vUserId` INT) -BEGIN -/** - * Confirms an order, creating each of its tickets on the corresponding - * date, store and user. - * - * @param vOrder The order identifier - * @param vUser The user identifier - */ - DECLARE vOk BOOL; - DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vWarehouse INT; - DECLARE vShipment DATETIME; - DECLARE vTicket INT; - DECLARE vNotes VARCHAR(255); - DECLARE vItem INT; - DECLARE vConcept VARCHAR(30); - DECLARE vAmount INT; - DECLARE vPrice DECIMAL(10,2); - DECLARE vSale INT; - DECLARE vRate INT; - DECLARE vRowId INT; - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vIsConfirmed BOOL; - DECLARE vClientId INT; - DECLARE vCompanyId INT; - DECLARE vAgencyModeId INT; - - DECLARE TICKET_FREE INT DEFAULT 2; - DECLARE SYSTEM_WORKER INT DEFAULT 20; - - DECLARE cDates CURSOR FOR - SELECT zgs.shipped, r.warehouse_id - FROM `order` o - JOIN order_row r ON r.order_id = o.id - LEFT JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = r.warehouse_id - WHERE o.id = vOrder AND r.amount != 0 - GROUP BY r.warehouse_id; - - DECLARE cRows CURSOR FOR - SELECT r.id, r.item_id, a.Article, r.amount, r.price, r.rate - FROM order_row r - JOIN vn2008.Articles a ON a.Id_Article = r.item_id - WHERE r.amount != 0 - AND r.warehouse_id = vWarehouse - AND r.order_id = vOrder - ORDER BY r.rate DESC; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - -- Carga los datos del pedido - - SELECT o.date_send, o.address_id, o.note, - o.confirmed, cs.Id_Cliente, o.company_id, o.agency_id - INTO vDelivery, vAddress, vNotes, - vIsConfirmed, vClientId, vCompanyId, vAgencyModeId - FROM hedera.`order` o - JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = o.address_id - WHERE id = vOrder; - - -- Comprueba que el pedido no está confirmado - - IF vIsConfirmed THEN - CALL util.throw ('ORDER_ALREADY_CONFIRMED'); - END IF; - - -- Comprueba que el pedido no está vacío - - SELECT COUNT(*) > 0 INTO vOk - FROM order_row WHERE order_id = vOrder AND amount > 0; - - IF !vOk THEN - CALL util.throw ('ORDER_EMPTY'); - END IF; - - -- Carga las fechas de salida de cada almacén - - CALL vn.zoneGetShippedWarehouse (vDelivery, vAddress, vAgencyModeId); - - -- Trabajador que realiza la acción - - IF vUserId IS NULL THEN - SELECT employeeFk INTO vUserId FROM orderConfig; - END IF; - - -- Crea los tickets del pedido - - START TRANSACTION; - - OPEN cDates; - - lDates: - LOOP - SET vTicket = NULL; - SET vDone = FALSE; - FETCH cDates INTO vShipment, vWarehouse; - - IF vDone THEN - LEAVE lDates; - END IF; - - -- Busca un ticket existente que coincida con los parametros - - SELECT Id_Ticket INTO vTicket - FROM vn2008.Tickets t - LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket - JOIN `order` o - ON o.address_id = t.Id_Consigna - AND vWarehouse = t.warehouse_id - AND o.agency_id = t.Id_Agencia - AND t.landing = o.date_send - AND vShipment = DATE(t.Fecha) - WHERE o.id = vOrder - AND t.Factura IS NULL - AND IFNULL(tls.alertLevel,0) = 0 - AND t.Id_Cliente <> 1118 - LIMIT 1; - - -- Crea el ticket en el caso de no existir uno adecuado - - IF vTicket IS NULL - THEN - CALL vn.ticketCreateWithUser( - vClientId, - IFNULL(vShipment, CURDATE()), - vWarehouse, - vCompanyId, - vAddress, - vAgencyModeId, - NULL, - vDelivery, - vUserId, - vTicket - ); - ELSE - INSERT INTO vncontrol.inter - SET Id_Ticket = vTicket, - Id_Trabajador = SYSTEM_WORKER, - state_id = TICKET_FREE; - END IF; - - INSERT IGNORE INTO vn2008.order_Tickets - SET order_id = vOrder, - Id_Ticket = vTicket; - - -- Añade las notas - - IF vNotes IS NOT NULL AND vNotes != '' - THEN - INSERT INTO vn2008.ticket_observation SET - Id_Ticket = vTicket, - observation_type_id = 4 /* salesperson */, - `text` = vNotes - ON DUPLICATE KEY UPDATE - `text` = CONCAT(VALUES(`text`),'. ', `text`); - END IF; - - -- Añade los movimientos y sus componentes - - OPEN cRows; - - lRows: - LOOP - SET vDone = FALSE; - FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate; - - IF vDone THEN - LEAVE lRows; - END IF; - - INSERT INTO vn2008.Movimientos - SET - Id_Article = vItem, - Id_Ticket = vTicket, - Concepte = vConcept, - Cantidad = vAmount, - Preu = vPrice, - CostFixat = 0, - PrecioFijado = TRUE; - - SET vSale = LAST_INSERT_ID(); - - INSERT INTO vn2008.Movimientos_componentes - (Id_Movimiento, Id_Componente, Valor) - SELECT vSale, cm.component_id, cm.price - FROM order_component cm - JOIN bi.tarifa_componentes tc - ON tc.Id_Componente = cm.component_id - WHERE cm.order_row_id = vRowId - GROUP BY vSale, cm.component_id; - - UPDATE order_row SET Id_Movimiento = vSale - WHERE id = vRowId; - - END LOOP; - - CLOSE cRows; - - -- Fija el coste - - DROP TEMPORARY TABLE IF EXISTS tComponents; - CREATE TEMPORARY TABLE tComponents - (INDEX (saleFk)) - ENGINE = MEMORY - SELECT SUM(mc.Valor) valueSum, mc.Id_Movimiento saleFk - FROM vn2008.Movimientos_componentes mc - JOIN bi.tarifa_componentes tc USING(Id_Componente) - JOIN bi.tarifa_componentes_series tcs - ON tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id - AND tcs.base - JOIN vn2008.Movimientos m - ON m.Id_Movimiento = mc.Id_Movimiento - WHERE m.Id_Ticket = vTicket - GROUP BY mc.Id_Movimiento; - - UPDATE vn2008.Movimientos m - JOIN tComponents mc ON mc.saleFk = m.Id_Movimiento - SET m.CostFixat = valueSum; - - DROP TEMPORARY TABLE tComponents; - END LOOP; - - CLOSE cDates; - - DELETE FROM basketOrder WHERE orderFk = vOrder; - UPDATE `order` SET confirmed = TRUE, confirm_date = NOW() - WHERE id = vOrder; - - COMMIT; -END$$ - -DELIMITER ; - --- orderConfirmWithUser` --------------------------------------------------------------------- - -USE `vn`; -DROP procedure IF EXISTS `vn`.`agencyHourGetAgency`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetAgencyKk`(vAddress INT, vDate DATE) -BEGIN -/** - * DEPRECATED usar zoneGetAgency - * Devuelve el listado de agencias disponibles para la fecha - * y dirección pasadas. - * - * @param vAddress Id de dirección de envío, %NULL si es recogida - * @param vDate Fecha de recogida - * @table agencyModeList Listado de agencias disponibles - */ - DECLARE vAgency INT; - DECLARE vDone BOOL DEFAULT FALSE; - - DECLARE vCur CURSOR FOR - SELECT DISTINCT a.id - FROM agency a - JOIN agencyHour ah ON ah.agencyFk = a.id; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DROP TEMPORARY TABLE IF EXISTS agencyModeList; - CREATE TEMPORARY TABLE agencyModeList ( - id INT NOT NULL, - agency VARCHAR(20), - description VARCHAR(45), - deliveryMethodFk VARCHAR(45), - shipped DATE, - warehouse VARCHAR(45), - PRIMARY KEY(id) - ) - ENGINE = MEMORY; - - OPEN vCur; - FETCH vCur INTO vAgency; - - WHILE NOT vDone - DO - CALL vn.agencyHourGetShipped(vDate, vAddress, vAgency); - INSERT INTO agencyModeList - SELECT a.id, a.name, a.description, - a.deliveryMethodFk, ah.shipped, w.name - FROM agencyMode a - JOIN tmp.agencyHourGetShipped ah - JOIN warehouse w on w.id = ah.warehouseFk - WHERE a.agencyFk = vAgency - AND a.web - ON DUPLICATE KEY UPDATE - warehouse = CONCAT(warehouse, ', ', w.name); - - FETCH vCur INTO vAgency; - END WHILE; - - CLOSE vCur; - - DROP TEMPORARY TABLE tmp.agencyHourGetShipped; - SELECT * FROM agencyModeList; - DROP TEMPORARY TABLE IF EXISTS agencyModeList; -END$$ - -DELIMITER ; - --- ticketComponentPreview` --------------------------------------------------------------------- -USE `vn`; -DROP procedure IF EXISTS `ticketComponentPreview`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentPreview`( - vTicketFk INT, - vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT, - vWarehouseFk SMALLINT) -BEGIN - - DECLARE vShipped DATE; - DECLARE vBuyOrderItem INT DEFAULT 100; - - DECLARE vHasDataChanged BOOL DEFAULT FALSE; - DECLARE vHasAddressChanged BOOL; - DECLARE vHasAgencyModeChanged BOOL DEFAULT FALSE; - DECLARE vHasWarehouseChanged BOOL DEFAULT FALSE; - - DECLARE vAddressTypeRateFk INT DEFAULT NULL; - DECLARE vAgencyModeTypeRateFk INT DEFAULT NULL; - - DECLARE vHasChangeAll BOOL DEFAULT FALSE; - - SELECT DATE(landed) <> vLanded, - addressFk <> vAddressFk, - agencyModeFk <> vAgencyModeFk, - warehouseFk <> vWarehouseFk - INTO - vHasDataChanged, - vHasAddressChanged, - vHasAgencyModeChanged, - vHasWarehouseChanged - FROM vn.ticket t - WHERE t.id = vTicketFk; - - IF vHasDataChanged OR vHasWarehouseChanged THEN - SET vHasChangeAll = TRUE; - END IF; - - IF vHasAddressChanged THEN - SET vAddressTypeRateFk = 5; - END IF; - - IF vHasAgencyModeChanged THEN - SET vAgencyModeTypeRateFk = 6; - END IF; - - CALL zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); - - SELECT shipped INTO vShipped - FROM tmp.zoneGetShipped - WHERE warehouseFk = vWarehouseFk; - - CALL buyUltimate(vWarehouseFk, vShipped); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY ( - SELECT - vWarehouseFk AS warehouseFk, - NULL AS available, - s.itemFk, - bu.buyFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketFk - AND s.itemFk != vBuyOrderItem - GROUP BY bu.warehouseFk, bu.itemFk); - - CALL ticketComponentCalculate(vAddressFk, vAgencyModeFk); - - REPLACE INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT t.warehouseFk, s.itemFk, sc.componentFk, sc.value - FROM saleComponent sc - JOIN sale s ON s.id = sc.saleFk - JOIN ticket t ON t.id = s.ticketFk - JOIN componentRate cr ON cr.id = sc.componentFk - WHERE s.ticketFk = vTicketFk - AND (cr.isRenewable = FALSE - OR - (NOT vHasChangeAll - AND (NOT (cr.componentTypeRate <=> vAddressTypeRateFk - OR cr.componentTypeRate <=> vAgencyModeTypeRateFk)))); - - SET @shipped = vShipped; - - DROP TEMPORARY TABLE - tmp.zoneGetShipped, - tmp.buyUltimate, - tmp.ticketLot; - - IF IFNULL(vShipped, CURDATE() - 1) < CURDATE() THEN - CALL util.throw('NO_AGENCY_AVAILABLE'); - END IF; -END$$ - -DELIMITER ; - --- orderCheckConfig` --------------------------------------------------------------------- - -USE `hedera`; -DROP procedure IF EXISTS `orderCheckConfig`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `orderCheckConfig`(vOrder INT) -proc: BEGIN -/** - * Comprueba que la configuración del pedido es correcta. - * - * @param vOrder Identificador del pedido - */ - DECLARE vDeliveryMethod VARCHAR(255); - DECLARE vLanded DATE; - DECLARE vAgencyMode INT; - DECLARE vAddress INT; - DECLARE vIsAvailable BOOL; - - -- Obtiene los datos del pedido - - SELECT d.code, o.date_send, o.agency_id, o.address_id - INTO vDeliveryMethod, vLanded, vAgencyMode, vAddress - FROM `order` o - JOIN vn.deliveryMethod d ON d.id = o.delivery_method_id - WHERE o.id = vOrder; - - -- Comprueba que se ha seleccionado una dirección - - IF vDeliveryMethod IN ('AGENCY', 'DELIVERY') - && vAddress IS NULL - THEN - CALL util.throw ('ORDER_EMPTY_ADDRESS'); - END IF; - - -- Comprueba que la agencia es correcta - - CALL vn.zoneGetAgency(vAddress, vLanded); - - SELECT COUNT(*) > 0 INTO vIsAvailable - FROM tmp.zoneGetAgency - WHERE agencyModeFk = vAgencyMode; - - IF !vIsAvailable THEN - CALL util.throw ('ORDER_INVALID_AGENCY'); - END IF; - - DROP TEMPORARY TABLE tmp.zoneGetAgency; -END$$ - -DELIMITER ; - --- agencyListAvailable` --------------------------------------------------------------------- - -DROP procedure IF EXISTS `vn`.`agencyListAvailable`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`__agencyListAvailable`(vDate DATE, vAddress INT) - READS SQL DATA -BEGIN -/** - * DEPRECATED usar zoneGetAgency - * Devuelve la lista de almacenes disponibles y la fecha de - * envío desde cada uno. - * - * @param vDate Fecha de recepción de mercancía - * @param vAddress Id consignatario, %NULL para recogida - * @return agencyAvailable Lista de almacenes disponibles - */ - DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); - DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); - DECLARE vHour TINYINT DEFAULT HOUR(NOW()); - DECLARE vProvince INT; - - SELECT provinceFk INTO vProvince - FROM address - WHERE id = vAddress; - - DROP TEMPORARY TABLE IF EXISTS tmp.agencyAvailable; - CREATE TEMPORARY TABLE tmp.agencyAvailable - (INDEX (agencyFk)) - ENGINE = MEMORY - SELECT agencyFk, warehouseFk - FROM agencyHour h - WHERE (provinceFk = vProvince - OR provinceFk IS NULL) - AND (weekDay = vWday - OR weekDay IS NULL) - AND (substractDay < vMaxDays - OR (substractDay = vMaxDays AND maxHour > vHour)); -END$$ -DELIMITER ; - --- agencyIsAvailable` --------------------------------------------------------------------- - -DROP function IF EXISTS `vn`.`agencyIsAvailable`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` FUNCTION `vn`.`__agencyIsAvailable`(vAgency INT, vDate DATE, vAddress INT) - RETURNS tinyint(1) - READS SQL DATA -BEGIN -/** - * Comprueba si la agencia esta disponible para la fecha y - * dirección dadas, es decir, si es posible enviar mercancía - * desde al menos uno de los almacenes por la agencia, fecha - * y direcciones especificadas. - * - * @param vAgency Id de agencia - * @param vDate Fecha de recepción de mercancía - * @param vAddress Id consignatario, %NULL para recogida - * @return %TRUE si la agencia esta disponible, %FALSE en caso contrario - */ - DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); - DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); - DECLARE vHour TINYINT DEFAULT HOUR(NOW()); - DECLARE vProvince INT; - DECLARE isAvailable BOOL; - - SELECT provinceFk INTO vProvince - FROM address - WHERE id = vAddress; - - SELECT COUNT(*) > 0 INTO isAvailable - FROM agencyHour h - JOIN agencyMode a - ON a.agencyFk = h.agencyFk - WHERE (h.provinceFk = vProvince - OR h.provinceFk IS NULL) - AND (h.weekDay = vWday - OR h.weekDay IS NULL) - AND (h.substractDay < vMaxDays - OR (h.substractDay = vMaxDays AND h.maxHour > vHour)) - AND a.id = vAgency; - - RETURN isAvailable; -END$$ -DELIMITER ; - --- ticket_recalcComponents` --------------------------------------------------------------------- - -USE `vn2008`; -DROP procedure IF EXISTS `vn2008`.`bionic_calc_ticket`; -USE `vn`; -DROP procedure IF EXISTS `ticket_recalcComponents`; - -USE `vn`; -DROP procedure IF EXISTS `ticket_recalcComponents`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticket_recalcComponents`(IN vTicketFk BIGINT ) -proc: BEGIN - -/** - * Este procedimiento trata de "rebionizar" un ticket, - * eliminando los componentes existentes e insertandolos de nuevo - * - * @param vTicketFk Id del ticket - * @return tmp.buyUltimate - */ - DECLARE vShipped DATE; - DECLARE vWarehouseFk SMALLINT; - DECLARE vAgencyModeFk INT; - DECLARE vAddressFk INT; - DECLARE vLanded DATE; - DECLARE vIsTicketEditable BOOLEAN; - - SELECT (IFNULL(ts.alertLevel,0) >0 or IFNULL(t.refFk,"") != "") = FALSE - INTO vIsTicketEditable - FROM ticket t LEFT JOIN ticketState ts ON t.id = ts.ticket - WHERE id = vTicketFk; - - SELECT warehouseFk, date(shipped), addressFk, agencyModeFk, landed - INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded - FROM ticket - WHERE id = vTicketFk; - - CALL zoneGetShippedWarehouse(vLanded, vAddressFk , vAgencyModeFk); - - CALL vn.buyUltimate (vWarehouseFk, vShipped); -- rellena la tabla buyUltimate con la ultima compra - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouseFk warehouseFk, NULL available, - s.itemFk, bu.buyFk - FROM sale s - LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk - WHERE s.ticketFk = vTicketFk - GROUP BY s.itemFk; - - CALL vn.ticketComponentCalculate(vAddressFk,vAgencyModeFk); - - DROP TEMPORARY TABLE IF EXISTS tmp.sale; - CREATE TEMPORARY TABLE tmp.sale - (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT id saleFk, vWarehouseFk warehouseFk - FROM sale s - WHERE s.ticketFk = vTicketFk; - - CALL vn.ticketComponentUpdateSale(IF(vIsTicketEditable,1,6)); -- si el ticket esta facturado, respeta los precios - - IF vLanded IS NULL THEN - - CALL zoneGetLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk); - - UPDATE vn2008.Tickets t - SET t.landing = (SELECT landed FROM tmp.zoneGetLanded) - WHERE Id_Ticket = vTicketFk; - - DROP TEMPORARY TABLE tmp.zoneGetLanded; - - END IF; - - DROP TEMPORARY TABLE tmp.buyUltimate; - DROP TEMPORARY TABLE tmp.ticketComponentPrice; - DROP TEMPORARY TABLE tmp.ticketComponent; - DROP TEMPORARY TABLE tmp.sale; -END$$ - --- ticketCalculatePurge` --------------------------------------------------------------------- - -DELIMITER ; - -USE `vn`; -DROP procedure IF EXISTS `ticketCalculatePurge`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculatePurge`() -BEGIN - DROP TEMPORARY TABLE - tmp.ticketCalculateItem, - tmp.ticketComponentPrice, - tmp.ticketComponent, - tmp.ticketLot, - tmp.zoneGetShipped; -END$$ - -DELIMITER ; - --- `vn`.`component` ----------------------------------------------- - -CREATE OR REPLACE - ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`component` AS - SELECT - `t`.`Id_Componente` AS `id`, - `t`.`Componente` AS `name`, - `t`.`tarifa_componentes_series_id` AS `typeFk`, - `t`.`tarifa_class` AS `classRate`, - `t`.`tax` AS `tax`, - `t`.`is_renewable` AS `isRenewable` - FROM - `bi`.`tarifa_componentes` `t`; - --- componentType -------------------------------------------------------- - -CREATE OR REPLACE - ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`componentType` AS - SELECT - `t`.`tarifa_componentes_series_id` AS `id`, - `t`.`Serie` AS `type`, - `t`.`base` AS `base` - FROM - `bi`.`tarifa_componentes_series` `t`; \ No newline at end of file diff --git a/db/changes/10031-zone/00-zoneNest.sql b/db/changes/10031-zone/00-zoneNest.sql deleted file mode 100644 index 2691aa8a9..000000000 --- a/db/changes/10031-zone/00-zoneNest.sql +++ /dev/null @@ -1,28 +0,0 @@ -DROP procedure IF EXISTS `vn`.`zoneNest`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNest`() -BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.zoneGeo; - CREATE TEMPORARY TABLE tmp.zoneGeo - (id INT AUTO_INCREMENT PRIMARY KEY) - ENGINE = MEMORY - SELECT * FROM vn.zoneGeo; - - DROP TEMPORARY TABLE IF EXISTS tmp.country; - CREATE TEMPORARY TABLE tmp.country - SELECT id FROM country - WHERE country IN('España exento'); - - CALL vn.zoneNestCountry(); - CALL vn.zoneNestProvince(); - CALL vn.zoneNestTown(); - CALL vn.zoneNestPostcode(); - CALL vn.nestTree('tmp', 'zoneGeo', 'vn', 'zoneGeo'); - - DROP TEMPORARY TABLE - tmp.zoneGeo, - tmp.country; -END$$ - -DELIMITER ; diff --git a/db/changes/10031-zone/00-zoneNestCountry.sql b/db/changes/10031-zone/00-zoneNestCountry.sql deleted file mode 100644 index acc3a4d12..000000000 --- a/db/changes/10031-zone/00-zoneNestCountry.sql +++ /dev/null @@ -1,55 +0,0 @@ -DROP procedure IF EXISTS `vn`.`zoneNestCountry`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestCountry`() -BEGIN - - DECLARE vDone BOOL; - DECLARE vParent INT DEFAULT 1; - DECLARE vGeoFk INT; - DECLARE vChildFk INT; - DECLARE vChildName VARCHAR(100); - DECLARE countryCur CURSOR FOR - SELECT 1, c.id, c.`country` - FROM vn.country c - JOIN tmp.country tc ON tc.id = c.id - ORDER BY c.`country`; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Remove existing countries - DELETE zg FROM vn.country c - JOIN tmp.country tc ON tc.id = c.id - JOIN tmp.zoneGeo zg ON zg.id = c.geoFk; - - -- Reset country geoFk - UPDATE vn.country c - JOIN tmp.country tc ON tc.id = c.id - SET c.geoFk = NULL - WHERE c.geoFk IS NOT NULL; - - -- > Country cursor start - OPEN countryCur; - - countryLoop: LOOP - SET vDone = FALSE; - - FETCH countryCur INTO vParent, vChildFk, vChildName; - - IF vDone THEN - LEAVE countryLoop; - END IF; - - CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); - END LOOP; - CLOSE countryCur; - -- < Country cursor end - - UPDATE country c - JOIN tmp.zoneGeo z ON z.name = c.country - SET c.geoFk = z.id - WHERE c.geoFk IS NULL; -END$$ - -DELIMITER ; - diff --git a/db/changes/10031-zone/00-zoneNestPostcode.sql b/db/changes/10031-zone/00-zoneNestPostcode.sql deleted file mode 100644 index cd62deee8..000000000 --- a/db/changes/10031-zone/00-zoneNestPostcode.sql +++ /dev/null @@ -1,61 +0,0 @@ -DROP procedure IF EXISTS `vn`.`zoneNestPostcode`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestPostcode`() -BEGIN - - DECLARE vDone BOOL; - DECLARE vParent INT DEFAULT 1; - DECLARE vGeoFk INT; - DECLARE vChildFk INT; - DECLARE vChildName VARCHAR(100); - DECLARE postcodeCur CURSOR FOR - SELECT t.geoFk, pc.`code`, pc.`code` - FROM vn.postCode pc - JOIN vn.town t ON t.id = pc.townFk - JOIN vn.province p ON p.id = t.provinceFk - JOIN tmp.country tc ON tc.id = p.countryFk - ORDER BY t.geoFk, pc.`code`; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Remove existing postCodes from zoneGeo - DELETE zg FROM vn.postCode pc - JOIN vn.town t ON t.id = pc.townFk - JOIN vn.province p ON p.id = t.provinceFk - JOIN tmp.country tc ON tc.id = p.countryFk - JOIN tmp.zoneGeo zg ON zg.id = pc.geoFk; - - -- Reset town geoFk - UPDATE vn.postCode pc - JOIN vn.town t ON t.id = pc.townFk - JOIN vn.province p ON p.id = t.provinceFk - JOIN tmp.country tc ON tc.id = p.countryFk - SET pc.geoFk = NULL - WHERE pc.geoFk IS NOT NULL; - - -- > Postcode cursor start - OPEN postcodeCur; - - postcodeLoop: LOOP - SET vDone = FALSE; - - FETCH postcodeCur INTO vParent, vChildFk, vChildName; - - IF vDone THEN - LEAVE postcodeLoop; - END IF; - - CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); - END LOOP; - CLOSE postcodeCur; - -- < Postcode cursor end - - UPDATE postCode p - JOIN tmp.zoneGeo z ON z.name = p.code - SET p.geoFk = z.id - WHERE p.geoFk IS NULL; -END$$ - -DELIMITER ; - diff --git a/db/changes/10031-zone/00-zoneNestProvince.sql b/db/changes/10031-zone/00-zoneNestProvince.sql deleted file mode 100644 index 4467e0c46..000000000 --- a/db/changes/10031-zone/00-zoneNestProvince.sql +++ /dev/null @@ -1,56 +0,0 @@ -DROP procedure IF EXISTS `vn`.`zoneNestProvince`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestProvince`() -BEGIN - - DECLARE vDone BOOL; - DECLARE vParent INT DEFAULT 1; - DECLARE vGeoFk INT; - DECLARE vChildFk INT; - DECLARE vChildName VARCHAR(100); - DECLARE provinceCur CURSOR FOR - SELECT c.geoFk, p.id, p.`name` - FROM province p - JOIN tmp.country tc ON tc.id = p.countryFk - JOIN vn.country c ON c.id = tc.id - ORDER BY c.geoFk, p.`name`; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Remove existing provinces from zoneGeo - DELETE zg FROM vn.province p - JOIN tmp.country tc ON tc.id = p.countryFk - JOIN tmp.zoneGeo zg ON zg.id = p.geoFk; - - -- Reset country geoFk - UPDATE vn.province p - JOIN tmp.country tc ON tc.id = p.countryFk - SET p.geoFk = NULL - WHERE p.geoFk IS NOT NULL; - - -- > Province cursor start - OPEN provinceCur; - - provinceLoop: LOOP - SET vDone = FALSE; - - FETCH provinceCur INTO vParent, vChildFk, vChildName; - - IF vDone THEN - LEAVE provinceLoop; - END IF; - - CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); - END LOOP; - CLOSE provinceCur; - -- < Province cursor end - - UPDATE province p - JOIN tmp.zoneGeo z ON z.name = p.name - SET p.geoFk = z.id - WHERE p.geoFk IS NULL; -END$$ - -DELIMITER ; - diff --git a/db/changes/10031-zone/00-zoneNestTown.sql b/db/changes/10031-zone/00-zoneNestTown.sql deleted file mode 100644 index 8ca1a426c..000000000 --- a/db/changes/10031-zone/00-zoneNestTown.sql +++ /dev/null @@ -1,59 +0,0 @@ -DROP procedure IF EXISTS `vn`.`zoneNestTown`; - -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneNestTown`() -BEGIN - - DECLARE vDone BOOL; - DECLARE vParent INT DEFAULT 1; - DECLARE vGeoFk INT; - DECLARE vChildFk INT; - DECLARE vChildName VARCHAR(100); - DECLARE townCur CURSOR FOR - SELECT p.geoFk, t.id, t.`name` - FROM vn.town t - JOIN vn.province p ON p.id = t.provinceFk - JOIN tmp.country tc ON tc.id = p.countryFk - ORDER BY p.geoFk, t.`name`; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Remove existing towns from zoneGeo - DELETE zg FROM vn.town t - JOIN vn.province p ON p.id = t.provinceFk - JOIN tmp.country tc ON tc.id = p.countryFk - JOIN tmp.zoneGeo zg ON zg.id = t.geoFk; - - -- Reset town geoFk - UPDATE vn.town t - JOIN vn.province p ON p.id = t.provinceFk - JOIN tmp.country tc ON tc.id = p.countryFk - SET t.geoFk = NULL - WHERE t.geoFk IS NOT NULL; - - -- > Town cursor start - OPEN townCur; - - townLoop: LOOP - SET vDone = FALSE; - - FETCH townCur INTO vParent, vChildFk, vChildName; - - IF vDone THEN - LEAVE townLoop; - END IF; - - CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); - END LOOP; - CLOSE townCur; - -- < Town cursor end - - UPDATE town t - JOIN tmp.zoneGeo z ON z.name = t.name - LEFT JOIN province p ON p.geoFk = z.id - SET t.geoFk = z.id - WHERE p.geoFk IS NULL; -END$$ - -DELIMITER ; - diff --git a/db/changes/10031-zone/01-ticketGetVolume.sql b/db/changes/10031-zone/01-ticketGetVolume.sql deleted file mode 100644 index e8443fb8e..000000000 --- a/db/changes/10031-zone/01-ticketGetVolume.sql +++ /dev/null @@ -1,19 +0,0 @@ - -CREATE - OR REPLACE ALGORITHM = UNDEFINED - DEFINER = `root`@`%` - SQL SECURITY DEFINER -VIEW `vn`.`ticketGetVolume` AS - SELECT - `s`.`ticketFk` AS `ticketFk`, - `t`.`routeFk` AS `routeFk`, - `s`.`id` AS `saleFk`, - `t`.`shipped` AS `Fecha`, - (((`s`.`quantity` * `r`.`cm3`) * `i`.`compression`) / 1000000) AS `volume` - FROM - (((`vn`.`sale` `s` - JOIN `vn`.`item` `i` ON ((`i`.`id` = `s`.`itemFk`))) - JOIN `vn`.`ticket` `t` ON ((`t`.`id` = `s`.`ticketFk`))) - JOIN `bi`.`rotacion` `r` ON (((`r`.`Id_Article` = `s`.`itemFk`) - AND (`r`.`warehouse_id` = `t`.`warehouseFk`)))); - diff --git a/db/changes/10031-zone/02-ticketTotalVolume.sql b/db/changes/10031-zone/02-ticketTotalVolume.sql deleted file mode 100644 index ff4b5c080..000000000 --- a/db/changes/10031-zone/02-ticketTotalVolume.sql +++ /dev/null @@ -1,30 +0,0 @@ - -DROP function IF EXISTS `vn`.`ticketTotalVolume`; - -DELIMITER $$ -USE `vn`$$ -CREATE DEFINER=`root`@`%` FUNCTION `ticketTotalVolume`(vTicketId INT) RETURNS decimal(10,3) - READS SQL DATA -BEGIN - -- Devuelte el volumen total del ticket sumado - -- DECLARE vWarehouseId INTEGER; - -- DECLARE vShippedDate DATE; - DECLARE vVolume DECIMAL(10,3); - /* - SELECT warehouseFk, shipped INTO vWarehouseId,vShippedDate FROM vn.ticket WHERE id = vTicketId; - - SELECT IFNULL(SUM(s.quantity * i.compression * r.cm3)/1000000,0) INTO vVolume - FROM sale s - JOIN vn.item i ON i.id = s.itemFk - JOIN bi.rotacion r on r.Id_Article = s.itemFk AND r.warehouse_id = vWarehouseId - WHERE s.ticketFk = vTicketId; - */ - SELECT sum(volume) INTO vVolume - FROM ticketGetVolume - WHERE ticketFk = vTicketId; - RETURN vVolume; - -END$$ - -DELIMITER ; - diff --git a/db/changes/10032-webZone/00-available_calc.sql b/db/changes/10032-webZone/00-available_calc.sql deleted file mode 100644 index 0a2429cdc..000000000 --- a/db/changes/10032-webZone/00-available_calc.sql +++ /dev/null @@ -1,61 +0,0 @@ - -DROP procedure IF EXISTS `vn`.`available_calc`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`available_calc`( - vDate DATE, - vAddress INT, - vAgencyMode INT) -BEGIN -/** - * Calculates the available for all available stores - * according to the given parameters. - * - * @param vDate The delivery date - * @param vAddress The delivery address id - * @param vAgencyMode The shipping agency - * @return tmp.availableCalc(calcFk) The available cache ids - */ - DECLARE vCalcFk INT; - DECLARE vShipment DATE; - DECLARE vWarehouse INT; - DECLARE vDone BOOL; - - DECLARE cWarehouses CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.zoneGetShipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - -- Establecemos los almacenes y las fechas que van a entrar al disponible - - CALL vn.zoneGetShippedWarehouse(vDate, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.availableCalc; - CREATE TEMPORARY TABLE tmp.availableCalc( - calcFk INT UNSIGNED, - PRIMARY KEY (calcFk) - ) - ENGINE = MEMORY; - - OPEN cWarehouses; - - l: LOOP - SET vDone = FALSE; - FETCH cWarehouses INTO vWarehouse, vShipment; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh(vCalcFk, FALSE, vWarehouse, vShipment); - - INSERT IGNORE INTO tmp.availableCalc - SET calcFk = vCalcFk; - END LOOP; - - CLOSE cWarehouses; - DROP TEMPORARY TABLE tmp.zoneGetShipped; -END$$ - -DELIMITER ; - diff --git a/db/changes/10032-webZone/00-catalog_calcFromItem.sql b/db/changes/10032-webZone/00-catalog_calcFromItem.sql deleted file mode 100644 index 03823d65c..000000000 --- a/db/changes/10032-webZone/00-catalog_calcFromItem.sql +++ /dev/null @@ -1,28 +0,0 @@ - -DROP procedure IF EXISTS `vn`.`catalog_calcFromItem`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`catalog_calcFromItem`( - vLanded DATE, - vAddressFk INT, - vAgencyModeFk INT, - vItemFk INT) -BEGIN -/** - * Calculates available and price for a single item. - * - * @param vItemFk The item id - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - * @return tmp.zoneGetShipped - */ - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - ENGINE = MEMORY - SELECT vItemFk itemFk; - - CALL ticketCalculate(vLanded, vAddressFk, vAgencyModeFk); - DROP TEMPORARY TABLE tmp.item; -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-catalog_calcFromMyAddress.sql b/db/changes/10032-webZone/00-catalog_calcFromMyAddress.sql deleted file mode 100644 index ee2996bd6..000000000 --- a/db/changes/10032-webZone/00-catalog_calcFromMyAddress.sql +++ /dev/null @@ -1,41 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`catalog_calcFromMyAddress`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`catalog_calcFromMyAddress`(vDelivery DATE, vAddress INT) -BEGIN -/** - * Gets the available items list. - * - * @param vDelivery Delivery date - * @param vAddress Address id - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - * @return tmp.zoneGetShipped - */ - DECLARE vAgencyMode INT; - - SELECT a.agencyModeFk - INTO vAgencyMode - FROM myClient c - JOIN vn.address a ON a.clientFk = c.id - WHERE a.id = vAddress; - - CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT c.item_id itemFk - FROM `cache`.available c - JOIN tmp.availableCalc a ON a.calcFk = c.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE tmp.item; -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-deprecate.sql b/db/changes/10032-webZone/00-deprecate.sql deleted file mode 100644 index 373cb7ccb..000000000 --- a/db/changes/10032-webZone/00-deprecate.sql +++ /dev/null @@ -1,398 +0,0 @@ - -USE `vn2008`; -DROP procedure IF EXISTS `vn2008`.`bionic_available_`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_available_`( - vDate DATE, - vAddress INT, - vAgency INT) -BEGIN -/** - * Calcula el disponible para un conjunto de almacenes y fechas - * devueltos por el procedimiento agencyHourGetShipped() - * - * @deprecated Use vn.available_calc() - * @table t_bionic_available Tabla con los ids de cache - */ - DECLARE vAvailableCalc INT; - DECLARE vShipment DATE; - DECLARE vAgencyId INT; - DECLARE vWh INT; - DECLARE vDone BOOL; - DECLARE cTravelTree CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.agencyHourGetShipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Establecemos los almacenes y las fechas que van a entrar al disponible - - SELECT agency_id INTO vAgencyId - FROM Agencias WHERE Id_Agencia = vAgency; - - CALL vn.agencyHourGetShipped (vDate, vAddress, vAgencyId); - - DROP TEMPORARY TABLE IF EXISTS t_bionic_available; - CREATE TEMPORARY TABLE t_bionic_available( - calc_id INT UNSIGNED, - PRIMARY KEY (calc_id) - ) - ENGINE = MEMORY; - - OPEN cTravelTree; - l: LOOP - SET vDone = FALSE; - FETCH cTravelTree INTO vWh, vShipment; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipment); - - INSERT IGNORE INTO t_bionic_available - SET calc_id = vAvailableCalc; - END LOOP; - - CLOSE cTravelTree; - DROP TEMPORARY TABLE tmp.agencyHourGetShipped; -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`bionic_from_item`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_from_item`(vItem INT) -BEGIN - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT sent, addressFk, agencyModeFk - INTO vDate, vAddress, vAgencyMode - FROM myBasket; - - CALL vn2008.bionic_from_item(vDate, vAddress, vAgencyMode, vItem); -END$$ - -DELIMITER ; -; - - -USE `vn2008`; -DROP procedure IF EXISTS `vn2008`.`bionic_from_order`; - -DELIMITER $$ -USE `vn2008`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_from_order`( - v_date DATE, -- fecha de recepcion de mercancia - v_consigna INT, - v_agencia INT, - v_order INT) -BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; - CREATE TEMPORARY TABLE tmp.bionic_calc - (PRIMARY KEY (item_id)) - ENGINE = MEMORY - SELECT item_id FROM order_row - WHERE order_id = v_order GROUP BY item_id; - - CALL bionic_calc (v_date, v_consigna, v_agencia); - DROP TEMPORARY TABLE tmp.bionic_calc; -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`bionicCalcWithDate`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__bionicCalcWithDate`(vDate DATE) -BEGIN - DECLARE vMyAddressFk INTEGER; - DECLARE vMyAgencyModeFk INTEGER; - - SELECT id, agencyModeFk INTO vMyAddressFk, vMyAgencyModeFk - FROM myAddress - WHERE isDefaultAddress; - - CALL vn2008.bionic_calc(vDate, vMyAddressFk, vMyAgencyModeFk); -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`bionic_calc`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_calc`() -BEGIN - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT sent, addressFk, agencyModeFk - INTO vDate, vAddress, vAgencyMode - FROM myBasket; - - CALL vn2008.bionic_calc(vDate, vAddress, vAgencyMode); - - IF account.myUserGetName() = 'visitor' - THEN - DROP TEMPORARY TABLE tmp.bionic_component; - UPDATE tmp.bionic_item SET price = NULL; - END IF; -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`itemGetAvailableOrder`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__itemGetAvailableOrder`(vOrder INT) -BEGIN -/** - * Gets the available items list with an order params. - * - * @table tmp.itemAvailable - */ - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vAgency INT; - - SELECT landed, addressFk, agencyModeFk - INTO vDelivery, vAddress, vAgency - FROM myOrder - WHERE id = vOrder; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgency); - - DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; - CREATE TEMPORARY TABLE tmp.itemAvailable - (INDEX (id)) - ENGINE = MEMORY - SELECT c.item_id id - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - DROP TEMPORARY TABLE vn2008.t_bionic_available; - -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`itemGetAvailable`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__itemGetAvailable`() -BEGIN -/** - * Gets the available items list. - * - * @table tmp.itemAvailable - */ - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vAgency INT; - - SELECT sent, addressFk, agencyModeFk - INTO vDelivery, vAddress, vAgency - FROM myBasket; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgency); - - DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; - CREATE TEMPORARY TABLE tmp.itemAvailable - (INDEX (id)) - ENGINE = MEMORY - SELECT c.item_id id - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - DROP TEMPORARY TABLE vn2008.t_bionic_available; -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`myItemGetAvailableFromDate`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__myItemGetAvailableFromDate`(vDelivery DATE) -BEGIN -/** - * Gets the available items list. - * - * @deprecated Use item_calcCatalogFromMyAddress() - * @param vDelivery Delivery date - */ - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT a.agencyModeFk, a.id - INTO vAgencyMode, vAddress - FROM myClient c - JOIN vn.address a ON a.id = c.defaultAddressFk; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT c.item_id itemFk - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode); --- ------------------- - /*SELECT b.itemFk, b.item, b.available, b.price - FROM tmp.ticketCalculateItem b - JOIN vn.item i ON i.id = b.itemFk - WHERE b.available > 0 - ORDER BY i.relevancy DESC, i.name, i.size; - - select * from tmp.ticketComponentPrice;*/ --- ------------------- - DROP TEMPORARY TABLE vn2008.t_bionic_available; -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`myItemGetAvailable`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__myItemGetAvailable`(vDelivery DATE, vAddress INT) -BEGIN -/** - * Gets the available items list. - * - * @deprecated Use item_calcCatalogFromMyAddress() - * @param vDelivery Delivery date - * @param vAddress Id Address - */ - DECLARE vAgencyMode INT; - - SELECT a.agencyModeFk - INTO vAgencyMode - FROM myClient c - JOIN vn.address a ON a.clientFk = c.id - WHERE a.id = vAddress; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT c.item_id itemFk - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode); --- ------------------- - /*SELECT b.itemFk, b.item, b.available, b.price - FROM tmp.ticketCalculateItem b - JOIN vn.item i ON i.id = b.itemFk - WHERE b.available > 0 - ORDER BY i.relevancy DESC, i.name, i.size; - - select * from tmp.ticketComponentPrice;*/ --- ------------------- - DROP TEMPORARY TABLE vn2008.t_bionic_available; -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`myOrderAddItem`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__myOrderAddItem`( - vSelf INT, - vWarehouse INT, - vItem INT, - vAmount INT) -BEGIN -/** - * @deprecated Use myOrder_addItem() - */ - CALL myOrder_addItem(vSelf, vWarehouse, vItem, vAmount); -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`myOrderConfirm`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__myOrderConfirm`(vSelf INT) -BEGIN -/** - * @deprecated Use myOrder_confirm() - */ - CALL myOrder_confirm(vSelf); -END$$ - -DELIMITER ; -; - - -USE `hedera`; -DROP procedure IF EXISTS `hedera`.`myOrderNewFromDate`; - -DELIMITER $$ -USE `hedera`$$ -CREATE DEFINER=`root`@`%` PROCEDURE `__myOrderNewFromDate`( - OUT vSelf INT, - vLandingDate DATE) -BEGIN -/** - * @deprecated Use myOrder_newWithDate() - */ - CALL myOrder_newWithDate(vSelf, vLandingDate); -END$$ - -DELIMITER ; -; diff --git a/db/changes/10032-webZone/00-myBasket_calcCatalogFromItem.sql b/db/changes/10032-webZone/00-myBasket_calcCatalogFromItem.sql deleted file mode 100644 index edde8f389..000000000 --- a/db/changes/10032-webZone/00-myBasket_calcCatalogFromItem.sql +++ /dev/null @@ -1,19 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`myBasket_calcCatalogFromItem`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myBasket_calcCatalogFromItem`(vItem INT) -BEGIN -/** - * Gets the availability and prices for the given item - * using current user basket parameters. - * - * @table tmp.item(itemFk) - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - * @return tmp.zoneGetShipped - */ - CALL order_calcCatalogFromItem(myBasket_getId(), vItem); -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-myBasket_calcCatalogFull.sql b/db/changes/10032-webZone/00-myBasket_calcCatalogFull.sql deleted file mode 100644 index 8e182faa9..000000000 --- a/db/changes/10032-webZone/00-myBasket_calcCatalogFull.sql +++ /dev/null @@ -1,19 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`myBasket_calcCatalogFull`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myBasket_calcCatalogFull`() -BEGIN -/** - * Gets the availability and prices for the given items - * using current user basket parameters. - * - * @table tmp.item(itemFk) - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - * @return tmp.zoneGetShipped - */ - CALL order_calcCatalogFull(myBasket_getId()); -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-myBasket_getAvailable.sql b/db/changes/10032-webZone/00-myBasket_getAvailable.sql deleted file mode 100644 index 246bbb567..000000000 --- a/db/changes/10032-webZone/00-myBasket_getAvailable.sql +++ /dev/null @@ -1,14 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`myBasket_getAvailable`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myBasket_getAvailable`() -BEGIN -/** - * Gets the available items list. - * - * @table tmp.itemAvailable - */ - CALL order_getAvailable(myBasket_getId()); -END$$ -DELIMITER ; - diff --git a/db/changes/10032-webZone/00-myOrder_getAvailable.sql b/db/changes/10032-webZone/00-myOrder_getAvailable.sql deleted file mode 100644 index 01ceb0228..000000000 --- a/db/changes/10032-webZone/00-myOrder_getAvailable.sql +++ /dev/null @@ -1,22 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`myOrder_getAvailable`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`myOrder_getAvailable`(vSelf INT) -BEGIN -/** - * Gets the available items list. - * - * @param vSelf The order id - * @table tmp.itemAvailable - */ - DECLARE isMine BOOL; - - SELECT COUNT(*) INTO isMine - FROM myOrder - WHERE id = vSelf; - - IF isMine THEN - CALL order_getAvailable(vSelf); - END IF; -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-order_addItem.sql b/db/changes/10032-webZone/00-order_addItem.sql deleted file mode 100644 index 90a4efaad..000000000 --- a/db/changes/10032-webZone/00-order_addItem.sql +++ /dev/null @@ -1,105 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`order_addItem`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_addItem`( - vSelf INT, - vWarehouse INT, - vItem INT, - vAmount INT) -BEGIN -/** - * Adds an item to the order, checking availability and grouping. - * - * @param vSelf The order id - * @param vWarehouse The warehouse id - * @param vItem The item id - * @param vAmount The amount to add - */ - DECLARE vRow INT; - DECLARE vAdd INT; - DECLARE vAvailable INT; - DECLARE vDone BOOL; - DECLARE vGrouping INT; - DECLARE vRate INT; - DECLARE vShipment DATE; - DECLARE vPrice DECIMAL(10,2); - DECLARE cur CURSOR FOR - SELECT `grouping`, price, rate - FROM tmp.ticketComponentPrice - WHERE warehouseFk = vWarehouse - AND itemFk = vItem - ORDER BY `grouping` DESC; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - CALL order_calcCatalogFromItem(vSelf, vItem); - START TRANSACTION; - - SELECT shipped INTO vShipment - FROM tmp.zoneGetShipped - WHERE warehouseFk = vWarehouse; - - SELECT available INTO vAvailable - FROM tmp.ticketLot - WHERE warehouseFk = vWarehouse - AND itemFk = vItem; - - IF vAmount > IFNULL(vAvailable, 0) THEN - CALL util.throw ('ORDER_ROW_UNAVAILABLE'); - END IF; - - OPEN cur; - - l: LOOP - SET vDone = FALSE; - FETCH cur INTO vGrouping, vPrice, vRate; - - IF vDone THEN - LEAVE l; - END IF; - - SET vAdd = vAmount - MOD(vAmount, vGrouping); - SET vAmount = vAmount - vAdd; - - IF vAdd = 0 THEN - ITERATE l; - END IF; - - INSERT INTO orderRow SET - orderFk = vSelf, - itemFk = vItem, - warehouseFk = vWarehouse, - shipment = vShipment, - rate = vRate, - amount = vAdd, - price = vPrice; - - SET vRow = LAST_INSERT_ID(); - - INSERT INTO orderRowComponent (rowFk, componentFk, price) - SELECT vRow, c.componentFk, c.cost - FROM tmp.ticketComponent c - JOIN vn.component t - ON t.id = c.componentFk - AND (t.classRate IS NULL OR t.classRate = vRate) - WHERE c.warehouseFk = vWarehouse - AND c.itemFk = vItem; - END LOOP; - - CLOSE cur; - - IF vAmount > 0 THEN - CALL util.throw ('AMOUNT_NOT_MATCH_GROUPING'); - END IF; - - COMMIT; - CALL vn.ticketCalculatePurge; -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-order_calcCatalog.sql b/db/changes/10032-webZone/00-order_calcCatalog.sql deleted file mode 100644 index 2a50d747b..000000000 --- a/db/changes/10032-webZone/00-order_calcCatalog.sql +++ /dev/null @@ -1,36 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`order_calcCatalog`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_calcCatalog`(vSelf INT) -BEGIN -/** - * Gets the availability and prices for order items. - * - * @param vSelf The order id - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - */ - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT date_send, address_id, agency_id - INTO vDate, vAddress, vAgencyMode - FROM `order` - WHERE id = vSelf; - - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (PRIMARY KEY (itemFk)) - ENGINE = MEMORY - SELECT itemFk FROM orderRow - WHERE orderFk = vSelf - GROUP BY itemFk; - - CALL vn.ticketCalculate(vDate, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE tmp.item; -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-order_calcCatalogFromItem.sql b/db/changes/10032-webZone/00-order_calcCatalogFromItem.sql deleted file mode 100644 index 8f4ca6012..000000000 --- a/db/changes/10032-webZone/00-order_calcCatalogFromItem.sql +++ /dev/null @@ -1,30 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`order_calcCatalogFromItem`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_calcCatalogFromItem`(vSelf INT, vItem INT) -BEGIN -/** - * Gets the availability and prices for the given item - * using the order parameters. - * - * @param vSelf The order id - * @table tmp.item(itemFk) - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - * @return tmp.zoneGetShipped - */ - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT date_send, address_id, agency_id - INTO vDate, vAddress, vAgencyMode - FROM `order` - WHERE id = vSelf; - - CALL vn.catalog_calcFromItem(vDate, vAddress, vAgencyMode, vItem); -END$$ -DELIMITER ; - diff --git a/db/changes/10032-webZone/00-order_calcCatalogFull.sql b/db/changes/10032-webZone/00-order_calcCatalogFull.sql deleted file mode 100644 index 7d57be472..000000000 --- a/db/changes/10032-webZone/00-order_calcCatalogFull.sql +++ /dev/null @@ -1,35 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`order_calcCatalogFull`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_calcCatalogFull`(vSelf INT) -BEGIN -/** - * Gets the availability and prices for the given items - * using the order parameters. - * - * @param vSelf The order id - * @table tmp.item(itemFk) - * @return tmp.ticketCalculateItem - * @return tmp.ticketComponentPrice - * @return tmp.ticketComponent - * @return tmp.ticketLot - * @return tmp.zoneGetShipped - */ - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT date_send, address_id, agency_id - INTO vDate, vAddress, vAgencyMode - FROM `order` - WHERE id = vSelf; - - CALL vn.ticketCalculate(vDate, vAddress, vAgencyMode); - - IF account.myUserGetName() = 'visitor' - THEN - DROP TEMPORARY TABLE tmp.ticketComponent; - UPDATE tmp.ticketCalculateItem SET price = NULL; - END IF; -END$$ -DELIMITER ; diff --git a/db/changes/10032-webZone/00-order_getAvailable.sql b/db/changes/10032-webZone/00-order_getAvailable.sql deleted file mode 100644 index 1182b4840..000000000 --- a/db/changes/10032-webZone/00-order_getAvailable.sql +++ /dev/null @@ -1,34 +0,0 @@ -DROP procedure IF EXISTS `hedera`.`order_getAvailable`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_getAvailable`(vSelf INT) -BEGIN -/** - * Gets the available items list. - * - * @param vSelf The order id - * @table tmp.itemAvailable - */ - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT date_send, address_id, agency_id - INTO vDelivery, vAddress, vAgencyMode - FROM `order` - WHERE id = vSelf; - - CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; - CREATE TEMPORARY TABLE tmp.itemAvailable - (INDEX (id)) - ENGINE = MEMORY - SELECT DISTINCT a.item_id id - FROM `cache`.available a - JOIN tmp.availableCalc c ON c.calcFk = a.calc_id - WHERE a.available > 0; - - DROP TEMPORARY TABLE tmp.availableCalc; -END$$ - -DELIMITER ; \ No newline at end of file diff --git a/db/changes/10032-webZone/00-order_update.sql b/db/changes/10032-webZone/00-order_update.sql deleted file mode 100644 index 23e4045e5..000000000 --- a/db/changes/10032-webZone/00-order_update.sql +++ /dev/null @@ -1,71 +0,0 @@ - -DROP procedure IF EXISTS `hedera`.`order_update`; -DELIMITER $$ -CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`order_update`(vSelf INT) -proc: BEGIN -/** - * Actualiza las líneas de un pedido. - * - * @param vSelf Id del pedido - */ - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - DECLARE vNRows INT; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - - SELECT COUNT(*) INTO vNRows - FROM orderRow WHERE orderFk = vSelf; - - IF vNRows > 0 - THEN - CALL order_calcCatalog(vSelf); - - DELETE c - FROM orderRow r - JOIN orderRowComponent c ON c.rowFk = r.id - WHERE r.orderFk = vSelf; - - UPDATE orderRow r - LEFT JOIN tmp.ticketComponentPrice p - ON p.warehouseFk = r.warehouseFk - AND p.itemFk = r.itemFk - AND p.rate = r.rate - LEFT JOIN tmp.zoneGetShipped t - ON t.warehouseFk = r.warehouseFk - SET - r.price = p.price, - r.amount = IF(p.itemFk IS NOT NULL, - r.amount + IF(@m := MOD(r.amount, p.`grouping`), p.`grouping` - @m, 0), 0), - r.shipment = t.shipped - WHERE r.orderFk = vSelf; - - INSERT INTO orderRowComponent(rowFk, componentFk, price) - SELECT r.id, c.componentFk, c.cost - FROM orderRow r - JOIN tmp.ticketComponent c - ON c.warehouseFk = r.warehouseFk - AND c.itemFk = r.itemFk - JOIN vn.component t - ON t.id = c.componentFk - AND (t.classRate IS NULL OR t.classRate = r.rate) - WHERE r.orderFk = vSelf; - - CALL vn.ticketCalculatePurge; - END IF; - - UPDATE `order` SET date_make = NOW() - WHERE id = vSelf; - - COMMIT; -END$$ - -DELIMITER ; - diff --git a/db/changes/10032-webZone/98-rename.sql b/db/changes/10032-webZone/98-rename.sql deleted file mode 100644 index d0799b6e6..000000000 --- a/db/changes/10032-webZone/98-rename.sql +++ /dev/null @@ -1 +0,0 @@ -RENAME TABLE hedera.myOrderMyTicket TO hedera.myOrderTicket; \ No newline at end of file diff --git a/db/changes/10032-webZone/99-privs.sql b/db/changes/10032-webZone/99-privs.sql deleted file mode 100644 index 477a7f0d4..000000000 --- a/db/changes/10032-webZone/99-privs.sql +++ /dev/null @@ -1,10 +0,0 @@ -GRANT EXECUTE ON PROCEDURE vn.zoneGetAgency TO `account`@`%`; -GRANT EXECUTE ON PROCEDURE hedera.myBasket_calcCatalogFromItem TO `guest`@`%`; -GRANT EXECUTE ON PROCEDURE hedera.myBasket_calcCatalogFull TO `guest`@`%`; -GRANT EXECUTE ON PROCEDURE hedera.myBasket_getAvailable TO `guest`@`%`; -GRANT EXECUTE ON PROCEDURE hedera.myOrder_getAvailable TO `guest`@`%`; -GRANT EXECUTE ON PROCEDURE hedera.catalog_calcFromMyAddress TO account@'%'; -REVOKE SELECT ON TABLE hedera.myOrderMyTicket FROM account@'%'; -GRANT SELECT ON TABLE hedera.myOrderTicket TO account@'%'; - -CALL account.privSync; diff --git a/db/changes/10040-mother/00-acl.sql b/db/changes/10040-mother/00-acl.sql new file mode 100644 index 000000000..b1be18c78 --- /dev/null +++ b/db/changes/10040-mother/00-acl.sql @@ -0,0 +1,16 @@ +UPDATE `salix`.`ACL` SET principalId ='employee' WHERE id = 122; + +INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + (167, 'Worker', 'isSubordinate', 'READ', 'ALLOW', 'ROLE', 'employee'), + (168, 'Worker', 'mySubordinates', 'READ', 'ALLOW', 'ROLE', 'employee'), + (169, 'WorkerTimeControl', 'filter', 'READ', 'ALLOW', 'ROLE', 'employee'), + (170, 'WorkerTimeControl', 'addTime', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + (171, 'TicketServiceType', '*', 'WRITE', 'ALLOW', 'ROLE', 'administrative'); + +-- ONLY FOR ACL ALREADY ON PRODUCTION +INSERT IGNORE INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + (172, 'Sms', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + (173, 'Sms', 'send', 'WRITE', 'ALLOW', 'ROLE', 'employee'); + diff --git a/db/changes/10040-mother/00-clest.sql b/db/changes/10040-mother/00-clest.sql new file mode 100644 index 000000000..5f7846478 --- /dev/null +++ b/db/changes/10040-mother/00-clest.sql @@ -0,0 +1,12 @@ +ALTER TABLE `vn2008`.`cl_est` +ADD COLUMN `roleFk` INT(10) UNSIGNED NOT NULL DEFAULT '1' AFTER `estado`; + +ALTER TABLE `vn2008`.`cl_est` +ADD INDEX `roleFgn_idx` (`roleFk` ASC); + +ALTER TABLE `vn2008`.`cl_est` +ADD CONSTRAINT `roleFgn` + FOREIGN KEY (`roleFk`) + REFERENCES `account`.`role` (`id`) + ON DELETE RESTRICT + ON UPDATE CASCADE; diff --git a/db/changes/10040-mother/00-clientDms.sql b/db/changes/10040-mother/00-clientDms.sql new file mode 100644 index 000000000..718fbc160 --- /dev/null +++ b/db/changes/10040-mother/00-clientDms.sql @@ -0,0 +1,10 @@ +CREATE + ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`clientDms` AS + SELECT + `g`.`Id_Cliente` AS `clientFk`, + `g`.`gest_doc_id` AS `dmsFk` + FROM + `vn2008`.`clientes_gestdoc` `g` \ No newline at end of file diff --git a/db/changes/10003-easter/00-dmsView.sql b/db/changes/10040-mother/00-dmsView.sql similarity index 73% rename from db/changes/10003-easter/00-dmsView.sql rename to db/changes/10040-mother/00-dmsView.sql index 88d32f93c..d1194f825 100644 --- a/db/changes/10003-easter/00-dmsView.sql +++ b/db/changes/10040-mother/00-dmsView.sql @@ -1,18 +1,17 @@ -USE `vn`; -CREATE +CREATE OR REPLACE ALGORITHM = UNDEFINED - DEFINER = `root`@`%` + DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW `vn`.`dms` AS - SELECT + SELECT `g`.`id` AS `id`, `g`.`gesttip_id` AS `dmsTypeFk`, `g`.`file` AS `file`, `g`.`trabajador_id` AS `workerFk`, `g`.`warehouse_id` AS `warehouseFk`, `g`.`emp_id` AS `companyFk`, - `g`.`orden` AS `priority`, - `g`.`file` AS `hasFile`, + `g`.`orden` AS `hardCopyNumber`, + `g`.`original` AS `hasFile`, `g`.`sref` AS `reference`, `g`.`brief` AS `description`, `g`.`odbc_date` AS `created` diff --git a/db/changes/10040-mother/00-mandateType.sql b/db/changes/10040-mother/00-mandateType.sql new file mode 100644 index 000000000..9b16e93d7 --- /dev/null +++ b/db/changes/10040-mother/00-mandateType.sql @@ -0,0 +1 @@ +UPDATE `vn2008`.`mandato_tipo` SET `Nombre`='LCR' WHERE `idmandato_tipo`='3'; diff --git a/db/changes/10040-mother/00-sample.sql b/db/changes/10040-mother/00-sample.sql new file mode 100644 index 000000000..033882ac8 --- /dev/null +++ b/db/changes/10040-mother/00-sample.sql @@ -0,0 +1,4 @@ + +INSERT INTO `vn`.`sample`(`code`, `description`, `isVisible`, `hasCompany`) + VALUES + ('client-lcr', 'Email de solicitud de datos bancarios LCR', 1, 1); \ No newline at end of file diff --git a/db/changes/10040-mother/00-tarifaComponentes.sql b/db/changes/10040-mother/00-tarifaComponentes.sql new file mode 100644 index 000000000..ac22ce309 --- /dev/null +++ b/db/changes/10040-mother/00-tarifaComponentes.sql @@ -0,0 +1,2 @@ +ALTER TABLE `bi`.`tarifa_componentes` +ADD COLUMN `code` VARCHAR(45) NULL DEFAULT NULL AFTER `is_renewable`; diff --git a/db/changes/10040-mother/01-claimState.sql b/db/changes/10040-mother/01-claimState.sql new file mode 100644 index 000000000..78a7dfa3c --- /dev/null +++ b/db/changes/10040-mother/01-claimState.sql @@ -0,0 +1,11 @@ +CREATE + OR REPLACE ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`claimState` AS + SELECT + `c`.`id` AS `id`, + `c`.`estado` AS `description`, + `c`.`roleFk` AS `roleFk` + FROM + `vn2008`.`cl_est` `c`; diff --git a/db/changes/10040-mother/01-componentRate.sql b/db/changes/10040-mother/01-componentRate.sql new file mode 100644 index 000000000..2ee8242fd --- /dev/null +++ b/db/changes/10040-mother/01-componentRate.sql @@ -0,0 +1,16 @@ + +CREATE + OR REPLACE ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`componentRate` AS + SELECT + `t`.`Id_Componente` AS `id`, + `t`.`Componente` AS `name`, + `t`.`tarifa_componentes_series_id` AS `componentTypeRate`, + `t`.`tarifa_class` AS `classRate`, + `t`.`tax` AS `tax`, + `t`.`is_renewable` AS `isRenewable`, + `t`.`code` AS `code` + FROM + `bi`.`tarifa_componentes` `t`; diff --git a/db/changes/10040-mother/01-viewTicket.sql b/db/changes/10040-mother/01-viewTicket.sql new file mode 100644 index 000000000..00b770766 --- /dev/null +++ b/db/changes/10040-mother/01-viewTicket.sql @@ -0,0 +1,26 @@ +CREATE OR REPLACE + ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`ticket` AS + SELECT + `t`.`Id_Ticket` AS `id`, + `t`.`Id_Cliente` AS `clientFk`, + `t`.`warehouse_id` AS `warehouseFk`, + `t`.`Fecha` AS `shipped`, + `t`.`landing` AS `landed`, + `t`.`Alias` AS `nickname`, + `t`.`Factura` AS `refFk`, + `t`.`Id_Consigna` AS `addressFk`, + `t`.`Localizacion` AS `location`, + `t`.`Solucion` AS `solution`, + `t`.`Id_Ruta` AS `routeFk`, + `t`.`empresa_id` AS `companyFk`, + `t`.`Id_Agencia` AS `agencyModeFk`, + `t`.`Prioridad` AS `priority`, + `t`.`Bultos` AS `packages`, + `t`.`isDeleted` AS `isDeleted`, + `t`.`odbc_date` AS `created`, + `t`.`zoneFk` AS `zoneFk` + FROM + `vn2008`.`Tickets` `t`; \ No newline at end of file diff --git a/db/changes/10050-pentecostes/00-ACL.sql b/db/changes/10050-pentecostes/00-ACL.sql new file mode 100644 index 000000000..599f7aecf --- /dev/null +++ b/db/changes/10050-pentecostes/00-ACL.sql @@ -0,0 +1,17 @@ +INSERT INTO `salix`.`ACL` ( `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Dms', 'removeFile', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Dms', 'uploadFile', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Dms', 'downloadFile', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Client', 'uploadFile', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('ClientDms', 'removeFile', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('ClientDms', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'uploadFile', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('TicketDms', 'removeFile', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('TicketDms', '*', 'READ', 'ALLOW', 'ROLE', 'employee'), + ('Route', 'updateVolume', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'); + + + +INSERT INTO `salix`.`ACL` (`id`, `model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('', 'Agency', 'getLanded', 'READ', 'ALLOW', 'ROLE', 'employee'); +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) VALUES ('Agency', 'getShipped', 'READ', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/10050-pentecostes/00-clientesgestdoc.sql b/db/changes/10050-pentecostes/00-clientesgestdoc.sql new file mode 100644 index 000000000..113fd23e1 --- /dev/null +++ b/db/changes/10050-pentecostes/00-clientesgestdoc.sql @@ -0,0 +1,15 @@ +ALTER TABLE `vn2008`.`clientes_gestdoc` +DROP FOREIGN KEY `clientes_gestdoc_ibfk_3`; +ALTER TABLE `vn2008`.`clientes_gestdoc` +DROP PRIMARY KEY, +ADD PRIMARY KEY (`gest_doc_id`); + +ALTER TABLE `vn2008`.`clientes_gestdoc` +ADD INDEX `fk_clientes_gestdoc_1_idx` (`Id_Cliente` ASC); + +ALTER TABLE `vn2008`.`clientes_gestdoc` +ADD CONSTRAINT `fk_clientes_gestdoc_3` + FOREIGN KEY (`Id_Cliente`) + REFERENCES `vn2008`.`Clientes` (`id_cliente`) + ON DELETE RESTRICT + ON UPDATE CASCADE; diff --git a/db/changes/10050-pentecostes/01-expeditionsBeforeInsert.sql b/db/changes/10050-pentecostes/01-expeditionsBeforeInsert.sql new file mode 100644 index 000000000..916def4b4 --- /dev/null +++ b/db/changes/10050-pentecostes/01-expeditionsBeforeInsert.sql @@ -0,0 +1,28 @@ +DROP TRIGGER IF EXISTS `vn2008`.`expeditionsBeforeInsert`; + +DELIMITER $$ +CREATE DEFINER=`root`@`%` TRIGGER `vn2008`.`expeditionsBeforeInsert` +BEFORE INSERT ON `expeditions` FOR EACH ROW +-- Edit trigger body code below this line. Do not edit lines above this one +BEGIN + DECLARE intcounter INT; + DECLARE vShipFk INT; + + IF NEW.EsBulto > 0 THEN + + UPDATE Tickets SET Bultos = nz(Bultos) + 1 WHERE Id_Ticket = NEW.ticket_id; + SELECT IFNULL(MAX(counter),0) +1 INTO intcounter FROM expeditions e + INNER JOIN Tickets t1 ON e.ticket_id = t1.Id_Ticket + LEFT JOIN vn.ticketState ts ON ts.ticket = t1.Id_Ticket + INNER JOIN Tickets t2 ON t2.Id_Consigna = t1.Id_Consigna AND DATE(t2.Fecha) = DATE(t1.Fecha) AND t1.warehouse_id = t2.warehouse_id + WHERE t2.Id_Ticket = NEW.ticket_id AND ts.alertLevel < 3 AND t1.empresa_id = t2.empresa_id AND t1.Id_Agencia = t2.Id_Agencia; + SET NEW.`counter` = intcounter; + END IF; + + -- JGF 14/01/19 si existe un polizon queda anulado + SELECT shipFk INTO vShipFk FROM vn.stowaway WHERE id = NEW.ticket_id; + IF vShipFk THEN + CALL vn.stowawayUnBoarding(vShipFk, NEW.ticket_id); + END IF; +END$$ +DELIMITER ; diff --git a/db/changes/10050-pentecostes/01-gesttipData.sql b/db/changes/10050-pentecostes/01-gesttipData.sql new file mode 100644 index 000000000..475702a5f --- /dev/null +++ b/db/changes/10050-pentecostes/01-gesttipData.sql @@ -0,0 +1,21 @@ +-- adds column to table +ALTER TABLE `vn2008`.`gesttip` +ADD COLUMN `code` VARCHAR(45) NOT NULL AFTER `readRoleFk`; + +-- adds column to view +CREATE + OR REPLACE ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`dmsType` AS + SELECT + `g`.`id` AS `id`, + `g`.`tipo` AS `name`, + `g`.`path` AS `path`, + `g`.`readRoleFk` AS `readRoleFk`, + `g`.`writeRoleFk` AS `writeRoleFk`, + `g`.`code` AS `code` + FROM + `vn2008`.`gesttip` `g`; + + diff --git a/db/changes/10050-pentecostes/01-routeUpdateM3.sql b/db/changes/10050-pentecostes/01-routeUpdateM3.sql new file mode 100644 index 000000000..6b74df6d7 --- /dev/null +++ b/db/changes/10050-pentecostes/01-routeUpdateM3.sql @@ -0,0 +1,17 @@ + +DROP procedure IF EXISTS `vn`.`routeUpdateM3`; + +DELIMITER $$ +CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`routeUpdateM3`(vRoute INT) +BEGIN + + UPDATE vn.route r + JOIN (SELECT routeFk, SUM(volume) AS m3 + FROM ticketGetVolume + WHERE routeFk = vRoute + ) v ON v.routeFk = r.id + SET r.m3 = v.m3; +END$$ + +DELIMITER ; + diff --git a/db/changes/10050-pentecostes/01-tarifaComponentesData.sql b/db/changes/10050-pentecostes/01-tarifaComponentesData.sql new file mode 100644 index 000000000..b7a9803e3 --- /dev/null +++ b/db/changes/10050-pentecostes/01-tarifaComponentesData.sql @@ -0,0 +1,17 @@ +UPDATE `bi`.`tarifa_componentes` SET `code`='specialPrices' WHERE `Id_Componente`='10'; +UPDATE `bi`.`tarifa_componentes` SET `code`='extraCostPerWeekDay' WHERE `Id_Componente`='14'; +UPDATE `bi`.`tarifa_componentes` SET `code`='delivery' WHERE `Id_Componente`='15'; +UPDATE `bi`.`tarifa_componentes` SET `code`='debtCollection' WHERE `Id_Componente`='17'; +UPDATE `bi`.`tarifa_componentes` SET `code`='adjustment' WHERE `Id_Componente`='21'; +UPDATE `bi`.`tarifa_componentes` SET `code`='salePerPackage' WHERE `Id_Componente`='22'; +UPDATE `bi`.`tarifa_componentes` SET `code`='salePerBox' WHERE `Id_Componente`='23'; +UPDATE `bi`.`tarifa_componentes` SET `code`='purchaseValue' WHERE `Id_Componente`='28'; +UPDATE `bi`.`tarifa_componentes` SET `code`='margin' WHERE `Id_Componente`='29'; +UPDATE `bi`.`tarifa_componentes` SET `code`='lastUnitsDiscount' WHERE `Id_Componente`='32'; +UPDATE `bi`.`tarifa_componentes` SET `code`='salePerBox' WHERE `Id_Componente`='33'; +UPDATE `bi`.`tarifa_componentes` SET `code`='buyerDiscount' WHERE `Id_Componente`='34'; +UPDATE `bi`.`tarifa_componentes` SET `code`='mismatch' WHERE `Id_Componente`='36'; +UPDATE `bi`.`tarifa_componentes` SET `code`='mana' WHERE `Id_Componente`='37'; +UPDATE `bi`.`tarifa_componentes` SET `code`='bagged' WHERE `Id_Componente`='38'; +UPDATE `bi`.`tarifa_componentes` SET `code`='autoMana' WHERE `Id_Componente`='39'; +UPDATE `bi`.`tarifa_componentes` SET `code`='freightCharge' WHERE `Id_Componente`='41'; diff --git a/db/changes/10050-pentecostes/01-zoneGetWarehouse.sql b/db/changes/10050-pentecostes/01-zoneGetWarehouse.sql new file mode 100644 index 000000000..6174554e5 --- /dev/null +++ b/db/changes/10050-pentecostes/01-zoneGetWarehouse.sql @@ -0,0 +1,49 @@ + +DROP procedure IF EXISTS `vn`.`zoneGetWarehouse`; + +DELIMITER $$ +CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`zoneGetWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT) +BEGIN +/** +* Devuelve el listado de agencias disponibles para la fecha, + * dirección y warehouse pasadas + * + * @param vAddress + * @param vWarehouse warehouse + * @param vLanded Fecha de recogida + * @select Listado de agencias disponibles + */ + + DECLARE vPostalCode varchar(10); + + SELECT postalCode INTO vPostalCode + FROM address WHERE id = vAddress; + SELECT * FROM ( + SELECT * FROM ( + SELECT am.id agencyModeFk, + am.name agencyMode, + am.description, + am.deliveryMethodFk, + TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, + z.warehouseFk, + zi.isIncluded, + z.id zoneFk + FROM zoneGeo zgSon + JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt + JOIN zoneIncluded zi ON zi.geoFk = zgFather.id + JOIN zone z ON z.id = zi.zoneFk + JOIN zoneCalendar zc ON zc.zoneFk = z.id + JOIN agencyMode am ON am.id = z.agencyModeFk + WHERE zgSon.`name` LIKE vPostalCode + AND delivered = vLanded + AND z.warehouseFk = vWarehouse + AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) + ORDER BY z.id, zgFather.depth DESC) t + GROUP BY zoneFk + HAVING isIncluded > 0) t + GROUP BY agencyModeFk; + +END$$ + +DELIMITER ; + diff --git a/db/changes/10050-pentecostes/02-dmsType.sql b/db/changes/10050-pentecostes/02-dmsType.sql new file mode 100644 index 000000000..24d88903f --- /dev/null +++ b/db/changes/10050-pentecostes/02-dmsType.sql @@ -0,0 +1,24 @@ +UPDATE `vn2008`.`gesttip` SET `writeRoleFk`='1', `readRoleFk`='1' WHERE `id`='5'; +UPDATE `vn2008`.`gesttip` SET `writeRoleFk`='1', `readRoleFk`='1' WHERE `id`='12'; +UPDATE `vn2008`.`gesttip` SET `writeRoleFk`='1', `readRoleFk`='1' WHERE `id`='14'; +UPDATE `vn2008`.`gesttip` SET `writeRoleFk`='1', `readRoleFk`='1' WHERE `id`='13'; +UPDATE `vn2008`.`gesttip` SET `code`='invoiceIn' WHERE `id`='1'; +UPDATE `vn2008`.`gesttip` SET `code`='officialDoc' WHERE `id`='2'; +UPDATE `vn2008`.`gesttip` SET `code`='hhrrData' WHERE `id`='3'; +UPDATE `vn2008`.`gesttip` SET `code`='deliveryNote' WHERE `id`='4'; +UPDATE `vn2008`.`gesttip` SET `code`='miscellaneous' WHERE `id`='5'; +UPDATE `vn2008`.`gesttip` SET `code`='tests' WHERE `id`='6'; +UPDATE `vn2008`.`gesttip` SET `code`='economicActivitiesTax' WHERE `id`='7'; +UPDATE `vn2008`.`gesttip` SET `code`='fiscal' WHERE `id`='8'; +UPDATE `vn2008`.`gesttip` SET `code`='vehicles' WHERE `id`='9'; +UPDATE `vn2008`.`gesttip` SET `code`='templates' WHERE `id`='10'; +UPDATE `vn2008`.`gesttip` SET `code`='contracts' WHERE `id`='11'; +UPDATE `vn2008`.`gesttip` SET `code`='paymentsLaw' WHERE `id`='12'; +UPDATE `vn2008`.`gesttip` SET `code`='trash' WHERE `id`='13'; +UPDATE `vn2008`.`gesttip` SET `code`='ticket' WHERE `id`='14'; +UPDATE `vn2008`.`gesttip` SET `code`='budgets' WHERE `id`='15'; +UPDATE `vn2008`.`gesttip` SET `code`='logistics' WHERE `id`='16'; +UPDATE `vn2008`.`gesttip` SET `code`='cmr' WHERE `id`='17'; +UPDATE `vn2008`.`gesttip` SET `code`='dua' WHERE `id`='18'; +UPDATE `vn2008`.`gesttip` SET `code`='fixedAssets' WHERE `id`='19'; + diff --git a/db/changes/10050-pentecostes/02-paisesTableCountryView.sql b/db/changes/10050-pentecostes/02-paisesTableCountryView.sql new file mode 100644 index 000000000..dad2cdb50 --- /dev/null +++ b/db/changes/10050-pentecostes/02-paisesTableCountryView.sql @@ -0,0 +1,28 @@ +ALTER TABLE `vn2008`.`Paises` +ADD COLUMN `ibanLength` TINYINT(4) NULL DEFAULT NULL AFTER `isUeeMember`; + +CREATE + OR REPLACE ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`country` AS + SELECT + `p`.`Id` AS `id`, + `p`.`Pais` AS `country`, + `p`.`CEE` AS `CEE`, + `p`.`isUeeMember` AS `isUeeMember`, + `p`.`Codigo` AS `code`, + `p`.`Id_Moneda` AS `currencyFk`, + `p`.`Id_Paisreal` AS `politicalCountryFk`, + `p`.`geoFk` AS `geoFk`, + `p`.`ibanLength` AS `ibanLength` + FROM + `vn2008`.`Paises` `p`; + +UPDATE `vn2008`.`Paises` SET `ibanLength`=22 WHERE `Id`=1; +UPDATE `vn2008`.`Paises` SET `ibanLength`=25 WHERE `Id`=2; +UPDATE `vn2008`.`Paises` SET `ibanLength`=20 WHERE `Id`=3; +UPDATE `vn2008`.`Paises` SET `ibanLength`=22 WHERE `Id`=4; +UPDATE `vn2008`.`Paises` SET `ibanLength`=16 WHERE `Id`=5; +UPDATE `vn2008`.`Paises` SET `ibanLength`=25 WHERE `Id`=19; +UPDATE `vn2008`.`Paises` SET `ibanLength`=22 WHERE `Id`=30; diff --git a/db/changes/10060-summer/00-ACL.sql b/db/changes/10060-summer/00-ACL.sql new file mode 100644 index 000000000..90f25f089 --- /dev/null +++ b/db/changes/10060-summer/00-ACL.sql @@ -0,0 +1,5 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('Zone', 'editPrices', 'WRITE', 'ALLOW', 'ROLE', 'deliveryBoss'), + ('Postcode', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee'), + ('Ticket', 'addSale', 'WRITE', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/10060-summer/00-zoneCalendar.sql b/db/changes/10060-summer/00-zoneCalendar.sql new file mode 100644 index 000000000..a3c091643 --- /dev/null +++ b/db/changes/10060-summer/00-zoneCalendar.sql @@ -0,0 +1,3 @@ +ALTER TABLE `vn`.`zoneCalendar` +ADD COLUMN `price` DOUBLE NOT NULL AFTER `delivered`, +ADD COLUMN `bonus` DOUBLE NOT NULL AFTER `price`; diff --git a/db/changes/10060-summer/01-ticketGetProblems.sql b/db/changes/10060-summer/01-ticketGetProblems.sql new file mode 100644 index 000000000..9bc8b5e2d --- /dev/null +++ b/db/changes/10060-summer/01-ticketGetProblems.sql @@ -0,0 +1,139 @@ +DROP procedure IF EXISTS `vn`.`ticketGetProblems`; + +DELIMITER $$ +CREATE DEFINER=`root`@`%` PROCEDURE `vn`.`ticketGetProblems`() +BEGIN + + DECLARE vWarehouse INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone INT DEFAULT 0; + + DECLARE vCursor CURSOR FOR + SELECT DISTINCT tt.warehouseFk, date(tt.shipped) + FROM tmp.ticketGetProblems tt + WHERE DATE(tt.shipped) BETWEEN CURDATE() + AND TIMESTAMPADD(DAY, 1.9, CURDATE()); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketProblems; + CREATE TEMPORARY TABLE tmp.ticketProblems ( + ticketFk INT(11) PRIMARY KEY, + isFreezed INTEGER(1) DEFAULT 0, + risk DECIMAL(10,2) DEFAULT 0, + hasTicketRequest INTEGER(1) DEFAULT 0, + isAvailable INTEGER(1) DEFAULT 1 + ) ENGINE = MEMORY; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketList; + CREATE TEMPORARY TABLE tmp.ticketList + (PRIMARY KEY (ticketFk)) + ENGINE = MEMORY + SELECT tp.ticketFk, c.id clientFk + FROM tmp.ticketGetProblems tp + JOIN vn.client c ON c.id = tp.clientFk; + + + INSERT INTO tmp.ticketProblems(ticketFk, isFreezed) + SELECT DISTINCT tl.ticketFk, 1 + FROM tmp.ticketList tl + JOIN vn.client c ON c.id = tl.clientFk + WHERE c.isFreezed; + + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; + CREATE TEMPORARY TABLE tmp.clientGetDebt + (PRIMARY KEY (clientFk)) + ENGINE = MEMORY + SELECT DISTINCT clientFk + FROM tmp.ticketList; + + CALL clientGetDebt(CURDATE()); + + + INSERT INTO tmp.ticketProblems(ticketFk, risk) + SELECT DISTINCT tl.ticketFk, r.risk + FROM tmp.ticketList tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.agencyMode a ON t.agencyModeFk = a.id + JOIN tmp.risk r ON r.clientFk = t.clientFk + JOIN vn.client c ON c.id = t.clientFk + WHERE r.risk > c.credit + 10 + AND a.deliveryMethodFk != 3 + ON DUPLICATE KEY UPDATE + risk = r.risk; + + INSERT INTO tmp.ticketProblems(ticketFk, hasTicketRequest) + SELECT DISTINCT tl.ticketFk, 1 + FROM tmp.ticketList tl + JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk + WHERE tr.isOK IS NULL + ON DUPLICATE KEY UPDATE + hasTicketRequest = 1; + + OPEN vCursor; + + WHILE NOT vDone + DO + FETCH vCursor INTO vWarehouse, vDate; + + CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouse); + CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouse, vDate); + + + INSERT INTO tmp.ticketProblems(ticketFk, isAvailable) + SELECT tl.ticketFk, 0 + FROM tmp.ticketList tl + JOIN vn.ticket t ON t.id = tl.ticketFk + LEFT JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + LEFT JOIN cache.available av ON av.item_id = i.id + AND av.calc_id = vAvailableCache + WHERE date(t.shipped) = vDate + AND categoryFk != 6 + AND IFNULL(av.available, 0) < 0 + AND s.isPicked = FALSE + AND NOT i.generic + AND vWarehouse = t.warehouseFk + GROUP BY tl.ticketFk + ON DUPLICATE KEY UPDATE + isAvailable = 0; + + INSERT INTO tmp.ticketProblems(ticketFk, isAvailable) + SELECT tl.ticketFk, 0 + FROM tmp.ticketList tl + JOIN vn.ticket t ON t.id = tl.ticketFk + LEFT JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + LEFT JOIN cache.visible v ON i.id = v.item_id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + WHERE IFNULL(av.available, 0) >= 0 + AND s.quantity > IFNULL(v.visible, 0) + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND it.categoryFk != 6 + AND date(t.shipped) = vDate + AND NOT i.generic + AND CURDATE() = vDate + AND t.warehouseFk = vWarehouse + GROUP BY tl.ticketFk + ON DUPLICATE KEY UPDATE + isAvailable = 0; + + END WHILE; + + CLOSE vCursor; + + SELECT * FROM tmp.ticketProblems; + + DROP TEMPORARY TABLE + tmp.clientGetDebt, + tmp.ticketList; + +END$$ + +DELIMITER ; + diff --git a/db/docker-boot.sh b/db/docker-boot.sh index 0d9eb9f35..6e04d3377 100755 --- a/db/docker-boot.sh +++ b/db/docker-boot.sh @@ -5,7 +5,7 @@ export MYSQL_PWD=root mysql_import() { FILE=$1 echo "[INFO] -> Imported $FILE" - mysql -u root --comments -f < "$FILE" + mysql -u root --default-character-set=utf8 --comments -f < "$FILE" } mysql_import dump/structure.sql diff --git a/db/dump/dumpedFixtures.sql b/db/dump/dumpedFixtures.sql index ca045563b..565786917 100644 --- a/db/dump/dumpedFixtures.sql +++ b/db/dump/dumpedFixtures.sql @@ -23,7 +23,7 @@ USE `util`; LOCK TABLES `config` WRITE; /*!40000 ALTER TABLE `config` DISABLE KEYS */; -INSERT INTO `config` VALUES (1,'10003',0,'production',NULL); +INSERT INTO `config` VALUES (1,'10032',0,'production',NULL); /*!40000 ALTER TABLE `config` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -36,7 +36,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:33 USE `account`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -61,7 +61,7 @@ USE `account`; LOCK TABLES `role` WRITE; /*!40000 ALTER TABLE `role` DISABLE KEYS */; -INSERT INTO `role` VALUES (0,'root','Rol con todos los privilegios',0,'2018-04-23 14:33:36','2018-04-23 14:33:59'),(1,'employee','Empleado básico',1,'2017-05-19 07:04:58','2017-11-29 10:06:31'),(2,'customer','Privilegios básicos de un cliente',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(3,'agency','Consultar tablas de predicciones de bultos',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(5,'administrative','Tareas relacionadas con la contabilidad',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(6,'guest','Privilegios para usuarios sin cuenta',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(9,'developer','Desarrolladores del sistema',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(11,'account','Privilegios relacionados con el login',0,'2017-05-19 07:04:58','2017-09-20 17:06:35'),(13,'teamBoss','Jefe de departamento',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(15,'logistic','Departamento de compras, responsables de la logistica',1,'2017-05-19 07:04:58','2018-02-12 10:50:10'),(16,'logisticBoss','Jefe del departamento de logística',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(17,'adminBoss','Jefe del departamento de administración',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(18,'salesPerson','Departamento de ventas',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(19,'salesBoss','Jefe del departamento de ventas',1,'2017-05-19 07:04:58','2017-08-16 12:38:27'),(20,'manager','Departamento de gerencia',1,'2017-06-01 14:57:02','2017-06-01 14:57:51'),(21,'salesAssistant','Jefe auxiliar de ventas',1,'2017-08-16 12:40:52','2017-08-16 12:40:52'),(22,'teamManager','Jefe de departamento con privilegios de auxiliar de venta.',1,'2017-09-07 09:08:12','2017-09-07 09:08:12'),(30,'financialBoss','Director finaciero',1,'2017-09-21 11:05:36','2017-09-21 11:05:36'),(31,'freelancer','Trabajadores por cuenta ajena',1,'2017-10-10 12:57:26','2017-10-10 12:59:27'),(32,'ett','Trabajadores de empresa temporal',1,'2017-10-10 12:58:58','2017-10-10 12:59:20'),(33,'invoicing','Personal con acceso a facturación',0,'2018-01-29 16:43:34','2018-01-29 16:43:34'),(34,'agencyBoss','Jefe/a del departamento de agencias',1,'2018-01-29 16:44:39','2018-02-23 07:58:53'),(35,'buyer','Departamento de compras',1,'2018-02-12 10:35:42','2018-02-12 10:35:42'),(36,'replenisher','Trabajadores de camara',1,'2018-02-16 14:07:10','2019-04-12 05:38:08'),(37,'hr','Gestor/a de recursos humanos',1,'2018-02-22 17:34:53','2018-02-22 17:34:53'),(38,'hrBoss','Jefe/a de recursos humanos',1,'2018-02-22 17:35:09','2018-02-22 17:35:09'),(39,'adminAssistant','Jefe auxiliar administrativo',1,'2018-02-23 10:37:36','2018-02-23 10:38:41'),(40,'handmade','Departamento de confección',1,'2018-02-23 11:14:53','2018-02-23 11:39:12'),(41,'handmadeBoss','Jefe de departamento de confección',1,'2018-02-23 11:15:09','2018-02-23 11:39:26'),(42,'artificial','Departamento de artificial',1,'2018-02-23 11:39:59','2018-02-23 11:39:59'),(43,'artificialBoss','Jefe del departamento de artificial',1,'2018-02-23 11:40:16','2018-02-23 11:40:16'),(44,'accessory','Departamento de complementos',1,'2018-02-23 11:41:12','2018-02-23 11:41:12'),(45,'accessoryBoss','Jefe del departamento de complementos',1,'2018-02-23 11:41:23','2018-02-23 11:41:23'),(47,'cooler','Empleados de cámara',1,'2018-02-23 13:08:18','2018-02-23 13:08:18'),(48,'coolerBoss','Jefe del departamento de cámara',1,'2018-02-23 13:12:01','2018-02-23 13:12:01'),(49,'production','Empleado de producción',0,'2018-02-26 15:28:23','2019-01-21 12:57:21'),(50,'productionBoss','Jefe de producción',1,'2018-02-26 15:34:12','2018-02-26 15:34:12'),(51,'marketing','Departamento de marketing',1,'2018-03-01 07:28:39','2018-03-01 07:28:39'),(52,'marketingBoss','Jefe del departamento de marketing',1,'2018-03-01 07:28:57','2018-03-01 07:28:57'),(53,'insurance','Gestor de seguros de cambio',0,'2018-03-05 07:44:35','2019-02-01 13:47:57'),(54,'itemPicker','Sacador en cámara',1,'2018-03-05 12:08:17','2018-03-05 12:08:17'),(55,'itemPickerBoss','Jefe de sacadores',1,'2018-03-05 12:08:31','2018-03-05 12:08:31'),(56,'delivery','Personal de reparto',1,'2018-05-30 06:07:02','2018-05-30 06:07:02'),(57,'deliveryBoss','Jefe de personal de reparto',1,'2018-05-30 06:07:19','2018-05-30 06:07:19'),(58,'packager','Departamento encajadores',1,'2019-01-21 12:43:45','2019-01-21 12:43:45'),(59,'packagerBoss','Jefe departamento encajadores',1,'2019-01-21 12:44:10','2019-01-21 12:44:10'),(60,'productionAssi','Tareas relacionadas con producción y administración',1,'2019-01-29 13:29:01','2019-01-29 13:29:01'); +INSERT INTO `role` VALUES (0,'root','Rol con todos los privilegios',0,'2018-04-23 14:33:36','2018-04-23 14:33:59'),(1,'employee','Empleado básico',1,'2017-05-19 07:04:58','2017-11-29 10:06:31'),(2,'customer','Privilegios básicos de un cliente',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(3,'agency','Consultar tablas de predicciones de bultos',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(5,'administrative','Tareas relacionadas con la contabilidad',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(6,'guest','Privilegios para usuarios sin cuenta',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(9,'developer','Desarrolladores del sistema',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(11,'account','Privilegios relacionados con el login',0,'2017-05-19 07:04:58','2017-09-20 17:06:35'),(13,'teamBoss','Jefe de departamento',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(15,'logistic','Departamento de compras, responsables de la logistica',1,'2017-05-19 07:04:58','2018-02-12 10:50:10'),(16,'logisticBoss','Jefe del departamento de logística',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(17,'adminBoss','Jefe del departamento de administración',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(18,'salesPerson','Departamento de ventas',1,'2017-05-19 07:04:58','2017-05-19 07:04:58'),(19,'salesBoss','Jefe del departamento de ventas',1,'2017-05-19 07:04:58','2017-08-16 12:38:27'),(20,'manager','Departamento de gerencia',1,'2017-06-01 14:57:02','2017-06-01 14:57:51'),(21,'salesAssistant','Jefe auxiliar de ventas',1,'2017-08-16 12:40:52','2017-08-16 12:40:52'),(22,'teamManager','Jefe de departamento con privilegios de auxiliar de venta.',1,'2017-09-07 09:08:12','2017-09-07 09:08:12'),(30,'financialBoss','Director finaciero',1,'2017-09-21 11:05:36','2017-09-21 11:05:36'),(31,'freelancer','Trabajadores por cuenta ajena',1,'2017-10-10 12:57:26','2017-10-10 12:59:27'),(32,'ett','Trabajadores de empresa temporal',1,'2017-10-10 12:58:58','2017-10-10 12:59:20'),(33,'invoicing','Personal con acceso a facturación',0,'2018-01-29 16:43:34','2018-01-29 16:43:34'),(34,'agencyBoss','Jefe/a del departamento de agencias',1,'2018-01-29 16:44:39','2018-02-23 07:58:53'),(35,'buyer','Departamento de compras',1,'2018-02-12 10:35:42','2018-02-12 10:35:42'),(36,'replenisher','Trabajadores de camara',1,'2018-02-16 14:07:10','2019-04-12 05:38:08'),(37,'hr','Gestor/a de recursos humanos',1,'2018-02-22 17:34:53','2018-02-22 17:34:53'),(38,'hrBoss','Jefe/a de recursos humanos',1,'2018-02-22 17:35:09','2018-02-22 17:35:09'),(39,'adminAssistant','Jefe auxiliar administrativo',1,'2018-02-23 10:37:36','2018-02-23 10:38:41'),(40,'handmade','Departamento de confección',1,'2018-02-23 11:14:53','2018-02-23 11:39:12'),(41,'handmadeBoss','Jefe de departamento de confección',1,'2018-02-23 11:15:09','2018-02-23 11:39:26'),(42,'artificial','Departamento de artificial',1,'2018-02-23 11:39:59','2018-02-23 11:39:59'),(43,'artificialBoss','Jefe del departamento de artificial',1,'2018-02-23 11:40:16','2018-02-23 11:40:16'),(44,'accessory','Departamento de complementos',1,'2018-02-23 11:41:12','2018-02-23 11:41:12'),(45,'accessoryBoss','Jefe del departamento de complementos',1,'2018-02-23 11:41:23','2018-02-23 11:41:23'),(47,'cooler','Empleados de cámara',1,'2018-02-23 13:08:18','2018-02-23 13:08:18'),(48,'coolerBoss','Jefe del departamento de cámara',1,'2018-02-23 13:12:01','2018-02-23 13:12:01'),(49,'production','Empleado de producción',0,'2018-02-26 15:28:23','2019-01-21 12:57:21'),(50,'productionBoss','Jefe de producción',1,'2018-02-26 15:34:12','2018-02-26 15:34:12'),(51,'marketing','Departamento de marketing',1,'2018-03-01 07:28:39','2018-03-01 07:28:39'),(52,'marketingBoss','Jefe del departamento de marketing',1,'2018-03-01 07:28:57','2018-03-01 07:28:57'),(53,'insurance','Gestor de seguros de cambio',0,'2018-03-05 07:44:35','2019-02-01 13:47:57'),(54,'itemPicker','Sacador en cámara',1,'2018-03-05 12:08:17','2018-03-05 12:08:17'),(55,'itemPickerBoss','Jefe de sacadores',1,'2018-03-05 12:08:31','2018-03-05 12:08:31'),(56,'delivery','Personal de reparto',1,'2018-05-30 06:07:02','2018-05-30 06:07:02'),(57,'deliveryBoss','Jefe de personal de reparto',1,'2018-05-30 06:07:19','2018-05-30 06:07:19'),(58,'packager','Departamento encajadores',1,'2019-01-21 12:43:45','2019-01-21 12:43:45'),(59,'packagerBoss','Jefe departamento encajadores',1,'2019-01-21 12:44:10','2019-01-21 12:44:10'),(60,'productionAssi','Tareas relacionadas con producción y administración',1,'2019-01-29 13:29:01','2019-01-29 13:29:01'),(61,'replenisherBos','Jefe de Complementos/Camara',1,'2019-07-01 06:44:07','2019-07-01 06:44:07'),(62,'noLogin','Role without login access to MySQL',0,'2019-07-01 06:50:19','2019-07-02 13:42:05'); /*!40000 ALTER TABLE `role` ENABLE KEYS */; UNLOCK TABLES; @@ -71,7 +71,7 @@ UNLOCK TABLES; LOCK TABLES `roleInherit` WRITE; /*!40000 ALTER TABLE `roleInherit` DISABLE KEYS */; -INSERT INTO `roleInherit` VALUES (9,0),(5,1),(13,1),(18,1),(31,1),(32,1),(34,1),(35,1),(37,1),(40,1),(42,1),(44,1),(47,1),(51,1),(53,1),(54,1),(56,1),(58,1),(1,2),(1,3),(30,5),(39,5),(60,5),(11,6),(1,11),(2,11),(3,11),(16,13),(20,13),(21,13),(22,13),(34,13),(41,13),(43,13),(45,13),(48,13),(50,13),(52,13),(55,13),(57,13),(59,13),(16,15),(21,18),(5,19),(52,19),(17,20),(30,20),(19,21),(22,21),(39,21),(30,22),(5,33),(34,33),(15,35),(20,35),(52,35),(49,36),(17,37),(38,37),(17,39),(41,40),(43,42),(36,44),(45,44),(36,47),(48,47),(50,49),(60,50),(52,51),(21,53),(30,53),(55,54),(57,56),(50,57),(60,57),(49,58),(59,58),(50,59); +INSERT INTO `roleInherit` VALUES (9,0),(5,1),(13,1),(18,1),(31,1),(32,1),(34,1),(35,1),(37,1),(40,1),(42,1),(44,1),(47,1),(51,1),(53,1),(54,1),(56,1),(58,1),(1,2),(1,3),(30,5),(39,5),(60,5),(11,6),(1,11),(2,11),(3,11),(16,13),(20,13),(21,13),(22,13),(34,13),(41,13),(43,13),(45,13),(48,13),(50,13),(52,13),(55,13),(57,13),(59,13),(61,13),(16,15),(21,18),(5,19),(52,19),(17,20),(30,20),(19,21),(22,21),(39,21),(30,22),(5,33),(34,33),(15,35),(20,35),(52,35),(49,36),(61,36),(17,37),(38,37),(17,39),(41,40),(43,42),(36,44),(45,44),(36,47),(48,47),(50,49),(60,50),(52,51),(21,53),(30,53),(55,54),(57,56),(50,57),(60,57),(49,58),(59,58),(50,59); /*!40000 ALTER TABLE `roleInherit` ENABLE KEYS */; UNLOCK TABLES; @@ -81,7 +81,7 @@ UNLOCK TABLES; LOCK TABLES `roleRole` WRITE; /*!40000 ALTER TABLE `roleRole` DISABLE KEYS */; -INSERT INTO `roleRole` VALUES (0,0),(0,1),(0,2),(0,3),(0,5),(0,6),(0,9),(0,11),(0,13),(0,15),(0,16),(0,17),(0,18),(0,19),(0,20),(0,21),(0,22),(0,30),(0,31),(0,32),(0,33),(0,34),(0,35),(0,36),(0,37),(0,38),(0,39),(0,40),(0,41),(0,42),(0,43),(0,44),(0,45),(0,47),(0,48),(0,49),(0,50),(0,51),(0,52),(0,53),(0,54),(0,55),(0,56),(0,57),(0,58),(0,59),(0,60),(1,1),(1,2),(1,3),(1,6),(1,11),(2,2),(2,6),(2,11),(3,3),(3,6),(3,11),(5,1),(5,2),(5,3),(5,5),(5,6),(5,11),(5,13),(5,18),(5,19),(5,21),(5,33),(5,53),(6,6),(9,0),(9,1),(9,2),(9,3),(9,5),(9,6),(9,9),(9,11),(9,13),(9,15),(9,16),(9,17),(9,18),(9,19),(9,20),(9,21),(9,22),(9,30),(9,31),(9,32),(9,33),(9,34),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),(9,41),(9,42),(9,43),(9,44),(9,45),(9,47),(9,48),(9,49),(9,50),(9,51),(9,52),(9,53),(9,54),(9,55),(9,56),(9,57),(9,58),(9,59),(9,60),(11,6),(11,11),(13,1),(13,2),(13,3),(13,6),(13,11),(13,13),(15,1),(15,2),(15,3),(15,6),(15,11),(15,15),(15,35),(16,1),(16,2),(16,3),(16,6),(16,11),(16,13),(16,15),(16,16),(16,35),(17,1),(17,2),(17,3),(17,5),(17,6),(17,11),(17,13),(17,17),(17,18),(17,19),(17,20),(17,21),(17,33),(17,35),(17,37),(17,39),(17,53),(18,1),(18,2),(18,3),(18,6),(18,11),(18,18),(19,1),(19,2),(19,3),(19,6),(19,11),(19,13),(19,18),(19,19),(19,21),(19,53),(20,1),(20,2),(20,3),(20,6),(20,11),(20,13),(20,20),(20,35),(21,1),(21,2),(21,3),(21,6),(21,11),(21,13),(21,18),(21,21),(21,53),(22,1),(22,2),(22,3),(22,6),(22,11),(22,13),(22,18),(22,21),(22,22),(22,53),(30,1),(30,2),(30,3),(30,5),(30,6),(30,11),(30,13),(30,18),(30,19),(30,20),(30,21),(30,22),(30,30),(30,33),(30,35),(30,53),(31,1),(31,2),(31,3),(31,6),(31,11),(31,31),(32,1),(32,2),(32,3),(32,6),(32,11),(32,32),(33,33),(34,1),(34,2),(34,3),(34,6),(34,11),(34,13),(34,33),(34,34),(35,1),(35,2),(35,3),(35,6),(35,11),(35,35),(36,1),(36,2),(36,3),(36,6),(36,11),(36,36),(36,44),(36,47),(37,1),(37,2),(37,3),(37,6),(37,11),(37,37),(38,1),(38,2),(38,3),(38,6),(38,11),(38,37),(38,38),(39,1),(39,2),(39,3),(39,5),(39,6),(39,11),(39,13),(39,18),(39,19),(39,21),(39,33),(39,39),(39,53),(40,1),(40,2),(40,3),(40,6),(40,11),(40,40),(41,1),(41,2),(41,3),(41,6),(41,11),(41,13),(41,40),(41,41),(42,1),(42,2),(42,3),(42,6),(42,11),(42,42),(43,1),(43,2),(43,3),(43,6),(43,11),(43,13),(43,42),(43,43),(44,1),(44,2),(44,3),(44,6),(44,11),(44,44),(45,1),(45,2),(45,3),(45,6),(45,11),(45,13),(45,44),(45,45),(47,1),(47,2),(47,3),(47,6),(47,11),(47,47),(48,1),(48,2),(48,3),(48,6),(48,11),(48,13),(48,47),(48,48),(49,1),(49,2),(49,3),(49,6),(49,11),(49,36),(49,44),(49,47),(49,49),(49,58),(50,1),(50,2),(50,3),(50,6),(50,11),(50,13),(50,36),(50,44),(50,47),(50,49),(50,50),(50,56),(50,57),(50,58),(50,59),(51,1),(51,2),(51,3),(51,6),(51,11),(51,51),(52,1),(52,2),(52,3),(52,6),(52,11),(52,13),(52,18),(52,19),(52,21),(52,35),(52,51),(52,52),(52,53),(53,1),(53,2),(53,3),(53,6),(53,11),(53,53),(54,1),(54,2),(54,3),(54,6),(54,11),(54,54),(55,1),(55,2),(55,3),(55,6),(55,11),(55,13),(55,54),(55,55),(56,1),(56,2),(56,3),(56,6),(56,11),(56,56),(57,1),(57,2),(57,3),(57,6),(57,11),(57,13),(57,56),(57,57),(58,1),(58,2),(58,3),(58,6),(58,11),(58,58),(59,1),(59,2),(59,3),(59,6),(59,11),(59,13),(59,58),(59,59),(60,1),(60,2),(60,3),(60,5),(60,6),(60,11),(60,13),(60,18),(60,19),(60,21),(60,33),(60,36),(60,44),(60,47),(60,49),(60,50),(60,53),(60,56),(60,57),(60,58),(60,59),(60,60); +INSERT INTO `roleRole` VALUES (0,0),(0,1),(0,2),(0,3),(0,5),(0,6),(0,9),(0,11),(0,13),(0,15),(0,16),(0,17),(0,18),(0,19),(0,20),(0,21),(0,22),(0,30),(0,31),(0,32),(0,33),(0,34),(0,35),(0,36),(0,37),(0,38),(0,39),(0,40),(0,41),(0,42),(0,43),(0,44),(0,45),(0,47),(0,48),(0,49),(0,50),(0,51),(0,52),(0,53),(0,54),(0,55),(0,56),(0,57),(0,58),(0,59),(0,60),(0,61),(1,1),(1,2),(1,3),(1,6),(1,11),(2,2),(2,6),(2,11),(3,3),(3,6),(3,11),(5,1),(5,2),(5,3),(5,5),(5,6),(5,11),(5,13),(5,18),(5,19),(5,21),(5,33),(5,53),(6,6),(9,0),(9,1),(9,2),(9,3),(9,5),(9,6),(9,9),(9,11),(9,13),(9,15),(9,16),(9,17),(9,18),(9,19),(9,20),(9,21),(9,22),(9,30),(9,31),(9,32),(9,33),(9,34),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),(9,41),(9,42),(9,43),(9,44),(9,45),(9,47),(9,48),(9,49),(9,50),(9,51),(9,52),(9,53),(9,54),(9,55),(9,56),(9,57),(9,58),(9,59),(9,60),(9,61),(11,6),(11,11),(13,1),(13,2),(13,3),(13,6),(13,11),(13,13),(15,1),(15,2),(15,3),(15,6),(15,11),(15,15),(15,35),(16,1),(16,2),(16,3),(16,6),(16,11),(16,13),(16,15),(16,16),(16,35),(17,1),(17,2),(17,3),(17,5),(17,6),(17,11),(17,13),(17,17),(17,18),(17,19),(17,20),(17,21),(17,33),(17,35),(17,37),(17,39),(17,53),(18,1),(18,2),(18,3),(18,6),(18,11),(18,18),(19,1),(19,2),(19,3),(19,6),(19,11),(19,13),(19,18),(19,19),(19,21),(19,53),(20,1),(20,2),(20,3),(20,6),(20,11),(20,13),(20,20),(20,35),(21,1),(21,2),(21,3),(21,6),(21,11),(21,13),(21,18),(21,21),(21,53),(22,1),(22,2),(22,3),(22,6),(22,11),(22,13),(22,18),(22,21),(22,22),(22,53),(30,1),(30,2),(30,3),(30,5),(30,6),(30,11),(30,13),(30,18),(30,19),(30,20),(30,21),(30,22),(30,30),(30,33),(30,35),(30,53),(31,1),(31,2),(31,3),(31,6),(31,11),(31,31),(32,1),(32,2),(32,3),(32,6),(32,11),(32,32),(33,33),(34,1),(34,2),(34,3),(34,6),(34,11),(34,13),(34,33),(34,34),(35,1),(35,2),(35,3),(35,6),(35,11),(35,35),(36,1),(36,2),(36,3),(36,6),(36,11),(36,36),(36,44),(36,47),(37,1),(37,2),(37,3),(37,6),(37,11),(37,37),(38,1),(38,2),(38,3),(38,6),(38,11),(38,37),(38,38),(39,1),(39,2),(39,3),(39,5),(39,6),(39,11),(39,13),(39,18),(39,19),(39,21),(39,33),(39,39),(39,53),(40,1),(40,2),(40,3),(40,6),(40,11),(40,40),(41,1),(41,2),(41,3),(41,6),(41,11),(41,13),(41,40),(41,41),(42,1),(42,2),(42,3),(42,6),(42,11),(42,42),(43,1),(43,2),(43,3),(43,6),(43,11),(43,13),(43,42),(43,43),(44,1),(44,2),(44,3),(44,6),(44,11),(44,44),(45,1),(45,2),(45,3),(45,6),(45,11),(45,13),(45,44),(45,45),(47,1),(47,2),(47,3),(47,6),(47,11),(47,47),(48,1),(48,2),(48,3),(48,6),(48,11),(48,13),(48,47),(48,48),(49,1),(49,2),(49,3),(49,6),(49,11),(49,36),(49,44),(49,47),(49,49),(49,58),(50,1),(50,2),(50,3),(50,6),(50,11),(50,13),(50,36),(50,44),(50,47),(50,49),(50,50),(50,56),(50,57),(50,58),(50,59),(51,1),(51,2),(51,3),(51,6),(51,11),(51,51),(52,1),(52,2),(52,3),(52,6),(52,11),(52,13),(52,18),(52,19),(52,21),(52,35),(52,51),(52,52),(52,53),(53,1),(53,2),(53,3),(53,6),(53,11),(53,53),(54,1),(54,2),(54,3),(54,6),(54,11),(54,54),(55,1),(55,2),(55,3),(55,6),(55,11),(55,13),(55,54),(55,55),(56,1),(56,2),(56,3),(56,6),(56,11),(56,56),(57,1),(57,2),(57,3),(57,6),(57,11),(57,13),(57,56),(57,57),(58,1),(58,2),(58,3),(58,6),(58,11),(58,58),(59,1),(59,2),(59,3),(59,6),(59,11),(59,13),(59,58),(59,59),(60,1),(60,2),(60,3),(60,5),(60,6),(60,11),(60,13),(60,18),(60,19),(60,21),(60,33),(60,36),(60,44),(60,47),(60,49),(60,50),(60,53),(60,56),(60,57),(60,58),(60,59),(60,60),(61,1),(61,2),(61,3),(61,6),(61,11),(61,13),(61,36),(61,44),(61,47),(61,61); /*!40000 ALTER TABLE `roleRole` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -94,7 +94,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:34 USE `salix`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -119,7 +119,7 @@ USE `salix`; LOCK TABLES `ACL` WRITE; /*!40000 ALTER TABLE `ACL` DISABLE KEYS */; -INSERT INTO `ACL` VALUES (1,'Account','*','*','ALLOW','ROLE','employee'),(3,'Address','*','*','ALLOW','ROLE','employee'),(5,'AgencyService','*','READ','ALLOW','ROLE','employee'),(7,'Client','*','*','ALLOW','ROLE','employee'),(9,'ClientObservation','*','*','ALLOW','ROLE','employee'),(11,'ContactChannel','*','READ','ALLOW','ROLE','employee'),(13,'Employee','*','READ','ALLOW','ROLE','employee'),(14,'PayMethod','*','READ','ALLOW','ROLE','employee'),(16,'FakeProduction','*','READ','ALLOW','ROLE','employee'),(17,'Warehouse','* ','READ','ALLOW','ROLE','employee'),(18,'State','*','READ','ALLOW','ROLE','employee'),(20,'TicketState','*','*','ALLOW','ROLE','employee'),(24,'Delivery','*','READ','ALLOW','ROLE','employee'),(25,'Zone','*','READ','ALLOW','ROLE','employee'),(26,'ClientCredit','*','*','ALLOW','ROLE','employee'),(27,'ClientCreditLimit','*','READ','ALLOW','ROLE','employee'),(30,'GreugeType','*','READ','ALLOW','ROLE','employee'),(31,'Mandate','*','READ','ALLOW','ROLE','employee'),(32,'MandateType','*','READ','ALLOW','ROLE','employee'),(33,'Company','*','READ','ALLOW','ROLE','employee'),(34,'Greuge','*','READ','ALLOW','ROLE','employee'),(35,'AddressObservation','*','*','ALLOW','ROLE','employee'),(36,'ObservationType','*','*','ALLOW','ROLE','employee'),(37,'Greuge','*','WRITE','ALLOW','ROLE','employee'),(38,'AgencyMode','*','READ','ALLOW','ROLE','employee'),(39,'ItemTag','*','WRITE','ALLOW','ROLE','buyer'),(40,'ItemBotanical','*','WRITE','ALLOW','ROLE','buyer'),(41,'ItemBotanical','*','READ','ALLOW','ROLE','employee'),(42,'ItemPlacement','*','WRITE','ALLOW','ROLE','buyer'),(43,'ItemPlacement','*','WRITE','ALLOW','ROLE','replenisher'),(44,'ItemPlacement','*','READ','ALLOW','ROLE','employee'),(45,'ItemBarcode','*','READ','ALLOW','ROLE','employee'),(46,'ItemBarcode','*','WRITE','ALLOW','ROLE','buyer'),(47,'ItemBarcode','*','WRITE','ALLOW','ROLE','replenisher'),(48,'ItemNiche','*','READ','ALLOW','ROLE','employee'),(49,'ItemNiche','*','WRITE','ALLOW','ROLE','buyer'),(50,'ItemNiche','*','WRITE','ALLOW','ROLE','replenisher'),(51,'ItemTag','*','READ','ALLOW','ROLE','employee'),(53,'Item','*','READ','ALLOW','ROLE','employee'),(54,'Item','*','WRITE','ALLOW','ROLE','buyer'),(55,'Recovery','*','READ','ALLOW','ROLE','employee'),(56,'Recovery','*','WRITE','ALLOW','ROLE','administrative'),(58,'CreditClassification','*','*','ALLOW','ROLE','insurance'),(60,'CreditInsurance','*','*','ALLOW','ROLE','insurance'),(61,'InvoiceOut','*','READ','ALLOW','ROLE','employee'),(62,'Ticket','*','*','ALLOW','ROLE','employee'),(63,'TicketObservation','*','*','ALLOW','ROLE','employee'),(64,'Route','*','READ','ALLOW','ROLE','employee'),(65,'Sale','*','READ','ALLOW','ROLE','employee'),(66,'TicketTracking','*','READ','ALLOW','ROLE','employee'),(68,'TicketPackaging','*','*','ALLOW','ROLE','employee'),(69,'Packaging','*','READ','ALLOW','ROLE','employee'),(70,'Packaging','*','WRITE','ALLOW','ROLE','logistic'),(71,'SaleChecked','*','READ','ALLOW','ROLE','employee'),(72,'SaleComponent','*','READ','ALLOW','ROLE','employee'),(73,'Expedition','*','READ','ALLOW','ROLE','employee'),(74,'Expedition','*','WRITE','ALLOW','ROLE','deliveryBoss'),(75,'Expedition','*','WRITE','ALLOW','ROLE','production'),(76,'AnnualAverageInvoiced','*','READ','ALLOW','ROLE','employee'),(77,'WorkerMana','*','READ','ALLOW','ROLE','employee'),(78,'TicketTracking','*','WRITE','ALLOW','ROLE','production'),(79,'TicketTracking','changeState','*','ALLOW','ROLE','employee'),(80,'Sale','removes','*','ALLOW','ROLE','employee'),(81,'Sale','moveToTicket','*','ALLOW','ROLE','employee'),(82,'Sale','updateQuantity','*','ALLOW','ROLE','employee'),(83,'Sale','updatePrice','*','ALLOW','ROLE','employee'),(84,'Sale','updateDiscount','*','ALLOW','ROLE','employee'),(85,'SaleTracking','*','READ','ALLOW','ROLE','employee'),(86,'Order','*','*','ALLOW','ROLE','employee'),(87,'OrderRow','*','*','ALLOW','ROLE','employee'),(88,'ClientContact','*','*','ALLOW','ROLE','employee'),(89,'Sale','moveToNewTicket','*','ALLOW','ROLE','employee'),(90,'Sale','reserve','*','ALLOW','ROLE','employee'),(91,'TicketWeekly','*','*','ALLOW','ROLE','employee'),(94,'Agency','landsThatDay','*','ALLOW','ROLE','employee'),(96,'ClaimEnd','*','READ','ALLOW','ROLE','employee'),(97,'ClaimEnd','*','WRITE','ALLOW','ROLE','salesAssistant'),(98,'ClaimBeginning','*','*','ALLOW','ROLE','employee'),(99,'ClaimDevelopment','*','READ','ALLOW','ROLE','employee'),(100,'ClaimDevelopment','*','WRITE','ALLOW','ROLE','salesAssistant'),(101,'Claim','*','*','ALLOW','ROLE','employee'),(102,'Claim','createFromSales','*','ALLOW','ROLE','employee'),(103,'ClaimEnd','importTicketSales','WRITE','ALLOW','ROLE','salesAssistant'),(104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss'),(105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss'),(106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss'),(107,'ItemNiche','*','WRITE','ALLOW','ROLE','marketingBoss'),(108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss'),(109,'UserConfig','*','*','ALLOW','ROLE','employee'),(110,'Bank','*','READ','ALLOW','ROLE','employee'),(111,'ClientLog','*','READ','ALLOW','ROLE','employee'),(112,'Defaulter','*','READ','ALLOW','ROLE','employee'),(113,'ClientRisk','*','READ','ALLOW','ROLE','employee'),(114,'Receipt','*','READ','ALLOW','ROLE','employee'),(115,'Receipt','*','WRITE','ALLOW','ROLE','administrative'),(116,'BankEntity','*','*','ALLOW','ROLE','employee'),(117,'ClientSample','*','*','ALLOW','ROLE','employee'),(118,'WorkerTeam','*','*','ALLOW','ROLE','salesPerson'),(119,'Travel','*','READ','ALLOW','ROLE','employee'),(120,'Travel','*','WRITE','ALLOW','ROLE','buyer'),(121,'Item','regularize','*','ALLOW','ROLE','employee'),(122,'TicketRequest','*','*','ALLOW','ROLE','salesPerson'),(123,'Worker','*','READ','ALLOW','ROLE','employee'),(124,'Client','confirmTransaction','WRITE','ALLOW','ROLE','administrative'),(125,'Agency','getAgenciesWithWarehouse','*','ALLOW','ROLE','employee'),(126,'Client','activeWorkersWithRole','*','ALLOW','ROLE','employee'),(127,'TicketLog','*','READ','ALLOW','ROLE','employee'),(129,'TicketService','*','*','ALLOW','ROLE','employee'),(130,'Expedition','*','WRITE','ALLOW','ROLE','packager'),(131,'CreditInsurance','*','READ','ALLOW','ROLE','employee'),(132,'CreditClassification','*','READ','ALLOW','ROLE','employee'),(133,'ItemTag','*','WRITE','ALLOW','ROLE','marketingBoss'),(135,'ZoneGeo','*','READ','ALLOW','ROLE','employee'),(136,'ZoneCalendar','*','READ','ALLOW','ROLE','employee'),(137,'ZoneIncluded','*','READ','ALLOW','ROLE','employee'),(138,'LabourHoliday','*','READ','ALLOW','ROLE','employee'),(139,'LabourHolidayLegend','*','READ','ALLOW','ROLE','employee'),(140,'LabourHolidayType','*','READ','ALLOW','ROLE','employee'),(141,'Zone','*','WRITE','ALLOW','ROLE','deliveryBoss'),(142,'ZoneCalendar','*','WRITE','ALLOW','ROLE','deliveryBoss'),(143,'ZoneIncluded','*','*','ALLOW','ROLE','deliveryBoss'),(144,'Stowaway','*','*','ALLOW','ROLE','employee'),(145,'Ticket','getPossibleStowaways','READ','ALLOW','ROLE','employee'),(147,'UserConfigView','*','*','ALLOW','ROLE','employee'),(148,'UserConfigView','*','*','ALLOW','ROLE','employee'),(149,'Sip','*','READ','ALLOW','ROLE','employee'),(150,'Sip','*','WRITE','ALLOW','ROLE','hr'),(151,'Department','*','READ','ALLOW','ROLE','employee'),(152,'Department','*','WRITE','ALLOW','ROLE','hr'),(153,'Route','*','READ','ALLOW','ROLE','employee'),(154,'Route','*','WRITE','ALLOW','ROLE','delivery'),(155,'WorkerCalendar','*','READ','ALLOW','ROLE','hr'),(156,'WorkerLabour','*','READ','ALLOW','ROLE','hr'),(157,'WorkerCalendar','absences','READ','ALLOW','ROLE','employee'),(158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory'),(160,'TicketServiceType','*','READ','ALLOW','ROLE','employee'),(161,'TicketConfig','*','READ','ALLOW','ROLE','employee'),(162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','invoicing'),(163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing'),(164,'InvoiceOut','regenerate','WRITE','ALLOW','ROLE','invoicing'),(165,'TicketDms','*','READ','ALLOW','ROLE','employee'),(166,'Dms','download','READ','ALLOW','ROLE','employee'),(172,'Sms','*','READ','ALLOW','ROLE','employee'),(173,'Sms','send','WRITE','ALLOW','ROLE','employee'); +INSERT INTO `ACL` VALUES (1,'Account','*','*','ALLOW','ROLE','employee'),(3,'Address','*','*','ALLOW','ROLE','employee'),(5,'AgencyService','*','READ','ALLOW','ROLE','employee'),(7,'Client','*','*','ALLOW','ROLE','employee'),(9,'ClientObservation','*','*','ALLOW','ROLE','employee'),(11,'ContactChannel','*','READ','ALLOW','ROLE','employee'),(13,'Employee','*','READ','ALLOW','ROLE','employee'),(14,'PayMethod','*','READ','ALLOW','ROLE','employee'),(16,'FakeProduction','*','READ','ALLOW','ROLE','employee'),(17,'Warehouse','* ','READ','ALLOW','ROLE','employee'),(18,'State','*','READ','ALLOW','ROLE','employee'),(20,'TicketState','*','*','ALLOW','ROLE','employee'),(24,'Delivery','*','READ','ALLOW','ROLE','employee'),(25,'Zone','*','READ','ALLOW','ROLE','employee'),(26,'ClientCredit','*','*','ALLOW','ROLE','employee'),(27,'ClientCreditLimit','*','READ','ALLOW','ROLE','employee'),(30,'GreugeType','*','READ','ALLOW','ROLE','employee'),(31,'Mandate','*','READ','ALLOW','ROLE','employee'),(32,'MandateType','*','READ','ALLOW','ROLE','employee'),(33,'Company','*','READ','ALLOW','ROLE','employee'),(34,'Greuge','*','READ','ALLOW','ROLE','employee'),(35,'AddressObservation','*','*','ALLOW','ROLE','employee'),(36,'ObservationType','*','*','ALLOW','ROLE','employee'),(37,'Greuge','*','WRITE','ALLOW','ROLE','employee'),(38,'AgencyMode','*','READ','ALLOW','ROLE','employee'),(39,'ItemTag','*','WRITE','ALLOW','ROLE','buyer'),(40,'ItemBotanical','*','WRITE','ALLOW','ROLE','buyer'),(41,'ItemBotanical','*','READ','ALLOW','ROLE','employee'),(42,'ItemPlacement','*','WRITE','ALLOW','ROLE','buyer'),(43,'ItemPlacement','*','WRITE','ALLOW','ROLE','replenisher'),(44,'ItemPlacement','*','READ','ALLOW','ROLE','employee'),(45,'ItemBarcode','*','READ','ALLOW','ROLE','employee'),(46,'ItemBarcode','*','WRITE','ALLOW','ROLE','buyer'),(47,'ItemBarcode','*','WRITE','ALLOW','ROLE','replenisher'),(48,'ItemNiche','*','READ','ALLOW','ROLE','employee'),(49,'ItemNiche','*','WRITE','ALLOW','ROLE','buyer'),(50,'ItemNiche','*','WRITE','ALLOW','ROLE','replenisher'),(51,'ItemTag','*','READ','ALLOW','ROLE','employee'),(53,'Item','*','READ','ALLOW','ROLE','employee'),(54,'Item','*','WRITE','ALLOW','ROLE','buyer'),(55,'Recovery','*','READ','ALLOW','ROLE','employee'),(56,'Recovery','*','WRITE','ALLOW','ROLE','administrative'),(58,'CreditClassification','*','*','ALLOW','ROLE','insurance'),(60,'CreditInsurance','*','*','ALLOW','ROLE','insurance'),(61,'InvoiceOut','*','READ','ALLOW','ROLE','employee'),(62,'Ticket','*','*','ALLOW','ROLE','employee'),(63,'TicketObservation','*','*','ALLOW','ROLE','employee'),(64,'Route','*','READ','ALLOW','ROLE','employee'),(65,'Sale','*','READ','ALLOW','ROLE','employee'),(66,'TicketTracking','*','READ','ALLOW','ROLE','employee'),(68,'TicketPackaging','*','*','ALLOW','ROLE','employee'),(69,'Packaging','*','READ','ALLOW','ROLE','employee'),(70,'Packaging','*','WRITE','ALLOW','ROLE','logistic'),(71,'SaleChecked','*','READ','ALLOW','ROLE','employee'),(72,'SaleComponent','*','READ','ALLOW','ROLE','employee'),(73,'Expedition','*','READ','ALLOW','ROLE','employee'),(74,'Expedition','*','WRITE','ALLOW','ROLE','deliveryBoss'),(75,'Expedition','*','WRITE','ALLOW','ROLE','production'),(76,'AnnualAverageInvoiced','*','READ','ALLOW','ROLE','employee'),(77,'WorkerMana','*','READ','ALLOW','ROLE','employee'),(78,'TicketTracking','*','WRITE','ALLOW','ROLE','production'),(79,'TicketTracking','changeState','*','ALLOW','ROLE','employee'),(80,'Sale','removes','*','ALLOW','ROLE','employee'),(81,'Sale','moveToTicket','*','ALLOW','ROLE','employee'),(82,'Sale','updateQuantity','*','ALLOW','ROLE','employee'),(83,'Sale','updatePrice','*','ALLOW','ROLE','employee'),(84,'Sale','updateDiscount','*','ALLOW','ROLE','employee'),(85,'SaleTracking','*','READ','ALLOW','ROLE','employee'),(86,'Order','*','*','ALLOW','ROLE','employee'),(87,'OrderRow','*','*','ALLOW','ROLE','employee'),(88,'ClientContact','*','*','ALLOW','ROLE','employee'),(89,'Sale','moveToNewTicket','*','ALLOW','ROLE','employee'),(90,'Sale','reserve','*','ALLOW','ROLE','employee'),(91,'TicketWeekly','*','*','ALLOW','ROLE','employee'),(94,'Agency','landsThatDay','*','ALLOW','ROLE','employee'),(96,'ClaimEnd','*','READ','ALLOW','ROLE','employee'),(97,'ClaimEnd','*','WRITE','ALLOW','ROLE','salesAssistant'),(98,'ClaimBeginning','*','*','ALLOW','ROLE','employee'),(99,'ClaimDevelopment','*','READ','ALLOW','ROLE','employee'),(100,'ClaimDevelopment','*','WRITE','ALLOW','ROLE','salesAssistant'),(101,'Claim','*','*','ALLOW','ROLE','employee'),(102,'Claim','createFromSales','*','ALLOW','ROLE','employee'),(103,'ClaimEnd','importTicketSales','WRITE','ALLOW','ROLE','salesAssistant'),(104,'Item','*','WRITE','ALLOW','ROLE','marketingBoss'),(105,'ItemBarcode','*','WRITE','ALLOW','ROLE','marketingBoss'),(106,'ItemBotanical','*','WRITE','ALLOW','ROLE','marketingBoss'),(107,'ItemNiche','*','WRITE','ALLOW','ROLE','marketingBoss'),(108,'ItemPlacement','*','WRITE','ALLOW','ROLE','marketingBoss'),(109,'UserConfig','*','*','ALLOW','ROLE','employee'),(110,'Bank','*','READ','ALLOW','ROLE','employee'),(111,'ClientLog','*','READ','ALLOW','ROLE','employee'),(112,'Defaulter','*','READ','ALLOW','ROLE','employee'),(113,'ClientRisk','*','READ','ALLOW','ROLE','employee'),(114,'Receipt','*','READ','ALLOW','ROLE','employee'),(115,'Receipt','*','WRITE','ALLOW','ROLE','administrative'),(116,'BankEntity','*','*','ALLOW','ROLE','employee'),(117,'ClientSample','*','*','ALLOW','ROLE','employee'),(118,'WorkerTeam','*','*','ALLOW','ROLE','salesPerson'),(119,'Travel','*','READ','ALLOW','ROLE','employee'),(120,'Travel','*','WRITE','ALLOW','ROLE','buyer'),(121,'Item','regularize','*','ALLOW','ROLE','employee'),(122,'TicketRequest','*','*','ALLOW','ROLE','salesPerson'),(123,'Worker','*','*','ALLOW','ROLE','employee'),(124,'Client','confirmTransaction','WRITE','ALLOW','ROLE','administrative'),(125,'Agency','getAgenciesWithWarehouse','*','ALLOW','ROLE','employee'),(126,'Client','activeWorkersWithRole','*','ALLOW','ROLE','employee'),(127,'TicketLog','*','READ','ALLOW','ROLE','employee'),(129,'TicketService','*','*','ALLOW','ROLE','employee'),(130,'Expedition','*','WRITE','ALLOW','ROLE','packager'),(131,'CreditInsurance','*','READ','ALLOW','ROLE','employee'),(132,'CreditClassification','*','READ','ALLOW','ROLE','employee'),(133,'ItemTag','*','WRITE','ALLOW','ROLE','marketingBoss'),(135,'ZoneGeo','*','READ','ALLOW','ROLE','employee'),(136,'ZoneCalendar','*','READ','ALLOW','ROLE','employee'),(137,'ZoneIncluded','*','READ','ALLOW','ROLE','employee'),(138,'LabourHoliday','*','READ','ALLOW','ROLE','employee'),(139,'LabourHolidayLegend','*','READ','ALLOW','ROLE','employee'),(140,'LabourHolidayType','*','READ','ALLOW','ROLE','employee'),(141,'Zone','*','WRITE','ALLOW','ROLE','deliveryBoss'),(142,'ZoneCalendar','*','WRITE','ALLOW','ROLE','deliveryBoss'),(143,'ZoneIncluded','*','*','ALLOW','ROLE','deliveryBoss'),(144,'Stowaway','*','*','ALLOW','ROLE','employee'),(145,'Ticket','getPossibleStowaways','READ','ALLOW','ROLE','employee'),(147,'UserConfigView','*','*','ALLOW','ROLE','employee'),(148,'UserConfigView','*','*','ALLOW','ROLE','employee'),(149,'Sip','*','READ','ALLOW','ROLE','employee'),(150,'Sip','*','WRITE','ALLOW','ROLE','hr'),(151,'Department','*','READ','ALLOW','ROLE','employee'),(152,'Department','*','WRITE','ALLOW','ROLE','hr'),(153,'Route','*','READ','ALLOW','ROLE','employee'),(154,'Route','*','WRITE','ALLOW','ROLE','delivery'),(155,'WorkerCalendar','*','READ','ALLOW','ROLE','hr'),(156,'WorkerLabour','*','READ','ALLOW','ROLE','hr'),(157,'WorkerCalendar','absences','READ','ALLOW','ROLE','employee'),(158,'ItemTag','*','WRITE','ALLOW','ROLE','accessory'),(160,'TicketServiceType','*','READ','ALLOW','ROLE','employee'),(161,'TicketConfig','*','READ','ALLOW','ROLE','employee'),(162,'InvoiceOut','delete','WRITE','ALLOW','ROLE','invoicing'),(163,'InvoiceOut','book','WRITE','ALLOW','ROLE','invoicing'),(164,'InvoiceOut','regenerate','WRITE','ALLOW','ROLE','invoicing'),(165,'TicketDms','*','READ','ALLOW','ROLE','employee'),(166,'Dms','download','READ','ALLOW','ROLE','employee'),(172,'Sms','*','READ','ALLOW','ROLE','employee'),(173,'Sms','send','WRITE','ALLOW','ROLE','employee'),(174,'Agency','getLanded','READ','ALLOW','ROLE','employee'),(175,'Agency','getShipped','READ','ALLOW','ROLE','employee'),(176,'Device','*','*','ALLOW','ROLE','employee'),(177,'Device','*','*','ALLOW','ROLE','employee'),(178,'WorkerTimeControl','*','*','ALLOW','ROLE','employee'),(179,'ItemLog','*','READ','ALLOW','ROLE','employee'),(180,'RouteLog','*','READ','ALLOW','ROLE','employee'); /*!40000 ALTER TABLE `ACL` ENABLE KEYS */; UNLOCK TABLES; @@ -142,7 +142,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:34 USE `vn`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -227,7 +227,7 @@ UNLOCK TABLES; LOCK TABLES `tag` WRITE; /*!40000 ALTER TABLE `tag` DISABLE KEYS */; -INSERT INTO `tag` VALUES (1,'Color',0,0,'ink',NULL,NULL),(2,'Forma',1,0,NULL,NULL,NULL),(3,'Material',1,0,NULL,NULL,NULL),(4,'Longitud',1,1,NULL,NULL,NULL),(5,'Diámetro',1,1,NULL,'mm',NULL),(6,'Perímetro',1,1,NULL,'mm',NULL),(7,'Ancho de la base',1,1,NULL,'mm',NULL),(8,'Altura',1,1,NULL,'mm',NULL),(9,'Volumen',1,1,NULL,'ml',NULL),(10,'Densidad',1,1,NULL,NULL,NULL),(11,'Calidad',1,0,NULL,NULL,NULL),(12,'Textura',1,0,NULL,NULL,NULL),(13,'Material del mango',1,0,NULL,NULL,NULL),(14,'Compra mínima',1,1,NULL,NULL,NULL),(15,'Nº pétalos',1,1,NULL,NULL,NULL),(16,'Ancho',1,1,NULL,'mm',NULL),(17,'Alto',1,1,NULL,'mm',NULL),(18,'Profundidad',1,1,NULL,'mm',NULL),(19,'Largo',1,1,NULL,'mm',NULL),(20,'Ancho superior',1,1,NULL,'mm',NULL),(21,'Ancho inferior',1,1,NULL,'mm',NULL),(22,'Gramaje',1,0,NULL,'g',NULL),(23,'Tallos',1,1,NULL,NULL,NULL),(24,'Estado',0,0,NULL,NULL,NULL),(25,'Color principal',0,0,NULL,NULL,NULL),(26,'Color secundario',0,0,NULL,NULL,NULL),(27,'Longitud(cm)',1,1,NULL,'cm',NULL),(28,'Diámetro base',1,1,NULL,NULL,NULL),(29,'Colección',1,0,NULL,NULL,NULL),(30,'Uds / caja',1,1,NULL,NULL,NULL),(31,'Contenido',1,0,NULL,NULL,NULL),(32,'Peso',1,1,NULL,'g',NULL),(33,'Grosor',1,1,NULL,'mm',NULL),(34,'Marca',1,0,NULL,NULL,NULL),(35,'Origen',0,0,'origin',NULL,NULL),(36,'Proveedor',1,0,NULL,NULL,NULL),(37,'Productor',1,0,'producer',NULL,NULL),(38,'Duración',1,1,NULL,'s',NULL),(39,'Flor',1,0,NULL,NULL,NULL),(40,'Soporte',1,0,NULL,NULL,NULL),(41,'Tamaño flor',1,1,NULL,NULL,NULL),(42,'Apertura',1,1,NULL,NULL,NULL),(43,'Tallo',0,1,NULL,NULL,NULL),(44,'Numero hojas',1,1,NULL,NULL,NULL),(45,'Dimensiones',1,1,NULL,NULL,NULL),(46,'Diámetro boca',1,1,NULL,NULL,NULL),(47,'Nº flores',1,1,NULL,NULL,NULL),(48,'Uds / paquete',1,1,NULL,NULL,NULL),(49,'Maceta',1,1,NULL,NULL,NULL),(50,'Textura flor',1,1,NULL,NULL,NULL),(51,'Textura hoja',1,1,NULL,NULL,NULL),(52,'Tipo de iva',1,1,NULL,NULL,NULL),(53,'Tronco',1,1,NULL,NULL,NULL),(54,'Hoja',1,1,NULL,NULL,NULL),(55,'Formato',1,1,NULL,NULL,NULL),(56,'Genero',1,1,NULL,NULL,NULL),(57,'Especie',1,1,NULL,NULL,NULL),(58,'Variedad',1,1,NULL,NULL,NULL),(59,'Medida grande',1,0,NULL,NULL,NULL),(60,'Medida mediano',1,0,NULL,NULL,NULL),(61,'Medida pequeño',1,0,NULL,NULL,NULL),(62,'Medida pequeño',1,0,NULL,NULL,NULL),(63,'Recipiente interior',1,1,NULL,NULL,NULL),(64,'Material secundario',1,1,NULL,NULL,NULL),(65,'Colores',1,1,NULL,NULL,NULL),(66,'Referencia',1,1,NULL,NULL,NULL),(67,'Categoria',1,0,NULL,NULL,NULL),(68,'Amb',0,1,NULL,NULL,NULL),(69,'Anchura',1,1,NULL,'cm',NULL),(70,'Hueco interior',-1,1,NULL,NULL,NULL),(71,'Tamaño',1,1,NULL,NULL,NULL),(72,'Color botón',1,1,NULL,NULL,NULL),(73,'Tamaño minimo del botón',1,1,NULL,NULL,NULL),(74,'Obtentor',1,1,NULL,NULL,NULL),(75,'Logitud del brote',1,1,NULL,NULL,NULL),(76,'Tallos / u.v.',1,1,NULL,NULL,NULL),(77,'Madera de',1,1,NULL,NULL,NULL),(78,'Unidad de venta',1,1,NULL,NULL,NULL),(79,'Temporal',1,1,NULL,NULL,NULL),(80,'Gramaje/tallo',1,1,NULL,NULL,NULL),(81,'Peso/paquete',1,1,NULL,NULL,NULL),(82,'Flexibilidad del tallo',1,1,NULL,NULL,NULL),(83,'Nº planchas',1,1,NULL,NULL,NULL),(84,'Nº páginas',1,1,NULL,NULL,NULL),(85,'Editorial',1,1,NULL,NULL,NULL),(86,'Idioma',1,1,NULL,NULL,NULL),(87,'Fecha publicación',1,1,NULL,NULL,NULL),(88,'Cubierta',1,1,NULL,NULL,NULL),(89,'Encuadernación',1,1,NULL,NULL,NULL),(90,'Autor',1,1,NULL,NULL,NULL),(91,'Envoltorio',1,1,NULL,NULL,NULL),(92,'Nombre temporal',1,1,NULL,NULL,NULL),(93,'Modelo',1,1,NULL,NULL,NULL),(94,'Producto',1,1,NULL,NULL,NULL),(95,'Título',1,1,NULL,NULL,NULL),(96,'Tomo',1,1,NULL,NULL,NULL),(97,'Articulo',1,1,NULL,NULL,NULL),(98,'Metodo de cultivo',1,1,NULL,NULL,NULL),(99,'Edad',1,1,NULL,NULL,NULL),(100,'Agotado',1,1,NULL,NULL,NULL),(101,'Altura con asa',1,1,NULL,NULL,NULL),(102,'Nº tallos',1,1,NULL,NULL,NULL); +INSERT INTO `tag` VALUES (1,'Color',0,0,'ink',NULL,NULL),(2,'Forma',1,0,NULL,NULL,NULL),(3,'Material',1,0,NULL,NULL,NULL),(4,'Longitud',1,1,NULL,'mm',NULL),(5,'Diámetro',1,1,NULL,'mm',NULL),(6,'Perímetro',1,1,NULL,'mm',NULL),(7,'Ancho de la base',1,1,NULL,'mm',NULL),(8,'Altura',1,1,NULL,'mm',NULL),(9,'Volumen',1,1,NULL,'ml',NULL),(10,'Densidad',1,1,NULL,NULL,NULL),(11,'Calidad',1,0,NULL,NULL,NULL),(12,'Textura',1,0,NULL,NULL,NULL),(13,'Material del mango',1,0,NULL,NULL,NULL),(14,'Compra mínima',1,0,NULL,NULL,NULL),(15,'Nº pétalos',1,1,NULL,NULL,NULL),(16,'Ancho',1,1,NULL,'mm',NULL),(17,'Alto',1,1,NULL,'mm',NULL),(18,'Profundidad',1,1,NULL,'mm',NULL),(19,'Largo',1,1,NULL,'mm',NULL),(20,'Ancho superior',1,1,NULL,'mm',NULL),(21,'Ancho inferior',1,1,NULL,'mm',NULL),(22,'Gramaje',1,0,NULL,'g',NULL),(23,'Tallos',1,1,NULL,NULL,NULL),(24,'Estado',0,0,NULL,NULL,NULL),(25,'Color principal',0,0,NULL,NULL,NULL),(26,'Color secundario',0,0,NULL,NULL,NULL),(27,'Longitud(cm)',1,1,NULL,'cm',NULL),(28,'Diámetro base',1,1,'','mm',NULL),(29,'Colección',1,0,NULL,NULL,NULL),(30,'Uds / caja',1,1,NULL,NULL,NULL),(31,'Contenido',1,0,NULL,NULL,NULL),(32,'Peso',1,1,NULL,'g',NULL),(33,'Grosor',1,1,NULL,'mm',NULL),(34,'Marca',1,0,NULL,NULL,NULL),(35,'Origen',0,0,'origin',NULL,NULL),(36,'Proveedor',1,0,NULL,NULL,NULL),(37,'Productor',1,0,'producer',NULL,NULL),(38,'Duración',1,1,NULL,'s',NULL),(39,'Flor',1,0,NULL,NULL,NULL),(40,'Soporte',1,0,NULL,NULL,NULL),(41,'Tamaño flor',1,0,NULL,NULL,NULL),(42,'Apertura',1,0,NULL,NULL,NULL),(43,'Tallo',0,0,NULL,NULL,NULL),(44,'Numero hojas',1,1,NULL,NULL,NULL),(45,'Dimensiones',1,0,NULL,NULL,NULL),(46,'Diámetro boca',1,1,NULL,'mm',NULL),(47,'Nº flores',1,1,NULL,NULL,NULL),(48,'Uds / paquete',1,1,NULL,NULL,NULL),(49,'Maceta',1,0,NULL,NULL,NULL),(50,'Textura flor',1,0,NULL,NULL,NULL),(51,'Textura hoja',1,0,NULL,NULL,NULL),(52,'Tipo de IVA',1,0,NULL,NULL,NULL),(53,'Tronco',1,0,NULL,NULL,NULL),(54,'Hoja',1,0,NULL,NULL,NULL),(55,'Formato',1,0,NULL,NULL,NULL),(56,'Genero',1,0,NULL,NULL,NULL),(57,'Especie',1,0,NULL,NULL,NULL),(58,'Variedad',1,0,NULL,NULL,NULL),(59,'Medida grande',1,0,NULL,NULL,NULL),(60,'Medida mediano',1,0,NULL,NULL,NULL),(61,'Medida pequeño',1,0,NULL,NULL,NULL),(62,'Medida pequeño',1,0,NULL,NULL,NULL),(63,'Recipiente interior',1,0,NULL,NULL,NULL),(64,'Material secundario',1,0,NULL,NULL,NULL),(65,'Colores',1,0,NULL,NULL,NULL),(66,'Referencia',1,0,NULL,NULL,NULL),(67,'Categoria',1,0,NULL,NULL,NULL),(68,'Amb',0,0,NULL,NULL,NULL),(69,'Anchura',1,1,NULL,'cm',NULL),(70,'Hueco interior',-1,0,NULL,NULL,NULL),(71,'Tamaño',1,0,NULL,NULL,NULL),(72,'Color botón',1,0,NULL,NULL,NULL),(73,'Tamaño minimo del botón',1,0,NULL,NULL,NULL),(74,'Obtentor',1,0,NULL,NULL,NULL),(75,'Logitud del brote',1,0,NULL,NULL,NULL),(76,'Tallos / u.v.',1,0,NULL,NULL,NULL),(77,'Madera de',1,0,NULL,NULL,NULL),(78,'Unidad de venta',1,0,NULL,NULL,NULL),(79,'Temporal',1,0,NULL,NULL,NULL),(80,'Gramaje/tallo',1,1,NULL,'g',NULL),(81,'Peso/paquete',1,1,NULL,'g',NULL),(82,'Flexibilidad del tallo',1,0,NULL,NULL,NULL),(83,'Nº planchas',1,1,NULL,NULL,NULL),(84,'Nº páginas',1,1,NULL,NULL,NULL),(85,'Editorial',1,0,NULL,NULL,NULL),(86,'Idioma',1,0,NULL,NULL,NULL),(87,'Fecha publicación',1,0,NULL,NULL,NULL),(88,'Cubierta',1,0,NULL,NULL,NULL),(89,'Encuadernación',1,0,NULL,NULL,NULL),(90,'Autor',1,0,NULL,NULL,NULL),(91,'Envoltorio',1,0,NULL,NULL,NULL),(92,'Nombre temporal',1,0,NULL,NULL,NULL),(93,'Modelo',1,0,NULL,NULL,NULL),(94,'Producto',1,0,NULL,NULL,NULL),(95,'Título',1,0,NULL,NULL,NULL),(96,'Tomo',1,0,NULL,NULL,NULL),(97,'Articulo',1,0,NULL,NULL,NULL),(98,'Metodo de cultivo',1,0,NULL,NULL,NULL),(99,'Edad',1,0,NULL,NULL,NULL),(100,'Agotado',1,0,NULL,NULL,NULL),(101,'Altura con asa',1,0,NULL,NULL,NULL),(102,'Nº tallos',1,1,NULL,NULL,NULL),(103,'Cultivo',1,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `tag` ENABLE KEYS */; UNLOCK TABLES; @@ -237,7 +237,7 @@ UNLOCK TABLES; LOCK TABLES `zoneGeo` WRITE; /*!40000 ALTER TABLE `zoneGeo` DISABLE KEYS */; -INSERT INTO `zoneGeo` VALUES (1,'Origin',1,44924,0,22461),(2,'España',2,44651,1,22324),(3,'Francia',44652,44845,1,96),(4,'Holanda',44846,44851,1,2),(5,'Portugal',44852,44923,1,35),(6,'Açoures',44853,44854,2,0),(7,'Ain',44653,44654,2,0),(8,'Aisne',44655,44656,2,0),(9,'Álava',3,370,2,183),(10,'Albacete',371,892,2,260),(11,'Alicante',893,1664,2,385),(12,'Allier',44657,44658,2,0),(13,'Almería',1665,2310,2,322),(14,'Alpes-de-Haute-Provence',44659,44660,2,0),(15,'Alpes-Maritimes',44661,44662,2,0),(16,'Ardèche',44663,44664,2,0),(17,'Ardennes',44665,44666,2,0),(18,'Ariège',44667,44668,2,0),(19,'Asturias',2311,3358,2,523),(20,'Aube',44669,44670,2,0),(21,'Aude',44671,44672,2,0),(22,'Aveiro',44855,44856,2,0),(23,'Aveyron',44673,44674,2,0),(24,'Ávila',3359,4446,2,543),(25,'Badajoz',4447,5214,2,383),(26,'Baleares (Formentera)',5215,5216,2,0),(27,'Baleares (Ibiza)',5217,5278,2,30),(28,'Baleares (Mallorca)',5279,5662,2,191),(29,'Baleares (Menorca)',5663,5716,2,26),(30,'Barcelona',5717,7236,2,759),(31,'Bas-Rhin',44675,44676,2,0),(32,'Beja',44857,44858,2,0),(33,'Bouches-du-Rhône',44677,44678,2,0),(34,'Braga',44859,44860,2,0),(35,'Braganza',44861,44862,2,0),(36,'Burgos',7237,9064,2,913),(37,'Cáceres',9065,10116,2,525),(38,'Cádiz',10117,10438,2,160),(39,'Calvados',44679,44680,2,0),(40,'Cantabria',10439,11224,2,392),(41,'Cantal',44681,44682,2,0),(42,'Castellón',11225,11830,2,302),(43,'Castelo Branco',44863,44864,2,0),(44,'Ceuta',44865,44878,2,6),(45,'Charente',44683,44684,2,0),(46,'Charente-Maritime',44685,44686,2,0),(47,'Cher',44687,44688,2,0),(48,'Ciudad Real',11831,12340,2,254),(49,'Coimbra',44879,44880,2,0),(50,'Córdoba',12341,12856,2,257),(51,'Corrèze',44689,44690,2,0),(52,'Corse-du-Sud',44691,44692,2,0),(53,'Côte-d’Or',44693,44694,2,0),(54,'Côtes-d’Armor',44695,44696,2,0),(55,'Creuse',44697,44698,2,0),(56,'Cuenca',12857,13908,2,525),(57,'Deux-Sèvres',44699,44700,2,0),(58,'Dordogne',44701,44702,2,0),(59,'Doubs',44703,44704,2,0),(60,'Drôme',44705,44706,2,0),(61,'Essonne',44707,44708,2,0),(62,'Eure',44709,44710,2,0),(63,'Eure-et-Loir',44711,44712,2,0),(64,'Évora',44881,44882,2,0),(65,'Faro',44883,44884,2,0),(66,'Finistère',44713,44714,2,0),(67,'Funchal',44885,44886,2,0),(68,'Gard',44715,44716,2,0),(69,'Gers',44717,44718,2,0),(70,'Girona',13909,15002,2,546),(71,'Gironde',44719,44720,2,0),(72,'Granada',15003,15890,2,443),(73,'Guadalajara',15891,17244,2,676),(74,'Guarda',44887,44888,2,0),(75,'Guipuzcoa',17245,17686,2,220),(76,'Haut-Rhin',44721,44722,2,0),(77,'Haute-Corse',44723,44724,2,0),(78,'Haute-Garonne',44725,44726,2,0),(79,'Haute-Loire',44727,44728,2,0),(80,'Haute-Marne',44729,44730,2,0),(81,'Haute-Saone',44731,44732,2,0),(82,'Haute-Savoie',44733,44734,2,0),(83,'Haute-Vienne',44735,44736,2,0),(84,'Hautes-Alpes',44737,44738,2,0),(85,'Hautes-Pyrénées',44739,44740,2,0),(86,'Hauts-de-Seine',44741,44742,2,0),(87,'Hérault',44743,44744,2,0),(88,'Honserlersdijk',44847,44848,2,0),(89,'Huelva',17687,18142,2,227),(90,'Huesca',18143,19364,2,610),(91,'Ille-et-Vilaine',44745,44746,2,0),(92,'Indre',44747,44748,2,0),(93,'Indre-et-Loire',44749,44750,2,0),(94,'Isère',44751,44752,2,0),(95,'Jaén',19365,19958,2,296),(96,'Jura',44753,44754,2,0),(97,'La Coruña',19959,20978,2,509),(98,'La Rioja',20979,21738,2,379),(99,'Landes',44755,44756,2,0),(100,'Leiria',44889,44890,2,0),(101,'León',21739,23306,2,783),(102,'Lérida',23307,23308,2,0),(103,'Lisboa',44891,44892,2,0),(104,'Lleida',23309,24592,2,641),(105,'Loir-et-Cher',44757,44758,2,0),(106,'Loire',44759,44760,2,0),(107,'Loire-Atlantique',44761,44762,2,0),(108,'Loiret',44763,44764,2,0),(109,'Lot',44765,44766,2,0),(110,'Lot-et-Garonne',44767,44768,2,0),(111,'Lozère',44769,44770,2,0),(112,'Lugo',24593,25750,2,578),(113,'Madrid',25751,26786,2,517),(114,'Maine-et-Loire',44771,44772,2,0),(115,'Málaga',26787,27384,2,298),(116,'Manche',44773,44774,2,0),(117,'Marne',44775,44776,2,0),(118,'Mayenne',44777,44778,2,0),(119,'Melilla',44893,44908,2,7),(120,'Meurthe-et-Moselle',44779,44780,2,0),(121,'Meuse',44781,44782,2,0),(122,'Morbihan',44783,44784,2,0),(123,'Moselle',44785,44786,2,0),(124,'Murcia',27385,27956,2,285),(125,'Navarra',27957,29258,2,650),(126,'Nièvre',44787,44788,2,0),(127,'Noord Holland',44849,44850,2,0),(128,'Nord',44789,44790,2,0),(129,'Oise',44791,44792,2,0),(130,'Orense',29259,30284,2,512),(131,'Orne',44793,44794,2,0),(132,'Palencia',30285,31220,2,467),(133,'París',44795,44796,2,0),(134,'Pas-de-Calais',44797,44798,2,0),(135,'Pontevedra',31221,32166,2,472),(136,'Portalegre',44909,44910,2,0),(137,'Porto',44911,44912,2,0),(138,'Puy-de-Dôme',44799,44800,2,0),(139,'Pyrénées-Atlantiques',44801,44802,2,0),(140,'Pyrénées-Orientales',44803,44804,2,0),(141,'Rhône',44805,44806,2,0),(142,'Salamanca',32167,33918,2,875),(143,'Santarém',44913,44914,2,0),(144,'Saone-et-Loire',44807,44808,2,0),(145,'Sarthe',44809,44810,2,0),(146,'Savoie',44811,44812,2,0),(147,'Segovia',33919,34900,2,490),(148,'Seine-et-Marne',44813,44814,2,0),(149,'Seine-Maritime',44815,44816,2,0),(150,'Seine-Saint-Denis',44817,44818,2,0),(151,'Setúbal',44915,44916,2,0),(152,'Sevilla',34901,35464,2,281),(153,'Somme',44819,44820,2,0),(154,'Soria',35465,36412,2,473),(155,'Tarn',44821,44822,2,0),(156,'Tarn-et-Garonne',44823,44824,2,0),(157,'Tarragona',36413,37296,2,441),(158,'Territoire de Belfort',44825,44826,2,0),(159,'Teruel',37297,38356,2,529),(160,'Toledo',38357,39268,2,455),(161,'Val-d’Oise',44827,44828,2,0),(162,'Val-de-Marne',44829,44830,2,0),(163,'Valencia',39269,40494,2,612),(164,'Valladolid',40495,41478,2,491),(165,'Var',44831,44832,2,0),(166,'Vaucluse',44833,44834,2,0),(167,'Vendée',44835,44836,2,0),(168,'Viana do Castelo',44917,44918,2,0),(169,'Vienne',44837,44838,2,0),(170,'Vila Real',44919,44920,2,0),(171,'Viseu',44921,44922,2,0),(172,'Vizcaya',41479,42024,2,272),(173,'Vosges',44839,44840,2,0),(174,'Yonne',44841,44842,2,0),(175,'Yvelines',44843,44844,2,0),(176,'Zamora',42025,43328,2,651),(177,'Zaragoza',43329,44650,2,660),(178,'A Arnoia',29260,29263,3,1),(179,'A Baña',19960,19967,3,3),(180,'A Bola',29264,29267,3,1),(181,'A Cañiza',31222,31239,3,8),(182,'A Capela',19968,19971,3,1),(183,'A Coruña',19972,20003,3,15),(184,'A Estrada',31240,31271,3,15),(185,'A Fonsagrada',24594,24621,3,13),(186,'A Guarda',31272,31279,3,3),(187,'A Gudiña',29268,29279,3,5),(188,'A Illa de Arousa',31280,31283,3,1),(189,'A Lama',31284,31301,3,8),(190,'A Laracha',20004,20011,3,3),(191,'A Merca',29280,29289,3,4),(192,'A Mezquita',29290,29299,3,4),(193,'A Pastoriza',24622,24631,3,4),(194,'A Peroxa',29300,29313,3,6),(195,'A Pobra de Trives',29314,29325,3,5),(196,'A Pobra do Brollón',24632,24657,3,12),(197,'A Pobra do Caramiñal',20012,20019,3,3),(198,'A Pontenova',24658,24681,3,11),(199,'A Rúa',29326,29333,3,3),(200,'A Teixeira',29334,29339,3,2),(201,'A Veiga',29340,29355,3,7),(202,'Ababuj',37298,37301,3,1),(203,'Abades',33920,33923,3,1),(204,'Abadía',9066,9069,3,1),(205,'Abadín',24682,24695,3,6),(206,'Abadiño',41480,41483,3,1),(207,'Abáigar',27958,27961,3,1),(208,'Abajas',7238,7243,3,2),(209,'Ábalos',20980,20983,3,1),(210,'Abaltzisketa',17246,17249,3,1),(211,'Abánades',15892,15895,3,1),(212,'Abanilla',27386,27395,3,4),(213,'Abanto',43330,43333,3,1),(214,'Abanto y Ciérvana-Abanto Zierbena',41484,41489,3,2),(215,'Abarán',27396,27401,3,2),(216,'Abarca de Campos',30286,30289,3,1),(217,'Abárzuza/Abartzuza',27962,27965,3,1),(218,'Abaurregaina/Abaurrea Alta',27966,27969,3,1),(219,'Abaurrepea/Abaurrea Baja',27970,27973,3,1),(220,'Abegondo',20020,20023,3,1),(221,'Abejar',35466,35469,3,1),(222,'Abejuela',37302,37305,3,1),(223,'Abella de la Conca',23310,23317,3,3),(224,'Abengibre',372,375,3,1),(225,'Abenójar',11832,11837,3,2),(226,'Aberin',27974,27979,3,2),(227,'Abertura',9070,9073,3,1),(228,'Abezames',42026,42029,3,1),(229,'Abia de la Obispalía',12858,12861,3,1),(230,'Abia de las Torres',30290,30293,3,1),(231,'Abiego',18144,18149,3,2),(232,'Abizanda',18150,18155,3,2),(233,'Abla',1666,1669,3,1),(234,'Ablanque',15896,15899,3,1),(235,'Ablitas',27980,27983,3,1),(236,'Abrera',5718,5721,3,1),(237,'Abrucena',1670,1675,3,2),(238,'Abusejo',32168,32171,3,1),(239,'Acebedo',21740,21745,3,2),(240,'Acebo',9074,9077,3,1),(241,'Acedera',4448,4453,3,2),(242,'Acehúche',9078,9081,3,1),(243,'Aceituna',9082,9085,3,1),(244,'Acered',43334,43337,3,1),(245,'Aceuchal',4454,4459,3,2),(246,'Adahuesca',18156,18159,3,1),(247,'Adalia',40496,40499,3,1),(248,'Adamuz',12342,12349,3,3),(249,'Adanero',3360,3363,3,1),(250,'Ademuz',39270,39273,3,1),(251,'Adiós',27984,27987,3,1),(252,'Adobes',15900,15903,3,1),(253,'Ador',39274,39277,3,1),(254,'Adra',1676,1683,3,3),(255,'Adrada de Haza',7244,7247,3,1),(256,'Adrada de Pirón',33924,33927,3,1),(257,'Adradas',35470,35473,3,1),(258,'Adrados',33928,33931,3,1),(259,'Aduna',17250,17253,3,1),(260,'Adzaneta de Albaida',39278,39281,3,1),(261,'Agallas',32172,32175,3,1),(262,'Àger',23318,23325,3,3),(263,'Agolada',31302,31319,3,8),(264,'Agón',43338,43341,3,1),(265,'Agoncillo',20984,20987,3,1),(266,'Agost',894,897,3,1),(267,'Agramunt',23326,23335,3,4),(268,'Ágreda',35474,35481,3,3),(269,'Agres',898,901,3,1),(270,'Agrón',15004,15007,3,1),(271,'Aguadulce',34902,34905,3,1),(272,'Aguarón',43342,43345,3,1),(273,'Aguas Cándidas',7248,7251,3,1),(274,'Aguasal',40500,40503,3,1),(275,'Aguatón',37306,37309,3,1),(276,'Aguaviva',37310,37313,3,1),(277,'Agudo',11838,11841,3,1),(278,'Agüero',18160,18163,3,1),(279,'Aguilafuente',33932,33935,3,1),(280,'Aguilar de Bureba',7252,7255,3,1),(281,'Aguilar de Campoo',30294,30309,3,7),(282,'Aguilar de Campos',40504,40507,3,1),(283,'Aguilar de Codés',27988,27991,3,1),(284,'Aguilar de la Frontera',12350,12353,3,1),(285,'Aguilar de Segarra',5722,5725,3,1),(286,'Aguilar del Alfambra',37314,37317,3,1),(287,'Aguilar del Río Alhama',20988,20993,3,2),(288,'Águilas',27402,27407,3,2),(289,'Aguilón',43346,43349,3,1),(290,'Agullana',13910,13913,3,1),(291,'Agullent',39282,39285,3,1),(292,'Agurain/Salvatierra',4,9,3,2),(293,'Ahigal',9086,9089,3,1),(294,'Ahigal de los Aceiteros',32176,32179,3,1),(295,'Ahigal de Villarino',32180,32183,3,1),(296,'Ahillones',4460,4463,3,1),(297,'Aia',17254,17259,3,2),(298,'Aibar/Oibar',27992,27995,3,1),(299,'Aiguafreda',5726,5729,3,1),(300,'Aiguamúrcia',36414,36419,3,2),(301,'Aiguaviva',13914,13917,3,1),(302,'Aigües',902,905,3,1),(303,'Aín',11226,11229,3,1),(304,'Aínsa-Sobrarbe',18164,18179,3,7),(305,'Ainzón',43350,43353,3,1),(306,'Aisa',18180,18185,3,2),(307,'Aitona',23336,23339,3,1),(308,'Aizarnazabal',17260,17263,3,1),(309,'Ajalvir',25752,25755,3,1),(310,'Ajamil de Cameros',20994,20997,3,1),(311,'Ajangiz',41490,41493,3,1),(312,'Ajofrín',38358,38361,3,1),(313,'Alacón',37318,37321,3,1),(314,'Alacuás',39286,39289,3,1),(315,'Aladrén',43354,43357,3,1),(316,'Alaejos',40508,40511,3,1),(317,'Alagón',43358,43363,3,2),(318,'Alagón del Río',9090,9093,3,1),(319,'Alaior',5664,5667,3,1),(320,'Alájar',17688,17691,3,1),(321,'Alameda',26788,26791,3,1),(322,'Alameda de la Sagra',38362,38365,3,1),(323,'Alameda del Valle',25756,25759,3,1),(324,'Alamedilla',15008,15013,3,2),(325,'Alamillo',11842,11845,3,1),(326,'Alaminos',15904,15907,3,1),(327,'Alange',4464,4467,3,1),(328,'Alanís',34906,34909,3,1),(329,'Alar del Rey',30310,30317,3,3),(330,'Alaraz',32184,32187,3,1),(331,'Alarba',43364,43367,3,1),(332,'Alarcón',12862,12865,3,1),(333,'Alarilla',15908,15911,3,1),(334,'Alaró',5280,5283,3,1),(335,'Alàs i Cerc',23340,23347,3,3),(336,'Alatoz',376,379,3,1),(337,'Alba',37322,37325,3,1),(338,'Alba de Cerrato',30318,30321,3,1),(339,'Alba de Tormes',32188,32197,3,4),(340,'Alba de Yeltes',32198,32201,3,1),(341,'Albacete',380,411,3,15),(342,'Albaida',39290,39293,3,1),(343,'Albaida del Aljarafe',34910,34913,3,1),(344,'Albal',39294,39297,3,1),(345,'Albalá',9094,9099,3,2),(346,'Albaladejo',11846,11849,3,1),(347,'Albaladejo del Cuende',12866,12869,3,1),(348,'Albalat de la Ribera',39298,39301,3,1),(349,'Albalat dels Sorells',39302,39305,3,1),(350,'Albalat dels Tarongers',39306,39309,3,1),(351,'Albalate de Cinca',18186,18189,3,1),(352,'Albalate de las Nogueras',12870,12873,3,1),(353,'Albalate de Zorita',15912,15917,3,2),(354,'Albalate del Arzobispo',37326,37329,3,1),(355,'Albalatillo',18190,18193,3,1),(356,'Albánchez',1684,1689,3,2),(357,'Albanchez de Mágina',19366,19369,3,1),(358,'Albanyà',13918,13923,3,2),(359,'Albares',15918,15921,3,1),(360,'Albarracín',37330,37337,3,3),(361,'Albarreal de Tajo',38366,38369,3,1),(362,'Albatana',412,415,3,1),(363,'Albatàrrec',23348,23351,3,1),(364,'Albatera',906,909,3,1),(365,'Albelda',18194,18197,3,1),(366,'Albelda de Iregua',20998,21001,3,1),(367,'Albendea',12874,12877,3,1),(368,'Albendiego',15922,15925,3,1),(369,'Albentosa',37338,37343,3,2),(370,'Alberique',39310,39313,3,1),(371,'Alberite',21002,21007,3,2),(372,'Alberite de San Juan',43368,43371,3,1),(373,'Albero Alto',18198,18201,3,1),(374,'Albero Bajo',18202,18205,3,1),(375,'Alberuela de Tubo',18206,18209,3,1),(376,'Albesa',23352,23355,3,1),(377,'Albeta',43372,43375,3,1),(378,'Albillos',7256,7259,3,1),(379,'Albinyana',36420,36425,3,2),(380,'Albiztur',17264,17267,3,1),(381,'Albocàsser',11230,11233,3,1),(382,'Alboloduy',1690,1695,3,2),(383,'Albolote',15014,15019,3,2),(384,'Albondón',15020,15023,3,1),(385,'Albons',13924,13927,3,1),(386,'Alborache',39314,39317,3,1),(387,'Alboraya',39318,39325,3,3),(388,'Alborea',416,419,3,1),(389,'Alborge',43376,43379,3,1),(390,'Albornos',3364,3367,3,1),(391,'Albox',1696,1709,3,6),(392,'Albudeite',27408,27411,3,1),(393,'Albuixech',39326,39329,3,1),(394,'Albuñán',15024,15027,3,1),(395,'Albuñol',15028,15035,3,3),(396,'Albuñuelas',15036,15039,3,1),(397,'Alburquerque',4468,4473,3,2),(398,'Alcabón',38370,38373,3,1),(399,'Alcácer',39330,39335,3,2),(400,'Alcadozo',420,425,3,2),(401,'Alcaine',37344,37347,3,1),(402,'Alcalá de Ebro',43380,43383,3,1),(403,'Alcalá de Guadaíra',34914,34919,3,2),(404,'Alcalá de Gurrea',18210,18215,3,2),(405,'Alcalá de Henares',25760,25775,3,7),(406,'Alcalá de la Selva',37348,37353,3,2),(407,'Alcalá de la Vega',12878,12881,3,1),(408,'Alcalá de los Gazules',10118,10121,3,1),(409,'Alcalá de Moncayo',43384,43387,3,1),(410,'Alcalà de Xivert',11234,11239,3,2),(411,'Alcalá del Júcar',426,435,3,4),(412,'Alcalá del Obispo',18216,18219,3,1),(413,'Alcalá del Río',34920,34927,3,3),(414,'Alcalá del Valle',10122,10125,3,1),(415,'Alcalá la Real',19370,19389,3,9),(416,'Alcalalí',910,915,3,2),(417,'Alcampell',18220,18223,3,1),(418,'Alcanadre',21008,21011,3,1),(419,'Alcanar',36426,36431,3,2),(420,'Alcañices',42030,42039,3,4),(421,'Alcañiz',37354,37361,3,3),(422,'Alcañizo',38374,38377,3,1),(423,'Alcanó',23356,23359,3,1),(424,'Alcántara',9100,9107,3,3),(425,'Alcántara de Júcar',39336,39339,3,1),(426,'Alcantarilla',27412,27415,3,1),(427,'Alcantud',12882,12885,3,1),(428,'Alcaracejos',12354,12357,3,1),(429,'Alcaraz',436,445,3,4),(430,'Alcarràs',23360,23365,3,2),(431,'Alcaucín',26792,26797,3,2),(432,'Alcaudete',19390,19397,3,3),(433,'Alcaudete de la Jara',38378,38381,3,1),(434,'Alcázar de San Juan',11850,11859,3,4),(435,'Alcázar del Rey',12886,12889,3,1),(436,'Alcazarén',40512,40515,3,1),(437,'Alcoba',11860,11865,3,2),(438,'Alcobendas',25776,25783,3,3),(439,'Alcocer',15926,15929,3,1),(440,'Alcocer de Planes',916,919,3,1),(441,'Alcocero de Mola',7260,7263,3,1),(442,'Alcohujate',12890,12893,3,1),(443,'Alcolea',1710,1715,3,2),(444,'Alcolea de Calatrava',11866,11869,3,1),(445,'Alcolea de Cinca',18224,18227,3,1),(446,'Alcolea de las Peñas',15930,15933,3,1),(447,'Alcolea de Tajo',38382,38385,3,1),(448,'Alcolea del Pinar',15934,15941,3,3),(449,'Alcolea del Río',34928,34933,3,2),(450,'Alcoleja',920,923,3,1),(451,'Alcoletge',23366,23371,3,2),(452,'Alcollarín',9108,9111,3,1),(453,'Alconaba',35482,35485,3,1),(454,'Alconada',32202,32205,3,1),(455,'Alconada de Maderuelo',33936,33939,3,1),(456,'Alconchel',4474,4477,3,1),(457,'Alconchel de Ariza',43388,43391,3,1),(458,'Alconchel de la Estrella',12894,12897,3,1),(459,'Alconera',4478,4481,3,1),(460,'Alcóntar',1716,1721,3,2),(461,'Alcorcón',25784,25795,3,5),(462,'Alcorisa',37362,37365,3,1),(463,'Alcoroches',15942,15945,3,1),(464,'Alcover',36432,36435,3,1),(465,'Alcoy/Alcoi',924,937,3,6),(466,'Alcubierre',18228,18231,3,1),(467,'Alcubilla de Avellaneda',35486,35491,3,2),(468,'Alcubilla de las Peñas',35492,35495,3,1),(469,'Alcubilla de Nogales',42040,42043,3,1),(470,'Alcubillas',11870,11873,3,1),(471,'Alcublas',39340,39343,3,1),(472,'Alcúdia',5284,5287,3,1),(473,'Alcudia de Crespins',39344,39347,3,1),(474,'Alcudia de Monteagud',1722,1725,3,1),(475,'Alcudia de Veo',11240,11243,3,1),(476,'Alcuéscar',9112,9115,3,1),(477,'Aldaya',39348,39351,3,1),(478,'Aldea de San Miguel',40516,40519,3,1),(479,'Aldea del Cano',9116,9119,3,1),(480,'Aldea del Fresno',25796,25799,3,1),(481,'Aldea del Obispo',32206,32209,3,1),(482,'Aldea del Rey',11874,11877,3,1),(483,'Aldea en Cabo',38386,38389,3,1),(484,'Aldea Real',33940,33943,3,1),(485,'Aldeacentenera',9120,9123,3,1),(486,'Aldeacipreste',32210,32213,3,1),(487,'Aldeadávila de la Ribera',32214,32221,3,3),(488,'Aldealafuente',35496,35499,3,1),(489,'Aldealcorvo',33944,33947,3,1),(490,'Aldealengua',32222,32225,3,1),(491,'Aldealengua de Pedraza',33948,33951,3,1),(492,'Aldealengua de Santa María',33952,33955,3,1),(493,'Aldealices',35500,35503,3,1),(494,'Aldealpozo',35504,35507,3,1),(495,'Aldealseñor',35508,35511,3,1),(496,'Aldeamayor de San Martín',40520,40525,3,2),(497,'Aldeanueva de Barbarroya',38390,38393,3,1),(498,'Aldeanueva de Ebro',21012,21015,3,1),(499,'Aldeanueva de Figueroa',32226,32229,3,1),(500,'Aldeanueva de Guadalajara',15946,15949,3,1),(501,'Aldeanueva de la Serrezuela',33956,33959,3,1),(502,'Aldeanueva de la Sierra',32230,32233,3,1),(503,'Aldeanueva de la Vera',9124,9127,3,1),(504,'Aldeanueva de San Bartolomé',38394,38397,3,1),(505,'Aldeanueva de Santa Cruz',3368,3371,3,1),(506,'Aldeanueva del Camino',9128,9131,3,1),(507,'Aldeanueva del Codonal',33960,33963,3,1),(508,'Aldeaquemada',19398,19401,3,1),(509,'Aldearrodrigo',32234,32237,3,1),(510,'Aldearrubia',32238,32241,3,1),(511,'Aldeaseca',3372,3375,3,1),(512,'Aldeaseca de Alba',32242,32245,3,1),(513,'Aldeaseca de la Frontera',32246,32249,3,1),(514,'Aldeasoña',33964,33967,3,1),(515,'Aldeatejada',32250,32261,3,5),(516,'Aldeavieja de Tormes',32262,32265,3,1),(517,'Aldehorno',33968,33971,3,1),(518,'Aldehuela de Jerte',9132,9135,3,1),(519,'Aldehuela de la Bóveda',32266,32271,3,2),(520,'Aldehuela de Liestos',43392,43395,3,1),(521,'Aldehuela de Periáñez',35512,35515,3,1),(522,'Aldehuela de Yeltes',32272,32277,3,2),(523,'Aldehuela del Codonal',33972,33975,3,1),(524,'Aldeire',15040,15043,3,1),(525,'Aldeonte',33976,33981,3,2),(526,'Aldover',36436,36439,3,1),(527,'Aledo',27416,27419,3,1),(528,'Alegia',17268,17271,3,1),(529,'Alegría-Dulantzi',10,15,3,2),(530,'Alella',5730,5733,3,1),(531,'Alentisque',35516,35519,3,1),(532,'Alerre',18232,18235,3,1),(533,'Alesanco',21016,21019,3,1),(534,'Alesón',21020,21023,3,1),(535,'Alfacar',15044,15049,3,2),(536,'Alfafar',39352,39355,3,1),(537,'Alfafara',938,941,3,1),(538,'Alfajarín',43396,43399,3,1),(539,'Alfambra',37366,37369,3,1),(540,'Alfamén',43400,43403,3,1),(541,'Alfántega',18236,18239,3,1),(542,'Alfara de Carles',36440,36443,3,1),(543,'Alfara de la Baronia',39356,39359,3,1),(544,'Alfara del Patriarca',39360,39363,3,1),(545,'Alfaraz de Sayago',42044,42047,3,1),(546,'Alfarnate',26798,26801,3,1),(547,'Alfarnatejo',26802,26805,3,1),(548,'Alfaro',21024,21027,3,1),(549,'Alfarp',39364,39367,3,1),(550,'Alfarràs',23372,23375,3,1),(551,'Alfarrasí',39368,39371,3,1),(552,'Alfauir',39372,39375,3,1),(553,'Alfés',23376,23379,3,1),(554,'Alfondeguilla',11244,11247,3,1),(555,'Alforja',36444,36447,3,1),(556,'Alforque',43404,43407,3,1),(557,'Alfoz',24696,24707,3,5),(558,'Alfoz de Bricia',7264,7273,3,4),(559,'Alfoz de Lloredo',10440,10453,3,6),(560,'Alfoz de Quintanadueñas',7274,7279,3,2),(561,'Alfoz de Santa Gadea',7280,7285,3,2),(562,'Algadefe',21746,21749,3,1),(563,'Algaida',5288,5295,3,3),(564,'Algámitas',34934,34937,3,1),(565,'Algar',10126,10129,3,1),(566,'Algar de Mesa',15950,15953,3,1),(567,'Algar de Palancia',39376,39379,3,1),(568,'Algarinejo',15050,15055,3,2),(569,'Algarra',12898,12901,3,1),(570,'Algarrobo',26806,26809,3,1),(571,'Algatocín',26810,26813,3,1),(572,'Algeciras',10130,10149,3,9),(573,'Algemesí',39380,39383,3,1),(574,'Algerri',23380,23383,3,1),(575,'Algete',25800,25805,3,2),(576,'Algimia de Alfara',39384,39387,3,1),(577,'Algimia de Almonacid',11248,11251,3,1),(578,'Alginet',39388,39391,3,1),(579,'Algodonales',10150,10155,3,2),(580,'Algodre',42048,42051,3,1),(581,'Algora',15954,15957,3,1),(582,'Algorfa',942,945,3,1),(583,'Alguaire',23384,23387,3,1),(584,'Alguazas',27420,27425,3,2),(585,'Algueña',946,949,3,1),(586,'Alhabia',1726,1729,3,1),(587,'Alhama de Almería',1730,1733,3,1),(588,'Alhama de Aragón',43408,43411,3,1),(589,'Alhama de Granada',15056,15061,3,2),(590,'Alhama de Murcia',27426,27429,3,1),(591,'Alhambra',11878,11883,3,2),(592,'Alhaurín de la Torre',26814,26817,3,1),(593,'Alhaurín el Grande',26818,26821,3,1),(594,'Alhendín',15062,15065,3,1),(595,'Alhóndiga',15958,15961,3,1),(596,'Alía',9136,9139,3,1),(597,'Aliaga',37370,37377,3,3),(598,'Aliaguilla',12902,12905,3,1),(599,'Alicante/Alacant',950,1001,3,25),(600,'Alicún',1734,1737,3,1),(601,'Alicún de Ortega',15066,15069,3,1),(602,'Alija del Infantado',21750,21755,3,2),(603,'Alins',23388,23395,3,3),(604,'Alió',36448,36451,3,1),(605,'Alique',15962,15965,3,1),(606,'Aliseda',9140,9143,3,1),(607,'Aliud',35520,35523,3,1),(608,'Aljaraque',17692,17701,3,4),(609,'Aljucén',4482,4485,3,1),(610,'Alkiza',17272,17275,3,1),(611,'Allande',2312,2327,3,7),(612,'Allariz',29356,29373,3,8),(613,'Allepuz',37378,37381,3,1),(614,'Aller',2328,2357,3,14),(615,'Allín/Allin',27996,28001,3,2),(616,'Allo',28002,28005,3,1),(617,'Alloza',37382,37385,3,1),(618,'Allueva',37386,37389,3,1),(619,'Almacelles',23396,23399,3,1),(620,'Almácera',39392,39395,3,1),(621,'Almáchar',26822,26825,3,1),(622,'Almadén',11884,11887,3,1),(623,'Almadén de la Plata',34938,34941,3,1),(624,'Almadenejos',11888,11893,3,2),(625,'Almadrones',15966,15969,3,1),(626,'Almagro',11894,11899,3,2),(627,'Almajano',35524,35527,3,1),(628,'Almaluez',35528,35533,3,2),(629,'Almansa',446,449,3,1),(630,'Almanza',21756,21763,3,3),(631,'Almaraz',9144,9147,3,1),(632,'Almaraz de Duero',42052,42055,3,1),(633,'Almargen',26826,26829,3,1),(634,'Almarza',35534,35545,3,5),(635,'Almarza de Cameros',21028,21033,3,2),(636,'Almassora',11252,11255,3,1),(637,'Almatret',23400,23403,3,1),(638,'Almazán',35546,35551,3,2),(639,'Almazul',35552,35557,3,2),(640,'Almedíjar',11256,11259,3,1),(641,'Almedina',11900,11903,3,1),(642,'Almedinilla',12358,12363,3,2),(643,'Almegíjar',15070,15073,3,1),(644,'Almeida de Sayago',42056,42061,3,2),(645,'Almenar',23404,23407,3,1),(646,'Almenar de Soria',35558,35565,3,3),(647,'Almenara',11260,11263,3,1),(648,'Almenara de Adaja',40526,40529,3,1),(649,'Almenara de Tormes',32278,32281,3,1),(650,'Almendra',32282,32285,3,1),(651,'Almendral',4486,4489,3,1),(652,'Almendral de la Cañada',38398,38401,3,1),(653,'Almendralejo',4490,4493,3,1),(654,'Almendros',12906,12909,3,1),(655,'Almensilla',34942,34945,3,1),(656,'Almería',1738,1767,3,14),(657,'Almiserat',39396,39399,3,1),(658,'Almochuel',43412,43415,3,1),(659,'Almócita',1768,1771,3,1),(660,'Almodóvar del Campo',11904,11929,3,12),(661,'Almodóvar del Pinar',12910,12913,3,1),(662,'Almodóvar del Río',12364,12369,3,2),(663,'Almogía',26830,26833,3,1),(664,'Almoguera',15970,15973,3,1),(665,'Almohaja',37390,37393,3,1),(666,'Almoharín',9148,9151,3,1),(667,'Almoines',39400,39403,3,1),(668,'Almonacid de la Cuba',43416,43419,3,1),(669,'Almonacid de la Sierra',43420,43423,3,1),(670,'Almonacid de Toledo',38402,38405,3,1),(671,'Almonacid de Zorita',15974,15979,3,2),(672,'Almonacid del Marquesado',12914,12917,3,1),(673,'Almonaster la Real',17702,17717,3,7),(674,'Almonte',17718,17729,3,5),(675,'Almoradí',1002,1007,3,2),(676,'Almorox',38406,38409,3,1),(677,'Almoster',36452,36455,3,1),(678,'Almudaina',1008,1011,3,1),(679,'Almudévar',18240,18245,3,2),(680,'Almuñécar',15074,15079,3,2),(681,'Almunia de San Juan',18246,18251,3,2),(682,'Almuniente',18252,18257,3,2),(683,'Almuradiel',11930,11935,3,2),(684,'Almusafes',39404,39407,3,1),(685,'Alobras',37394,37397,3,1),(686,'Alocén',15980,15983,3,1),(687,'Alonsotegi',41494,41497,3,1),(688,'Álora',26834,26843,3,4),(689,'Alòs de Balaguer',23408,23411,3,1),(690,'Alosno',17730,17735,3,2),(691,'Alovera',15984,15987,3,1),(692,'Alozaina',26844,26847,3,1),(693,'Alp',13928,13933,3,2),(694,'Alpandeire',26848,26851,3,1),(695,'Alpanseque',35566,35569,3,1),(696,'Alpartir',43424,43427,3,1),(697,'Alpedrete',25806,25811,3,2),(698,'Alpeñés',37398,37401,3,1),(699,'Alpens',5734,5737,3,1),(700,'Alpera',450,453,3,1),(701,'Alpicat',23412,23415,3,1),(702,'Alpuente',39408,39411,3,1),(703,'Alpujarra de la Sierra',15080,15089,3,4),(704,'Alquería de la Condesa',39412,39415,3,1),(705,'Alquézar',18258,18261,3,1),(706,'Alquife',15090,15093,3,1),(707,'Alsodux',1772,1775,3,1),(708,'Alt Àneu',23416,23425,3,4),(709,'Altable',7286,7289,3,1),(710,'Altafulla',36456,36459,3,1),(711,'Altarejos',12918,12923,3,2),(712,'Altea',1012,1017,3,2),(713,'Altorricón',18262,18265,3,1),(714,'Altsasu/Alsasua',28006,28009,3,1),(715,'Altura',11264,11267,3,1),(716,'Altzaga',17276,17279,3,1),(717,'Altzo',17280,17283,3,1),(718,'Alustante',15988,15993,3,2),(719,'Alzira',39416,39423,3,3),(720,'Amavida',3376,3379,3,1),(721,'Amayuelas de Arriba',30322,30325,3,1),(722,'Ambel',43428,43431,3,1),(723,'Ambite',25812,25815,3,1),(724,'Amer',13934,13937,3,1),(725,'Ames',20024,20037,3,6),(726,'Améscoa Baja',28010,28013,3,1),(727,'Ameyugo',7290,7293,3,1),(728,'Amezketa',17284,17287,3,1),(729,'Amieva',2358,2363,3,2),(730,'Amoeiro',29374,29383,3,4),(731,'Amorebieta-Etxano',41498,41503,3,2),(732,'Amoroto',41504,41507,3,1),(733,'Amposta',36460,36467,3,3),(734,'Ampudia',30326,30333,3,3),(735,'Ampuero',10454,10461,3,3),(736,'Amurrio',16,23,3,3),(737,'Amusco',30334,30339,3,2),(738,'Amusquillo',40530,40533,3,1),(739,'Anadón',37402,37405,3,1),(740,'Añana',24,29,3,2),(741,'Anaya',33982,33985,3,1),(742,'Anaya de Alba',32286,32291,3,2),(743,'Anchuelo',25816,25819,3,1),(744,'Anchuras',11936,11941,3,2),(745,'Ancín/Antzin',28014,28019,3,2),(746,'Andavías',42062,42065,3,1),(747,'Andilla',39424,39427,3,1),(748,'Andoain',17288,17291,3,1),(749,'Andorra',37406,37409,3,1),(750,'Andosilla',28020,28023,3,1),(751,'Andratx',5296,5305,3,4),(752,'Andújar',19402,19411,3,4),(753,'Añe',33986,33989,3,1),(754,'Anento',43432,43435,3,1),(755,'Anglès',13938,13941,3,1),(756,'Anglesola',23426,23429,3,1),(757,'Angón',15994,15997,3,1),(758,'Anguciana',21034,21037,3,1),(759,'Angüés',18266,18273,3,3),(760,'Anguiano',21038,21041,3,1),(761,'Anguita',15998,16005,3,3),(762,'Anguix',7294,7297,3,1),(763,'Anievas',10462,10465,3,1),(764,'Aniñón',43436,43439,3,1),(765,'Anna',39428,39431,3,1),(766,'Anoeta',17292,17295,3,1),(767,'Añón de Moncayo',43440,43443,3,1),(768,'Añora',12370,12375,3,2),(769,'Añorbe',28024,28027,3,1),(770,'Añover de Tajo',38410,38413,3,1),(771,'Añover de Tormes',32292,32295,3,1),(772,'Anquela del Ducado',16006,16011,3,2),(773,'Anquela del Pedregal',16012,16015,3,1),(774,'Ansó',18274,18279,3,2),(775,'Ansoáin/Antsoain',28028,28031,3,1),(776,'Antas',1776,1781,3,2),(777,'Antas de Ulla',24708,24719,3,5),(778,'Antella',39432,39435,3,1),(779,'Antequera',26852,26865,3,6),(780,'Antigüedad',30340,30343,3,1),(781,'Antillón',18280,18283,3,1),(782,'Antzuola',17296,17299,3,1),(783,'Anue',28032,28035,3,1),(784,'Aoiz/Agoitz',28036,28039,3,1),(785,'Arabayona de Mógica',32296,32299,3,1),(786,'Aracena',17736,17745,3,4),(787,'Aragüés del Puerto',18284,18287,3,1),(788,'Arahal',34946,34949,3,1),(789,'Arahuetes',33990,33995,3,2),(790,'Araitz',28040,28043,3,1),(791,'Arakaldo',41508,41511,3,1),(792,'Arakil',28044,28053,3,4),(793,'Arama',17300,17303,3,1),(794,'Aramaio',30,37,3,3),(795,'Aranarache/Aranaratxe',28054,28057,3,1),(796,'Arancón',35570,35575,3,2),(797,'Aranda de Duero',7298,7305,3,3),(798,'Aranda de Moncayo',43444,43447,3,1),(799,'Arándiga',43448,43451,3,1),(800,'Arandilla',7306,7309,3,1),(801,'Arandilla del Arroyo',12924,12927,3,1),(802,'Aranga',20038,20041,3,1),(803,'Aranguren',28058,28061,3,1),(804,'Aranjuez',25820,25823,3,1),(805,'Arano',28062,28065,3,1),(806,'Arantza',28066,28069,3,1),(807,'Arantzazu',41512,41515,3,1),(808,'Arañuel',11268,11271,3,1),(809,'Aranzueque',16016,16019,3,1),(810,'Arapiles',32300,32309,3,4),(811,'Aras',28070,28073,3,1),(812,'Aras de los Olmos',39436,39439,3,1),(813,'Arauzo de Miel',7310,7315,3,2),(814,'Arauzo de Salce',7316,7319,3,1),(815,'Arauzo de Torre',7320,7323,3,1),(816,'Arbancón',16020,16023,3,1),(817,'Arbeca',23430,23433,3,1),(818,'Arbeteta',16024,16027,3,1),(819,'Arbizu',28074,28077,3,1),(820,'Arbo',31320,31335,3,7),(821,'Arboleas',1782,1785,3,1),(822,'Arbolí',36468,36471,3,1),(823,'Arbúcies',13942,13947,3,2),(824,'Arcas',12928,12931,3,1),(825,'Arce/Artzi',28078,28085,3,3),(826,'Arcediano',32310,32313,3,1),(827,'Arcenillas',42066,42069,3,1),(828,'Archena',27430,27435,3,2),(829,'Árchez',26866,26869,3,1),(830,'Archidona',26870,26879,3,4),(831,'Arcicóllar',38414,38417,3,1),(832,'Arconada',30344,30347,3,1),(833,'Arcones',33996,33999,3,1),(834,'Arcos',7324,7329,3,2),(835,'Arcos de Jalón',35576,35589,3,6),(836,'Arcos de la Frontera',10156,10163,3,3),(837,'Arcos de la Polvorosa',42070,42073,3,1),(838,'Arcos de la Sierra',12932,12935,3,1),(839,'Arcos de las Salinas',37410,37413,3,1),(840,'Ardales',26880,26885,3,2),(841,'Ardisa',43452,43455,3,1),(842,'Ardón',21764,21771,3,3),(843,'Areatza',41516,41519,3,1),(844,'Arellano',28086,28089,3,1),(845,'Arén',18288,18291,3,1),(846,'Arenales de San Gregorio',11942,11945,3,1),(847,'Arenas',26886,26891,3,2),(848,'Arenas de Iguña',10466,10471,3,2),(849,'Arenas de San Juan',11946,11949,3,1),(850,'Arenas de San Pedro',3380,3385,3,2),(851,'Arenas del Rey',15094,15101,3,3),(852,'Arenillas',35590,35593,3,1),(853,'Arenillas de Riopisuerga',7330,7333,3,1),(854,'Arens de Lledó',37414,37417,3,1),(855,'Arenys de Mar',5738,5741,3,1),(856,'Arenys de Munt',5742,5747,3,2),(857,'Arenzana de Abajo',21042,21045,3,1),(858,'Arenzana de Arriba',21046,21049,3,1),(859,'Ares',20042,20049,3,3),(860,'Ares del Maestrat',11272,11275,3,1),(861,'Areso',28090,28093,3,1),(862,'Aretxabaleta',17304,17307,3,1),(863,'Arevalillo',3386,3389,3,1),(864,'Arevalillo de Cega',34000,34003,3,1),(865,'Arévalo',3390,3393,3,1),(866,'Arévalo de la Sierra',35594,35597,3,1),(867,'Argamasilla de Alba',11950,11953,3,1),(868,'Argamasilla de Calatrava',11954,11957,3,1),(869,'Arganda del Rey',25824,25827,3,1),(870,'Argañín',42074,42077,3,1),(871,'Arganza',21772,21779,3,3),(872,'Argavieso',18292,18295,3,1),(873,'Argecilla',16028,16031,3,1),(874,'Argelaguer',13948,13951,3,1),(875,'Argelita',11276,11279,3,1),(876,'Argençola',5748,5751,3,1),(877,'Argente',37418,37421,3,1),(878,'Argentona',5752,5755,3,1),(879,'Argés',38418,38421,3,1),(880,'Argoños',10472,10475,3,1),(881,'Arguedas',28094,28097,3,1),(882,'Arguis',18296,18299,3,1),(883,'Arguisuelas',12936,12939,3,1),(884,'Argujillo',42078,42081,3,1),(885,'Aria',28098,28101,3,1),(886,'Ariany',5306,5311,3,2),(887,'Aribe',28102,28105,3,1),(888,'Arija',7334,7337,3,1),(889,'Ariño',37422,37425,3,1),(890,'Ariza',43456,43459,3,1),(891,'Arjona',19412,19415,3,1),(892,'Arjonilla',19416,19419,3,1),(893,'Arlanzón',7338,7341,3,1),(894,'Armallones',16032,16035,3,1),(895,'Armañanzas',28106,28109,3,1),(896,'Armenteros',32314,32323,3,4),(897,'Armilla',15102,15105,3,1),(898,'Armiñón',38,43,3,2),(899,'Armuña',34004,34011,3,3),(900,'Armuña de Almanzora',1786,1789,3,1),(901,'Armuña de Tajuña',16036,16039,3,1),(902,'Arnedillo',21050,21055,3,2),(903,'Arnedo',21056,21061,3,2),(904,'Arnes',36472,36475,3,1),(905,'Arnuero',10476,10481,3,2),(906,'Aroche',17746,17757,3,5),(907,'Arquillinos',42082,42085,3,1),(908,'Arquillos',19420,19425,3,2),(909,'Arrabalde',42086,42089,3,1),(910,'Arraia-Maeztu',44,51,3,3),(911,'Arrancacepas',12940,12943,3,1),(912,'Arrankudiaga',41520,41525,3,2),(913,'Arrasate/Mondragón',17308,17313,3,2),(914,'Arratzu',41526,41533,3,3),(915,'Arratzua-Ubarrundia',52,57,3,2),(916,'Arraya de Oca',7342,7345,3,1),(917,'Arredondo',10482,10485,3,1),(918,'Arres',23434,23437,3,1),(919,'Arriate',26892,26895,3,1),(920,'Arrieta',41534,41537,3,1),(921,'Arrigorriaga',41538,41543,3,2),(922,'Arroba de los Montes',11958,11961,3,1),(923,'Arróniz',28110,28113,3,1),(924,'Arroyo de la Encomienda',40534,40537,3,1),(925,'Arroyo de la Luz',9152,9155,3,1),(926,'Arroyo de las Fraguas',16040,16043,3,1),(927,'Arroyo de San Serván',4494,4497,3,1),(928,'Arroyo del Ojanco',19426,19431,3,2),(929,'Arroyomolinos',25828,25831,3,1),(930,'Arroyomolinos',9156,9157,3,0),(931,'Arroyomolinos de la Vera',9158,9161,3,1),(932,'Arroyomolinos de León',17758,17761,3,1),(933,'Arruazu',28114,28117,3,1),(934,'Arrúbal',21062,21065,3,1),(935,'Arsèguel',23438,23441,3,1),(936,'Artà',5312,5317,3,2),(937,'Artajona',28118,28121,3,1),(938,'Artana',11280,11283,3,1),(939,'Artazu',28122,28125,3,1),(940,'Artea',41544,41547,3,1),(941,'Arteixo',20050,20063,3,6),(942,'Artés',5756,5759,3,1),(943,'Artesa de Lleida',23442,23445,3,1),(944,'Artesa de Segre',23446,23457,3,5),(945,'Artieda',43460,43463,3,1),(946,'Artzentales',41548,41551,3,1),(947,'Artziniega',58,63,3,2),(948,'Arzúa',20064,20071,3,3),(949,'As Neves',31336,31347,3,5),(950,'As Nogais',24720,24729,3,4),(951,'As Pontes de García Rodríguez',20072,20089,3,8),(952,'As Somozas',20090,20099,3,4),(953,'Ascó',36476,36479,3,1),(954,'Asín',43464,43467,3,1),(955,'Aspa',23458,23461,3,1),(956,'Aspariegos',42090,42093,3,1),(957,'Asparrena',64,71,3,3),(958,'Aspe',1018,1021,3,1),(959,'Asteasu',17314,17317,3,1),(960,'Astigarraga',17318,17321,3,1),(961,'Astorga',21780,21785,3,2),(962,'Astudillo',30348,30353,3,2),(963,'Asturianos',42094,42101,3,3),(964,'Atajate',26896,26899,3,1),(965,'Atalaya',4498,4501,3,1),(966,'Atalaya del Cañavate',12944,12947,3,1),(967,'Atanzón',16044,16047,3,1),(968,'Atapuerca',7346,7349,3,1),(969,'Ataquines',40538,40541,3,1),(970,'Atarfe',15106,15113,3,3),(971,'Ataun',17322,17325,3,1),(972,'Atea',43468,43471,3,1),(973,'Ateca',43472,43475,3,1),(974,'Atez/Atetz',28126,28131,3,2),(975,'Atienza',16048,16057,3,4),(976,'Atxondo',41552,41557,3,2),(977,'Atzeneta del Maestrat',11284,11289,3,2),(978,'Aulesti',41558,41561,3,1),(979,'Auñón',16058,16063,3,2),(980,'Auritz/Burguete',28132,28135,3,1),(981,'Ausejo',21066,21069,3,1),(982,'Ausejo de la Sierra',35598,35601,3,1),(983,'Autilla del Pino',30354,30357,3,1),(984,'Autillo de Campos',30358,30361,3,1),(985,'Autol',21070,21073,3,1),(986,'Aveinte',3394,3399,3,2),(987,'Avellaneda',3400,3403,3,1),(988,'Avellanosa de Muñó',7350,7353,3,1),(989,'Avià',5760,5765,3,2),(990,'Ávila',3404,3423,3,9),(991,'Avilés',2364,2383,3,9),(992,'Avinyó',5766,5769,3,1),(993,'Avinyonet de Puigventós',13952,13955,3,1),(994,'Avinyonet del Penedès',5770,5779,3,4),(995,'Avión',29384,29387,3,1),(996,'Ayala/Aiara',72,85,3,6),(997,'Ayamonte',17762,17775,3,6),(998,'Ayegui/Aiegi',28136,28141,3,2),(999,'Ayelo de Malferit',39440,39443,3,1),(1000,'Ayelo de Rugat',39444,39447,3,1),(1001,'Ayerbe',18300,18307,3,3),(1002,'Ayllón',34012,34023,3,5),(1003,'Ayna',454,465,3,5),(1004,'Ayódar',11290,11293,3,1),(1005,'Ayoó de Vidriales',42102,42107,3,2),(1006,'Ayora',39448,39451,3,1),(1007,'Ayuela',30362,30365,3,1),(1008,'Azagra',28142,28145,3,1),(1009,'Azaila',37426,37429,3,1),(1010,'Azanuy-Alins',18308,18311,3,1),(1011,'Azara',18312,18315,3,1),(1012,'Azkoitia',17326,17329,3,1),(1013,'Azlor',18316,18319,3,1),(1014,'Aznalcázar',34950,34955,3,2),(1015,'Aznalcóllar',34956,34959,3,1),(1016,'Azofra',21074,21077,3,1),(1017,'Azpeitia',17330,17333,3,1),(1018,'Azuaga',4502,4507,3,2),(1019,'Azuara',43476,43479,3,1),(1020,'Azuébar',11294,11297,3,1),(1021,'Azuelo',28146,28149,3,1),(1022,'Azuqueca de Henares',16064,16067,3,1),(1023,'Azután',38422,38425,3,1),(1024,'Babilafuente',32324,32327,3,1),(1025,'Bacares',1790,1793,3,1),(1026,'Badajoz',4508,4547,3,19),(1027,'Badalona',5780,5797,3,8),(1028,'Badarán',21078,21081,3,1),(1029,'Bádenas',37430,37433,3,1),(1030,'Badia del Vallès',5798,5801,3,1),(1031,'Badolatosa',34960,34965,3,2),(1032,'Badules',43480,43483,3,1),(1033,'Baélls',18320,18323,3,1),(1034,'Baena',12376,12383,3,3),(1035,'Baeza',19432,19443,3,5),(1036,'Bagà',5802,5805,3,1),(1037,'Báguena',37434,37437,3,1),(1038,'Bagüés',43484,43487,3,1),(1039,'Bahabón',40542,40545,3,1),(1040,'Bahabón de Esgueva',7354,7357,3,1),(1041,'Baides',16068,16071,3,1),(1042,'Bailén',19444,19447,3,1),(1043,'Bailo',18324,18331,3,3),(1044,'Baiona',31348,31359,3,5),(1045,'Baix Pallars',23462,23473,3,5),(1046,'Bakaiku',28150,28153,3,1),(1047,'Bakio',41562,41565,3,1),(1048,'Balaguer',23474,23477,3,1),(1049,'Balanegra',1794,1795,3,0),(1050,'Balazote',466,469,3,1),(1051,'Balboa',21786,21789,3,1),(1052,'Balconchán',43488,43491,3,1),(1053,'Baldellou',18332,18335,3,1),(1054,'Baleira',24730,24745,3,7),(1055,'Balenyà',5806,5809,3,1),(1056,'Baliarrain',17334,17337,3,1),(1057,'Ballesteros de Calatrava',11962,11965,3,1),(1058,'Ballobar',18336,18339,3,1),(1059,'Balmaseda',41566,41569,3,1),(1060,'Balones',1022,1025,3,1),(1061,'Balsa de Ves',470,475,3,2),(1062,'Balsareny',5810,5813,3,1),(1063,'Baltanás',30366,30371,3,2),(1064,'Baltar',29388,29395,3,3),(1065,'Bañares',21082,21085,3,1),(1066,'Banastás',18340,18343,3,1),(1067,'Bande',29396,29413,3,8),(1068,'Bañobárez',32328,32331,3,1),(1069,'Bañón',37438,37441,3,1),(1070,'Baños de Ebro/Mañueta',86,89,3,1),(1071,'Baños de la Encina',19448,19453,3,2),(1072,'Baños de Molgas',29414,29425,3,5),(1073,'Baños de Montemayor',9162,9165,3,1),(1074,'Baños de Río Tobía',21086,21089,3,1),(1075,'Baños de Rioja',21090,21093,3,1),(1076,'Baños de Tajo',16072,16075,3,1),(1077,'Baños de Valdearados',7358,7361,3,1),(1078,'Bañuelos',16076,16079,3,1),(1079,'Bañuelos de Bureba',7362,7365,3,1),(1080,'Banyalbufar',5318,5323,3,2),(1081,'Banyeres de Mariola',1026,1029,3,1),(1082,'Banyeres del Penedès',36480,36485,3,2),(1083,'Banyoles',13956,13959,3,1),(1084,'Baquerín de Campos',30372,30375,3,1),(1085,'Barajas de Melo',12948,12953,3,2),(1086,'Barakaldo',41570,41577,3,3),(1087,'Baralla',24746,24765,3,9),(1088,'Barañáin/Barañain',28154,28157,3,1),(1089,'Baraona',35602,35611,3,4),(1090,'Barásoain',28158,28161,3,1),(1091,'Barbadás',29426,29439,3,6),(1092,'Barbadillo',32332,32337,3,2),(1093,'Barbadillo de Herreros',7366,7369,3,1),(1094,'Barbadillo del Mercado',7370,7373,3,1),(1095,'Barbadillo del Pez',7374,7377,3,1),(1096,'Barbalos',32338,32341,3,1),(1097,'Barbarin',28162,28165,3,1),(1098,'Barbastro',18344,18349,3,2),(1099,'Barbate',10164,10173,3,4),(1100,'Barbens',23478,23481,3,1),(1101,'Barberà de la Conca',36486,36493,3,3),(1102,'Barberà del Vallès',5814,5817,3,1),(1103,'Bárboles',43492,43495,3,1),(1104,'Barbolla',34024,34027,3,1),(1105,'Barbués',18350,18353,3,1),(1106,'Barbuñales',18354,18357,3,1),(1107,'Barca',35612,35615,3,1),(1108,'Bárcabo',18358,18367,3,4),(1109,'Barcarrota',4548,4551,3,1),(1110,'Barcelona',5818,5903,3,42),(1111,'Bárcena de Campos',30376,30379,3,1),(1112,'Bárcena de Cicero',10486,10497,3,5),(1113,'Bárcena de Pie de Concha',10498,10501,3,1),(1114,'Barceo',32342,32345,3,1),(1115,'Barcheta',39452,39455,3,1),(1116,'Barchín del Hoyo',12954,12957,3,1),(1117,'Barcial de la Loma',40546,40549,3,1),(1118,'Barcial del Barco',42108,42111,3,1),(1119,'Barcience',38426,38431,3,2),(1120,'Barcones',35616,35619,3,1),(1121,'Bardallur',43496,43499,3,1),(1122,'Bareyo',10502,10509,3,3),(1123,'Bargas',38432,38435,3,1),(1124,'Bargota',28166,28169,3,1),(1125,'Barillas',28170,28173,3,1),(1126,'Barjas',21790,21795,3,2),(1127,'Barracas',11298,11301,3,1),(1128,'Barrachina',37442,37445,3,1),(1129,'Barrado',9166,9169,3,1),(1130,'Barrax',476,479,3,1),(1131,'Barreiros',24766,24777,3,5),(1132,'Barrika',41578,41581,3,1),(1133,'Barrio de Muñó',7378,7381,3,1),(1134,'Barriopedro',16080,16083,3,1),(1135,'Barrios de Colina',7382,7385,3,1),(1136,'Barro',31360,31371,3,5),(1137,'Barromán',3424,3427,3,1),(1138,'Barruecopardo',32346,32349,3,1),(1139,'Barruelo de Santullán',30380,30387,3,3),(1140,'Barruelo del Valle',40550,40553,3,1),(1141,'Barrundia',90,95,3,2),(1142,'Barx',39456,39459,3,1),(1143,'Basaburua',28174,28179,3,2),(1144,'Basardilla',34028,34031,3,1),(1145,'Basauri',41582,41585,3,1),(1146,'Bàscara',13960,13965,3,2),(1147,'Basconcillos del Tozo',7386,7393,3,3),(1148,'Báscones de Ojeda',30388,30391,3,1),(1149,'Bascuñana',7394,7397,3,1),(1150,'Bascuñana de San Pedro',12958,12961,3,1),(1151,'Bassella',23482,23489,3,3),(1152,'Batea',36494,36497,3,1),(1153,'Baterno',4552,4555,3,1),(1154,'Batres',25832,25837,3,2),(1155,'Bausen',23490,23493,3,1),(1156,'Bayárcal',1796,1801,3,2),(1157,'Bayarque',1802,1805,3,1),(1158,'Bayubas de Abajo',35620,35623,3,1),(1159,'Bayubas de Arriba',35624,35627,3,1),(1160,'Baza',15114,15119,3,2),(1161,'Baztan',28180,28199,3,9),(1162,'Bea',37446,37449,3,1),(1163,'Beade',29440,29445,3,2),(1164,'Beamud',12962,12965,3,1),(1165,'Beariz',29446,29449,3,1),(1166,'Beas',17776,17785,3,4),(1167,'Beas de Granada',15120,15123,3,1),(1168,'Beas de Guadix',15124,15127,3,1),(1169,'Beas de Segura',19454,19459,3,2),(1170,'Beasain',17338,17341,3,1),(1171,'Becedas',3428,3433,3,2),(1172,'Becedillas',3434,3437,3,1),(1173,'Beceite',37450,37453,3,1),(1174,'Becerreá',24778,24811,3,16),(1175,'Becerril de Campos',30392,30395,3,1),(1176,'Becerril de la Sierra',25838,25841,3,1),(1177,'Becilla de Valderaduey',40554,40557,3,1),(1178,'Bédar',1806,1811,3,2),(1179,'Bedia',41586,41589,3,1),(1180,'Bedmar y Garcíez',19460,19465,3,2),(1181,'Begíjar',19466,19471,3,2),(1182,'Begonte',24812,24821,3,4),(1183,'Begues',5904,5907,3,1),(1184,'Begur',13966,13971,3,2),(1185,'Beintza-Labaien',28200,28203,3,1),(1186,'Beire',28204,28207,3,1),(1187,'Beires',1812,1815,3,1),(1188,'Beizama',17342,17345,3,1),(1189,'Béjar',32350,32357,3,3),(1190,'Bejís',11302,11305,3,1),(1191,'Belalcázar',12384,12387,3,1),(1192,'Belascoáin',28208,28211,3,1),(1193,'Belauntza',17346,17349,3,1),(1194,'Belbimbre',7398,7401,3,1),(1195,'Belchite',43500,43503,3,1),(1196,'Beleña',32358,32361,3,1),(1197,'Bélgida',39460,39463,3,1),(1198,'Belianes',23494,23497,3,1),(1199,'Belinchón',12966,12971,3,2),(1200,'Bell-lloc d\'Urgell',23498,23501,3,1),(1201,'Bellaguarda',23502,23505,3,1),(1202,'Bellcaire d\'Empordà',13972,13975,3,1),(1203,'Bellcaire d\'Urgell',23506,23509,3,1),(1204,'Bellmunt d\'Urgell',23510,23513,3,1),(1205,'Bellmunt del Priorat',36498,36501,3,1),(1206,'Bello',37454,37457,3,1),(1207,'Bellprat',5908,5911,3,1),(1208,'Bellpuig',23514,23517,3,1),(1209,'Bellreguart',39464,39467,3,1),(1210,'Bellús',39468,39471,3,1),(1211,'Bellvei',36502,36505,3,1),(1212,'Bellver de Cerdanya',23518,23525,3,3),(1213,'Bellvís',23526,23531,3,2),(1214,'Belmez',12388,12399,3,5),(1215,'Bélmez de la Moraleda',19472,19475,3,1),(1216,'Belmonte',12972,12975,3,1),(1217,'Belmonte de Campos',30396,30399,3,1),(1218,'Belmonte de Gracián',43504,43507,3,1),(1219,'Belmonte de Miranda',2384,2409,3,12),(1220,'Belmonte de San José',37458,37461,3,1),(1221,'Belmonte de Tajo',25842,25845,3,1),(1222,'Belmontejo',12976,12979,3,1),(1223,'Belorado',7402,7413,3,5),(1224,'Belver de Cinca',18368,18375,3,3),(1225,'Belver de los Montes',42112,42115,3,1),(1226,'Belvís de la Jara',38436,38439,3,1),(1227,'Belvís de Monroy',9170,9173,3,1),(1228,'Bembibre',21796,21805,3,4),(1229,'Benabarre',18376,18381,3,2),(1230,'Benacazón',34966,34969,3,1),(1231,'Benadalid',26900,26903,3,1),(1232,'Benafarces',40558,40561,3,1),(1233,'Benafer',11306,11309,3,1),(1234,'Benafigos',11310,11313,3,1),(1235,'Benagéber',39472,39475,3,1),(1236,'Benaguacil',39476,39479,3,1),(1237,'Benahadux',1816,1819,3,1),(1238,'Benahavís',26904,26907,3,1),(1239,'Benalauría',26908,26911,3,1),(1240,'Benalmádena',26912,26919,3,3),(1241,'Benalúa',15128,15131,3,1),(1242,'Benalúa de las Villas',15132,15135,3,1),(1243,'Benalup-Casas Viejas',10174,10177,3,1),(1244,'Benamargosa',26920,26923,3,1),(1245,'Benamaurel',15136,15139,3,1),(1246,'Benamejí',12400,12405,3,2),(1247,'Benamocarra',26924,26927,3,1),(1248,'Benaocaz',10178,10181,3,1),(1249,'Benaoján',26928,26931,3,1),(1250,'Benarrabá',26932,26935,3,1),(1251,'Benasau',1030,1033,3,1),(1252,'Benasque',18382,18389,3,3),(1253,'Benassal',11314,11317,3,1),(1254,'Benatae',19476,19479,3,1),(1255,'Benavent de Segrià',23532,23535,3,1),(1256,'Benavente',42116,42119,3,1),(1257,'Benavides',21806,21815,3,4),(1258,'Benavites',39480,39483,3,1),(1259,'Benegiles',42120,42123,3,1),(1260,'Beneigida',39484,39487,3,1),(1261,'Beneixama',1034,1039,3,2),(1262,'Benejúzar',1040,1043,3,1),(1263,'Benetúser',39488,39491,3,1),(1264,'Benferri',1044,1047,3,1),(1265,'Beniarbeig',1048,1051,3,1),(1266,'Beniardá',1052,1055,3,1),(1267,'Beniarjó',39492,39495,3,1),(1268,'Beniarrés',1056,1059,3,1),(1269,'Beniatjar',39496,39499,3,1),(1270,'Benicarló',11318,11323,3,2),(1271,'Benicasim/Benicàssim',11324,11327,3,1),(1272,'Benicolet',39500,39503,3,1),(1273,'Benicull',39504,39507,3,1),(1274,'Benidoleig',1060,1063,3,1),(1275,'Benidorm',1064,1071,3,3),(1276,'Beniel',27436,27439,3,1),(1277,'Benifairó de la Valldigna',39508,39511,3,1),(1278,'Benifairó de les Valls',39512,39515,3,1),(1279,'Benifallet',36506,36509,3,1),(1280,'Benifallim',1072,1075,3,1),(1281,'Benifato',1076,1079,3,1),(1282,'Benifayó',39516,39519,3,1),(1283,'Beniflá',39520,39523,3,1),(1284,'Benigánim',39524,39527,3,1),(1285,'Benigembla',1080,1083,3,1),(1286,'Benijófar',1084,1087,3,1),(1287,'Benilloba',1088,1091,3,1),(1288,'Benillup',1092,1095,3,1),(1289,'Benimantell',1096,1099,3,1),(1290,'Benimarfull',1100,1103,3,1),(1291,'Benimassot',1104,1107,3,1),(1292,'Benimeli',1108,1111,3,1),(1293,'Benimodo',39528,39531,3,1),(1294,'Benimuslem',39532,39535,3,1),(1295,'Beniparrell',39536,39539,3,1),(1296,'Benirredrá',39540,39543,3,1),(1297,'Benisanó',39544,39547,3,1),(1298,'Benisoda',39548,39551,3,1),(1299,'Benissa',1112,1115,3,1),(1300,'Benissanet',36510,36513,3,1),(1301,'Benisuera',39552,39555,3,1),(1302,'Benitachell/el Poble Nou de Benitatxell',1116,1119,3,1),(1303,'Benitagla',1820,1823,3,1),(1304,'Benizalón',1824,1829,3,2),(1305,'Benlloch',11328,11331,3,1),(1306,'Benquerencia',9174,9177,3,1),(1307,'Benquerencia de la Serena',4556,4565,3,4),(1308,'Bentarique',1830,1833,3,1),(1309,'Benuza',21816,21821,3,2),(1310,'Bera',28212,28217,3,2),(1311,'Berango',41590,41593,3,1),(1312,'Berantevilla',96,103,3,3),(1313,'Beranuy',18390,18395,3,2),(1314,'Berastegi',17350,17355,3,2),(1315,'Beratón',35628,35631,3,1),(1316,'Berbegal',18396,18399,3,1),(1317,'Berberana',7414,7419,3,2),(1318,'Berbinzana',28218,28221,3,1),(1319,'Berceo',21094,21097,3,1),(1320,'Bercero',40562,40565,3,1),(1321,'Berceruelo',40566,40569,3,1),(1322,'Bérchules',15140,15143,3,1),(1323,'Bercial',34032,34035,3,1),(1324,'Bercial de Zapardiel',3438,3441,3,1),(1325,'Bercianos del Páramo',21822,21827,3,2),(1326,'Bercianos del Real Camino',21828,21831,3,1),(1327,'Bercimuel',34036,34039,3,1),(1328,'Berdejo',43508,43511,3,1),(1329,'Berga',5912,5915,3,1),(1330,'Bergara',17356,17365,3,4),(1331,'Bergasa',21098,21101,3,1),(1332,'Bergasillas Bajera',21102,21105,3,1),(1333,'Berge',37462,37465,3,1),(1334,'Bergondo',20100,20111,3,5),(1335,'Beriáin',28222,28225,3,1),(1336,'Berja',1834,1843,3,4),(1337,'Berlanga',4566,4569,3,1),(1338,'Berlanga de Duero',35632,35641,3,4),(1339,'Berlanga del Bierzo',21832,21835,3,1),(1340,'Berlangas de Roa',7420,7423,3,1),(1341,'Bermellar',32362,32365,3,1),(1342,'Bermeo',41594,41597,3,1),(1343,'Bermillo de Sayago',42124,42137,3,6),(1344,'Bernardos',34040,34043,3,1),(1345,'Bernedo',104,113,3,4),(1346,'Berninches',16084,16087,3,1),(1347,'Bernuy de Porreros',34044,34047,3,1),(1348,'Bernuy-Zapardiel',3442,3445,3,1),(1349,'Berriatua',41598,41601,3,1),(1350,'Berrioplano/Berriobeiti',28226,28231,3,2),(1351,'Berriozar',28232,28237,3,2),(1352,'Berriz',41602,41607,3,2),(1353,'Berrobi',17366,17369,3,1),(1354,'Berrocal',17786,17789,3,1),(1355,'Berrocal de Huebra',32366,32369,3,1),(1356,'Berrocal de Salvatierra',32370,32373,3,1),(1357,'Berrocalejo',9178,9181,3,1),(1358,'Berrocalejo de Aragona',3446,3449,3,1),(1359,'Berrueces',40570,40573,3,1),(1360,'Berrueco',43512,43515,3,1),(1361,'Bertizarana',28238,28245,3,3),(1362,'Berzocana',9182,9185,3,1),(1363,'Berzosa de Bureba',7424,7427,3,1),(1364,'Berzosa del Lozoya',25846,25849,3,1),(1365,'Berzosilla',30400,30405,3,2),(1366,'Besalú',13976,13979,3,1),(1367,'Bescanó',13980,13987,3,3),(1368,'Betanzos',20112,20117,3,2),(1369,'Betelu',28246,28249,3,1),(1370,'Bétera',39556,39559,3,1),(1371,'Beteta',12980,12987,3,3),(1372,'Betxí',11332,11335,3,1),(1373,'Beuda',13988,13993,3,2),(1374,'Bezares',21106,21109,3,1),(1375,'Bezas',37466,37469,3,1),(1376,'Biar',1120,1123,3,1),(1377,'Bicorp',39560,39563,3,1),(1378,'Bidania-Goiatz',17370,17373,3,1),(1379,'Bidaurreta',28250,28253,3,1),(1380,'Biel',43516,43519,3,1),(1381,'Bielsa',18400,18407,3,3),(1382,'Bienservida',480,483,3,1),(1383,'Bienvenida',4570,4573,3,1),(1384,'Bierge',18408,18413,3,2),(1385,'Biescas',18414,18429,3,7),(1386,'Bigastro',1124,1127,3,1),(1387,'Bigues i Riells',5916,5921,3,2),(1388,'Bijuesca',43520,43523,3,1),(1389,'Bilbao',41608,41639,3,15),(1390,'Bimenes',2410,2415,3,2),(1391,'Binaced',18430,18435,3,2),(1392,'Binéfar',18436,18439,3,1),(1393,'Binissalem',5324,5327,3,1),(1394,'Biosca',23536,23543,3,3),(1395,'Biota',43524,43527,3,1),(1396,'Bisaurri',18440,18445,3,2),(1397,'Biscarrués',18446,18449,3,1),(1398,'Bisimbre',43528,43531,3,1),(1399,'Biure',13994,13997,3,1),(1400,'Biurrun-Olcoz',28254,28257,3,1),(1401,'Blacos',35642,35645,3,1),(1402,'Blanca',27440,27443,3,1),(1403,'Blancafort',36514,36517,3,1),(1404,'Blancas',37470,37473,3,1),(1405,'Blanes',13998,14001,3,1),(1406,'Blascomillán',3450,3455,3,2),(1407,'Blasconuño de Matacabras',3456,3459,3,1),(1408,'Blascosancho',3460,3463,3,1),(1409,'Blecua y Torres',18450,18455,3,2),(1410,'Blesa',37474,37477,3,1),(1411,'Bliecos',35646,35649,3,1),(1412,'Boada',32374,32377,3,1),(1413,'Boada de Campos',30406,30409,3,1),(1414,'Boadella i les Escaules',14002,14005,3,1),(1415,'Boadilla de Rioseco',30410,30413,3,1),(1416,'Boadilla del Camino',30414,30417,3,1),(1417,'Boadilla del Monte',25850,25853,3,1),(1418,'Boal',2416,2437,3,10),(1419,'Bobadilla',21110,21113,3,1),(1420,'Bobadilla del Campo',40574,40577,3,1),(1421,'Boborás',29450,29471,3,10),(1422,'Boca de Huérgano',21836,21845,3,4),(1423,'Bocairente',39564,39567,3,1),(1424,'Boceguillas',34048,34053,3,2),(1425,'Bocigas',40578,40581,3,1),(1426,'Bocos de Duero',40582,40585,3,1),(1427,'Bodonal de la Sierra',4574,4577,3,1),(1428,'Boecillo',40586,40589,3,1),(1429,'Bogajo',32378,32381,3,1),(1430,'Bogarra',484,493,3,4),(1431,'Bohonal de Ibor',9186,9189,3,1),(1432,'Bohoyo',3464,3469,3,2),(1433,'Boimorto',20118,20125,3,3),(1434,'Boiro',20126,20141,3,7),(1435,'Bolaños de Calatrava',11966,11969,3,1),(1436,'Bolaños de Campos',40590,40593,3,1),(1437,'Bolbaite',39568,39571,3,1),(1438,'Bollullos de la Mitación',34970,34973,3,1),(1439,'Bollullos Par del Condado',17790,17795,3,2),(1440,'Boltaña',18456,18467,3,5),(1441,'Bolulla',1128,1131,3,1),(1442,'Bolvir',14006,14009,3,1),(1443,'Bonansa',18468,18471,3,1),(1444,'Boñar',21846,21865,3,9),(1445,'Bonares',17796,17799,3,1),(1446,'Bonastre',36518,36521,3,1),(1447,'Bonete',494,497,3,1),(1448,'Boniches',12988,12991,3,1),(1449,'Bonilla de la Sierra',3470,3475,3,2),(1450,'Bonrepós y Mirambell',39572,39575,3,1),(1451,'Boqueixón',20142,20149,3,3),(1452,'Boquiñeni',43532,43535,3,1),(1453,'Borau',18472,18475,3,1),(1454,'Bordalba',43536,43539,3,1),(1455,'Bordils',14010,14013,3,1),(1456,'Bordón',37478,37481,3,1),(1457,'Borja',43540,43543,3,1),(1458,'Borjabad',35650,35653,3,1),(1459,'Bormujos',34974,34977,3,1),(1460,'Bornos',10182,10187,3,2),(1461,'Borobia',35654,35657,3,1),(1462,'Borox',38440,38443,3,1),(1463,'Borrassà',14014,14019,3,2),(1464,'Borredà',5922,5925,3,1),(1465,'Borrenes',21866,21871,3,2),(1466,'Borriana/Burriana',11336,11339,3,1),(1467,'Borriol',11340,11343,3,1),(1468,'Bossòst',23544,23547,3,1),(1469,'Bot',36522,36525,3,1),(1470,'Botarell',36526,36529,3,1),(1471,'Botija',9190,9193,3,1),(1472,'Botorrita',43544,43547,3,1),(1473,'Bóveda',24822,24835,3,6),(1474,'Bóveda del Río Almar',32382,32385,3,1),(1475,'Bovera',23548,23551,3,1),(1476,'Bozoó',7428,7433,3,2),(1477,'Brabos',3476,3479,3,1),(1478,'Bràfim',36530,36533,3,1),(1479,'Brahojos de Medina',40594,40597,3,1),(1480,'Brañosera',30418,30421,3,1),(1481,'Braojos',25854,25857,3,1),(1482,'Brazacorta',7434,7437,3,1),(1483,'Brazatortas',11970,11975,3,2),(1484,'Brazuelo',21872,21881,3,4),(1485,'Brea de Aragón',43548,43551,3,1),(1486,'Brea de Tajo',25858,25861,3,1),(1487,'Breda',14020,14023,3,1),(1488,'Brenes',34978,34981,3,1),(1489,'Bretó',42138,42141,3,1),(1490,'Bretocino',42142,42145,3,1),(1491,'Brieva',34054,34057,3,1),(1492,'Brieva de Cameros',21114,21117,3,1),(1493,'Brihuega',16088,16103,3,7),(1494,'Brime de Sog',42146,42149,3,1),(1495,'Brime de Urz',42150,42153,3,1),(1496,'Briñas',21118,21121,3,1),(1497,'Brincones',32386,32389,3,1),(1498,'Brión',20150,20157,3,3),(1499,'Briones',21122,21125,3,1),(1500,'Briviesca',7438,7449,3,5),(1501,'Bronchales',37482,37485,3,1),(1502,'Broto',18476,18487,3,5),(1503,'Brozas',9194,9197,3,1),(1504,'Brunete',25862,25865,3,1),(1505,'Brunyola',14024,14027,3,1),(1506,'Buberos',35658,35661,3,1),(1507,'Bubierca',43552,43555,3,1),(1508,'Bubión',15144,15147,3,1),(1509,'Buciegas',12992,12995,3,1),(1510,'Budia',16104,16109,3,2),(1511,'Bueña',37486,37489,3,1),(1512,'Buenache de Alarcón',12996,12999,3,1),(1513,'Buenache de la Sierra',13000,13003,3,1),(1514,'Buenamadre',32390,32395,3,2),(1515,'Buenaventura',38444,38447,3,1),(1516,'Buenavista',32396,32399,3,1),(1517,'Buenavista de Valdavia',30422,30427,3,2),(1518,'Buendía',13004,13007,3,1),(1519,'Bueu',31372,31381,3,4),(1520,'Bufali',39576,39579,3,1),(1521,'Bugarra',39580,39583,3,1),(1522,'Bugedo',7450,7453,3,1),(1523,'Búger',5328,5331,3,1),(1524,'Buitrago',35662,35665,3,1),(1525,'Buitrago del Lozoya',25866,25869,3,1),(1526,'Bujalance',12406,12413,3,3),(1527,'Bujalaro',16110,16113,3,1),(1528,'Bujaraloz',43556,43559,3,1),(1529,'Bularros',3480,3485,3,2),(1530,'Bulbuente',43560,43563,3,1),(1531,'Bullas',27444,27449,3,2),(1532,'Buniel',7454,7457,3,1),(1533,'Buñol',39584,39587,3,1),(1534,'Buñuel',28258,28261,3,1),(1535,'Bunyola',5332,5341,3,4),(1536,'Burbáguena',37490,37493,3,1),(1537,'Burela',24836,24839,3,1),(1538,'Bureta',43564,43567,3,1),(1539,'Burganes de Valverde',42154,42157,3,1),(1540,'Burgo de Osma-Ciudad de Osma',35666,35687,3,10),(1541,'Burgohondo',3486,3491,3,2),(1542,'Burgos',7458,7479,3,10),(1543,'Burgui/Burgi',28262,28265,3,1),(1544,'Burguillos',34982,34987,3,2),(1545,'Burguillos de Toledo',38448,38451,3,1),(1546,'Burguillos del Cerro',4578,4581,3,1),(1547,'Burjasot',39588,39591,3,1),(1548,'Burlada/Burlata',28266,28269,3,1),(1549,'Burón',21882,21889,3,3),(1550,'Burujón',38452,38455,3,1),(1551,'Busot',1132,1135,3,1),(1552,'Busquístar',15148,15151,3,1),(1553,'Bustares',16114,16117,3,1),(1554,'Bustarviejo',25870,25873,3,1),(1555,'Bustillo de Chaves',40598,40601,3,1),(1556,'Bustillo de la Vega',30428,30431,3,1),(1557,'Bustillo del Oro',42158,42161,3,1),(1558,'Bustillo del Páramo',21890,21897,3,3),(1559,'Bustillo del Páramo de Carrión',30432,30435,3,1),(1560,'Busto de Bureba',7480,7483,3,1),(1561,'Busturia',41640,41643,3,1),(1562,'Cabacés',36534,36537,3,1),(1563,'Caballar',34058,34061,3,1),(1564,'Cabana de Bergantiños',20158,20169,3,5),(1565,'Cabanabona',23552,23555,3,1),(1566,'Cabanas',20170,20179,3,4),(1567,'Cabañas de Ebro',43568,43571,3,1),(1568,'Cabañas de la Sagra',38456,38459,3,1),(1569,'Cabañas de Polendos',34062,34065,3,1),(1570,'Cabañas de Sayago',42162,42165,3,1),(1571,'Cabañas de Yepes',38460,38465,3,2),(1572,'Cabañas del Castillo',9198,9203,3,2),(1573,'Cabañas Raras',21898,21903,3,2),(1574,'Cabanelles',14028,14033,3,2),(1575,'Cabanes',11344,11349,3,2),(1576,'Cabanes',14034,14035,3,0),(1577,'Cabañes de Esgueva',7484,7487,3,1),(1578,'Cabanillas',28270,28273,3,1),(1579,'Cabanillas de la Sierra',25874,25877,3,1),(1580,'Cabanillas del Campo',16118,16121,3,1),(1581,'Cabeza del Buey',4582,4587,3,2),(1582,'Cabeza del Caballo',32400,32403,3,1),(1583,'Cabeza la Vaca',4588,4591,3,1),(1584,'Cabezabellosa',9204,9207,3,1),(1585,'Cabezabellosa de la Calzada',32404,32407,3,1),(1586,'Cabezamesada',38466,38469,3,1),(1587,'Cabezarados',11976,11979,3,1),(1588,'Cabezarrubias del Puerto',11980,11983,3,1),(1589,'Cabezas de Alambre',3492,3495,3,1),(1590,'Cabezas del Pozo',3496,3499,3,1),(1591,'Cabezas del Villar',3500,3503,3,1),(1592,'Cabezas Rubias',17800,17803,3,1),(1593,'Cabezón de Cameros',21126,21129,3,1),(1594,'Cabezón de la Sal',10510,10523,3,6),(1595,'Cabezón de la Sierra',7488,7491,3,1),(1596,'Cabezón de Liébana',10524,10531,3,3),(1597,'Cabezón de Pisuerga',40602,40605,3,1),(1598,'Cabezón de Valderaduey',40606,40609,3,1),(1599,'Cabezuela',34066,34069,3,1),(1600,'Cabezuela del Valle',9208,9211,3,1),(1601,'Cabizuela',3504,3507,3,1),(1602,'Cabó',23556,23559,3,1),(1603,'Cabolafuente',43572,43575,3,1),(1604,'Cabra',12414,12423,3,4),(1605,'Cabra de Mora',37494,37497,3,1),(1606,'Cabra del Camp',36538,36541,3,1),(1607,'Cabra del Santo Cristo',19480,19487,3,3),(1608,'Cabrales',2438,2443,3,2),(1609,'Cabranes',2444,2449,3,2),(1610,'Cabredo',28274,28277,3,1),(1611,'Cabrejas del Campo',35688,35691,3,1),(1612,'Cabrejas del Pinar',35692,35697,3,2),(1613,'Cabrera d\'Anoia',5926,5929,3,1),(1614,'Cabrera de Mar',5930,5933,3,1),(1615,'Cabrerizos',32408,32413,3,2),(1616,'Cabrero',9212,9215,3,1),(1617,'Cabreros del Monte',40610,40613,3,1),(1618,'Cabreros del Río',21904,21907,3,1),(1619,'Cabrillanes',21908,21915,3,3),(1620,'Cabrillas',32414,32417,3,1),(1621,'Cabrils',5934,5939,3,2),(1622,'Cabuérniga',10532,10541,3,4),(1623,'Cacabelos',21916,21923,3,3),(1624,'Cáceres',9216,9237,3,10),(1625,'Cachorrilla',9238,9241,3,1),(1626,'Cacín',15152,15155,3,1),(1627,'Cadalso',9242,9245,3,1),(1628,'Cadalso de los Vidrios',25878,25883,3,2),(1629,'Cadaqués',14036,14039,3,1),(1630,'Cádiar',15156,15161,3,2),(1631,'Cádiz',10188,10213,3,12),(1632,'Cadreita',28278,28281,3,1),(1633,'Cadrete',43576,43581,3,2),(1634,'Cájar',15162,15165,3,1),(1635,'Cala',17804,17807,3,1),(1636,'Calabazas de Fuentidueña',34070,34073,3,1),(1637,'Calaceite',37498,37501,3,1),(1638,'Calaf',5940,5943,3,1),(1639,'Calafell',36542,36549,3,3),(1640,'Calahorra',21130,21133,3,1),(1641,'Calahorra de Boedo',30436,30439,3,1),(1642,'Calamocha',37502,37521,3,9),(1643,'Calamonte',4592,4595,3,1),(1644,'Calañas',17808,17817,3,4),(1645,'Calanda',37522,37525,3,1),(1646,'Calasparra',27450,27453,3,1),(1647,'Calatañazor',35698,35701,3,1),(1648,'Calatayud',43582,43591,3,4),(1649,'Calatorao',43592,43595,3,1),(1650,'Calcena',43596,43599,3,1),(1651,'Caldas de Reis',31382,31397,3,7),(1652,'Caldearenas',18488,18495,3,3),(1653,'Calders',5944,5947,3,1),(1654,'Caldes d\'Estrac',5948,5951,3,1),(1655,'Caldes de Malavella',14040,14045,3,2),(1656,'Caldes de Montbui',5952,5955,3,1),(1657,'Calella',5956,5959,3,1),(1658,'Calera de León',4596,4599,3,1),(1659,'Calera y Chozas',38470,38475,3,2),(1660,'Caleruega',7492,7495,3,1),(1661,'Caleruela',38476,38479,3,1),(1662,'Calicasas',15166,15169,3,1),(1663,'Càlig',11350,11353,3,1),(1664,'Calldetenes',5960,5963,3,1),(1665,'Calles',39592,39595,3,1),(1666,'Callosa d\'en Sarrià',1136,1139,3,1),(1667,'Callosa de Segura',1140,1145,3,2),(1668,'Callús',5964,5967,3,1),(1669,'Calmarza',43600,43603,3,1),(1670,'Calomarde',37526,37529,3,1),(1671,'Calonge',14046,14051,3,2),(1672,'Calonge de Segarra',5968,5971,3,1),(1673,'Calp',1146,1149,3,1),(1674,'Caltojar',35702,35705,3,1),(1675,'Calvarrasa de Abajo',32418,32421,3,1),(1676,'Calvarrasa de Arriba',32422,32425,3,1),(1677,'Calvià',5342,5355,3,6),(1678,'Calvos de Randín',29472,29483,3,5),(1679,'Calzada de Calatrava',11984,11991,3,3),(1680,'Calzada de Don Diego',32426,32431,3,2),(1681,'Calzada de los Molinos',30440,30443,3,1),(1682,'Calzada de Oropesa',38480,38483,3,1),(1683,'Calzada de Valdunciel',32432,32435,3,1),(1684,'Calzada del Coto',21924,21927,3,1),(1685,'Calzadilla',9246,9249,3,1),(1686,'Calzadilla de los Barros',4600,4603,3,1),(1687,'Calzadilla de Tera',42166,42169,3,1),(1688,'Camaleño',10542,10553,3,5),(1689,'Camañas',37530,37533,3,1),(1690,'Camarasa',23560,23569,3,4),(1691,'Camarena',38484,38487,3,1),(1692,'Camarena de la Sierra',37534,37539,3,2),(1693,'Camarenilla',38488,38491,3,1),(1694,'Camargo',10554,10561,3,3),(1695,'Camarillas',37540,37543,3,1),(1696,'Camariñas',20180,20187,3,3),(1697,'Camarles',36550,36553,3,1),(1698,'Camarma de Esteruelas',25884,25887,3,1),(1699,'Camarzana de Tera',42170,42177,3,3),(1700,'Camas',34988,34993,3,2),(1701,'Cambados',31398,31409,3,5),(1702,'Cambil',19488,19493,3,2),(1703,'Cambre',20188,20203,3,7),(1704,'Cambrils',36554,36557,3,1),(1705,'Caminomorisco',9250,9261,3,5),(1706,'Caminreal',37544,37549,3,2),(1707,'Camós',14052,14057,3,2),(1708,'Campanario',4604,4609,3,2),(1709,'Campanet',5356,5359,3,1),(1710,'Campaspero',40614,40617,3,1),(1711,'Campazas',21928,21931,3,1),(1712,'Campdevànol',14058,14063,3,2),(1713,'Campelles',14064,14067,3,1),(1714,'Campezo/Kanpezu',114,121,3,3),(1715,'Campillo de Altobuey',13008,13011,3,1),(1716,'Campillo de Aragón',43604,43607,3,1),(1717,'Campillo de Aranda',7496,7499,3,1),(1718,'Campillo de Arenas',19494,19497,3,1),(1719,'Campillo de Azaba',32436,32439,3,1),(1720,'Campillo de Deleitosa',9262,9265,3,1),(1721,'Campillo de Dueñas',16122,16125,3,1),(1722,'Campillo de Llerena',4610,4613,3,1),(1723,'Campillo de Ranas',16126,16131,3,2),(1724,'Campillos',26936,26939,3,1),(1725,'Campillos-Paravientos',13012,13017,3,2),(1726,'Campillos-Sierra',13018,13021,3,1),(1727,'Campins',5972,5977,3,2),(1728,'Campisábalos',16132,16135,3,1),(1729,'Campllong',14068,14071,3,1),(1730,'Campo',18496,18501,3,2),(1731,'Campo de Criptana',11992,11995,3,1),(1732,'Campo de Mirra/el Camp de Mirra',1150,1153,3,1),(1733,'Campo de San Pedro',34074,34081,3,3),(1734,'Campo de Villavidel',21932,21935,3,1),(1735,'Campo Lameiro',31410,31419,3,4),(1736,'Campo Lugar',9266,9269,3,1),(1737,'Campo Real',25888,25891,3,1),(1738,'Campofrío',17818,17821,3,1),(1739,'Campolara',7500,7503,3,1),(1740,'Camponaraya',21936,21939,3,1),(1741,'Campoo de Enmedio',10562,10573,3,5),(1742,'Campoo de Yuso',10574,10585,3,5),(1743,'Camporredondo',40618,40621,3,1),(1744,'Camporrélls',18502,18505,3,1),(1745,'Camporrobles',39596,39599,3,1),(1746,'Campos',5360,5367,3,3),(1747,'Campos del Paraíso',13022,13027,3,2),(1748,'Campos del Río',27454,27459,3,2),(1749,'Campotéjar',15170,15173,3,1),(1750,'Camprodon',14072,14075,3,1),(1751,'Camprovín',21134,21139,3,2),(1752,'Camuñas',38492,38495,3,1),(1753,'Cañada',1154,1157,3,1),(1754,'Cañada de Benatanduz',37550,37553,3,1),(1755,'Cañada de Calatrava',11996,11999,3,1),(1756,'Cañada del Hoyo',13028,13031,3,1),(1757,'Cañada Juncosa',13032,13035,3,1),(1758,'Cañada Rosal',34994,34997,3,1),(1759,'Cañada Vellida',37554,37557,3,1),(1760,'Canal de Berdún',18506,18515,3,4),(1761,'Canalejas de Peñafiel',40622,40625,3,1),(1762,'Canalejas del Arroyo',13036,13039,3,1),(1763,'Canales',3508,3511,3,1),(1764,'Canales de la Sierra',21140,21143,3,1),(1765,'Canals',39600,39607,3,3),(1766,'Cañamaque',35706,35709,3,1),(1767,'Cañamares',13040,13043,3,1),(1768,'Cañamero',9270,9273,3,1),(1769,'Cáñar',15174,15177,3,1),(1770,'Cañas',21144,21147,3,1),(1771,'Cañaveral',9274,9281,3,3),(1772,'Cañaveral de León',17822,17825,3,1),(1773,'Cañaveras',13044,13047,3,1),(1774,'Cañaveruelas',13048,13051,3,1),(1775,'Candamo',2450,2459,3,4),(1776,'Candasnos',18516,18519,3,1),(1777,'Candelario',32440,32443,3,1),(1778,'Candeleda',3512,3519,3,3),(1779,'Candilichera',35710,35713,3,1),(1780,'Candín',21940,21945,3,2),(1781,'Canejan',23570,23573,3,1),(1782,'Canena',19498,19501,3,1),(1783,'Canencia',25892,25895,3,1),(1784,'Canet d\'Adri',14076,14079,3,1),(1785,'Canet de Berenguer',39608,39611,3,1),(1786,'Canet de Mar',5978,5981,3,1),(1787,'Canet lo Roig',11354,11357,3,1),(1788,'Cañete',13052,13055,3,1),(1789,'Cañete de las Torres',12424,12427,3,1),(1790,'Cañete la Real',26940,26943,3,1),(1791,'Canfranc',18520,18525,3,2),(1792,'Cangas',31420,31431,3,5),(1793,'Cangas de Onís',2460,2471,3,5),(1794,'Cangas del Narcea',2472,2491,3,9),(1795,'Canicosa de la Sierra',7504,7507,3,1),(1796,'Caniles',15178,15183,3,2),(1797,'Canillas de Abajo',32444,32451,3,3),(1798,'Canillas de Aceituno',26944,26949,3,2),(1799,'Canillas de Albaida',26950,26953,3,1),(1800,'Canillas de Esgueva',40626,40629,3,1),(1801,'Canillas de Río Tuerto',21148,21151,3,1),(1802,'Cañizal',42178,42181,3,1),(1803,'Cañizar',16136,16139,3,1),(1804,'Cañizar del Olivar',37558,37561,3,1),(1805,'Cañizares',13056,13063,3,3),(1806,'Cañizo',42182,42185,3,1),(1807,'Canjáyar',1844,1847,3,1),(1808,'Canovelles',5982,5985,3,1),(1809,'Cànoves i Samalús',5986,5993,3,3),(1810,'Canredondo',16140,16143,3,1),(1811,'Cantabrana',7508,7511,3,1),(1812,'Cantagallo',32452,32455,3,1),(1813,'Cantalapiedra',32456,32459,3,1),(1814,'Cantalejo',34082,34089,3,3),(1815,'Cantallops',14080,14083,3,1),(1816,'Cantalojas',16144,16149,3,2),(1817,'Cantalpino',32460,32463,3,1),(1818,'Cantaracillo',32464,32467,3,1),(1819,'Cantavieja',37562,37565,3,1),(1820,'Cantillana',34998,35001,3,1),(1821,'Cantimpalos',34090,34093,3,1),(1822,'Cantiveros',3520,3523,3,1),(1823,'Cantoria',1848,1855,3,3),(1824,'Canyelles',5994,5997,3,1),(1825,'Capafonts',36558,36561,3,1),(1826,'Caparroso',28282,28287,3,2),(1827,'Capçanes',36562,36565,3,1),(1828,'Capdepera',5368,5375,3,3),(1829,'Capdesaso',18526,18529,3,1),(1830,'Capella',18530,18535,3,2),(1831,'Capellades',5998,6001,3,1),(1832,'Capileira',15184,15187,3,1),(1833,'Capilla',4614,4617,3,1),(1834,'Capillas',30444,30447,3,1),(1835,'Capmany',14084,14087,3,1),(1836,'Capolat',6002,6005,3,1),(1837,'Carabaña',25896,25899,3,1),(1838,'Carabantes',35714,35717,3,1),(1839,'Carabias',34094,34097,3,1),(1840,'Caracena',35718,35721,3,1),(1841,'Caracuel de Calatrava',12000,12003,3,1),(1842,'Carataunas',15188,15191,3,1),(1843,'Caravaca de la Cruz',27460,27473,3,6),(1844,'Caravia',2492,2497,3,2),(1845,'Carazo',7512,7515,3,1),(1846,'Carbajales de Alba',42186,42189,3,1),(1847,'Carbajo',9282,9285,3,1),(1848,'Carbajosa de la Sagrada',32468,32477,3,4),(1849,'Carballeda de Avia',29484,29495,3,5),(1850,'Carballeda de Valdeorras',29496,29513,3,8),(1851,'Carballedo',24840,24857,3,8),(1852,'Carballo',20204,20219,3,7),(1853,'Carbellino',42190,42193,3,1),(1854,'Carboneras',1856,1861,3,2),(1855,'Carboneras de Guadazaón',13064,13067,3,1),(1856,'Carbonero el Mayor',34098,34101,3,1),(1857,'Carboneros',19502,19505,3,1),(1858,'Carcaboso',9286,9291,3,2),(1859,'Carcabuey',12428,12435,3,3),(1860,'Carcagente',39612,39619,3,3),(1861,'Cárcar',28288,28291,3,1),(1862,'Carcastillo',28292,28297,3,2),(1863,'Carcedo de Bureba',7516,7521,3,2),(1864,'Carcedo de Burgos',7522,7527,3,2),(1865,'Carcelén',498,501,3,1),(1866,'Cárcer',39620,39623,3,1),(1867,'Cárcheles',19506,19511,3,2),(1868,'Cardedeu',6006,6009,3,1),(1869,'Cardeña',12436,12447,3,5),(1870,'Cardeñadijo',7528,7531,3,1),(1871,'Cardeñajimeno',7532,7537,3,2),(1872,'Cárdenas',21152,21155,3,1),(1873,'Cardenete',13068,13071,3,1),(1874,'Cardeñosa',3524,3527,3,1),(1875,'Cardeñosa de Volpejera',30448,30451,3,1),(1876,'Cardeñuela Riopico',7538,7541,3,1),(1877,'Cardiel de los Montes',38496,38499,3,1),(1878,'Cardona',6010,6013,3,1),(1879,'Carenas',43608,43611,3,1),(1880,'Cariñena',43612,43615,3,1),(1881,'Cariño',20220,20229,3,4),(1882,'Carlet',39624,39627,3,1),(1883,'Carme',6014,6017,3,1),(1884,'Carmena',38500,38503,3,1),(1885,'Cármenes',21946,21951,3,2),(1886,'Carmona',35002,35007,3,2),(1887,'Carmonita',4618,4623,3,2),(1888,'Carnota',20230,20239,3,4),(1889,'Carpio',40630,40633,3,1),(1890,'Carpio de Azaba',32478,32481,3,1),(1891,'Carracedelo',21952,21963,3,5),(1892,'Carral',20240,20249,3,4),(1893,'Carranque',38504,38507,3,1),(1894,'Carrascal de Barregas',32482,32495,3,6),(1895,'Carrascal del Obispo',32496,32501,3,2),(1896,'Carrascal del Río',34102,34105,3,1),(1897,'Carrascalejo',9292,9295,3,1),(1898,'Carrascosa',13072,13077,3,2),(1899,'Carrascosa de Abajo',35722,35725,3,1),(1900,'Carrascosa de Haro',13078,13081,3,1),(1901,'Carrascosa de la Sierra',35726,35731,3,2),(1902,'Carratraca',26954,26957,3,1),(1903,'Carreño',2498,2511,3,6),(1904,'Carrias',7542,7545,3,1),(1905,'Carriches',38508,38511,3,1),(1906,'Carrícola',39628,39631,3,1),(1907,'Carrión de Calatrava',12004,12007,3,1),(1908,'Carrión de los Céspedes',35008,35011,3,1),(1909,'Carrión de los Condes',30452,30457,3,2),(1910,'Carrizo',21964,21969,3,2),(1911,'Carrizosa',12008,12011,3,1),(1912,'Carrocera',21970,21973,3,1),(1913,'Cartagena',27474,27555,3,40),(1914,'Cartajima',26958,26961,3,1),(1915,'Cártama',26962,26973,3,5),(1916,'Cartaya',17826,17833,3,3),(1917,'Cartelle',29514,29529,3,7),(1918,'Cartes',10586,10591,3,2),(1919,'Carucedo',21974,21981,3,3),(1920,'Casa de Uceda',16150,16153,3,1),(1921,'Casabermeja',26974,26977,3,1),(1922,'Casafranca',32502,32505,3,1),(1923,'Casalarreina',21156,21159,3,1),(1924,'Casar de Cáceres',9296,9301,3,2),(1925,'Casar de Palomero',9302,9309,3,3),(1926,'Casarabonela',26978,26981,3,1),(1927,'Casarejos',35732,35735,3,1),(1928,'Casares',26982,26987,3,2),(1929,'Casares de las Hurdes',9310,9313,3,1),(1930,'Casariche',35012,35015,3,1),(1931,'Casarrubios del Monte',38512,38515,3,1),(1932,'Casarrubuelos',25900,25903,3,1),(1933,'Casas Altas',39632,39635,3,1),(1934,'Casas Bajas',39636,39639,3,1),(1935,'Casas de Benítez',13082,13087,3,2),(1936,'Casas de Don Antonio',9314,9317,3,1),(1937,'Casas de Don Gómez',9318,9323,3,2),(1938,'Casas de Don Pedro',4624,4627,3,1),(1939,'Casas de Fernando Alonso',13088,13091,3,1),(1940,'Casas de Garcimolina',13092,13095,3,1),(1941,'Casas de Guijarro',13096,13099,3,1),(1942,'Casas de Haro',13100,13103,3,1),(1943,'Casas de Juan Núñez',502,505,3,1),(1944,'Casas de Lázaro',506,509,3,1),(1945,'Casas de los Pinos',13104,13107,3,1),(1946,'Casas de Millán',9324,9327,3,1),(1947,'Casas de Miravete',9328,9331,3,1),(1948,'Casas de Reina',4628,4631,3,1),(1949,'Casas de San Galindo',16154,16157,3,1),(1950,'Casas de Ves',510,513,3,1),(1951,'Casas del Castañar',9332,9335,3,1),(1952,'Casas del Monte',9336,9339,3,1),(1953,'Casas del Puerto',3528,3531,3,1),(1954,'Casas-Ibáñez',514,517,3,1),(1955,'Casasbuenas',38516,38519,3,1),(1956,'Casaseca de Campeán',42194,42197,3,1),(1957,'Casaseca de las Chanas',42198,42201,3,1),(1958,'Casasimarro',13108,13111,3,1),(1959,'Casasola',3532,3535,3,1),(1960,'Casasola de Arión',40634,40637,3,1),(1961,'Casatejada',9340,9343,3,1),(1962,'Casavieja',3536,3539,3,1),(1963,'Casbas de Huesca',18536,18541,3,2),(1964,'Cascajares de Bureba',7546,7549,3,1),(1965,'Cascajares de la Sierra',7550,7553,3,1),(1966,'Cascante',28298,28301,3,1),(1967,'Cascante del Río',37566,37569,3,1),(1968,'Cáseda',28302,28307,3,2),(1969,'Caseres',36566,36569,3,1),(1970,'Casillas',3540,3545,3,2),(1971,'Casillas de Coria',9344,9347,3,1),(1972,'Casillas de Flores',32506,32509,3,1),(1973,'Casinos',39640,39645,3,2),(1974,'Casla',34106,34109,3,1),(1975,'Caso',2512,2519,3,3),(1976,'Caspe',43616,43621,3,2),(1977,'Caspueñas',16158,16161,3,1),(1978,'Cassà de la Selva',14088,14091,3,1),(1979,'Casserres',6018,6021,3,1),(1980,'Castalla',1158,1161,3,1),(1981,'Castañar de Ibor',9348,9351,3,1),(1982,'Castañares de Rioja',21160,21163,3,1),(1983,'Castañeda',10592,10597,3,2),(1984,'Castaño del Robledo',17834,17837,3,1),(1985,'Cástaras',15192,15195,3,1),(1986,'Castejón',13112,13115,3,1),(1987,'Castejón',28308,28309,3,0),(1988,'Castejón de Alarba',43622,43625,3,1),(1989,'Castejón de Henares',16162,16165,3,1),(1990,'Castejón de las Armas',43626,43629,3,1),(1991,'Castejón de Monegros',18542,18545,3,1),(1992,'Castejón de Sos',18546,18553,3,3),(1993,'Castejón de Tornos',37570,37573,3,1),(1994,'Castejón de Valdejasa',43630,43633,3,1),(1995,'Castejón del Puente',18554,18557,3,1),(1996,'Castel de Cabra',37574,37577,3,1),(1997,'Castelflorite',18558,18561,3,1),(1998,'Castell de Cabres',11358,11361,3,1),(1999,'Castell de Castells',1162,1165,3,1),(2000,'Castell de l\'Areny',6022,6025,3,1),(2001,'Castell de Mur',23574,23581,3,3),(2002,'Castell-Platja d\'Aro',14092,14099,3,3),(2003,'Castellanos de Castro',7554,7557,3,1),(2004,'Castellanos de Moriscos',32510,32513,3,1),(2005,'Castellanos de Villiquera',32514,32521,3,3),(2006,'Castellanos de Zapardiel',3546,3549,3,1),(2007,'Castellar',19512,19515,3,1),(2008,'Castellar de la Frontera',10214,10217,3,1),(2009,'Castellar de la Muela',16166,16169,3,1),(2010,'Castellar de la Ribera',23582,23585,3,1),(2011,'Castellar de n\'Hug',6026,6029,3,1),(2012,'Castellar de Santiago',12012,12015,3,1),(2013,'Castellar del Riu',6030,6033,3,1),(2014,'Castellar del Vallès',6034,6037,3,1),(2015,'Castellbell i el Vilar',6038,6041,3,1),(2016,'Castellbisbal',6042,6045,3,1),(2017,'Castellcir',6046,6049,3,1),(2018,'Castelldans',23586,23589,3,1),(2019,'Castelldefels',6050,6053,3,1),(2020,'Castellet i la Gornal',6054,6059,3,2),(2021,'Castellfollit de la Roca',14100,14103,3,1),(2022,'Castellfollit de Riubregós',6060,6063,3,1),(2023,'Castellfollit del Boix',6064,6067,3,1),(2024,'Castellfort',11362,11365,3,1),(2025,'Castellgalí',6068,6071,3,1),(2026,'Castellnou de Bages',6072,6075,3,1),(2027,'Castellnou de Seana',23590,23593,3,1),(2028,'Castellnovo',11366,11369,3,1),(2029,'Castelló d\'Empúries',14104,14109,3,2),(2030,'Castelló de Farfanya',23594,23597,3,1),(2031,'Castellolí',6076,6079,3,1),(2032,'Castellón de la Plana/Castelló de la Plana',11370,11387,3,8),(2033,'Castellón de Rugat',39646,39649,3,1),(2034,'Castellonet',39650,39653,3,1),(2035,'Castellote',37578,37587,3,4),(2036,'Castellserà',23598,23601,3,1),(2037,'Castellterçol',6080,6083,3,1),(2038,'Castellvell del Camp',36570,36573,3,1),(2039,'Castellví de la Marca',6084,6087,3,1),(2040,'Castellví de Rosanes',6088,6091,3,1),(2041,'Castelnou',37588,37591,3,1),(2042,'Castelserás',37592,37595,3,1),(2043,'Castielfabib',39654,39657,3,1),(2044,'Castiello de Jaca',18562,18567,3,2),(2045,'Castigaleu',18568,18573,3,2),(2046,'Castil de Peones',7558,7561,3,1),(2047,'Castil de Vela',30458,30461,3,1),(2048,'Castilblanco',4632,4635,3,1),(2049,'Castilblanco de los Arroyos',35016,35019,3,1),(2050,'Castildelgado',7562,7565,3,1),(2051,'Castilfalé',21982,21985,3,1),(2052,'Castilforte',16170,16173,3,1),(2053,'Castilfrío de la Sierra',35736,35739,3,1),(2054,'Castiliscar',43634,43637,3,1),(2055,'Castillazuelo',18574,18577,3,1),(2056,'Castilleja de Guzmán',35020,35023,3,1),(2057,'Castilleja de la Cuesta',35024,35027,3,1),(2058,'Castilleja del Campo',35028,35031,3,1),(2059,'Castilléjar',15196,15199,3,1),(2060,'Castillejo de Iniesta',13116,13119,3,1),(2061,'Castillejo de Martín Viejo',32522,32527,3,2),(2062,'Castillejo de Mesleón',34110,34113,3,1),(2063,'Castillejo de Robledo',35740,35743,3,1),(2064,'Castillejo-Sierra',13120,13123,3,1),(2065,'Castillo de Bayuela',38520,38523,3,1),(2066,'Castillo de Garcimuñoz',13124,13127,3,1),(2067,'Castillo de Locubín',19516,19521,3,2),(2068,'Castillo de Villamalefa',11388,11391,3,1),(2069,'Castillo-Albaráñez',13128,13131,3,1),(2070,'Castillonroy',18578,18583,3,2),(2071,'Castillonuevo',28310,28313,3,1),(2072,'Castilnuevo',16174,16177,3,1),(2073,'Castilruiz',35744,35749,3,2),(2074,'Castraz',32528,32531,3,1),(2075,'Castrejón de la Peña',30462,30469,3,3),(2076,'Castrejón de Trabancos',40638,40641,3,1),(2077,'Castrelo de Miño',29530,29533,3,1),(2078,'Castrelo do Val',29534,29545,3,5),(2079,'Castril',15200,15203,3,1),(2080,'Castrillo de Cabrera',21986,21991,3,2),(2081,'Castrillo de Don Juan',30470,30473,3,1),(2082,'Castrillo de Duero',40642,40645,3,1),(2083,'Castrillo de la Guareña',42202,42205,3,1),(2084,'Castrillo de la Reina',7566,7569,3,1),(2085,'Castrillo de la Valduerna',21992,21995,3,1),(2086,'Castrillo de la Vega',7570,7573,3,1),(2087,'Castrillo de Onielo',30474,30477,3,1),(2088,'Castrillo de Riopisuerga',7574,7577,3,1),(2089,'Castrillo de Villavega',30478,30481,3,1),(2090,'Castrillo del Val',7578,7583,3,2),(2091,'Castrillo Mota de Judíos',7584,7587,3,1),(2092,'Castrillo-Tejeriego',40646,40649,3,1),(2093,'Castrillón',2520,2539,3,9),(2094,'Castro Caldelas',29546,29561,3,7),(2095,'Castro de Filabres',1862,1865,3,1),(2096,'Castro de Fuentidueña',34114,34117,3,1),(2097,'Castro de Rei',24858,24883,3,12),(2098,'Castro del Río',12448,12455,3,3),(2099,'Castro-Urdiales',10598,10613,3,7),(2100,'Castrobol',40650,40653,3,1),(2101,'Castrocalbón',21996,21999,3,1),(2102,'Castrocontrigo',22000,22007,3,3),(2103,'Castrodeza',40654,40657,3,1),(2104,'Castrogonzalo',42206,42209,3,1),(2105,'Castrojeriz',7588,7595,3,3),(2106,'Castrojimeno',34118,34121,3,1),(2107,'Castromembibre',40658,40661,3,1),(2108,'Castromocho',30482,30485,3,1),(2109,'Castromonte',40662,40665,3,1),(2110,'Castronuevo',42210,42213,3,1),(2111,'Castronuevo de Esgueva',40666,40669,3,1),(2112,'Castronuño',40670,40673,3,1),(2113,'Castropodame',22008,22015,3,3),(2114,'Castropol',2540,2551,3,5),(2115,'Castroponce',40674,40677,3,1),(2116,'Castroserna de Abajo',34122,34125,3,1),(2117,'Castroserracín',34126,34129,3,1),(2118,'Castrotierra de Valmadrigal',22016,22019,3,1),(2119,'Castroverde',24884,24915,3,15),(2120,'Castroverde de Campos',42214,42217,3,1),(2121,'Castroverde de Cerrato',40678,40681,3,1),(2122,'Castroviejo',21164,21167,3,1),(2123,'Castuera',4636,4639,3,1),(2124,'Catadau',39658,39661,3,1),(2125,'Catarroja',39662,39665,3,1),(2126,'Catí',11392,11395,3,1),(2127,'Catoira',31432,31435,3,1),(2128,'Catral',1166,1169,3,1),(2129,'Caudete',518,521,3,1),(2130,'Caudete de las Fuentes',39666,39669,3,1),(2131,'Caudiel',11396,11399,3,1),(2132,'Cava',23602,23605,3,1),(2133,'Cavia',7596,7599,3,1),(2134,'Cayuela',7600,7603,3,1),(2135,'Cazalegas',38524,38527,3,1),(2136,'Cazalilla',19522,19525,3,1),(2137,'Cazalla de la Sierra',35032,35037,3,2),(2138,'Cazorla',19526,19535,3,4),(2139,'Cazurra',42218,42221,3,1),(2140,'Cea',22020,22027,3,3),(2141,'Cebanico',22028,22035,3,3),(2142,'Cebolla',38528,38531,3,1),(2143,'Cebrecos',7604,7607,3,1),(2144,'Cebreros',3550,3553,3,1),(2145,'Cebrones del Río',22036,22039,3,1),(2146,'Ceclavín',9352,9355,3,1),(2147,'Cedeira',20250,20263,3,6),(2148,'Cedillo',9356,9359,3,1),(2149,'Cedillo de la Torre',34130,34133,3,1),(2150,'Cedillo del Condado',38532,38535,3,1),(2151,'Cedrillas',37596,37599,3,1),(2152,'Cee',20264,20273,3,4),(2153,'Cehegín',27556,27567,3,5),(2154,'Ceinos de Campos',40682,40685,3,1),(2155,'Celada del Camino',7608,7611,3,1),(2156,'Celadas',37600,37603,3,1),(2157,'Celanova',29562,29579,3,8),(2158,'Cella',37604,37607,3,1),(2159,'Cellorigo',21168,21171,3,1),(2160,'Celrà',14110,14113,3,1),(2161,'Cendea de Olza/Oltza Zendea',28314,28321,3,3),(2162,'Cendejas de Enmedio',16178,16181,3,1),(2163,'Cendejas de la Torre',16182,16185,3,1),(2164,'Cenes de la Vega',15204,15207,3,1),(2165,'Cenicero',21172,21175,3,1),(2166,'Cenicientos',25904,25907,3,1),(2167,'Cenizate',522,525,3,1),(2168,'Cenlle',29580,29587,3,3),(2169,'Centelles',6092,6095,3,1),(2170,'Centenera',16186,16189,3,1),(2171,'Centenera de Andaluz',35750,35753,3,1),(2172,'Cepeda',32532,32535,3,1),(2173,'Cepeda la Mora',3554,3557,3,1),(2174,'Cerbón',35754,35759,3,2),(2175,'Cerceda',20274,20283,3,4),(2176,'Cercedilla',25908,25911,3,1),(2177,'Cercs',6096,6099,3,1),(2178,'Cerdá',39670,39673,3,1),(2179,'Cerdanyola del Vallès',6100,6105,3,2),(2180,'Cerdedo-Cotobade',31436,31457,3,10),(2181,'Cerdido',20284,20289,3,2),(2182,'Cereceda de la Sierra',32536,32539,3,1),(2183,'Cerecinos de Campos',42222,42225,3,1),(2184,'Cerecinos del Carrizal',42226,42229,3,1),(2185,'Cerezal de Peñahorcada',32540,32543,3,1),(2186,'Cerezo',9360,9363,3,1),(2187,'Cerezo de Abajo',34134,34137,3,1),(2188,'Cerezo de Arriba',34138,34141,3,1),(2189,'Cerezo de Río Tirón',7612,7615,3,1),(2190,'Cernadilla',42230,42235,3,2),(2191,'Cerralbo',32544,32549,3,2),(2192,'Cerratón de Juarros',7616,7619,3,1),(2193,'Cervantes',24916,24933,3,8),(2194,'Cervatos de la Cueza',30486,30489,3,1),(2195,'Cervelló',6106,6109,3,1),(2196,'Cervera',23606,23615,3,4),(2197,'Cervera de Buitrago',25912,25915,3,1),(2198,'Cervera de la Cañada',43638,43641,3,1),(2199,'Cervera de los Montes',38536,38539,3,1),(2200,'Cervera de Pisuerga',30490,30501,3,5),(2201,'Cervera del Llano',13132,13135,3,1),(2202,'Cervera del Maestre',11400,11403,3,1),(2203,'Cervera del Río Alhama',21176,21185,3,4),(2204,'Cerveruela',43642,43645,3,1),(2205,'Cervià de les Garrigues',23616,23619,3,1),(2206,'Cervià de Ter',14114,14117,3,1),(2207,'Cervillego de la Cruz',40686,40689,3,1),(2208,'Cervo',24934,24943,3,4),(2209,'Cespedosa de Tormes',32550,32553,3,1),(2210,'Cetina',43646,43649,3,1),(2211,'Ceuta',44866,44877,3,5),(2212,'Ceutí',27568,27573,3,2),(2213,'Cevico de la Torre',30502,30505,3,1),(2214,'Cevico Navero',30506,30509,3,1),(2215,'Chagarcía Medianero',32554,32557,3,1),(2216,'Chalamera',18584,18587,3,1),(2217,'Chamartín',3558,3561,3,1),(2218,'Chandrexa de Queixa',29588,29599,3,5),(2219,'Chañe',34142,34145,3,1),(2220,'Chantada',24944,24971,3,13),(2221,'Chapinería',25916,25919,3,1),(2222,'Chauchina',15208,15213,3,2),(2223,'Checa',16190,16193,3,1),(2224,'Cheles',4640,4643,3,1),(2225,'Chella',39674,39677,3,1),(2226,'Chelva',39678,39683,3,2),(2227,'Chequilla',16194,16197,3,1),(2228,'Chera',39684,39687,3,1),(2229,'Chercos',1866,1869,3,1),(2230,'Cheste',39688,39693,3,2),(2231,'Chía',18588,18591,3,1),(2232,'Chiclana de la Frontera',10218,10223,3,2),(2233,'Chiclana de Segura',19536,19543,3,3),(2234,'Chilches/Xilxes',11404,11409,3,2),(2235,'Chillarón de Cuenca',13136,13143,3,3),(2236,'Chillarón del Rey',16198,16201,3,1),(2237,'Chillón',12016,12019,3,1),(2238,'Chilluévar',19544,19549,3,2),(2239,'Chiloeches',16202,16209,3,3),(2240,'Chimeneas',15214,15217,3,1),(2241,'Chimillas',18592,18595,3,1),(2242,'Chinchilla de Monte-Aragón',526,539,3,6),(2243,'Chinchón',25920,25923,3,1),(2244,'Chipiona',10224,10227,3,1),(2245,'Chiprana',43650,43653,3,1),(2246,'Chirivel',1870,1873,3,1),(2247,'Chiva',39694,39697,3,1),(2248,'Chodes',43654,43657,3,1),(2249,'Chodos/Xodos',11410,11413,3,1),(2250,'Chóvar',11414,11417,3,1),(2251,'Chozas de Abajo',22040,22051,3,5),(2252,'Chozas de Canales',38540,38543,3,1),(2253,'Chucena',17838,17841,3,1),(2254,'Chueca',38544,38547,3,1),(2255,'Chulilla',39698,39701,3,1),(2256,'Chumillas',13144,13147,3,1),(2257,'Churriana de la Vega',15218,15221,3,1),(2258,'Ciadoncha',7620,7623,3,1),(2259,'Cidamón',21186,21189,3,1),(2260,'Cidones',35760,35763,3,1),(2261,'Ciempozuelos',25924,25927,3,1),(2262,'Cieza',27574,27577,3,1),(2263,'Cieza',10614,10615,3,0),(2264,'Cifuentes',16210,16221,3,5),(2265,'Cigales',40690,40693,3,1),(2266,'Cigudosa',35764,35767,3,1),(2267,'Ciguñuela',40694,40697,3,1),(2268,'Cihuela',35768,35771,3,1),(2269,'Cihuri',21190,21193,3,1),(2270,'Cijuela',15222,15225,3,1),(2271,'Cillán',3562,3565,3,1),(2272,'Cillaperlata',7624,7627,3,1),(2273,'Cilleros',9364,9367,3,1),(2274,'Cilleros de la Bastida',32558,32561,3,1),(2275,'Cilleruelo de Abajo',7628,7631,3,1),(2276,'Cilleruelo de Arriba',7632,7635,3,1),(2277,'Cilleruelo de San Mamés',34146,34149,3,1),(2278,'Cillorigo de Liébana',10616,10625,3,4),(2279,'Cimanes de la Vega',22052,22055,3,1),(2280,'Cimanes del Tejar',22056,22065,3,4),(2281,'Cimballa',43658,43661,3,1),(2282,'Cinco Olivas',43662,43665,3,1),(2283,'Cincovillas',16222,16225,3,1),(2284,'Cinctorres',11418,11421,3,1),(2285,'Cintruénigo',28322,28325,3,1),(2286,'Cipérez',32562,32567,3,2),(2287,'Cirat',11422,11427,3,2),(2288,'Cirauqui/Zirauki',28326,28329,3,1),(2289,'Ciria',35772,35775,3,1),(2290,'Ciriza/Ziritza',28330,28333,3,1),(2291,'Ciruelas',16226,16229,3,1),(2292,'Ciruelos',38548,38551,3,1),(2293,'Ciruelos de Cervera',7636,7639,3,1),(2294,'Ciruelos del Pinar',16230,16233,3,1),(2295,'Cirueña',21194,21197,3,1),(2296,'Cirujales del Río',35776,35779,3,1),(2297,'Cisla',3566,3569,3,1),(2298,'Cisneros',30510,30513,3,1),(2299,'Cistella',14118,14121,3,1),(2300,'Cistérniga',40698,40701,3,1),(2301,'Cistierna',22066,22077,3,5),(2302,'Ciudad Real',12020,12039,3,9),(2303,'Ciudad Rodrigo',32568,32583,3,7),(2304,'Ciutadella de Menorca',5668,5675,3,3),(2305,'Ciutadilla',23620,23623,3,1),(2306,'Cizur',28334,28339,3,2),(2307,'Clarés de Ribota',43666,43669,3,1),(2308,'Clariana de Cardener',23624,23627,3,1),(2309,'Clavijo',21198,21201,3,1),(2310,'Coaña',2552,2565,3,6),(2311,'Cóbdar',1874,1877,3,1),(2312,'Cobeja',38552,38555,3,1),(2313,'Cobeña',25928,25931,3,1),(2314,'Cobeta',16234,16237,3,1),(2315,'Cobisa',38556,38559,3,1),(2316,'Cobos de Cerrato',30514,30517,3,1),(2317,'Cobos de Fuentidueña',34150,34153,3,1),(2318,'Cobreros',42236,42243,3,3),(2319,'Coca',34154,34159,3,2),(2320,'Coca de Alba',32584,32587,3,1),(2321,'Cocentaina',1170,1175,3,2),(2322,'Codo',43670,43673,3,1),(2323,'Codorniz',34160,34165,3,2),(2324,'Codos',43674,43677,3,1),(2325,'Cofrentes',39702,39705,3,1),(2326,'Cogeces de Íscar',40702,40705,3,1),(2327,'Cogeces del Monte',40706,40709,3,1),(2328,'Cogollor',16238,16241,3,1),(2329,'Cogollos',7640,7643,3,1),(2330,'Cogollos de Guadix',15226,15229,3,1),(2331,'Cogollos de la Vega',15230,15233,3,1),(2332,'Cogolludo',16242,16251,3,4),(2333,'Coín',26988,26991,3,1),(2334,'Coirós',20290,20293,3,1),(2335,'Colera',14122,14125,3,1),(2336,'Coles',29600,29609,3,4),(2337,'Colindres',10626,10629,3,1),(2338,'Coll de Nargó',23628,23635,3,3),(2339,'Collado de Contreras',3570,3573,3,1),(2340,'Collado de la Vera',9368,9373,3,2),(2341,'Collado del Mirón',3574,3577,3,1),(2342,'Collado Hermoso',34166,34169,3,1),(2343,'Collado Mediano',25932,25935,3,1),(2344,'Collado Villalba',25936,25939,3,1),(2345,'Collazos de Boedo',30518,30523,3,2),(2346,'Collbató',6110,6113,3,1),(2347,'Colldejou',36574,36577,3,1),(2348,'Collsuspina',6114,6117,3,1),(2349,'Colmenar',26992,26995,3,1),(2350,'Colmenar de Montemayor',32588,32591,3,1),(2351,'Colmenar de Oreja',25940,25943,3,1),(2352,'Colmenar del Arroyo',25944,25947,3,1),(2353,'Colmenar Viejo',25948,25957,3,4),(2354,'Colmenarejo',25958,25963,3,2),(2355,'Colomera',15234,15237,3,1),(2356,'Colomers',14126,14129,3,1),(2357,'Colunga',2566,2589,3,11),(2358,'Colungo',18596,18599,3,1),(2359,'Comares',26996,26999,3,1),(2360,'Comillas',10630,10635,3,2),(2361,'Cómpeta',27000,27003,3,1),(2362,'Conca de Dalt',23636,23643,3,3),(2363,'Condado de Castilnovo',34170,34173,3,1),(2364,'Condado de Treviño',7644,7659,3,7),(2365,'Condemios de Abajo',16252,16255,3,1),(2366,'Condemios de Arriba',16256,16261,3,2),(2367,'Conesa',36578,36583,3,2),(2368,'Confrides',1176,1179,3,1),(2369,'Congosto',22078,22081,3,1),(2370,'Congosto de Valdavia',30524,30529,3,2),(2371,'Congostrina',16262,16265,3,1),(2372,'Conil de la Frontera',10228,10233,3,2),(2373,'Conquista',12456,12459,3,1),(2374,'Conquista de la Sierra',9374,9377,3,1),(2375,'Consell',5376,5379,3,1),(2376,'Constantí',36584,36587,3,1),(2377,'Constantina',35038,35041,3,1),(2378,'Constanzana',3578,3581,3,1),(2379,'Consuegra',38560,38563,3,1),(2380,'Contamina',43678,43681,3,1),(2381,'Contreras',7660,7663,3,1),(2382,'Coomonte',42244,42247,3,1),(2383,'Copernal',16266,16269,3,1),(2384,'Copons',6118,6121,3,1),(2385,'Corbalán',37608,37611,3,1),(2386,'Corbera',39706,39709,3,1),(2387,'Corbera d\'Ebre',36588,36591,3,1),(2388,'Corbera de Llobregat',6122,6125,3,1),(2389,'Corbillos de los Oteros',22082,22085,3,1),(2390,'Corbins',23644,23647,3,1),(2391,'Corçà',14130,14133,3,1),(2392,'Corcos',40710,40715,3,2),(2393,'Corcubión',20294,20299,3,2),(2394,'Córdoba',12460,12519,3,29),(2395,'Cordobilla de Lácara',4644,4647,3,1),(2396,'Cordovilla',32592,32595,3,1),(2397,'Cordovilla la Real',30530,30533,3,1),(2398,'Cordovín',21202,21205,3,1),(2399,'Corduente',16270,16281,3,5),(2400,'Corella',28340,28343,3,1),(2401,'Corera',21206,21209,3,1),(2402,'Coreses',42248,42251,3,1),(2403,'Coria',9378,9383,3,2),(2404,'Coria del Río',35042,35045,3,1),(2405,'Coripe',35046,35049,3,1),(2406,'Coristanco',20300,20305,3,2),(2407,'Cornago',21210,21215,3,2),(2408,'Cornellà de Llobregat',6126,6129,3,1),(2409,'Cornellà del Terri',14134,14137,3,1),(2410,'Cornudella de Montsant',36592,36597,3,2),(2411,'Corpa',25964,25967,3,1),(2412,'Corporales',21216,21219,3,1),(2413,'Corral de Almaguer',38564,38567,3,1),(2414,'Corral de Ayllón',34174,34177,3,1),(2415,'Corral de Calatrava',12040,12043,3,1),(2416,'Corral-Rubio',540,543,3,1),(2417,'Corrales de Duero',40716,40719,3,1),(2418,'Corrales del Vino',42252,42257,3,2),(2419,'Corte de Peleas',4648,4651,3,1),(2420,'Corteconcepción',17842,17845,3,1),(2421,'Cortegada',29610,29617,3,3),(2422,'Cortegana',17846,17853,3,3),(2423,'Cortelazor',17854,17857,3,1),(2424,'Cortes',28344,28347,3,1),(2425,'Cortes de Aragón',37612,37615,3,1),(2426,'Cortes de Arenoso',11428,11433,3,2),(2427,'Cortes de Baza',15238,15245,3,3),(2428,'Cortes de la Frontera',27004,27011,3,3),(2429,'Cortes de Pallás',39710,39713,3,1),(2430,'Cortes y Graena',15246,15249,3,1),(2431,'Corullón',22086,22095,3,4),(2432,'Coruña del Conde',7664,7667,3,1),(2433,'Corvera de Asturias',2590,2601,3,5),(2434,'Corvera de Toranzo',10636,10645,3,4),(2435,'Cosa',37616,37621,3,2),(2436,'Coscurita',35780,35787,3,3),(2437,'Coslada',25968,25977,3,4),(2438,'Cospeito',24972,24983,3,5),(2439,'Costitx',5380,5383,3,1),(2440,'Costur',11434,11437,3,1),(2441,'Cosuenda',43682,43685,3,1),(2442,'Cotanes del Monte',42258,42261,3,1),(2443,'Cotes',39714,39717,3,1),(2444,'Cotillas',544,547,3,1),(2445,'Covaleda',35788,35791,3,1),(2446,'Covarrubias',7668,7673,3,2),(2447,'Covelo',31458,31471,3,6),(2448,'Cox',1180,1183,3,1),(2449,'Cózar',12044,12047,3,1),(2450,'Cozuelos de Fuentidueña',34178,34181,3,1),(2451,'Crecente',31472,31489,3,8),(2452,'Creixell',36598,36603,3,2),(2453,'Crémenes',22096,22109,3,6),(2454,'Crespià',14138,14141,3,1),(2455,'Crespos',3582,3587,3,2),(2456,'Cretas',37622,37625,3,1),(2457,'Crevillent',1184,1191,3,3),(2458,'Cristina',4652,4655,3,1),(2459,'Cristóbal',32596,32599,3,1),(2460,'Crivillén',37626,37629,3,1),(2461,'Cruïlles, Monells i Sant Sadurní de l\'Heura',14142,14153,3,5),(2462,'Cuacos de Yuste',9384,9387,3,1),(2463,'Cuadros',22110,22119,3,4),(2464,'Cualedro',29618,29625,3,3),(2465,'Cuart de les Valls',39718,39721,3,1),(2466,'Cuart de Poblet',39722,39725,3,1),(2467,'Cuarte de Huerva',43686,43689,3,1),(2468,'Cuartell',39726,39729,3,1),(2469,'Cuatretonda',39730,39733,3,1),(2470,'Cubas de la Sagra',25978,25981,3,1),(2471,'Cubel',43690,43693,3,1),(2472,'Cubelles',6130,6133,3,1),(2473,'Cubells',23648,23651,3,1),(2474,'Cubilla',35792,35795,3,1),(2475,'Cubillas de Cerrato',30534,30537,3,1),(2476,'Cubillas de los Oteros',22120,22123,3,1),(2477,'Cubillas de Rueda',22124,22129,3,2),(2478,'Cubillas de Santa Marta',40720,40723,3,1),(2479,'Cubillo',34182,34185,3,1),(2480,'Cubillo del Campo',7674,7677,3,1),(2481,'Cubillos',42262,42265,3,1),(2482,'Cubillos del Sil',22130,22133,3,1),(2483,'Cubla',37630,37633,3,1),(2484,'Cubo de Benavente',42266,42269,3,1),(2485,'Cubo de Bureba',7678,7681,3,1),(2486,'Cubo de la Solana',35796,35801,3,2),(2487,'Cucalón',37634,37637,3,1),(2488,'Cudillero',2602,2615,3,6),(2489,'Cuelgamures',42270,42273,3,1),(2490,'Cuéllar',34186,34205,3,9),(2491,'Cuenca',13148,13165,3,8),(2492,'Cuenca de Campos',40724,40727,3,1),(2493,'Cuerva',38568,38571,3,1),(2494,'Cueva de Ágreda',35802,35805,3,1),(2495,'Cueva del Hierro',13166,13169,3,1),(2496,'Cuevas Bajas',27012,27015,3,1),(2497,'Cuevas de Almudén',37638,37641,3,1),(2498,'Cuevas de Provanco',34206,34209,3,1),(2499,'Cuevas de San Clemente',7682,7685,3,1),(2500,'Cuevas de San Marcos',27016,27019,3,1),(2501,'Cuevas del Almanzora',1878,1893,3,7),(2502,'Cuevas del Becerro',27020,27023,3,1),(2503,'Cuevas del Campo',15250,15253,3,1),(2504,'Cuevas del Valle',3588,3591,3,1),(2505,'Cuevas Labradas',37642,37645,3,1),(2506,'Culla',11438,11441,3,1),(2507,'Cúllar',15254,15263,3,4),(2508,'Cúllar Vega',15264,15267,3,1),(2509,'Cullera',39734,39741,3,3),(2510,'Culleredo',20306,20321,3,7),(2511,'Cumbres de Enmedio',17858,17861,3,1),(2512,'Cumbres de San Bartolomé',17862,17865,3,1),(2513,'Cumbres Mayores',17866,17869,3,1),(2514,'Cunit',36604,36607,3,1),(2515,'Cuntis',31490,31501,3,5),(2516,'Curiel de Duero',40728,40731,3,1),(2517,'Curtis',20322,20327,3,2),(2518,'Cútar',27024,27027,3,1),(2519,'Cuzcurrita de Río Tirón',21220,21223,3,1),(2520,'Daganzo de Arriba',25982,25985,3,1),(2521,'Daimiel',12048,12051,3,1),(2522,'Daimús',39742,39745,3,1),(2523,'Dalías',1894,1897,3,1),(2524,'Darnius',14154,14157,3,1),(2525,'Daroca',43694,43697,3,1),(2526,'Daroca de Rioja',21224,21227,3,1),(2527,'Darro',15268,15271,3,1),(2528,'Das',14158,14161,3,1),(2529,'Daya Nueva',1192,1195,3,1),(2530,'Daya Vieja',1196,1199,3,1),(2531,'Deba',17374,17379,3,2),(2532,'Degaña',2616,2621,3,2),(2533,'Dehesa de Montejo',30538,30545,3,3),(2534,'Dehesa de Romanos',30546,30549,3,1),(2535,'Dehesas de Guadix',15272,15275,3,1),(2536,'Dehesas Viejas',15276,15277,3,0),(2537,'Deià',5384,5387,3,1),(2538,'Deifontes',15278,15281,3,1),(2539,'Deleitosa',9388,9391,3,1),(2540,'Deltebre',36608,36611,3,1),(2541,'Dénia',1200,1211,3,5),(2542,'Derio',41644,41649,3,2),(2543,'Descargamaría',9392,9395,3,1),(2544,'Desojo',28348,28351,3,1),(2545,'Destriana',22134,22137,3,1),(2546,'Dévanos',35806,35809,3,1),(2547,'Deza',35810,35815,3,2),(2548,'Dicastillo',28352,28355,3,1),(2549,'Diego del Carpio',3592,3595,3,1),(2550,'Diezma',15282,15285,3,1),(2551,'Dílar',15286,15289,3,1),(2552,'Dima',41650,41653,3,1),(2553,'Dios le Guarde',32600,32603,3,1),(2554,'Dodro',20328,20335,3,3),(2555,'Dólar',15290,15293,3,1),(2556,'Dolores',1212,1215,3,1),(2557,'Domeño',39746,39749,3,1),(2558,'Domingo García',34210,34213,3,1),(2559,'Domingo Pérez',38572,38575,3,1),(2560,'Domingo Pérez de Granada',15294,15295,3,0),(2561,'Don Álvaro',4656,4659,3,1),(2562,'Don Benito',4660,4671,3,5),(2563,'Doña Mencía',12520,12523,3,1),(2564,'Donamaria',28356,28359,3,1),(2565,'Doneztebe/Santesteban',28360,28363,3,1),(2566,'Donhierro',34214,34217,3,1),(2567,'Doñinos de Ledesma',32604,32611,3,3),(2568,'Doñinos de Salamanca',32612,32619,3,3),(2569,'Donjimeno',3596,3599,3,1),(2570,'Donostia/San Sebastián',17380,17421,3,20),(2571,'Donvidas',3600,3603,3,1),(2572,'Dos Aguas',39750,39753,3,1),(2573,'Dos Hermanas',35050,35069,3,9),(2574,'Dos Torres',12524,12527,3,1),(2575,'Dosbarrios',38576,38579,3,1),(2576,'Dosrius',6134,6139,3,2),(2577,'Dozón',31502,31507,3,2),(2578,'Driebes',16282,16285,3,1),(2579,'Dúdar',15296,15299,3,1),(2580,'Dueñas',30550,30555,3,2),(2581,'Duesaigües',36612,36615,3,1),(2582,'Dumbría',20336,20343,3,3),(2583,'Durango',41654,41657,3,1),(2584,'Dúrcal',15300,15303,3,1),(2585,'Durón',16286,16291,3,2),(2586,'Duruelo',34218,34221,3,1),(2587,'Duruelo de la Sierra',35816,35819,3,1),(2588,'Ea',41658,41663,3,2),(2589,'Echarri/Etxarri',28364,28367,3,1),(2590,'Écija',35070,35079,3,4),(2591,'Eibar',17422,17425,3,1),(2592,'Eivissa',5218,5221,3,1),(2593,'Ejea de los Caballeros',43698,43707,3,4),(2594,'Éjeme',32620,32623,3,1),(2595,'Ejulve',37646,37649,3,1),(2596,'El Acebrón',13170,13173,3,1),(2597,'El Álamo',25986,25991,3,2),(2598,'El Almendro',17870,17873,3,1),(2599,'El Arco',32624,32627,3,1),(2600,'El Arenal',3604,3607,3,1),(2601,'El Astillero',10646,10653,3,3),(2602,'El Atazar',25992,25995,3,1),(2603,'El Ballestero',548,551,3,1),(2604,'El Barco de Ávila',3608,3611,3,1),(2605,'El Barraco',3612,3617,3,2),(2606,'El Berrueco',25996,25999,3,1),(2607,'El Boalo',26000,26007,3,3),(2608,'El Bodón',32628,32631,3,1),(2609,'El Bohodón',3618,3621,3,1),(2610,'El Bonillo',552,557,3,2),(2611,'El Borge',27028,27031,3,1),(2612,'El Bosque',10234,10237,3,1),(2613,'El Bruc',6140,6143,3,1),(2614,'El Brull',6144,6147,3,1),(2615,'El Burgo',27032,27035,3,1),(2616,'El Burgo de Ebro',43708,43711,3,1),(2617,'El Burgo Ranero',22138,22143,3,2),(2618,'El Buste',43712,43715,3,1),(2619,'El Busto',28368,28371,3,1),(2620,'El Cabaco',32632,32635,3,1),(2621,'el Campello',1216,1219,3,1),(2622,'El Campillo',17874,17877,3,1),(2623,'El Campillo',40732,40733,3,0),(2624,'El Campillo de la Jara',38580,38583,3,1),(2625,'El Campo de Peñaranda',32636,32639,3,1),(2626,'El Cañavate',13174,13177,3,1),(2627,'El Cardoso de la Sierra',16292,16295,3,1),(2628,'El Carpio',12528,12533,3,2),(2629,'El Carpio de Tajo',38584,38587,3,1),(2630,'El Carrascalejo',4672,4675,3,1),(2631,'El Casar',16296,16301,3,2),(2632,'El Casar de Escalona',38588,38591,3,1),(2633,'el Castell de Guadalest',1220,1223,3,1),(2634,'El Castellar',37650,37653,3,1),(2635,'El Castillo de las Guardas',35080,35089,3,4),(2636,'El Catllar',36616,36621,3,2),(2637,'El Cerro',32640,32647,3,3),(2638,'El Cerro de Andévalo',17878,17885,3,3),(2639,'El Cogul',23652,23655,3,1),(2640,'El Coronil',35090,35093,3,1),(2641,'El Cubillo de Uceda',16302,16305,3,1),(2642,'El Cubo de Don Sancho',32648,32653,3,2),(2643,'El Cubo de Tierra del Vino',42274,42277,3,1),(2644,'El Cuervo',37654,37657,3,1),(2645,'El Cuervo de Sevilla',35094,35097,3,1),(2646,'El Ejido',1898,1911,3,6),(2647,'El Escorial',26008,26019,3,5),(2648,'El Espinar',34222,34231,3,4),(2649,'El Far d\'Empordà',14162,14165,3,1),(2650,'el Fondó de les Neus/Hondón de las Nieves',1224,1229,3,2),(2651,'El Frago',43716,43719,3,1),(2652,'El Franco',2622,2633,3,5),(2653,'El Frasno',43720,43729,3,4),(2654,'El Fresno',3622,3625,3,1),(2655,'El Garrobo',35098,35101,3,1),(2656,'El Gastor',10238,10241,3,1),(2657,'El Gordo',9396,9399,3,1),(2658,'El Grado',18600,18605,3,2),(2659,'El Granado',17886,17889,3,1),(2660,'El Guijo',12534,12537,3,1),(2661,'El Herrumblar',13178,13181,3,1),(2662,'El Hito',13182,13185,3,1),(2663,'El Hornillo',3626,3629,3,1),(2664,'El Hoyo de Pinares',3630,3633,3,1),(2665,'El Lloar',36622,36625,3,1),(2666,'El Losar del Barco',3634,3637,3,1),(2667,'El Maderal',42278,42281,3,1),(2668,'El Madroño',35102,35107,3,2),(2669,'El Maíllo',32654,32657,3,1),(2670,'El Manzano',32658,32661,3,1),(2671,'El Masnou',6148,6151,3,1),(2672,'El Masroig',36626,36629,3,1),(2673,'El Milà',36630,36633,3,1),(2674,'El Milano',32662,32665,3,1),(2675,'El Mirón',3638,3643,3,2),(2676,'El Molar',26020,26023,3,1),(2677,'El Molar',36634,36635,3,0),(2678,'El Montmell',36636,36647,3,5),(2679,'El Morell',36648,36651,3,1),(2680,'El Olivar',16306,16309,3,1),(2681,'El Ordial',16310,16315,3,2),(2682,'El Oso',3644,3647,3,1),(2683,'El Palau d\'Anglesola',23656,23659,3,1),(2684,'el Palomar',39754,39757,3,1),(2685,'El Papiol',6152,6155,3,1),(2686,'El Parral',3648,3651,3,1),(2687,'El Payo',32666,32669,3,1),(2688,'El Pedernoso',13186,13189,3,1),(2689,'El Pedregal',16316,16319,3,1),(2690,'El Pedroso',35108,35111,3,1),(2691,'El Pedroso de la Armuña',32670,32673,3,1),(2692,'El Pego',42282,42285,3,1),(2693,'El Peral',13190,13193,3,1),(2694,'El Perdigón',42286,42293,3,3),(2695,'El Perelló',36652,36655,3,1),(2696,'El Picazo',13194,13197,3,1),(2697,'El Pinar',15304,15309,3,2),(2698,'El Pinell de Brai',36656,36659,3,1),(2699,'El Piñero',42294,42297,3,1),(2700,'El Pino de Tormes',32674,32677,3,1),(2701,'el Pinós/Pinoso',1230,1239,3,4),(2702,'El Pla de Santa Maria',36660,36663,3,1),(2703,'El Pla del Penedès',6156,6159,3,1),(2704,'El Poal',23660,23663,3,1),(2705,'El Pobo',37658,37661,3,1),(2706,'El Pobo de Dueñas',16320,16323,3,1),(2707,'El Pont d\'Armentera',36664,36667,3,1),(2708,'El Pont de Bar',23664,23671,3,3),(2709,'El Pont de Suert',23672,23689,3,8),(2710,'El Pont de Vilomara i Rocafort',6160,6163,3,1),(2711,'El Port de la Selva',14166,14169,3,1),(2712,'El Pozuelo',13198,13201,3,1),(2713,'El Prat de Llobregat',6164,6167,3,1),(2714,'El Provencio',13202,13205,3,1),(2715,'El Puente del Arzobispo',38592,38595,3,1),(2716,'El Puerto de Santa María',10242,10245,3,1),(2717,'El Pueyo de Araguás',18606,18609,3,1),(2718,'El Puig',39758,39763,3,2),(2719,'el Ràfol d\'Almúnia',1240,1243,3,1),(2720,'El Rasillo de Cameros',21228,21231,3,1),(2721,'El Real de Gandia',39764,39767,3,1),(2722,'El Real de la Jara',35112,35115,3,1),(2723,'El Real de San Vicente',38596,38601,3,2),(2724,'El Recuenco',16324,16327,3,1),(2725,'El Redal',21232,21235,3,1),(2726,'El Robledo',12052,12055,3,1),(2727,'El Romeral',38602,38605,3,1),(2728,'El Ronquillo',35116,35119,3,1),(2729,'El Rourell',36668,36671,3,1),(2730,'El Royo',35820,35825,3,2),(2731,'El Rubio',35120,35123,3,1),(2732,'El Sahugo',32678,32681,3,1),(2733,'El Saucejo',35124,35129,3,2),(2734,'El Soleràs',23690,23693,3,1),(2735,'El Sotillo',16328,16331,3,1),(2736,'El Tejado',32682,32685,3,1),(2737,'El Tiemblo',3652,3661,3,4),(2738,'El Toboso',38606,38609,3,1),(2739,'El Tornadizo',32686,32689,3,1),(2740,'El Torno',9400,9403,3,1),(2741,'El Toro',11442,11445,3,1),(2742,'El Valle',15310,15313,3,1),(2743,'El Valle de Altomira',13206,13215,3,4),(2744,'El Vallecillo',37662,37665,3,1),(2745,'El Vellón',26024,26027,3,1),(2746,'El Vendrell',36672,36677,3,2),(2747,'el Verger',1244,1247,3,1),(2748,'El Villar de Arnedo',21236,21239,3,1),(2749,'El Vilosell',23694,23699,3,2),(2750,'El Viso',12538,12541,3,1),(2751,'El Viso de San Juan',38610,38613,3,1),(2752,'El Viso del Alcor',35130,35133,3,1),(2753,'Elantxobe',41664,41667,3,1),(2754,'Elburgo/Burgelu',122,127,3,2),(2755,'Elche de la Sierra',558,567,3,4),(2756,'Elche/Elx',1248,1287,3,19),(2757,'Elciego',128,131,3,1),(2758,'Elda',1288,1291,3,1),(2759,'Elduain',17426,17429,3,1),(2760,'Elgeta',17430,17433,3,1),(2761,'Elgoibar',17434,17439,3,2),(2762,'Elgorriaga',28372,28375,3,1),(2763,'Eljas',9404,9407,3,1),(2764,'Elorrio',41668,41671,3,1),(2765,'Els Alamús',23700,23703,3,1),(2766,'Els Garidells',36678,36681,3,1),(2767,'Els Guiamets',36682,36685,3,1),(2768,'Els Hostalets de Pierola',6168,6171,3,1),(2769,'Els Omellons',23704,23707,3,1),(2770,'Els Omells de na Gaia',23708,23711,3,1),(2771,'Els Pallaresos',36686,36689,3,1),(2772,'Els Plans de Sió',23712,23717,3,2),(2773,'els Poblets',1292,1295,3,1),(2774,'Els Prats de Rei',6172,6175,3,1),(2775,'Els Torms',23718,23721,3,1),(2776,'Elvillar/Bilar',132,135,3,1),(2777,'Embid',16332,16335,3,1),(2778,'Embid de Ariza',43730,43733,3,1),(2779,'Emperador',39768,39771,3,1),(2780,'Encina de San Silvestre',32690,32693,3,1),(2781,'Encinacorba',43734,43737,3,1),(2782,'Encinas',34232,34235,3,1),(2783,'Encinas de Abajo',32694,32699,3,2),(2784,'Encinas de Arriba',32700,32703,3,1),(2785,'Encinas de Esgueva',40734,40737,3,1),(2786,'Encinas Reales',12542,12545,3,1),(2787,'Encinasola',17890,17893,3,1),(2788,'Encinasola de los Comendadores',32704,32707,3,1),(2789,'Encinedo',22144,22155,3,5),(2790,'Encinillas',34236,34239,3,1),(2791,'Encío',7686,7691,3,2),(2792,'Enciso',21240,21243,3,1),(2793,'Endrinal',32708,32713,3,2),(2794,'Enériz/Eneritz',28376,28379,3,1),(2795,'Enguera',39772,39777,3,2),(2796,'Enguídanos',13216,13219,3,1),(2797,'Enix',1912,1915,3,1),(2798,'Énova',39778,39781,3,1),(2799,'Entrala',42298,42301,3,1),(2800,'Entrambasaguas',10654,10661,3,3),(2801,'Entrena',21244,21247,3,1),(2802,'Entrimo',29626,29635,3,4),(2803,'Entrín Bajo',4676,4679,3,1),(2804,'Épila',43738,43743,3,2),(2805,'Erandio',41672,41675,3,1),(2806,'Eratsun',28380,28383,3,1),(2807,'Ereño',41676,41679,3,1),(2808,'Ergoiena',28384,28387,3,1),(2809,'Erla',43744,43747,3,1),(2810,'Ermua',41680,41683,3,1),(2811,'Errenteria',17440,17443,3,1),(2812,'Errezil',17444,17447,3,1),(2813,'Erriberagoitia/Ribera Alta',136,149,3,6),(2814,'Errigoiti',41684,41687,3,1),(2815,'Erro',28388,28403,3,7),(2816,'Erustes',38614,38617,3,1),(2817,'Es Bòrdes',23722,23725,3,1),(2818,'es Castell',5676,5679,3,1),(2819,'Es Mercadal',5680,5685,3,2),(2820,'Es Migjorn Gran',5686,5689,3,1),(2821,'Escacena del Campo',17894,17897,3,1),(2822,'Escalante',10662,10667,3,2),(2823,'Escalona',38618,38621,3,1),(2824,'Escalona del Prado',34240,34243,3,1),(2825,'Escalonilla',38622,38625,3,1),(2826,'Escamilla',16336,16339,3,1),(2827,'Escañuela',19550,19553,3,1),(2828,'Escarabajosa de Cabezas',34244,34247,3,1),(2829,'Escariche',16340,16343,3,1),(2830,'Escatrón',43748,43753,3,2),(2831,'Escobar de Campos',22156,22159,3,1),(2832,'Escobar de Polendos',34248,34253,3,2),(2833,'Escobosa de Almazán',35826,35829,3,1),(2834,'Escopete',16344,16347,3,1),(2835,'Escorca',5388,5391,3,1),(2836,'Escorihuela',37666,37669,3,1),(2837,'Escucha',37670,37675,3,2),(2838,'Escurial',9408,9411,3,1),(2839,'Escurial de la Sierra',32714,32717,3,1),(2840,'Escúzar',15314,15317,3,1),(2841,'Esgos',29636,29641,3,2),(2842,'Esguevillas de Esgueva',40738,40741,3,1),(2843,'Eskoriatza',17448,17453,3,2),(2844,'Eslava',28404,28407,3,1),(2845,'Eslida',11446,11449,3,1),(2846,'Espadaña',32718,32721,3,1),(2847,'Espadañedo',42302,42313,3,5),(2848,'Espadilla',11450,11453,3,1),(2849,'Esparragalejo',4680,4683,3,1),(2850,'Esparragosa de la Serena',4684,4687,3,1),(2851,'Esparragosa de Lares',4688,4691,3,1),(2852,'Esparreguera',6176,6179,3,1),(2853,'Espartinas',35134,35137,3,1),(2854,'Esparza de Salazar/Espartza Zaraitzu',28408,28411,3,1),(2855,'Espeja',32722,32725,3,1),(2856,'Espeja de San Marcelino',35830,35835,3,2),(2857,'Espejo',12546,12549,3,1),(2858,'Espejón',35836,35839,3,1),(2859,'Espeluy',19554,19559,3,2),(2860,'Espera',10246,10249,3,1),(2861,'Espiel',12550,12557,3,3),(2862,'Espinelves',14170,14173,3,1),(2863,'Espino de la Orbada',32726,32729,3,1),(2864,'Espinosa de Cerrato',30556,30559,3,1),(2865,'Espinosa de Cervera',7692,7695,3,1),(2866,'Espinosa de Henares',16348,16353,3,2),(2867,'Espinosa de los Caballeros',3662,3665,3,1),(2868,'Espinosa de los Monteros',7696,7705,3,4),(2869,'Espinosa de Villagonzalo',30560,30565,3,2),(2870,'Espinosa del Camino',7706,7709,3,1),(2871,'Espinoso del Rey',38626,38629,3,1),(2872,'Espirdo',34254,34257,3,1),(2873,'Esplegares',16354,16357,3,1),(2874,'Esplugues de Llobregat',6180,6183,3,1),(2875,'Esplús',18610,18613,3,1),(2876,'Espolla',14174,14177,3,1),(2877,'Esponellà',14178,14181,3,1),(2878,'Esporles',5392,5395,3,1),(2879,'Espot',23726,23729,3,1),(2880,'Espronceda',28412,28415,3,1),(2881,'Esquivias',38630,38633,3,1),(2882,'Establés',16358,16361,3,1),(2883,'Estada',18614,18617,3,1),(2884,'Estadilla',18618,18621,3,1),(2885,'Estamariu',23730,23733,3,1),(2886,'Estaràs',23734,23741,3,3),(2887,'Estella-Lizarra',28416,28419,3,1),(2888,'Estellencs',5396,5399,3,1),(2889,'Estepa',35138,35141,3,1),(2890,'Estepa de San Juan',35840,35843,3,1),(2891,'Estépar',7710,7715,3,2),(2892,'Estepona',27036,27047,3,5),(2893,'Estercuel',37676,37679,3,1),(2894,'Esteribar',28420,28431,3,5),(2895,'Esterri d\'Àneu',23742,23745,3,1),(2896,'Esterri de Cardós',23746,23749,3,1),(2897,'Estivella',39782,39785,3,1),(2898,'Estollo',21248,21251,3,1),(2899,'Estopiñán del Castillo',18622,18627,3,2),(2900,'Estremera',26028,26031,3,1),(2901,'Estriégana',16362,16365,3,1),(2902,'Estubeny',39786,39789,3,1),(2903,'Etayo',28432,28435,3,1),(2904,'Etxalar',28436,28439,3,1),(2905,'Etxarri Aranatz',28440,28443,3,1),(2906,'Etxauri',28444,28447,3,1),(2907,'Etxebarri',41688,41691,3,1),(2908,'Etxebarria',41692,41695,3,1),(2909,'Eulate',28448,28451,3,1),(2910,'Ezcabarte',28452,28457,3,2),(2911,'Ezcaray',21252,21257,3,2),(2912,'Ezcároz/Ezkaroze',28458,28461,3,1),(2913,'Ezkio-Itsaso',17454,17459,3,2),(2914,'Ezkurra',28462,28467,3,2),(2915,'Ezprogui',28468,28473,3,2),(2916,'Fabara',43754,43757,3,1),(2917,'Fabero',22160,22169,3,4),(2918,'Facheca',1296,1299,3,1),(2919,'Fago',18628,18631,3,1),(2920,'Falces',28474,28477,3,1),(2921,'Falset',36690,36693,3,1),(2922,'Famorca',1300,1303,3,1),(2923,'Fanlo',18632,18635,3,1),(2924,'Fanzara',11454,11457,3,1),(2925,'Faraján',27048,27051,3,1),(2926,'Faramontanos de Tábara',42314,42317,3,1),(2927,'Fariza',42318,42323,3,2),(2928,'Farlete',43758,43761,3,1),(2929,'Farrera',23750,23753,3,1),(2930,'Faura',39790,39793,3,1),(2931,'Favara',39794,39797,3,1),(2932,'Fayón',43762,43765,3,1),(2933,'Felanitx',5400,5411,3,5),(2934,'Felix',1916,1919,3,1),(2935,'Fene',20344,20355,3,5),(2936,'Férez',568,571,3,1),(2937,'Feria',4692,4695,3,1),(2938,'Fermoselle',42324,42327,3,1),(2939,'Fernán Caballero',12056,12059,3,1),(2940,'Fernán-Núñez',12558,12561,3,1),(2941,'Ferreira',15318,15321,3,1),(2942,'Ferreras de Abajo',42328,42333,3,2),(2943,'Ferreras de Arriba',42334,42339,3,2),(2944,'Ferreries',5690,5693,3,1),(2945,'Ferreruela',42340,42345,3,2),(2946,'Ferreruela de Huerva',37680,37683,3,1),(2947,'Ferrol',20356,20383,3,13),(2948,'Figaró-Montmany',6184,6187,3,1),(2949,'Fígols',6188,6191,3,1),(2950,'Fígols i Alinyà',23754,23757,3,1),(2951,'Figueres',14182,14187,3,2),(2952,'Figuerola del Camp',36694,36697,3,1),(2953,'Figueroles',11458,11461,3,1),(2954,'Figueruela de Arriba',42346,42351,3,2),(2955,'Figueruelas',43766,43769,3,1),(2956,'Fiñana',1920,1923,3,1),(2957,'Fines',1924,1927,3,1),(2958,'Finestrat',1304,1307,3,1),(2959,'Fiscal',18636,18643,3,3),(2960,'Fisterra',20384,20391,3,3),(2961,'Fitero',28478,28481,3,1),(2962,'Flaçà',14188,14191,3,1),(2963,'Flix',36698,36701,3,1),(2964,'Flores de Ávila',3666,3669,3,1),(2965,'Florida de Liébana',32730,32733,3,1),(2966,'Fogars de la Selva',6192,6195,3,1),(2967,'Fogars de Montclús',6196,6201,3,2),(2968,'Foios',39798,39801,3,1),(2969,'Foixà',14192,14199,3,3),(2970,'Folgoso de la Ribera',22170,22179,3,4),(2971,'Folgoso do Courel',24984,24997,3,6),(2972,'Folgueroles',6202,6205,3,1),(2973,'Fombellida',40742,40745,3,1),(2974,'Fombuena',43770,43773,3,1),(2975,'Fompedraza',40746,40749,3,1),(2976,'Foncea',21258,21261,3,1),(2977,'Fondarella',23758,23761,3,1),(2978,'Fondón',1928,1933,3,2),(2979,'Fonelas',15322,15325,3,1),(2980,'Fonfría',37684,37695,3,5),(2981,'Fonfría',42352,42353,3,0),(2982,'Fonollosa',6206,6209,3,1),(2983,'Font-rubí',6210,6215,3,2),(2984,'Fontanals de Cerdanya',14200,14203,3,1),(2985,'Fontanar',16366,16369,3,1),(2986,'Fontanarejo',12060,12063,3,1),(2987,'Fontanares',39802,39805,3,1),(2988,'Fontanilles',14204,14207,3,1),(2989,'Fontcoberta',14208,14211,3,1),(2990,'Fontellas',28482,28485,3,1),(2991,'Fontihoyuelo',40750,40753,3,1),(2992,'Fontioso',7716,7719,3,1),(2993,'Fontiveros',3670,3673,3,1),(2994,'Fonz',18644,18649,3,2),(2995,'Fonzaleche',21262,21267,3,2),(2996,'Foradada',23762,23765,3,1),(2997,'Foradada del Toscar',18650,18661,3,5),(2998,'Forallac',14212,14219,3,3),(2999,'Forcall',11462,11465,3,1),(3000,'Forcarei',31508,31527,3,9),(3001,'Forès',36702,36705,3,1),(3002,'Forfoleda',32734,32737,3,1),(3003,'Formentera',5222,5231,3,4),(3004,'Formentera del Segura',1308,1313,3,2),(3005,'Formiche Alto',37696,37701,3,2),(3006,'Fornalutx',5412,5415,3,1),(3007,'Fornells de la Selva',14220,14223,3,1),(3008,'Fornelos de Montes',31528,31545,3,8),(3009,'Fórnoles',37702,37705,3,1),(3010,'Fortaleny',39806,39809,3,1),(3011,'Fortanete',37706,37709,3,1),(3012,'Fortià',14224,14227,3,1),(3013,'Fortuna',27578,27587,3,4),(3014,'Forua',41696,41699,3,1),(3015,'Foz',24998,25015,3,8),(3016,'Foz-Calanda',37710,37713,3,1),(3017,'Frades',20392,20397,3,2),(3018,'Frades de la Sierra',32738,32741,3,1),(3019,'Fraga',18662,18669,3,3),(3020,'Frailes',19560,19569,3,4),(3021,'Frandovínez',7720,7723,3,1),(3022,'Frechilla',30566,30569,3,1),(3023,'Frechilla de Almazán',35844,35847,3,1),(3024,'Fregenal de la Sierra',4696,4699,3,1),(3025,'Freginals',36706,36709,3,1),(3026,'Freila',15326,15329,3,1),(3027,'Fréscano',43774,43777,3,1),(3028,'Fresneda de Altarejos',13220,13225,3,2),(3029,'Fresneda de Cuéllar',34258,34261,3,1),(3030,'Fresneda de la Sierra',13226,13229,3,1),(3031,'Fresneda de la Sierra Tirón',7724,7727,3,1),(3032,'Fresnedilla',3674,3677,3,1),(3033,'Fresnedillas de la Oliva',26032,26035,3,1),(3034,'Fresnedoso',32742,32745,3,1),(3035,'Fresnedoso de Ibor',9412,9415,3,1),(3036,'Fresneña',7728,7731,3,1),(3037,'Fresnillo de las Dueñas',7732,7735,3,1),(3038,'Fresno Alhándiga',32746,32749,3,1),(3039,'Fresno de Cantespino',34262,34271,3,4),(3040,'Fresno de Caracena',35848,35851,3,1),(3041,'Fresno de la Fuente',34272,34275,3,1),(3042,'Fresno de la Polvorosa',42354,42357,3,1),(3043,'Fresno de la Ribera',42358,42361,3,1),(3044,'Fresno de la Vega',22180,22183,3,1),(3045,'Fresno de Río Tirón',7736,7739,3,1),(3046,'Fresno de Rodilla',7740,7743,3,1),(3047,'Fresno de Sayago',42362,42367,3,2),(3048,'Fresno de Torote',26036,26039,3,1),(3049,'Fresno del Río',30570,30573,3,1),(3050,'Fresno el Viejo',40754,40757,3,1),(3051,'Frías',7744,7747,3,1),(3052,'Frías de Albarracín',37714,37717,3,1),(3053,'Friera de Valverde',42368,42371,3,1),(3054,'Frigiliana',27052,27057,3,2),(3055,'Friol',25016,25033,3,8),(3056,'Frómista',30574,30577,3,1),(3057,'Fruiz',41700,41703,3,1),(3058,'Frumales',34276,34279,3,1),(3059,'Fuembellida',16370,16373,3,1),(3060,'Fuencaliente',12064,12067,3,1),(3061,'Fuencemillán',16374,16377,3,1),(3062,'Fuendejalón',43778,43781,3,1),(3063,'Fuendetodos',43782,43785,3,1),(3064,'Fuenferrada',37718,37721,3,1),(3065,'Fuengirola',27058,27061,3,1),(3066,'Fuenlabrada',26040,26055,3,7),(3067,'Fuenlabrada de los Montes',4700,4703,3,1),(3068,'Fuenllana',12068,12071,3,1),(3069,'Fuenmayor',21268,21271,3,1),(3070,'Fuensaldaña',40758,40761,3,1),(3071,'Fuensalida',38634,38639,3,2),(3072,'Fuensanta',572,575,3,1),(3073,'Fuensanta de Martos',19570,19575,3,2),(3074,'Fuente Álamo de Murcia',27588,27601,3,6),(3075,'Fuente de Cantos',4704,4707,3,1),(3076,'Fuente de Pedro Naharro',13230,13233,3,1),(3077,'Fuente de Piedra',27062,27065,3,1),(3078,'Fuente de Santa Cruz',34280,34283,3,1),(3079,'Fuente del Arco',4708,4711,3,1),(3080,'Fuente del Maestre',4712,4715,3,1),(3081,'Fuente el Fresno',12072,12077,3,2),(3082,'Fuente el Olmo de Fuentidueña',34284,34287,3,1),(3083,'Fuente el Olmo de Íscar',34288,34291,3,1),(3084,'Fuente el Saúz',3678,3681,3,1),(3085,'Fuente el Saz de Jarama',26056,26059,3,1),(3086,'Fuente el Sol',40762,40765,3,1),(3087,'Fuente Encalada',42372,42375,3,1),(3088,'Fuente Encarroz',39810,39813,3,1),(3089,'Fuente la Higuera',39814,39819,3,2),(3090,'Fuente la Lancha',12562,12565,3,1),(3091,'Fuente la Reina',11466,11469,3,1),(3092,'Fuente Obejuna',12566,12581,3,7),(3093,'Fuente Palmera',12582,12597,3,7),(3094,'Fuente Vaqueros',15330,15333,3,1),(3095,'Fuente-Álamo',576,579,3,1),(3096,'Fuente-Olmedo',40766,40769,3,1),(3097,'Fuente-Tójar',12598,12601,3,1),(3098,'Fuentealbilla',580,587,3,3),(3099,'Fuentearmegil',35852,35857,3,2),(3100,'Fuentebureba',7748,7751,3,1),(3101,'Fuentecambrón',35858,35861,3,1),(3102,'Fuentecantos',35862,35865,3,1),(3103,'Fuentecén',7752,7755,3,1),(3104,'Fuenteguinaldo',32750,32753,3,1),(3105,'Fuenteheridos',17898,17901,3,1),(3106,'Fuentelahiguera de Albatages',16378,16381,3,1),(3107,'Fuentelapeña',42376,42379,3,1),(3108,'Fuentelcésped',7756,7759,3,1),(3109,'Fuentelencina',16382,16385,3,1),(3110,'Fuentelespino de Haro',13234,13237,3,1),(3111,'Fuentelespino de Moya',13238,13241,3,1),(3112,'Fuenteliante',32754,32757,3,1),(3113,'Fuentelisendo',7760,7763,3,1),(3114,'Fuentelmonge',35866,35869,3,1),(3115,'Fuentelsaz',16386,16389,3,1),(3116,'Fuentelsaz de Soria',35870,35875,3,2),(3117,'Fuentelviejo',16390,16393,3,1),(3118,'Fuentemolinos',7764,7767,3,1),(3119,'Fuentenava de Jábaga',13242,13249,3,3),(3120,'Fuentenebro',7768,7771,3,1),(3121,'Fuentenovilla',16394,16399,3,2),(3122,'Fuentepelayo',34292,34295,3,1),(3123,'Fuentepiñel',34296,34299,3,1),(3124,'Fuentepinilla',35876,35881,3,2),(3125,'Fuenterrebollo',34300,34303,3,1),(3126,'Fuenterroble de Salvatierra',32758,32761,3,1),(3127,'Fuenterrobles',39820,39823,3,1),(3128,'Fuentes',13250,13253,3,1),(3129,'Fuentes Calientes',37722,37725,3,1),(3130,'Fuentes Claras',37726,37729,3,1),(3131,'Fuentes de Andalucía',35142,35147,3,2),(3132,'Fuentes de Año',3682,3685,3,1),(3133,'Fuentes de Ayódar',11470,11473,3,1),(3134,'Fuentes de Béjar',32762,32765,3,1),(3135,'Fuentes de Carbajal',22184,22187,3,1),(3136,'Fuentes de Ebro',43786,43791,3,2),(3137,'Fuentes de Jiloca',43792,43795,3,1),(3138,'Fuentes de León',4716,4719,3,1),(3139,'Fuentes de Magaña',35882,35885,3,1),(3140,'Fuentes de Nava',30578,30581,3,1),(3141,'Fuentes de Oñoro',32766,32771,3,2),(3142,'Fuentes de Ropel',42380,42383,3,1),(3143,'Fuentes de Rubielos',37730,37733,3,1),(3144,'Fuentes de Valdepero',30582,30585,3,1),(3145,'Fuentesaúco',42384,42387,3,1),(3146,'Fuentesaúco de Fuentidueña',34304,34307,3,1),(3147,'Fuentesecas',42388,42391,3,1),(3148,'Fuentesoto',34308,34311,3,1),(3149,'Fuentespalda',37734,37737,3,1),(3150,'Fuentespina',7772,7775,3,1),(3151,'Fuentespreadas',42392,42395,3,1),(3152,'Fuentestrún',35886,35889,3,1),(3153,'Fuentidueña',34312,34315,3,1),(3154,'Fuentidueña de Tajo',26060,26063,3,1),(3155,'Fuerte del Rey',19576,19579,3,1),(3156,'Fuertescusa',13254,13257,3,1),(3157,'Fulleda',23766,23769,3,1),(3158,'Funes',28486,28489,3,1),(3159,'Fustiñana',28490,28493,3,1),(3160,'Gabaldón',13258,13261,3,1),(3161,'Gabiria',17460,17463,3,1),(3162,'Gádor',1934,1937,3,1),(3163,'Gaià',6216,6219,3,1),(3164,'Gaianes',1314,1317,3,1),(3165,'Gaibiel',11474,11477,3,1),(3166,'Gaintza',17464,17467,3,1),(3167,'Gajanejos',16400,16403,3,1),(3168,'Gajates',32772,32779,3,3),(3169,'Galapagar',26064,26077,3,6),(3170,'Galápagos',16404,16407,3,1),(3171,'Galar',28494,28497,3,1),(3172,'Galaroza',17902,17905,3,1),(3173,'Galbarros',7776,7779,3,1),(3174,'Galbárruli',21272,21275,3,1),(3175,'Galdakao',41704,41707,3,1),(3176,'Galdames',41708,41711,3,1),(3177,'Galende',42396,42409,3,6),(3178,'Galera',15334,15339,3,2),(3179,'Galilea',21276,21279,3,1),(3180,'Galindo y Perahuy',32780,32785,3,2),(3181,'Galinduste',32786,32791,3,2),(3182,'Galisancho',32792,32795,3,1),(3183,'Galisteo',9416,9421,3,2),(3184,'Gallegos',34316,34319,3,1),(3185,'Gallegos de Altamiros',3686,3689,3,1),(3186,'Gallegos de Argañán',32796,32799,3,1),(3187,'Gallegos de Hornija',40770,40773,3,1),(3188,'Gallegos de Sobrinos',3690,3693,3,1),(3189,'Gallegos de Solmirón',32800,32803,3,1),(3190,'Gallegos del Pan',42410,42413,3,1),(3191,'Gallegos del Río',42414,42421,3,3),(3192,'Gallifa',6220,6223,3,1),(3193,'Gallinero de Cameros',21280,21283,3,1),(3194,'Gallipienzo/Galipentzu',28498,28501,3,1),(3195,'Gallocanta',43796,43799,3,1),(3196,'Gallués/Galoze',28502,28505,3,1),(3197,'Gallur',43800,43803,3,1),(3198,'Galve',37738,37741,3,1),(3199,'Galve de Sorbe',16408,16411,3,1),(3200,'Gálvez',38640,38643,3,1),(3201,'Gamiz-Fika',41712,41715,3,1),(3202,'Gamones',42422,42425,3,1),(3203,'Gandesa',36710,36713,3,1),(3204,'Gandia',39824,39835,3,5),(3205,'Garaballa',13262,13265,3,1),(3206,'Garai',41716,41719,3,1),(3207,'Garaioa',28506,28509,3,1),(3208,'Garbayuela',4720,4723,3,1),(3209,'Garcia',36714,36717,3,1),(3210,'Garciaz',9422,9425,3,1),(3211,'Garcibuey',32804,32807,3,1),(3212,'Garcihernández',32808,32813,3,2),(3213,'Garcillán',34320,34323,3,1),(3214,'Garciotum',38644,38647,3,1),(3215,'Garcirrey',32814,32819,3,2),(3216,'Garde',28510,28513,3,1),(3217,'Gargallo',37742,37745,3,1),(3218,'Garganta de los Montes',26078,26083,3,2),(3219,'Garganta del Villar',3694,3697,3,1),(3220,'Garganta la Olla',9426,9429,3,1),(3221,'Gargantilla',9430,9433,3,1),(3222,'Gargantilla del Lozoya y Pinilla de Buitrago',26084,26087,3,1),(3223,'Gargüera',9434,9437,3,1),(3224,'Garínoain',28514,28517,3,1),(3225,'Garlitos',4724,4727,3,1),(3226,'Garrafe de Torío',22188,22195,3,3),(3227,'Garralda',28518,28521,3,1),(3228,'Garray',35890,35895,3,2),(3229,'Garrigàs',14228,14231,3,1),(3230,'Garrigoles',14232,14235,3,1),(3231,'Garriguella',14236,14239,3,1),(3232,'Garrovillas de Alconétar',9438,9441,3,1),(3233,'Garrucha',1938,1941,3,1),(3234,'Garvín',9442,9445,3,1),(3235,'Gascones',26088,26091,3,1),(3236,'Gascueña',13266,13269,3,1),(3237,'Gascueña de Bornova',16412,16415,3,1),(3238,'Gata',9446,9451,3,2),(3239,'Gata de Gorgos',1318,1321,3,1),(3240,'Gatika',41720,41723,3,1),(3241,'Gatón de Campos',40774,40777,3,1),(3242,'Gátova',39836,39839,3,1),(3243,'Gaucín',27066,27069,3,1),(3244,'Gautegiz Arteaga',41724,41727,3,1),(3245,'Gavà',6224,6227,3,1),(3246,'Gavarda',39840,39843,3,1),(3247,'Gavet de la Conca',23770,23777,3,3),(3248,'Gavilanes',3698,3703,3,2),(3249,'Gaztelu',17468,17471,3,1),(3250,'Gea de Albarracín',37746,37749,3,1),(3251,'Gejuelo del Barro',32820,32823,3,1),(3252,'Geldo',11478,11483,3,2),(3253,'Gelida',6228,6231,3,1),(3254,'Gelsa',43804,43807,3,1),(3255,'Gelves',35148,35153,3,2),(3256,'Gema',42426,42429,3,1),(3257,'Gemuño',3704,3707,3,1),(3258,'Genalguacil',27070,27073,3,1),(3259,'Génave',19580,19583,3,1),(3260,'Genevilla',28522,28525,3,1),(3261,'Genovés',39844,39847,3,1),(3262,'Ger',14240,14243,3,1),(3263,'Gerena',35154,35157,3,1),(3264,'Gérgal',1942,1951,3,4),(3265,'Geria',40778,40781,3,1),(3266,'Gerindote',38648,38651,3,1),(3267,'Gernika-Lumo',41728,41731,3,1),(3268,'Gestalgar',39848,39851,3,1),(3269,'Getafe',26092,26109,3,8),(3270,'Getaria',17472,17475,3,1),(3271,'Getxo',41732,41743,3,5),(3272,'Gibraleón',17906,17909,3,1),(3273,'Gijón',2634,2685,3,25),(3274,'Gil García',3708,3711,3,1),(3275,'Gilbuena',3712,3715,3,1),(3276,'Gilena',35158,35161,3,1),(3277,'Gilet',39852,39855,3,1),(3278,'Gimenells i el Pla de la Font',23778,23783,3,2),(3279,'Gimialcón',3716,3719,3,1),(3280,'Gimileo',21284,21287,3,1),(3281,'Gines',35162,35165,3,1),(3282,'Ginestar',36718,36721,3,1),(3283,'Girona',14244,14261,3,8),(3284,'Gironella',6232,6235,3,1),(3285,'Gisclareny',6236,6239,3,1),(3286,'Gistaín',18670,18673,3,1),(3287,'Gizaburuaga',41744,41747,3,1),(3288,'Gobernador',15340,15345,3,2),(3289,'Godall',36722,36725,3,1),(3290,'Godella',39856,39859,3,1),(3291,'Godelleta',39860,39863,3,1),(3292,'Godojos',43808,43811,3,1),(3293,'Goizueta',28526,28529,3,1),(3294,'Gójar',15346,15349,3,1),(3295,'Golmayo',35896,35907,3,5),(3296,'Golmés',23784,23787,3,1),(3297,'Golosalvo',588,591,3,1),(3298,'Golpejas',32824,32827,3,1),(3299,'Gómara',35908,35915,3,3),(3300,'Gombrèn',14262,14265,3,1),(3301,'Gomecello',32828,32831,3,1),(3302,'Gomesende',29642,29645,3,1),(3303,'Gomezserracín',34324,34327,3,1),(3304,'Gondomar',31546,31557,3,5),(3305,'Goñi',28530,28533,3,1),(3306,'Gor',15350,15353,3,1),(3307,'Gorafe',15354,15357,3,1),(3308,'Gordaliza del Pino',22196,22199,3,1),(3309,'Gordexola',41748,41753,3,2),(3310,'Gordoncillo',22200,22203,3,1),(3311,'Gorga',1322,1325,3,1),(3312,'Gorliz',41754,41759,3,2),(3313,'Gormaz',35916,35919,3,1),(3314,'Gósol',23788,23791,3,1),(3315,'Gotarrendura',3720,3723,3,1),(3316,'Gotor',43812,43815,3,1),(3317,'Gozón',2686,2699,3,6),(3318,'Gradefes',22204,22217,3,6),(3319,'Grado',2700,2713,3,6),(3320,'Graja de Campalbo',13270,13273,3,1),(3321,'Graja de Iniesta',13274,13277,3,1),(3322,'Grajal de Campos',22218,22221,3,1),(3323,'Grajera',34328,34331,3,1),(3324,'Granada',15358,15395,3,18),(3325,'Granátula de Calatrava',12078,12081,3,1),(3326,'Grandas de Salime',2714,2717,3,1),(3327,'Grandes y San Martín',3724,3727,3,1),(3328,'Grañén',18674,18685,3,5),(3329,'Granera',6240,6243,3,1),(3330,'Granja de Moreruela',42430,42435,3,2),(3331,'Granja de Rocamora',1326,1329,3,1),(3332,'Granja de Torrehermosa',4728,4731,3,1),(3333,'Granollers',6244,6251,3,3),(3334,'Grañón',21288,21291,3,1),(3335,'Granucillo',42436,42441,3,2),(3336,'Granyanella',23792,23795,3,1),(3337,'Granyena de les Garrigues',23796,23799,3,1),(3338,'Granyena de Segarra',23800,23803,3,1),(3339,'Gratallops',36726,36729,3,1),(3340,'Graus',18686,18705,3,9),(3341,'Grávalos',21292,21295,3,1),(3342,'Grazalema',10250,10255,3,2),(3343,'Griegos',37750,37753,3,1),(3344,'Grijalba',7780,7783,3,1),(3345,'Grijota',30586,30589,3,1),(3346,'Griñón',26110,26113,3,1),(3347,'Grisaleña',7784,7787,3,1),(3348,'Grisel',43816,43819,3,1),(3349,'Grisén',43820,43823,3,1),(3350,'Guadahortuna',15396,15399,3,1),(3351,'Guadalajara',16416,16439,3,11),(3352,'Guadalaviar',37754,37757,3,1),(3353,'Guadalcanal',35166,35169,3,1),(3354,'Guadalcázar',12602,12605,3,1),(3355,'Guadalix de la Sierra',26114,26117,3,1),(3356,'Guadalmez',12082,12087,3,2),(3357,'Guadalupe',9452,9455,3,1),(3358,'Guadamur',38652,38655,3,1),(3359,'Guadarrama',26118,26125,3,3),(3360,'Guadasequies',39864,39867,3,1),(3361,'Guadasuar',39868,39871,3,1),(3362,'Guadiana del Caudillo',4732,4735,3,1),(3363,'Guadix',15400,15411,3,5),(3364,'Guadramiro',32832,32835,3,1),(3365,'Gualba',6252,6255,3,1),(3366,'Gualchos',15412,15417,3,2),(3367,'Gualta',14266,14269,3,1),(3368,'Guardamar de la Safor',39872,39875,3,1),(3369,'Guardamar del Segura',1330,1333,3,1),(3370,'Guardiola de Berguedà',6256,6259,3,1),(3371,'Guardo',30590,30599,3,4),(3372,'Guareña',4736,4741,3,2),(3373,'Guaro',27074,27077,3,1),(3374,'Guarrate',42442,42445,3,1),(3375,'Guarromán',19584,19587,3,1),(3376,'Guaza de Campos',30600,30603,3,1),(3377,'Gúdar',37758,37761,3,1),(3378,'Güéjar Sierra',15418,15423,3,2),(3379,'Güeñes',41760,41767,3,3),(3380,'Güesa/Gorza',28534,28537,3,1),(3381,'Guesálaz/Gesalatz',28538,28545,3,3),(3382,'Güevéjar',15424,15427,3,1),(3383,'Guijo de Ávila',32836,32839,3,1),(3384,'Guijo de Coria',9456,9459,3,1),(3385,'Guijo de Galisteo',9460,9467,3,3),(3386,'Guijo de Granadilla',9468,9475,3,3),(3387,'Guijo de Santa Bárbara',9476,9479,3,1),(3388,'Guijuelo',32840,32849,3,4),(3389,'Guillena',35170,35177,3,3),(3390,'Guils de Cerdanya',14270,14273,3,1),(3391,'Guimerà',23804,23807,3,1),(3392,'Guirguillano',28546,28551,3,2),(3393,'Guisando',3728,3731,3,1),(3394,'Guissona',23808,23811,3,1),(3395,'Guitiriz',25034,25057,3,11),(3396,'Guixers',23812,23815,3,1),(3397,'Gumiel de Izán',7788,7791,3,1),(3398,'Gumiel de Mercado',7792,7795,3,1),(3399,'Guntín',25058,25079,3,10),(3400,'Gurb',6260,6263,3,1),(3401,'Guriezo',10668,10681,3,6),(3402,'Gurrea de Gállego',18706,18711,3,2),(3403,'Gusendos de los Oteros',22222,22225,3,1),(3404,'Gutierre-Muñoz',3732,3735,3,1),(3405,'Hacinas',7796,7799,3,1),(3406,'Harana/Valle de Arana',150,153,3,1),(3407,'Haro',21296,21301,3,2),(3408,'Haza',7800,7805,3,2),(3409,'Hazas de Cesto',10682,10689,3,3),(3410,'Helechosa de los Montes',4742,4745,3,1),(3411,'Hellín',592,605,3,6),(3412,'Henarejos',13278,13281,3,1),(3413,'Henche',16440,16443,3,1),(3414,'Heras de Ayuso',16444,16447,3,1),(3415,'Herbés',11484,11487,3,1),(3416,'Herce',21302,21305,3,1),(3417,'Herencia',12088,12091,3,1),(3418,'Herguijuela',9480,9485,3,2),(3419,'Herguijuela de Ciudad Rodrigo',32850,32855,3,2),(3420,'Herguijuela de la Sierra',32856,32861,3,2),(3421,'Herguijuela del Campo',32862,32865,3,1),(3422,'Hermandad de Campoo de Suso',10690,10699,3,4),(3423,'Hérmedes de Cerrato',30604,30607,3,1),(3424,'Hermisende',42446,42451,3,2),(3425,'Hernán-Pérez',9486,9491,3,2),(3426,'Hernani',17476,17481,3,2),(3427,'Hernansancho',3736,3739,3,1),(3428,'Hernialde',17482,17485,3,1),(3429,'Herradón de Pinares',3740,3747,3,3),(3430,'Herramélluri',21306,21309,3,1),(3431,'Herrera',35178,35181,3,1),(3432,'Herrera de Alcántara',9492,9495,3,1),(3433,'Herrera de los Navarros',43824,43827,3,1),(3434,'Herrera de Pisuerga',30608,30615,3,3),(3435,'Herrera de Soria',35920,35923,3,1),(3436,'Herrera de Valdecañas',30616,30619,3,1),(3437,'Herrera del Duque',4746,4751,3,2),(3438,'Herrería',16448,16451,3,1),(3439,'Herrerías',10700,10709,3,4),(3440,'Herreros de Suso',3748,3751,3,1),(3441,'Herreruela',9496,9499,3,1),(3442,'Herreruela de Oropesa',38656,38659,3,1),(3443,'Herrín de Campos',40782,40785,3,1),(3444,'Hervás',9500,9503,3,1),(3445,'Hervías',21310,21313,3,1),(3446,'Hiendelaencina',16452,16455,3,1),(3447,'Higuera',9504,9507,3,1),(3448,'Higuera de Calatrava',19588,19591,3,1),(3449,'Higuera de la Serena',4752,4755,3,1),(3450,'Higuera de la Sierra',17910,17913,3,1),(3451,'Higuera de las Dueñas',3752,3755,3,1),(3452,'Higuera de Llerena',4756,4759,3,1),(3453,'Higuera de Vargas',4760,4763,3,1),(3454,'Higuera la Real',4764,4767,3,1),(3455,'Higueras',11488,11491,3,1),(3456,'Higueruela',606,611,3,2),(3457,'Higueruelas',39876,39879,3,1),(3458,'Híjar',37762,37765,3,1),(3459,'Hijes',16456,16459,3,1),(3460,'Hinojal',9508,9511,3,1),(3461,'Hinojales',17914,17917,3,1),(3462,'Hinojares',19592,19595,3,1),(3463,'Hinojos',17918,17921,3,1),(3464,'Hinojosa de Duero',32866,32869,3,1),(3465,'Hinojosa de Jarque',37766,37769,3,1),(3466,'Hinojosa de San Vicente',38660,38663,3,1),(3467,'Hinojosa del Campo',35924,35927,3,1),(3468,'Hinojosa del Duque',12606,12609,3,1),(3469,'Hinojosa del Valle',4768,4771,3,1),(3470,'Hinojosas de Calatrava',12092,12095,3,1),(3471,'Hiriberri/Villanueva de Aezkoa',28552,28555,3,1),(3472,'Hita',16460,16463,3,1),(3473,'Holguera',9512,9517,3,2),(3474,'Hombrados',16464,16467,3,1),(3475,'Hondarribia',17486,17489,3,1),(3476,'Hondón de los Frailes',1334,1337,3,1),(3477,'Honrubia',13282,13285,3,1),(3478,'Honrubia de la Cuesta',34332,34335,3,1),(3479,'Hontalbilla',34336,34339,3,1),(3480,'Hontanar',38664,38667,3,1),(3481,'Hontanares de Eresma',34340,34343,3,1),(3482,'Hontanas',7806,7809,3,1),(3483,'Hontanaya',13286,13289,3,1),(3484,'Hontangas',7810,7813,3,1),(3485,'Hontecillas',13290,13293,3,1),(3486,'Hontoba',16468,16471,3,1),(3487,'Hontoria de Cerrato',30620,30623,3,1),(3488,'Hontoria de la Cantera',7814,7817,3,1),(3489,'Hontoria de Valdearados',7818,7821,3,1),(3490,'Hontoria del Pinar',7822,7827,3,2),(3491,'Horcajo de la Sierra-Aoslos',26126,26129,3,1),(3492,'Horcajo de las Torres',3756,3759,3,1),(3493,'Horcajo de los Montes',12096,12099,3,1),(3494,'Horcajo de Montemayor',32870,32873,3,1),(3495,'Horcajo de Santiago',13294,13297,3,1),(3496,'Horcajo Medianero',32874,32881,3,3),(3497,'Horcajuelo de la Sierra',26130,26133,3,1),(3498,'Horche',16472,16479,3,3),(3499,'Hormigos',38668,38671,3,1),(3500,'Hormilla',21314,21317,3,1),(3501,'Hormilleja',21318,21321,3,1),(3502,'Hornachos',4772,4775,3,1),(3503,'Hornachuelos',12610,12621,3,5),(3504,'Hornillos de Cameros',21322,21325,3,1),(3505,'Hornillos de Cerrato',30624,30627,3,1),(3506,'Hornillos de Eresma',40786,40789,3,1),(3507,'Hornillos del Camino',7828,7831,3,1),(3508,'Hornos',19596,19605,3,4),(3509,'Hornos de Moncalvillo',21326,21329,3,1),(3510,'Horta de Sant Joan',36730,36733,3,1),(3511,'Hortezuela de Océn',16480,16483,3,1),(3512,'Hortigüela',7832,7835,3,1),(3513,'Hospital de Órbigo',22226,22229,3,1),(3514,'Hostalric',14274,14277,3,1),(3515,'Hoya-Gonzalo',612,615,3,1),(3516,'Hoyales de Roa',7836,7839,3,1),(3517,'Hoyo de Manzanares',26134,26139,3,2),(3518,'Hoyocasero',3760,3763,3,1),(3519,'Hoyorredondo',3764,3767,3,1),(3520,'Hoyos',9518,9521,3,1),(3521,'Hoyos de Miguel Muñoz',3768,3771,3,1),(3522,'Hoyos del Collado',3772,3775,3,1),(3523,'Hoyos del Espino',3776,3781,3,2),(3524,'Hoz de Jaca',18712,18715,3,1),(3525,'Hoz y Costean',18716,18721,3,2),(3526,'Huarte/Uharte',28556,28559,3,1),(3527,'Huecas',38672,38675,3,1),(3528,'Huécija',1952,1955,3,1),(3529,'Huélaga',9522,9525,3,1),(3530,'Huélago',15428,15431,3,1),(3531,'Huélamo',13298,13301,3,1),(3532,'Huelma',19606,19611,3,2),(3533,'Huelva',17922,17939,3,8),(3534,'Huelves',13302,13305,3,1),(3535,'Huéneja',15432,15435,3,1),(3536,'Huércal de Almería',1956,1959,3,1),(3537,'Huércal-Overa',1960,1977,3,8),(3538,'Huércanos',21330,21333,3,1),(3539,'Huérguina',13306,13309,3,1),(3540,'Huérmeces',7840,7845,3,2),(3541,'Huérmeces del Cerro',16484,16487,3,1),(3542,'Huerta',32882,32885,3,1),(3543,'Huerta de Arriba',7846,7849,3,1),(3544,'Huerta de la Obispalía',13310,13313,3,1),(3545,'Huerta de Rey',7850,7855,3,2),(3546,'Huerta de Valdecarábanos',38676,38679,3,1),(3547,'Huerta del Marquesado',13314,13317,3,1),(3548,'Huertahernando',16488,16491,3,1),(3549,'Huerto',18722,18727,3,2),(3550,'Huesa',19612,19615,3,1),(3551,'Huesa del Común',37770,37775,3,2),(3552,'Huesca',18728,18761,3,16),(3553,'Huéscar',15436,15439,3,1),(3554,'Huete',13318,13333,3,7),(3555,'Huétor de Santillán',15440,15445,3,2),(3556,'Huétor Tájar',15446,15449,3,1),(3557,'Huétor Vega',15450,15453,3,1),(3558,'Hueva',16492,16495,3,1),(3559,'Huévar del Aljarafe',35182,35185,3,1),(3560,'Humada',7856,7861,3,2),(3561,'Humanes',16496,16503,3,3),(3562,'Humanes de Madrid',26140,26143,3,1),(3563,'Humilladero',27078,27083,3,2),(3564,'Hurones',7862,7865,3,1),(3565,'Hurtumpascual',3782,3785,3,1),(3566,'Husillos',30628,30631,3,1),(3567,'Ibahernando',9526,9529,3,1),(3568,'Ibargoiti',28560,28565,3,2),(3569,'Ibarra',17490,17493,3,1),(3570,'Ibarrangelu',41768,41771,3,1),(3571,'Ibdes',43828,43831,3,1),(3572,'Ibeas de Juarros',7866,7873,3,3),(3573,'Ibi',1338,1341,3,1),(3574,'Ibias',2718,2725,3,3),(3575,'Ibieca',18762,18765,3,1),(3576,'Ibrillos',7874,7877,3,1),(3577,'Ibros',19616,19621,3,2),(3578,'Idiazabal',17494,17497,3,1),(3579,'Igantzi',28566,28569,3,1),(3580,'Igea',21334,21337,3,1),(3581,'Iglesiarrubia',7878,7883,3,2),(3582,'Iglesias',7884,7887,3,1),(3583,'Igorre',41772,41775,3,1),(3584,'Igriés',18766,18769,3,1),(3585,'Igualada',6264,6267,3,1),(3586,'Igualeja',27084,27087,3,1),(3587,'Igüeña',22230,22245,3,7),(3588,'Igúzquiza',28570,28575,3,2),(3589,'Ikaztegieta',17498,17501,3,1),(3590,'Ilche',18770,18773,3,1),(3591,'Illán de Vacas',38680,38683,3,1),(3592,'Illana',16504,16507,3,1),(3593,'Illano',2726,2733,3,3),(3594,'Íllar',1978,1981,3,1),(3595,'Illas',2734,2741,3,3),(3596,'Illescas',38684,38687,3,1),(3597,'Íllora',15454,15469,3,7),(3598,'Illueca',43832,43835,3,1),(3599,'Imotz',28576,28581,3,2),(3600,'Inca',5416,5419,3,1),(3601,'Iniesta',13334,13341,3,3),(3602,'Iniéstola',16508,16511,3,1),(3603,'Instinción',1982,1985,3,1),(3604,'Irañeta',28582,28585,3,1),(3605,'Irixoa',20398,20401,3,1),(3606,'Iruelos',32886,32889,3,1),(3607,'Irueste',16512,16515,3,1),(3608,'Irun',17502,17513,3,5),(3609,'Iruña Oka/Iruña de Oca',154,163,3,4),(3610,'Irura',17514,17517,3,1),(3611,'Iruraiz-Gauna',164,171,3,3),(3612,'Irurtzun',28586,28589,3,1),(3613,'Isaba/Izaba',28590,28593,3,1),(3614,'Isábena',18774,18781,3,3),(3615,'Isar',7888,7895,3,3),(3616,'Íscar',40790,40793,3,1),(3617,'Isla Cristina',17940,17951,3,5),(3618,'Isla Mayor',35186,35191,3,2),(3619,'Isona i Conca Dellà',23816,23831,3,7),(3620,'Isòvol',14278,14281,3,1),(3621,'Ispaster',41776,41779,3,1),(3622,'Istán',27088,27091,3,1),(3623,'Isuerre',43836,43839,3,1),(3624,'Itero de la Vega',30632,30635,3,1),(3625,'Itero del Castillo',7896,7899,3,1),(3626,'Ítrabo',15470,15473,3,1),(3627,'Itsasondo',17518,17521,3,1),(3628,'Ituero de Azaba',32890,32893,3,1),(3629,'Ituero y Lama',34344,34347,3,1),(3630,'Ituren',28594,28597,3,1),(3631,'Iturmendi',28598,28601,3,1),(3632,'Iurreta',41780,41783,3,1),(3633,'Ivars d\'Urgell',23832,23837,3,2),(3634,'Ivars de Noguera',23838,23841,3,1),(3635,'Ivorra',23842,23845,3,1),(3636,'Iza/Itza',28602,28613,3,5),(3637,'Izagaondoa',28614,28617,3,1),(3638,'Izagre',22246,22249,3,1),(3639,'Izalzu/Itzaltzu',28618,28621,3,1),(3640,'Iznájar',12622,12631,3,4),(3641,'Iznalloz',15474,15479,3,2),(3642,'Iznate',27092,27095,3,1),(3643,'Iznatoraf',19622,19625,3,1),(3644,'Izurtza',41784,41787,3,1),(3645,'Jabaloyas',37776,37781,3,2),(3646,'Jabalquinto',19626,19631,3,2),(3647,'Jabugo',17952,17957,3,2),(3648,'Jaca',18782,18809,3,13),(3649,'Jacarilla',1342,1345,3,1),(3650,'Jadraque',16516,16521,3,2),(3651,'Jaén',19632,19657,3,12),(3652,'Jafre',14282,14285,3,1),(3653,'Jalance',39880,39883,3,1),(3654,'Jalón de Cameros',21338,21341,3,1),(3655,'Jambrina',42452,42455,3,1),(3656,'Jamilena',19658,19661,3,1),(3657,'Jaraba',43840,43843,3,1),(3658,'Jaraco',39884,39887,3,1),(3659,'Jarafuel',39888,39891,3,1),(3660,'Jaraicejo',9530,9535,3,2),(3661,'Jaraíz de la Vera',9536,9539,3,1),(3662,'Jaramillo de la Fuente',7900,7903,3,1),(3663,'Jaramillo Quemado',7904,7907,3,1),(3664,'Jarandilla de la Vera',9540,9543,3,1),(3665,'Jarilla',9544,9547,3,1),(3666,'Jarque',43844,43847,3,1),(3667,'Jarque de la Val',37782,37785,3,1),(3668,'Jasa',18810,18813,3,1),(3669,'Játar',15480,15481,3,0),(3670,'Jatiel',37786,37789,3,1),(3671,'Játiva',39892,39897,3,2),(3672,'Jaulín',43848,43851,3,1),(3673,'Jaurrieta',28622,28625,3,1),(3674,'Jávea/Xàbia',1346,1355,3,4),(3675,'Javier',28626,28631,3,2),(3676,'Jayena',15482,15485,3,1),(3677,'Jeresa',39898,39901,3,1),(3678,'Jerez de la Frontera',10256,10293,3,18),(3679,'Jerez de los Caballeros',4776,4781,3,2),(3680,'Jerez del Marquesado',15486,15489,3,1),(3681,'Jérica',11492,11495,3,1),(3682,'Jerte',9548,9551,3,1),(3683,'Jete',15490,15493,3,1),(3684,'Jijona/Xixona',1356,1359,3,1),(3685,'Jimena',19662,19665,3,1),(3686,'Jimena de la Frontera',10294,10303,3,4),(3687,'Jimera de Líbar',27096,27099,3,1),(3688,'Jirueque',16522,16525,3,1),(3689,'Joarilla de las Matas',22250,22253,3,1),(3690,'Jódar',19666,19669,3,1),(3691,'Jorba',6268,6273,3,2),(3692,'Jorcas',37790,37793,3,1),(3693,'Jorquera',616,621,3,2),(3694,'Josa',37794,37797,3,1),(3695,'Josa i Tuixén',23846,23851,3,2),(3696,'Juarros de Riomoros',34348,34351,3,1),(3697,'Juarros de Voltoya',34352,34355,3,1),(3698,'Jubrique',27100,27103,3,1),(3699,'Juià',14286,14289,3,1),(3700,'Jumilla',27602,27611,3,4),(3701,'Jun',15494,15497,3,1),(3702,'Junciana',3786,3789,3,1),(3703,'Juncosa',23852,23855,3,1),(3704,'Juneda',23856,23859,3,1),(3705,'Junta de Traslaloma',7908,7913,3,2),(3706,'Junta de Villalba de Losa',7914,7917,3,1),(3707,'Jurisdicción de Lara',7918,7923,3,2),(3708,'Jurisdicción de San Zadornil',7924,7927,3,1),(3709,'Juslapeña',28632,28639,3,3),(3710,'Justel',42456,42461,3,2),(3711,'Juviles',15498,15501,3,1),(3712,'Juzbado',32894,32897,3,1),(3713,'Júzcar',27104,27107,3,1),(3714,'Karrantza Harana/Valle de Carranza',41788,41793,3,2),(3715,'Kortezubi',41794,41797,3,1),(3716,'Kripan',172,175,3,1),(3717,'Kuartango',176,181,3,2),(3718,'L\'Albagés',23860,23863,3,1),(3719,'L\'Albi',23864,23867,3,1),(3720,'L\'Albiol',36734,36737,3,1),(3721,'l\'Alcora',11496,11503,3,3),(3722,'L\'Aldea',36738,36741,3,1),(3723,'L\'Aleixar',36742,36745,3,1),(3724,'l\'Alfàs del Pi',1360,1365,3,2),(3725,'l\'Alqueria d\'Asnar',1366,1369,3,1),(3726,'L\'Ametlla de Mar',36746,36749,3,1),(3727,'L\'Ametlla del Vallès',6274,6277,3,1),(3728,'L\'Ampolla',36750,36753,3,1),(3729,'L\'Arboç',36754,36757,3,1),(3730,'L\'Argentera',36758,36761,3,1),(3731,'L\'Armentera',14290,14293,3,1),(3732,'l\'Atzúbia',1370,1373,3,1),(3733,'L\'Escala',14294,14297,3,1),(3734,'L\'Espluga Calba',23868,23871,3,1),(3735,'L\'Espluga de Francolí',36762,36765,3,1),(3736,'L\'Espunyola',6278,6281,3,1),(3737,'L\'Esquirol',6282,6287,3,2),(3738,'L\'Estany',6288,6293,3,2),(3739,'L\'Hospitalet de Llobregat',6294,6311,3,8),(3740,'La Acebeda',26144,26147,3,1),(3741,'La Adrada',3790,3793,3,1),(3742,'La Alameda de Gardón',32898,32901,3,1),(3743,'La Alamedilla',32902,32905,3,1),(3744,'La Alberca',32906,32909,3,1),(3745,'La Alberca de Záncara',13342,13345,3,1),(3746,'La Alberguería de Argañán',32910,32913,3,1),(3747,'La Albuera',4782,4785,3,1),(3748,'La Alcudia',39902,39905,3,1),(3749,'La Aldea del Obispo',9552,9555,3,1),(3750,'La Aldehuela',3794,3797,3,1),(3751,'La Algaba',35192,35197,3,2),(3752,'La Almarcha',13346,13349,3,1),(3753,'La Almolda',43852,43855,3,1),(3754,'La Almunia de Doña Godina',43856,43859,3,1),(3755,'La Antigua',22254,22257,3,1),(3756,'La Atalaya',32914,32917,3,1),(3757,'La Bañeza',22258,22265,3,3),(3758,'La Baronia de Rialb',23872,23875,3,1),(3759,'La Bastida',32918,32921,3,1),(3760,'La Bisbal d\'Empordà',14298,14301,3,1),(3761,'La Bisbal de Falset',36766,36769,3,1),(3762,'La Bisbal del Penedès',36770,36773,3,1),(3763,'La Bodera',16526,16529,3,1),(3764,'La Bouza',32922,32925,3,1),(3765,'La Bóveda de Toro',42462,42465,3,1),(3766,'La Cabeza de Béjar',32926,32929,3,1),(3767,'La Cabrera',26148,26151,3,1),(3768,'La Calahorra',15502,15505,3,1),(3769,'La Calzada de Béjar',32930,32933,3,1),(3770,'La Campana',35198,35201,3,1),(3771,'La Cañada de Verich',37798,37801,3,1),(3772,'La Canonja',36774,36779,3,2),(3773,'La Carlota',12632,12641,3,4),(3774,'La Carolina',19670,19677,3,3),(3775,'La Carrera',3798,3801,3,1),(3776,'La Cellera de Ter',14302,14307,3,2),(3777,'La Cerollera',37802,37805,3,1),(3778,'La Cierva',13350,13353,3,1),(3779,'La Codoñera',37806,37809,3,1),(3780,'La Codosera',4786,4789,3,1),(3781,'La Colilla',3802,3805,3,1),(3782,'La Coma i la Pedra',23876,23879,3,1),(3783,'La Coronada',4790,4793,3,1),(3784,'La Cuba',37810,37813,3,1),(3785,'La Cueva de Roa',7928,7931,3,1),(3786,'La Cumbre',9556,9559,3,1),(3787,'La Eliana',39906,39909,3,1),(3788,'La Encina',32934,32937,3,1),(3789,'La Ercina',22266,22275,3,4),(3790,'La Estrella',38688,38691,3,1),(3791,'La Fatarella',36780,36783,3,1),(3792,'La Febró',36784,36787,3,1),(3793,'La Figuera',36788,36791,3,1),(3794,'La Floresta',23880,23883,3,1),(3795,'La Fregeneda',32938,32941,3,1),(3796,'La Fresneda',37814,37817,3,1),(3797,'La Frontera',13354,13357,3,1),(3798,'La Fuente de San Esteban',32942,32953,3,5),(3799,'La Fueva',18814,18825,3,5),(3800,'La Fuliola',23884,23887,3,1),(3801,'La Galera',36792,36795,3,1),(3802,'La Gallega',7932,7935,3,1),(3803,'La Garganta',9560,9563,3,1),(3804,'La Garriga',6312,6315,3,1),(3805,'La Garrovilla',4794,4797,3,1),(3806,'La Ginebrosa',37818,37821,3,1),(3807,'La Gineta',622,625,3,1),(3808,'La Granada',6316,6319,3,1),(3809,'La Granada de Río-Tinto',17958,17961,3,1),(3810,'La Granadella',23888,23891,3,1),(3811,'La Granja',9564,9567,3,1),(3812,'La Granja d\'Escarp',23892,23895,3,1),(3813,'La Granja de la Costera',39910,39913,3,1),(3814,'La Granjuela',12642,12645,3,1),(3815,'La Guardia',38692,38695,3,1),(3816,'La Guardia de Jaén',19678,19681,3,1),(3817,'La Guingueta d\'Àneu',23896,23905,3,4),(3818,'La Haba',4798,4803,3,2),(3819,'La Herrera',626,629,3,1),(3820,'La Hija de Dios',3806,3809,3,1),(3821,'La Hiniesta',42466,42469,3,1),(3822,'La Hinojosa',13358,13361,3,1),(3823,'La Hiruela',26152,26155,3,1),(3824,'La Horcajada',3810,3815,3,2),(3825,'La Horra',7936,7939,3,1),(3826,'La Hoya',32954,32957,3,1),(3827,'La Hoz de la Vieja',37822,37825,3,1),(3828,'La Huerce',16530,16533,3,1),(3829,'La Iglesuela',38696,38699,3,1),(3830,'La Iglesuela del Cid',37826,37829,3,1),(3831,'La Iruela',19682,19687,3,2),(3832,'la Jana',11504,11507,3,1),(3833,'La Jonquera',14308,14313,3,2),(3834,'La Joyosa',43860,43863,3,1),(3835,'La Lapa',4804,4807,3,1),(3836,'La Lastrilla',34356,34359,3,1),(3837,'La Línea de la Concepción',10304,10307,3,1),(3838,'La Llacuna',6320,6323,3,1),(3839,'La Llagosta',6324,6327,3,1),(3840,'la Llosa',11508,11511,3,1),(3841,'la Llosa de Ranes',39914,39917,3,1),(3842,'La Losa',34360,34363,3,1),(3843,'La Losilla',35928,35931,3,1),(3844,'La Luisiana',35202,35207,3,2),(3845,'La Malahá',15506,15509,3,1),(3846,'La Masó',36796,36799,3,1),(3847,'La Mata',38700,38703,3,1),(3848,'La Mata de Ledesma',32958,32965,3,3),(3849,'La Mata de los Olmos',37830,37833,3,1),(3850,'la Mata de Morella',11512,11515,3,1),(3851,'La Matilla',34364,34367,3,1),(3852,'La Maya',32966,32969,3,1),(3853,'La Mierla',16534,16537,3,1),(3854,'La Miñosa',16538,16543,3,2),(3855,'La Mojonera',1986,1991,3,2),(3856,'La Molsosa',23906,23909,3,1),(3857,'La Morera',4808,4811,3,1),(3858,'La Morera de Montsant',36800,36805,3,2),(3859,'La Mudarra',40794,40797,3,1),(3860,'La Muela',43864,43869,3,2),(3861,'La Nava',17962,17965,3,1),(3862,'La Nava de Ricomalillo',38704,38707,3,1),(3863,'La Nava de Santiago',4812,4815,3,1),(3864,'La Nou de Berguedà',6328,6331,3,1),(3865,'La Nou de Gaià',36806,36809,3,1),(3866,'la Nucia',1374,1377,3,1),(3867,'La Olmeda de Jadraque',16544,16547,3,1),(3868,'La Orbada',32970,32975,3,2),(3869,'La Palma d\'Ebre',36810,36813,3,1),(3870,'La Palma de Cervelló',6332,6335,3,1),(3871,'La Palma del Condado',17966,17969,3,1),(3872,'La Parra',4816,4819,3,1),(3873,'La Parra de las Vegas',13362,13365,3,1),(3874,'La Parrilla',40798,40801,3,1),(3875,'La Pedraja de Portillo',40802,40805,3,1),(3876,'La Peña',32976,32979,3,1),(3877,'La Pera',14314,14317,3,1),(3878,'La Peraleja',13366,13369,3,1),(3879,'La Pernía',30636,30643,3,3),(3880,'La Pesga',9568,9571,3,1),(3881,'La Pesquera',13370,13373,3,1),(3882,'La Peza',15510,15515,3,2),(3883,'la Pobla de Benifassà',11516,11519,3,1),(3884,'La Pobla de Cérvoles',23910,23913,3,1),(3885,'La Pobla de Claramunt',6336,6339,3,1),(3886,'La Pobla de Lillet',6340,6343,3,1),(3887,'La Pobla de Mafumet',36814,36817,3,1),(3888,'La Pobla de Massaluca',36818,36821,3,1),(3889,'La Pobla de Montornès',36822,36825,3,1),(3890,'La Pobla de Segur',23914,23921,3,3),(3891,'la Pobla Tornesa',11520,11523,3,1),(3892,'La Pola de Gordón',22276,22293,3,8),(3893,'La Portella',23922,23925,3,1),(3894,'La Portellada',37834,37837,3,1),(3895,'La Póveda de Soria',35932,35935,3,1),(3896,'La Puebla de Alfindén',43870,43875,3,2),(3897,'La Puebla de Almoradiel',38708,38711,3,1),(3898,'La Puebla de Arganzón',7940,7943,3,1),(3899,'La Puebla de Castro',18826,18829,3,1),(3900,'La Puebla de Cazalla',35208,35211,3,1),(3901,'La Puebla de Híjar',37838,37843,3,2),(3902,'La Puebla de los Infantes',35212,35217,3,2),(3903,'La Puebla de Montalbán',38712,38717,3,2),(3904,'La Puebla de Valdavia',30644,30647,3,1),(3905,'La Puebla de Valverde',37844,37847,3,1),(3906,'La Puebla del Río',35218,35221,3,1),(3907,'La Pueblanueva',38718,38723,3,2),(3908,'La Puerta de Segura',19688,19693,3,2),(3909,'La Quar',6344,6347,3,1),(3910,'La Rambla',12646,12649,3,1),(3911,'La Recueja',630,633,3,1),(3912,'La Redonda',32980,32983,3,1),(3913,'La Revilla y Ahedo',7944,7947,3,1),(3914,'La Riba',36826,36829,3,1),(3915,'La Riba de Escalote',35936,35939,3,1),(3916,'La Riera de Gaià',36830,36833,3,1),(3917,'La Rinconada',35222,35227,3,2),(3918,'La Rinconada de la Sierra',32984,32987,3,1),(3919,'La Robla',22294,22301,3,3),(3920,'La Roca de la Sierra',4820,4823,3,1),(3921,'La Roca del Vallès',6348,6351,3,1),(3922,'La Roda',634,639,3,2),(3923,'La Roda de Andalucía',35228,35233,3,2),(3924,'la Romana',1378,1381,3,1),(3925,'La Sagrada',32988,32991,3,1),(3926,'la Salzadella',11524,11527,3,1),(3927,'La Seca',40806,40809,3,1),(3928,'La Secuita',36834,36839,3,2),(3929,'La Selva de Mar',14318,14321,3,1),(3930,'La Selva del Camp',36840,36843,3,1),(3931,'La Sénia',36844,36847,3,1),(3932,'La Sentiu de Sió',23926,23929,3,1),(3933,'La Sequera de Haza',7948,7951,3,1),(3934,'La Serna',30648,30651,3,1),(3935,'La Serna del Monte',26156,26159,3,1),(3936,'La Serrada',3816,3819,3,1),(3937,'la Serratella',11528,11531,3,1),(3938,'La Seu d\'Urgell',23930,23935,3,2),(3939,'La Sierpe',32992,32995,3,1),(3940,'La Solana',12100,12103,3,1),(3941,'La Sotonera',18830,18839,3,4),(3942,'La Taha',15516,15521,3,2),(3943,'La Tala',32996,32999,3,1),(3944,'La Tallada d\'Empordà',14322,14327,3,2),(3945,'La Toba',16548,16551,3,1),(3946,'La Torre',3820,3825,3,2),(3947,'la Torre d\'En Besora',11532,11535,3,1),(3948,'la Torre d\'en Doménec',11536,11539,3,1),(3949,'La Torre de Cabdella',23936,23947,3,5),(3950,'La Torre de Claramunt',6352,6355,3,1),(3951,'La Torre de Esteban Hambrán',38724,38727,3,1),(3952,'La Torre de Fontaubella',36848,36851,3,1),(3953,'La Torre de l\'Espanyol',36852,36855,3,1),(3954,'La Torre del Valle',42470,42473,3,1),(3955,'La Unión',27612,27621,3,4),(3956,'La Unión de Campos',40810,40813,3,1),(3957,'La Vajol',14328,14331,3,1),(3958,'la Vall d\'Alcalà',1382,1385,3,1),(3959,'la Vall d\'Ebo',1386,1389,3,1),(3960,'La Vall d\'en Bas',14332,14341,3,4),(3961,'la Vall d\'Uixó',11540,11543,3,1),(3962,'La Vall de Bianya',14342,14347,3,2),(3963,'La Vall de Boí',23948,23957,3,4),(3964,'la Vall de Laguar',1390,1393,3,1),(3965,'La Vansa i Fórnols',23958,23961,3,1),(3966,'La Vecilla',22302,22309,3,3),(3967,'La Vellés',33000,33003,3,1),(3968,'La Victoria',12650,12653,3,1),(3969,'La Vid de Bureba',7952,7955,3,1),(3970,'La Vid de Ojeda',30652,30655,3,1),(3971,'La Vid y Barrios',7956,7961,3,2),(3972,'La Vídola',33004,33007,3,1),(3973,'la Vilavella',11544,11547,3,1),(3974,'La Vilella Alta',36856,36859,3,1),(3975,'La Vilella Baixa',36860,36863,3,1),(3976,'La Villa de Don Fadrique',38728,38731,3,1),(3977,'La Vilueña',43876,43879,3,1),(3978,'La Yesa',39918,39921,3,1),(3979,'La Yunta',16552,16555,3,1),(3980,'La Zaida',43880,43883,3,1),(3981,'La Zarza',40814,40817,3,1),(3982,'La Zarza',4824,4825,3,0),(3983,'La Zarza de Pumareda',33008,33011,3,1),(3984,'La Zoma',37848,37851,3,1),(3985,'La Zubia',15522,15525,3,1),(3986,'Labajos',34368,34371,3,1),(3987,'Labastida/Bastida',182,189,3,3),(3988,'Labuerda',18840,18843,3,1),(3989,'Láchar',15526,15531,3,2),(3990,'Ladrillar',9572,9577,3,2),(3991,'Lagartera',38732,38735,3,1),(3992,'Lagartos',30656,30661,3,2),(3993,'Lagata',43884,43887,3,1),(3994,'Lagrán',190,195,3,2),(3995,'Laguardia',196,205,3,4),(3996,'Lagueruela',37852,37855,3,1),(3997,'Laguna Dalga',22310,22317,3,3),(3998,'Laguna de Cameros',21342,21345,3,1),(3999,'Laguna de Contreras',34372,34375,3,1),(4000,'Laguna de Duero',40818,40823,3,2),(4001,'Laguna de Negrillos',22318,22321,3,1),(4002,'Laguna del Marquesado',13374,13377,3,1),(4003,'Lagunaseca',13378,13381,3,1),(4004,'Lagunilla',33012,33015,3,1),(4005,'Lagunilla del Jubera',21346,21349,3,1),(4006,'Lahiguera',19694,19697,3,1),(4007,'Lakuntza',28640,28643,3,1),(4008,'Lalín',31558,31585,3,13),(4009,'Laluenga',18844,18847,3,1),(4010,'Lalueza',18848,18855,3,3),(4011,'Lamasón',10710,10713,3,1),(4012,'Lana',28644,28647,3,1),(4013,'Lanaja',18856,18863,3,3),(4014,'Láncara',25080,25103,3,11),(4015,'Lanciego/Lantziego',206,209,3,1),(4016,'Landete',13382,13387,3,2),(4017,'Lanestosa',41798,41801,3,1),(4018,'Langa',3826,3829,3,1),(4019,'Langa de Duero',35940,35947,3,3),(4020,'Langa del Castillo',43888,43891,3,1),(4021,'Langayo',40824,40827,3,1),(4022,'Langreo',2742,2759,3,8),(4023,'Languilla',34376,34379,3,1),(4024,'Lanjarón',15532,15535,3,1),(4025,'Lantadilla',30662,30665,3,1),(4026,'Lantarón',210,215,3,2),(4027,'Lanteira',15536,15539,3,1),(4028,'Lantejuela',35234,35237,3,1),(4029,'Lantz',28648,28651,3,1),(4030,'Lanzahíta',3830,3833,3,1),(4031,'Lanzuela',37856,37859,3,1),(4032,'Laperdiguera',18864,18867,3,1),(4033,'Lapoblación',28652,28655,3,1),(4034,'Lapuebla de Labarca',216,219,3,1),(4035,'Lardero',21350,21353,3,1),(4036,'Laredo',10714,10719,3,2),(4037,'Larouco',29646,29655,3,4),(4038,'Laroya',1992,1995,3,1),(4039,'Larrabetzu',41802,41805,3,1),(4040,'Larraga',28656,28659,3,1),(4041,'Larraona',28660,28663,3,1),(4042,'Larraul',17522,17525,3,1),(4043,'Larraun',28664,28673,3,4),(4044,'Larrodrigo',33016,33019,3,1),(4045,'Larva',19698,19701,3,1),(4046,'Las Aldehuelas',35948,35953,3,2),(4047,'Las Berlanas',3834,3837,3,1),(4048,'Las Cabezas de San Juan',35238,35243,3,2),(4049,'Las Casas del Conde',33020,33023,3,1),(4050,'Las Cuerlas',43892,43895,3,1),(4051,'Las Gabias',15540,15545,3,2),(4052,'Las Herencias',38736,38741,3,2),(4053,'Las Hormazas',7962,7967,3,2),(4054,'Las Inviernas',16556,16559,3,1),(4055,'Las Labores',12104,12107,3,1),(4056,'Las Majadas',13388,13391,3,1),(4057,'Las Mesas',13392,13395,3,1),(4058,'Las Navas de Jadraque',16560,16563,3,1),(4059,'Las Navas de la Concepción',35244,35247,3,1),(4060,'Las Navas del Marqués',3838,3843,3,2),(4061,'Las Omañas',22322,22325,3,1),(4062,'Las Parras de Castellote',37860,37863,3,1),(4063,'Las Pedroñeras',13396,13399,3,1),(4064,'Las Pedrosas',43896,43901,3,2),(4065,'Las Peñas de Riglos',18868,18881,3,6),(4066,'Las Quintanillas',7968,7971,3,1),(4067,'Las Regueras',2760,2769,3,4),(4068,'Las Rozas de Madrid',26160,26167,3,3),(4069,'Las Rozas de Valdearroyo',10720,10725,3,2),(4070,'Las Torres de Cotillas',27622,27625,3,1),(4071,'Las Tres Villas',1996,2001,3,2),(4072,'Las Valeras',13400,13405,3,2),(4073,'Las Veguillas',33024,33033,3,4),(4074,'Las Ventas con Peña Aguilera',38742,38745,3,1),(4075,'Las Ventas de Retamosa',38746,38749,3,1),(4076,'Las Ventas de San Julián',38750,38753,3,1),(4077,'Lasarte-Oria',17526,17529,3,1),(4078,'Lascellas-Ponzano',18882,18885,3,1),(4079,'Lascuarre',18886,18889,3,1),(4080,'Laspaúles',18890,18899,3,4),(4081,'Laspuña',18900,18903,3,1),(4082,'Lastras de Cuéllar',34380,34383,3,1),(4083,'Lastras del Pozo',34384,34387,3,1),(4084,'Laudio/Llodio',220,223,3,1),(4085,'Láujar de Andarax',2002,2005,3,1),(4086,'Laukiz',41806,41809,3,1),(4087,'Laviana',2770,2787,3,8),(4088,'Laxe',20402,20407,3,2),(4089,'Layana',43902,43905,3,1),(4090,'Layos',38754,38757,3,1),(4091,'Laza',29656,29665,3,4),(4092,'Lazagurría',28674,28677,3,1),(4093,'Lazkao',17530,17533,3,1),(4094,'Leaburu',17534,17537,3,1),(4095,'Leache/Leatxe',28678,28681,3,1),(4096,'Lebrija',35248,35251,3,1),(4097,'Lécera',43906,43909,3,1),(4098,'Lechón',43910,43913,3,1),(4099,'Leciñena',43914,43917,3,1),(4100,'Lecrín',15546,15553,3,3),(4101,'Ledaña',13406,13409,3,1),(4102,'Ledanca',16564,16567,3,1),(4103,'Ledesma',33034,33043,3,4),(4104,'Ledesma de la Cogolla',21354,21357,3,1),(4105,'Ledigos',30666,30669,3,1),(4106,'Ledrada',33044,33047,3,1),(4107,'Leganés',26168,26187,3,9),(4108,'Leganiel',13410,13413,3,1),(4109,'Legarda',28682,28685,3,1),(4110,'Legaria',28686,28689,3,1),(4111,'Legazpi',17538,17543,3,2),(4112,'Legorreta',17544,17547,3,1),(4113,'Legutio',224,231,3,3),(4114,'Leintz-Gatzaga',17548,17551,3,1),(4115,'Leioa',41810,41813,3,1),(4116,'Leiro',29666,29679,3,6),(4117,'Leitza',28690,28693,3,1),(4118,'Leiva',21358,21361,3,1),(4119,'Lekeitio',41814,41817,3,1),(4120,'Lekunberri',28694,28697,3,1),(4121,'Lemoa',41818,41821,3,1),(4122,'Lemoiz',41822,41825,3,1),(4123,'Lena',2788,2813,3,12),(4124,'Lentegí',15554,15557,3,1),(4125,'León',22326,22351,3,12),(4126,'Leoz/Leotz',28698,28703,3,2),(4127,'Lepe',17970,17977,3,3),(4128,'Lerga',28704,28707,3,1),(4129,'Lerín',28708,28711,3,1),(4130,'Lerma',7972,7983,3,5),(4131,'Les',23962,23965,3,1),(4132,'les Alqueries/Alquerías del Niño Perdido',11548,11551,3,1),(4133,'Les Avellanes i Santa Linya',23966,23971,3,2),(4134,'Les Borges Blanques',23972,23975,3,1),(4135,'Les Borges del Camp',36864,36867,3,1),(4136,'Les Cabanyes',6356,6359,3,1),(4137,'les Coves de Vinromà',11552,11555,3,1),(4138,'Les Franqueses del Vallès',6360,6365,3,2),(4139,'Les Llosses',14348,14355,3,3),(4140,'Les Masies de Roda',6366,6369,3,1),(4141,'Les Masies de Voltregà',6370,6375,3,2),(4142,'Les Oluges',23976,23979,3,1),(4143,'Les Piles',36868,36873,3,2),(4144,'Les Planes d\'Hostoles',14356,14361,3,2),(4145,'Les Preses',14362,14365,3,1),(4146,'Les Valls d\'Aguilar',23980,23985,3,2),(4147,'Les Valls de Valira',23986,23989,3,1),(4148,'Lesaka',28712,28717,3,2),(4149,'Letur',640,643,3,1),(4150,'Letux',43918,43921,3,1),(4151,'Leza',232,235,3,1),(4152,'Leza de Río Leza',21362,21365,3,1),(4153,'Lezama',41826,41829,3,1),(4154,'Lezáun',28718,28721,3,1),(4155,'Lezo',17552,17557,3,2),(4156,'Lezuza',644,649,3,2),(4157,'Librilla',27626,27629,3,1),(4158,'Libros',37864,37867,3,1),(4159,'Liceras',35954,35957,3,1),(4160,'Lidón',37868,37871,3,1),(4161,'Liédena',28722,28725,3,1),(4162,'Liendo',10726,10729,3,1),(4163,'Liérganes',10730,10737,3,3),(4164,'Liétor',650,657,3,3),(4165,'Líjar',2006,2009,3,1),(4166,'Lillo',38758,38761,3,1),(4167,'Limpias',10738,10743,3,2),(4168,'Linares',19702,19709,3,3),(4169,'Linares de la Sierra',17978,17981,3,1),(4170,'Linares de Mora',37872,37875,3,1),(4171,'Linares de Riofrío',33048,33051,3,1),(4172,'Linyola',23990,23993,3,1),(4173,'Liria',39922,39925,3,1),(4174,'Litago',43922,43925,3,1),(4175,'Lituénigo',43926,43929,3,1),(4176,'Lizartza',17558,17561,3,1),(4177,'Lizoáin-Arriasgoiti',28726,28735,3,4),(4178,'Lladó',14366,14369,3,1),(4179,'Lladorre',23994,24001,3,3),(4180,'Lladurs',24002,24007,3,2),(4181,'Llagostera',14370,14373,3,1),(4182,'Llamas de la Ribera',22352,22355,3,1),(4183,'Llambilles',14374,14377,3,1),(4184,'Llanars',14378,14381,3,1),(4185,'Llançà',14382,14385,3,1),(4186,'Llanera',2814,2835,3,10),(4187,'Llanera de Ranes',39926,39929,3,1),(4188,'Llanes',2836,2855,3,9),(4189,'Llano de Bureba',7984,7987,3,1),(4190,'Llano de Olmedo',40828,40831,3,1),(4191,'Llanos del Caudillo',12108,12111,3,1),(4192,'Llardecans',24008,24011,3,1),(4193,'Llaurí',39930,39933,3,1),(4194,'Llavorsí',24012,24017,3,2),(4195,'Lledó',37876,37879,3,1),(4196,'Lleida',24018,24059,3,20),(4197,'Llera',4826,4829,3,1),(4198,'Llerena',4830,4833,3,1),(4199,'Llers',14386,14389,3,1),(4200,'Lles de Cerdanya',24060,24063,3,1),(4201,'Llíber',1394,1397,3,1),(4202,'Lliçà d\'Amunt',6376,6379,3,1),(4203,'Lliçà de Vall',6380,6383,3,1),(4204,'Llimiana',24064,24069,3,2),(4205,'Llinars del Vallès',6384,6387,3,1),(4206,'Llívia',14390,14393,3,1),(4207,'Llobera',24070,24073,3,1),(4208,'Llombay',39934,39937,3,1),(4209,'Llorac',36874,36877,3,1),(4210,'Llorenç del Penedès',36878,36883,3,2),(4211,'Lloret de Mar',14394,14399,3,2),(4212,'Lloret de Vistalegre',5420,5423,3,1),(4213,'Lloseta',5424,5427,3,1),(4214,'Llubí',5428,5431,3,1),(4215,'Lluçà',6388,6391,3,1),(4216,'Llucena/Lucena del Cid',11556,11559,3,1),(4217,'Llucmajor',5432,5441,3,4),(4218,'Loarre',18904,18907,3,1),(4219,'Lobeira',29680,29693,3,6),(4220,'Lobera de Onsella',43930,43933,3,1),(4221,'Lobios',29694,29709,3,7),(4222,'Lobón',4834,4839,3,2),(4223,'Lobras',15558,15561,3,1),(4224,'Lodosa',28736,28739,3,1),(4225,'Loeches',26188,26191,3,1),(4226,'Logroño',21366,21385,3,9),(4227,'Logrosán',9578,9581,3,1),(4228,'Loiu',41830,41833,3,1),(4229,'Loja',15562,15573,3,5),(4230,'Loma de Ucieza',30670,30679,3,4),(4231,'Lomas',30680,30683,3,1),(4232,'Lominchar',38762,38765,3,1),(4233,'Lomoviejo',40832,40835,3,1),(4234,'Longares',43934,43937,3,1),(4235,'Longás',43938,43941,3,1),(4236,'Lónguida/Longida',28740,28747,3,3),(4237,'Lopera',19710,19713,3,1),(4238,'Loporzano',18908,18915,3,3),(4239,'Lora de Estepa',35252,35255,3,1),(4240,'Lora del Río',35256,35259,3,1),(4241,'Loranca de Tajuña',16568,16571,3,1),(4242,'Lorca',27630,27667,3,18),(4243,'Lorcha/l\'Orxa',1398,1401,3,1),(4244,'Loriguilla',39938,39941,3,1),(4245,'Lorquí',27668,27671,3,1),(4246,'Los Alcázares',27672,27675,3,1),(4247,'Los Altos',7988,7995,3,3),(4248,'Los Arcos',28748,28751,3,1),(4249,'Los Ausines',7996,8003,3,3),(4250,'Los Balbases',8004,8007,3,1),(4251,'Los Barrios',10308,10313,3,2),(4252,'Los Barrios de Bureba',8008,8013,3,2),(4253,'Los Barrios de Luna',22356,22361,3,2),(4254,'Los Blázquez',12654,12657,3,1),(4255,'Los Cerralbos',38766,38769,3,1),(4256,'Los Corrales',35260,35263,3,1),(4257,'Los Corrales de Buelna',10744,10751,3,3),(4258,'Los Cortijos',12112,12115,3,1),(4259,'Los Fayos',43942,43945,3,1),(4260,'Los Gallardos',2010,2017,3,3),(4261,'Los Guájares',15574,15577,3,1),(4262,'Los Hinojosos',13414,13417,3,1),(4263,'Los Huertos',34388,34391,3,1),(4264,'Los Llanos de Tormes',3844,3847,3,1),(4265,'Los Marines',17982,17985,3,1),(4266,'Los Molares',35264,35267,3,1),(4267,'Los Molinos',26192,26195,3,1),(4268,'Los Montesinos',1402,1405,3,1),(4269,'Los Navalmorales',38770,38773,3,1),(4270,'Los Navalucillos',38774,38781,3,3),(4271,'Los Olmos',37880,37883,3,1),(4272,'Los Palacios y Villafranca',35268,35275,3,3),(4273,'Los Pintanos',43946,43949,3,1),(4274,'Los Pozuelos de Calatrava',12116,12119,3,1),(4275,'Los Rábanos',35958,35963,3,2),(4276,'Los Santos',33052,33055,3,1),(4277,'Los Santos de la Humosa',26196,26199,3,1),(4278,'Los Santos de Maimona',4840,4843,3,1),(4279,'Los Tojos',10752,10757,3,2),(4280,'Los Valdecolmenas',13418,13421,3,1),(4281,'Los Villares',19714,19717,3,1),(4282,'Los Villares de Soria',35964,35969,3,2),(4283,'Los Yébenes',38782,38787,3,2),(4284,'Losa del Obispo',39942,39945,3,1),(4285,'Losacino',42474,42479,3,2),(4286,'Losacio',42480,42483,3,1),(4287,'Losar de la Vera',9582,9587,3,2),(4288,'Loscorrales',18916,18919,3,1),(4289,'Loscos',37884,37889,3,2),(4290,'Lourenzá',25104,25111,3,3),(4291,'Lousame',20408,20419,3,5),(4292,'Lozoya',26200,26203,3,1),(4293,'Lozoyuela-Navas-Sieteiglesias',26204,26211,3,3),(4294,'Lubián',42484,42491,3,3),(4295,'Lubrín',2018,2021,3,1),(4296,'Lucainena de las Torres',2022,2029,3,3),(4297,'Lúcar',2030,2035,3,2),(4298,'Lucena',12658,12671,3,6),(4299,'Lucena de Jalón',43950,43953,3,1),(4300,'Lucena del Puerto',17986,17989,3,1),(4301,'Luceni',43954,43957,3,1),(4302,'Luchente',39946,39949,3,1),(4303,'Luciana',12120,12123,3,1),(4304,'Lucillo',22362,22369,3,3),(4305,'Lucillos',38788,38791,3,1),(4306,'Ludiente',11560,11563,3,1),(4307,'Luelmo',42492,42495,3,1),(4308,'Luena',10758,10765,3,3),(4309,'Luesia',43958,43961,3,1),(4310,'Luesma',43962,43965,3,1),(4311,'Lugar Nuevo de Fenollet',39950,39953,3,1),(4312,'Lugar Nuevo de la Corona',39954,39957,3,1),(4313,'Lugar Nuevo de San Jerónimo',39958,39961,3,1),(4314,'Lugo',25112,25175,3,31),(4315,'Lugros',15578,15581,3,1),(4316,'Lújar',15582,15585,3,1),(4317,'Lumbier',28752,28755,3,1),(4318,'Lumbrales',33056,33059,3,1),(4319,'Lumbreras',21386,21389,3,1),(4320,'Lumpiaque',43966,43969,3,1),(4321,'Luna',43970,43975,3,2),(4322,'Lupiana',16572,16575,3,1),(4323,'Lupiñén-Ortilla',18920,18925,3,2),(4324,'Lupión',19718,19723,3,2),(4325,'Luque',12672,12679,3,3),(4326,'Luquin',28756,28759,3,1),(4327,'Luyego',22370,22375,3,2),(4328,'Luzaga',16576,16579,3,1),(4329,'Luzaide/Valcarlos',28760,28765,3,2),(4330,'Luzón',16580,16583,3,1),(4331,'Macael',2036,2039,3,1),(4332,'Maçanet de Cabrenys',14400,14405,3,2),(4333,'Maçanet de la Selva',14406,14409,3,1),(4334,'Macastre',39962,39965,3,1),(4335,'Maceda',29710,29725,3,7),(4336,'Machacón',33060,33063,3,1),(4337,'Macharaviaya',27108,27111,3,1),(4338,'Macotera',33064,33067,3,1),(4339,'Madarcos',26212,26215,3,1),(4340,'Maderuelo',34392,34395,3,1),(4341,'Madremanya',14410,14413,3,1),(4342,'Madrid',26216,26329,3,56),(4343,'Madridanos',42496,42499,3,1),(4344,'Madridejos',38792,38795,3,1),(4345,'Madrigal de la Vera',9588,9591,3,1),(4346,'Madrigal de las Altas Torres',3848,3851,3,1),(4347,'Madrigal del Monte',8014,8017,3,1),(4348,'Madrigalejo',9592,9595,3,1),(4349,'Madrigalejo del Monte',8018,8023,3,2),(4350,'Madrigueras',658,661,3,1),(4351,'Madroñal',33068,33071,3,1),(4352,'Madroñera',9596,9599,3,1),(4353,'Maella',43976,43979,3,1),(4354,'Maello',3852,3855,3,1),(4355,'Magacela',4844,4847,3,1),(4356,'Magallón',43980,43983,3,1),(4357,'Magán',38796,38799,3,1),(4358,'Magaña',35970,35973,3,1),(4359,'Magaz de Cepeda',22376,22381,3,2),(4360,'Magaz de Pisuerga',30684,30687,3,1),(4361,'Maguilla',4848,4851,3,1),(4362,'Mahamud',8024,8027,3,1),(4363,'Mahide',42500,42507,3,3),(4364,'Mahora',662,665,3,1),(4365,'Maià de Montcal',14414,14417,3,1),(4366,'Maials',24074,24077,3,1),(4367,'Maicas',37890,37893,3,1),(4368,'Mainar',43984,43987,3,1),(4369,'Maire de Castroponce',42508,42511,3,1),(4370,'Mairena del Alcor',35276,35279,3,1),(4371,'Mairena del Aljarafe',35280,35287,3,3),(4372,'Majadahonda',26330,26337,3,3),(4373,'Majadas',9600,9603,3,1),(4374,'Majaelrayo',16584,16587,3,1),(4375,'Maján',35974,35977,3,1),(4376,'Málaga',27112,27169,3,28),(4377,'Málaga del Fresno',16588,16591,3,1),(4378,'Malagón',12124,12133,3,4),(4379,'Malaguilla',16592,16595,3,1),(4380,'Malanquilla',43988,43991,3,1),(4381,'Malcocinado',4852,4855,3,1),(4382,'Maldà',24078,24081,3,1),(4383,'Maleján',43992,43995,3,1),(4384,'Malgrat de Mar',6392,6395,3,1),(4385,'Malla',6396,6399,3,1),(4386,'Mallabia',41834,41837,3,1),(4387,'Mallén',43996,43999,3,1),(4388,'Malón',44000,44003,3,1),(4389,'Malpartida',33072,33075,3,1),(4390,'Malpartida de Cáceres',9604,9609,3,2),(4391,'Malpartida de Corneja',3856,3859,3,1),(4392,'Malpartida de la Serena',4856,4859,3,1),(4393,'Malpartida de Plasencia',9610,9619,3,4),(4394,'Malpica de Bergantiños',20420,20427,3,3),(4395,'Malpica de Tajo',38800,38805,3,2),(4396,'Maluenda',44004,44007,3,1),(4397,'Malva',42512,42515,3,1),(4398,'Mamblas',3860,3863,3,1),(4399,'Mambrilla de Castrejón',8028,8031,3,1),(4400,'Mambrillas de Lara',8032,8037,3,2),(4401,'Mamolar',8038,8041,3,1),(4402,'Manacor',5442,5455,3,6),(4403,'Mañaria',41838,41841,3,1),(4404,'Mancera de Abajo',33076,33079,3,1),(4405,'Mancera de Arriba',3864,3867,3,1),(4406,'Mancha Real',19724,19729,3,2),(4407,'Manchita',4860,4863,3,1),(4408,'Manchones',44008,44011,3,1),(4409,'Manciles',8042,8045,3,1),(4410,'Mancor de la Vall',5456,5459,3,1),(4411,'Mandayona',16596,16599,3,1),(4412,'Mañeru',28766,28769,3,1),(4413,'Manganeses de la Lampreana',42516,42521,3,2),(4414,'Manganeses de la Polvorosa',42522,42525,3,1),(4415,'Manilva',27170,27175,3,2),(4416,'Manises',39966,39969,3,1),(4417,'Manjabálago y Ortigosa de Rioalmar',3868,3871,3,1),(4418,'Manjarrés',21390,21393,3,1),(4419,'Manlleu',6400,6403,3,1),(4420,'Mañón',20428,20433,3,2),(4421,'Manquillos',30688,30691,3,1),(4422,'Manresa',6404,6413,3,4),(4423,'Mansilla de la Sierra',21394,21397,3,1),(4424,'Mansilla de las Mulas',22382,22387,3,2),(4425,'Mansilla Mayor',22388,22391,3,1),(4426,'Mantiel',16600,16603,3,1),(4427,'Mantinos',30692,30695,3,1),(4428,'Manuel',39970,39973,3,1),(4429,'Manzanal de Arriba',42526,42531,3,2),(4430,'Manzanal de los Infantes',42532,42537,3,2),(4431,'Manzanal del Barco',42538,42541,3,1),(4432,'Manzanares',12134,12137,3,1),(4433,'Manzanares de Rioja',21398,21401,3,1),(4434,'Manzanares el Real',26338,26345,3,3),(4435,'Manzaneda',29726,29739,3,6),(4436,'Manzaneque',38806,38809,3,1),(4437,'Manzanera',37894,37901,3,3),(4438,'Manzanilla',17990,17993,3,1),(4439,'Manzanillo',40836,40839,3,1),(4440,'Maó-Mahón',5694,5707,3,6),(4441,'Maqueda',38810,38813,3,1),(4442,'Mara',44012,44015,3,1),(4443,'Maracena',15586,15589,3,1),(4444,'Maraña',22392,22395,3,1),(4445,'Maranchón',16604,16611,3,3),(4446,'Marañón',28770,28773,3,1),(4447,'Marazoleja',34396,34399,3,1),(4448,'Marazuela',34400,34403,3,1),(4449,'Marbella',27176,27189,3,6),(4450,'Marçà',36884,36889,3,2),(4451,'Marchagaz',9620,9623,3,1),(4452,'Marchal',15590,15593,3,1),(4453,'Marchamalo',16612,16615,3,1),(4454,'Marchena',35288,35291,3,1),(4455,'Marcilla',28774,28777,3,1),(4456,'Marcilla de Campos',30696,30699,3,1),(4457,'Margalef',36890,36893,3,1),(4458,'Marganell',6414,6417,3,1),(4459,'María',2040,2045,3,2),(4460,'María de Huerva',44016,44019,3,1),(4461,'Maria de la Salut',5460,5463,3,1),(4462,'Mariana',13422,13427,3,2),(4463,'Marín',31586,31601,3,7),(4464,'Marina de Cudeyo',10766,10775,3,4),(4465,'Marinaleda',35292,35295,3,1),(4466,'Marines',39974,39977,3,1),(4467,'Marjaliza',38814,38817,3,1),(4468,'Markina-Xemein',41842,41849,3,3),(4469,'Marlín',3872,3875,3,1),(4470,'Marmolejo',19730,19733,3,1),(4471,'Marracos',44020,44023,3,1),(4472,'Marratxí',5464,5467,3,1),(4473,'Marrupe',38818,38821,3,1),(4474,'Martiago',33080,33083,3,1),(4475,'Martiherrero',3876,3879,3,1),(4476,'Martín de la Jara',35296,35299,3,1),(4477,'Martín de Yeltes',33084,33089,3,2),(4478,'Martín del Río',37902,37907,3,2),(4479,'Martín Miguel',34404,34407,3,1),(4480,'Martín Muñoz de la Dehesa',34408,34411,3,1),(4481,'Martín Muñoz de las Posadas',34412,34415,3,1),(4482,'Martinamor',33090,33093,3,1),(4483,'Martínez',3880,3885,3,2),(4484,'Martorell',6418,6421,3,1),(4485,'Martorelles',6422,6425,3,1),(4486,'Martos',19734,19741,3,3),(4487,'Marugán',34416,34419,3,1),(4488,'Maruri-Jatabe',41850,41853,3,1),(4489,'Marzales',40840,40843,3,1),(4490,'Mas de Barberans',36894,36897,3,1),(4491,'Mas de las Matas',37908,37911,3,1),(4492,'Masalavés',39978,39981,3,1),(4493,'Masalfasar',39982,39985,3,1),(4494,'Masamagrell',39986,39989,3,1),(4495,'Masanasa',39990,39993,3,1),(4496,'Masarac',14418,14423,3,2),(4497,'Mascaraque',38822,38825,3,1),(4498,'Masdenverge',36898,36903,3,2),(4499,'Masegosa',13428,13431,3,1),(4500,'Masegoso',666,669,3,1),(4501,'Masegoso de Tajuña',16616,16619,3,1),(4502,'Maside',29740,29757,3,8),(4503,'Masllorenç',36904,36907,3,1),(4504,'Maspujols',36908,36911,3,1),(4505,'Masquefa',6426,6431,3,2),(4506,'Massalcoreig',24082,24085,3,1),(4507,'Massanes',14424,14427,3,1),(4508,'Massoteres',24086,24089,3,1),(4509,'Masueco',33094,33097,3,1),(4510,'Mata de Alcántara',9624,9627,3,1),(4511,'Mata de Cuéllar',34420,34423,3,1),(4512,'Matabuena',34424,34427,3,1),(4513,'Matadeón de los Oteros',22396,22399,3,1),(4514,'Matadepera',6432,6435,3,1),(4515,'Matalebreras',35978,35981,3,1),(4516,'Matallana de Torío',22400,22413,3,6),(4517,'Matamala de Almazán',35982,35985,3,1),(4518,'Matanza',22414,22417,3,1),(4519,'Matapozuelos',40844,40849,3,2),(4520,'Mataró',6436,6445,3,4),(4521,'Matarrubia',16620,16623,3,1),(4522,'Matet',11564,11567,3,1),(4523,'Matilla de Arzón',42542,42545,3,1),(4524,'Matilla de los Caños',40850,40853,3,1),(4525,'Matilla de los Caños del Río',33098,33103,3,2),(4526,'Matilla la Seca',42546,42549,3,1),(4527,'Matillas',16624,16627,3,1),(4528,'Matute',21402,21405,3,1),(4529,'Mayalde',42550,42553,3,1),(4530,'Mayorga',40854,40857,3,1),(4531,'Mazaleón',37912,37915,3,1),(4532,'Mazarambroz',38826,38831,3,2),(4533,'Mazarete',16628,16631,3,1),(4534,'Mazaricos',20434,20439,3,2),(4535,'Mazariegos',30700,30703,3,1),(4536,'Mazarrón',27676,27697,3,10),(4537,'Mazcuerras',10776,10781,3,2),(4538,'Mazuecos',16632,16635,3,1),(4539,'Mazuecos de Valdeginate',30704,30707,3,1),(4540,'Mazuela',8046,8049,3,1),(4541,'Meaño',31602,31611,3,4),(4542,'Mecerreyes',8050,8053,3,1),(4543,'Meco',26346,26349,3,1),(4544,'Medellín',4864,4867,3,1),(4545,'Mediana de Aragón',44024,44027,3,1),(4546,'Mediana de Voltoya',3886,3889,3,1),(4547,'Medina de las Torres',4868,4871,3,1),(4548,'Medina de Pomar',8054,8065,3,5),(4549,'Medina de Rioseco',40858,40863,3,2),(4550,'Medina del Campo',40864,40871,3,3),(4551,'Medina-Sidonia',10314,10319,3,2),(4552,'Medinaceli',35986,35995,3,4),(4553,'Medinilla',3890,3893,3,1),(4554,'Medio Cudeyo',10782,10793,3,5),(4555,'Mediona',6446,6449,3,1),(4556,'Medranda',16636,16639,3,1),(4557,'Medrano',21406,21409,3,1),(4558,'Megeces',40872,40875,3,1),(4559,'Megina',16640,16643,3,1),(4560,'Meira',25176,25183,3,3),(4561,'Meis',31612,31619,3,3),(4562,'Mejorada',38832,38837,3,2),(4563,'Mejorada del Campo',26350,26353,3,1),(4564,'Melgar de Abajo',40876,40879,3,1),(4565,'Melgar de Arriba',40880,40883,3,1),(4566,'Melgar de Fernamental',8066,8073,3,3),(4567,'Melgar de Tera',42554,42557,3,1),(4568,'Melgar de Yuso',30708,30711,3,1),(4569,'Meliana',39994,39997,3,1),(4570,'Mélida',28778,28781,3,1),(4571,'Melide',20440,20449,3,4),(4572,'Melilla',44894,44907,3,6),(4573,'Melón',29758,29763,3,2),(4574,'Melque de Cercos',34428,34431,3,1),(4575,'Membibre de la Hoz',34432,34435,3,1),(4576,'Membribe de la Sierra',33104,33107,3,1),(4577,'Membrilla',12138,12141,3,1),(4578,'Membrillera',16644,16647,3,1),(4579,'Membrío',9628,9631,3,1),(4580,'Meñaka',41854,41857,3,1),(4581,'Menàrguens',24090,24093,3,1),(4582,'Menasalbas',38838,38845,3,3),(4583,'Mendaro',17562,17565,3,1),(4584,'Mendata',41858,41861,3,1),(4585,'Mendavia',28782,28785,3,1),(4586,'Mendaza',28786,28791,3,2),(4587,'Mendexa',41862,41865,3,1),(4588,'Mendigorría',28792,28795,3,1),(4589,'Meneses de Campos',30712,30715,3,1),(4590,'Mengabril',4872,4875,3,1),(4591,'Mengamuñoz',3894,3897,3,1),(4592,'Mengíbar',19742,19745,3,1),(4593,'Méntrida',38846,38849,3,1),(4594,'Mequinenza',44028,44031,3,1),(4595,'Meranges',14428,14431,3,1),(4596,'Mérida',4876,4879,3,1),(4597,'Merindad de Cuesta-Urria',8074,8083,3,4),(4598,'Merindad de Montija',8084,8089,3,2),(4599,'Merindad de Río Ubierna',8090,8101,3,5),(4600,'Merindad de Sotoscueva',8102,8109,3,3),(4601,'Merindad de Valdeporres',8110,8117,3,3),(4602,'Merindad de Valdivielso',8118,8121,3,1),(4603,'Meruelo',10794,10797,3,1),(4604,'Mesas de Ibor',9632,9635,3,1),(4605,'Mesegar de Corneja',3898,3901,3,1),(4606,'Mesegar de Tajo',38850,38853,3,1),(4607,'Mesía',20450,20457,3,3),(4608,'Mesones de Isuela',44032,44035,3,1),(4609,'Mestanza',12142,12147,3,2),(4610,'Metauten',28796,28799,3,1),(4611,'Mezalocha',44036,44039,3,1),(4612,'Mezquita de Jarque',37916,37919,3,1),(4613,'Miajadas',9636,9641,3,2),(4614,'Mianos',44040,44043,3,1),(4615,'Micereces de Tera',42558,42561,3,1),(4616,'Micieces de Ojeda',30716,30719,3,1),(4617,'Miedes de Aragón',44044,44047,3,1),(4618,'Miedes de Atienza',16648,16651,3,1),(4619,'Miengo',10798,10805,3,3),(4620,'Miera',10806,10813,3,3),(4621,'Mieres',14432,14461,3,14),(4622,'Mieres',2856,2857,3,0),(4623,'Mieza',33108,33111,3,1),(4624,'Miguel Esteban',38854,38859,3,2),(4625,'Migueláñez',34436,34439,3,1),(4626,'Miguelturra',12148,12153,3,2),(4627,'Mijares',3902,3905,3,1),(4628,'Mijas',27190,27201,3,5),(4629,'Milagro',28800,28803,3,1),(4630,'Milagros',8122,8125,3,1),(4631,'Millana',16652,16655,3,1),(4632,'Millanes',9642,9645,3,1),(4633,'Millares',39998,40001,3,1),(4634,'Millena',1406,1409,3,1),(4635,'Milles de la Polvorosa',42562,42565,3,1),(4636,'Milmarcos',16656,16659,3,1),(4637,'Minas de Riotinto',17994,17999,3,2),(4638,'Minaya',670,673,3,1),(4639,'Minglanilla',13432,13435,3,1),(4640,'Mingorría',3906,3911,3,2),(4641,'Miño',20458,20467,3,4),(4642,'Miño de Medinaceli',35996,36001,3,2),(4643,'Miño de San Esteban',36002,36005,3,1),(4644,'Mira',13436,13439,3,1),(4645,'Mirabel',9646,9649,3,1),(4646,'Mirabueno',16660,16663,3,1),(4647,'Miraflores de la Sierra',26354,26357,3,1),(4648,'Mirafuentes',28804,28807,3,1),(4649,'Miralcamp',24094,24097,3,1),(4650,'Miralrío',16664,16667,3,1),(4651,'Miramar',40002,40005,3,1),(4652,'Mirambel',37920,37923,3,1),(4653,'Miranda de Arga',28808,28813,3,2),(4654,'Miranda de Azán',33112,33115,3,1),(4655,'Miranda de Ebro',8126,8139,3,6),(4656,'Miranda del Castañar',33116,33119,3,1),(4657,'Mirandilla',4880,4883,3,1),(4658,'Miraveche',8140,8143,3,1),(4659,'Miravet',36912,36915,3,1),(4660,'Miravete de la Sierra',37924,37927,3,1),(4661,'Mironcillo',3912,3915,3,1),(4662,'Mirueña de los Infanzones',3916,3919,3,1),(4663,'Mislata',40006,40009,3,1),(4664,'Moaña',31620,31633,3,6),(4665,'Mocejón',38860,38863,3,1),(4666,'Mochales',16668,16671,3,1),(4667,'Moclín',15594,15601,3,3),(4668,'Moclinejo',27202,27205,3,1),(4669,'Modúbar de la Emparedada',8144,8147,3,1),(4670,'Moeche',20468,20473,3,2),(4671,'Mogarraz',33120,33123,3,1),(4672,'Mogente',40010,40013,3,1),(4673,'Moguer',18000,18005,3,2),(4674,'Mohedas de Granadilla',9650,9653,3,1),(4675,'Mohedas de la Jara',38864,38869,3,2),(4676,'Mohernando',16672,16675,3,1),(4677,'Moià',6450,6453,3,1),(4678,'Mojácar',2046,2051,3,2),(4679,'Mojados',40884,40887,3,1),(4680,'Molacillos',42566,42569,3,1),(4681,'Molezuelas de la Carballeda',42570,42573,3,1),(4682,'Molina de Aragón',16676,16687,3,5),(4683,'Molina de Segura',27698,27709,3,5),(4684,'Molinaseca',22418,22423,3,2),(4685,'Molinicos',674,681,3,3),(4686,'Molinillo',33124,33127,3,1),(4687,'Molinos',37928,37931,3,1),(4688,'Molinos de Duero',36006,36011,3,2),(4689,'Molins de Rei',6454,6457,3,1),(4690,'Molledo',10814,10823,3,4),(4691,'Mollerussa',24098,24101,3,1),(4692,'Mollet de Peralada',14462,14465,3,1),(4693,'Mollet del Vallès',6458,6463,3,2),(4694,'Mollina',27206,27209,3,1),(4695,'Molló',14466,14469,3,1),(4696,'Molvízar',15602,15605,3,1),(4697,'Mombeltrán',3920,3925,3,2),(4698,'Momblona',36012,36015,3,1),(4699,'Mombuey',42574,42581,3,3),(4700,'Monachil',15606,15611,3,2),(4701,'Monasterio',16688,16691,3,1),(4702,'Monasterio de la Sierra',8148,8151,3,1),(4703,'Monasterio de Rodilla',8152,8155,3,1),(4704,'Monasterio de Vega',40888,40891,3,1),(4705,'Moncada',40014,40017,3,1),(4706,'Moncalvillo',8156,8159,3,1),(4707,'Moncofa',11568,11571,3,1),(4708,'Monda',27210,27213,3,1),(4709,'Mondariz',31634,31649,3,7),(4710,'Mondariz-Balneario',31650,31653,3,1),(4711,'Mondéjar',16692,16695,3,1),(4712,'Mondoñedo',25184,25199,3,7),(4713,'Monegrillo',44048,44051,3,1),(4714,'Monesma y Cajigar',18926,18929,3,1),(4715,'Monesterio',4884,4887,3,1),(4716,'Moneva',44052,44055,3,1),(4717,'Monfarracinos',42582,42585,3,1),(4718,'Monfero',20474,20483,3,4),(4719,'Monflorite-Lascasas',18930,18935,3,2),(4720,'Monforte de la Sierra',33128,33131,3,1),(4721,'Monforte de Lemos',25200,25231,3,15),(4722,'Monforte de Moyuela',37932,37935,3,1),(4723,'Monforte del Cid',1410,1415,3,2),(4724,'Monistrol de Calders',6464,6467,3,1),(4725,'Monistrol de Montserrat',6468,6471,3,1),(4726,'Monleón',33132,33135,3,1),(4727,'Monleras',33136,33139,3,1),(4728,'Monóvar/Monòver',1416,1421,3,2),(4729,'Monreal de Ariza',44056,44061,3,2),(4730,'Monreal del Campo',37936,37939,3,1),(4731,'Monreal del Llano',13440,13443,3,1),(4732,'Monreal/Elo',28814,28817,3,1),(4733,'Monroy',9654,9657,3,1),(4734,'Monroyo',37940,37943,3,1),(4735,'Monsagro',33140,33143,3,1),(4736,'Monsalupe',3926,3929,3,1),(4737,'Mont-ral',36916,36921,3,2),(4738,'Mont-ras',14470,14473,3,1),(4739,'Mont-roig del Camp',36922,36929,3,3),(4740,'Montagut i Oix',14474,14479,3,2),(4741,'Montalbán',37944,37949,3,2),(4742,'Montalbán de Córdoba',12680,12683,3,1),(4743,'Montalbanejo',13444,13447,3,1),(4744,'Montalbo',13448,13451,3,1),(4745,'Montalvos',682,685,3,1),(4746,'Montamarta',42586,42589,3,1),(4747,'Montán',11572,11575,3,1),(4748,'Montánchez',9658,9661,3,1),(4749,'Montanejos',11576,11579,3,1),(4750,'Montanuy',18936,18945,3,4),(4751,'Montarrón',16696,16699,3,1),(4752,'Montaverner',40018,40021,3,1),(4753,'Montblanc',36930,36941,3,5),(4754,'Montbrió del Camp',36942,36945,3,1),(4755,'Montcada i Reixac',6472,6475,3,1),(4756,'Montclar',6476,6479,3,1),(4757,'Monteagudo',28818,28821,3,1),(4758,'Monteagudo de las Salinas',13452,13455,3,1),(4759,'Monteagudo de las Vicarías',36016,36019,3,1),(4760,'Monteagudo del Castillo',37950,37953,3,1),(4761,'Montealegre de Campos',40892,40897,3,2),(4762,'Montealegre del Castillo',686,689,3,1),(4763,'Montearagón',38870,38873,3,1),(4764,'Montecorto',27214,27215,3,0),(4765,'Montederramo',29764,29773,3,4),(4766,'Montefrío',15612,15615,3,1),(4767,'Montehermoso',9662,9665,3,1),(4768,'Montejaque',27216,27219,3,1),(4769,'Montejícar',15616,15619,3,1),(4770,'Montejo',33144,33147,3,1),(4771,'Montejo de Arévalo',34440,34443,3,1),(4772,'Montejo de la Sierra',26358,26361,3,1),(4773,'Montejo de la Vega de la Serrezuela',34444,34447,3,1),(4774,'Montejo de Tiermes',36020,36033,3,6),(4775,'Montellà i Martinet',24102,24107,3,2),(4776,'Montellano',35300,35303,3,1),(4777,'Montemayor',12684,12689,3,2),(4778,'Montemayor de Pililla',40898,40901,3,1),(4779,'Montemayor del Río',33148,33151,3,1),(4780,'Montemolín',4888,4895,3,3),(4781,'Montenegro de Cameros',36034,36037,3,1),(4782,'Monterde',44062,44065,3,1),(4783,'Monterde de Albarracín',37954,37957,3,1),(4784,'Monterrei',29774,29781,3,3),(4785,'Monterroso',25232,25243,3,5),(4786,'Monterrubio',34448,34451,3,1),(4787,'Monterrubio de Armuña',33152,33155,3,1),(4788,'Monterrubio de la Demanda',8160,8163,3,1),(4789,'Monterrubio de la Serena',4896,4899,3,1),(4790,'Monterrubio de la Sierra',33156,33159,3,1),(4791,'Montesa',40022,40025,3,1),(4792,'Montesclaros',38874,38877,3,1),(4793,'Montesquiu',6480,6483,3,1),(4794,'Montferrer i Castellbò',24108,24115,3,3),(4795,'Montferri',36946,36949,3,1),(4796,'Montgai',24116,24121,3,2),(4797,'Montgat',6484,6487,3,1),(4798,'Montichelvo',40026,40029,3,1),(4799,'Montiel',12154,12157,3,1),(4800,'Montijo',4900,4907,3,3),(4801,'Montilla',12690,12693,3,1),(4802,'Montillana',15620,15623,3,1),(4803,'Montizón',19746,19753,3,3),(4804,'Montmajor',6488,6491,3,1),(4805,'Montmaneu',6492,6495,3,1),(4806,'Montmeló',6496,6499,3,1),(4807,'Montoliu de Lleida',24122,24125,3,1),(4808,'Montoliu de Segarra',24126,24129,3,1),(4809,'Montón',44066,44069,3,1),(4810,'Montorio',8164,8167,3,1),(4811,'Montornès de Segarra',24130,24133,3,1),(4812,'Montornès del Vallès',6500,6503,3,1),(4813,'Montoro',12694,12697,3,1),(4814,'Montroy',40030,40033,3,1),(4815,'Montseny',6504,6507,3,1),(4816,'Montserrat',40034,40037,3,1),(4817,'Montuïri',5468,5471,3,1),(4818,'Monturque',12698,12701,3,1),(4819,'Monzón',18946,18953,3,3),(4820,'Monzón de Campos',30720,30725,3,2),(4821,'Mora',38878,38881,3,1),(4822,'Móra d\'Ebre',36950,36953,3,1),(4823,'Mora de Rubielos',37958,37961,3,1),(4824,'Móra la Nova',36954,36957,3,1),(4825,'Moradillo de Roa',8168,8171,3,1),(4826,'Moral de Calatrava',12158,12161,3,1),(4827,'Moral de Hornuez',34452,34455,3,1),(4828,'Moral de la Reina',40902,40905,3,1),(4829,'Moral de Sayago',42590,42593,3,1),(4830,'Moraleda de Zafayona',15624,15627,3,1),(4831,'Moraleja',9666,9669,3,1),(4832,'Moraleja de Enmedio',26362,26365,3,1),(4833,'Moraleja de las Panaderas',40906,40909,3,1),(4834,'Moraleja de Matacabras',3930,3933,3,1),(4835,'Moraleja de Sayago',42594,42597,3,1),(4836,'Moraleja del Vino',42598,42601,3,1),(4837,'Morales de Campos',40910,40913,3,1),(4838,'Morales de Rey',42602,42605,3,1),(4839,'Morales de Toro',42606,42609,3,1),(4840,'Morales de Valverde',42610,42613,3,1),(4841,'Morales del Vino',42614,42619,3,2),(4842,'Moralina',42620,42623,3,1),(4843,'Moralzarzal',26366,26369,3,1),(4844,'Moraña',31654,31661,3,3),(4845,'Morasverdes',33160,33163,3,1),(4846,'Morata de Jalón',44070,44073,3,1),(4847,'Morata de Jiloca',44074,44077,3,1),(4848,'Morata de Tajuña',26370,26373,3,1),(4849,'Moratalla',27710,27729,3,9),(4850,'Moratilla de los Meleros',16700,16703,3,1),(4851,'Moratinos',30726,30729,3,1),(4852,'Morcillo',9670,9673,3,1),(4853,'Morcín',2858,2865,3,3),(4854,'Moreda de Álava/Moreda Araba',236,239,3,1),(4855,'Morelábor',15628,15631,3,1),(4856,'Morella',11580,11583,3,1),(4857,'Morenilla',16704,16707,3,1),(4858,'Morentin',28822,28825,3,1),(4859,'Moreruela de los Infanzones',42624,42627,3,1),(4860,'Moreruela de Tábara',42628,42631,3,1),(4861,'Morés',44078,44083,3,2),(4862,'Morga',41866,41869,3,1),(4863,'Moriles',12702,12705,3,1),(4864,'Morille',33164,33167,3,1),(4865,'Moríñigo',33168,33171,3,1),(4866,'Moriscos',33172,33175,3,1),(4867,'Morón de Almazán',36038,36043,3,2),(4868,'Morón de la Frontera',35304,35307,3,1),(4869,'Moronta',33176,33183,3,3),(4870,'Moros',44084,44087,3,1),(4871,'Mos',31662,31675,3,6),(4872,'Moscardón',37962,37965,3,1),(4873,'Mosqueruela',37966,37969,3,1),(4874,'Móstoles',26374,26393,3,9),(4875,'Mota de Altarejos',13456,13459,3,1),(4876,'Mota del Cuervo',13460,13463,3,1),(4877,'Mota del Marqués',40914,40917,3,1),(4878,'Motilla del Palancar',13464,13467,3,1),(4879,'Motilleja',690,693,3,1),(4880,'Motril',15632,15647,3,7),(4881,'Moya',13468,13469,3,0),(4882,'Moyuela',44088,44091,3,1),(4883,'Mozárbez',33184,33193,3,4),(4884,'Mozoncillo',34456,34459,3,1),(4885,'Mozota',44092,44095,3,1),(4886,'Mucientes',40918,40921,3,1),(4887,'Mudá',30730,30733,3,1),(4888,'Muduex',16708,16711,3,1),(4889,'Muel',44096,44101,3,2),(4890,'Muelas de los Caballeros',42632,42639,3,3),(4891,'Muelas del Pan',42640,42647,3,3),(4892,'Mues',28826,28829,3,1),(4893,'Muga de Sayago',42648,42651,3,1),(4894,'Mugardos',20484,20491,3,3),(4895,'Muíños',29782,29791,3,4),(4896,'Mula',27730,27739,3,4),(4897,'Muñana',3934,3937,3,1),(4898,'Mundaka',41870,41873,3,1),(4899,'Munébrega',44102,44105,3,1),(4900,'Munera',694,697,3,1),(4901,'Mungia',41874,41879,3,2),(4902,'Muñico',3938,3941,3,1),(4903,'Muniesa',37970,37973,3,1),(4904,'Munilla',21410,21413,3,1),(4905,'Munitibar-Arbatzegi Gerrikaitz',41880,41883,3,1),(4906,'Muñogalindo',3942,3945,3,1),(4907,'Muñogrande',3946,3951,3,2),(4908,'Muñomer del Peco',3952,3955,3,1),(4909,'Muñopedro',34460,34463,3,1),(4910,'Muñopepe',3956,3959,3,1),(4911,'Muñosancho',3960,3963,3,1),(4912,'Muñotello',3964,3967,3,1),(4913,'Muñoveros',34464,34467,3,1),(4914,'Muntanyola',6508,6513,3,2),(4915,'Mura',6514,6517,3,1),(4916,'Muras',25244,25253,3,4),(4917,'Murchante',28830,28833,3,1),(4918,'Murcia',27740,27863,3,61),(4919,'Murero',44106,44109,3,1),(4920,'Murias de Paredes',22424,22437,3,6),(4921,'Muriel',40922,40925,3,1),(4922,'Muriel de la Fuente',36044,36047,3,1),(4923,'Muriel Viejo',36048,36051,3,1),(4924,'Murieta',28834,28837,3,1),(4925,'Murillo de Gállego',44110,44115,3,2),(4926,'Murillo de Río Leza',21414,21417,3,1),(4927,'Murillo el Cuende',28838,28845,3,3),(4928,'Murillo el Fruto',28846,28849,3,1),(4929,'Murla',1422,1425,3,1),(4930,'Muro',5472,5477,3,2),(4931,'Muro de Aguas',21418,21421,3,1),(4932,'Muro de Alcoy',1426,1431,3,2),(4933,'Muro en Cameros',21422,21425,3,1),(4934,'Muros',20492,20505,3,6),(4935,'Muros de Nalón',2866,2871,3,2),(4936,'Murtas',15648,15653,3,2),(4937,'Murueta',41884,41887,3,1),(4938,'Muruzábal',28850,28853,3,1),(4939,'Museros',40038,40041,3,1),(4940,'Muskiz',41888,41891,3,1),(4941,'Mutiloa',17566,17569,3,1),(4942,'Mutriku',17570,17573,3,1),(4943,'Mutxamel',1432,1435,3,1),(4944,'Muxía',20506,20513,3,3),(4945,'Muxika',41892,41897,3,2),(4946,'Nabarniz',41898,41901,3,1),(4947,'Nacimiento',2052,2055,3,1),(4948,'Nafría de Ucero',36052,36055,3,1),(4949,'Nájera',21426,21431,3,2),(4950,'Nalda',21432,21437,3,2),(4951,'Nalec',24134,24137,3,1),(4952,'Nambroca',38882,38887,3,2),(4953,'Náquera',40042,40045,3,1),(4954,'Narboneta',13470,13473,3,1),(4955,'Narón',20514,20533,3,9),(4956,'Narrillos del Álamo',3968,3971,3,1),(4957,'Narrillos del Rebollar',3972,3975,3,1),(4958,'Narros',36056,36059,3,1),(4959,'Narros de Matalayegua',33194,33199,3,2),(4960,'Narros de Saldueña',3976,3979,3,1),(4961,'Narros del Castillo',3980,3983,3,1),(4962,'Narros del Puerto',3984,3987,3,1),(4963,'Naut Aran',24138,24145,3,3),(4964,'Nava',2872,2883,3,5),(4965,'Nava de Arévalo',3988,3991,3,1),(4966,'Nava de Béjar',33200,33203,3,1),(4967,'Nava de Francia',33204,33207,3,1),(4968,'Nava de la Asunción',34468,34473,3,2),(4969,'Nava de Roa',8172,8175,3,1),(4970,'Nava de Sotrobal',33208,33211,3,1),(4971,'Nava del Barco',3992,3995,3,1),(4972,'Nava del Rey',40926,40929,3,1),(4973,'Navacarros',33212,33215,3,1),(4974,'Navacepedilla de Corneja',3996,3999,3,1),(4975,'Navacerrada',26394,26397,3,1),(4976,'Navaconcejo',9674,9677,3,1),(4977,'Navadijos',4000,4003,3,1),(4978,'Navaescurial',4004,4007,3,1),(4979,'Navafría',34474,34477,3,1),(4980,'Navahermosa',38888,38893,3,2),(4981,'Navahondilla',4008,4011,3,1),(4982,'Navajas',11584,11587,3,1),(4983,'Navajún',21438,21441,3,1),(4984,'Naval',18954,18959,3,2),(4985,'Navalacruz',4012,4015,3,1),(4986,'Navalafuente',26398,26401,3,1),(4987,'Navalagamella',26402,26409,3,3),(4988,'Navalcán',38894,38897,3,1),(4989,'Navalcarnero',26410,26413,3,1),(4990,'Navaleno',36060,36063,3,1),(4991,'Navales',33216,33219,3,1),(4992,'Navalilla',34478,34481,3,1),(4993,'Navalmanzano',34482,34485,3,1),(4994,'Navalmoral',4016,4019,3,1),(4995,'Navalmoral de Béjar',33220,33223,3,1),(4996,'Navalmoral de la Mata',9678,9681,3,1),(4997,'Navalmoralejo',38898,38901,3,1),(4998,'Navalonguilla',4020,4023,3,1),(4999,'Navalosa',4024,4027,3,1),(5000,'Navalperal de Pinares',4028,4031,3,1),(5001,'Navalperal de Tormes',4032,4037,3,2),(5002,'Navalpino',12162,12165,3,1),(5003,'Navaluenga',4038,4041,3,1),(5004,'Navalvillar de Ibor',9682,9685,3,1),(5005,'Navalvillar de Pela',4908,4915,3,3),(5006,'Navamorales',33224,33227,3,1),(5007,'Navamorcuende',38902,38905,3,1),(5008,'Navaquesera',4042,4045,3,1),(5009,'Navarcles',6518,6521,3,1),(5010,'Navardún',44116,44121,3,2),(5011,'Navares de Ayuso',34486,34491,3,2),(5012,'Navares de Enmedio',34492,34495,3,1),(5013,'Navares de las Cuevas',34496,34499,3,1),(5014,'Navaridas',240,243,3,1),(5015,'Navarredonda de Gredos',4046,4049,3,1),(5016,'Navarredonda de la Rinconada',33228,33231,3,1),(5017,'Navarredonda y San Mamés',26414,26417,3,1),(5018,'Navarredondilla',4050,4053,3,1),(5019,'Navarrés',40046,40049,3,1),(5020,'Navarrete',21442,21445,3,1),(5021,'Navarrevisca',4054,4057,3,1),(5022,'Navàs',6522,6527,3,2),(5023,'Navas de Bureba',8176,8179,3,1),(5024,'Navas de Estena',12166,12169,3,1),(5025,'Navas de Jorquera',698,701,3,1),(5026,'Navas de Oro',34500,34503,3,1),(5027,'Navas de Riofrío',34504,34507,3,1),(5028,'Navas de San Antonio',34508,34511,3,1),(5029,'Navas de San Juan',19754,19757,3,1),(5030,'Navas del Madroño',9686,9689,3,1),(5031,'Navas del Rey',26418,26421,3,1),(5032,'Navascués/Nabaskoze',28854,28861,3,3),(5033,'Navasfrías',33232,33235,3,1),(5034,'Navata',14480,14483,3,1),(5035,'Navatalgordo',4058,4061,3,1),(5036,'Navatejares',4062,4065,3,1),(5037,'Navès',24146,24149,3,1),(5038,'Navezuelas',9690,9693,3,1),(5039,'Navia',2884,2893,3,4),(5040,'Navia de Suarna',25254,25275,3,10),(5041,'Navianos de Valverde',42652,42655,3,1),(5042,'Nazar',28862,28865,3,1),(5043,'Nebreda',8180,8183,3,1),(5044,'Neda',20534,20541,3,3),(5045,'Negredo',16712,16715,3,1),(5046,'Negreira',20542,20551,3,4),(5047,'Negrilla de Palencia',33236,33239,3,1),(5048,'Negueira de Muñiz',25276,25279,3,1),(5049,'Neila',8184,8187,3,1),(5050,'Neila de San Miguel',4066,4069,3,1),(5051,'Nepas',36064,36067,3,1),(5052,'Nerja',27220,27225,3,2),(5053,'Nerpio',702,717,3,7),(5054,'Nerva',18006,18009,3,1),(5055,'Nestares',21446,21449,3,1),(5056,'Nevada',15654,15659,3,2),(5057,'Niebla',18010,18013,3,1),(5058,'Nieva',34512,34515,3,1),(5059,'Nieva de Cameros',21450,21453,3,1),(5060,'Nigrán',31676,31689,3,6),(5061,'Nigüelas',15660,15663,3,1),(5062,'Nigüella',44122,44125,3,1),(5063,'Niharra',4070,4073,3,1),(5064,'Níjar',2056,2083,3,13),(5065,'Nívar',15664,15667,3,1),(5066,'Noáin (Valle de Elorz)/Noain (Elortzibar)',28866,28873,3,3),(5067,'Noalejo',19758,19761,3,1),(5068,'Noblejas',38906,38909,3,1),(5069,'Noceda del Bierzo',22438,22443,3,2),(5070,'Noez',38910,38913,3,1),(5071,'Nogal de las Huertas',30734,30737,3,1),(5072,'Nogales',4916,4919,3,1),(5073,'Nogueira de Ramuín',29792,29811,3,9),(5074,'Noguera de Albarracín',37974,37977,3,1),(5075,'Nogueras',37978,37981,3,1),(5076,'Nogueruelas',37982,37985,3,1),(5077,'Noia',20552,20563,3,5),(5078,'Noja',10824,10827,3,1),(5079,'Nolay',36068,36071,3,1),(5080,'Nombela',38914,38917,3,1),(5081,'Nombrevilla',44126,44129,3,1),(5082,'Nonaspe',44130,44133,3,1),(5083,'Noreña',2894,2897,3,1),(5084,'Novales',18960,18963,3,1),(5085,'Novallas',44134,44137,3,1),(5086,'Novelda',1436,1439,3,1),(5087,'Novelé',40050,40053,3,1),(5088,'Novés',38918,38921,3,1),(5089,'Noviercas',36072,36077,3,2),(5090,'Novillas',44138,44141,3,1),(5091,'Nueno',18964,18969,3,2),(5092,'Nueva Carteya',12706,12711,3,2),(5093,'Nueva Villa de las Torres',40930,40933,3,1),(5094,'Nuévalos',44142,44147,3,2),(5095,'Nuevo Baztán',26422,26425,3,1),(5096,'Nuez de Ebro',44148,44151,3,1),(5097,'Nules',11588,11593,3,2),(5098,'Nulles',36958,36961,3,1),(5099,'Numancia de la Sagra',38922,38925,3,1),(5100,'Nuño Gómez',38926,38929,3,1),(5101,'Nuñomoral',9694,9705,3,5),(5102,'O Barco de Valdeorras',29812,29825,3,6),(5103,'O Bolo',29826,29837,3,5),(5104,'O Carballiño',29838,29855,3,8),(5105,'O Corgo',25280,25293,3,6),(5106,'O Grove',31690,31699,3,4),(5107,'O Incio',25294,25307,3,6),(5108,'O Irixo',29856,29871,3,7),(5109,'O Páramo',25308,25319,3,5),(5110,'O Pereiro de Aguiar',29872,29881,3,4),(5111,'O Pino',20564,20575,3,5),(5112,'O Porriño',31700,31717,3,8),(5113,'O Rosal',31718,31725,3,3),(5114,'O Saviñao',25320,25341,3,10),(5115,'O Valadouro',25342,25353,3,5),(5116,'O Vicedo',25354,25361,3,3),(5117,'Obanos',28874,28877,3,1),(5118,'Obejo',12712,12719,3,3),(5119,'Obón',37986,37989,3,1),(5120,'Ocaña',38930,38933,3,1),(5121,'Ocentejo',16716,16719,3,1),(5122,'Ochagavía/Otsagabia',28878,28881,3,1),(5123,'Ochánduri',21454,21457,3,1),(5124,'Oco',28882,28885,3,1),(5125,'Ocón',21458,21467,3,4),(5126,'Odèn',24150,24155,3,2),(5127,'Òdena',6528,6531,3,1),(5128,'Odieta',28886,28891,3,2),(5129,'Odón',37990,37993,3,1),(5130,'Oencia',22444,22453,3,4),(5131,'Ogassa',14484,14487,3,1),(5132,'Ogíjares',15668,15671,3,1),(5133,'Ohanes',2084,2087,3,1),(5134,'Oia',31726,31733,3,3),(5135,'Oiartzun',17574,17577,3,1),(5136,'Oímbra',29882,29887,3,2),(5137,'Oiz',28892,28895,3,1),(5138,'Ojacastro',21468,21471,3,1),(5139,'Ojén',27226,27231,3,2),(5140,'Ojós',27864,27867,3,1),(5141,'Ojos Negros',37994,37999,3,2),(5142,'Ojos-Albos',4074,4077,3,1),(5143,'Okondo',244,247,3,1),(5144,'Olaberria',17578,17581,3,1),(5145,'Olaibar',28896,28899,3,1),(5146,'Olazti/Olazagutía',28900,28903,3,1),(5147,'Olba',38000,38005,3,2),(5148,'Olea de Boedo',30738,30741,3,1),(5149,'Oleiros',20576,20591,3,7),(5150,'Olejua',28904,28907,3,1),(5151,'Olèrdola',6532,6537,3,2),(5152,'Olesa de Bonesvalls',6538,6541,3,1),(5153,'Olesa de Montserrat',6542,6545,3,1),(5154,'Oliana',24156,24159,3,1),(5155,'Olías del Rey',38934,38937,3,1),(5156,'Oliete',38006,38009,3,1),(5157,'Oliola',24160,24167,3,3),(5158,'Olite/Erriberri',28908,28911,3,1),(5159,'Olius',24168,24175,3,3),(5160,'Oliva',40054,40059,3,2),(5161,'Oliva de la Frontera',4920,4923,3,1),(5162,'Oliva de Mérida',4924,4927,3,1),(5163,'Oliva de Plasencia',9706,9711,3,2),(5164,'Olivares',35308,35311,3,1),(5165,'Olivares de Duero',40934,40937,3,1),(5166,'Olivares de Júcar',13474,13477,3,1),(5167,'Olivella',6546,6549,3,1),(5168,'Olivenza',4928,4939,3,5),(5169,'Ollauri',21472,21475,3,1),(5170,'Ollería',40060,40063,3,1),(5171,'Olmeda de Cobeta',16720,16725,3,2),(5172,'Olmeda de la Cuesta',13478,13481,3,1),(5173,'Olmeda de las Fuentes',26426,26429,3,1),(5174,'Olmeda del Rey',13482,13485,3,1),(5175,'Olmedilla de Alarcón',13486,13489,3,1),(5176,'Olmedilla de Eliz',13490,13493,3,1),(5177,'Olmedillo de Roa',8188,8191,3,1),(5178,'Olmedo',40938,40943,3,2),(5179,'Olmedo de Camaces',33240,33245,3,2),(5180,'Olmillos de Castro',42656,42663,3,3),(5181,'Olmillos de Muñó',8192,8195,3,1),(5182,'Olmos de Esgueva',40944,40947,3,1),(5183,'Olmos de Ojeda',30742,30749,3,3),(5184,'Olmos de Peñafiel',40948,40951,3,1),(5185,'Olocau',40064,40067,3,1),(5186,'Olocau del Rey',11594,11597,3,1),(5187,'Olombrada',34516,34521,3,2),(5188,'Olóriz/Oloritz',28912,28917,3,2),(5189,'Olost',6550,6553,3,1),(5190,'Olot',14488,14495,3,3),(5191,'Olula de Castro',2088,2091,3,1),(5192,'Olula del Río',2092,2095,3,1),(5193,'Olvan',6554,6559,3,2),(5194,'Ólvega',36078,36083,3,2),(5195,'Olvena',18970,18973,3,1),(5196,'Olvera',10320,10323,3,1),(5197,'Olvés',44152,44155,3,1),(5198,'Oña',8196,8211,3,7),(5199,'Oñati',17582,17591,3,4),(5200,'Oncala',36084,36087,3,1),(5201,'Onda',11598,11603,3,2),(5202,'Ondara',1440,1443,3,1),(5203,'Ondarroa',41902,41905,3,1),(5204,'Onil',1444,1447,3,1),(5205,'Onís',2898,2901,3,1),(5206,'Onteniente',40068,40071,3,1),(5207,'Ontígola',38938,38941,3,1),(5208,'Ontiñena',18974,18977,3,1),(5209,'Ontur',718,721,3,1),(5210,'Onzonilla',22454,22463,3,4),(5211,'Oquillas',8212,8215,3,1),(5212,'Orba',1448,1457,3,4),(5213,'Orbaizeta',28918,28921,3,1),(5214,'Orbaneja Riopico',8216,8219,3,1),(5215,'Orbara',28922,28925,3,1),(5216,'Orbita',4078,4081,3,1),(5217,'Orcajo',44156,44159,3,1),(5218,'Orce',15672,15675,3,1),(5219,'Orcera',19762,19765,3,1),(5220,'Ordes',20592,20603,3,5),(5221,'Ordis',14496,14499,3,1),(5222,'Ordizia',17592,17595,3,1),(5223,'Orea',16726,16729,3,1),(5224,'Orejana',34522,34525,3,1),(5225,'Orellana de la Sierra',4940,4943,3,1),(5226,'Orellana la Vieja',4944,4947,3,1),(5227,'Orendain',17596,17599,3,1),(5228,'Orera',44160,44163,3,1),(5229,'Orés',44164,44167,3,1),(5230,'Orexa',17600,17603,3,1),(5231,'Organyà',24176,24179,3,1),(5232,'Orgaz',38942,38947,3,2),(5233,'Órgiva',15676,15685,3,4),(5234,'Oria',2096,2107,3,5),(5235,'Orihuela',1458,1485,3,13),(5236,'Orihuela del Tremedal',38010,38013,3,1),(5237,'Orio',17604,17607,3,1),(5238,'Orís',6560,6563,3,1),(5239,'Orísoain',28926,28929,3,1),(5240,'Oristà',6564,6567,3,1),(5241,'Orkoien',28930,28933,3,1),(5242,'Ormaiztegi',17608,17611,3,1),(5243,'Oronz/Orontze',28934,28937,3,1),(5244,'Oropesa',38948,38955,3,3),(5245,'Oropesa del Mar/Orpesa',11604,11607,3,1),(5246,'Oroso',20604,20611,3,3),(5247,'Oroz-Betelu/Orotz-Betelu',28938,28941,3,1),(5248,'Orozko',41906,41911,3,2),(5249,'Orpí',6568,6571,3,1),(5250,'Orreaga/Roncesvalles',28942,28945,3,1),(5251,'Orrios',38014,38017,3,1),(5252,'Òrrius',6572,6575,3,1),(5253,'Ortigosa de Cameros',21476,21479,3,1),(5254,'Ortigosa de Pestaño',34526,34529,3,1),(5255,'Ortigosa del Monte',34530,34533,3,1),(5256,'Ortigueira',20612,20629,3,8),(5257,'Ortuella',41912,41915,3,1),(5258,'Orusco de Tajuña',26430,26433,3,1),(5259,'Orxeta',1486,1489,3,1),(5260,'Os Blancos',29888,29893,3,2),(5261,'Os de Balaguer',24180,24189,3,4),(5262,'Osa de la Vega',13494,13497,3,1),(5263,'Oseja',44168,44171,3,1),(5264,'Oseja de Sajambre',22464,22467,3,1),(5265,'Osera de Ebro',44172,44175,3,1),(5266,'Osor',14500,14503,3,1),(5267,'Osornillo',30750,30753,3,1),(5268,'Osorno la Mayor',30754,30759,3,2),(5269,'Ossa de Montiel',722,725,3,1),(5270,'Osso de Cinca',18978,18983,3,2),(5271,'Ossó de Sió',24190,24193,3,1),(5272,'Osuna',35312,35315,3,1),(5273,'Oteiza',28946,28949,3,1),(5274,'Otero',38956,38959,3,1),(5275,'Otero de Bodas',42664,42669,3,2),(5276,'Otero de Herreros',34534,34537,3,1),(5277,'Otívar',15686,15689,3,1),(5278,'Otos',40072,40075,3,1),(5279,'Otxandio',41916,41919,3,1),(5280,'Ourense',29894,29927,3,16),(5281,'Ourol',25362,25369,3,3),(5282,'Outeiro de Rei',25370,25389,3,9),(5283,'Outes',20630,20645,3,7),(5284,'Oviedo',2902,2971,3,34),(5285,'Oyón-Oion',248,253,3,2),(5286,'Oza-Cesuras',20646,20661,3,7),(5287,'Pacs del Penedès',6576,6579,3,1),(5288,'Paderne',20662,20667,3,2),(5289,'Paderne de Allariz',29928,29935,3,3),(5290,'Padiernos',4082,4085,3,1),(5291,'Padilla de Abajo',8220,8223,3,1),(5292,'Padilla de Arriba',8224,8227,3,1),(5293,'Padrenda',29936,29949,3,6),(5294,'Padrón',20668,20681,3,6),(5295,'Padrones de Bureba',8228,8231,3,1),(5296,'Padul',15690,15693,3,1),(5297,'Padules',2108,2111,3,1),(5298,'Paiporta',40076,40079,3,1),(5299,'Pajarejos',34538,34541,3,1),(5300,'Pajares de Adaja',4086,4089,3,1),(5301,'Pajares de la Laguna',33246,33251,3,2),(5302,'Pajares de la Lampreana',42670,42673,3,1),(5303,'Pajares de los Oteros',22468,22477,3,4),(5304,'Pajarón',13498,13501,3,1),(5305,'Pajaroncillo',13502,13505,3,1),(5306,'Palacios de Goda',4090,4093,3,1),(5307,'Palacios de la Sierra',8232,8235,3,1),(5308,'Palacios de la Valduerna',22478,22483,3,2),(5309,'Palacios de Riopisuerga',8236,8239,3,1),(5310,'Palacios de Sanabria',42674,42681,3,3),(5311,'Palacios del Arzobispo',33252,33255,3,1),(5312,'Palacios del Pan',42682,42685,3,1),(5313,'Palacios del Sil',22484,22497,3,6),(5314,'Palaciosrubios',33256,33259,3,1),(5315,'Palafolls',6580,6583,3,1),(5316,'Palafrugell',14504,14517,3,6),(5317,'Palamós',14518,14523,3,2),(5318,'Palanques',11608,11611,3,1),(5319,'Palas de Rei',25390,25411,3,10),(5320,'Palau de Santa Eulàlia',14524,14527,3,1),(5321,'Palau-sator',14528,14531,3,1),(5322,'Palau-saverdera',14532,14535,3,1),(5323,'Palau-solità i Plegamans',6584,6587,3,1),(5324,'Palazuelo de Vedija',40952,40955,3,1),(5325,'Palazuelos de Eresma',34542,34545,3,1),(5326,'Palazuelos de la Sierra',8240,8243,3,1),(5327,'Palazuelos de Muñó',8244,8247,3,1),(5328,'Palencia',30760,30775,3,7),(5329,'Palencia de Negrilla',33260,33263,3,1),(5330,'Palenciana',12720,12723,3,1),(5331,'Palenzuela',30776,30779,3,1),(5332,'Pallejà',6588,6593,3,2),(5333,'Palma',5478,5523,3,22),(5334,'Palma de Gandía',40080,40083,3,1),(5335,'Palma del Río',12724,12733,3,4),(5336,'Pálmaces de Jadraque',16730,16733,3,1),(5337,'Palmera',40084,40087,3,1),(5338,'Palo',18984,18987,3,1),(5339,'Palol de Revardit',14536,14539,3,1),(5340,'Palomar de Arroyos',38018,38021,3,1),(5341,'Palomares del Campo',13506,13509,3,1),(5342,'Palomares del Río',35316,35319,3,1),(5343,'Palomas',4948,4951,3,1),(5344,'Palomeque',38960,38963,3,1),(5345,'Palomera',13510,13513,3,1),(5346,'Palomero',9712,9715,3,1),(5347,'Palos de la Frontera',18014,18023,3,4),(5348,'Pals',14540,14543,3,1),(5349,'Pampaneira',15694,15697,3,1),(5350,'Pampliega',8248,8255,3,3),(5351,'Pamplona/Iruña',28950,28981,3,15),(5352,'Pancorbo',8256,8259,3,1),(5353,'Pancrudo',38022,38027,3,2),(5354,'Paniza',44176,44179,3,1),(5355,'Panticosa',18988,18995,3,3),(5356,'Pantoja',38964,38967,3,1),(5357,'Pantón',25412,25433,3,10),(5358,'Papatrigo',4094,4097,3,1),(5359,'Paracuellos',13514,13519,3,2),(5360,'Paracuellos de Jarama',26434,26441,3,3),(5361,'Paracuellos de Jiloca',44180,44183,3,1),(5362,'Paracuellos de la Ribera',44184,44187,3,1),(5363,'Parada de Arriba',33264,33269,3,2),(5364,'Parada de Rubiales',33270,33273,3,1),(5365,'Parada de Sil',29950,29965,3,7),(5366,'Paradas',35320,35323,3,1),(5367,'Paradela',25434,25439,3,2),(5368,'Paradinas de San Juan',33274,33277,3,1),(5369,'Páramo de Boedo',30780,30783,3,1),(5370,'Páramo del Sil',22498,22511,3,6),(5371,'Parauta',27232,27235,3,1),(5372,'Parcent',1490,1493,3,1),(5373,'Pardilla',8260,8263,3,1),(5374,'Pardines',14544,14547,3,1),(5375,'Pardos',16734,16737,3,1),(5376,'Paredes',13520,13523,3,1),(5377,'Paredes de Escalona',38968,38971,3,1),(5378,'Paredes de Nava',30784,30787,3,1),(5379,'Paredes de Sigüenza',16738,16743,3,2),(5380,'Pareja',16744,16751,3,3),(5381,'Parets del Vallès',6594,6597,3,1),(5382,'Parla',26442,26453,3,5),(5383,'Parlavà',14548,14551,3,1),(5384,'Parres',2972,2991,3,9),(5385,'Parrillas',38972,38975,3,1),(5386,'Partaloa',2112,2115,3,1),(5387,'Partido de la Sierra en Tobalina',8264,8267,3,1),(5388,'Pasaia',17612,17615,3,1),(5389,'Pasarón de la Vera',9716,9719,3,1),(5390,'Pascualcobo',4098,4101,3,1),(5391,'Passanant i Belltall',36962,36967,3,2),(5392,'Pastores',33278,33281,3,1),(5393,'Pastrana',16752,16755,3,1),(5394,'Pastriz',44188,44191,3,1),(5395,'Paterna',40088,40097,3,4),(5396,'Paterna de Rivera',10324,10327,3,1),(5397,'Paterna del Campo',18024,18029,3,2),(5398,'Paterna del Madera',726,735,3,4),(5399,'Paterna del Río',2116,2121,3,2),(5400,'Patones',26454,26457,3,1),(5401,'Pau',14552,14555,3,1),(5402,'Paüls',36968,36971,3,1),(5403,'Pavías',11612,11615,3,1),(5404,'Paymogo',18030,18033,3,1),(5405,'Payo de Ojeda',30788,30791,3,1),(5406,'Pazos de Borbén',31734,31747,3,6),(5407,'Pazuengos',21480,21483,3,1),(5408,'Peal de Becerro',19766,19773,3,3),(5409,'Pechina',2122,2127,3,2),(5410,'Pedrafita do Cebreiro',25440,25449,3,4),(5411,'Pedrajas de San Esteban',40956,40959,3,1),(5412,'Pedralba',40098,40101,3,1),(5413,'Pedralba de la Pradería',42686,42691,3,2),(5414,'Pedraza',34546,34551,3,2),(5415,'Pedraza de Alba',33282,33285,3,1),(5416,'Pedraza de Campos',30792,30795,3,1),(5417,'Pedreguer',1494,1497,3,1),(5418,'Pedrera',35324,35327,3,1),(5419,'Pedret i Marzà',14556,14559,3,1),(5420,'Pedrezuela',26458,26461,3,1),(5421,'Pedro Abad',12734,12737,3,1),(5422,'Pedro Bernardo',4102,4105,3,1),(5423,'Pedro Martínez',15698,15701,3,1),(5424,'Pedro Muñoz',12170,12173,3,1),(5425,'Pedro-Rodríguez',4106,4109,3,1),(5426,'Pedroche',12738,12741,3,1),(5427,'Pedrola',44192,44195,3,1),(5428,'Pedrosa de Duero',8268,8273,3,2),(5429,'Pedrosa de la Vega',30796,30801,3,2),(5430,'Pedrosa de Río Úrbel',8274,8277,3,1),(5431,'Pedrosa del Páramo',8278,8281,3,1),(5432,'Pedrosa del Príncipe',8282,8285,3,1),(5433,'Pedrosa del Rey',40960,40963,3,1),(5434,'Pedrosillo de Alba',33286,33289,3,1),(5435,'Pedrosillo de los Aires',33290,33299,3,4),(5436,'Pedrosillo el Ralo',33300,33303,3,1),(5437,'Pedroso',21484,21487,3,1),(5438,'Pedroso de Acim',9720,9723,3,1),(5439,'Pegalajar',19774,19779,3,2),(5440,'Pego',1498,1501,3,1),(5441,'Peguerinos',4110,4113,3,1),(5442,'Pelabravo',33304,33307,3,1),(5443,'Pelahustán',38976,38979,3,1),(5444,'Pelarrodríguez',33308,33313,3,2),(5445,'Pelayos',33314,33319,3,2),(5446,'Pelayos de la Presa',26462,26465,3,1),(5447,'Pelayos del Arroyo',34552,34557,3,2),(5448,'Peleagonzalo',42692,42695,3,1),(5449,'Peleas de Abajo',42696,42699,3,1),(5450,'Peligros',15702,15705,3,1),(5451,'Peñacaballera',33320,33323,3,1),(5452,'Peñacerrada-Urizaharra',254,261,3,3),(5453,'Peñafiel',40964,40973,3,4),(5454,'Peñaflor',35328,35331,3,1),(5455,'Peñaflor de Hornija',40974,40977,3,1),(5456,'Penagos',10828,10831,3,1),(5457,'Penàguila',1502,1505,3,1),(5458,'Peñalba',18996,18999,3,1),(5459,'Peñalba de Ávila',4114,4117,3,1),(5460,'Peñalén',16756,16759,3,1),(5461,'Peñalsordo',4952,4955,3,1),(5462,'Peñalver',16760,16763,3,1),(5463,'Peñamellera Alta',2992,2999,3,3),(5464,'Peñamellera Baja',3000,3003,3,1),(5465,'Peñaparda',33324,33327,3,1),(5466,'Peñaranda de Bracamonte',33328,33331,3,1),(5467,'Peñaranda de Duero',8286,8291,3,2),(5468,'Peñarandilla',33332,33335,3,1),(5469,'Peñarroya de Tastavins',38028,38031,3,1),(5470,'Peñarroya-Pueblonuevo',12742,12745,3,1),(5471,'Peñarrubia',10832,10835,3,1),(5472,'Peñas de San Pedro',736,743,3,3),(5473,'Peñascosa',744,751,3,3),(5474,'Peñausende',42700,42707,3,3),(5475,'Penelles',24194,24203,3,4),(5476,'Peníscola/Peñíscola',11616,11619,3,1),(5477,'Pepino',38980,38983,3,1),(5478,'Peque',42708,42711,3,1),(5479,'Peracense',38032,38035,3,1),(5480,'Perafita',6598,6601,3,1),(5481,'Perafort',36972,36977,3,2),(5482,'Peral de Arlanza',8292,8295,3,1),(5483,'Peralada',14560,14565,3,2),(5484,'Peraleda de la Mata',9724,9727,3,1),(5485,'Peraleda de San Román',9728,9731,3,1),(5486,'Peraleda del Zaucejo',4956,4959,3,1),(5487,'Peralejos',38036,38039,3,1),(5488,'Peralejos de Abajo',33336,33339,3,1),(5489,'Peralejos de Arriba',33340,33343,3,1),(5490,'Peralejos de las Truchas',16764,16767,3,1),(5491,'Perales',30802,30807,3,2),(5492,'Perales de Tajuña',26466,26469,3,1),(5493,'Perales del Alfambra',38040,38045,3,2),(5494,'Perales del Puerto',9732,9735,3,1),(5495,'Peralta de Alcofea',19000,19007,3,3),(5496,'Peralta de Calasanz',19008,19015,3,3),(5497,'Peralta/Azkoien',28982,28985,3,1),(5498,'Peraltilla',19016,19019,3,1),(5499,'Peralveche',16768,16771,3,1),(5500,'Peramola',24204,24207,3,1),(5501,'Peranzanes',22512,22515,3,1),(5502,'Perarrúa',19020,19023,3,1),(5503,'Perdiguera',44196,44199,3,1),(5504,'Pereña de la Ribera',33344,33347,3,1),(5505,'Pereruela',42712,42731,3,9),(5506,'Periana',27236,27239,3,1),(5507,'Perilla de Castro',42732,42735,3,1),(5508,'Peromingo',33348,33351,3,1),(5509,'Perosillo',34558,34561,3,1),(5510,'Pertusa',19024,19027,3,1),(5511,'Pesaguero',10836,10841,3,2),(5512,'Pescueza',9736,9739,3,1),(5513,'Pesoz',3004,3011,3,3),(5514,'Pesquera',10842,10845,3,1),(5515,'Pesquera de Duero',40978,40981,3,1),(5516,'Petilla de Aragón',28986,28989,3,1),(5517,'Petín',29966,29975,3,4),(5518,'Petra',5524,5527,3,1),(5519,'Petrer',1506,1509,3,1),(5520,'Petrés',40102,40105,3,1),(5521,'Pétrola',752,755,3,1),(5522,'Pezuela de las Torres',26470,26473,3,1),(5523,'Pías',42736,42741,3,2),(5524,'Picanya',40106,40109,3,1),(5525,'Picasent',40110,40113,3,1),(5526,'Picón',12174,12177,3,1),(5527,'Piedrabuena',12178,12183,3,2),(5528,'Piedrahíta',4118,4123,3,2),(5529,'Piedrahita de Castro',42742,42745,3,1),(5530,'Piedralaves',4124,4129,3,2),(5531,'Piedramillera',28990,28993,3,1),(5532,'Piedras Albas',9740,9743,3,1),(5533,'Piedratajada',44200,44203,3,1),(5534,'Piélagos',10846,10859,3,6),(5535,'Piera',6602,6605,3,1),(5536,'Piérnigas',8296,8299,3,1),(5537,'Pilar de la Horadada',1510,1515,3,2),(5538,'Pilas',35332,35335,3,1),(5539,'Piles',40114,40117,3,1),(5540,'Piloña',3012,3031,3,9),(5541,'Piña de Campos',30808,30811,3,1),(5542,'Pina de Ebro',44204,44207,3,1),(5543,'Piña de Esgueva',40982,40985,3,1),(5544,'Pina de Montalgrao',11620,11623,3,1),(5545,'Píñar',15706,15711,3,2),(5546,'Pinarejo',13524,13527,3,1),(5547,'Pinarejos',34562,34565,3,1),(5548,'Pinarnegrillo',34566,34569,3,1),(5549,'Pineda de Gigüela',13528,13531,3,1),(5550,'Pineda de la Sierra',8300,8303,3,1),(5551,'Pineda de Mar',6606,6609,3,1),(5552,'Pineda Trasmonte',8304,8307,3,1),(5553,'Pinedas',33352,33355,3,1),(5554,'Piñel de Abajo',40986,40989,3,1),(5555,'Piñel de Arriba',40990,40993,3,1),(5556,'Pinell de Solsonès',24208,24211,3,1),(5557,'Pinet',40118,40121,3,1),(5558,'Pinilla de Jadraque',16772,16775,3,1),(5559,'Pinilla de los Barruecos',8308,8311,3,1),(5560,'Pinilla de los Moros',8312,8315,3,1),(5561,'Pinilla de Molina',16776,16779,3,1),(5562,'Pinilla de Toro',42746,42749,3,1),(5563,'Pinilla del Campo',36088,36091,3,1),(5564,'Pinilla del Valle',26474,26477,3,1),(5565,'Pinilla Trasmonte',8316,8319,3,1),(5566,'Pinillos',21488,21491,3,1),(5567,'Pino del Oro',42750,42753,3,1),(5568,'Pino del Río',30812,30817,3,2),(5569,'Pinofranqueado',9744,9751,3,3),(5570,'Piñor',29976,29983,3,3),(5571,'Pinós',24212,24215,3,1),(5572,'Pinos Genil',15712,15715,3,1),(5573,'Pinos Puente',15716,15725,3,4),(5574,'Pinseque',44208,44211,3,1),(5575,'Pinto',26478,26481,3,1),(5576,'Piñuécar-Gandullas',26482,26485,3,1),(5577,'Piornal',9752,9755,3,1),(5578,'Pioz',16780,16785,3,2),(5579,'Piqueras',16786,16789,3,1),(5580,'Piqueras del Castillo',13532,13535,3,1),(5581,'Pira',36978,36981,3,1),(5582,'Piracés',19028,19031,3,1),(5583,'Pitarque',38046,38049,3,1),(5584,'Pitiegua',33356,33359,3,1),(5585,'Pitillas',28994,28997,3,1),(5586,'Pizarra',27240,27247,3,3),(5587,'Pizarral',33360,33363,3,1),(5588,'Plan',19032,19037,3,2),(5589,'Planes',1516,1519,3,1),(5590,'Planoles',14566,14569,3,1),(5591,'Plasencia',9756,9763,3,3),(5592,'Plasencia de Jalón',44212,44215,3,1),(5593,'Plasenzuela',9764,9767,3,1),(5594,'Pleitas',44216,44219,3,1),(5595,'Plenas',44220,44223,3,1),(5596,'Plentzia',41920,41923,3,1),(5597,'Pliego',27868,27873,3,2),(5598,'Plou',38050,38053,3,1),(5599,'Población de Arroyo',30818,30821,3,1),(5600,'Población de Campos',30822,30825,3,1),(5601,'Población de Cerrato',30826,30829,3,1),(5602,'Pobladura de Pelayo García',22516,22519,3,1),(5603,'Pobladura de Valderaduey',42754,42757,3,1),(5604,'Pobladura del Valle',42758,42761,3,1),(5605,'Poblete',12184,12187,3,1),(5606,'Poboleda',36982,36985,3,1),(5607,'Poio',31748,31759,3,5),(5608,'Pol',25450,25469,3,9),(5609,'Polaciones',10860,10865,3,2),(5610,'Polán',38984,38987,3,1),(5611,'Polanco',10866,10871,3,2),(5612,'Poleñino',19038,19041,3,1),(5613,'Polentinos',30830,30833,3,1),(5614,'Polícar',15726,15729,3,1),(5615,'Poliñá de Júcar',40122,40125,3,1),(5616,'Polinyà',6610,6613,3,1),(5617,'Pollença',5528,5535,3,3),(5618,'Pollos',40994,40997,3,1),(5619,'Polop',1520,1523,3,1),(5620,'Polopos',15730,15735,3,2),(5621,'Pomar de Valdivia',30834,30843,3,4),(5622,'Pomer',44224,44227,3,1),(5623,'Ponferrada',22520,22551,3,15),(5624,'Ponga',3032,3037,3,2),(5625,'Pont de Molins',14570,14573,3,1),(5626,'Ponte Caldelas',31760,31775,3,7),(5627,'Ponteareas',31776,31807,3,15),(5628,'Ponteceso',20682,20687,3,2),(5629,'Pontecesures',31808,31813,3,2),(5630,'Pontedeume',20688,20699,3,5),(5631,'Pontedeva',29984,29987,3,1),(5632,'Pontevedra',31814,31857,3,21),(5633,'Pontils',36986,36989,3,1),(5634,'Pontons',6614,6617,3,1),(5635,'Pontós',14574,14577,3,1),(5636,'Ponts',24216,24223,3,3),(5637,'Porcuna',19780,19783,3,1),(5638,'Porqueira',29988,29997,3,4),(5639,'Porqueres',14578,14583,3,2),(5640,'Porrera',36990,36993,3,1),(5641,'Porreres',5536,5539,3,1),(5642,'Portaje',9768,9771,3,1),(5643,'Portalrubio de Guadamejud',13536,13539,3,1),(5644,'Portas',31858,31865,3,3),(5645,'Portbou',14584,14587,3,1),(5646,'Portell de Morella',11624,11627,3,1),(5647,'Portezuelo',9772,9775,3,1),(5648,'Portilla',13540,13543,3,1),(5649,'Portillo',40998,41001,3,1),(5650,'Portillo de Soria',36092,36095,3,1),(5651,'Portillo de Toledo',38988,38991,3,1),(5652,'Porto',42762,42765,3,1),(5653,'Porto do Son',20700,20719,3,9),(5654,'Portomarín',25470,25489,3,9),(5655,'Portugalete',41924,41927,3,1),(5656,'Pórtugos',15736,15739,3,1),(5657,'Porzuna',12188,12197,3,4),(5658,'Posada de Valdeón',22552,22557,3,2),(5659,'Posadas',12746,12751,3,2),(5660,'Potes',10872,10875,3,1),(5661,'Potries',40126,40129,3,1),(5662,'Poveda',4130,4133,3,1),(5663,'Poveda de la Sierra',16790,16793,3,1),(5664,'Poveda de las Cintas',33364,33367,3,1),(5665,'Povedilla',756,759,3,1),(5666,'Poyales del Hoyo',4134,4137,3,1),(5667,'Poyatos',13544,13547,3,1),(5668,'Poza de la Sal',8320,8325,3,2),(5669,'Poza de la Vega',30844,30847,3,1),(5670,'Pozal de Gallinas',41002,41005,3,1),(5671,'Pozaldez',41006,41009,3,1),(5672,'Pozalmuro',36096,36099,3,1),(5673,'Pozán de Vero',19042,19045,3,1),(5674,'Pozanco',4138,4141,3,1),(5675,'Pozo Alcón',19784,19789,3,2),(5676,'Pozo Cañada',760,765,3,2),(5677,'Pozo de Almoguera',16794,16797,3,1),(5678,'Pozo de Guadalajara',16798,16803,3,2),(5679,'Pozo de Urama',30848,30851,3,1),(5680,'Pozo-Lorente',766,769,3,1),(5681,'Pozoamargo',13548,13551,3,1),(5682,'Pozoantiguo',42766,42769,3,1),(5683,'Pozoblanco',12752,12755,3,1),(5684,'Pozohondo',770,777,3,3),(5685,'Pozondón',38054,38057,3,1),(5686,'Pozorrubielos de la Mancha',13552,13555,3,1),(5687,'Pozorrubio de Santiago',13556,13559,3,1),(5688,'Pozos de Hinojo',33368,33371,3,1),(5689,'Pozuel de Ariza',44228,44231,3,1),(5690,'Pozuel del Campo',38058,38061,3,1),(5691,'Pozuelo',778,781,3,1),(5692,'Pozuelo de Alarcón',26486,26491,3,2),(5693,'Pozuelo de Aragón',44232,44235,3,1),(5694,'Pozuelo de Calatrava',12198,12201,3,1),(5695,'Pozuelo de la Orden',41010,41013,3,1),(5696,'Pozuelo de Tábara',42770,42773,3,1),(5697,'Pozuelo de Zarzón',9776,9779,3,1),(5698,'Pozuelo del Páramo',22558,22563,3,2),(5699,'Pozuelo del Rey',26492,26495,3,1),(5700,'Prádanos de Bureba',8326,8329,3,1),(5701,'Prádanos de Ojeda',30852,30855,3,1),(5702,'Pradejón',21492,21495,3,1),(5703,'Pradell de la Teixeta',36994,36997,3,1),(5704,'Prádena',34570,34575,3,2),(5705,'Prádena de Atienza',16804,16809,3,2),(5706,'Prádena del Rincón',26496,26499,3,1),(5707,'Prades',36998,37001,3,1),(5708,'Pradilla de Ebro',44236,44241,3,2),(5709,'Pradillo',21496,21499,3,1),(5710,'Prado',42774,42777,3,1),(5711,'Prado de la Guzpeña',22564,22567,3,1),(5712,'Prado del Rey',10328,10331,3,1),(5713,'Pradoluengo',8330,8335,3,2),(5714,'Prados Redondos',16810,16819,3,4),(5715,'Pradosegar',4142,4145,3,1),(5716,'Prat de Comte',37002,37005,3,1),(5717,'Pratdip',37006,37011,3,2),(5718,'Prats de Lluçanès',6618,6621,3,1),(5719,'Prats i Sansor',24224,24227,3,1),(5720,'Pravia',3038,3047,3,4),(5721,'Preixana',24228,24231,3,1),(5722,'Preixens',24232,24235,3,1),(5723,'Préjano',21500,21503,3,1),(5724,'Premià de Dalt',6622,6625,3,1),(5725,'Premià de Mar',6626,6629,3,1),(5726,'Presencio',8336,8339,3,1),(5727,'Priaranza del Bierzo',22568,22577,3,4),(5728,'Priego',13560,13563,3,1),(5729,'Priego de Córdoba',12756,12769,3,6),(5730,'Prioro',22578,22581,3,1),(5731,'Proaza',3048,3055,3,3),(5732,'Prullans',24236,24239,3,1),(5733,'Pruna',35336,35339,3,1),(5734,'Puçol',40130,40133,3,1),(5735,'Puebla de Albortón',44242,44245,3,1),(5736,'Puebla de Alcocer',4960,4963,3,1),(5737,'Puebla de Almenara',13564,13567,3,1),(5738,'Puebla de Arenoso',11628,11631,3,1),(5739,'Puebla de Azaba',33372,33377,3,2),(5740,'Puebla de Beleña',16820,16823,3,1),(5741,'Puebla de Don Fadrique',15740,15743,3,1),(5742,'Puebla de Don Rodrigo',12202,12205,3,1),(5743,'Puebla de Farnals',40134,40139,3,2),(5744,'Puebla de Guzmán',18034,18039,3,2),(5745,'Puebla de la Calzada',4964,4967,3,1),(5746,'Puebla de la Reina',4968,4971,3,1),(5747,'Puebla de la Sierra',26500,26503,3,1),(5748,'Puebla de Lillo',22582,22587,3,2),(5749,'Puebla de Obando',4972,4975,3,1),(5750,'Puebla de Pedraza',34576,34579,3,1),(5751,'Puebla de San Medel',33378,33381,3,1),(5752,'Puebla de San Miguel',40140,40143,3,1),(5753,'Puebla de Sanabria',42778,42785,3,3),(5754,'Puebla de Sancho Pérez',4976,4981,3,2),(5755,'Puebla de Vallbona',40144,40147,3,1),(5756,'Puebla de Valles',16824,16827,3,1),(5757,'Puebla de Yeltes',33382,33385,3,1),(5758,'Puebla del Duc',40148,40151,3,1),(5759,'Puebla del Maestre',4982,4985,3,1),(5760,'Puebla del Príncipe',12206,12209,3,1),(5761,'Puebla del Prior',4986,4989,3,1),(5762,'Puebla del Salvador',13568,13571,3,1),(5763,'Puebla Larga',40152,40155,3,1),(5764,'Pueblica de Valverde',42786,42791,3,2),(5765,'Pueblonuevo de Miramontes',9780,9781,3,0),(5766,'Pueblonuevo del Guadiana',4990,4993,3,1),(5767,'Puendeluna',44246,44249,3,1),(5768,'Puente de Domingo Flórez',22588,22601,3,6),(5769,'Puente de Génave',19790,19795,3,2),(5770,'Puente de Montañana',19046,19049,3,1),(5771,'Puente del Congosto',33386,33391,3,2),(5772,'Puente Genil',12770,12775,3,2),(5773,'Puente la Reina de Jaca',19050,19057,3,3),(5774,'Puente la Reina/Gares',28998,29001,3,1),(5775,'Puente Viesgo',10876,10881,3,2),(5776,'Puentedura',8340,8343,3,1),(5777,'Puentes Viejas',26504,26511,3,3),(5778,'Puertas',33392,33395,3,1),(5779,'Puerto Castilla',4146,4149,3,1),(5780,'Puerto de Béjar',33396,33401,3,2),(5781,'Puerto de San Vicente',38992,38995,3,1),(5782,'Puerto de Santa Cruz',9782,9785,3,1),(5783,'Puerto Lápice',12210,12213,3,1),(5784,'Puerto Lumbreras',27874,27879,3,2),(5785,'Puerto Moral',18040,18043,3,1),(5786,'Puerto Real',10332,10339,3,3),(5787,'Puerto Seguro',33402,33405,3,1),(5788,'Puerto Serrano',10340,10345,3,2),(5789,'Puértolas',19058,19063,3,2),(5790,'Puertollano',12214,12219,3,2),(5791,'Puertomingalvo',38062,38065,3,1),(5792,'Pueyo',29002,29005,3,1),(5793,'Pueyo de Santa Cruz',19064,19067,3,1),(5794,'Puig-reig',6630,6633,3,1),(5795,'Puigcerdà',14588,14593,3,2),(5796,'Puigdàlber',6634,6637,3,1),(5797,'Puiggròs',24240,24243,3,1),(5798,'Puigpelat',37012,37015,3,1),(5799,'Puigpunyent',5540,5545,3,2),(5800,'Puigverd d\'Agramunt',24244,24247,3,1),(5801,'Puigverd de Lleida',24248,24251,3,1),(5802,'Pujalt',6638,6641,3,1),(5803,'Pujerra',27248,27251,3,1),(5804,'Pulgar',38996,38999,3,1),(5805,'Pulianas',15744,15749,3,2),(5806,'Pulpí',2128,2137,3,4),(5807,'Punta Umbría',18044,18051,3,3),(5808,'Punxín',29998,30009,3,5),(5809,'Puras',41014,41017,3,1),(5810,'Purchena',2138,2141,3,1),(5811,'Purujosa',44250,44253,3,1),(5812,'Purullena',15750,15755,3,2),(5813,'Quart',14594,14599,3,2),(5814,'Quatretondeta',1524,1527,3,1),(5815,'Quel',21504,21507,3,1),(5816,'Quemada',8344,8347,3,1),(5817,'Quéntar',15756,15761,3,2),(5818,'Quer',16828,16831,3,1),(5819,'Queralbs',14600,14603,3,1),(5820,'Quero',39000,39003,3,1),(5821,'Querol',37016,37021,3,2),(5822,'Quesa',40156,40159,3,1),(5823,'Quesada',19796,19803,3,3),(5824,'Quicena',19068,19071,3,1),(5825,'Quijorna',26512,26515,3,1),(5826,'Quiñonería',36100,36103,3,1),(5827,'Quintana de la Serena',4994,4997,3,1),(5828,'Quintana del Castillo',22602,22607,3,2),(5829,'Quintana del Marco',22608,22613,3,2),(5830,'Quintana del Pidio',8348,8351,3,1),(5831,'Quintana del Puente',30856,30859,3,1),(5832,'Quintana Redonda',36104,36113,3,4),(5833,'Quintana y Congosto',22614,22619,3,2),(5834,'Quintanabureba',8352,8355,3,1),(5835,'Quintanaélez',8356,8359,3,1),(5836,'Quintanaortuño',8360,8363,3,1),(5837,'Quintanapalla',8364,8367,3,1),(5838,'Quintanar de la Orden',39004,39009,3,2),(5839,'Quintanar de la Sierra',8368,8371,3,1),(5840,'Quintanar del Rey',13572,13575,3,1),(5841,'Quintanas de Gormaz',36114,36117,3,1),(5842,'Quintanavides',8372,8375,3,1),(5843,'Quintanilla de Arriba',41018,41021,3,1),(5844,'Quintanilla de la Mata',8376,8379,3,1),(5845,'Quintanilla de Onésimo',41022,41025,3,1),(5846,'Quintanilla de Onsoña',30860,30865,3,2),(5847,'Quintanilla de Trigueros',41026,41029,3,1),(5848,'Quintanilla de Urz',42792,42795,3,1),(5849,'Quintanilla del Agua y Tordueles',8380,8383,3,1),(5850,'Quintanilla del Coco',8384,8387,3,1),(5851,'Quintanilla del Molar',41030,41033,3,1),(5852,'Quintanilla del Monte',42796,42799,3,1),(5853,'Quintanilla del Olmo',42800,42803,3,1),(5854,'Quintanilla San García',8388,8391,3,1),(5855,'Quintanilla Vivar',8392,8395,3,1),(5856,'Quintela de Leirado',30010,30013,3,1),(5857,'Quinto',44254,44257,3,1),(5858,'Quiroga',25490,25501,3,5),(5859,'Quirós',3056,3065,3,4),(5860,'Quiruelas de Vidriales',42804,42809,3,2),(5861,'Quismondo',39010,39013,3,1),(5862,'Rábade',25502,25505,3,1),(5863,'Rabanales',42810,42815,3,2),(5864,'Rabanera',21508,21511,3,1),(5865,'Rabanera del Pinar',8396,8399,3,1),(5866,'Rábano',41034,41037,3,1),(5867,'Rábano de Aliste',42816,42823,3,3),(5868,'Rábanos',8400,8407,3,3),(5869,'Rabé de las Calzadas',8408,8411,3,1),(5870,'Rabós',14604,14609,3,2),(5871,'Rada de Haro',13576,13579,3,1),(5872,'Rafal',1528,1531,3,1),(5873,'Ráfales',38066,38069,3,1),(5874,'Rafelbuñol',40160,40163,3,1),(5875,'Rafelcofer',40164,40167,3,1),(5876,'Rafelguaraf',40168,40171,3,1),(5877,'Ráfol de Salem',40172,40175,3,1),(5878,'Rágama',33406,33409,3,1),(5879,'Rágol',2142,2145,3,1),(5880,'Rairiz de Veiga',30014,30023,3,4),(5881,'Rajadell',6642,6645,3,1),(5882,'Ramales de la Victoria',10882,10893,3,5),(5883,'Ramirás',30024,30031,3,3),(5884,'Ramiro',41038,41041,3,1),(5885,'Rapariegos',34580,34583,3,1),(5886,'Rascafría',26516,26521,3,2),(5887,'Rasines',10894,10897,3,1),(5888,'Rasquera',37022,37025,3,1),(5889,'Rasueros',4150,4153,3,1),(5890,'Real',40176,40179,3,1),(5891,'Real Sitio de San Ildefonso',34584,34591,3,3),(5892,'Rebollar',36118,36121,3,1),(5893,'Rebollar',9786,9787,3,0),(5894,'Rebolledo de la Torre',8412,8415,3,1),(5895,'Rebollo',34592,34595,3,1),(5896,'Rebollosa de Jadraque',16832,16835,3,1),(5897,'Recas',39014,39017,3,1),(5898,'Recuerda',36122,36129,3,3),(5899,'Redecilla del Camino',8416,8419,3,1),(5900,'Redecilla del Campo',8420,8425,3,2),(5901,'Redondela',31866,31891,3,12),(5902,'Redován',1532,1535,3,1),(5903,'Redueña',26522,26525,3,1),(5904,'Regencós',14610,14613,3,1),(5905,'Regueras de Arriba',22620,22623,3,1),(5906,'Regumiel de la Sierra',8426,8429,3,1),(5907,'Reíllo',13580,13583,3,1),(5908,'Reina',4998,5001,3,1),(5909,'Reinosa',10898,10901,3,1),(5910,'Reinoso',8430,8433,3,1),(5911,'Reinoso de Cerrato',30866,30869,3,1),(5912,'Relleu',1536,1539,3,1),(5913,'Rellinars',6646,6649,3,1),(5914,'Rello',36130,36133,3,1),(5915,'Remolinos',44258,44261,3,1),(5916,'Remondo',34596,34599,3,1),(5917,'Rena',5002,5005,3,1),(5918,'Renau',37026,37029,3,1),(5919,'Renedo de Esgueva',41042,41045,3,1),(5920,'Renedo de la Vega',30870,30873,3,1),(5921,'Renera',16836,16839,3,1),(5922,'Renieblas',36134,36139,3,2),(5923,'Reocín',10902,10913,3,5),(5924,'Requejo',42824,42827,3,1),(5925,'Requena',40180,40203,3,11),(5926,'Requena de Campos',30874,30877,3,1),(5927,'Respenda de la Peña',30878,30885,3,3),(5928,'Retamal de Llerena',5006,5009,3,1),(5929,'Retamoso de la Jara',39018,39021,3,1),(5930,'Retascón',44262,44265,3,1),(5931,'Retiendas',16840,16845,3,2),(5932,'Retortillo',33410,33415,3,2),(5933,'Retortillo de Soria',36140,36147,3,3),(5934,'Retuerta',8434,8437,3,1),(5935,'Retuerta del Bullaque',12220,12223,3,1),(5936,'Reus',37030,37043,3,6),(5937,'Revellinos',42828,42831,3,1),(5938,'Revenga de Campos',30886,30889,3,1),(5939,'Revilla de Collazos',30890,30893,3,1),(5940,'Revilla del Campo',8438,8443,3,2),(5941,'Revilla Vallejera',8444,8447,3,1),(5942,'Revillarruz',8448,8451,3,1),(5943,'Reyero',22624,22627,3,1),(5944,'Rezmondo',8452,8455,3,1),(5945,'Reznos',36148,36151,3,1),(5946,'Riaguas de San Bartolomé',34600,34603,3,1),(5947,'Rialp',24252,24255,3,1),(5948,'Riaño',22628,22633,3,2),(5949,'Rianxo',20720,20731,3,5),(5950,'Riaza',34604,34615,3,5),(5951,'Riba de Saelices',16846,16849,3,1),(5952,'Riba-roja d\'Ebre',37044,37047,3,1),(5953,'Ribadavia',30032,30047,3,7),(5954,'Ribadedeva',3066,3071,3,2),(5955,'Ribadeo',25506,25525,3,9),(5956,'Ribadesella',3072,3091,3,9),(5957,'Ribadumia',31892,31899,3,3),(5958,'Ribaforada',29006,29009,3,1),(5959,'Ribafrecha',21512,21515,3,1),(5960,'Ribamontán al Mar',10914,10923,3,4),(5961,'Ribamontán al Monte',10924,10929,3,2),(5962,'Ribarroja del Turia',40204,40207,3,1),(5963,'Ribas de Campos',30894,30897,3,1),(5964,'Ribas de Sil',25526,25533,3,3),(5965,'Ribatejada',26526,26529,3,1),(5966,'Ribeira',20732,20751,3,9),(5967,'Ribeira de Piquín',25534,25541,3,3),(5968,'Ribera Baja/Erribera Beitia',262,267,3,2),(5969,'Ribera d\'Ondara',24256,24261,3,2),(5970,'Ribera d\'Urgellet',24262,24273,3,5),(5971,'Ribera de Arriba',3092,3103,3,5),(5972,'Ribera del Fresno',5010,5013,3,1),(5973,'Riberos de la Cueza',30898,30901,3,1),(5974,'Ribes de Freser',14614,14617,3,1),(5975,'Ribesalbes',11632,11635,3,1),(5976,'Ribota',34616,34619,3,1),(5977,'Ricla',44266,44271,3,2),(5978,'Ricote',27880,27883,3,1),(5979,'Riego de la Vega',22634,22641,3,3),(5980,'Riello',22642,22655,3,6),(5981,'Riells i Viabrea',14618,14621,3,1),(5982,'Rielves',39022,39025,3,1),(5983,'Rillo',38070,38075,3,2),(5984,'Rillo de Gallo',16850,16853,3,1),(5985,'Rincón de la Victoria',27252,27259,3,3),(5986,'Rincón de Soto',21516,21519,3,1),(5987,'Riner',24274,24279,3,2),(5988,'Riocabado',4154,4159,3,2),(5989,'Riocavado de la Sierra',8456,8459,3,1),(5990,'Riodeva',38076,38079,3,1),(5991,'Riofrío',4160,4163,3,1),(5992,'Riofrío de Aliste',42832,42837,3,2),(5993,'Riofrío de Riaza',34620,34623,3,1),(5994,'Riofrío del Llano',16854,16857,3,1),(5995,'Riogordo',27260,27263,3,1),(5996,'Rioja',2146,2149,3,1),(5997,'Riola',40208,40211,3,1),(5998,'Riolobos',9788,9793,3,2),(5999,'Rionansa',10930,10937,3,3),(6000,'Rionegro del Puente',42838,42845,3,3),(6001,'Riópar',782,789,3,3),(6002,'Riós',30048,30055,3,3),(6003,'Riosa',3104,3107,3,1),(6004,'Rioseco de Soria',36152,36155,3,1),(6005,'Rioseco de Tapia',22656,22661,3,2),(6006,'Riotorto',25542,25549,3,3),(6007,'Riotuerto',10938,10943,3,2),(6008,'Ripoll',14622,14625,3,1),(6009,'Ripollet',6650,6653,3,1),(6010,'Risco',5014,5017,3,1),(6011,'Riu de Cerdanya',24280,24283,3,1),(6012,'Riudarenes',14626,14629,3,1),(6013,'Riudaura',14630,14633,3,1),(6014,'Riudecanyes',37048,37051,3,1),(6015,'Riudecols',37052,37055,3,1),(6016,'Riudellots de la Selva',14634,14637,3,1),(6017,'Riudoms',37056,37059,3,1),(6018,'Riumors',14638,14641,3,1),(6019,'Rivas-Vaciamadrid',26530,26541,3,5),(6020,'Rivilla de Barajas',4164,4167,3,1),(6021,'Roa',8460,8463,3,1),(6022,'Roales',42846,42849,3,1),(6023,'Roales de Campos',41046,41049,3,1),(6024,'Robladillo',41050,41053,3,1),(6025,'Robleda',33416,33419,3,1),(6026,'Robleda-Cervantes',42850,42859,3,4),(6027,'Robledillo de Gata',9794,9797,3,1),(6028,'Robledillo de la Jara',26542,26545,3,1),(6029,'Robledillo de la Vera',9798,9801,3,1),(6030,'Robledillo de Mohernando',16858,16861,3,1),(6031,'Robledillo de Trujillo',9802,9807,3,2),(6032,'Robledo',790,797,3,3),(6033,'Robledo de Chavela',26546,26549,3,1),(6034,'Robledo de Corpes',16862,16865,3,1),(6035,'Robledo del Mazo',39026,39037,3,5),(6036,'Robledollano',9808,9811,3,1),(6037,'Robliza de Cojos',33420,33425,3,2),(6038,'Robregordo',26550,26553,3,1),(6039,'Robres',19072,19075,3,1),(6040,'Robres del Castillo',21520,21523,3,1),(6041,'Rocafort',40212,40215,3,1),(6042,'Rocafort de Queralt',37060,37063,3,1),(6043,'Rociana del Condado',18052,18055,3,1),(6044,'Roda de Berà',37064,37067,3,1),(6045,'Roda de Eresma',34624,34627,3,1),(6046,'Roda de Ter',6654,6657,3,1),(6047,'Rodeiro',31900,31911,3,5),(6048,'Ródenas',38080,38083,3,1),(6049,'Rodezno',21524,21529,3,2),(6050,'Rodonyà',37068,37071,3,1),(6051,'Roelos de Sayago',42860,42863,3,1),(6052,'Rois',20752,20765,3,6),(6053,'Rojales',1540,1543,3,1),(6054,'Rojas',8464,8467,3,1),(6055,'Rollamienta',36156,36159,3,1),(6056,'Rollán',33426,33429,3,1),(6057,'Romangordo',9812,9815,3,1),(6058,'Romanillos de Atienza',16866,16869,3,1),(6059,'Romanones',16870,16873,3,1),(6060,'Romanos',44272,44275,3,1),(6061,'Romanzado',29010,29013,3,1),(6062,'Roncal/Erronkari',29014,29017,3,1),(6063,'Ronda',27264,27273,3,4),(6064,'Roperuelos del Páramo',22662,22667,3,2),(6065,'Roquetas de Mar',2150,2159,3,4),(6066,'Roquetes',37072,37077,3,2),(6067,'Rosal de la Frontera',18056,18059,3,1),(6068,'Rosalejo',9816,9819,3,1),(6069,'Roses',14642,14645,3,1),(6070,'Rosinos de la Requejada',42864,42875,3,5),(6071,'Rossell',11636,11643,3,3),(6072,'Rosselló',24284,24287,3,1),(6073,'Rota',10346,10349,3,1),(6074,'Rotglá y Corbera',40216,40219,3,1),(6075,'Rótova',40220,40223,3,1),(6076,'Roturas',41054,41057,3,1),(6077,'Royuela',38084,38087,3,1),(6078,'Royuela de Río Franco',8468,8473,3,2),(6079,'Rozalén del Monte',13584,13589,3,2),(6080,'Rozas de Puerto Real',26554,26557,3,1),(6081,'Ruanes',9820,9823,3,1),(6082,'Rubena',8474,8477,3,1),(6083,'Rubí',6658,6663,3,2),(6084,'Rubí de Bracamonte',41058,41061,3,1),(6085,'Rubiá',30056,30067,3,5),(6086,'Rubiales',38088,38091,3,1),(6087,'Rubielos de la Cérida',38092,38095,3,1),(6088,'Rubielos de Mora',38096,38099,3,1),(6089,'Rubió',6664,6667,3,1),(6090,'Rubite',15762,15765,3,1),(6091,'Rublacedo de Abajo',8478,8481,3,1),(6092,'Rucandio',8482,8485,3,1),(6093,'Rueda',41062,41069,3,3),(6094,'Rueda de Jalón',44276,44279,3,1),(6095,'Rueda de la Sierra',16874,16877,3,1),(6096,'Ruente',10944,10949,3,2),(6097,'Ruesca',44280,44283,3,1),(6098,'Ruesga',10950,10957,3,3),(6099,'Rugat',40224,40227,3,1),(6100,'Ruidera',12224,12227,3,1),(6101,'Ruiloba',10958,10961,3,1),(6102,'Rupià',14646,14649,3,1),(6103,'Rupit i Pruit',6668,6671,3,1),(6104,'Rus',19804,19809,3,2),(6105,'Rute',12776,12781,3,2),(6106,'Sa Pobla',5546,5549,3,1),(6107,'Sabadell',6672,6689,3,8),(6108,'Sabero',22668,22679,3,5),(6109,'Sabiñán',44284,44287,3,1),(6110,'Sabiñánigo',19076,19105,3,14),(6111,'Sabiote',19810,19813,3,1),(6112,'Sacañet',11644,11647,3,1),(6113,'Sacecorbo',16878,16881,3,1),(6114,'Saceda-Trasierra',13590,13593,3,1),(6115,'Sacedón',16882,16889,3,3),(6116,'Saceruela',12228,12231,3,1),(6117,'Sacramenia',34628,34631,3,1),(6118,'Sada',20766,20773,3,3),(6119,'Sada',29018,29019,3,0),(6120,'Sádaba',44288,44293,3,2),(6121,'Saelices',13594,13597,3,1),(6122,'Saelices de la Sal',16890,16893,3,1),(6123,'Saelices de Mayorga',41070,41073,3,1),(6124,'Saelices el Chico',33430,33433,3,1),(6125,'Sagàs',6690,6693,3,1),(6126,'Sagra',1544,1547,3,1),(6127,'Sagunto/Sagunt',40228,40237,3,4),(6128,'Sahagún',22680,22689,3,4),(6129,'Sahún',19106,19113,3,3),(6130,'Sajazarra',21530,21533,3,1),(6131,'Salamanca',33434,33451,3,8),(6132,'Salar',15766,15769,3,1),(6133,'Salares',27274,27277,3,1),(6134,'Salas',3108,3139,3,15),(6135,'Salas Altas',19114,19119,3,2),(6136,'Salas Bajas',19120,19123,3,1),(6137,'Salas de Bureba',8486,8489,3,1),(6138,'Salas de los Infantes',8490,8497,3,3),(6139,'Salàs de Pallars',24288,24291,3,1),(6140,'Salce',42876,42879,3,1),(6141,'Salceda de Caselas',31912,31927,3,7),(6142,'Salcedillo',38100,38103,3,1),(6143,'Saldaña',30902,30911,3,4),(6144,'Saldaña de Burgos',8498,8501,3,1),(6145,'Saldeana',33452,33455,3,1),(6146,'Saldes',6694,6699,3,2),(6147,'Saldías',29020,29023,3,1),(6148,'Saldón',38104,38107,3,1),(6149,'Salduero',36160,36163,3,1),(6150,'Salem',40238,40241,3,1),(6151,'Sales de Llierca',14650,14653,3,1),(6152,'Salillas',19124,19127,3,1),(6153,'Salillas de Jalón',44294,44297,3,1),(6154,'Salinas',1548,1555,3,3),(6155,'Salinas de Oro/Jaitz',29024,29027,3,1),(6156,'Salinas de Pisuerga',30912,30919,3,3),(6157,'Salinas del Manzano',13598,13601,3,1),(6158,'Salinillas de Bureba',8502,8505,3,1),(6159,'Sallent',6700,6703,3,1),(6160,'Sallent de Gállego',19128,19137,3,4),(6161,'Salmerón',16894,16897,3,1),(6162,'Salmeroncillos',13602,13605,3,1),(6163,'Salmoral',33456,33459,3,1),(6164,'Salobral',4168,4171,3,1),(6165,'Salobre',798,801,3,1),(6166,'Salobreña',15770,15779,3,4),(6167,'Salomó',37078,37081,3,1),(6168,'Salorino',9824,9827,3,1),(6169,'Salou',37082,37085,3,1),(6170,'Salt',14654,14657,3,1),(6171,'Salteras',35340,35343,3,1),(6172,'Salvacañete',13606,13609,3,1),(6173,'Salvadiós',4172,4175,3,1),(6174,'Salvador de Zapardiel',41074,41077,3,1),(6175,'Salvaleón',5018,5021,3,1),(6176,'Salvaterra de Miño',31928,31941,3,6),(6177,'Salvatierra de Esca',44298,44301,3,1),(6178,'Salvatierra de los Barros',5022,5025,3,1),(6179,'Salvatierra de Santiago',9828,9831,3,1),(6180,'Salvatierra de Tormes',33460,33463,3,1),(6181,'Samaniego',268,271,3,1),(6182,'Samboal',34632,34637,3,2),(6183,'Samir de los Caños',42880,42883,3,1),(6184,'Samos',25550,25575,3,12),(6185,'Samper de Calanda',38108,38111,3,1),(6186,'Samper del Salz',44302,44305,3,1),(6187,'San Adrián',29028,29031,3,1),(6188,'San Adrián de Juarros',8506,8509,3,1),(6189,'San Adrián del Valle',22690,22693,3,1),(6190,'San Agustín',38112,38115,3,1),(6191,'San Agustín del Guadalix',26558,26561,3,1),(6192,'San Agustín del Pozo',42884,42887,3,1),(6193,'San Amaro',30068,30075,3,3),(6194,'San Andrés del Congosto',16898,16901,3,1),(6195,'San Andrés del Rabanedo',22694,22705,3,5),(6196,'San Andrés del Rey',16902,16905,3,1),(6197,'San Antonio de Benagéber',40242,40245,3,1),(6198,'San Asensio',21534,21537,3,1),(6199,'San Bartolomé de Béjar',4176,4179,3,1),(6200,'San Bartolomé de Corneja',4180,4183,3,1),(6201,'San Bartolomé de la Torre',18060,18065,3,2),(6202,'San Bartolomé de las Abiertas',39038,39041,3,1),(6203,'San Bartolomé de Pinares',4184,4187,3,1),(6204,'San Carlos del Valle',12232,12235,3,1),(6205,'San Cebrián de Campos',30920,30923,3,1),(6206,'San Cebrián de Castro',42888,42893,3,2),(6207,'San Cebrián de Mazote',41078,41081,3,1),(6208,'San Cebrián de Mudá',30924,30929,3,2),(6209,'San Cibrao das Viñas',30076,30087,3,5),(6210,'San Clemente',13610,13613,3,1),(6211,'San Cristóbal de Boedo',30930,30933,3,1),(6212,'San Cristóbal de Cuéllar',34638,34641,3,1),(6213,'San Cristóbal de Entreviñas',42894,42899,3,2),(6214,'San Cristóbal de la Cuesta',33464,33467,3,1),(6215,'San Cristóbal de la Polantera',22706,22711,3,2),(6216,'San Cristóbal de la Vega',34642,34645,3,1),(6217,'San Cristóbal de Segovia',34646,34649,3,1),(6218,'San Cristovo de Cea',30088,30105,3,8),(6219,'San Emiliano',22712,22719,3,3),(6220,'San Esteban de Gormaz',36164,36179,3,7),(6221,'San Esteban de la Sierra',33468,33471,3,1),(6222,'San Esteban de Litera',19138,19141,3,1),(6223,'San Esteban de los Patos',4188,4191,3,1),(6224,'San Esteban de Nogales',22720,22723,3,1),(6225,'San Esteban de Zapardiel',4192,4195,3,1),(6226,'San Esteban del Molar',42900,42903,3,1),(6227,'San Esteban del Valle',4196,4199,3,1),(6228,'San Felices',36180,36183,3,1),(6229,'San Felices de Buelna',10962,10965,3,1),(6230,'San Felices de los Gallegos',33472,33475,3,1),(6231,'San Fernando',10350,10353,3,1),(6232,'San Fernando de Henares',26562,26565,3,1),(6233,'San Fulgencio',1556,1559,3,1),(6234,'San García de Ingelmos',4200,4203,3,1),(6235,'San Isidro',1560,1563,3,1),(6236,'San Javier',27884,27901,3,8),(6237,'San José del Valle',10354,10359,3,2),(6238,'San Juan de Aznalfarache',35344,35347,3,1),(6239,'San Juan de Gredos',4204,4209,3,2),(6240,'San Juan de la Encinilla',4210,4215,3,2),(6241,'San Juan de la Nava',4216,4219,3,1),(6242,'San Juan de Plan',19142,19145,3,1),(6243,'San Juan del Molinillo',4220,4223,3,1),(6244,'San Juan del Monte',8510,8513,3,1),(6245,'San Juan del Olmo',4224,4227,3,1),(6246,'San Juan del Puerto',18066,18071,3,2),(6247,'San Justo',42904,42911,3,3),(6248,'San Justo de la Vega',22724,22731,3,3),(6249,'San Leonardo de Yagüe',36184,36187,3,1),(6250,'San Llorente',41082,41085,3,1),(6251,'San Lorenzo de Calatrava',12236,12239,3,1),(6252,'San Lorenzo de El Escorial',26566,26571,3,2),(6253,'San Lorenzo de la Parrilla',13614,13617,3,1),(6254,'San Lorenzo de Tormes',4228,4231,3,1),(6255,'San Mamés de Burgos',8514,8517,3,1),(6256,'San Mamés de Campos',30934,30937,3,1),(6257,'San Martín de Boniches',13618,13621,3,1),(6258,'San Martín de la Vega',26572,26575,3,1),(6259,'San Martín de la Vega del Alberche',4232,4235,3,1),(6260,'San Martín de la Virgen de Moncayo',44306,44309,3,1),(6261,'San Martín de Montalbán',39042,39045,3,1),(6262,'San Martín de Oscos',3140,3143,3,1),(6263,'San Martín de Pusa',39046,39049,3,1),(6264,'San Martín de Rubiales',8518,8521,3,1),(6265,'San Martín de Trevejo',9832,9835,3,1),(6266,'San Martín de Unx',29032,29035,3,1),(6267,'San Martín de Valdeiglesias',26576,26579,3,1),(6268,'San Martín de Valderaduey',42912,42915,3,1),(6269,'San Martín de Valvení',41086,41089,3,1),(6270,'San Martín del Castañar',33476,33479,3,1),(6271,'San Martín del Pimpollar',4236,4239,3,1),(6272,'San Martín del Rey Aurelio',3144,3165,3,10),(6273,'San Martín del Río',38116,38119,3,1),(6274,'San Martín y Mudrián',34650,34653,3,1),(6275,'San Mateo de Gállego',44310,44313,3,1),(6276,'San Miguel de Aguayo',10966,10969,3,1),(6277,'San Miguel de Bernuy',34654,34657,3,1),(6278,'San Miguel de Corneja',4240,4243,3,1),(6279,'San Miguel de la Ribera',42916,42919,3,1),(6280,'San Miguel de Salinas',1564,1567,3,1),(6281,'San Miguel de Serrezuela',4244,4247,3,1),(6282,'San Miguel de Valero',33480,33483,3,1),(6283,'San Miguel del Arroyo',41090,41093,3,1),(6284,'San Miguel del Cinca',19146,19153,3,3),(6285,'San Miguel del Pino',41094,41097,3,1),(6286,'San Miguel del Robledo',33484,33489,3,2),(6287,'San Miguel del Valle',42920,42923,3,1),(6288,'San Millán de la Cogolla',21538,21541,3,1),(6289,'San Millán de Lara',8522,8525,3,1),(6290,'San Millán de los Caballeros',22732,22735,3,1),(6291,'San Millán de Yécora',21542,21545,3,1),(6292,'San Millán/Donemiliaga',272,277,3,2),(6293,'San Morales',33490,33493,3,1),(6294,'San Muñoz',33494,33499,3,2),(6295,'San Nicolás del Puerto',35348,35355,3,3),(6296,'San Pablo de la Moraleja',41098,41101,3,1),(6297,'San Pablo de los Montes',39050,39053,3,1),(6298,'San Pascual',4248,4251,3,1),(6299,'San Pedro',802,805,3,1),(6300,'San Pedro Bercianos',22736,22739,3,1),(6301,'San Pedro de Ceque',42924,42927,3,1),(6302,'San Pedro de Gaíllos',34658,34661,3,1),(6303,'San Pedro de la Nave-Almendra',42928,42933,3,2),(6304,'San Pedro de Latarce',41102,41105,3,1),(6305,'San Pedro de Mérida',5026,5029,3,1),(6306,'San Pedro de Rozados',33500,33513,3,6),(6307,'San Pedro del Arroyo',4252,4255,3,1),(6308,'San Pedro del Pinatar',27902,27907,3,2),(6309,'San Pedro del Romeral',10970,10975,3,2),(6310,'San Pedro del Valle',33514,33517,3,1),(6311,'San Pedro Manrique',36188,36193,3,2),(6312,'San Pedro Palmiches',13622,13625,3,1),(6313,'San Pelayo',41106,41109,3,1),(6314,'San Pelayo de Guareña',33518,33525,3,3),(6315,'San Rafael del Río',11648,11653,3,2),(6316,'San Román de Cameros',21546,21549,3,1),(6317,'San Román de Hornija',41110,41113,3,1),(6318,'San Román de la Cuba',30938,30941,3,1),(6319,'San Román de los Montes',39054,39057,3,1),(6320,'San Roque',10360,10377,3,8),(6321,'San Roque de Riomiera',10976,10981,3,2),(6322,'San Sadurniño',20774,20787,3,6),(6323,'San Salvador',41114,41117,3,1),(6324,'San Sebastián de los Ballesteros',12782,12785,3,1),(6325,'San Sebastián de los Reyes',26580,26597,3,8),(6326,'San Silvestre de Guzmán',18072,18075,3,1),(6327,'San Tirso de Abres',3166,3169,3,1),(6328,'San Torcuato',21550,21553,3,1),(6329,'San Vicente de Alcántara',5030,5033,3,1),(6330,'San Vicente de Arévalo',4256,4259,3,1),(6331,'San Vicente de la Barquera',10982,10991,3,4),(6332,'San Vicente de la Cabeza',42934,42937,3,1),(6333,'San Vicente de la Sonsierra',21554,21559,3,2),(6334,'San Vicente del Palacio',41118,41121,3,1),(6335,'San Vicente del Raspeig/Sant Vicent del Raspeig',1568,1571,3,1),(6336,'San Vicente del Valle',8526,8529,3,1),(6337,'San Vitero',42938,42945,3,3),(6338,'San Xoán de Río',30106,30113,3,3),(6339,'Sanaüja',24292,24295,3,1),(6340,'Sancedo',22740,22745,3,2),(6341,'Sanchidrián',4260,4263,3,1),(6342,'Sanchón de la Ribera',33526,33529,3,1),(6343,'Sanchón de la Sagrada',33530,33533,3,1),(6344,'Sanchonuño',34662,34665,3,1),(6345,'Sanchorreja',4264,4267,3,1),(6346,'Sanchotello',33534,33537,3,1),(6347,'Sancti-Spíritus',33538,33543,3,2),(6348,'Sancti-Spíritus',5034,5035,3,0),(6349,'Sandiás',30114,30119,3,2),(6350,'Sando',33544,33551,3,3),(6351,'Sanet y Negrals',1572,1575,3,1),(6352,'Sangarcía',34666,34671,3,2),(6353,'Sangarrén',19154,19157,3,1),(6354,'Sangüesa/Zangoza',29036,29041,3,2),(6355,'Sanlúcar de Barrameda',10378,10387,3,4),(6356,'Sanlúcar de Guadiana',18076,18079,3,1),(6357,'Sanlúcar la Mayor',35356,35359,3,1),(6358,'Sansol',29042,29045,3,1),(6359,'Sant Adrià de Besòs',6704,6707,3,1),(6360,'Sant Agustí de Lluçanès',6708,6711,3,1),(6361,'Sant Andreu de la Barca',6712,6715,3,1),(6362,'Sant Andreu de Llavaneres',6716,6719,3,1),(6363,'Sant Andreu Salou',14658,14661,3,1),(6364,'Sant Aniol de Finestres',14662,14667,3,2),(6365,'Sant Antoni de Portmany',5232,5241,3,4),(6366,'Sant Antoni de Vilamajor',6720,6723,3,1),(6367,'Sant Bartomeu del Grau',6724,6727,3,1),(6368,'Sant Boi de Llobregat',6728,6733,3,2),(6369,'Sant Boi de Lluçanès',6734,6737,3,1),(6370,'Sant Carles de la Ràpita',37086,37091,3,2),(6371,'Sant Cebrià de Vallalta',6738,6741,3,1),(6372,'Sant Celoni',6742,6749,3,3),(6373,'Sant Climent de Llobregat',6750,6753,3,1),(6374,'Sant Climent Sescebes',14668,14671,3,1),(6375,'Sant Cugat del Vallès',6754,6773,3,9),(6376,'Sant Cugat Sesgarrigues',6774,6777,3,1),(6377,'Sant Esteve de la Sarga',24296,24299,3,1),(6378,'Sant Esteve de Palautordera',6778,6783,3,2),(6379,'Sant Esteve Sesrovires',6784,6789,3,2),(6380,'Sant Feliu de Buixalleu',14672,14675,3,1),(6381,'Sant Feliu de Codines',6790,6793,3,1),(6382,'Sant Feliu de Guíxols',14676,14681,3,2),(6383,'Sant Feliu de Llobregat',6794,6797,3,1),(6384,'Sant Feliu de Pallerols',14682,14685,3,1),(6385,'Sant Feliu Sasserra',6798,6801,3,1),(6386,'Sant Ferriol',14686,14691,3,2),(6387,'Sant Fost de Campsentelles',6802,6805,3,1),(6388,'Sant Fruitós de Bages',6806,6809,3,1),(6389,'Sant Gregori',14692,14701,3,4),(6390,'Sant Guim de Freixenet',24300,24307,3,3),(6391,'Sant Guim de la Plana',24308,24311,3,1),(6392,'Sant Hilari Sacalm',14702,14705,3,1),(6393,'Sant Hipòlit de Voltregà',6810,6813,3,1),(6394,'Sant Iscle de Vallalta',6814,6817,3,1),(6395,'Sant Jaume d\'Enveja',37092,37097,3,2),(6396,'Sant Jaume de Frontanyà',6818,6821,3,1),(6397,'Sant Jaume de Llierca',14706,14709,3,1),(6398,'Sant Jaume dels Domenys',37098,37101,3,1),(6399,'Sant Joan',5550,5555,3,2),(6400,'Sant Joan d\'Alacant',1576,1579,3,1),(6401,'Sant Joan de Labritja',5242,5251,3,4),(6402,'Sant Joan de les Abadesses',14710,14713,3,1),(6403,'Sant Joan de Mollet',14714,14717,3,1),(6404,'Sant Joan de Moró',11654,11657,3,1),(6405,'Sant Joan de Vilatorrada',6822,6825,3,1),(6406,'Sant Joan Despí',6826,6829,3,1),(6407,'Sant Joan les Fonts',14718,14721,3,1),(6408,'Sant Joanet',40246,40249,3,1),(6409,'Sant Jordi Desvalls',14722,14725,3,1),(6410,'Sant Jordi/San Jorge',11658,11661,3,1),(6411,'Sant Josep de sa Talaia',5252,5263,3,5),(6412,'Sant Julià de Cerdanyola',6830,6833,3,1),(6413,'Sant Julià de Ramis',14726,14731,3,2),(6414,'Sant Julià de Vilatorta',6834,6837,3,1),(6415,'Sant Julià del Llor i Bonmatí',14732,14735,3,1),(6416,'Sant Just Desvern',6838,6841,3,1),(6417,'Sant Llorenç d\'Hortons',6842,6845,3,1),(6418,'Sant Llorenç de la Muga',14736,14739,3,1),(6419,'Sant Llorenç de Morunys',24312,24317,3,2),(6420,'Sant Llorenç des Cardassar',5556,5565,3,4),(6421,'Sant Llorenç Savall',6846,6851,3,2),(6422,'Sant Lluís',5708,5715,3,3),(6423,'Sant Martí d\'Albars',6852,6855,3,1),(6424,'Sant Martí de Centelles',6856,6859,3,1),(6425,'Sant Martí de Llémena',14740,14747,3,3),(6426,'Sant Martí de Riucorb',24318,24325,3,3),(6427,'Sant Martí de Tous',6860,6863,3,1),(6428,'Sant Martí Sarroca',6864,6867,3,1),(6429,'Sant Martí Sesgueioles',6868,6871,3,1),(6430,'Sant Martí Vell',14748,14751,3,1),(6431,'Sant Mateu',11662,11665,3,1),(6432,'Sant Mateu de Bages',6872,6877,3,2),(6433,'Sant Miquel de Campmajor',14752,14755,3,1),(6434,'Sant Miquel de Fluvià',14756,14759,3,1),(6435,'Sant Mori',14760,14763,3,1),(6436,'Sant Pau de Segúries',14764,14769,3,2),(6437,'Sant Pere de Ribes',6878,6883,3,2),(6438,'Sant Pere de Riudebitlles',6884,6887,3,1),(6439,'Sant Pere de Torelló',6888,6891,3,1),(6440,'Sant Pere de Vilamajor',6892,6899,3,3),(6441,'Sant Pere Pescador',14770,14773,3,1),(6442,'Sant Pere Sallavinera',6900,6903,3,1),(6443,'Sant Pol de Mar',6904,6907,3,1),(6444,'Sant Quintí de Mediona',6908,6911,3,1),(6445,'Sant Quirze de Besora',6912,6917,3,2),(6446,'Sant Quirze del Vallès',6918,6925,3,3),(6447,'Sant Quirze Safaja',6926,6929,3,1),(6448,'Sant Ramon',24326,24331,3,2),(6449,'Sant Sadurní d\'Anoia',6930,6933,3,1),(6450,'Sant Sadurní d\'Osormort',6934,6937,3,1),(6451,'Sant Salvador de Guardiola',6938,6941,3,1),(6452,'Sant Vicenç de Castellet',6942,6945,3,1),(6453,'Sant Vicenç de Montalt',6946,6949,3,1),(6454,'Sant Vicenç de Torelló',6950,6953,3,1),(6455,'Sant Vicenç dels Horts',6954,6957,3,1),(6456,'Santa Amalia',5036,5039,3,1),(6457,'Santa Ana',9836,9839,3,1),(6458,'Santa Ana de Pusa',39058,39061,3,1),(6459,'Santa Ana la Real',18080,18085,3,2),(6460,'Santa Bàrbara',37102,37105,3,1),(6461,'Santa Bárbara de Casa',18086,18089,3,1),(6462,'Santa Cecilia',8530,8533,3,1),(6463,'Santa Cecília de Voltregà',6958,6961,3,1),(6464,'Santa Cecilia del Alcor',30942,30945,3,1),(6465,'Santa Cilia',19158,19163,3,2),(6466,'Santa Clara de Avedillo',42946,42949,3,1),(6467,'Santa Coloma',21560,21563,3,1),(6468,'Santa Coloma de Cervelló',6962,6965,3,1),(6469,'Santa Coloma de Farners',14774,14777,3,1),(6470,'Santa Coloma de Gramenet',6966,6975,3,4),(6471,'Santa Coloma de Queralt',37106,37111,3,2),(6472,'Santa Colomba de Curueño',22746,22753,3,3),(6473,'Santa Colomba de las Monjas',42950,42953,3,1),(6474,'Santa Colomba de Somoza',22754,22759,3,2),(6475,'Santa Comba',20788,20807,3,9),(6476,'Santa Cristina d\'Aro',14778,14785,3,3),(6477,'Santa Cristina de la Polvorosa',42954,42957,3,1),(6478,'Santa Cristina de Valmadrigal',22760,22763,3,1),(6479,'Santa Croya de Tera',42958,42961,3,1),(6480,'Santa Cruz de Bezana',10992,10999,3,3),(6481,'Santa Cruz de Boedo',30946,30951,3,2),(6482,'Santa Cruz de Grío',44314,44317,3,1),(6483,'Santa Cruz de la Salceda',8534,8537,3,1),(6484,'Santa Cruz de la Serós',19164,19169,3,2),(6485,'Santa Cruz de la Sierra',9840,9843,3,1),(6486,'Santa Cruz de la Zarza',39062,39065,3,1),(6487,'Santa Cruz de los Cáñamos',12240,12243,3,1),(6488,'Santa Cruz de Marchena',2160,2163,3,1),(6489,'Santa Cruz de Moncayo',44318,44321,3,1),(6490,'Santa Cruz de Moya',13626,13631,3,2),(6491,'Santa Cruz de Mudela',12244,12247,3,1),(6492,'Santa Cruz de Nogueras',38120,38123,3,1),(6493,'Santa Cruz de Paniagua',9844,9849,3,2),(6494,'Santa Cruz de Pinares',4268,4271,3,1),(6495,'Santa Cruz de Yanguas',36194,36199,3,2),(6496,'Santa Cruz del Comercio',15780,15783,3,1),(6497,'Santa Cruz del Retamar',39066,39071,3,2),(6498,'Santa Cruz del Valle',4272,4275,3,1),(6499,'Santa Cruz del Valle Urbión',8538,8541,3,1),(6500,'Santa Elena',19814,19817,3,1),(6501,'Santa Elena de Jamuz',22764,22769,3,2),(6502,'Santa Engracia del Jubera',21564,21569,3,2),(6503,'Santa Eufemia',12786,12791,3,2),(6504,'Santa Eufemia del Arroyo',41122,41125,3,1),(6505,'Santa Eufemia del Barco',42962,42967,3,2),(6506,'Santa Eugènia',5566,5569,3,1),(6507,'Santa Eugènia de Berga',6976,6979,3,1),(6508,'Santa Eulalia',38124,38127,3,1),(6509,'Santa Eulalia Bajera',21570,21573,3,1),(6510,'Santa Eulalia de Gállego',44322,44325,3,1),(6511,'Santa Eulalia de Oscos',3170,3175,3,2),(6512,'Santa Eulàlia de Riuprimer',6980,6983,3,1),(6513,'Santa Eulàlia de Ronçana',6984,6987,3,1),(6514,'Santa Eulària des Riu',5264,5277,3,6),(6515,'Santa Fe',15784,15793,3,4),(6516,'Santa Fe de Mondújar',2164,2167,3,1),(6517,'Santa Fe del Penedès',6988,6991,3,1),(6518,'Santa Gadea del Cid',8542,8545,3,1),(6519,'Santa Inés',8546,8549,3,1),(6520,'Santa Llogaia d\'Àlguema',14786,14789,3,1),(6521,'Santa Magdalena de Pulpis',11666,11669,3,1),(6522,'Santa Margalida',5570,5577,3,3),(6523,'Santa Margarida de Montbui',6992,6995,3,1),(6524,'Santa Margarida i els Monjos',6996,6999,3,1),(6525,'Santa Maria d\'Oló',7000,7003,3,1),(6526,'Santa Maria de Besora',7004,7009,3,2),(6527,'Santa María de Cayón',11000,11011,3,5),(6528,'Santa María de Dulcis',19170,19175,3,2),(6529,'Santa María de Huerta',36200,36203,3,1),(6530,'Santa María de la Alameda',26598,26603,3,2),(6531,'Santa María de la Isla',22770,22773,3,1),(6532,'Santa María de la Vega',42968,42971,3,1),(6533,'Santa María de las Hoyas',36204,36207,3,1),(6534,'Santa María de los Caballeros',4276,4281,3,2),(6535,'Santa María de los Llanos',13632,13635,3,1),(6536,'Santa Maria de Martorelles',7010,7013,3,1),(6537,'Santa Maria de Merlès',7014,7019,3,2),(6538,'Santa Maria de Miralles',7020,7023,3,1),(6539,'Santa María de Ordás',22774,22783,3,4),(6540,'Santa Maria de Palautordera',7024,7027,3,1),(6541,'Santa María de Sando',33552,33555,3,1),(6542,'Santa María de Valverde',42972,42975,3,1),(6543,'Santa María del Arroyo',4282,4285,3,1),(6544,'Santa María del Berrocal',4286,4291,3,2),(6545,'Santa María del Camí',5578,5581,3,1),(6546,'Santa María del Campo',8550,8553,3,1),(6547,'Santa María del Campo Rus',13636,13639,3,1),(6548,'Santa María del Cubillo',4292,4295,3,1),(6549,'Santa María del Invierno',8554,8557,3,1),(6550,'Santa María del Mercadillo',8558,8561,3,1),(6551,'Santa María del Monte de Cea',22784,22789,3,2),(6552,'Santa María del Páramo',22790,22793,3,1),(6553,'Santa María del Tiétar',4296,4299,3,1),(6554,'Santa María del Val',13640,13643,3,1),(6555,'Santa María la Real de Nieva',34672,34689,3,8),(6556,'Santa María Rivarredonda',8562,8565,3,1),(6557,'Santa Marina del Rey',22794,22797,3,1),(6558,'Santa Marta',5040,5043,3,1),(6559,'Santa Marta de Magasca',9850,9853,3,1),(6560,'Santa Marta de Tormes',33556,33561,3,2),(6561,'Santa Marta del Cerro',34690,34693,3,1),(6562,'Santa Olalla',39072,39075,3,1),(6563,'Santa Olalla de Bureba',8566,8569,3,1),(6564,'Santa Olalla del Cala',18090,18095,3,2),(6565,'Santa Oliva',37112,37117,3,2),(6566,'Santa Pau',14790,14793,3,1),(6567,'Santa Perpètua de Mogoda',7028,7031,3,1),(6568,'Santa Pola',1580,1583,3,1),(6569,'Santa Susanna',7032,7035,3,1),(6570,'Santacara',29046,29049,3,1),(6571,'Santaella',12792,12799,3,3),(6572,'Santaliestra y San Quílez',19176,19181,3,2),(6573,'Santander',11012,11037,3,12),(6574,'Santanyí',5582,5601,3,9),(6575,'Santas Martas',22798,22805,3,3),(6576,'Santed',44326,44329,3,1),(6577,'Santervás de Campos',41126,41129,3,1),(6578,'Santervás de la Vega',30952,30955,3,1),(6579,'Santiago de Alcántara',9854,9859,3,2),(6580,'Santiago de Calatrava',19818,19821,3,1),(6581,'Santiago de Compostela',20808,20845,3,18),(6582,'Santiago de la Puebla',33562,33565,3,1),(6583,'Santiago del Campo',9860,9863,3,1),(6584,'Santiago del Collado',4300,4303,3,1),(6585,'Santiago del Tormes',4304,4307,3,1),(6586,'Santiago Millas',22806,22815,3,4),(6587,'Santiago-Pontones',19822,19837,3,7),(6588,'Santibáñez de Béjar',33566,33569,3,1),(6589,'Santibáñez de Ecla',30956,30959,3,1),(6590,'Santibáñez de Esgueva',8570,8573,3,1),(6591,'Santibáñez de la Peña',30960,30971,3,5),(6592,'Santibáñez de la Sierra',33570,33575,3,2),(6593,'Santibáñez de Tera',42976,42981,3,2),(6594,'Santibáñez de Valcorba',41130,41135,3,2),(6595,'Santibáñez de Vidriales',42982,42993,3,5),(6596,'Santibáñez del Val',8574,8579,3,2),(6597,'Santibáñez el Alto',9864,9867,3,1),(6598,'Santibáñez el Bajo',9868,9871,3,1),(6599,'Santillana del Mar',11038,11049,3,5),(6600,'Santiponce',35360,35363,3,1),(6601,'Santiso',20846,20849,3,1),(6602,'Santisteban del Puerto',19838,19841,3,1),(6603,'Santiurde de Reinosa',11050,11055,3,2),(6604,'Santiurde de Toranzo',11056,11063,3,3),(6605,'Santiuste',16906,16909,3,1),(6606,'Santiuste de Pedraza',34694,34701,3,3),(6607,'Santiuste de San Juan Bautista',34702,34705,3,1),(6608,'Santiz',33576,33579,3,1),(6609,'Santo Adriano',3176,3179,3,1),(6610,'Santo Domingo de la Calzada',21574,21577,3,1),(6611,'Santo Domingo de las Posadas',4308,4311,3,1),(6612,'Santo Domingo de Pirón',34706,34709,3,1),(6613,'Santo Domingo de Silos',8580,8583,3,1),(6614,'Santo Domingo-Caudilla',39076,39079,3,1),(6615,'Santo Tomé',19842,19845,3,1),(6616,'Santo Tomé de Zabarcos',4312,4315,3,1),(6617,'Santo Tomé del Puerto',34710,34713,3,1),(6618,'Santomera',27908,27917,3,4),(6619,'Santoña',11064,11071,3,3),(6620,'Santorcaz',26604,26607,3,1),(6621,'Santovenia',42994,42997,3,1),(6622,'Santovenia de la Valdoncina',22816,22821,3,2),(6623,'Santovenia de Pisuerga',41136,41139,3,1),(6624,'Santoyo',30972,30975,3,1),(6625,'Santpedor',7036,7039,3,1),(6626,'Santurde de Rioja',21578,21581,3,1),(6627,'Santurdejo',21582,21585,3,1),(6628,'Santurtzi',41928,41931,3,1),(6629,'Sanxenxo',31942,31955,3,6),(6630,'Sanzoles',42998,43001,3,1),(6631,'Sardón de Duero',41140,41143,3,1),(6632,'Sardón de los Frailes',33580,33583,3,1),(6633,'Sargentes de la Lora',8584,8591,3,3),(6634,'Sariego',3180,3183,3,1),(6635,'Sariegos',22822,22827,3,2),(6636,'Sariñena',19182,19191,3,4),(6637,'Saro',11072,11075,3,1),(6638,'Sarracín',8592,8595,3,1),(6639,'Sarral',37118,37125,3,3),(6640,'Sarreaus',30120,30127,3,3),(6641,'Sarria',25576,25603,3,13),(6642,'Sarrià de Ter',14794,14797,3,1),(6643,'Sarriés/Sartze',29050,29053,3,1),(6644,'Sarrión',38128,38133,3,2),(6645,'Sarroca de Bellera',24332,24335,3,1),(6646,'Sarroca de Lleida',24336,24339,3,1),(6647,'Sartaguda',29054,29057,3,1),(6648,'Sartajada',39080,39083,3,1),(6649,'Sasamón',8596,8601,3,2),(6650,'Sástago',44330,44333,3,1),(6651,'Saúca',16910,16913,3,1),(6652,'Saucedilla',9872,9875,3,1),(6653,'Saucelle',33584,33587,3,1),(6654,'Sauquillo de Cabezas',34714,34717,3,1),(6655,'Saus, Camallera i Llampaies',14798,14803,3,2),(6656,'Savallà del Comtat',37126,37129,3,1),(6657,'Sax',1584,1587,3,1),(6658,'Sayalonga',27278,27283,3,2),(6659,'Sayatón',16914,16917,3,1),(6660,'Sebúlcor',34718,34723,3,2),(6661,'Secastilla',19192,19197,3,2),(6662,'Sedaví',40250,40253,3,1),(6663,'Sedella',27284,27289,3,2),(6664,'Sediles',44334,44337,3,1),(6665,'Segart',40254,40257,3,1),(6666,'Segorbe',11670,11677,3,3),(6667,'Segovia',34724,34745,3,10),(6668,'Segura',17616,17619,3,1),(6669,'Segura de la Sierra',19846,19857,3,5),(6670,'Segura de León',5044,5047,3,1),(6671,'Segura de los Baños',38134,38137,3,1),(6672,'Segura de Toro',9876,9879,3,1),(6673,'Segurilla',39084,39087,3,1),(6674,'Seira',19198,19203,3,2),(6675,'Selas',16918,16921,3,1),(6676,'Selaya',11076,11079,3,1),(6677,'Sella',1588,1591,3,1),(6678,'Sellent',40258,40261,3,1),(6679,'Selva',5602,5611,3,4),(6680,'Semillas',16922,16925,3,1),(6681,'Sempere',40262,40265,3,1),(6682,'Sena',19204,19207,3,1),(6683,'Sena de Luna',22828,22833,3,2),(6684,'Senan',37130,37133,3,1),(6685,'Sencelles',5612,5621,3,4),(6686,'Señera',40266,40269,3,1),(6687,'Senés',2168,2171,3,1),(6688,'Senés de Alcubierre',19208,19211,3,1),(6689,'Senija',1592,1595,3,1),(6690,'Seno',38138,38141,3,1),(6691,'Senterada',24340,24347,3,3),(6692,'Sentmenat',7040,7043,3,1),(6693,'Sepulcro-Hilario',33588,33591,3,1),(6694,'Sepúlveda',34746,34759,3,6),(6695,'Sequera de Fresno',34760,34763,3,1),(6696,'Sequeros',33592,33595,3,1),(6697,'Serinyà',14804,14807,3,1),(6698,'Serón',2172,2181,3,4),(6699,'Serón de Nágima',36208,36211,3,1),(6700,'Seròs',24348,24351,3,1),(6701,'Serra',40270,40273,3,1),(6702,'Serra de Daró',14808,14811,3,1),(6703,'Serrada',41144,41147,3,1),(6704,'Serradilla',9880,9885,3,2),(6705,'Serradilla del Arroyo',33596,33601,3,2),(6706,'Serradilla del Llano',33602,33605,3,1),(6707,'Serranillos',4316,4321,3,2),(6708,'Serranillos del Valle',26608,26611,3,1),(6709,'Serrato',27290,27291,3,0),(6710,'Serrejón',9886,9889,3,1),(6711,'ses Salines',5622,5627,3,2),(6712,'Sesa',19212,19215,3,1),(6713,'Seseña',39088,39095,3,3),(6714,'Sesma',29058,29061,3,1),(6715,'Sestao',41932,41935,3,1),(6716,'Sestrica',44338,44343,3,2),(6717,'Sesué',19216,19219,3,1),(6718,'Setcases',14812,14815,3,1),(6719,'Setenil de las Bodegas',10388,10391,3,1),(6720,'Setiles',16926,16929,3,1),(6721,'Seva',7044,7049,3,2),(6722,'Sevilla',35364,35407,3,21),(6723,'Sevilla la Nueva',26612,26615,3,1),(6724,'Sevilleja de la Jara',39096,39103,3,3),(6725,'Sidamon',24352,24355,3,1),(6726,'Sienes',16930,16933,3,1),(6727,'Siero',3184,3215,3,15),(6728,'Sierra de Fuentes',9890,9893,3,1),(6729,'Sierra de Luna',44344,44347,3,1),(6730,'Sierra de Yeguas',27292,27297,3,2),(6731,'Sierra Engarcerán',11678,11687,3,4),(6732,'Sierro',2182,2185,3,1),(6733,'Siétamo',19220,19227,3,3),(6734,'Siete Aguas',40274,40279,3,2),(6735,'Siete Iglesias de Trabancos',41148,41151,3,1),(6736,'Sieteiglesias de Tormes',33606,33609,3,1),(6737,'Sigeres',4322,4325,3,1),(6738,'Sigüenza',16934,16955,3,10),(6739,'Sigüés',44348,44353,3,2),(6740,'Siles',19858,19861,3,1),(6741,'Silla',40280,40283,3,1),(6742,'Silleda',31956,31981,3,12),(6743,'Sils',14816,14821,3,2),(6744,'Simancas',41152,41155,3,1),(6745,'Simat de la Valldigna',40284,40287,3,1),(6746,'Sinarcas',40288,40291,3,1),(6747,'Sineu',5628,5631,3,1),(6748,'Singra',38142,38145,3,1),(6749,'Sinlabajos',4326,4329,3,1),(6750,'Siruela',5048,5051,3,1),(6751,'Sisamón',44354,44357,3,1),(6752,'Sisante',13644,13647,3,1),(6753,'Sitges',7050,7055,3,2),(6754,'Siurana',14822,14825,3,1),(6755,'Soba',11080,11093,3,6),(6756,'Sober',25604,25625,3,10),(6757,'Sobradiel',44358,44361,3,1),(6758,'Sobradillo',33610,33613,3,1),(6759,'Sobrado',20850,20857,3,3),(6760,'Sobrado',22834,22835,3,0),(6761,'Sobremunt',7056,7059,3,1),(6762,'Sobrescobio',3216,3219,3,1),(6763,'Socovos',806,811,3,2),(6764,'Socuéllamos',12248,12251,3,1),(6765,'Sojuela',21586,21589,3,1),(6766,'Solana de Ávila',4330,4335,3,2),(6767,'Solana de los Barros',5052,5059,3,3),(6768,'Solana de Rioalmar',4336,4339,3,1),(6769,'Solana del Pino',12252,12255,3,1),(6770,'Solanillos del Extremo',16956,16959,3,1),(6771,'Solarana',8602,8605,3,1),(6772,'Solera de Gabaldón',13648,13651,3,1),(6773,'Soliedra',36212,36217,3,2),(6774,'Solivella',37134,37137,3,1),(6775,'Sollana',40292,40297,3,2),(6776,'Sóller',5632,5641,3,4),(6777,'Solórzano',11094,11101,3,3),(6778,'Solosancho',4340,4343,3,1),(6779,'Solsona',24356,24359,3,1),(6780,'Somiedo',3220,3227,3,3),(6781,'Somolinos',16960,16963,3,1),(6782,'Somontín',2186,2189,3,1),(6783,'Somosierra',26616,26619,3,1),(6784,'Son Servera',5642,5651,3,4),(6785,'Sondika',41936,41939,3,1),(6786,'Soneja',11688,11691,3,1),(6787,'Sonseca',39104,39109,3,2),(6788,'Sopeira',19228,19231,3,1),(6789,'Sopela',41940,41943,3,1),(6790,'Soportújar',15794,15797,3,1),(6791,'Sopuerta',41944,41953,3,4),(6792,'Sora',7060,7063,3,1),(6793,'Soraluze-Placencia de las Armas',17620,17623,3,1),(6794,'Sorbas',2190,2207,3,8),(6795,'Sordillos',8606,8609,3,1),(6796,'Soria',36218,36233,3,7),(6797,'Soriguera',24360,24367,3,3),(6798,'Sorihuela',33614,33617,3,1),(6799,'Sorihuela del Guadalimar',19862,19865,3,1),(6800,'Sorlada',29062,29065,3,1),(6801,'Sort',24368,24377,3,4),(6802,'Sorvilán',15798,15805,3,3),(6803,'Sorzano',21590,21593,3,1),(6804,'Sos del Rey Católico',44362,44371,3,4),(6805,'Soses',24378,24381,3,1),(6806,'Sot de Chera',40298,40303,3,2),(6807,'Sot de Ferrer',11692,11695,3,1),(6808,'Sotalbo',4344,4347,3,1),(6809,'Sotés',21594,21597,3,1),(6810,'Sotillo',34764,34767,3,1),(6811,'Sotillo de la Adrada',4348,4351,3,1),(6812,'Sotillo de la Ribera',8610,8615,3,2),(6813,'Sotillo de las Palomas',39110,39113,3,1),(6814,'Sotillo del Rincón',36234,36239,3,2),(6815,'Soto de Cerrato',30976,30979,3,1),(6816,'Soto de la Vega',22836,22843,3,3),(6817,'Soto del Barco',3228,3237,3,4),(6818,'Soto del Real',26620,26623,3,1),(6819,'Soto en Cameros',21598,21601,3,1),(6820,'Soto y Amío',22844,22853,3,4),(6821,'Sotobañado y Priorato',30980,30983,3,1),(6822,'Sotodosos',16964,16967,3,1),(6823,'Sotorribas',13652,13659,3,3),(6824,'Sotosalbos',34768,34771,3,1),(6825,'Sotoserrano',33618,33621,3,1),(6826,'Sotragero',8616,8621,3,2),(6827,'Sotresgudo',8622,8629,3,3),(6828,'Soutomaior',31982,31987,3,2),(6829,'Suances',11102,11109,3,3),(6830,'Subirats',7064,7067,3,1),(6831,'Sudanell',24382,24385,3,1),(6832,'Sueca',40304,40311,3,3),(6833,'Suellacabras',36240,36243,3,1),(6834,'Sueras/Suera',11696,11699,3,1),(6835,'Suflí',2208,2211,3,1),(6836,'Sukarrieta',41954,41957,3,1),(6837,'Sumacárcer',40312,40315,3,1),(6838,'Sunbilla',29066,29069,3,1),(6839,'Sunyer',24386,24389,3,1),(6840,'Súria',7068,7071,3,1),(6841,'Susinos del Páramo',8630,8633,3,1),(6842,'Susqueda',14826,14831,3,2),(6843,'Tabanera de Cerrato',30984,30987,3,1),(6844,'Tabanera de Valdavia',30988,30991,3,1),(6845,'Tabanera la Luenga',34772,34775,3,1),(6846,'Tábara',43002,43005,3,1),(6847,'Tabera de Abajo',33622,33629,3,3),(6848,'Tabernas',2212,2217,3,2),(6849,'Taberno',2218,2223,3,2),(6850,'Taboada',25626,25643,3,8),(6851,'Taboadela',30128,30133,3,2),(6852,'Tabuenca',44372,44375,3,1),(6853,'Tafalla',29070,29073,3,1),(6854,'Tagamanent',7072,7075,3,1),(6855,'Tahal',2224,2229,3,2),(6856,'Tajahuerce',36244,36247,3,1),(6857,'Tajueco',36248,36251,3,1),(6858,'Talamanca',7076,7079,3,1),(6859,'Talamanca de Jarama',26624,26627,3,1),(6860,'Talamantes',44376,44379,3,1),(6861,'Talarn',24390,24393,3,1),(6862,'Talarrubias',5060,5063,3,1),(6863,'Talaván',9894,9897,3,1),(6864,'Talavera',24394,24399,3,2),(6865,'Talavera de la Reina',39114,39123,3,4),(6866,'Talavera la Real',5064,5067,3,1),(6867,'Talaveruela de la Vera',9898,9901,3,1),(6868,'Talayuela',9902,9909,3,3),(6869,'Talayuelas',13660,13665,3,2),(6870,'Tales',11700,11703,3,1),(6871,'Táliga',5068,5071,3,1),(6872,'Talveila',36252,36257,3,2),(6873,'Tamajón',16968,16975,3,3),(6874,'Tamames',33630,33637,3,3),(6875,'Támara de Campos',30992,30995,3,1),(6876,'Tamarite de Litera',19232,19239,3,3),(6877,'Tamariz de Campos',41156,41159,3,1),(6878,'Tamarón',8634,8637,3,1),(6879,'Tamurejo',5072,5075,3,1),(6880,'Tapia de Casariego',3238,3249,3,5),(6881,'Tapioles',43006,43009,3,1),(6882,'Taradell',7080,7083,3,1),(6883,'Taragudo',16976,16979,3,1),(6884,'Taramundi',3250,3253,3,1),(6885,'Tarancón',13666,13669,3,1),(6886,'Taravilla',16980,16983,3,1),(6887,'Tarazona',44380,44387,3,3),(6888,'Tarazona de Guareña',33638,33641,3,1),(6889,'Tarazona de la Mancha',812,817,3,2),(6890,'Tàrbena',1596,1599,3,1),(6891,'Tardáguila',33642,33645,3,1),(6892,'Tardajos',8638,8641,3,1),(6893,'Tardelcuende',36258,36261,3,1),(6894,'Tardienta',19240,19243,3,1),(6895,'Tariego de Cerrato',30996,30999,3,1),(6896,'Tarifa',10392,10403,3,5),(6897,'Taroda',36262,36265,3,1),(6898,'Tarragona',37138,37159,3,10),(6899,'Tàrrega',24400,24415,3,7),(6900,'Tarrés',24416,24419,3,1),(6901,'Tarroja de Segarra',24420,24423,3,1),(6902,'Tartanedo',16984,16993,3,4),(6903,'Tauste',44388,44393,3,2),(6904,'Tavernes Blanques',40316,40319,3,1),(6905,'Tavernes de la Valldigna',40320,40323,3,1),(6906,'Tavèrnoles',7084,7087,3,1),(6907,'Tavertet',7088,7091,3,1),(6908,'Teba',27298,27301,3,1),(6909,'Tébar',13670,13673,3,1),(6910,'Teià',7092,7095,3,1),(6911,'Tejada',8642,8645,3,1),(6912,'Tejadillos',13674,13677,3,1),(6913,'Tejado',36266,36271,3,2),(6914,'Tejeda de Tiétar',9910,9915,3,2),(6915,'Tejeda y Segoyuela',33646,33649,3,1),(6916,'Tella-Sin',19244,19251,3,3),(6917,'Tembleque',39124,39127,3,1),(6918,'Tendilla',16994,16997,3,1),(6919,'Tenebrón',33650,33653,3,1),(6920,'Teo',20858,20867,3,4),(6921,'Teresa',11704,11707,3,1),(6922,'Teresa de Cofrentes',40324,40329,3,2),(6923,'Térmens',24424,24427,3,1),(6924,'Terque',2230,2235,3,2),(6925,'Terrades',14832,14835,3,1),(6926,'Terradillos',33654,33661,3,3),(6927,'Terradillos de Esgueva',8646,8649,3,1),(6928,'Terrassa',7096,7115,3,9),(6929,'Terrateig',40330,40333,3,1),(6930,'Terrer',44394,44397,3,1),(6931,'Terriente',38146,38149,3,1),(6932,'Terrinches',12256,12259,3,1),(6933,'Terroba',21602,21605,3,1),(6934,'Teruel',38150,38173,3,11),(6935,'Terzaga',16998,17001,3,1),(6936,'Teulada',1600,1605,3,2),(6937,'Teverga',3254,3259,3,2),(6938,'Tiana',7116,7119,3,1),(6939,'Tibi',1606,1609,3,1),(6940,'Tiebas-Muruarte de Reta',29074,29079,3,2),(6941,'Tiedra',41160,41163,3,1),(6942,'Tielmes',26628,26631,3,1),(6943,'Tierga',44398,44401,3,1),(6944,'Tierz',19252,19255,3,1),(6945,'Tierzo',17002,17005,3,1),(6946,'Tiétar',9916,9917,3,0),(6947,'Tíjola',2236,2245,3,4),(6948,'Tinajas',13678,13681,3,1),(6949,'Tineo',3260,3277,3,8),(6950,'Tinieblas de la Sierra',8650,8655,3,2),(6951,'Tiñosillos',4352,4355,3,1),(6952,'Tirapu',29080,29083,3,1),(6953,'Tirgo',21606,21611,3,2),(6954,'Tírig',11708,11711,3,1),(6955,'Tírvia',24428,24431,3,1),(6956,'Titaguas',40334,40337,3,1),(6957,'Titulcia',26632,26635,3,1),(6958,'Tiurana',24432,24435,3,1),(6959,'Tivenys',37160,37163,3,1),(6960,'Tivissa',37164,37169,3,2),(6961,'Tobar',8656,8659,3,1),(6962,'Tobarra',818,825,3,3),(6963,'Tobed',44402,44405,3,1),(6964,'Tobía',21612,21615,3,1),(6965,'Tocina',35408,35413,3,2),(6966,'Todolella',11712,11715,3,1),(6967,'Toén',30134,30143,3,4),(6968,'Toga',11716,11719,3,1),(6969,'Tolbaños',4356,4361,3,2),(6970,'Toledo',39128,39145,3,8),(6971,'Tollos',1610,1613,3,1),(6972,'Tolocirio',34776,34779,3,1),(6973,'Tolosa',17624,17633,3,4),(6974,'Tolox',27302,27305,3,1),(6975,'Tolva',19256,19259,3,1),(6976,'Tomares',35414,35417,3,1),(6977,'Tomelloso',12260,12265,3,2),(6978,'Tomiño',31988,32013,3,12),(6979,'Tona',7120,7123,3,1),(6980,'Topas',33662,33665,3,1),(6981,'Toques',20868,20871,3,1),(6982,'Torà',24436,24441,3,2),(6983,'Toral de los Guzmanes',22854,22857,3,1),(6984,'Toral de los Vados',22858,22871,3,6),(6985,'Torás',11720,11723,3,1),(6986,'Tordehumos',41164,41167,3,1),(6987,'Tordellego',17006,17009,3,1),(6988,'Tordelrábano',17010,17013,3,1),(6989,'Tordera',7124,7127,3,1),(6990,'Tordesillas',41168,41175,3,3),(6991,'Tordesilos',17014,17017,3,1),(6992,'Tordillos',33666,33669,3,1),(6993,'Tordoia',20872,20879,3,3),(6994,'Tordómar',8660,8663,3,1),(6995,'Torelló',7128,7131,3,1),(6996,'Toreno',22872,22887,3,7),(6997,'Torija',17018,17023,3,2),(6998,'Toril',9918,9927,3,4),(6999,'Toril y Masegoso',38174,38177,3,1),(7000,'Torla-Ordesa',19260,19267,3,3),(7001,'Torlengua',36272,36275,3,1),(7002,'Tormantos',21616,21619,3,1),(7003,'Tormellas',4362,4365,3,1),(7004,'Tormón',38178,38181,3,1),(7005,'Tormos',1614,1617,3,1),(7006,'Tornabous',24442,24445,3,1),(7007,'Tornadizos de Ávila',4366,4369,3,1),(7008,'Tornavacas',9928,9931,3,1),(7009,'Tornos',38182,38185,3,1),(7010,'Toro',43010,43019,3,4),(7011,'Torquemada',31000,31003,3,1),(7012,'Torralba',13682,13685,3,1),(7013,'Torralba de Aragón',19268,19271,3,1),(7014,'Torralba de Calatrava',12266,12269,3,1),(7015,'Torralba de los Frailes',44406,44409,3,1),(7016,'Torralba de los Sisones',38186,38189,3,1),(7017,'Torralba de Oropesa',39146,39149,3,1),(7018,'Torralba de Ribota',44410,44413,3,1),(7019,'Torralba del Pinar',11724,11727,3,1),(7020,'Torralba del Río',29084,29089,3,2),(7021,'Torralbilla',44414,44417,3,1),(7022,'Torre Alháquime',10404,10407,3,1),(7023,'Torre de Arcas',38190,38193,3,1),(7024,'Torre de Don Miguel',9932,9935,3,1),(7025,'Torre de Esgueva',41176,41179,3,1),(7026,'Torre de Juan Abad',12270,12273,3,1),(7027,'Torre de las Arcas',38194,38197,3,1),(7028,'Torre de Miguel Sesmero',5076,5079,3,1),(7029,'Torre de Peñafiel',41180,41185,3,2),(7030,'Torre de Santa María',9936,9939,3,1),(7031,'Torre del Bierzo',22888,22903,3,7),(7032,'Torre del Burgo',17024,17027,3,1),(7033,'Torre del Compte',38198,38201,3,1),(7034,'Torre en Cameros',21620,21623,3,1),(7035,'Torre la Ribera',19272,19279,3,3),(7036,'Torre los Negros',38202,38205,3,1),(7037,'Torre Val de San Pedro',34780,34783,3,1),(7038,'Torre-Cardela',15806,15809,3,1),(7039,'Torre-Pacheco',27918,27933,3,7),(7040,'Torre-serona',24446,24449,3,1),(7041,'Torreadrada',34784,34787,3,1),(7042,'Torrebaja',40338,40341,3,1),(7043,'Torrebesses',24450,24453,3,1),(7044,'Torreblacos',36276,36281,3,2),(7045,'Torreblanca',11728,11731,3,1),(7046,'Torreblascopedro',19866,19871,3,2),(7047,'Torrecaballeros',34788,34791,3,1),(7048,'Torrecampo',12800,12803,3,1),(7049,'Torrechiva',11732,11735,3,1),(7050,'Torrecilla de Alcañiz',38206,38209,3,1),(7051,'Torrecilla de la Abadesa',41186,41189,3,1),(7052,'Torrecilla de la Jara',39150,39153,3,1),(7053,'Torrecilla de la Orden',41190,41193,3,1),(7054,'Torrecilla de la Torre',41194,41197,3,1),(7055,'Torrecilla de los Ángeles',9940,9943,3,1),(7056,'Torrecilla del Monte',8664,8667,3,1),(7057,'Torrecilla del Pinar',34792,34795,3,1),(7058,'Torrecilla del Rebollar',38210,38215,3,2),(7059,'Torrecilla en Cameros',21624,21627,3,1),(7060,'Torrecilla sobre Alesanco',21628,21631,3,1),(7061,'Torrecillas de la Tiesa',9944,9947,3,1),(7062,'Torrecuadrada de Molina',17028,17031,3,1),(7063,'Torrecuadradilla',17032,17035,3,1),(7064,'Torredelcampo',19872,19875,3,1),(7065,'Torredembarra',37170,37173,3,1),(7066,'Torredonjimeno',19876,19879,3,1),(7067,'Torrefarrera',24454,24461,3,3),(7068,'Torrefeta i Florejacs',24462,24467,3,2),(7069,'Torregalindo',8668,8671,3,1),(7070,'Torregamones',43020,43023,3,1),(7071,'Torregrossa',24468,24471,3,1),(7072,'Torrehermosa',44418,44421,3,1),(7073,'Torreiglesias',34796,34801,3,2),(7074,'Torrejón de Ardoz',26636,26639,3,1),(7075,'Torrejón de la Calzada',26640,26643,3,1),(7076,'Torrejón de Velasco',26644,26647,3,1),(7077,'Torrejón del Rey',17036,17039,3,1),(7078,'Torrejón el Rubio',9948,9951,3,1),(7079,'Torrejoncillo',9952,9957,3,2),(7080,'Torrejoncillo del Rey',13686,13693,3,3),(7081,'Torrelacárcel',38216,38219,3,1),(7082,'Torrelaguna',26648,26651,3,1),(7083,'Torrelameu',24472,24475,3,1),(7084,'Torrelapaja',44422,44425,3,1),(7085,'Torrelara',8672,8675,3,1),(7086,'Torrelavega',11110,11119,3,4),(7087,'Torrelavit',7132,7135,3,1),(7088,'Torrella',40342,40345,3,1),(7089,'Torrellas',44426,44429,3,1),(7090,'Torrelles de Foix',7136,7139,3,1),(7091,'Torrelles de Llobregat',7140,7143,3,1),(7092,'Torrelobatón',41198,41201,3,1),(7093,'Torrelodones',26652,26655,3,1),(7094,'Torremanzanas/la Torre de les Maçanes',1618,1621,3,1),(7095,'Torremayor',5080,5083,3,1),(7096,'Torremejía',5084,5087,3,1),(7097,'Torremenga',9958,9961,3,1),(7098,'Torremocha',9962,9965,3,1),(7099,'Torremocha de Jadraque',17040,17043,3,1),(7100,'Torremocha de Jarama',26656,26659,3,1),(7101,'Torremocha de Jiloca',38220,38223,3,1),(7102,'Torremocha del Campo',17044,17051,3,3),(7103,'Torremocha del Pinar',17052,17055,3,1),(7104,'Torremochuela',17056,17059,3,1),(7105,'Torremolinos',27306,27309,3,1),(7106,'Torremontalbo',21632,21635,3,1),(7107,'Torremormojón',31004,31007,3,1),(7108,'Torrent',14836,14849,3,6),(7109,'Torrent',40346,40347,3,0),(7110,'Torrente de Cinca',19280,19283,3,1),(7111,'Torrenueva',12274,12277,3,1),(7112,'Torreorgaz',9966,9969,3,1),(7113,'Torrepadre',8676,8681,3,2),(7114,'Torreperogil',19880,19883,3,1),(7115,'Torrequemada',9970,9973,3,1),(7116,'Torres',19884,19887,3,1),(7117,'Torres de Albánchez',19888,19891,3,1),(7118,'Torres de Albarracín',38224,38227,3,1),(7119,'Torres de Alcanadre',19284,19287,3,1),(7120,'Torres de Barbués',19288,19291,3,1),(7121,'Torres de Berrellén',44430,44433,3,1),(7122,'Torres de la Alameda',26660,26663,3,1),(7123,'Torres de Segre',24476,24479,3,1),(7124,'Torres del Carrizal',43024,43027,3,1),(7125,'Torres del Río',29090,29093,3,1),(7126,'Torres Torres',40348,40351,3,1),(7127,'Torresandino',8682,8685,3,1),(7128,'Torrescárcela',41202,41205,3,1),(7129,'Torresmenudas',33670,33673,3,1),(7130,'Torrevelilla',38228,38231,3,1),(7131,'Torrevieja',1622,1639,3,8),(7132,'Torrico',39154,39157,3,1),(7133,'Torrijas',38232,38235,3,1),(7134,'Torrijo de la Cañada',44434,44437,3,1),(7135,'Torrijo del Campo',38236,38239,3,1),(7136,'Torrijos',39158,39161,3,1),(7137,'Torroella de Fluvià',14850,14853,3,1),(7138,'Torroella de Montgrí',14854,14865,3,5),(7139,'Torroja del Priorat',37174,37177,3,1),(7140,'Torrox',27310,27317,3,3),(7141,'Torrubia',17060,17063,3,1),(7142,'Torrubia de Soria',36282,36285,3,1),(7143,'Torrubia del Campo',13694,13697,3,1),(7144,'Torrubia del Castillo',13698,13701,3,1),(7145,'Tortellà',14866,14869,3,1),(7146,'Tórtola de Henares',17064,17067,3,1),(7147,'Tórtoles',4370,4373,3,1),(7148,'Tórtoles de Esgueva',8686,8691,3,2),(7149,'Tortosa',37178,37191,3,6),(7150,'Tortuera',17068,17071,3,1),(7151,'Tortuero',17072,17075,3,1),(7152,'Torvizcón',15810,15813,3,1),(7153,'Tosantos',8692,8695,3,1),(7154,'Toses',14870,14873,3,1),(7155,'Tosos',44438,44441,3,1),(7156,'Tossa de Mar',14874,14877,3,1),(7157,'Totalán',27318,27321,3,1),(7158,'Totana',27934,27941,3,3),(7159,'Totanés',39162,39165,3,1),(7160,'Touro',20880,20889,3,4),(7161,'Tous',40352,40355,3,1),(7162,'Trabada',25644,25653,3,4),(7163,'Trabadelo',22904,22909,3,2),(7164,'Trabanca',33674,33677,3,1),(7165,'Trabazos',43028,43037,3,4),(7166,'Tragacete',13702,13705,3,1),(7167,'Traíd',17076,17079,3,1),(7168,'Traiguera',11736,11739,3,1),(7169,'Tramacastiel',38240,38245,3,2),(7170,'Tramacastilla',38246,38249,3,1),(7171,'Tramaced',19292,19295,3,1),(7172,'Trasierra',5088,5091,3,1),(7173,'Trasmiras',30144,30153,3,4),(7174,'Trasmoz',44442,44445,3,1),(7175,'Trasobares',44446,44449,3,1),(7176,'Traspinedo',41206,41209,3,1),(7177,'Trazo',20890,20895,3,2),(7178,'Trebujena',10408,10411,3,1),(7179,'Trefacio',43038,43043,3,2),(7180,'Tremedal de Tormes',33678,33683,3,2),(7181,'Tremp',24480,24505,3,12),(7182,'Tres Cantos',26664,26669,3,2),(7183,'Trescasas',34802,34805,3,1),(7184,'Tresjuncos',13706,13709,3,1),(7185,'Trespaderne',8696,8703,3,3),(7186,'Tresviso',11120,11123,3,1),(7187,'Trévago',36286,36289,3,1),(7188,'Trevélez',15814,15817,3,1),(7189,'Treviana',21636,21639,3,1),(7190,'Triacastela',25654,25665,3,5),(7191,'Tribaldos',13710,13713,3,1),(7192,'Tricio',21640,21643,3,1),(7193,'Trigueros',18096,18099,3,1),(7194,'Trigueros del Valle',41210,41213,3,1),(7195,'Trijueque',17080,17083,3,1),(7196,'Trillo',17084,17091,3,3),(7197,'Triollo',31008,31011,3,1),(7198,'Tronchón',38250,38253,3,1),(7199,'Truchas',22910,22917,3,3),(7200,'Trucios-Turtzioz',41958,41961,3,1),(7201,'Trujillanos',5092,5095,3,1),(7202,'Trujillo',9974,9985,3,5),(7203,'Tubilla del Agua',8704,8709,3,2),(7204,'Tubilla del Lago',8710,8713,3,1),(7205,'Tudanca',11124,11127,3,1),(7206,'Tudela',29094,29097,3,1),(7207,'Tudela de Duero',41214,41221,3,3),(7208,'Tudelilla',21644,21647,3,1),(7209,'Tuéjar',40356,40359,3,1),(7210,'Tui',32014,32035,3,10),(7211,'Tulebras',29098,29101,3,1),(7212,'Turcia',22918,22923,3,2),(7213,'Turégano',34806,34811,3,2),(7214,'Turís',40360,40363,3,1),(7215,'Turleque',39166,39169,3,1),(7216,'Turón',15818,15821,3,1),(7217,'Turre',2246,2249,3,1),(7218,'Turrillas',2250,2253,3,1),(7219,'Úbeda',19892,19903,3,5),(7220,'Ubide',41962,41965,3,1),(7221,'Ubrique',10412,10415,3,1),(7222,'Ucar',29102,29105,3,1),(7223,'Uceda',17092,17095,3,1),(7224,'Ucero',36290,36293,3,1),(7225,'Uclés',13714,13717,3,1),(7226,'Udías',11128,11131,3,1),(7227,'Ugao-Miraballes',41966,41969,3,1),(7228,'Ugena',39170,39173,3,1),(7229,'Ugíjar',15822,15829,3,3),(7230,'Uharte Arakil',29106,29109,3,1),(7231,'Ujados',17096,17099,3,1),(7232,'Ujué',29110,29113,3,1),(7233,'Ulea',27942,27945,3,1),(7234,'Uleila del Campo',2254,2259,3,2),(7235,'Ullà',14878,14881,3,1),(7236,'Ullastrell',7144,7147,3,1),(7237,'Ullastret',14882,14885,3,1),(7238,'Ulldecona',37192,37199,3,3),(7239,'Ulldemolins',37200,37203,3,1),(7240,'Ultramort',14886,14889,3,1),(7241,'Ultzama',29114,29119,3,2),(7242,'Umbrete',35418,35421,3,1),(7243,'Umbrías',4374,4377,3,1),(7244,'Uña',13718,13721,3,1),(7245,'Uña de Quintana',43044,43047,3,1),(7246,'Uncastillo',44450,44453,3,1),(7247,'Unciti',29120,29125,3,2),(7248,'Undués de Lerda',44454,44457,3,1),(7249,'Unzué/Untzue',29126,29129,3,1),(7250,'Úrbel del Castillo',8714,8717,3,1),(7251,'Urda',39174,39177,3,1),(7252,'Urdazubi/Urdax',29130,29135,3,2),(7253,'Urdiain',29136,29139,3,1),(7254,'Urdiales del Páramo',22924,22929,3,2),(7255,'Urduliz',41970,41975,3,2),(7256,'Urduña/Orduña',41976,41981,3,2),(7257,'Urkabustaiz',278,285,3,3),(7258,'Urnieta',17634,17637,3,1),(7259,'Urones de Castroponce',41222,41225,3,1),(7260,'Urrácal',2260,2263,3,1),(7261,'Urraul Alto',29140,29145,3,2),(7262,'Urraul Bajo',29146,29153,3,3),(7263,'Urrea de Gaén',38254,38257,3,1),(7264,'Urrea de Jalón',44458,44461,3,1),(7265,'Urretxu',17638,17641,3,1),(7266,'Urriés',44462,44465,3,1),(7267,'Urroz',29154,29157,3,1),(7268,'Urroz-Villa',29158,29161,3,1),(7269,'Urueña',41226,41229,3,1),(7270,'Urueñas',34812,34815,3,1),(7271,'Uruñuela',21648,21651,3,1),(7272,'Urús',14890,14893,3,1),(7273,'Urzainqui/Urzainki',29162,29165,3,1),(7274,'Usagre',5096,5099,3,1),(7275,'Used',44466,44469,3,1),(7276,'Useras/les Useres',11740,11747,3,3),(7277,'Usurbil',17642,17647,3,2),(7278,'Utande',17100,17103,3,1),(7279,'Utebo',44470,44473,3,1),(7280,'Uterga',29166,29169,3,1),(7281,'Utiel',40364,40373,3,4),(7282,'Utrera',35422,35435,3,6),(7283,'Utrillas',38258,38265,3,3),(7284,'Uztárroz/Uztarroze',29170,29173,3,1),(7285,'Vacarisses',7148,7151,3,1),(7286,'Vadillo',36294,36297,3,1),(7287,'Vadillo de la Guareña',43048,43051,3,1),(7288,'Vadillo de la Sierra',4378,4381,3,1),(7289,'Vadocondes',8718,8721,3,1),(7290,'Val de San Lorenzo',22930,22933,3,1),(7291,'Val de San Martín',44474,44477,3,1),(7292,'Val de San Vicente',11132,11143,3,5),(7293,'Val do Dubra',20896,20905,3,4),(7294,'Valacloche',38266,38269,3,1),(7295,'Valbona',38270,38273,3,1),(7296,'Valbuena de Duero',41230,41233,3,1),(7297,'Valbuena de Pisuerga',31012,31015,3,1),(7298,'Valcabado',43052,43055,3,1),(7299,'Valdáliga',11144,11151,3,3),(7300,'Valdaracete',26670,26673,3,1),(7301,'Valdarachas',17104,17107,3,1),(7302,'Valdastillas',9986,9989,3,1),(7303,'Valde-Ucieza',31016,31019,3,1),(7304,'Valdealgorfa',38274,38277,3,1),(7305,'Valdeande',8722,8725,3,1),(7306,'Valdearcos de la Vega',41234,41237,3,1),(7307,'Valdearenas',17108,17111,3,1),(7308,'Valdeavellano',17112,17115,3,1),(7309,'Valdeavellano de Tera',36298,36301,3,1),(7310,'Valdeavero',26674,26677,3,1),(7311,'Valdeaveruelo',17116,17121,3,2),(7312,'Valdecaballeros',5100,5103,3,1),(7313,'Valdecañas de Tajo',9990,9995,3,2),(7314,'Valdecarros',33684,33687,3,1),(7315,'Valdecasa',4382,4385,3,1),(7316,'Valdeconcha',17122,17125,3,1),(7317,'Valdecuenca',38278,38281,3,1),(7318,'Valdefinjas',43056,43059,3,1),(7319,'Valdefresno',22934,22943,3,4),(7320,'Valdefuentes',9996,10001,3,2),(7321,'Valdefuentes de Sangusín',33688,33691,3,1),(7322,'Valdefuentes del Páramo',22944,22947,3,1),(7323,'Valdeganga',826,829,3,1),(7324,'Valdegeña',36302,36305,3,1),(7325,'Valdegovía/Gaubea',286,295,3,4),(7326,'Valdegrudas',17126,17129,3,1),(7327,'Valdehijaderos',33692,33695,3,1),(7328,'Valdehorna',44478,44481,3,1),(7329,'Valdehúncar',10002,10005,3,1),(7330,'Valdelacalzada',5104,5107,3,1),(7331,'Valdelacasa',33696,33699,3,1),(7332,'Valdelacasa de Tajo',10006,10009,3,1),(7333,'Valdelageve',33700,33703,3,1),(7334,'Valdelagua del Cerro',36306,36309,3,1),(7335,'Valdelaguna',26678,26681,3,1),(7336,'Valdelarco',18100,18103,3,1),(7337,'Valdelcubo',17130,17133,3,1),(7338,'Valdelinares',38282,38285,3,1),(7339,'Valdelosa',33704,33707,3,1),(7340,'Valdeltormo',38286,38289,3,1),(7341,'Valdelugueros',22948,22957,3,4),(7342,'Valdemadera',21652,21655,3,1),(7343,'Valdemaluque',36310,36315,3,2),(7344,'Valdemanco',26682,26685,3,1),(7345,'Valdemanco del Esteras',12278,12281,3,1),(7346,'Valdemaqueda',26686,26689,3,1),(7347,'Valdemeca',13722,13725,3,1),(7348,'Valdemierque',33708,33711,3,1),(7349,'Valdemora',22958,22961,3,1),(7350,'Valdemorales',10010,10013,3,1),(7351,'Valdemorillo',26690,26693,3,1),(7352,'Valdemorillo de la Sierra',13726,13729,3,1),(7353,'Valdemoro',26694,26697,3,1),(7354,'Valdemoro-Sierra',13730,13733,3,1),(7355,'Valdenebro',36316,36323,3,3),(7356,'Valdenebro de los Valles',41238,41241,3,1),(7357,'Valdenuño Fernández',17134,17137,3,1),(7358,'Valdeobispo',10014,10017,3,1),(7359,'Valdeolea',11152,11157,3,2),(7360,'Valdeolivas',13734,13737,3,1),(7361,'Valdeolmillos',31020,31023,3,1),(7362,'Valdeolmos-Alalpardo',26698,26701,3,1),(7363,'Valdepeñas',12282,12287,3,2),(7364,'Valdepeñas de Jaén',19904,19911,3,3),(7365,'Valdepeñas de la Sierra',17138,17141,3,1),(7366,'Valdepiélago',22962,22969,3,3),(7367,'Valdepiélagos',26702,26705,3,1),(7368,'Valdepolo',22970,22977,3,3),(7369,'Valdeprado',36324,36329,3,2),(7370,'Valdeprado del Río',11158,11165,3,3),(7371,'Valdeprados',34816,34819,3,1),(7372,'Valderas',22978,22981,3,1),(7373,'Valderrábano',31024,31029,3,2),(7374,'Valderrebollo',17142,17145,3,1),(7375,'Valderredible',11166,11179,3,6),(7376,'Valderrey',22982,22991,3,4),(7377,'Valderrobres',38290,38293,3,1),(7378,'Valderrodilla',36330,36333,3,1),(7379,'Valderrodrigo',33712,33715,3,1),(7380,'Valderrubio',15830,15831,3,0),(7381,'Valderrueda',22992,23009,3,8),(7382,'Valdés',3278,3309,3,15),(7383,'Valdesamario',23010,23013,3,1),(7384,'Valdescorriel',43060,43063,3,1),(7385,'Valdesotos',17146,17149,3,1),(7386,'Valdestillas',41242,41245,3,1),(7387,'Valdetorres',5108,5111,3,1),(7388,'Valdetorres de Jarama',26706,26709,3,1),(7389,'Valdetórtola',13738,13741,3,1),(7390,'Valdevacas de Montejo',34820,34823,3,1),(7391,'Valdevacas y Guijar',34824,34827,3,1),(7392,'Valdeverdeja',39178,39181,3,1),(7393,'Valdevimbre',23014,23019,3,2),(7394,'Valdezate',8726,8729,3,1),(7395,'Valdilecha',26710,26713,3,1),(7396,'Valdorros',8730,8733,3,1),(7397,'Valdoviño',20906,20921,3,7),(7398,'Valdunciel',33716,33721,3,2),(7399,'Valdunquillo',41246,41249,3,1),(7400,'Valencia',40374,40435,3,30),(7401,'Valencia de Alcántara',10018,10033,3,7),(7402,'Valencia de Don Juan',23020,23025,3,2),(7403,'Valencia de las Torres',5112,5115,3,1),(7404,'Valencia del Mombuey',5116,5119,3,1),(7405,'Valencia del Ventoso',5120,5123,3,1),(7406,'Valencina de la Concepción',35436,35439,3,1),(7407,'Valenzuela',12804,12807,3,1),(7408,'Valenzuela de Calatrava',12288,12291,3,1),(7409,'Valero',33722,33725,3,1),(7410,'Valfarta',19296,19299,3,1),(7411,'Valfermoso de Tajuña',17150,17153,3,1),(7412,'Valga',32036,32043,3,3),(7413,'Valgañón',21656,21659,3,1),(7414,'Valhermoso',17154,17157,3,1),(7415,'Valhermoso de la Fuente',13742,13745,3,1),(7416,'Valjunquera',38294,38297,3,1),(7417,'Vall d\'Alba',11748,11753,3,2),(7418,'Vall de Almonacid',11754,11757,3,1),(7419,'Vall de Cardós',24506,24517,3,5),(7420,'Vall de Gallinera',1640,1645,3,2),(7421,'Vall-llobrega',14894,14897,3,1),(7422,'Vallada',40436,40439,3,1),(7423,'Valladolid',41250,41299,3,24),(7424,'Vallanca',40440,40443,3,1),(7425,'Vallarta de Bureba',8734,8737,3,1),(7426,'Vallat',11758,11761,3,1),(7427,'Vallbona d\'Anoia',7152,7155,3,1),(7428,'Vallbona de les Monges',24518,24523,3,2),(7429,'Vallcebre',7156,7159,3,1),(7430,'Vallclara',37204,37207,3,1),(7431,'Valldemossa',5652,5657,3,2),(7432,'Valle de Abdalajís',27322,27325,3,1),(7433,'Valle de Bardají',19300,19303,3,1),(7434,'Valle de Cerrato',31030,31033,3,1),(7435,'Valle de Egüés/Eguesibar',29174,29183,3,4),(7436,'Valle de Hecho',19304,19313,3,4),(7437,'Valle de la Serena',5124,5127,3,1),(7438,'Valle de las Navas',8738,8743,3,2),(7439,'Valle de Lierp',19314,19319,3,2),(7440,'Valle de Losa',8744,8751,3,3),(7441,'Valle de Manzanedo',8752,8757,3,2),(7442,'Valle de Matamoros',5128,5131,3,1),(7443,'Valle de Mena',8758,8777,3,9),(7444,'Valle de Oca',8778,8781,3,1),(7445,'Valle de Ollo/Ollaran',29184,29187,3,1),(7446,'Valle de Santa Ana',5132,5135,3,1),(7447,'Valle de Santibáñez',8782,8789,3,3),(7448,'Valle de Sedano',8790,8799,3,4),(7449,'Valle de Tabladillo',34828,34831,3,1),(7450,'Valle de Tobalina',8800,8811,3,5),(7451,'Valle de Trápaga-Trapagaran',41982,41987,3,2),(7452,'Valle de Valdebezana',8812,8817,3,2),(7453,'Valle de Valdelaguna',8818,8821,3,1),(7454,'Valle de Valdelucio',8822,8825,3,1),(7455,'Valle de Villaverde',11180,11183,3,1),(7456,'Valle de Yerri/Deierri',29188,29199,3,5),(7457,'Valle de Zamanzas',8826,8829,3,1),(7458,'Valle del Retortillo',31034,31037,3,1),(7459,'Valle del Zalabí',15832,15835,3,1),(7460,'Vallecillo',23026,23029,3,1),(7461,'Vallejera',8830,8833,3,1),(7462,'Vallejera de Riofrío',33726,33729,3,1),(7463,'Vallelado',34832,34835,3,1),(7464,'Valleruela de Pedraza',34836,34839,3,1),(7465,'Valleruela de Sepúlveda',34840,34843,3,1),(7466,'Vallés',40444,40447,3,1),(7467,'Valles de Palenzuela',8834,8837,3,1),(7468,'Vallesa de la Guareña',43064,43067,3,1),(7469,'Vallfogona de Balaguer',24524,24529,3,2),(7470,'Vallfogona de Ripollès',14898,14901,3,1),(7471,'Vallfogona de Riucorb',37208,37211,3,1),(7472,'Vallgorguina',7160,7165,3,2),(7473,'Vallibona',11762,11765,3,1),(7474,'Vallirana',7166,7169,3,1),(7475,'Vallmoll',37212,37215,3,1),(7476,'Vallromanes',7170,7173,3,1),(7477,'Valls',37216,37223,3,3),(7478,'Valluércanes',8838,8841,3,1),(7479,'Valmadrid',44482,44485,3,1),(7480,'Valmala',8842,8845,3,1),(7481,'Valmojado',39182,39185,3,1),(7482,'Válor',15836,15839,3,1),(7483,'Valoria la Buena',41300,41303,3,1),(7484,'Valpalmas',44486,44489,3,1),(7485,'Valsalabroso',33730,33735,3,2),(7486,'Valsalobre',13746,13749,3,1),(7487,'Valseca',34844,34847,3,1),(7488,'Valsequillo',12808,12811,3,1),(7489,'Valtablado del Río',17158,17161,3,1),(7490,'Valtajeros',36334,36337,3,1),(7491,'Valtiendas',34848,34853,3,2),(7492,'Valtierra',29200,29203,3,1),(7493,'Valtorres',44490,44493,3,1),(7494,'Valverde de Alcalá',26714,26717,3,1),(7495,'Valverde de Burguillos',5136,5139,3,1),(7496,'Valverde de Campos',41304,41307,3,1),(7497,'Valverde de Júcar',13750,13753,3,1),(7498,'Valverde de la Vera',10034,10037,3,1),(7499,'Valverde de la Virgen',23030,23037,3,3),(7500,'Valverde de Leganés',5140,5143,3,1),(7501,'Valverde de Llerena',5144,5147,3,1),(7502,'Valverde de los Arroyos',17162,17165,3,1),(7503,'Valverde de Mérida',5148,5151,3,1),(7504,'Valverde de Valdelacasa',33736,33739,3,1),(7505,'Valverde del Camino',18104,18107,3,1),(7506,'Valverde del Fresno',10038,10041,3,1),(7507,'Valverde del Majano',34854,34857,3,1),(7508,'Valverde-Enrique',23038,23043,3,2),(7509,'Valverdejo',13754,13757,3,1),(7510,'Valverdón',33740,33745,3,2),(7511,'Vandellòs i l\'Hospitalet de l\'Infant',37224,37229,3,2),(7512,'Vara de Rey',13758,13761,3,1),(7513,'Veciana',7174,7177,3,1),(7514,'Vecinos',33746,33753,3,3),(7515,'Vedra',20922,20929,3,3),(7516,'Vega de Espinareda',23044,23057,3,6),(7517,'Vega de Infanzones',23058,23063,3,2),(7518,'Vega de Liébana',11184,11189,3,2),(7519,'Vega de Pas',11190,11197,3,3),(7520,'Vega de Ruiponce',41308,41311,3,1),(7521,'Vega de Santa María',4386,4389,3,1),(7522,'Vega de Tera',43068,43075,3,3),(7523,'Vega de Tirados',33754,33759,3,2),(7524,'Vega de Valcarce',23064,23073,3,4),(7525,'Vega de Valdetronco',41312,41315,3,1),(7526,'Vega de Villalobos',43076,43079,3,1),(7527,'Vega del Codorno',13762,13765,3,1),(7528,'Vegacervera',23074,23079,3,2),(7529,'Vegadeo',3310,3319,3,4),(7530,'Vegalatrave',43080,43083,3,1),(7531,'Veganzones',34858,34861,3,1),(7532,'Vegaquemada',23080,23089,3,4),(7533,'Vegas de Matute',34862,34865,3,1),(7534,'Vegas del Condado',23090,23101,3,5),(7535,'Vegas del Genil',15840,15845,3,2),(7536,'Vegaviana',10042,10047,3,2),(7537,'Veguillas de la Sierra',38298,38301,3,1),(7538,'Vejer de la Frontera',10416,10425,3,4),(7539,'Velada',39186,39189,3,1),(7540,'Velamazán',36338,36341,3,1),(7541,'Velascálvaro',41316,41319,3,1),(7542,'Velayos',4390,4393,3,1),(7543,'Velefique',2264,2267,3,1),(7544,'Vélez de Benaudalla',15846,15853,3,3),(7545,'Vélez-Blanco',2268,2275,3,3),(7546,'Vélez-Málaga',27326,27347,3,10),(7547,'Vélez-Rubio',2276,2287,3,5),(7548,'Velilla',41320,41323,3,1),(7549,'Velilla de Cinca',19320,19323,3,1),(7550,'Velilla de Ebro',44494,44497,3,1),(7551,'Velilla de Jiloca',44498,44501,3,1),(7552,'Velilla de la Sierra',36342,36345,3,1),(7553,'Velilla de los Ajos',36346,36349,3,1),(7554,'Velilla de San Antonio',26718,26721,3,1),(7555,'Velilla del Río Carrión',31038,31045,3,3),(7556,'Vellisca',13766,13769,3,1),(7557,'Velliza',41324,41327,3,1),(7558,'Vencillón',19324,19327,3,1),(7559,'Venialbo',43084,43087,3,1),(7560,'Venta de Baños',31046,31051,3,2),(7561,'Venta del Moro',40448,40453,3,2),(7562,'Ventalló',14902,14911,3,4),(7563,'Ventas de Huelma',15854,15857,3,1),(7564,'Ventosa',21660,21663,3,1),(7565,'Ventosa de la Cuesta',41328,41331,3,1),(7566,'Ventosa del Río Almar',33760,33763,3,1),(7567,'Ventosilla y Tejadilla',34866,34869,3,1),(7568,'Ventrosa',21664,21667,3,1),(7569,'Venturada',26722,26725,3,1),(7570,'Vera',2288,2291,3,1),(7571,'Vera de Moncayo',44502,44505,3,1),(7572,'Verdú',24530,24533,3,1),(7573,'Verea',30154,30157,3,1),(7574,'Verges',14912,14915,3,1),(7575,'Verín',30158,30175,3,8),(7576,'Vertavillo',31052,31055,3,1),(7577,'Vespella de Gaià',37230,37233,3,1),(7578,'Vezdemarbán',43088,43091,3,1),(7579,'Viacamp y Litera',19328,19333,3,2),(7580,'Viana',29204,29207,3,1),(7581,'Viana de Cega',41332,41335,3,1),(7582,'Viana de Duero',36350,36353,3,1),(7583,'Viana de Jadraque',17166,17169,3,1),(7584,'Viana do Bolo',30176,30197,3,10),(7585,'Viandar de la Vera',10048,10051,3,1),(7586,'Vianos',830,833,3,1),(7587,'Viator',2292,2295,3,1),(7588,'Vic',7178,7183,3,2),(7589,'Vícar',2296,2301,3,2),(7590,'Vicién',19334,19337,3,1),(7591,'Vidángoz/Bidankoze',29208,29211,3,1),(7592,'Vidayanes',43092,43095,3,1),(7593,'Videmala',43096,43101,3,2),(7594,'Vidrà',14916,14919,3,1),(7595,'Vidreres',14920,14923,3,1),(7596,'Vielha e Mijaran',24534,24543,3,4),(7597,'Vierlas',44506,44509,3,1),(7598,'Vigo',32044,32099,3,27),(7599,'Viguera',21668,21671,3,1),(7600,'Vila de Cruces',32100,32125,3,12),(7601,'Vila-real',11766,11769,3,1),(7602,'Vila-rodona',37234,37237,3,1),(7603,'Vila-sacra',14924,14927,3,1),(7604,'Vila-sana',24544,24547,3,1),(7605,'Vila-seca',37238,37245,3,3),(7606,'Vilabella',37246,37249,3,1),(7607,'Vilabertran',14928,14931,3,1),(7608,'Vilablareix',14932,14935,3,1),(7609,'Vilaboa',32126,32133,3,3),(7610,'Vilada',7184,7187,3,1),(7611,'Viladamat',14936,14939,3,1),(7612,'Viladasens',14940,14943,3,1),(7613,'Viladecans',7188,7191,3,1),(7614,'Viladecavalls',7192,7195,3,1),(7615,'Vilademuls',14944,14949,3,2),(7616,'Viladrau',14950,14953,3,1),(7617,'Vilafamés',11770,11773,3,1),(7618,'Vilafant',14954,14957,3,1),(7619,'Vilafranca de Bonany',5658,5661,3,1),(7620,'Vilafranca del Penedès',7196,7199,3,1),(7621,'Vilagarcía de Arousa',32134,32151,3,8),(7622,'Vilagrassa',24548,24551,3,1),(7623,'Vilajuïga',14958,14961,3,1),(7624,'Vilalba',25666,25707,3,20),(7625,'Vilalba dels Arcs',37250,37253,3,1),(7626,'Vilalba Sasserra',7200,7203,3,1),(7627,'Vilaller',24552,24557,3,2),(7628,'Vilallonga de Ter',14962,14965,3,1),(7629,'Vilallonga del Camp',37254,37257,3,1),(7630,'Vilamacolum',14966,14969,3,1),(7631,'Vilamalla',14970,14973,3,1),(7632,'Vilamaniscle',14974,14977,3,1),(7633,'Vilamarín',30198,30209,3,5),(7634,'Vilamartín de Valdeorras',30210,30221,3,5),(7635,'Vilamòs',24558,24561,3,1),(7636,'Vilanant',14978,14983,3,2),(7637,'Vilanova d\'Alcolea',11774,11777,3,1),(7638,'Vilanova d\'Escornalbou',37258,37263,3,2),(7639,'Vilanova de Arousa',32152,32165,3,6),(7640,'Vilanova de Bellpuig',24562,24565,3,1),(7641,'Vilanova de l\'Aguda',24566,24571,3,2),(7642,'Vilanova de la Barca',24572,24575,3,1),(7643,'Vilanova de Meià',24576,24583,3,3),(7644,'Vilanova de Prades',37264,37267,3,1),(7645,'Vilanova de Sau',7204,7207,3,1),(7646,'Vilanova de Segrià',24584,24587,3,1),(7647,'Vilanova del Camí',7208,7211,3,1),(7648,'Vilanova del Vallès',7212,7215,3,1),(7649,'Vilanova i la Geltrú',7216,7219,3,1),(7650,'Vilaplana',37268,37271,3,1),(7651,'Vilar de Barrio',30222,30227,3,2),(7652,'Vilar de Canes',11778,11781,3,1),(7653,'Vilar de Santos',30228,30233,3,2),(7654,'Vilardevós',30234,30243,3,4),(7655,'Vilariño de Conso',30244,30251,3,3),(7656,'Vilarmaior',20930,20939,3,4),(7657,'Vilasantar',20940,20943,3,1),(7658,'Vilassar de Dalt',7220,7223,3,1),(7659,'Vilassar de Mar',7224,7227,3,1),(7660,'Vilaür',14984,14987,3,1),(7661,'Vilaverd',37272,37275,3,1),(7662,'Vilches',19912,19919,3,3),(7663,'Vileña',8846,8849,3,1),(7664,'Villa de Otura',15858,15861,3,1),(7665,'Villa de Ves',834,837,3,1),(7666,'Villa del Campo',10052,10055,3,1),(7667,'Villa del Prado',26726,26729,3,1),(7668,'Villa del Rey',10056,10059,3,1),(7669,'Villa del Río',12812,12817,3,2),(7670,'Villabáñez',41336,41339,3,1),(7671,'Villabaruz de Campos',41340,41343,3,1),(7672,'Villabasta de Valdavia',31056,31059,3,1),(7673,'Villablanca',18108,18111,3,1),(7674,'Villablino',23102,23123,3,10),(7675,'Villabona',17648,17651,3,1),(7676,'Villabrágima',41344,41347,3,1),(7677,'Villabraz',23124,23129,3,2),(7678,'Villabrázaro',43102,43107,3,2),(7679,'Villabuena de Álava/Eskuernaga',296,299,3,1),(7680,'Villabuena del Puente',43108,43111,3,1),(7681,'Villacañas',39190,39195,3,2),(7682,'Villacarralón',41348,41351,3,1),(7683,'Villacarriedo',11198,11205,3,3),(7684,'Villacarrillo',19920,19929,3,4),(7685,'Villacastín',34870,34873,3,1),(7686,'Villacid de Campos',41352,41355,3,1),(7687,'Villacidaler',31060,31065,3,2),(7688,'Villaciervos',36354,36357,3,1),(7689,'Villaco',41356,41359,3,1),(7690,'Villaconancio',31066,31069,3,1),(7691,'Villaconejos',26730,26733,3,1),(7692,'Villaconejos de Trabaque',13770,13773,3,1),(7693,'Villada',31070,31075,3,2),(7694,'Villadangos del Páramo',23130,23133,3,1),(7695,'Villademor de la Vega',23134,23137,3,1),(7696,'Villadepera',43112,43115,3,1),(7697,'Villadiego',8850,8863,3,6),(7698,'Villadoz',44510,44513,3,1),(7699,'Villaeles de Valdavia',31076,31079,3,1),(7700,'Villaescusa',43116,43119,3,1),(7701,'Villaescusa',11206,11207,3,0),(7702,'Villaescusa de Haro',13774,13777,3,1),(7703,'Villaescusa de Roa',8864,8867,3,1),(7704,'Villaescusa la Sombría',8868,8873,3,2),(7705,'Villaespasa',8874,8879,3,2),(7706,'Villafáfila',43120,43125,3,2),(7707,'Villafeliche',44514,44517,3,1),(7708,'Villaferrueña',43126,43129,3,1),(7709,'Villaflor',4394,4397,3,1),(7710,'Villaflores',33764,33767,3,1),(7711,'Villafrades de Campos',41360,41363,3,1),(7712,'Villafranca',29212,29215,3,1),(7713,'Villafranca de Córdoba',12818,12823,3,2),(7714,'Villafranca de Duero',41364,41367,3,1),(7715,'Villafranca de Ebro',44518,44521,3,1),(7716,'Villafranca de la Sierra',4398,4401,3,1),(7717,'Villafranca de los Barros',5152,5155,3,1),(7718,'Villafranca de los Caballeros',39196,39199,3,1),(7719,'Villafranca del Bierzo',23138,23155,3,8),(7720,'Villafranca del Campo',38302,38305,3,1),(7721,'Villafranca del Cid/Vilafranca',11782,11785,3,1),(7722,'Villafranca Montes de Oca',8880,8885,3,2),(7723,'Villafrechós',41368,41371,3,1),(7724,'Villafruela',8886,8889,3,1),(7725,'Villafuerte',41372,41375,3,1),(7726,'Villafufre',11208,11213,3,2),(7727,'Villagalijo',8890,8893,3,1),(7728,'Villagarcía de Campos',41376,41379,3,1),(7729,'Villagarcía de la Torre',5156,5159,3,1),(7730,'Villagarcía del Llano',13778,13783,3,2),(7731,'Villagatón',23156,23167,3,5),(7732,'Villageriz',43130,43133,3,1),(7733,'Villagómez la Nueva',41380,41383,3,1),(7734,'Villagonzalo',5160,5163,3,1),(7735,'Villagonzalo de Tormes',33768,33771,3,1),(7736,'Villagonzalo Pedernales',8894,8897,3,1),(7737,'Villahán',31080,31083,3,1),(7738,'Villaharta',12824,12827,3,1),(7739,'Villahermosa',12292,12297,3,2),(7740,'Villahermosa del Campo',38306,38309,3,1),(7741,'Villahermosa del Río',11786,11789,3,1),(7742,'Villaherreros',31084,31089,3,2),(7743,'Villahoz',8898,8901,3,1),(7744,'Villajoyosa/la Vila Joiosa',1646,1649,3,1),(7745,'Villalaco',31090,31093,3,1),(7746,'Villalán de Campos',41384,41387,3,1),(7747,'Villalar de los Comuneros',41388,41391,3,1),(7748,'Villalazán',43134,43137,3,1),(7749,'Villalba de Duero',8902,8905,3,1),(7750,'Villalba de Guardo',31094,31097,3,1),(7751,'Villalba de la Lampreana',43138,43141,3,1),(7752,'Villalba de la Loma',41392,41395,3,1),(7753,'Villalba de la Sierra',13784,13787,3,1),(7754,'Villalba de los Alcores',41396,41399,3,1),(7755,'Villalba de los Barros',5164,5167,3,1),(7756,'Villalba de los Llanos',33772,33775,3,1),(7757,'Villalba de Perejil',44522,44525,3,1),(7758,'Villalba de Rioja',21672,21675,3,1),(7759,'Villalba del Alcor',18112,18115,3,1),(7760,'Villalba del Rey',13788,13791,3,1),(7761,'Villalbarba',41400,41403,3,1),(7762,'Villalbilla',26734,26737,3,1),(7763,'Villalbilla de Burgos',8906,8911,3,2),(7764,'Villalbilla de Gumiel',8912,8915,3,1),(7765,'Villalcampo',43142,43145,3,1),(7766,'Villalcázar de Sirga',31098,31101,3,1),(7767,'Villalcón',31102,31105,3,1),(7768,'Villaldemiro',8916,8919,3,1),(7769,'Villalengua',44526,44529,3,1),(7770,'Villalgordo del Júcar',838,841,3,1),(7771,'Villalgordo del Marquesado',13792,13795,3,1),(7772,'Villalmanzo',8920,8923,3,1),(7773,'Villalobar de Rioja',21676,21679,3,1),(7774,'Villalobón',31106,31109,3,1),(7775,'Villalobos',43146,43149,3,1),(7776,'Villalón de Campos',41404,41407,3,1),(7777,'Villalonga',40454,40457,3,1),(7778,'Villalonso',43150,43153,3,1),(7779,'Villalpando',43154,43157,3,1),(7780,'Villalpardo',13796,13799,3,1),(7781,'Villalube',43158,43161,3,1),(7782,'Villaluenga de la Sagra',39200,39203,3,1),(7783,'Villaluenga de la Vega',31110,31117,3,3),(7784,'Villaluenga del Rosario',10426,10429,3,1),(7785,'Villamalea',842,845,3,1),(7786,'Villamalur',11790,11793,3,1),(7787,'Villamañán',23168,23173,3,2),(7788,'Villamandos',23174,23177,3,1),(7789,'Villamanín',23178,23191,3,6),(7790,'Villamanrique',12298,12301,3,1),(7791,'Villamanrique de la Condesa',35440,35443,3,1),(7792,'Villamanrique de Tajo',26738,26741,3,1),(7793,'Villamanta',26742,26745,3,1),(7794,'Villamantilla',26746,26749,3,1),(7795,'Villamarchante',40458,40461,3,1),(7796,'Villamartín',10430,10433,3,1),(7797,'Villamartín de Campos',31118,31121,3,1),(7798,'Villamartín de Don Sancho',23192,23195,3,1),(7799,'Villamayor',33776,33779,3,1),(7800,'Villamayor de Calatrava',12302,12305,3,1),(7801,'Villamayor de Campos',43162,43165,3,1),(7802,'Villamayor de Gállego',44530,44533,3,1),(7803,'Villamayor de los Montes',8924,8927,3,1),(7804,'Villamayor de Monjardín',29216,29219,3,1),(7805,'Villamayor de Santiago',13800,13803,3,1),(7806,'Villamayor de Treviño',8928,8931,3,1),(7807,'Villambistia',8932,8935,3,1),(7808,'Villamediana',31122,31125,3,1),(7809,'Villamediana de Iregua',21680,21685,3,2),(7810,'Villamedianilla',8936,8939,3,1),(7811,'Villamejil',23196,23203,3,3),(7812,'Villamena',15862,15865,3,1),(7813,'Villameriel',31126,31133,3,3),(7814,'Villamesías',10060,10063,3,1),(7815,'Villamiel',10064,10069,3,2),(7816,'Villamiel de la Sierra',8940,8943,3,1),(7817,'Villamiel de Toledo',39204,39207,3,1),(7818,'Villaminaya',39208,39211,3,1),(7819,'Villamol',23204,23209,3,2),(7820,'Villamontán de la Valduerna',23210,23215,3,2),(7821,'Villamor de los Escuderos',43166,43169,3,1),(7822,'Villamoratiel de las Matas',23216,23219,3,1),(7823,'Villamoronta',31134,31137,3,1),(7824,'Villamuelas',39212,39215,3,1),(7825,'Villamuera de la Cueza',31138,31141,3,1),(7826,'Villamuriel de Campos',41408,41411,3,1),(7827,'Villamuriel de Cerrato',31142,31145,3,1),(7828,'Villán de Tordesillas',41412,41415,3,1),(7829,'Villanázar',43170,43177,3,3),(7830,'Villangómez',8944,8947,3,1),(7831,'Villanova',19338,19341,3,1),(7832,'Villanúa',19342,19345,3,1),(7833,'Villanubla',41416,41419,3,1),(7834,'Villanueva de Alcardete',39216,39219,3,1),(7835,'Villanueva de Alcorón',17170,17173,3,1),(7836,'Villanueva de Algaidas',27348,27353,3,2),(7837,'Villanueva de Argaño',8948,8951,3,1),(7838,'Villanueva de Argecilla',17174,17177,3,1),(7839,'Villanueva de Ávila',4402,4405,3,1),(7840,'Villanueva de Azoague',43178,43183,3,2),(7841,'Villanueva de Bogas',39220,39223,3,1),(7842,'Villanueva de Cameros',21686,21689,3,1),(7843,'Villanueva de Campeán',43184,43187,3,1),(7844,'Villanueva de Carazo',8952,8955,3,1),(7845,'Villanueva de Castellón',40462,40465,3,1),(7846,'Villanueva de Córdoba',12828,12831,3,1),(7847,'Villanueva de Duero',41420,41423,3,1),(7848,'Villanueva de Gállego',44534,44537,3,1),(7849,'Villanueva de Gómez',4406,4409,3,1),(7850,'Villanueva de Gormaz',36358,36361,3,1),(7851,'Villanueva de Guadamejud',13804,13807,3,1),(7852,'Villanueva de Gumiel',8956,8959,3,1),(7853,'Villanueva de Huerva',44538,44541,3,1),(7854,'Villanueva de Jiloca',44542,44545,3,1),(7855,'Villanueva de la Cañada',26750,26755,3,2),(7856,'Villanueva de la Concepción',27354,27357,3,1),(7857,'Villanueva de la Condesa',41424,41427,3,1),(7858,'Villanueva de la Fuente',12306,12309,3,1),(7859,'Villanueva de la Jara',13808,13815,3,3),(7860,'Villanueva de la Reina',19930,19935,3,2),(7861,'Villanueva de la Serena',5168,5179,3,5),(7862,'Villanueva de la Sierra',10070,10075,3,2),(7863,'Villanueva de la Torre',17178,17183,3,2),(7864,'Villanueva de la Vera',10076,10081,3,2),(7865,'Villanueva de las Cruces',18116,18119,3,1),(7866,'Villanueva de las Manzanas',23220,23223,3,1),(7867,'Villanueva de las Peras',43188,43191,3,1),(7868,'Villanueva de las Torres',15866,15869,3,1),(7869,'Villanueva de los Caballeros',41428,41431,3,1),(7870,'Villanueva de los Castillejos',18120,18123,3,1),(7871,'Villanueva de los Infantes',12310,12313,3,1),(7872,'Villanueva de los Infantes',41432,41433,3,0),(7873,'Villanueva de Oscos',3320,3323,3,1),(7874,'Villanueva de Perales',26756,26759,3,1),(7875,'Villanueva de San Carlos',12314,12317,3,1),(7876,'Villanueva de San Juan',35444,35447,3,1),(7877,'Villanueva de San Mancio',41434,41437,3,1),(7878,'Villanueva de Sigena',19346,19349,3,1),(7879,'Villanueva de Tapia',27358,27361,3,1),(7880,'Villanueva de Teba',8960,8963,3,1),(7881,'Villanueva de Viver',11794,11797,3,1),(7882,'Villanueva del Aceral',4410,4413,3,1),(7883,'Villanueva del Ariscal',35448,35451,3,1),(7884,'Villanueva del Arzobispo',19936,19941,3,2),(7885,'Villanueva del Campillo',4414,4417,3,1),(7886,'Villanueva del Campo',43192,43195,3,1),(7887,'Villanueva del Conde',33780,33783,3,1),(7888,'Villanueva del Duque',12832,12835,3,1),(7889,'Villanueva del Fresno',5180,5183,3,1),(7890,'Villanueva del Pardillo',26760,26763,3,1),(7891,'Villanueva del Rebollar',31146,31149,3,1),(7892,'Villanueva del Rebollar de la Sierra',38310,38313,3,1),(7893,'Villanueva del Rey',12836,12839,3,1),(7894,'Villanueva del Río Segura',27946,27949,3,1),(7895,'Villanueva del Río y Minas',35452,35459,3,3),(7896,'Villanueva del Rosario',27362,27365,3,1),(7897,'Villanueva del Trabuco',27366,27371,3,2),(7898,'Villanueva Mesía',15870,15873,3,1),(7899,'Villanuño de Valdavia',31150,31153,3,1),(7900,'Villaobispo de Otero',23224,23229,3,2),(7901,'Villaornate y Castro',23230,23233,3,1),(7902,'Villapalacios',846,849,3,1),(7903,'Villaprovedo',31154,31157,3,1),(7904,'Villaquejida',23234,23239,3,2),(7905,'Villaquilambre',23240,23249,3,4),(7906,'Villaquirán de la Puebla',8964,8967,3,1),(7907,'Villaquirán de los Infantes',8968,8971,3,1),(7908,'Villar de Argañán',33784,33787,3,1),(7909,'Villar de Cañas',13816,13819,3,1),(7910,'Villar de Ciervo',33788,33791,3,1),(7911,'Villar de Corneja',4418,4421,3,1),(7912,'Villar de Domingo García',13820,13825,3,2),(7913,'Villar de Fallaves',43196,43199,3,1),(7914,'Villar de Gallimazo',33792,33795,3,1),(7915,'Villar de la Encina',13826,13829,3,1),(7916,'Villar de la Yegua',33796,33801,3,2),(7917,'Villar de los Navarros',44546,44551,3,2),(7918,'Villar de Olalla',13830,13835,3,2),(7919,'Villar de Peralonso',33802,33807,3,2),(7920,'Villar de Plasencia',10082,10085,3,1),(7921,'Villar de Rena',5184,5189,3,2),(7922,'Villar de Samaniego',33808,33811,3,1),(7923,'Villar de Torre',21690,21693,3,1),(7924,'Villar del Ala',36362,36365,3,1),(7925,'Villar del Arzobispo',40466,40469,3,1),(7926,'Villar del Buey',43200,43209,3,4),(7927,'Villar del Campo',36366,36369,3,1),(7928,'Villar del Cobo',38314,38317,3,1),(7929,'Villar del Humo',13836,13839,3,1),(7930,'Villar del Infantado',13840,13843,3,1),(7931,'Villar del Olmo',26764,26769,3,2),(7932,'Villar del Pedroso',10086,10091,3,2),(7933,'Villar del Pozo',12318,12321,3,1),(7934,'Villar del Rey',5190,5193,3,1),(7935,'Villar del Río',36370,36377,3,3),(7936,'Villar del Salz',38318,38321,3,1),(7937,'Villar y Velasco',13844,13847,3,1),(7938,'Villaralbo',43210,43213,3,1),(7939,'Villaralto',12840,12843,3,1),(7940,'Villarcayo de Merindad de Castilla la Vieja',8972,8991,3,9),(7941,'Villardeciervos',43214,43219,3,2),(7942,'Villardefrades',41438,41441,3,1),(7943,'Villardiegua de la Ribera',43220,43223,3,1),(7944,'Villárdiga',43224,43227,3,1),(7945,'Villardompardo',19942,19945,3,1),(7946,'Villardondiego',43228,43231,3,1),(7947,'Villarejo',21694,21697,3,1),(7948,'Villarejo de Fuentes',13848,13851,3,1),(7949,'Villarejo de la Peñuela',13852,13855,3,1),(7950,'Villarejo de Montalbán',39224,39227,3,1),(7951,'Villarejo de Órbigo',23250,23257,3,3),(7952,'Villarejo de Salvanés',26770,26773,3,1),(7953,'Villarejo del Valle',4422,4425,3,1),(7954,'Villarejo-Periesteban',13856,13859,3,1),(7955,'Villares de Jadraque',17184,17187,3,1),(7956,'Villares de la Reina',33812,33819,3,3),(7957,'Villares de Órbigo',23258,23263,3,2),(7958,'Villares de Yeltes',33820,33823,3,1),(7959,'Villares del Saz',13860,13863,3,1),(7960,'Villargordo del Cabriel',40470,40475,3,2),(7961,'Villariezo',8992,8995,3,1),(7962,'Villarino de los Aires',33824,33831,3,3),(7963,'Villarluengo',38322,38325,3,1),(7964,'Villarmayor',33832,33839,3,3),(7965,'Villarmentero de Campos',31158,31161,3,1),(7966,'Villarmentero de Esgueva',41442,41445,3,1),(7967,'Villarmuerto',33840,33843,3,1),(7968,'Villarquemado',38326,38329,3,1),(7969,'Villarrabé',31162,31167,3,2),(7970,'Villarramiel',31168,31171,3,1),(7971,'Villarrasa',18124,18127,3,1),(7972,'Villarreal de Huerva',44552,44555,3,1),(7973,'Villarrín de Campos',43232,43235,3,1),(7974,'Villarrobledo',850,855,3,2),(7975,'Villarrodrigo',19946,19949,3,1),(7976,'Villarroya',21698,21701,3,1),(7977,'Villarroya de la Sierra',44556,44559,3,1),(7978,'Villarroya de los Pinares',38330,38333,3,1),(7979,'Villarroya del Campo',44560,44563,3,1),(7980,'Villarrubia de los Ojos',12322,12325,3,1),(7981,'Villarrubia de Santiago',39228,39233,3,2),(7982,'Villarrubio',13864,13867,3,1),(7983,'Villarta',13868,13871,3,1),(7984,'Villarta de los Montes',5194,5197,3,1),(7985,'Villarta de San Juan',12326,12329,3,1),(7986,'Villarta-Quintana',21702,21705,3,1),(7987,'Villas de la Ventosa',13872,13875,3,1),(7988,'Villasabariego',23264,23273,3,4),(7989,'Villasandino',8996,8999,3,1),(7990,'Villasarracino',31172,31175,3,1),(7991,'Villasayas',36378,36381,3,1),(7992,'Villasbuenas',33844,33847,3,1),(7993,'Villasbuenas de Gata',10092,10095,3,1),(7994,'Villasdardo',33848,33851,3,1),(7995,'Villaseca de Arciel',36382,36385,3,1),(7996,'Villaseca de Henares',17188,17191,3,1),(7997,'Villaseca de la Sagra',39234,39239,3,2),(7998,'Villaseca de Uceda',17192,17195,3,1),(7999,'Villaseco de los Gamitos',33852,33855,3,1),(8000,'Villaseco de los Reyes',33856,33867,3,5),(8001,'Villaseco del Pan',43236,43239,3,1),(8002,'Villaselán',23274,23279,3,2),(8003,'Villasequilla',39240,39243,3,1),(8004,'Villasexmir',41446,41449,3,1),(8005,'Villasila de Valdavia',31176,31179,3,1),(8006,'Villasrubias',33868,33871,3,1),(8007,'Villastar',38334,38337,3,1),(8008,'Villasur de Herreros',9000,9003,3,1),(8009,'Villatobas',39244,39247,3,1),(8010,'Villatoro',4426,4429,3,1),(8011,'Villatorres',19950,19957,3,3),(8012,'Villatoya',856,859,3,1),(8013,'Villatuelda',9004,9007,3,1),(8014,'Villatuerta',29220,29225,3,2),(8015,'Villaturde',31180,31183,3,1),(8016,'Villaturiel',23280,23285,3,2),(8017,'Villaumbrales',31184,31189,3,2),(8018,'Villava/Atarrabia',29226,29229,3,1),(8019,'Villavaliente',860,863,3,1),(8020,'Villavaquerín',41450,41453,3,1),(8021,'Villavelayo',21706,21709,3,1),(8022,'Villavellid',41454,41457,3,1),(8023,'Villavendimio',43240,43243,3,1),(8024,'Villaverde de Guadalimar',864,869,3,2),(8025,'Villaverde de Guareña',33872,33875,3,1),(8026,'Villaverde de Íscar',34874,34877,3,1),(8027,'Villaverde de Medina',41458,41461,3,1),(8028,'Villaverde de Montejo',34878,34883,3,2),(8029,'Villaverde de Rioja',21710,21713,3,1),(8030,'Villaverde del Monte',9008,9013,3,2),(8031,'Villaverde del Río',35460,35463,3,1),(8032,'Villaverde y Pasaconsol',13876,13879,3,1),(8033,'Villaverde-Mogina',9014,9017,3,1),(8034,'Villaveza de Valverde',43244,43247,3,1),(8035,'Villaveza del Agua',43248,43251,3,1),(8036,'Villavicencio de los Caballeros',41462,41465,3,1),(8037,'Villaviciosa',3324,3347,3,11),(8038,'Villaviciosa de Córdoba',12844,12851,3,3),(8039,'Villaviciosa de Odón',26774,26777,3,1),(8040,'Villavieja de Yeltes',33876,33879,3,1),(8041,'Villavieja del Lozoya',26778,26781,3,1),(8042,'Villaviudas',31190,31193,3,1),(8043,'Villayerno Morquillas',9018,9021,3,1),(8044,'Villayón',3348,3353,3,2),(8045,'Villazala',23286,23291,3,2),(8046,'Villazanzo de Valderaduey',23292,23299,3,3),(8047,'Villazopeque',9022,9025,3,1),(8048,'Villegas',9026,9029,3,1),(8049,'Villeguillo',34884,34887,3,1),(8050,'Villel',38338,38341,3,1),(8051,'Villel de Mesa',17196,17199,3,1),(8052,'Villena',1650,1659,3,4),(8053,'Villerías de Campos',31194,31197,3,1),(8054,'Villodre',31198,31201,3,1),(8055,'Villodrigo',31202,31205,3,1),(8056,'Villoldo',31206,31209,3,1),(8057,'Víllora',13880,13883,3,1),(8058,'Villores',11798,11801,3,1),(8059,'Villoria',33880,33883,3,1),(8060,'Villoruebo',9030,9035,3,2),(8061,'Villoruela',33884,33887,3,1),(8062,'Villoslada de Cameros',21714,21717,3,1),(8063,'Villota del Páramo',31210,31215,3,2),(8064,'Villovieco',31216,31219,3,1),(8065,'Vilobí d\'Onyar',14988,14995,3,3),(8066,'Vilobí del Penedès',7228,7231,3,1),(8067,'Vilopriu',14996,15001,3,2),(8068,'Viloria',41466,41469,3,1),(8069,'Viloria de Rioja',9036,9039,3,1),(8070,'Vilvestre',33888,33891,3,1),(8071,'Vilviestre del Pinar',9040,9043,3,1),(8072,'Vimbodí i Poblet',37276,37283,3,3),(8073,'Vimianzo',20944,20957,3,6),(8074,'Vinaceite',38342,38345,3,1),(8075,'Vinaixa',24588,24591,3,1),(8076,'Vinalesa',40476,40479,3,1),(8077,'Vinaròs',11802,11805,3,1),(8078,'Viñas',43252,43259,3,3),(8079,'Vindel',13884,13887,3,1),(8080,'Vinebre',37284,37287,3,1),(8081,'Viñegra de Moraña',4430,4433,3,1),(8082,'Viniegra de Abajo',21718,21721,3,1),(8083,'Viniegra de Arriba',21722,21725,3,1),(8084,'Viñuela',27372,27379,3,3),(8085,'Viñuelas',17200,17203,3,1),(8086,'Vinuesa',36386,36391,3,2),(8087,'Vinyols i els Arcs',37288,37291,3,1),(8088,'Visiedo',38346,38349,3,1),(8089,'Viso del Marqués',12330,12339,3,4),(8090,'Vistabella',44564,44569,3,2),(8091,'Vistabella del Maestrat',11806,11809,3,1),(8092,'Vita',4434,4437,3,1),(8093,'Vitigudino',33892,33897,3,2),(8094,'Vitoria-Gasteiz',300,343,3,21),(8095,'Viveiro',25708,25723,3,7),(8096,'Vivel del Río Martín',38350,38355,3,2),(8097,'Viver',11810,11815,3,2),(8098,'Viver i Serrateix',7232,7235,3,1),(8099,'Viveros',870,873,3,1),(8100,'Vizcaínos',9044,9047,3,1),(8101,'Vizmanos',36392,36395,3,1),(8102,'Víznar',15874,15877,3,1),(8103,'Voto',11214,11223,3,4),(8104,'Vozmediano',36396,36399,3,1),(8105,'Wamba',41470,41473,3,1),(8106,'Xaló',1660,1663,3,1),(8107,'Xermade',25724,25737,3,6),(8108,'Xert',11816,11821,3,2),(8109,'Xerta',37292,37295,3,1),(8110,'Xinzo de Limia',30252,30267,3,7),(8111,'Xirivella',40480,40485,3,2),(8112,'Xove',25738,25749,3,5),(8113,'Xunqueira de Ambía',30268,30275,3,3),(8114,'Xunqueira de Espadanedo',30276,30283,3,3),(8115,'Yanguas',36400,36405,3,2),(8116,'Yanguas de Eresma',34888,34891,3,1),(8117,'Yátova',40486,40489,3,1),(8118,'Yebes',17204,17211,3,3),(8119,'Yebra',17212,17215,3,1),(8120,'Yebra de Basa',19350,19355,3,2),(8121,'Yecla',27950,27955,3,2),(8122,'Yecla de Yeltes',33898,33901,3,1),(8123,'Yécora/Iekora',344,347,3,1),(8124,'Yélamos de Abajo',17216,17219,3,1),(8125,'Yélamos de Arriba',17220,17223,3,1),(8126,'Yeles',39248,39251,3,1),(8127,'Yelo',36406,36411,3,2),(8128,'Yémeda',13888,13891,3,1),(8129,'Yepes',39252,39255,3,1),(8130,'Yernes y Tameza',3354,3357,3,1),(8131,'Yesa',29230,29233,3,1),(8132,'Yésero',19356,19359,3,1),(8133,'Yeste',874,891,3,8),(8134,'Yuncler',39256,39259,3,1),(8135,'Yunclillos',39260,39263,3,1),(8136,'Yuncos',39264,39267,3,1),(8137,'Yunquera',27380,27383,3,1),(8138,'Yunquera de Henares',17224,17227,3,1),(8139,'Zabalza/Zabaltza',29234,29237,3,1),(8140,'Zael',9048,9051,3,1),(8141,'Zafarraya',15878,15881,3,1),(8142,'Zafra',5198,5201,3,1),(8143,'Zafra de Záncara',13892,13895,3,1),(8144,'Zafrilla',13896,13899,3,1),(8145,'Zagra',15882,15885,3,1),(8146,'Zahara',10434,10437,3,1),(8147,'Zahínos',5202,5205,3,1),(8148,'Zaidín',19360,19363,3,1),(8149,'Zalamea de la Serena',5206,5209,3,1),(8150,'Zalamea la Real',18128,18137,3,4),(8151,'Zaldibar',41988,41991,3,1),(8152,'Zaldibia',17652,17655,3,1),(8153,'Zalduondo',348,351,3,1),(8154,'Zalla',41992,41999,3,3),(8155,'Zamarra',33902,33905,3,1),(8156,'Zamayón',33906,33909,3,1),(8157,'Zambrana',352,355,3,1),(8158,'Zamora',43260,43327,3,33),(8159,'Zamudio',42000,42003,3,1),(8160,'Zaorejas',17228,17235,3,3),(8161,'Zapardiel de la Cañada',4438,4441,3,1),(8162,'Zapardiel de la Ribera',4442,4445,3,1),(8163,'Zaragoza',44570,44641,3,35),(8164,'Zarapicos',33910,33913,3,1),(8165,'Zaratamo',42004,42007,3,1),(8166,'Zaratán',41474,41477,3,1),(8167,'Zarautz',17656,17659,3,1),(8168,'Zarra',40490,40493,3,1),(8169,'Zarratón',21726,21729,3,1),(8170,'Zarza de Granadilla',10096,10101,3,2),(8171,'Zarza de Montánchez',10102,10107,3,2),(8172,'Zarza de Tajo',13900,13903,3,1),(8173,'Zarza la Mayor',10108,10111,3,1),(8174,'Zarza-Capilla',5210,5213,3,1),(8175,'Zarzalejo',26782,26785,3,1),(8176,'Zarzosa',21730,21733,3,1),(8177,'Zarzosa de Río Pisuerga',9052,9055,3,1),(8178,'Zarzuela',13904,13907,3,1),(8179,'Zarzuela de Jadraque',17236,17239,3,1),(8180,'Zarzuela del Monte',34892,34895,3,1),(8181,'Zarzuela del Pinar',34896,34899,3,1),(8182,'Zas',20958,20977,3,9),(8183,'Zazuar',9056,9059,3,1),(8184,'Zeanuri',42008,42011,3,1),(8185,'Zeberio',42012,42015,3,1),(8186,'Zegama',17660,17663,3,1),(8187,'Zerain',17664,17667,3,1),(8188,'Zestoa',17668,17673,3,2),(8189,'Zierbena',42016,42019,3,1),(8190,'Zigoitia',356,361,3,2),(8191,'Ziordia',29238,29241,3,1),(8192,'Ziortza-Bolibar',42020,42023,3,1),(8193,'Zizur Mayor/Zizur Nagusia',29242,29245,3,1),(8194,'Zizurkil',17674,17677,3,1),(8195,'Zorita',10112,10115,3,1),(8196,'Zorita de la Frontera',33914,33917,3,1),(8197,'Zorita de los Canes',17240,17243,3,1),(8198,'Zorita del Maestrazgo',11822,11825,3,1),(8199,'Zorraquín',21734,21737,3,1),(8200,'Zotes del Páramo',23300,23305,3,2),(8201,'Zubieta',29246,29249,3,1),(8202,'Zucaina',11826,11829,3,1),(8203,'Zuera',44642,44649,3,3),(8204,'Zufre',18138,18141,3,1),(8205,'Zugarramurdi',29250,29253,3,1),(8206,'Zuheros',12852,12855,3,1),(8207,'Zuia',362,369,3,3),(8208,'Zújar',15886,15889,3,1),(8209,'Zumaia',17678,17681,3,1),(8210,'Zumarraga',17682,17685,3,1),(8211,'Zuñeda',9060,9063,3,1),(8212,'Zúñiga',29254,29257,3,1),(8213,'Zurgena',2302,2309,3,3),(8214,'00240',11,12,4,0),(8215,'00548',3513,3514,4,0),(8216,'01001',301,302,4,0),(8217,'01002',303,304,4,0),(8218,'01003',305,306,4,0),(8219,'01004',307,308,4,0),(8220,'01005',309,310,4,0),(8221,'01006',311,312,4,0),(8222,'01007',313,314,4,0),(8223,'01008',315,316,4,0),(8224,'01009',317,318,4,0),(8225,'01010',319,320,4,0),(8226,'01012',183,184,4,0),(8227,'01012',321,322,4,0),(8228,'01013',323,324,4,0),(8229,'01015',325,326,4,0),(8230,'01110',115,116,4,0),(8231,'01117',117,118,4,0),(8232,'01117',151,152,4,0),(8233,'01118',105,106,4,0),(8234,'01118',191,192,4,0),(8235,'01118',7645,7646,4,0),(8236,'01120',45,46,4,0),(8237,'01128',119,120,4,0),(8238,'01128',107,108,4,0),(8239,'01128',47,48,4,0),(8240,'01129',49,50,4,0),(8241,'01130',363,364,4,0),(8242,'01138',357,358,4,0),(8243,'01139',365,366,4,0),(8244,'01160',31,32,4,0),(8245,'01165',33,34,4,0),(8246,'01169',35,36,4,0),(8247,'01170',225,226,4,0),(8248,'01171',227,228,4,0),(8249,'01191',327,328,4,0),(8250,'01191',155,156,4,0),(8251,'01192',123,124,4,0),(8252,'01192',329,330,4,0),(8253,'01193',13,14,4,0),(8254,'01193',125,126,4,0),(8255,'01193',331,332,4,0),(8256,'01193',165,166,4,0),(8257,'01194',109,110,4,0),(8258,'01194',333,334,4,0),(8259,'01195',335,336,4,0),(8260,'01195',157,158,4,0),(8261,'01196',337,338,4,0),(8262,'01196',359,360,4,0),(8263,'01200',5,6,4,0),(8264,'01206',167,168,4,0),(8265,'01206',91,92,4,0),(8266,'01207',273,274,4,0),(8267,'01207',169,170,4,0),(8268,'01207',7,8,4,0),(8269,'01208',65,66,4,0),(8270,'01208',275,276,4,0),(8271,'01208',93,94,4,0),(8272,'01208',349,350,4,0),(8273,'01211',193,194,4,0),(8274,'01211',7647,7648,4,0),(8275,'01211',39,40,4,0),(8276,'01211',255,256,4,0),(8277,'01211',97,98,4,0),(8278,'01212',99,100,4,0),(8279,'01212',185,186,4,0),(8280,'01212',257,258,4,0),(8281,'01212',353,354,4,0),(8282,'01213',263,264,4,0),(8283,'01213',137,138,4,0),(8284,'01213',211,212,4,0),(8285,'01216',111,112,4,0),(8286,'01216',259,260,4,0),(8287,'01220',265,266,4,0),(8288,'01220',101,102,4,0),(8289,'01220',139,140,4,0),(8290,'01220',41,42,4,0),(8291,'01230',159,160,4,0),(8292,'01250',67,68,4,0),(8293,'01260',69,70,4,0),(8294,'01300',197,198,4,0),(8295,'01306',217,218,4,0),(8296,'01307',269,270,4,0),(8297,'01307',87,88,4,0),(8298,'01307',297,298,4,0),(8299,'01308',199,200,4,0),(8300,'01308',207,208,4,0),(8301,'01308',173,174,4,0),(8302,'01309',241,242,4,0),(8303,'01309',233,234,4,0),(8304,'01309',201,202,4,0),(8305,'01309',133,134,4,0),(8306,'01320',249,250,4,0),(8307,'01321',203,204,4,0),(8308,'01322',251,252,4,0),(8309,'01322',345,346,4,0),(8310,'01322',237,238,4,0),(8311,'01330',187,188,4,0),(8312,'01340',129,130,4,0),(8313,'01400',221,222,4,0),(8314,'01408',73,74,4,0),(8315,'01409',245,246,4,0),(8316,'01420',141,142,4,0),(8317,'01423',213,214,4,0),(8318,'01423',25,26,4,0),(8319,'01423',143,144,4,0),(8320,'01423',287,288,4,0),(8321,'01426',289,290,4,0),(8322,'01426',27,28,4,0),(8323,'01426',145,146,4,0),(8324,'01427',7415,7416,4,0),(8325,'01427',291,292,4,0),(8326,'01427',7925,7926,4,0),(8327,'01428',161,162,4,0),(8328,'01428',293,294,4,0),(8329,'01428',147,148,4,0),(8330,'01430',177,178,4,0),(8331,'01439',179,180,4,0),(8332,'01440',279,280,4,0),(8333,'01449',281,282,4,0),(8334,'01450',17,18,4,0),(8335,'01450',367,368,4,0),(8336,'01450',283,284,4,0),(8337,'01468',19,20,4,0),(8338,'01470',21,22,4,0),(8339,'01470',75,76,4,0),(8340,'01474',59,60,4,0),(8341,'01476',77,78,4,0),(8342,'01477',79,80,4,0),(8343,'01478',81,82,4,0),(8344,'01478',61,62,4,0),(8345,'01479',83,84,4,0),(8346,'01510',229,230,4,0),(8347,'01510',339,340,4,0),(8348,'01510',53,54,4,0),(8349,'01520',341,342,4,0),(8350,'01520',55,56,4,0),(8351,'02001',381,382,4,0),(8352,'02002',383,384,4,0),(8353,'02003',385,386,4,0),(8354,'02004',387,388,4,0),(8355,'02005',389,390,4,0),(8356,'02006',391,392,4,0),(8357,'02008',393,394,4,0),(8358,'02049',395,396,4,0),(8359,'02071',397,398,4,0),(8360,'02099',399,400,4,0),(8361,'02099',761,762,4,0),(8362,'02100',813,814,4,0),(8363,'02100',17553,17554,4,0),(8364,'02110',623,624,4,0),(8365,'02110',815,816,4,0),(8366,'02120',737,738,4,0),(8367,'02124',455,456,4,0),(8368,'02124',421,422,4,0),(8369,'02124',651,652,4,0),(8370,'02125',457,458,4,0),(8371,'02126',459,460,4,0),(8372,'02127',739,740,4,0),(8373,'02128',423,424,4,0),(8374,'02128',741,742,4,0),(8375,'02129',771,772,4,0),(8376,'02130',485,486,4,0),(8377,'02136',727,728,4,0),(8378,'02137',729,730,4,0),(8379,'02138',745,746,4,0),(8380,'02138',487,488,4,0),(8381,'02138',731,732,4,0),(8382,'02139',489,490,4,0),(8383,'02139',461,462,4,0),(8384,'02140',401,402,4,0),(8385,'02141',773,774,4,0),(8386,'02142',775,776,4,0),(8387,'02142',653,654,4,0),(8388,'02150',827,828,4,0),(8389,'02151',503,504,4,0),(8390,'02152',377,378,4,0),(8391,'02153',499,500,4,0),(8392,'02154',861,862,4,0),(8393,'02154',767,768,4,0),(8394,'02155',403,404,4,0),(8395,'02156',527,528,4,0),(8396,'02160',645,646,4,0),(8397,'02161',647,648,4,0),(8398,'02162',627,628,4,0),(8399,'02170',17791,17792,4,0),(8400,'02200',515,516,4,0),(8401,'02210',427,428,4,0),(8402,'02211',429,430,4,0),(8403,'02212',511,512,4,0),(8404,'02213',835,836,4,0),(8405,'02213',471,472,4,0),(8406,'02214',431,432,4,0),(8407,'02214',473,474,4,0),(8408,'02215',857,858,4,0),(8409,'02215',417,418,4,0),(8410,'02220',691,692,4,0),(8411,'02230',659,660,4,0),(8412,'02240',663,664,4,0),(8413,'02246',699,700,4,0),(8414,'02247',523,524,4,0),(8415,'02248',617,618,4,0),(8416,'02249',619,620,4,0),(8417,'02249',631,632,4,0),(8418,'02249',581,582,4,0),(8419,'02250',373,374,4,0),(8420,'02251',583,584,4,0),(8421,'02252',433,434,4,0),(8422,'02253',589,590,4,0),(8423,'02260',585,586,4,0),(8424,'02270',843,844,4,0),(8425,'02300',437,438,4,0),(8426,'02310',871,872,4,0),(8427,'02311',757,758,4,0),(8428,'02312',439,440,4,0),(8429,'02313',747,748,4,0),(8430,'02314',749,750,4,0),(8431,'02314',667,668,4,0),(8432,'02314',441,442,4,0),(8433,'02315',831,832,4,0),(8434,'02316',799,800,4,0),(8435,'02320',467,468,4,0),(8436,'02326',803,804,4,0),(8437,'02327',779,780,4,0),(8438,'02328',405,406,4,0),(8439,'02329',507,508,4,0),(8440,'02330',443,444,4,0),(8441,'02331',791,792,4,0),(8442,'02332',793,794,4,0),(8443,'02340',795,796,4,0),(8444,'02350',847,848,4,0),(8445,'02360',481,482,4,0),(8446,'02400',593,594,4,0),(8447,'02409',595,596,4,0),(8448,'02410',655,656,4,0),(8449,'02420',597,598,4,0),(8450,'02430',559,560,4,0),(8451,'02434',641,642,4,0),(8452,'02435',807,808,4,0),(8453,'02436',569,570,4,0),(8454,'02437',809,810,4,0),(8455,'02438',27711,27712,4,0),(8456,'02439',561,562,4,0),(8457,'02440',675,676,4,0),(8458,'02448',491,492,4,0),(8459,'02448',677,678,4,0),(8460,'02449',679,680,4,0),(8461,'02449',563,564,4,0),(8462,'02450',783,784,4,0),(8463,'02459',785,786,4,0),(8464,'02459',733,734,4,0),(8465,'02460',865,866,4,0),(8466,'02461',545,546,4,0),(8467,'02462',787,788,4,0),(8468,'02462',867,868,4,0),(8469,'02470',565,566,4,0),(8470,'02480',875,876,4,0),(8471,'02482',877,878,4,0),(8472,'02484',879,880,4,0),(8473,'02485',881,882,4,0),(8474,'02486',883,884,4,0),(8475,'02487',885,886,4,0),(8476,'02488',887,888,4,0),(8477,'02489',889,890,4,0),(8478,'02490',599,600,4,0),(8479,'02498',601,602,4,0),(8480,'02499',603,604,4,0),(8481,'02500',819,820,4,0),(8482,'02510',763,764,4,0),(8483,'02510',529,530,4,0),(8484,'02511',407,408,4,0),(8485,'02512',409,410,4,0),(8486,'02513',821,822,4,0),(8487,'02514',823,824,4,0),(8488,'02520',531,532,4,0),(8489,'02529',533,534,4,0),(8490,'02530',703,704,4,0),(8491,'02534',705,706,4,0),(8492,'02535',707,708,4,0),(8493,'02536',709,710,4,0),(8494,'02537',711,712,4,0),(8495,'02538',713,714,4,0),(8496,'02539',715,716,4,0),(8497,'02600',851,852,4,0),(8498,'02610',553,554,4,0),(8499,'02611',723,724,4,0),(8500,'02612',853,854,4,0),(8501,'02612',695,696,4,0),(8502,'02613',555,556,4,0),(8503,'02614',549,550,4,0),(8504,'02620',671,672,4,0),(8505,'02630',635,636,4,0),(8506,'02636',13083,13084,4,0),(8507,'02636',839,840,4,0),(8508,'02637',573,574,4,0),(8509,'02638',683,684,4,0),(8510,'02639',637,638,4,0),(8511,'02639',477,478,4,0),(8512,'02640',447,448,4,0),(8513,'02650',687,688,4,0),(8514,'02651',577,578,4,0),(8515,'02652',719,720,4,0),(8516,'02653',413,414,4,0),(8517,'02660',519,520,4,0),(8518,'02690',451,452,4,0),(8519,'02690',607,608,4,0),(8520,'02691',495,496,4,0),(8521,'02692',753,754,4,0),(8522,'02692',535,536,4,0),(8523,'02693',541,542,4,0),(8524,'02694',609,610,4,0),(8525,'02695',537,538,4,0),(8526,'02696',613,614,4,0),(8527,'02999',463,464,4,0),(8528,'03001',951,952,4,0),(8529,'03002',953,954,4,0),(8530,'03003',955,956,4,0),(8531,'03004',957,958,4,0),(8532,'03005',959,960,4,0),(8533,'03006',961,962,4,0),(8534,'03007',963,964,4,0),(8535,'03008',965,966,4,0),(8536,'03009',967,968,4,0),(8537,'03010',969,970,4,0),(8538,'03010',27741,27742,4,0),(8539,'03011',971,972,4,0),(8540,'03012',973,974,4,0),(8541,'03013',975,976,4,0),(8542,'03014',977,978,4,0),(8543,'03015',979,980,4,0),(8544,'03016',981,982,4,0),(8545,'03100',1357,1358,4,0),(8546,'03108',1619,1620,4,0),(8547,'03109',1607,1608,4,0),(8548,'03110',1433,1434,4,0),(8549,'03111',1133,1134,4,0),(8550,'03112',983,984,4,0),(8551,'03113',985,986,4,0),(8552,'03114',987,988,4,0),(8553,'03115',989,990,4,0),(8554,'03130',1581,1582,4,0),(8555,'03138',991,992,4,0),(8556,'03139',1249,1250,4,0),(8557,'03140',1331,1332,4,0),(8558,'03150',1213,1214,4,0),(8559,'03158',1185,1186,4,0),(8560,'03158',1167,1168,4,0),(8561,'03159',1193,1194,4,0),(8562,'03160',1003,1004,4,0),(8563,'03169',943,944,4,0),(8564,'03170',1541,1542,4,0),(8565,'03177',1309,1310,4,0),(8566,'03177',1197,1198,4,0),(8567,'03177',1557,1558,4,0),(8568,'03178',1085,1086,4,0),(8569,'03179',1311,1312,4,0),(8570,'03179',1005,1006,4,0),(8571,'03180',1623,1624,4,0),(8572,'03181',1625,1626,4,0),(8573,'03182',1627,1628,4,0),(8574,'03183',1629,1630,4,0),(8575,'03184',1631,1632,4,0),(8576,'03185',1633,1634,4,0),(8577,'03186',1635,1636,4,0),(8578,'03187',1403,1404,4,0),(8579,'03188',1637,1638,4,0),(8580,'03189',1459,1460,4,0),(8581,'03190',1511,1512,4,0),(8582,'03191',1513,1514,4,0),(8583,'03191',1461,1462,4,0),(8584,'03192',1463,1464,4,0),(8585,'03193',1565,1566,4,0),(8586,'03194',1251,1252,4,0),(8587,'03195',1253,1254,4,0),(8588,'03201',1255,1256,4,0),(8589,'03202',1257,1258,4,0),(8590,'03203',1259,1260,4,0),(8591,'03204',1261,1262,4,0),(8592,'03205',1263,1264,4,0),(8593,'03206',1265,1266,4,0),(8594,'03207',1267,1268,4,0),(8595,'03208',1269,1270,4,0),(8596,'03290',1271,1272,4,0),(8597,'03291',1273,1274,4,0),(8598,'03292',1275,1276,4,0),(8599,'03293',1277,1278,4,0),(8600,'03294',1279,1280,4,0),(8601,'03295',1281,1282,4,0),(8602,'03296',1283,1284,4,0),(8603,'03300',1465,1466,4,0),(8604,'03310',1467,1468,4,0),(8605,'03310',1343,1344,4,0),(8606,'03311',1469,1470,4,0),(8607,'03312',1471,1472,4,0),(8608,'03313',1473,1474,4,0),(8609,'03314',1475,1476,4,0),(8610,'03315',1477,1478,4,0),(8611,'03316',1045,1046,4,0),(8612,'03316',1479,1480,4,0),(8613,'03317',1141,1142,4,0),(8614,'03320',1285,1286,4,0),(8615,'03330',1187,1188,4,0),(8616,'03339',1189,1190,4,0),(8617,'03340',907,908,4,0),(8618,'03348',1327,1328,4,0),(8619,'03349',1561,1562,4,0),(8620,'03350',1181,1182,4,0),(8621,'03360',1143,1144,4,0),(8622,'03369',1481,1482,4,0),(8623,'03369',1529,1530,4,0),(8624,'03370',1533,1534,4,0),(8625,'03380',1125,1126,4,0),(8626,'03390',1041,1042,4,0),(8627,'03392',2635,2636,4,0),(8628,'03400',1651,1652,4,0),(8629,'03408',1653,1654,4,0),(8630,'03409',1155,1156,4,0),(8631,'03409',1655,1656,4,0),(8632,'03409',1549,1550,4,0),(8633,'03409',993,994,4,0),(8634,'03410',1121,1122,4,0),(8635,'03420',1159,1160,4,0),(8636,'03430',1445,1446,4,0),(8637,'03440',1339,1340,4,0),(8638,'03450',1027,1028,4,0),(8639,'03460',1035,1036,4,0),(8640,'03469',1151,1152,4,0),(8641,'03469',1037,1038,4,0),(8642,'03501',1065,1066,4,0),(8643,'03502',1067,1068,4,0),(8644,'03503',1069,1070,4,0),(8645,'03509',1305,1306,4,0),(8646,'03510',1137,1138,4,0),(8647,'03516',1097,1098,4,0),(8648,'03517',1077,1078,4,0),(8649,'03517',1177,1178,4,0),(8650,'03517',1053,1054,4,0),(8651,'03517',1221,1222,4,0),(8652,'03518',1129,1130,4,0),(8653,'03518',1597,1598,4,0),(8654,'03520',1521,1522,4,0),(8655,'03530',1375,1376,4,0),(8656,'03540',995,996,4,0),(8657,'03550',1577,1578,4,0),(8658,'03559',997,998,4,0),(8659,'03560',1217,1218,4,0),(8660,'03569',903,904,4,0),(8661,'03570',1647,1648,4,0),(8662,'03578',1537,1538,4,0),(8663,'03579',1589,1590,4,0),(8664,'03579',1487,1488,4,0),(8665,'03580',1361,1362,4,0),(8666,'03581',1363,1364,4,0),(8667,'03590',1013,1014,4,0),(8668,'03599',1015,1016,4,0),(8669,'03600',1289,1290,4,0),(8670,'03610',1507,1508,4,0),(8671,'03630',1585,1586,4,0),(8672,'03638',1551,1552,4,0),(8673,'03639',1657,1658,4,0),(8674,'03640',1417,1418,4,0),(8675,'03649',1419,1420,4,0),(8676,'03650',1231,1232,4,0),(8677,'03657',1233,1234,4,0),(8678,'03657',27951,27952,4,0),(8679,'03658',1235,1236,4,0),(8680,'03658',1553,1554,4,0),(8681,'03659',1237,1238,4,0),(8682,'03659',27603,27604,4,0),(8683,'03660',1437,1438,4,0),(8684,'03668',947,948,4,0),(8685,'03669',1379,1380,4,0),(8686,'03670',1411,1412,4,0),(8687,'03679',1413,1414,4,0),(8688,'03680',1019,1020,4,0),(8689,'03688',1225,1226,4,0),(8690,'03689',1227,1228,4,0),(8691,'03689',1335,1336,4,0),(8692,'03689',1483,1484,4,0),(8693,'03690',1569,1570,4,0),(8694,'03698',895,896,4,0),(8695,'03699',999,1000,4,0),(8696,'03700',1201,1202,4,0),(8697,'03709',1203,1204,4,0),(8698,'03710',1147,1148,4,0),(8699,'03720',1113,1114,4,0),(8700,'03723',911,912,4,0),(8701,'03724',1601,1602,4,0),(8702,'03725',1603,1604,4,0),(8703,'03726',1117,1118,4,0),(8704,'03727',1661,1662,4,0),(8705,'03728',913,914,4,0),(8706,'03729',1395,1396,4,0),(8707,'03729',1593,1594,4,0),(8708,'03730',1347,1348,4,0),(8709,'03737',1349,1350,4,0),(8710,'03738',1351,1352,4,0),(8711,'03739',1353,1354,4,0),(8712,'03740',1319,1320,4,0),(8713,'03749',1205,1206,4,0),(8714,'03750',1495,1496,4,0),(8715,'03759',1061,1062,4,0),(8716,'03760',1441,1442,4,0),(8717,'03769',1241,1242,4,0),(8718,'03769',1109,1110,4,0),(8719,'03769',1573,1574,4,0),(8720,'03770',1245,1246,4,0),(8721,'03770',1207,1208,4,0),(8722,'03778',1049,1050,4,0),(8723,'03779',1293,1294,4,0),(8724,'03780',1209,1210,4,0),(8725,'03780',1499,1500,4,0),(8726,'03786',1371,1372,4,0),(8727,'03787',1641,1642,4,0),(8728,'03788',1383,1384,4,0),(8729,'03788',1643,1644,4,0),(8730,'03789',1387,1388,4,0),(8731,'03790',1449,1450,4,0),(8732,'03791',1451,1452,4,0),(8733,'03791',1391,1392,4,0),(8734,'03792',1491,1492,4,0),(8735,'03792',1423,1424,4,0),(8736,'03792',1453,1454,4,0),(8737,'03793',1163,1164,4,0),(8738,'03794',1081,1082,4,0),(8739,'03795',1615,1616,4,0),(8740,'03795',1545,1546,4,0),(8741,'03795',1455,1456,4,0),(8742,'03800',925,926,4,0),(8743,'03801',927,928,4,0),(8744,'03802',929,930,4,0),(8745,'03803',931,932,4,0),(8746,'03804',933,934,4,0),(8747,'03810',1089,1090,4,0),(8748,'03811',1525,1526,4,0),(8749,'03811',1323,1324,4,0),(8750,'03812',1105,1106,4,0),(8751,'03812',1407,1408,4,0),(8752,'03812',1023,1024,4,0),(8753,'03813',1611,1612,4,0),(8754,'03813',1297,1298,4,0),(8755,'03813',1301,1302,4,0),(8756,'03814',921,922,4,0),(8757,'03814',1031,1032,4,0),(8758,'03815',1503,1504,4,0),(8759,'03816',1073,1074,4,0),(8760,'03818',935,936,4,0),(8761,'03820',1171,1172,4,0),(8762,'03827',1093,1094,4,0),(8763,'03827',1009,1010,4,0),(8764,'03827',1101,1102,4,0),(8765,'03828',1517,1518,4,0),(8766,'03829',1367,1368,4,0),(8767,'03829',1173,1174,4,0),(8768,'03830',1427,1428,4,0),(8769,'03837',899,900,4,0),(8770,'03838',939,940,4,0),(8771,'03839',1429,1430,4,0),(8772,'03840',1315,1316,4,0),(8773,'03841',917,918,4,0),(8774,'03850',1057,1058,4,0),(8775,'03860',1399,1400,4,0),(8776,'04001',1739,1740,4,0),(8777,'04002',1741,1742,4,0),(8778,'04003',1743,1744,4,0),(8779,'04004',1745,1746,4,0),(8780,'04005',1747,1748,4,0),(8781,'04006',1749,1750,4,0),(8782,'04007',1751,1752,4,0),(8783,'04008',1753,1754,4,0),(8784,'04009',1755,1756,4,0),(8785,'04100',2057,2058,4,0),(8786,'04110',2059,2060,4,0),(8787,'04113',2061,2062,4,0),(8788,'04114',2023,2024,4,0),(8789,'04114',2063,2064,4,0),(8790,'04115',2065,2066,4,0),(8791,'04116',2067,2068,4,0),(8792,'04117',2069,2070,4,0),(8793,'04118',2071,2072,4,0),(8794,'04119',2073,2074,4,0),(8795,'04120',1757,1758,4,0),(8796,'04130',1759,1760,4,0),(8797,'04131',1761,1762,4,0),(8798,'04140',1857,1858,4,0),(8799,'04147',2075,2076,4,0),(8800,'04149',2191,2192,4,0),(8801,'04149',1859,1860,4,0),(8802,'04149',2077,2078,4,0),(8803,'04150',1763,1764,4,0),(8804,'04151',2079,2080,4,0),(8805,'04160',1765,1766,4,0),(8806,'04188',2081,2082,4,0),(8807,'04200',2213,2214,4,0),(8808,'04210',2025,2026,4,0),(8809,'04211',2027,2028,4,0),(8810,'04211',2251,2252,4,0),(8811,'04211',2215,2216,4,0),(8812,'04212',2089,2090,4,0),(8813,'04212',2265,2266,4,0),(8814,'04212',1863,1864,4,0),(8815,'04213',2169,2170,4,0),(8816,'04230',1957,1958,4,0),(8817,'04240',2293,2294,4,0),(8818,'04248',2193,2194,4,0),(8819,'04250',2123,2124,4,0),(8820,'04259',2125,2126,4,0),(8821,'04260',2147,2148,4,0),(8822,'04270',2195,2196,4,0),(8823,'04271',2197,2198,4,0),(8824,'04271',2019,2020,4,0),(8825,'04274',2255,2256,4,0),(8826,'04274',1825,1826,4,0),(8827,'04275',2237,2238,4,0),(8828,'04275',2225,2226,4,0),(8829,'04276',1827,1828,4,0),(8830,'04276',1723,1724,4,0),(8831,'04276',1821,1822,4,0),(8832,'04277',2199,2200,4,0),(8833,'04278',2201,2202,4,0),(8834,'04279',2257,2258,4,0),(8835,'04279',2203,2204,4,0),(8836,'04279',2227,2228,4,0),(8837,'04280',2011,2012,4,0),(8838,'04288',2013,2014,4,0),(8839,'04288',1807,1808,4,0),(8840,'04289',2015,2016,4,0),(8841,'04289',1809,1810,4,0),(8842,'04289',2205,2206,4,0),(8843,'04400',1731,1732,4,0),(8844,'04409',1953,1954,4,0),(8845,'04409',1735,1736,4,0),(8846,'04410',1817,1818,4,0),(8847,'04420',2165,2166,4,0),(8848,'04430',1983,1984,4,0),(8849,'04431',1979,1980,4,0),(8850,'04440',2143,2144,4,0),(8851,'04450',1845,1846,4,0),(8852,'04458',1813,1814,4,0),(8853,'04458',1769,1770,4,0),(8854,'04458',2109,2110,4,0),(8855,'04459',2085,2086,4,0),(8856,'04460',1929,1930,4,0),(8857,'04470',2003,2004,4,0),(8858,'04479',2117,2118,4,0),(8859,'04479',1931,1932,4,0),(8860,'04479',1797,1798,4,0),(8861,'04480',1711,1712,4,0),(8862,'04500',1921,1922,4,0),(8863,'04510',1667,1668,4,0),(8864,'04520',1671,1672,4,0),(8865,'04530',1997,1998,4,0),(8866,'04531',1691,1692,4,0),(8867,'04532',1999,2000,4,0),(8868,'04533',1673,1674,4,0),(8869,'04540',2053,2054,4,0),(8870,'04549',1943,1944,4,0),(8871,'04550',1945,1946,4,0),(8872,'04558',1693,1694,4,0),(8873,'04558',1947,1948,4,0),(8874,'04559',1949,1950,4,0),(8875,'04560',1935,1936,4,0),(8876,'04567',1727,1728,4,0),(8877,'04568',2161,2162,4,0),(8878,'04568',1773,1774,4,0),(8879,'04569',2231,2232,4,0),(8880,'04569',1831,1832,4,0),(8881,'04600',1697,1698,4,0),(8882,'04600',1961,1962,4,0),(8883,'04610',1879,1880,4,0),(8884,'04616',1881,1882,4,0),(8885,'04617',1883,1884,4,0),(8886,'04618',1885,1886,4,0),(8887,'04619',1887,1888,4,0),(8888,'04620',2289,2290,4,0),(8889,'04628',1777,1778,4,0),(8890,'04629',1779,1780,4,0),(8891,'04630',1939,1940,4,0),(8892,'04638',2047,2048,4,0),(8893,'04639',2247,2248,4,0),(8894,'04639',2049,2050,4,0),(8895,'04640',2129,2130,4,0),(8896,'04640',2097,2098,4,0),(8897,'04647',1889,1890,4,0),(8898,'04647',2131,2132,4,0),(8899,'04648',1891,1892,4,0),(8900,'04648',2133,2134,4,0),(8901,'04649',2135,2136,4,0),(8902,'04650',2303,2304,4,0),(8903,'04659',2233,2234,4,0),(8904,'04660',1783,1784,4,0),(8905,'04661',2305,2306,4,0),(8906,'04661',2219,2220,4,0),(8907,'04662',2307,2308,4,0),(8908,'04662',1963,1964,4,0),(8909,'04690',1965,1966,4,0),(8910,'04691',1967,1968,4,0),(8911,'04692',1969,1970,4,0),(8912,'04692',1699,1700,4,0),(8913,'04692',2221,2222,4,0),(8914,'04693',1971,1972,4,0),(8915,'04694',1973,1974,4,0),(8916,'04700',1899,1900,4,0),(8917,'04710',1901,1902,4,0),(8918,'04711',1903,1904,4,0),(8919,'04712',1905,1906,4,0),(8920,'04713',1835,1836,4,0),(8921,'04715',1907,1908,4,0),(8922,'04716',1909,1910,4,0),(8923,'04720',2151,2152,4,0),(8924,'04727',2297,2298,4,0),(8925,'04728',1917,1918,4,0),(8926,'04729',1913,1914,4,0),(8927,'04738',2299,2300,4,0),(8928,'04740',2153,2154,4,0),(8929,'04741',2155,2156,4,0),(8930,'04743',2157,2158,4,0),(8931,'04745',1987,1988,4,0),(8932,'04746',1989,1990,4,0),(8933,'04750',1895,1896,4,0),(8934,'04760',1837,1838,4,0),(8935,'04768',1713,1714,4,0),(8936,'04768',1839,1840,4,0),(8937,'04769',1841,1842,4,0),(8938,'04770',1677,1678,4,0),(8939,'04778',1679,1680,4,0),(8940,'04779',2119,2120,4,0),(8941,'04779',1681,1682,4,0),(8942,'04779',1799,1800,4,0),(8943,'04800',1701,1702,4,0),(8944,'04810',2099,2100,4,0),(8945,'04810',2113,2114,4,0),(8946,'04811',2101,2102,4,0),(8947,'04812',1703,1704,4,0),(8948,'04813',2103,2104,4,0),(8949,'04813',1705,1706,4,0),(8950,'04814',1707,1708,4,0),(8951,'04815',1849,1850,4,0),(8952,'04820',2277,2278,4,0),(8953,'04825',1871,1872,4,0),(8954,'04826',2279,2280,4,0),(8955,'04827',2281,2282,4,0),(8956,'04828',2283,2284,4,0),(8957,'04829',2285,2286,4,0),(8958,'04829',2269,2270,4,0),(8959,'04830',2271,2272,4,0),(8960,'04838',2041,2042,4,0),(8961,'04839',2273,2274,4,0),(8962,'04839',2043,2044,4,0),(8963,'04850',1851,1852,4,0),(8964,'04857',1685,1686,4,0),(8965,'04858',1853,1854,4,0),(8966,'04858',1687,1688,4,0),(8967,'04859',1875,1876,4,0),(8968,'04859',1867,1868,4,0),(8969,'04859',2007,2008,4,0),(8970,'04860',2093,2094,4,0),(8971,'04867',2037,2038,4,0),(8972,'04868',1993,1994,4,0),(8973,'04869',1925,1926,4,0),(8974,'04870',2139,2140,4,0),(8975,'04877',2031,2032,4,0),(8976,'04877',2187,2188,4,0),(8977,'04878',2209,2210,4,0),(8978,'04878',2183,2184,4,0),(8979,'04879',2261,2262,4,0),(8980,'04880',2239,2240,4,0),(8981,'04887',2033,2034,4,0),(8982,'04887',2241,2242,4,0),(8983,'04888',1803,1804,4,0),(8984,'04888',1787,1788,4,0),(8985,'04889',1791,1792,4,0),(8986,'04889',2243,2244,4,0),(8987,'04890',2173,2174,4,0),(8988,'04897',1717,1718,4,0),(8989,'04897',2175,2176,4,0),(8990,'04898',2177,2178,4,0),(8991,'04898',1719,1720,4,0),(8992,'04899',2179,2180,4,0),(8993,'04899',2105,2106,4,0),(8994,'04964',1975,1976,4,0),(8995,'05001',3405,3406,4,0),(8996,'05002',3407,3408,4,0),(8997,'05003',3409,3410,4,0),(8998,'05004',3411,3412,4,0),(8999,'05005',3413,3414,4,0),(9000,'05100',4039,4040,4,0),(9001,'05110',3613,3614,4,0),(9002,'05111',4217,4218,4,0),(9003,'05113',3487,3488,4,0),(9004,'05114',4403,4404,4,0),(9005,'05115',4317,4318,4,0),(9006,'05115',4055,4056,4,0),(9007,'05116',4319,4320,4,0),(9008,'05120',4017,4018,4,0),(9009,'05120',4221,4222,4,0),(9010,'05120',4051,4052,4,0),(9011,'05122',4059,4060,4,0),(9012,'05122',4043,4044,4,0),(9013,'05123',4025,4026,4,0),(9014,'05123',3761,3762,4,0),(9015,'05130',4341,4342,4,0),(9016,'05131',3807,3808,4,0),(9017,'05131',3985,3986,4,0),(9018,'05131',3895,3896,4,0),(9019,'05132',3555,3556,4,0),(9020,'05132',4237,4238,4,0),(9021,'05132',3769,3770,4,0),(9022,'05133',4233,4234,4,0),(9023,'05134',4013,4014,4,0),(9024,'05134',3695,3696,4,0),(9025,'05134',4001,4002,4,0),(9026,'05140',3877,3878,4,0),(9027,'05140',3533,3534,4,0),(9028,'05140',3481,3482,4,0),(9029,'05140',3873,3874,4,0),(9030,'05141',3687,3688,4,0),(9031,'05141',3973,3974,4,0),(9032,'05141',3559,3560,4,0),(9033,'05141',4265,4266,4,0),(9034,'05143',4383,4384,4,0),(9035,'05145',3939,3940,4,0),(9036,'05145',4225,4226,4,0),(9037,'05145',3869,3870,4,0),(9038,'05146',3451,3452,4,0),(9039,'05146',3917,3918,4,0),(9040,'05146',4435,4436,4,0),(9041,'05146',3865,3866,4,0),(9042,'05146',4201,4202,4,0),(9043,'05146',3749,3750,4,0),(9044,'05146',3649,3650,4,0),(9045,'05147',3783,3784,4,0),(9046,'05147',3691,3692,4,0),(9047,'05148',3501,3502,4,0),(9048,'05149',3563,3564,4,0),(9049,'05149',4337,4338,4,0),(9050,'05150',4099,4100,4,0),(9051,'05150',4245,4246,4,0),(9052,'05150',4155,4156,4,0),(9053,'05151',3881,3882,4,0),(9054,'05151',3593,3594,4,0),(9055,'05152',3883,3884,4,0),(9056,'05153',3387,3388,4,0),(9057,'05153',3435,3436,4,0),(9058,'05153',3857,3858,4,0),(9059,'05153',3639,3640,4,0),(9060,'05153',3575,3576,4,0),(9061,'05154',3969,3970,4,0),(9062,'05154',4439,4440,4,0),(9063,'05154',3641,3642,4,0),(9064,'05160',3415,3416,4,0),(9065,'05161',3907,3908,4,0),(9066,'05162',3835,3836,4,0),(9067,'05163',3927,3928,4,0),(9068,'05163',3721,3722,4,0),(9069,'05163',4115,4116,4,0),(9070,'05164',3645,3646,4,0),(9071,'05164',4407,4408,4,0),(9072,'05164',3737,3738,4,0),(9073,'05164',4249,4250,4,0),(9074,'05164',4157,4158,4,0),(9075,'05165',4107,4108,4,0),(9076,'05165',3619,3620,4,0),(9077,'05165',3505,3506,4,0),(9078,'05165',4353,4354,4,0),(9079,'05170',3653,3654,4,0),(9080,'05190',4161,4162,4,0),(9081,'05191',4071,4072,4,0),(9082,'05191',3913,3914,4,0),(9083,'05192',3817,3818,4,0),(9084,'05192',3803,3804,4,0),(9085,'05192',3957,3958,4,0),(9086,'05193',4293,4294,4,0),(9087,'05193',4075,4076,4,0),(9088,'05194',3887,3888,4,0),(9089,'05194',3417,3418,4,0),(9090,'05194',3447,3448,4,0),(9091,'05195',3419,3420,4,0),(9092,'05196',3741,3742,4,0),(9093,'05196',4367,4368,4,0),(9094,'05197',3421,3422,4,0),(9095,'05197',3623,3624,4,0),(9096,'05197',3705,3706,4,0),(9097,'05198',4345,4346,4,0),(9098,'05200',3391,3392,4,0),(9099,'05210',3757,3758,4,0),(9100,'05210',4211,4212,4,0),(9101,'05211',3567,3568,4,0),(9102,'05211',3497,3498,4,0),(9103,'05211',3521,3522,4,0),(9104,'05211',3443,3444,4,0),(9105,'05212',3683,3684,4,0),(9106,'05212',3373,3374,4,0),(9107,'05212',4411,4412,4,0),(9108,'05212',3509,3510,4,0),(9109,'05212',3679,3680,4,0),(9110,'05213',3827,3828,4,0),(9111,'05215',4327,4328,4,0),(9112,'05215',4091,4092,4,0),(9113,'05215',3601,3602,4,0),(9114,'05216',3989,3990,4,0),(9115,'05217',3579,3580,4,0),(9116,'05217',3493,3494,4,0),(9117,'05217',4257,4258,4,0),(9118,'05217',3597,3598,4,0),(9119,'05220',3849,3850,4,0),(9120,'05229',3439,3440,4,0),(9121,'05229',4193,4194,4,0),(9122,'05229',3547,3548,4,0),(9123,'05229',3425,3426,4,0),(9124,'05230',3839,3840,4,0),(9125,'05239',3841,3842,4,0),(9126,'05239',4111,4112,4,0),(9127,'05240',4029,4030,4,0),(9128,'05250',3631,3632,4,0),(9129,'05260',3551,3552,4,0),(9130,'05267',4185,4186,4,0),(9131,'05268',3743,3744,4,0),(9132,'05268',4269,4270,4,0),(9133,'05270',3655,3656,4,0),(9134,'05278',3657,3658,4,0),(9135,'05278',3615,3616,4,0),(9136,'05279',3659,3660,4,0),(9137,'05280',3909,3910,4,0),(9138,'05289',4357,4358,4,0),(9139,'05289',4189,4190,4,0),(9140,'05290',3461,3462,4,0),(9141,'05290',4261,4262,4,0),(9142,'05291',3853,3854,4,0),(9143,'05292',4309,4310,4,0),(9144,'05292',4087,4088,4,0),(9145,'05292',4387,4388,4,0),(9146,'05292',4391,4392,4,0),(9147,'05292',4139,4140,4,0),(9148,'05294',3745,3746,4,0),(9149,'05296',3733,3734,4,0),(9150,'05296',3663,3664,4,0),(9151,'05296',3361,3362,4,0),(9152,'05296',4079,4080,4,0),(9153,'05298',4359,4360,4,0),(9154,'05298',4151,4152,4,0),(9155,'05298',3861,3862,4,0),(9156,'05299',3457,3458,4,0),(9157,'05299',3931,3932,4,0),(9158,'05300',3583,3584,4,0),(9159,'05309',4431,4432,4,0),(9160,'05309',3585,3586,4,0),(9161,'05309',3947,3948,4,0),(9162,'05309',3571,3572,4,0),(9163,'05309',4165,4166,4,0),(9164,'05310',3671,3672,4,0),(9165,'05320',3525,3526,4,0),(9166,'05340',3395,3396,4,0),(9167,'05340',3483,3484,4,0),(9168,'05350',4253,4254,4,0),(9169,'05357',4313,4314,4,0),(9170,'05357',3477,3478,4,0),(9171,'05357',3949,3950,4,0),(9172,'05357',3397,3398,4,0),(9173,'05357',3725,3726,4,0),(9174,'05357',4395,4396,4,0),(9175,'05357',4323,4324,4,0),(9176,'05358',3953,3954,4,0),(9177,'05358',4095,4096,4,0),(9178,'05358',3365,3366,4,0),(9179,'05358',3977,3978,4,0),(9180,'05358',4213,4214,4,0),(9181,'05364',3777,3778,4,0),(9182,'05370',3667,3668,4,0),(9183,'05370',3981,3982,4,0),(9184,'05380',4173,4174,4,0),(9185,'05380',3453,3454,4,0),(9186,'05380',3717,3718,4,0),(9187,'05380',3961,3962,4,0),(9188,'05400',3381,3382,4,0),(9189,'05410',3921,3922,4,0),(9190,'05412',4197,4198,4,0),(9191,'05413',4273,4274,4,0),(9192,'05413',4423,4424,4,0),(9193,'05414',3589,3590,4,0),(9194,'05415',3627,3628,4,0),(9195,'05416',3605,3606,4,0),(9196,'05417',3729,3730,4,0),(9197,'05418',3383,3384,4,0),(9198,'05420',4349,4350,4,0),(9199,'05427',3753,3754,4,0),(9200,'05427',3675,3676,4,0),(9201,'05428',3541,3542,4,0),(9202,'05429',3543,3544,4,0),(9203,'05429',4297,4298,4,0),(9204,'05429',4009,4010,4,0),(9205,'05430',3791,3792,4,0),(9206,'05440',4125,4126,4,0),(9207,'05450',3537,3538,4,0),(9208,'05460',3699,3700,4,0),(9209,'05461',3903,3904,4,0),(9210,'05470',4103,4104,4,0),(9211,'05480',3515,3516,4,0),(9212,'05489',3517,3518,4,0),(9213,'05490',3831,3832,4,0),(9214,'05491',3923,3924,4,0),(9215,'05492',4135,4136,4,0),(9216,'05500',4119,4120,4,0),(9217,'05510',4287,4288,4,0),(9218,'05511',4289,4290,4,0),(9219,'05513',3489,3490,4,0),(9220,'05514',3899,3900,4,0),(9221,'05514',4241,4242,4,0),(9222,'05514',3471,3472,4,0),(9223,'05514',4371,4372,4,0),(9224,'05514',4005,4006,4,0),(9225,'05515',4121,4122,4,0),(9226,'05516',3765,3766,4,0),(9227,'05516',4181,4182,4,0),(9228,'05516',4419,4420,4,0),(9229,'05519',2637,2638,4,0),(9230,'05520',4169,4170,4,0),(9231,'05520',4083,4084,4,0),(9232,'05520',3821,3822,4,0),(9233,'05530',3943,3944,4,0),(9234,'05530',4283,4284,4,0),(9235,'05540',4127,4128,4,0),(9236,'05540',3935,3936,4,0),(9237,'05540',3823,3824,4,0),(9238,'05560',3965,3966,4,0),(9239,'05560',4379,4380,4,0),(9240,'05560',4131,4132,4,0),(9241,'05560',3377,3378,4,0),(9242,'05560',4143,4144,4,0),(9243,'05560',4427,4428,4,0),(9244,'05570',3473,3474,4,0),(9245,'05571',4399,4400,4,0),(9246,'05571',3997,3998,4,0),(9247,'05571',3529,3530,4,0),(9248,'05580',3369,3370,4,0),(9249,'05580',4277,4278,4,0),(9250,'05580',3401,3402,4,0),(9251,'05581',4279,4280,4,0),(9252,'05591',4415,4416,4,0),(9253,'05592',4301,4302,4,0),(9254,'05593',3795,3796,4,0),(9255,'05600',3609,3610,4,0),(9256,'05610',3429,3430,4,0),(9257,'05619',3713,3714,4,0),(9258,'05619',4177,4178,4,0),(9259,'05619',4067,4068,4,0),(9260,'05619',3891,3892,4,0),(9261,'05620',3799,3800,4,0),(9262,'05621',4147,4148,4,0),(9263,'05621',4331,4332,4,0),(9264,'05630',4305,4306,4,0),(9265,'05630',3465,3466,4,0),(9266,'05631',4443,4444,4,0),(9267,'05631',4033,4034,4,0),(9268,'05632',4205,4206,4,0),(9269,'05632',4035,4036,4,0),(9270,'05633',4207,4208,4,0),(9271,'05634',3773,3774,4,0),(9272,'05634',3779,3780,4,0),(9273,'05635',4047,4048,4,0),(9274,'05640',3701,3702,4,0),(9275,'05690',3467,3468,4,0),(9276,'05690',3845,3846,4,0),(9277,'05691',4333,4334,4,0),(9278,'05692',3635,3636,4,0),(9279,'05693',4375,4376,4,0),(9280,'05693',3709,3710,4,0),(9281,'05694',3431,3432,4,0),(9282,'05694',3787,3788,4,0),(9283,'05695',3811,3812,4,0),(9284,'05696',3813,3814,4,0),(9285,'05696',4229,4230,4,0),(9286,'05697',4021,4022,4,0),(9287,'05697',4363,4364,4,0),(9288,'05697',4063,4064,4,0),(9289,'05697',3993,3994,4,0),(9290,'06001',4509,4510,4,0),(9291,'06002',4511,4512,4,0),(9292,'06003',4513,4514,4,0),(9293,'06004',4515,4516,4,0),(9294,'06005',4517,4518,4,0),(9295,'06006',4519,4520,4,0),(9296,'06007',4521,4522,4,0),(9297,'06008',4523,4524,4,0),(9298,'06009',4525,4526,4,0),(9299,'06010',4527,4528,4,0),(9300,'06011',4529,4530,4,0),(9301,'06100',4929,4930,4,0),(9302,'06105',4641,4642,4,0),(9303,'06106',4931,4932,4,0),(9304,'06107',4933,4934,4,0),(9305,'06108',4935,4936,4,0),(9306,'06109',4937,4938,4,0),(9307,'06110',5181,5182,4,0),(9308,'06120',4921,4922,4,0),(9309,'06129',5203,5204,4,0),(9310,'06130',5141,5142,4,0),(9311,'06131',4475,4476,4,0),(9312,'06132',4761,4762,4,0),(9313,'06133',5069,5070,4,0),(9314,'06134',5117,5118,4,0),(9315,'06140',5065,5066,4,0),(9316,'06150',5041,5042,4,0),(9317,'06160',4549,4550,4,0),(9318,'06170',4531,4532,4,0),(9319,'06170',4783,4784,4,0),(9320,'06171',4487,4488,4,0),(9321,'06172',5077,5078,4,0),(9322,'06173',4917,4918,4,0),(9323,'06174',5019,5020,4,0),(9324,'06174',4799,4800,4,0),(9325,'06175',5023,5024,4,0),(9326,'06176',4817,4818,4,0),(9327,'06176',4809,4810,4,0),(9328,'06177',5129,5130,4,0),(9329,'06178',5133,5134,4,0),(9330,'06180',4533,4534,4,0),(9331,'06181',4535,4536,4,0),(9332,'06182',4537,4538,4,0),(9333,'06183',4539,4540,4,0),(9334,'06184',4991,4992,4,0),(9335,'06185',5105,5106,4,0),(9336,'06186',4733,4734,4,0),(9337,'06187',4835,4836,4,0),(9338,'06190',4821,4822,4,0),(9339,'06191',4973,4974,4,0),(9340,'06192',5191,5192,4,0),(9341,'06193',4541,4542,4,0),(9342,'06194',4543,4544,4,0),(9343,'06195',4545,4546,4,0),(9344,'06196',4649,4650,4,0),(9345,'06196',5053,5054,4,0),(9346,'06197',4677,4678,4,0),(9347,'06198',5055,5056,4,0),(9348,'06200',4491,4492,4,0),(9349,'06207',4455,4456,4,0),(9350,'06208',5165,5166,4,0),(9351,'06209',5057,5058,4,0),(9352,'06210',5085,5086,4,0),(9353,'06220',5153,5154,4,0),(9354,'06225',5011,5012,4,0),(9355,'06226',4769,4770,4,0),(9356,'06227',4827,4828,4,0),(9357,'06228',4773,4774,4,0),(9358,'06229',4987,4988,4,0),(9359,'06230',4841,4842,4,0),(9360,'06240',4705,4706,4,0),(9361,'06249',4619,4620,4,0),(9362,'06249',4601,4602,4,0),(9363,'06250',4571,4572,4,0),(9364,'06260',4885,4886,4,0),(9365,'06270',5045,5046,4,0),(9366,'06280',4717,4718,4,0),(9367,'06290',5097,5098,4,0),(9368,'06291',4889,4890,4,0),(9369,'06292',4597,4598,4,0),(9370,'06293',4589,4590,4,0),(9371,'06300',5199,5200,4,0),(9372,'06310',4977,4978,4,0),(9373,'06320',4869,4870,4,0),(9374,'06329',4499,4500,4,0),(9375,'06330',5121,5122,4,0),(9376,'06340',4697,4698,4,0),(9377,'06350',4765,4766,4,0),(9378,'06360',4713,4714,4,0),(9379,'06370',4579,4580,4,0),(9380,'06378',5137,5138,4,0),(9381,'06380',4777,4778,4,0),(9382,'06389',4779,4780,4,0),(9383,'06390',4693,4694,4,0),(9384,'06391',4805,4806,4,0),(9385,'06392',4979,4980,4,0),(9386,'06393',4479,4480,4,0),(9387,'06394',4575,4576,4,0),(9388,'06400',4661,4662,4,0),(9389,'06410',4457,4458,4,0),(9390,'06410',5037,5038,4,0),(9391,'06410',4737,4738,4,0),(9392,'06410',4663,4664,4,0),(9393,'06411',4865,4866,4,0),(9394,'06412',4665,4666,4,0),(9395,'06413',4873,4874,4,0),(9396,'06420',4637,4638,4,0),(9397,'06427',4897,4898,4,0),(9398,'06428',4557,4558,4,0),(9399,'06429',4559,4560,4,0),(9400,'06430',5207,5208,4,0),(9401,'06439',4685,4686,4,0),(9402,'06440',4857,4858,4,0),(9403,'06441',4753,4754,4,0),(9404,'06442',5007,5008,4,0),(9405,'06443',4611,4612,4,0),(9406,'06444',5113,5114,4,0),(9407,'06445',4757,4758,4,0),(9408,'06450',4995,4996,4,0),(9409,'06458',5125,5126,4,0),(9410,'06459',4605,4606,4,0),(9411,'06460',4607,4608,4,0),(9412,'06468',4845,4846,4,0),(9413,'06469',4791,4792,4,0),(9414,'06470',4739,4740,4,0),(9415,'06473',5161,5162,4,0),(9416,'06474',5109,5110,4,0),(9417,'06475',4925,4926,4,0),(9418,'06476',4949,4950,4,0),(9419,'06477',4969,4970,4,0),(9420,'06478',4861,4862,4,0),(9421,'06479',4653,4654,4,0),(9422,'06480',4901,4902,4,0),(9423,'06486',4813,4814,4,0),(9424,'06487',4645,4646,4,0),(9425,'06488',4621,4622,4,0),(9426,'06489',4903,4904,4,0),(9427,'06490',4965,4966,4,0),(9428,'06498',4837,4838,4,0),(9429,'06499',4905,4906,4,0),(9430,'06500',5031,5032,4,0),(9431,'06510',4469,4470,4,0),(9432,'06518',4787,4788,4,0),(9433,'06519',4471,4472,4,0),(9434,'06600',4583,4584,4,0),(9435,'06610',4953,4954,4,0),(9436,'06611',5211,5212,4,0),(9437,'06612',4615,4616,4,0),(9438,'06613',4561,4562,4,0),(9439,'06614',4585,4586,4,0),(9440,'06615',4563,4564,4,0),(9441,'06620',4689,4690,4,0),(9442,'06630',4961,4962,4,0),(9443,'06640',5061,5062,4,0),(9444,'06650',5049,5050,4,0),(9445,'06656',4725,4726,4,0),(9446,'06657',5015,5016,4,0),(9447,'06658',5073,5074,4,0),(9448,'06659',4553,4554,4,0),(9449,'06660',4701,4702,4,0),(9450,'06670',4747,4748,4,0),(9451,'06678',5195,5196,4,0),(9452,'06679',4749,4750,4,0),(9453,'06680',4633,4634,4,0),(9454,'06689',5101,5102,4,0),(9455,'06690',4721,4722,4,0),(9456,'06692',4743,4744,4,0),(9457,'06700',5169,5170,4,0),(9458,'06710',5171,5172,4,0),(9459,'06711',4667,4668,4,0),(9460,'06712',5173,5174,4,0),(9461,'06713',4449,4450,4,0),(9462,'06714',4801,4802,4,0),(9463,'06715',5003,5004,4,0),(9464,'06716',5185,5186,4,0),(9465,'06717',5187,5188,4,0),(9466,'06717',4669,4670,4,0),(9467,'06718',5175,5176,4,0),(9468,'06720',5177,5178,4,0),(9469,'06730',4909,4910,4,0),(9470,'06730',4451,4452,4,0),(9471,'06731',4911,4912,4,0),(9472,'06740',4945,4946,4,0),(9473,'06750',4941,4942,4,0),(9474,'06760',4913,4914,4,0),(9475,'06770',4625,4626,4,0),(9476,'06800',4877,4878,4,0),(9477,'06810',4593,4594,4,0),(9478,'06820',4657,4658,4,0),(9479,'06830',40815,40816,4,0),(9480,'06840',4465,4466,4,0),(9481,'06850',4495,4496,4,0),(9482,'06860',4681,4682,4,0),(9483,'06870',4795,4796,4,0),(9484,'06880',5081,5082,4,0),(9485,'06890',5149,5150,4,0),(9486,'06891',4881,4882,4,0),(9487,'06892',5093,5094,4,0),(9488,'06893',5027,5028,4,0),(9489,'06894',4483,4484,4,0),(9490,'06894',4673,4674,4,0),(9491,'06900',4831,4832,4,0),(9492,'06906',4983,4984,4,0),(9493,'06907',4891,4892,4,0),(9494,'06908',4893,4894,4,0),(9495,'06909',5089,5090,4,0),(9496,'06910',4729,4730,4,0),(9497,'06919',4957,4958,4,0),(9498,'06920',4503,4504,4,0),(9499,'06927',5145,5146,4,0),(9500,'06928',4853,4854,4,0),(9501,'06929',4505,4506,4,0),(9502,'06930',4567,4568,4,0),(9503,'06939',4849,4850,4,0),(9504,'06940',4461,4462,4,0),(9505,'06950',5157,5158,4,0),(9506,'06960',4629,4630,4,0),(9507,'06970',4999,5000,4,0),(9508,'06980',4709,4710,4,0),(9509,'07001',5479,5480,4,0),(9510,'07002',5481,5482,4,0),(9511,'07003',5483,5484,4,0),(9512,'07004',5485,5486,4,0),(9513,'07005',5487,5488,4,0),(9514,'07006',5489,5490,4,0),(9515,'07007',5491,5492,4,0),(9516,'07008',5493,5494,4,0),(9517,'07009',5495,5496,4,0),(9518,'07010',5333,5334,4,0),(9519,'07010',5497,5498,4,0),(9520,'07011',5499,5500,4,0),(9521,'07012',5501,5502,4,0),(9522,'07013',5503,5504,4,0),(9523,'07014',5505,5506,4,0),(9524,'07015',5507,5508,4,0),(9525,'07071',5509,5510,4,0),(9526,'07100',5633,5634,4,0),(9527,'07101',5635,5636,4,0),(9528,'07108',5637,5638,4,0),(9529,'07109',5413,5414,4,0),(9530,'07110',5335,5336,4,0),(9531,'07120',5511,5512,4,0),(9532,'07140',5613,5614,4,0),(9533,'07141',5465,5466,4,0),(9534,'07142',5567,5568,4,0),(9535,'07143',5615,5616,4,0),(9536,'07144',5617,5618,4,0),(9537,'07144',5381,5382,4,0),(9538,'07150',5297,5298,4,0),(9539,'07157',5299,5300,4,0),(9540,'07159',5301,5302,4,0),(9541,'07160',5343,5344,4,0),(9542,'07160',5303,5304,4,0),(9543,'07170',5653,5654,4,0),(9544,'07179',5639,5640,4,0),(9545,'07179',5385,5386,4,0),(9546,'07180',5345,5346,4,0),(9547,'07181',5347,5348,4,0),(9548,'07183',5349,5350,4,0),(9549,'07184',5351,5352,4,0),(9550,'07190',5393,5394,4,0),(9551,'07190',5319,5320,4,0),(9552,'07190',5655,5656,4,0),(9553,'07191',5321,5322,4,0),(9554,'07192',5397,5398,4,0),(9555,'07193',5337,5338,4,0),(9556,'07194',5541,5542,4,0),(9557,'07195',5543,5544,4,0),(9558,'07196',5353,5354,4,0),(9559,'07198',5513,5514,4,0),(9560,'07199',5515,5516,4,0),(9561,'07200',5401,5402,4,0),(9562,'07208',5403,5404,4,0),(9563,'07209',5405,5406,4,0),(9564,'07210',5289,5290,4,0),(9565,'07220',5291,5292,4,0),(9566,'07230',5469,5470,4,0),(9567,'07240',5551,5552,4,0),(9568,'07250',5659,5660,4,0),(9569,'07259',5307,5308,4,0),(9570,'07260',5537,5538,4,0),(9571,'07300',5417,5418,4,0),(9572,'07310',5357,5358,4,0),(9573,'07311',5329,5330,4,0),(9574,'07312',5457,5458,4,0),(9575,'07313',5603,5604,4,0),(9576,'07314',5605,5606,4,0),(9577,'07315',5389,5390,4,0),(9578,'07316',5607,5608,4,0),(9579,'07320',5579,5580,4,0),(9580,'07330',5377,5378,4,0),(9581,'07340',5281,5282,4,0),(9582,'07349',5339,5340,4,0),(9583,'07350',5325,5326,4,0),(9584,'07360',5425,5426,4,0),(9585,'07369',5609,5610,4,0),(9586,'07400',5285,5286,4,0),(9587,'07420',5547,5548,4,0),(9588,'07430',5429,5430,4,0),(9589,'07440',5473,5474,4,0),(9590,'07450',5571,5572,4,0),(9591,'07458',5573,5574,4,0),(9592,'07458',5475,5476,4,0),(9593,'07459',5575,5576,4,0),(9594,'07460',5529,5530,4,0),(9595,'07469',5531,5532,4,0),(9596,'07470',5533,5534,4,0),(9597,'07500',5443,5444,4,0),(9598,'07509',5445,5446,4,0),(9599,'07510',5629,5630,4,0),(9600,'07511',5619,5620,4,0),(9601,'07518',5421,5422,4,0),(9602,'07519',5461,5462,4,0),(9603,'07520',5525,5526,4,0),(9604,'07529',5309,5310,4,0),(9605,'07530',5557,5558,4,0),(9606,'07540',5559,5560,4,0),(9607,'07550',5643,5644,4,0),(9608,'07559',5645,5646,4,0),(9609,'07560',5647,5648,4,0),(9610,'07560',5561,5562,4,0),(9611,'07560',5583,5584,4,0),(9612,'07570',5313,5314,4,0),(9613,'07579',5315,5316,4,0),(9614,'07580',5369,5370,4,0),(9615,'07589',5371,5372,4,0),(9616,'07590',5373,5374,4,0),(9617,'07600',5433,5434,4,0),(9618,'07600',5517,5518,4,0),(9619,'07608',5519,5520,4,0),(9620,'07609',5435,5436,4,0),(9621,'07610',5521,5522,4,0),(9622,'07620',5437,5438,4,0),(9623,'07629',5293,5294,4,0),(9624,'07630',5361,5362,4,0),(9625,'07638',5623,5624,4,0),(9626,'07638',5363,5364,4,0),(9627,'07639',5365,5366,4,0),(9628,'07639',5439,5440,4,0),(9629,'07640',5625,5626,4,0),(9630,'07650',5585,5586,4,0),(9631,'07659',5587,5588,4,0),(9632,'07660',5589,5590,4,0),(9633,'07669',5407,5408,4,0),(9634,'07669',5591,5592,4,0),(9635,'07670',5409,5410,4,0),(9636,'07680',5447,5448,4,0),(9637,'07687',5449,5450,4,0),(9638,'07687',5563,5564,4,0),(9639,'07688',5451,5452,4,0),(9640,'07689',5453,5454,4,0),(9641,'07690',5593,5594,4,0),(9642,'07691',5595,5596,4,0),(9643,'07700',5695,5696,4,0),(9644,'07701',5697,5698,4,0),(9645,'07702',5699,5700,4,0),(9646,'07703',5701,5702,4,0),(9647,'07710',5709,5710,4,0),(9648,'07711',5711,5712,4,0),(9649,'07712',5703,5704,4,0),(9650,'07713',5713,5714,4,0),(9651,'07714',5705,5706,4,0),(9652,'07720',5553,5554,4,0),(9653,'07720',5677,5678,4,0),(9654,'07730',5665,5666,4,0),(9655,'07740',5681,5682,4,0),(9656,'07748',5683,5684,4,0),(9657,'07749',5687,5688,4,0),(9658,'07750',5649,5650,4,0),(9659,'07750',5669,5670,4,0),(9660,'07750',5691,5692,4,0),(9661,'07760',5671,5672,4,0),(9662,'07760',5597,5598,4,0),(9663,'07769',5673,5674,4,0),(9664,'07800',5219,5220,4,0),(9665,'07800',5233,5234,4,0),(9666,'07800',5265,5266,4,0),(9667,'07810',5243,5244,4,0),(9668,'07811',5245,5246,4,0),(9669,'07812',5247,5248,4,0),(9670,'07814',5267,5268,4,0),(9671,'07815',5249,5250,4,0),(9672,'07816',5235,5236,4,0),(9673,'07817',5253,5254,4,0),(9674,'07818',5255,5256,4,0),(9675,'07819',5269,5270,4,0),(9676,'07820',5237,5238,4,0),(9677,'07828',5239,5240,4,0),(9678,'07829',5257,5258,4,0),(9679,'07830',5259,5260,4,0),(9680,'07839',5261,5262,4,0),(9681,'07840',5271,5272,4,0),(9682,'07849',5273,5274,4,0),(9683,'07850',5275,5276,4,0),(9684,'07850',5599,5600,4,0),(9685,'07860',5223,5224,4,0),(9686,'07870',5225,5226,4,0),(9687,'07871',5227,5228,4,0),(9688,'07872',5229,5230,4,0),(9689,'08001',5819,5820,4,0),(9690,'08002',5821,5822,4,0),(9691,'08003',5823,5824,4,0),(9692,'08004',5825,5826,4,0),(9693,'08005',5827,5828,4,0),(9694,'08006',5829,5830,4,0),(9695,'08007',5831,5832,4,0),(9696,'08008',5833,5834,4,0),(9697,'08009',5835,5836,4,0),(9698,'08010',5837,5838,4,0),(9699,'08011',5839,5840,4,0),(9700,'08012',5841,5842,4,0),(9701,'08013',5843,5844,4,0),(9702,'08014',5845,5846,4,0),(9703,'08015',5847,5848,4,0),(9704,'08016',5849,5850,4,0),(9705,'08017',5851,5852,4,0),(9706,'08018',5853,5854,4,0),(9707,'08019',5855,5856,4,0),(9708,'08020',5857,5858,4,0),(9709,'08021',5859,5860,4,0),(9710,'08022',5861,5862,4,0),(9711,'08023',5863,5864,4,0),(9712,'08024',5865,5866,4,0),(9713,'08025',5867,5868,4,0),(9714,'08026',5869,5870,4,0),(9715,'08027',5871,5872,4,0),(9716,'08028',5873,5874,4,0),(9717,'08029',5875,5876,4,0),(9718,'08030',5877,5878,4,0),(9719,'08031',5879,5880,4,0),(9720,'08032',5881,5882,4,0),(9721,'08033',5883,5884,4,0),(9722,'08034',5885,5886,4,0),(9723,'08035',5887,5888,4,0),(9724,'08036',5889,5890,4,0),(9725,'08037',5891,5892,4,0),(9726,'08038',5893,5894,4,0),(9727,'08039',5895,5896,4,0),(9728,'08040',5897,5898,4,0),(9729,'08041',5899,5900,4,0),(9730,'08042',5901,5902,4,0),(9731,'08100',6459,6460,4,0),(9732,'08104',6461,6462,4,0),(9733,'08105',6803,6804,4,0),(9734,'08106',7011,7012,4,0),(9735,'08107',6423,6424,4,0),(9736,'08110',6473,6474,4,0),(9737,'08120',6325,6326,4,0),(9738,'08130',7029,7030,4,0),(9739,'08140',5953,5954,4,0),(9740,'08146',6221,6222,4,0),(9741,'08148',6289,6290,4,0),(9742,'08150',6595,6596,4,0),(9743,'08160',6497,6498,4,0),(9744,'08161',6659,6660,4,0),(9745,'08170',6501,6502,4,0),(9746,'08172',6755,6756,4,0),(9747,'08173',6757,6758,4,0),(9748,'08174',6759,6760,4,0),(9749,'08175',6761,6762,4,0),(9750,'08178',6115,6116,4,0),(9751,'08180',6451,6452,4,0),(9752,'08181',7041,7042,4,0),(9753,'08182',6791,6792,4,0),(9754,'08183',6081,6082,4,0),(9755,'08183',6047,6048,4,0),(9756,'08183',6241,6242,4,0),(9757,'08184',6291,6292,4,0),(9758,'08184',6585,6586,4,0),(9759,'08185',6381,6382,4,0),(9760,'08186',6377,6378,4,0),(9761,'08187',6985,6986,4,0),(9762,'08188',7171,7172,4,0),(9763,'08189',6927,6928,4,0),(9764,'08190',6763,6764,4,0),(9765,'08191',6661,6662,4,0),(9766,'08192',6919,6920,4,0),(9767,'08193',6101,6102,4,0),(9768,'08194',6921,6922,4,0),(9769,'08195',6765,6766,4,0),(9770,'08196',6767,6768,4,0),(9771,'08197',6769,6770,4,0),(9772,'08198',6771,6772,4,0),(9773,'08201',6673,6674,4,0),(9774,'08202',6675,6676,4,0),(9775,'08203',6677,6678,4,0),(9776,'08204',6679,6680,4,0),(9777,'08205',6681,6682,4,0),(9778,'08206',6683,6684,4,0),(9779,'08207',6685,6686,4,0),(9780,'08208',6687,6688,4,0),(9781,'08210',5815,5816,4,0),(9782,'08211',6035,6036,4,0),(9783,'08212',6847,6848,4,0),(9784,'08213',6611,6612,4,0),(9785,'08214',5799,5800,4,0),(9786,'08220',6729,6730,4,0),(9787,'08221',7097,7098,4,0),(9788,'08222',7099,7100,4,0),(9789,'08223',7101,7102,4,0),(9790,'08224',7103,7104,4,0),(9791,'08225',7105,7106,4,0),(9792,'08226',7107,7108,4,0),(9793,'08227',7109,7110,4,0),(9794,'08228',7111,7112,4,0),(9795,'08228',6923,6924,4,0),(9796,'08230',6433,6434,4,0),(9797,'08231',7145,7146,4,0),(9798,'08232',7193,7194,4,0),(9799,'08233',7149,7150,4,0),(9800,'08240',6405,6406,4,0),(9801,'08241',6407,6408,4,0),(9802,'08242',6409,6410,4,0),(9803,'08243',6411,6412,4,0),(9804,'08250',6823,6824,4,0),(9805,'08251',7037,7038,4,0),(9806,'08251',6073,6074,4,0),(9807,'08253',6939,6940,4,0),(9808,'08254',6161,6162,4,0),(9809,'08255',6065,6066,4,0),(9810,'08256',5723,5724,4,0),(9811,'08256',6643,6644,4,0),(9812,'08259',6207,6208,4,0),(9813,'08260',7069,7070,4,0),(9814,'08261',6011,6012,4,0),(9815,'08262',5965,5966,4,0),(9816,'08263',6873,6874,4,0),(9817,'08269',6523,6524,4,0),(9818,'08269',6875,6876,4,0),(9819,'08270',6519,6520,4,0),(9820,'08271',5757,5758,4,0),(9821,'08272',6807,6808,4,0),(9822,'08273',7001,7002,4,0),(9823,'08274',6799,6800,4,0),(9824,'08275',5945,5946,4,0),(9825,'08275',6465,6466,4,0),(9826,'08278',7077,7078,4,0),(9827,'08278',6515,6516,4,0),(9828,'08279',5767,5768,4,0),(9829,'08280',5941,5942,4,0),(9830,'08281',6901,6902,4,0),(9831,'08281',5969,5970,4,0),(9832,'08281',6173,6174,4,0),(9833,'08281',23907,23908,4,0),(9834,'08281',6061,6062,4,0),(9835,'08282',6869,6870,4,0),(9836,'08282',6639,6640,4,0),(9837,'08289',6119,6120,4,0),(9838,'08289',7175,7176,4,0),(9839,'08289',24301,24302,4,0),(9840,'08290',6103,6104,4,0),(9841,'08291',6651,6652,4,0),(9842,'08292',6177,6178,4,0),(9843,'08293',6111,6112,4,0),(9844,'08294',6141,6142,4,0),(9845,'08295',6943,6944,4,0),(9846,'08296',6039,6040,4,0),(9847,'08297',6069,6070,4,0),(9848,'08298',6415,6416,4,0),(9849,'08299',6647,6648,4,0),(9850,'08301',6437,6438,4,0),(9851,'08302',6439,6440,4,0),(9852,'08303',6441,6442,4,0),(9853,'08304',6443,6444,4,0),(9854,'08310',5753,5754,4,0),(9855,'08317',6573,6574,4,0),(9856,'08318',6135,6136,4,0),(9857,'08319',6137,6138,4,0),(9858,'08320',6149,6150,4,0),(9859,'08328',5731,5732,4,0),(9860,'08329',7093,7094,4,0),(9861,'08330',6627,6628,4,0),(9862,'08338',6623,6624,4,0),(9863,'08339',7221,7222,4,0),(9864,'08340',7225,7226,4,0),(9865,'08348',5935,5936,4,0),(9866,'08349',5931,5932,4,0),(9867,'08350',5739,5740,4,0),(9868,'08350',5743,5744,4,0),(9869,'08358',5745,5746,4,0),(9870,'08359',6815,6816,4,0),(9871,'08360',5979,5980,4,0),(9872,'08370',5957,5958,4,0),(9873,'08380',6393,6394,4,0),(9874,'08384',5937,5938,4,0),(9875,'08389',6581,6582,4,0),(9876,'08390',6485,6486,4,0),(9877,'08391',7117,7118,4,0),(9878,'08392',6717,6718,4,0),(9879,'08393',5949,5950,4,0),(9880,'08394',6947,6948,4,0),(9881,'08395',6905,6906,4,0),(9882,'08396',6739,6740,4,0),(9883,'08397',6607,6608,4,0),(9884,'08398',7033,7034,4,0),(9885,'08401',6245,6246,4,0),(9886,'08402',6247,6248,4,0),(9887,'08403',6249,6250,4,0),(9888,'08410',7213,7214,4,0),(9889,'08415',5917,5918,4,0),(9890,'08416',5919,5920,4,0),(9891,'08420',5983,5984,4,0),(9892,'08430',6349,6350,4,0),(9893,'08440',6007,6008,4,0),(9894,'08440',5987,5988,4,0),(9895,'08445',5989,5990,4,0),(9896,'08450',6385,6386,4,0),(9897,'08455',7201,7202,4,0),(9898,'08458',6849,6850,4,0),(9899,'08458',6893,6894,4,0),(9900,'08459',6721,6722,4,0),(9901,'08459',6895,6896,4,0),(9902,'08460',6897,6898,4,0),(9903,'08460',7025,7026,4,0),(9904,'08460',6779,6780,4,0),(9905,'08461',6781,6782,4,0),(9906,'08469',6505,6506,4,0),(9907,'08470',6197,6198,4,0),(9908,'08470',6743,6744,4,0),(9909,'08470',5973,5974,4,0),(9910,'08470',7161,7162,4,0),(9911,'08471',7163,7164,4,0),(9912,'08472',5975,5976,4,0),(9913,'08474',6253,6254,4,0),(9914,'08476',6745,6746,4,0),(9915,'08479',6199,6200,4,0),(9916,'08480',6275,6276,4,0),(9917,'08490',7125,7126,4,0),(9918,'08495',6193,6194,4,0),(9919,'08500',7179,7180,4,0),(9920,'08503',6261,6262,4,0),(9921,'08504',6835,6836,4,0),(9922,'08505',6509,6510,4,0),(9923,'08505',6981,6982,4,0),(9924,'08506',5961,5962,4,0),(9925,'08507',6977,6978,4,0),(9926,'08508',6371,6372,4,0),(9927,'08508',6913,6914,4,0),(9928,'08509',6373,6374,4,0),(9929,'08509',6959,6960,4,0),(9930,'08510',6367,6368,4,0),(9931,'08510',6655,6656,4,0),(9932,'08511',6283,6284,4,0),(9933,'08511',7089,7090,4,0),(9934,'08512',6811,6812,4,0),(9935,'08513',6619,6620,4,0),(9936,'08514',6389,6390,4,0),(9937,'08515',6853,6854,4,0),(9938,'08516',6551,6552,4,0),(9939,'08517',7015,7016,4,0),(9940,'08518',6565,6566,4,0),(9941,'08519',7205,7206,4,0),(9942,'08519',7085,7086,4,0),(9943,'08519',6269,6270,4,0),(9944,'08519',7181,7182,4,0),(9945,'08519',6203,6204,4,0),(9946,'08519',6935,6936,4,0),(9947,'08519',6397,6398,4,0),(9948,'08519',6725,6726,4,0),(9949,'08520',6361,6362,4,0),(9950,'08521',6363,6364,4,0),(9951,'08529',6511,6512,4,0),(9952,'08530',5991,5992,4,0),(9953,'08530',6313,6314,4,0),(9954,'08540',6093,6094,4,0),(9955,'08550',5807,5808,4,0),(9956,'08551',7121,7122,4,0),(9957,'08552',7081,7082,4,0),(9958,'08553',7045,7046,4,0),(9959,'08554',7047,7048,4,0),(9960,'08559',6145,6146,4,0),(9961,'08560',6401,6402,4,0),(9962,'08569',6669,6670,4,0),(9963,'08569',6285,6286,4,0),(9964,'08570',7129,7130,4,0),(9965,'08571',6951,6952,4,0),(9966,'08572',6889,6890,4,0),(9967,'08573',6561,6562,4,0),(9968,'08580',6915,6916,4,0),(9969,'08584',7005,7006,4,0),(9970,'08587',5735,5736,4,0),(9971,'08588',7061,7062,4,0),(9972,'08589',7007,7008,4,0),(9973,'08589',6709,6710,4,0),(9974,'08589',6735,6736,4,0),(9975,'08589',6481,6482,4,0),(9976,'08589',6599,6600,4,0),(9977,'08589',7057,7058,4,0),(9978,'08590',6185,6186,4,0),(9979,'08591',5727,5728,4,0),(9980,'08592',6857,6858,4,0),(9981,'08593',7073,7074,4,0),(9982,'08600',5913,5914,4,0),(9983,'08604',6023,6024,4,0),(9984,'08605',6477,6478,4,0),(9985,'08610',5761,5762,4,0),(9986,'08611',6555,6556,4,0),(9987,'08612',6489,6490,4,0),(9988,'08613',7185,7186,4,0),(9989,'08614',6279,6280,4,0),(9990,'08619',5923,5924,4,0),(9991,'08619',6345,6346,4,0),(9992,'08619',6819,6820,4,0),(9993,'08619',6031,6032,4,0),(9994,'08619',7017,7018,4,0),(9995,'08619',6691,6692,4,0),(9996,'08619',6003,6004,4,0),(9997,'08620',6955,6956,4,0),(9998,'08629',7141,7142,4,0),(9999,'08630',5719,5720,4,0),(10000,'08635',6785,6786,4,0),(10001,'08640',6543,6544,4,0),(10002,'08650',6701,6702,4,0),(10003,'08660',5811,5812,4,0),(10004,'08670',6525,6526,4,0),(10005,'08672',6217,6218,4,0),(10006,'08673',7233,7234,4,0),(10007,'08680',6233,6234,4,0),(10008,'08690',6963,6964,4,0),(10009,'08691',6469,6470,4,0),(10010,'08692',6631,6632,4,0),(10011,'08693',6019,6020,4,0),(10012,'08694',6831,6832,4,0),(10013,'08694',6257,6258,4,0),(10014,'08695',5803,5804,4,0),(10015,'08695',6237,6238,4,0),(10016,'08696',6027,6028,4,0),(10017,'08696',6341,6342,4,0),(10018,'08697',23847,23848,4,0),(10019,'08697',6695,6696,4,0),(10020,'08698',6329,6330,4,0),(10021,'08698',6097,6098,4,0),(10022,'08699',6697,6698,4,0),(10023,'08699',7157,7158,4,0),(10024,'08699',6557,6558,4,0),(10025,'08699',5763,5764,4,0),(10026,'08699',6189,6190,4,0),(10027,'08700',6265,6266,4,0),(10028,'08710',6993,6994,4,0),(10029,'08711',6529,6530,4,0),(10030,'08712',6861,6862,4,0),(10031,'08717',5749,5750,4,0),(10032,'08717',24395,24396,4,0),(10033,'08717',6493,6494,4,0),(10034,'08718',5927,5928,4,0),(10035,'08719',6665,6666,4,0),(10036,'08719',6271,6272,4,0),(10037,'08719',6077,6078,4,0),(10038,'08720',7197,7198,4,0),(10039,'08729',6055,6056,4,0),(10040,'08730',6997,6998,4,0),(10041,'08731',5771,5772,4,0),(10042,'08731',6865,6866,4,0),(10043,'08732',6057,6058,4,0),(10044,'08732',6085,6086,4,0),(10045,'08733',6157,6158,4,0),(10046,'08734',5773,5774,4,0),(10047,'08734',6533,6534,4,0),(10048,'08735',7229,7230,4,0),(10049,'08736',6211,6212,4,0),(10050,'08737',7137,7138,4,0),(10051,'08738',6615,6616,4,0),(10052,'08739',6213,6214,4,0),(10053,'08739',7065,7066,4,0),(10054,'08740',6713,6714,4,0),(10055,'08750',6455,6456,4,0),(10056,'08753',6589,6590,4,0),(10057,'08754',6153,6154,4,0),(10058,'08755',6043,6044,4,0),(10059,'08756',6333,6334,4,0),(10060,'08757',6123,6124,4,0),(10061,'08758',6107,6108,4,0),(10062,'08759',7167,7168,4,0),(10063,'08760',6419,6420,4,0),(10064,'08769',6089,6090,4,0),(10065,'08770',6931,6932,4,0),(10066,'08770',6747,6748,4,0),(10067,'08773',6447,6448,4,0),(10068,'08775',7133,7134,4,0),(10069,'08776',6885,6886,4,0),(10070,'08777',6909,6910,4,0),(10071,'08779',6321,6322,4,0),(10072,'08780',6591,6592,4,0),(10073,'08781',6169,6170,4,0),(10074,'08782',6787,6788,4,0),(10075,'08782',6427,6428,4,0),(10076,'08783',6429,6430,4,0),(10077,'08784',6603,6604,4,0),(10078,'08785',7153,7154,4,0),(10079,'08786',5999,6000,4,0),(10080,'08787',7021,7022,4,0),(10081,'08787',6569,6570,4,0),(10082,'08787',6337,6338,4,0),(10083,'08787',6015,6016,4,0),(10084,'08788',7209,7210,4,0),(10085,'08789',6353,6354,4,0),(10086,'08790',6229,6230,4,0),(10087,'08791',6843,6844,4,0),(10088,'08792',6989,6990,4,0),(10089,'08792',6317,6318,4,0),(10090,'08793',5775,5776,4,0),(10091,'08794',6357,6358,4,0),(10092,'08795',6539,6540,4,0),(10093,'08796',6577,6578,4,0),(10094,'08797',6635,6636,4,0),(10095,'08798',6775,6776,4,0),(10096,'08798',5777,5778,4,0),(10097,'08799',6535,6536,4,0),(10098,'08800',7217,7218,4,0),(10099,'08801',7113,7114,4,0),(10100,'08810',6879,6880,4,0),(10101,'08811',5995,5996,4,0),(10102,'08812',6881,6882,4,0),(10103,'08818',6547,6548,4,0),(10104,'08820',6165,6166,4,0),(10105,'08830',6731,6732,4,0),(10106,'08840',7189,7190,4,0),(10107,'08849',6751,6752,4,0),(10108,'08850',6225,6226,4,0),(10109,'08859',5905,5906,4,0),(10110,'08860',6051,6052,4,0),(10111,'08870',7051,7052,4,0),(10112,'08871',7053,7054,4,0),(10113,'08880',6131,6132,4,0),(10114,'08901',6295,6296,4,0),(10115,'08902',6297,6298,4,0),(10116,'08903',6299,6300,4,0),(10117,'08904',6301,6302,4,0),(10118,'08905',6303,6304,4,0),(10119,'08906',6305,6306,4,0),(10120,'08907',6307,6308,4,0),(10121,'08908',6309,6310,4,0),(10122,'08911',5781,5782,4,0),(10123,'08912',5783,5784,4,0),(10124,'08913',5785,5786,4,0),(10125,'08914',5787,5788,4,0),(10126,'08915',5789,5790,4,0),(10127,'08916',5791,5792,4,0),(10128,'08917',5793,5794,4,0),(10129,'08918',5795,5796,4,0),(10130,'08921',6967,6968,4,0),(10131,'08922',6969,6970,4,0),(10132,'08923',6971,6972,4,0),(10133,'08924',6973,6974,4,0),(10134,'08930',6705,6706,4,0),(10135,'08940',6127,6128,4,0),(10136,'08950',6181,6182,4,0),(10137,'08960',6839,6840,4,0),(10138,'08970',6827,6828,4,0),(10139,'08980',6795,6796,4,0),(10140,'09001',7459,7460,4,0),(10141,'09002',7461,7462,4,0),(10142,'09003',7463,7464,4,0),(10143,'09004',8617,8618,4,0),(10144,'09004',7465,7466,4,0),(10145,'09005',7467,7468,4,0),(10146,'09006',7469,7470,4,0),(10147,'09007',7471,7472,4,0),(10148,'09100',8067,8068,4,0),(10149,'09107',7897,7898,4,0),(10150,'09107',7585,7586,4,0),(10151,'09107',7331,7332,4,0),(10152,'09107',8237,8238,4,0),(10153,'09108',8069,8070,4,0),(10154,'09108',7575,7576,4,0),(10155,'09108',8225,8226,4,0),(10156,'09108',8453,8454,4,0),(10157,'09108',9053,9054,4,0),(10158,'09109',8221,8222,4,0),(10159,'09109',8597,8598,4,0),(10160,'09109',7589,7590,4,0),(10161,'09109',8997,8998,4,0),(10162,'09110',7591,7592,4,0),(10163,'09119',7593,7594,4,0),(10164,'09119',8005,8006,4,0),(10165,'09119',8965,8966,4,0),(10166,'09119',8283,8284,4,0),(10167,'09120',8851,8852,4,0),(10168,'09121',8071,8072,4,0),(10169,'09123',8599,8600,4,0),(10170,'09124',7857,7858,4,0),(10171,'09124',8853,8854,4,0),(10172,'09125',8715,8716,4,0),(10173,'09125',8855,8856,4,0),(10174,'09125',7841,7842,4,0),(10175,'09125',8165,8166,4,0),(10176,'09125',7387,7388,4,0),(10177,'09126',7859,7860,4,0),(10178,'09126',7389,7390,4,0),(10179,'09127',7391,7392,4,0),(10180,'09127',8823,8824,4,0),(10181,'09128',8607,8608,4,0),(10182,'09128',7781,7782,4,0),(10183,'09128',8857,8858,4,0),(10184,'09128',7867,7868,4,0),(10185,'09128',8929,8930,4,0),(10186,'09128',9027,9028,4,0),(10187,'09129',8859,8860,4,0),(10188,'09130',8409,8410,4,0),(10189,'09130',8639,8640,4,0),(10190,'09131',7969,7970,4,0),(10191,'09131',8783,8784,4,0),(10192,'09131',8275,8276,4,0),(10193,'09131',7275,7276,4,0),(10194,'09133',8631,8632,4,0),(10195,'09133',7963,7964,4,0),(10196,'09133',8657,8658,4,0),(10197,'09133',8279,8280,4,0),(10198,'09133',7889,7890,4,0),(10199,'09133',8043,8044,4,0),(10200,'09133',8861,8862,4,0),(10201,'09135',8623,8624,4,0),(10202,'09136',8625,8626,4,0),(10203,'09140',8091,8092,4,0),(10204,'09140',8361,8362,4,0),(10205,'09140',8393,8394,4,0),(10206,'09141',7239,7240,4,0),(10207,'09141',8093,8094,4,0),(10208,'09142',8095,8096,4,0),(10209,'09142',8791,8792,4,0),(10210,'09143',8705,8706,4,0),(10211,'09143',8585,8586,4,0),(10212,'09144',8587,8588,4,0),(10213,'09145',8589,8590,4,0),(10214,'09145',8793,8794,4,0),(10215,'09145',8707,8708,4,0),(10216,'09146',7989,7990,4,0),(10217,'09146',8827,8828,4,0),(10218,'09146',8795,8796,4,0),(10219,'09150',8785,8786,4,0),(10220,'09150',7843,7844,4,0),(10221,'09150',7965,7966,4,0),(10222,'09159',8787,8788,4,0),(10223,'09191',8739,8740,4,0),(10224,'09191',7863,7864,4,0),(10225,'09191',9019,9020,4,0),(10226,'09192',8217,8218,4,0),(10227,'09192',7473,7474,4,0),(10228,'09192',7539,7540,4,0),(10229,'09193',7579,7580,4,0),(10230,'09193',7533,7534,4,0),(10231,'09193',7475,7476,4,0),(10232,'09193',7523,7524,4,0),(10233,'09194',7525,7526,4,0),(10234,'09194',7529,7530,4,0),(10235,'09194',7997,7998,4,0),(10236,'09194',8439,8440,4,0),(10237,'09194',7869,7870,4,0),(10238,'09195',7325,7326,4,0),(10239,'09195',8895,8896,4,0),(10240,'09195',8993,8994,4,0),(10241,'09195',8907,8908,4,0),(10242,'09197',8909,8910,4,0),(10243,'09197',7277,7278,4,0),(10244,'09197',8869,8870,4,0),(10245,'09197',8097,8098,4,0),(10246,'09197',8619,8620,4,0),(10247,'09198',7581,7582,4,0),(10248,'09198',8507,8508,4,0),(10249,'09198',7871,7872,4,0),(10250,'09199',7347,7348,4,0),(10251,'09199',8475,8476,4,0),(10252,'09199',7535,7536,4,0),(10253,'09199',7383,7384,4,0),(10254,'09199',8301,8302,4,0),(10255,'09199',7477,7478,4,0),(10256,'09199',9001,9002,4,0),(10257,'09199',7339,7340,4,0),(10258,'09199',8401,8402,4,0),(10259,'09200',8127,8128,4,0),(10260,'09210',8801,8802,4,0),(10261,'09211',8265,8266,4,0),(10262,'09211',8803,8804,4,0),(10263,'09211',8197,8198,4,0),(10264,'09211',7745,7746,4,0),(10265,'09212',8805,8806,4,0),(10266,'09212',8075,8076,4,0),(10267,'09212',8129,8130,4,0),(10268,'09213',7625,7626,4,0),(10269,'09213',8697,8698,4,0),(10270,'09213',8807,8808,4,0),(10271,'09214',7429,7430,4,0),(10272,'09215',7649,7650,4,0),(10273,'09216',7651,7652,4,0),(10274,'09217',7653,7654,4,0),(10275,'09218',8131,8132,4,0),(10276,'09218',7655,7656,4,0),(10277,'09219',8543,8544,4,0),(10278,'09219',7431,7432,4,0),(10279,'09219',7287,7288,4,0),(10280,'09219',8961,8962,4,0),(10281,'09219',8133,8134,4,0),(10282,'09219',7687,7688,4,0),(10283,'09219',7291,7292,4,0),(10284,'09219',8563,8564,4,0),(10285,'09219',8839,8840,4,0),(10286,'09220',8249,8250,4,0),(10287,'09226',7379,7380,4,0),(10288,'09226',8245,8246,4,0),(10289,'09226',7399,7400,4,0),(10290,'09226',8969,8970,4,0),(10291,'09226',7609,7610,4,0),(10292,'09226',9015,9016,4,0),(10293,'09226',8251,8252,4,0),(10294,'09226',9023,9024,4,0),(10295,'09227',7555,7556,4,0),(10296,'09227',8917,8918,4,0),(10297,'09227',7807,7808,4,0),(10298,'09227',8635,8636,4,0),(10299,'09227',7885,7886,4,0),(10300,'09228',8025,8026,4,0),(10301,'09228',9009,9010,4,0),(10302,'09228',8337,8338,4,0),(10303,'09228',8193,8194,4,0),(10304,'09228',7621,7622,4,0),(10305,'09228',8047,8048,4,0),(10306,'09230',8515,8516,4,0),(10307,'09230',7455,7456,4,0),(10308,'09230',7711,7712,4,0),(10309,'09230',7829,7830,4,0),(10310,'09230',7721,7722,4,0),(10311,'09233',7265,7266,4,0),(10312,'09239',7601,7602,4,0),(10313,'09239',7327,7328,4,0),(10314,'09239',7597,7598,4,0),(10315,'09239',7713,7714,4,0),(10316,'09239',7257,7258,4,0),(10317,'09240',7439,7440,4,0),(10318,'09244',7481,7482,4,0),(10319,'09244',7749,7750,4,0),(10320,'09244',8357,8358,4,0),(10321,'09245',9061,9062,4,0),(10322,'09245',8735,8736,4,0),(10323,'09245',7441,7442,4,0),(10324,'09245',7785,7786,4,0),(10325,'09245',7425,7426,4,0),(10326,'09246',8199,8200,4,0),(10327,'09246',8009,8010,4,0),(10328,'09246',7985,7986,4,0),(10329,'09246',8321,8322,4,0),(10330,'09246',8297,8298,4,0),(10331,'09246',7517,7518,4,0),(10332,'09246',8353,8354,4,0),(10333,'09246',8465,8466,4,0),(10334,'09247',7777,7778,4,0),(10335,'09247',8503,8504,4,0),(10336,'09248',8431,8432,4,0),(10337,'09248',7363,7364,4,0),(10338,'09248',7403,7404,4,0),(10339,'09248',7443,7444,4,0),(10340,'09248',8327,8328,4,0),(10341,'09248',7543,7544,4,0),(10342,'09249',8177,8178,4,0),(10343,'09249',8201,8202,4,0),(10344,'09249',8011,8012,4,0),(10345,'09249',7953,7954,4,0),(10346,'09249',8847,8848,4,0),(10347,'09249',7253,7254,4,0),(10348,'09249',7445,7446,4,0),(10349,'09250',7405,7406,4,0),(10350,'09251',7679,7680,4,0),(10351,'09252',8141,8142,4,0),(10352,'09257',8881,8882,4,0),(10353,'09258',8693,8694,4,0),(10354,'09258',7559,7560,4,0),(10355,'09258',7707,7708,4,0),(10356,'09258',7407,7408,4,0),(10357,'09258',8779,8780,4,0),(10358,'09258',8883,8884,4,0),(10359,'09258',7261,7262,4,0),(10360,'09258',8933,8934,4,0),(10361,'09259',7875,7876,4,0),(10362,'09259',7395,7396,4,0),(10363,'09259',7729,7730,4,0),(10364,'09259',7563,7564,4,0),(10365,'09259',8417,8418,4,0),(10366,'09259',9037,9038,4,0),(10367,'09259',8421,8422,4,0),(10368,'09260',8331,8332,4,0),(10369,'09267',7725,7726,4,0),(10370,'09267',7409,7410,4,0),(10371,'09268',8403,8404,4,0),(10372,'09268',8333,8334,4,0),(10373,'09268',8891,8892,4,0),(10374,'09268',8527,8528,4,0),(10375,'09268',8539,8540,4,0),(10376,'09268',8843,8844,4,0),(10377,'09269',8405,8406,4,0),(10378,'09270',8423,8424,4,0),(10379,'09270',7613,7614,4,0),(10380,'09271',8389,8390,4,0),(10381,'09272',7411,7412,4,0),(10382,'09272',7737,7738,4,0),(10383,'09280',7689,7690,4,0),(10384,'09280',8257,8258,4,0),(10385,'09280',7547,7548,4,0),(10386,'09285',8759,8760,4,0),(10387,'09290',8365,8366,4,0),(10388,'09290',7741,7742,4,0),(10389,'09292',7343,7344,4,0),(10390,'09292',8153,8154,4,0),(10391,'09292',8871,8872,4,0),(10392,'09292',8555,8556,4,0),(10393,'09292',7617,7618,4,0),(10394,'09292',8373,8374,4,0),(10395,'09292',8567,8568,4,0),(10396,'09292',7447,7448,4,0),(10397,'09293',7451,7452,4,0),(10398,'09293',8135,8136,4,0),(10399,'09294',7941,7942,4,0),(10400,'09294',7657,7658,4,0),(10401,'09300',8461,8462,4,0),(10402,'09310',9005,9006,4,0),(10403,'09310',8683,8684,4,0),(10404,'09310',8687,8688,4,0),(10405,'09311',8189,8190,4,0),(10406,'09311',7937,7938,4,0),(10407,'09312',7295,7296,4,0),(10408,'09312',8689,8690,4,0),(10409,'09314',8865,8866,4,0),(10410,'09314',8269,8270,4,0),(10411,'09315',7753,7754,4,0),(10412,'09315',7765,7766,4,0),(10413,'09315',7929,7930,4,0),(10414,'09316',7837,7838,4,0),(10415,'09316',7421,7422,4,0),(10416,'09317',8029,8030,4,0),(10417,'09317',8519,8520,4,0),(10418,'09317',8271,8272,4,0),(10419,'09318',7761,7762,4,0),(10420,'09318',8727,8728,4,0),(10421,'09318',8173,8174,4,0),(10422,'09320',8015,8016,4,0),(10423,'09320',7641,7642,4,0),(10424,'09320',8731,8732,4,0),(10425,'09330',8019,8020,4,0),(10426,'09338',8835,8836,4,0),(10427,'09339',9011,9012,4,0),(10428,'09339',8945,8946,4,0),(10429,'09339',9049,9050,4,0),(10430,'09339',8925,8926,4,0),(10431,'09340',7973,7974,4,0),(10432,'09341',8531,8532,4,0),(10433,'09341',8661,8662,4,0),(10434,'09341',7975,7976,4,0),(10435,'09342',8677,8678,4,0),(10436,'09342',8551,8552,4,0),(10437,'09342',8293,8294,4,0),(10438,'09343',8899,8900,4,0),(10439,'09344',8469,8470,4,0),(10440,'09344',8887,8888,4,0),(10441,'09345',8471,8472,4,0),(10442,'09345',7879,7880,4,0),(10443,'09345',8679,8680,4,0),(10444,'09345',7351,7352,4,0),(10445,'09346',8051,8052,4,0),(10446,'09346',7669,7670,4,0),(10447,'09347',8381,8382,4,0),(10448,'09347',7671,7672,4,0),(10449,'09347',8435,8436,4,0),(10450,'09347',8341,8342,4,0),(10451,'09347',7977,7978,4,0),(10452,'09348',7979,7980,4,0),(10453,'09348',8385,8386,4,0),(10454,'09348',8181,8182,4,0),(10455,'09348',7605,7606,4,0),(10456,'09348',8603,8604,4,0),(10457,'09349',7629,7630,4,0),(10458,'09349',7981,7982,4,0),(10459,'09349',7633,7634,4,0),(10460,'09349',7717,7718,4,0),(10461,'09349',8305,8306,4,0),(10462,'09349',8377,8378,4,0),(10463,'09350',8571,8572,4,0),(10464,'09350',7485,7486,4,0),(10465,'09350',8213,8214,4,0),(10466,'09350',7355,7356,4,0),(10467,'09351',7999,8000,4,0),(10468,'09351',7815,7816,4,0),(10469,'09352',7675,7676,4,0),(10470,'09353',8559,8560,4,0),(10471,'09354',8317,8318,4,0),(10472,'09370',7299,7300,4,0),(10473,'09370',8349,8350,4,0),(10474,'09370',7789,7790,4,0),(10475,'09390',8547,8548,4,0),(10476,'09390',8921,8922,4,0),(10477,'09390',8665,8666,4,0),(10478,'09390',8021,8022,4,0),(10479,'09391',7571,7572,4,0),(10480,'09400',7301,7302,4,0),(10481,'09410',8287,8288,4,0),(10482,'09410',7665,7666,4,0),(10483,'09410',7307,7308,4,0),(10484,'09430',7851,7852,4,0),(10485,'09436',7801,7802,4,0),(10486,'09440',8611,8612,4,0),(10487,'09441',8613,8614,4,0),(10488,'09442',8647,8648,4,0),(10489,'09443',8903,8904,4,0),(10490,'09443',7793,7794,4,0),(10491,'09450',7359,7360,4,0),(10492,'09450',7303,7304,4,0),(10493,'09450',7819,7820,4,0),(10494,'09450',8957,8958,4,0),(10495,'09451',7321,7322,4,0),(10496,'09451',7311,7312,4,0),(10497,'09451',7493,7494,4,0),(10498,'09451',7317,7318,4,0),(10499,'09453',8913,8914,4,0),(10500,'09453',8723,8724,4,0),(10501,'09453',8711,8712,4,0),(10502,'09454',7853,7854,4,0),(10503,'09454',8345,8346,4,0),(10504,'09460',8123,8124,4,0),(10505,'09461',7769,7770,4,0),(10506,'09462',7245,7246,4,0),(10507,'09462',7811,7812,4,0),(10508,'09462',8169,8170,4,0),(10509,'09462',7949,7950,4,0),(10510,'09462',8261,8262,4,0),(10511,'09463',7803,7804,4,0),(10512,'09471',7957,7958,4,0),(10513,'09471',7757,7758,4,0),(10514,'09471',8535,8536,4,0),(10515,'09471',7773,7774,4,0),(10516,'09490',7435,7436,4,0),(10517,'09490',8289,8290,4,0),(10518,'09490',9057,9058,4,0),(10519,'09490',8511,8512,4,0),(10520,'09491',8719,8720,4,0),(10521,'09491',7959,7960,4,0),(10522,'09491',7733,7734,4,0),(10523,'09493',7497,7498,4,0),(10524,'09493',8669,8670,4,0),(10525,'09500',8055,8056,4,0),(10526,'09510',8745,8746,4,0),(10527,'09510',7909,7910,4,0),(10528,'09511',7915,7916,4,0),(10529,'09511',7417,7418,4,0),(10530,'09511',8747,8748,4,0),(10531,'09512',8057,8058,4,0),(10532,'09512',8749,8750,4,0),(10533,'09513',8059,8060,4,0),(10534,'09513',8973,8974,4,0),(10535,'09514',8085,8086,4,0),(10536,'09514',8061,8062,4,0),(10537,'09514',7911,7912,4,0),(10538,'09515',8077,8078,4,0),(10539,'09515',8063,8064,4,0),(10540,'09530',8203,8204,4,0),(10541,'09540',8699,8700,4,0),(10542,'09545',8761,8762,4,0),(10543,'09549',8701,8702,4,0),(10544,'09549',8809,8810,4,0),(10545,'09549',8079,8080,4,0),(10546,'09549',8975,8976,4,0),(10547,'09550',8977,8978,4,0),(10548,'09551',8797,8798,4,0),(10549,'09551',7991,7992,4,0),(10550,'09553',8979,8980,4,0),(10551,'09554',8981,8982,4,0),(10552,'09554',8205,8206,4,0),(10553,'09555',8983,8984,4,0),(10554,'09556',8985,8986,4,0),(10555,'09557',8103,8104,4,0),(10556,'09557',8987,8988,4,0),(10557,'09557',8111,8112,4,0),(10558,'09558',8989,8990,4,0),(10559,'09558',8753,8754,4,0),(10560,'09559',8119,8120,4,0),(10561,'09559',7993,7994,4,0),(10562,'09559',8207,8208,4,0),(10563,'09560',7697,7698,4,0),(10564,'09566',7699,7700,4,0),(10565,'09567',7701,7702,4,0),(10566,'09567',8105,8106,4,0),(10567,'09568',8107,8108,4,0),(10568,'09569',7703,7704,4,0),(10569,'09569',8087,8088,4,0),(10570,'09569',8763,8764,4,0),(10571,'09570',7335,7336,4,0),(10572,'09570',7281,7282,4,0),(10573,'09571',7267,7268,4,0),(10574,'09571',8813,8814,4,0),(10575,'09571',7283,7284,4,0),(10576,'09572',8815,8816,4,0),(10577,'09572',8755,8756,4,0),(10578,'09572',7269,7270,4,0),(10579,'09573',8113,8114,4,0),(10580,'09574',8115,8116,4,0),(10581,'09580',8765,8766,4,0),(10582,'09585',8767,8768,4,0),(10583,'09586',8769,8770,4,0),(10584,'09587',8771,8772,4,0),(10585,'09588',8773,8774,4,0),(10586,'09589',8253,8254,4,0),(10587,'09589',8775,8776,4,0),(10588,'09591',8741,8742,4,0),(10589,'09591',8099,8100,4,0),(10590,'09592',7241,7242,4,0),(10591,'09592',8479,8480,4,0),(10592,'09592',8323,8324,4,0),(10593,'09592',7519,7520,4,0),(10594,'09593',7509,7510,4,0),(10595,'09593',7249,7250,4,0),(10596,'09593',8229,8230,4,0),(10597,'09593',8483,8484,4,0),(10598,'09593',8209,8210,4,0),(10599,'09593',8487,8488,4,0),(10600,'09594',8081,8082,4,0),(10601,'09600',8491,8492,4,0),(10602,'09610',7693,7694,4,0),(10603,'09610',7637,7638,4,0),(10604,'09610',8581,8582,4,0),(10605,'09611',7797,7798,4,0),(10606,'09611',7513,7514,4,0),(10607,'09611',8953,8954,4,0),(10608,'09612',8309,8310,4,0),(10609,'09612',7933,7934,4,0),(10610,'09612',7489,7490,4,0),(10611,'09612',8039,8040,4,0),(10612,'09613',8493,8494,4,0),(10613,'09613',8313,8314,4,0),(10614,'09613',9045,9046,4,0),(10615,'09613',7945,7946,4,0),(10616,'09613',7371,7372,4,0),(10617,'09613',7661,7662,4,0),(10618,'09613',8149,8150,4,0),(10619,'09614',8819,8820,4,0),(10620,'09614',7847,7848,4,0),(10621,'09614',7375,7376,4,0),(10622,'09615',8495,8496,4,0),(10623,'09615',8161,8162,4,0),(10624,'09615',8457,8458,4,0),(10625,'09615',7367,7368,4,0),(10626,'09616',8643,8644,4,0),(10627,'09617',8575,8576,4,0),(10628,'09618',8577,8578,4,0),(10629,'09619',7823,7824,4,0),(10630,'09620',8449,8450,4,0),(10631,'09620',8593,8594,4,0),(10632,'09620',8499,8500,4,0),(10633,'09620',8145,8146,4,0),(10634,'09631',7313,7314,4,0),(10635,'09640',7833,7834,4,0),(10636,'09640',9031,9032,4,0),(10637,'09640',7551,7552,4,0),(10638,'09640',7919,7920,4,0),(10639,'09640',8651,8652,4,0),(10640,'09640',8033,8034,4,0),(10641,'09640',7901,7902,4,0),(10642,'09640',8523,8524,4,0),(10643,'09640',8875,8876,4,0),(10644,'09640',7905,7906,4,0),(10645,'09641',7683,7684,4,0),(10646,'09642',8035,8036,4,0),(10647,'09642',8001,8002,4,0),(10648,'09645',8673,8674,4,0),(10649,'09646',9033,9034,4,0),(10650,'09647',8441,8442,4,0),(10651,'09649',8241,8242,4,0),(10652,'09649',8941,8942,4,0),(10653,'09649',8653,8654,4,0),(10654,'09650',8877,8878,4,0),(10655,'09650',7501,7502,4,0),(10656,'09651',7921,7922,4,0),(10657,'09652',8949,8950,4,0),(10658,'09653',7891,7892,4,0),(10659,'09654',7893,7894,4,0),(10660,'09660',7825,7826,4,0),(10661,'09660',8397,8398,4,0),(10662,'09670',8369,8370,4,0),(10663,'09678',7881,7882,4,0),(10664,'09679',8185,8186,4,0),(10665,'09680',8233,8234,4,0),(10666,'09690',9041,9042,4,0),(10667,'09691',8157,8158,4,0),(10668,'09691',7567,7568,4,0),(10669,'09692',7505,7506,4,0),(10670,'09693',8427,8428,4,0),(10671,'10000',9217,9218,4,0),(10672,'10001',9219,9220,4,0),(10673,'10002',9221,9222,4,0),(10674,'10003',9223,9224,4,0),(10675,'10004',9225,9226,4,0),(10676,'10005',9227,9228,4,0),(10677,'10100',9637,9638,4,0),(10678,'10109',9639,9640,4,0),(10679,'10110',9583,9584,4,0),(10680,'10110',9593,9594,4,0),(10681,'10120',9579,9580,4,0),(10682,'10129',9183,9184,4,0),(10683,'10130',10113,10114,4,0),(10684,'10131',10011,10012,4,0),(10685,'10132',9149,9150,4,0),(10686,'10133',9409,9410,4,0),(10687,'10134',9267,9268,4,0),(10688,'10135',9109,9110,4,0),(10689,'10136',9271,9272,4,0),(10690,'10137',9137,9138,4,0),(10691,'10140',9453,9454,4,0),(10692,'10160',9113,9114,4,0),(10693,'10162',9315,9316,4,0),(10694,'10163',9117,9118,4,0),(10695,'10164',9229,9230,4,0),(10696,'10169',10103,10104,4,0),(10697,'10170',10097,10098,4,0),(10698,'10170',9659,9660,4,0),(10699,'10180',9997,9998,4,0),(10700,'10181',9891,9892,4,0),(10701,'10182',10071,10072,4,0),(10702,'10182',9967,9968,4,0),(10703,'10183',9971,9972,4,0),(10704,'10184',9963,9964,4,0),(10705,'10185',9175,9176,4,0),(10706,'10185',9191,9192,4,0),(10707,'10186',9937,9938,4,0),(10708,'10187',9095,9096,4,0),(10709,'10189',9829,9830,4,0),(10710,'10189',9837,9838,4,0),(10711,'10189',9821,9822,4,0),(10712,'10189',10105,10106,4,0),(10713,'10190',9605,9606,4,0),(10714,'10190',9297,9298,4,0),(10715,'10191',9861,9862,4,0),(10716,'10192',9509,9510,4,0),(10717,'10193',9895,9896,4,0),(10718,'10194',9655,9656,4,0),(10719,'10195',9231,9232,4,0),(10720,'10197',9097,9098,4,0),(10721,'10198',9851,9852,4,0),(10722,'10198',9855,9856,4,0),(10723,'10199',9233,9234,4,0),(10724,'10200',9975,9976,4,0),(10725,'10210',9597,9598,4,0),(10726,'10220',9977,9978,4,0),(10727,'10230',9481,9482,4,0),(10728,'10240',9375,9376,4,0),(10729,'10250',9423,9424,4,0),(10730,'10251',9121,9122,4,0),(10731,'10252',9945,9946,4,0),(10732,'10260',9841,9842,4,0),(10733,'10261',9803,9804,4,0),(10734,'10261',9783,9784,4,0),(10735,'10262',9071,9072,4,0),(10736,'10263',10061,10062,4,0),(10737,'10269',9805,9806,4,0),(10738,'10270',9557,9558,4,0),(10739,'10271',9765,9766,4,0),(10740,'10280',9527,9528,4,0),(10741,'10290',9979,9980,4,0),(10742,'10291',9553,9554,4,0),(10743,'10291',9981,9982,4,0),(10744,'10292',9983,9984,4,0),(10745,'10300',9679,9680,4,0),(10746,'10310',9903,9904,4,0),(10747,'10317',9369,9370,4,0),(10748,'10318',9905,9906,4,0),(10749,'10319',9907,9908,4,0),(10750,'10320',9187,9188,4,0),(10751,'10328',9413,9414,4,0),(10752,'10329',9633,9634,4,0),(10753,'10329',9263,9264,4,0),(10754,'10329',9991,9992,4,0),(10755,'10330',10087,10088,4,0),(10756,'10331',9293,9294,4,0),(10757,'10331',10089,10090,4,0),(10758,'10332',10007,10008,4,0),(10759,'10332',9993,9994,4,0),(10760,'10333',9443,9444,4,0),(10761,'10334',9729,9730,4,0),(10762,'10335',9725,9726,4,0),(10763,'10340',9349,9350,4,0),(10764,'10341',9683,9684,4,0),(10765,'10350',9145,9146,4,0),(10766,'10359',9813,9814,4,0),(10767,'10359',9505,9506,4,0),(10768,'10360',9329,9330,4,0),(10769,'10370',9389,9390,4,0),(10770,'10370',9487,9488,4,0),(10771,'10371',9809,9810,4,0),(10772,'10372',9199,9200,4,0),(10773,'10373',9201,9202,4,0),(10774,'10374',9691,9692,4,0),(10775,'10380',9531,9532,4,0),(10776,'10390',9873,9874,4,0),(10777,'10391',9817,9818,4,0),(10778,'10392',9179,9180,4,0),(10779,'10392',9397,9398,4,0),(10780,'10393',10003,10004,4,0),(10781,'10394',9643,9644,4,0),(10782,'10394',9171,9172,4,0),(10783,'10400',9537,9538,4,0),(10784,'10410',9159,9160,4,0),(10785,'10411',9717,9718,4,0),(10786,'10412',9427,9428,4,0),(10787,'10413',9959,9960,4,0),(10788,'10414',9371,9372,4,0),(10789,'10415',10019,10020,4,0),(10790,'10420',9911,9912,4,0),(10791,'10430',9385,9386,4,0),(10792,'10440',9125,9126,4,0),(10793,'10450',9541,9542,4,0),(10794,'10459',9477,9478,4,0),(10795,'10460',9585,9586,4,0),(10796,'10470',10077,10078,4,0),(10797,'10480',9589,9590,4,0),(10798,'10484',10043,10044,4,0),(10799,'10490',10035,10036,4,0),(10800,'10490',10079,10080,4,0),(10801,'10491',9899,9900,4,0),(10802,'10492',10049,10050,4,0),(10803,'10493',9799,9800,4,0),(10804,'10500',10021,10022,4,0),(10805,'10509',10023,10024,4,0),(10806,'10510',9857,9858,4,0),(10807,'10511',9283,9284,4,0),(10808,'10512',9493,9494,4,0),(10809,'10513',9357,9358,4,0),(10810,'10514',10025,10026,4,0),(10811,'10515',10027,10028,4,0),(10812,'10516',10029,10030,4,0),(10813,'10519',10031,10032,4,0),(10814,'10520',9919,9920,4,0),(10815,'10520',9341,9342,4,0),(10816,'10528',9887,9888,4,0),(10817,'10529',9601,9602,4,0),(10818,'10530',9881,9882,4,0),(10819,'10540',9647,9648,4,0),(10820,'10550',9141,9142,4,0),(10821,'10560',9497,9498,4,0),(10822,'10570',9825,9826,4,0),(10823,'10580',9629,9630,4,0),(10824,'10590',9611,9612,4,0),(10825,'10591',9921,9922,4,0),(10826,'10591',9613,9614,4,0),(10827,'10591',9483,9484,4,0),(10828,'10592',9325,9326,4,0),(10829,'10593',9299,9300,4,0),(10830,'10600',9757,9758,4,0),(10831,'10610',9209,9210,4,0),(10832,'10611',9929,9930,4,0),(10833,'10612',9549,9550,4,0),(10834,'10613',9675,9676,4,0),(10835,'10614',9987,9988,4,0),(10836,'10615',9753,9754,4,0),(10837,'10616',9469,9470,4,0),(10838,'10616',9333,9334,4,0),(10839,'10616',9213,9214,4,0),(10840,'10617',36119,36120,4,0),(10841,'10617',9401,9402,4,0),(10842,'10620',9251,9252,4,0),(10843,'10623',9253,9254,4,0),(10844,'10623',9695,9696,4,0),(10845,'10624',9255,9256,4,0),(10846,'10624',9573,9574,4,0),(10847,'10625',9575,9576,4,0),(10848,'10626',9697,9698,4,0),(10849,'10627',9699,9700,4,0),(10850,'10628',9701,9702,4,0),(10851,'10628',9311,9312,4,0),(10852,'10629',9257,9258,4,0),(10853,'10629',9703,9704,4,0),(10854,'10630',9259,9260,4,0),(10855,'10630',9303,9304,4,0),(10856,'10630',9745,9746,4,0),(10857,'10638',9747,9748,4,0),(10858,'10639',9749,9750,4,0),(10859,'10640',9305,9306,4,0),(10860,'10649',9569,9570,4,0),(10861,'10649',9307,9308,4,0),(10862,'10650',9087,9088,4,0),(10863,'10660',9713,9714,4,0),(10864,'10660',9845,9846,4,0),(10865,'10660',9707,9708,4,0),(10866,'10661',9847,9848,4,0),(10867,'10662',9621,9622,4,0),(10868,'10663',9361,9362,4,0),(10869,'10663',9533,9534,4,0),(10870,'10664',9651,9652,4,0),(10871,'10665',9471,9472,4,0),(10872,'10666',9083,9084,4,0),(10873,'10666',9869,9870,4,0),(10874,'10667',9709,9710,4,0),(10875,'10670',9287,9288,4,0),(10876,'10671',9759,9760,4,0),(10877,'10671',9133,9134,4,0),(10878,'10671',9289,9290,4,0),(10879,'10672',10015,10016,4,0),(10880,'10680',9615,9616,4,0),(10881,'10690',9417,9418,4,0),(10882,'10690',9761,9762,4,0),(10883,'10690',9091,9092,4,0),(10884,'10691',9419,9420,4,0),(10885,'10692',9461,9462,4,0),(10886,'10693',9789,9790,4,0),(10887,'10694',9923,9924,4,0),(10888,'10694',9949,9950,4,0),(10889,'10695',9883,9884,4,0),(10890,'10696',9435,9436,4,0),(10891,'10696',9167,9168,4,0),(10892,'10697',9925,9926,4,0),(10893,'10697',9913,9914,4,0),(10894,'10697',9617,9618,4,0),(10895,'10700',9501,9502,4,0),(10896,'10701',35051,35052,4,0),(10897,'10710',10099,10100,4,0),(10898,'10711',9565,9566,4,0),(10899,'10712',9473,9474,4,0),(10900,'10720',10083,10084,4,0),(10901,'10728',9545,9546,4,0),(10902,'10729',9205,9206,4,0),(10903,'10730',9337,9338,4,0),(10904,'10739',9877,9878,4,0),(10905,'10740',9129,9130,4,0),(10906,'10748',9067,9068,4,0),(10907,'10749',9431,9432,4,0),(10908,'10750',9163,9164,4,0),(10909,'10759',9561,9562,4,0),(10910,'10800',9379,9380,4,0),(10911,'10810',9999,10000,4,0),(10912,'10810',9663,9664,4,0),(10913,'10811',9671,9672,4,0),(10914,'10811',9463,9464,4,0),(10915,'10811',9381,9382,4,0),(10916,'10812',10073,10074,4,0),(10917,'10813',9777,9778,4,0),(10918,'10814',10053,10054,4,0),(10919,'10815',9457,9458,4,0),(10920,'10816',9319,9320,4,0),(10921,'10816',9465,9466,4,0),(10922,'10817',9247,9248,4,0),(10923,'10818',9345,9346,4,0),(10924,'10818',9321,9322,4,0),(10925,'10820',9275,9276,4,0),(10926,'10824',9513,9514,4,0),(10927,'10828',9773,9774,4,0),(10928,'10829',9515,9516,4,0),(10929,'10829',9277,9278,4,0),(10930,'10829',9721,9722,4,0),(10931,'10829',9791,9792,4,0),(10932,'10830',9953,9954,4,0),(10933,'10839',9955,9956,4,0),(10934,'10840',9667,9668,4,0),(10935,'10848',10045,10046,4,0),(10936,'10849',9523,9524,4,0),(10937,'10849',9447,9448,4,0),(10938,'10850',9519,9520,4,0),(10939,'10857',9075,9076,4,0),(10940,'10858',10093,10094,4,0),(10941,'10859',9865,9866,4,0),(10942,'10860',9449,9450,4,0),(10943,'10864',9933,9934,4,0),(10944,'10865',9243,9244,4,0),(10945,'10866',9393,9394,4,0),(10946,'10867',9795,9796,4,0),(10947,'10868',9489,9490,4,0),(10948,'10869',9941,9942,4,0),(10949,'10870',9353,9354,4,0),(10950,'10879',9079,9080,4,0),(10951,'10880',10109,10110,4,0),(10952,'10881',9239,9240,4,0),(10953,'10882',9737,9738,4,0),(10954,'10883',9769,9770,4,0),(10955,'10890',10039,10040,4,0),(10956,'10891',9405,9406,4,0),(10957,'10892',9833,9834,4,0),(10958,'10893',10065,10066,4,0),(10959,'10894',10067,10068,4,0),(10960,'10895',9365,9366,4,0),(10961,'10896',9733,9734,4,0),(10962,'10897',9279,9280,4,0),(10963,'10900',9153,9154,4,0),(10964,'10910',9607,9608,4,0),(10965,'10920',9235,9236,4,0),(10966,'10930',9687,9688,4,0),(10967,'10940',9439,9440,4,0),(10968,'10950',9195,9196,4,0),(10969,'10960',10057,10058,4,0),(10970,'10970',9625,9626,4,0),(10971,'10980',9101,9102,4,0),(10972,'10989',9103,9104,4,0),(10973,'10990',9105,9106,4,0),(10974,'10991',9741,9742,4,0),(10975,'11001',10189,10190,4,0),(10976,'11002',10191,10192,4,0),(10977,'11003',10193,10194,4,0),(10978,'11004',10195,10196,4,0),(10979,'11005',10197,10198,4,0),(10980,'11006',10199,10200,4,0),(10981,'11007',10201,10202,4,0),(10982,'11008',10203,10204,4,0),(10983,'11009',10205,10206,4,0),(10984,'11010',10207,10208,4,0),(10985,'11011',10209,10210,4,0),(10986,'11012',10211,10212,4,0),(10987,'11100',10351,10352,4,0),(10988,'11130',10219,10220,4,0),(10989,'11139',10221,10222,4,0),(10990,'11140',10229,10230,4,0),(10991,'11149',10231,10232,4,0),(10992,'11150',10417,10418,4,0),(10993,'11150',10165,10166,4,0),(10994,'11158',10419,10420,4,0),(10995,'11159',10167,10168,4,0),(10996,'11159',10421,10422,4,0),(10997,'11160',10169,10170,4,0),(10998,'11170',10315,10316,4,0),(10999,'11178',10325,10326,4,0),(11000,'11179',10423,10424,4,0),(11001,'11179',10317,10318,4,0),(11002,'11180',10119,10120,4,0),(11003,'11190',10175,10176,4,0),(11004,'11201',10131,10132,4,0),(11005,'11202',10133,10134,4,0),(11006,'11203',10135,10136,4,0),(11007,'11204',10137,10138,4,0),(11008,'11205',10139,10140,4,0),(11009,'11206',10141,10142,4,0),(11010,'11207',10143,10144,4,0),(11011,'11300',10305,10306,4,0),(11012,'11300',10341,10342,4,0),(11013,'11310',10361,10362,4,0),(11014,'11311',10363,10364,4,0),(11015,'11311',10379,10380,4,0),(11016,'11312',10365,10366,4,0),(11017,'11313',10367,10368,4,0),(11018,'11314',10369,10370,4,0),(11019,'11320',10295,10296,4,0),(11020,'11330',10297,10298,4,0),(11021,'11339',10299,10300,4,0),(11022,'11340',10301,10302,4,0),(11023,'11350',10215,10216,4,0),(11024,'11360',10371,10372,4,0),(11025,'11368',10373,10374,4,0),(11026,'11369',10375,10376,4,0),(11027,'11369',10381,10382,4,0),(11028,'11370',10309,10310,4,0),(11029,'11379',10311,10312,4,0),(11030,'11380',10393,10394,4,0),(11031,'11390',10395,10396,4,0),(11032,'11390',10145,10146,4,0),(11033,'11391',10397,10398,4,0),(11034,'11391',10147,10148,4,0),(11035,'11392',10399,10400,4,0),(11036,'11393',10401,10402,4,0),(11037,'11393',10171,10172,4,0),(11038,'11400',10257,10258,4,0),(11039,'11401',10259,10260,4,0),(11040,'11402',10261,10262,4,0),(11041,'11403',10263,10264,4,0),(11042,'11404',10265,10266,4,0),(11043,'11405',10267,10268,4,0),(11044,'11406',10269,10270,4,0),(11045,'11407',10271,10272,4,0),(11046,'11408',10273,10274,4,0),(11047,'11500',10243,10244,4,0),(11048,'11510',10333,10334,4,0),(11049,'11518',10335,10336,4,0),(11050,'11519',10337,10338,4,0),(11051,'11520',10347,10348,4,0),(11052,'11540',10383,10384,4,0),(11053,'11549',10385,10386,4,0),(11054,'11550',10225,10226,4,0),(11055,'11560',10409,10410,4,0),(11056,'11570',10275,10276,4,0),(11057,'11579',10277,10278,4,0),(11058,'11580',10355,10356,4,0),(11059,'11589',10357,10358,4,0),(11060,'11590',10279,10280,4,0),(11061,'11591',10281,10282,4,0),(11062,'11592',10283,10284,4,0),(11063,'11593',10285,10286,4,0),(11064,'11594',10287,10288,4,0),(11065,'11595',10289,10290,4,0),(11066,'11596',10291,10292,4,0),(11067,'11600',10413,10414,4,0),(11068,'11610',10251,10252,4,0),(11069,'11611',10427,10428,4,0),(11070,'11612',10179,10180,4,0),(11071,'11620',10157,10158,4,0),(11072,'11630',10159,10160,4,0),(11073,'11638',10161,10162,4,0),(11074,'11639',10127,10128,4,0),(11075,'11640',10183,10184,4,0),(11076,'11648',10247,10248,4,0),(11077,'11649',10185,10186,4,0),(11078,'11650',10431,10432,4,0),(11079,'11659',10343,10344,4,0),(11080,'11660',10329,10330,4,0),(11081,'11670',10235,10236,4,0),(11082,'11679',10253,10254,4,0),(11083,'11680',10151,10152,4,0),(11084,'11687',10239,10240,4,0),(11085,'11688',10435,10436,4,0),(11086,'11689',10153,10154,4,0),(11087,'11690',10321,10322,4,0),(11088,'11691',10405,10406,4,0),(11089,'11692',10389,10390,4,0),(11090,'11693',10123,10124,4,0),(11091,'12001',11371,11372,4,0),(11092,'12002',11373,11374,4,0),(11093,'12003',11375,11376,4,0),(11094,'12004',11377,11378,4,0),(11095,'12005',11379,11380,4,0),(11096,'12006',11381,11382,4,0),(11097,'12100',11383,11384,4,0),(11098,'12110',11497,11498,4,0),(11099,'12118',11741,11742,4,0),(11100,'12119',11435,11436,4,0),(11101,'12119',11499,11500,4,0),(11102,'12120',11557,11558,4,0),(11103,'12121',11501,11502,4,0),(11104,'12122',11459,11460,4,0),(11105,'12122',11743,11744,4,0),(11106,'12123',11389,11390,4,0),(11107,'12123',11561,11562,4,0),(11108,'12124',11787,11788,4,0),(11109,'12125',11827,11828,4,0),(11110,'12126',11429,11430,4,0),(11111,'12127',11431,11432,4,0),(11112,'12130',11655,11656,4,0),(11113,'12131',11745,11746,4,0),(11114,'12132',11285,11286,4,0),(11115,'12133',11287,11288,4,0),(11116,'12134',11311,11312,4,0),(11117,'12134',11411,11412,4,0),(11118,'12135',11479,11480,4,0),(11119,'12135',11807,11808,4,0),(11120,'12140',11231,11232,4,0),(11121,'12150',11783,11784,4,0),(11122,'12159',11363,11364,4,0),(11123,'12160',11315,11316,4,0),(11124,'12161',11533,11534,4,0),(11125,'12162',11779,11780,4,0),(11126,'12163',11439,11440,4,0),(11127,'12164',11679,11680,4,0),(11128,'12165',11273,11274,4,0),(11129,'12166',11681,11682,4,0),(11130,'12170',11663,11664,4,0),(11131,'12179',11709,11710,4,0),(11132,'12180',11345,11346,4,0),(11133,'12181',11329,11330,4,0),(11134,'12182',11683,11684,4,0),(11135,'12183',11775,11776,4,0),(11136,'12184',11537,11538,4,0),(11137,'12184',11529,11530,4,0),(11138,'12185',11553,11554,4,0),(11139,'12186',11525,11526,4,0),(11140,'12190',11341,11342,4,0),(11141,'12191',11521,11522,4,0),(11142,'12192',11771,11772,4,0),(11143,'12193',11749,11750,4,0),(11144,'12193',11685,11686,4,0),(11145,'12194',11751,11752,4,0),(11146,'12200',11599,11600,4,0),(11147,'12210',11633,11634,4,0),(11148,'12220',11601,11602,4,0),(11149,'12221',11701,11702,4,0),(11150,'12222',11241,11242,4,0),(11151,'12222',11227,11228,4,0),(11152,'12223',11697,11698,4,0),(11153,'12224',11791,11792,4,0),(11154,'12224',11291,11292,4,0),(11155,'12225',11471,11472,4,0),(11156,'12225',11725,11726,4,0),(11157,'12230',11759,11760,4,0),(11158,'12230',11717,11718,4,0),(11159,'12230',11451,11452,4,0),(11160,'12230',11455,11456,4,0),(11161,'12230',11277,11278,4,0),(11162,'12231',11423,11424,4,0),(11163,'12232',11269,11270,4,0),(11164,'12232',11425,11426,4,0),(11165,'12232',11733,11734,4,0),(11166,'12300',11581,11582,4,0),(11167,'12310',11463,11464,4,0),(11168,'12311',11823,11824,4,0),(11169,'12311',11799,11800,4,0),(11170,'12311',11609,11610,4,0),(11171,'12312',11595,11596,4,0),(11172,'12312',11513,11514,4,0),(11173,'12312',11713,11714,4,0),(11174,'12315',11763,11764,4,0),(11175,'12317',11485,11486,4,0),(11176,'12318',11625,11626,4,0),(11177,'12318',11419,11420,4,0),(11178,'12319',11359,11360,4,0),(11179,'12320',11659,11660,4,0),(11180,'12330',11649,11650,4,0),(11181,'12330',11737,11738,4,0),(11182,'12340',11505,11506,4,0),(11183,'12350',11355,11356,4,0),(11184,'12360',11817,11818,4,0),(11185,'12370',11819,11820,4,0),(11186,'12400',11671,11672,4,0),(11187,'12410',11265,11266,4,0),(11188,'12412',11673,11674,4,0),(11189,'12412',11481,11482,4,0),(11190,'12413',11257,11258,4,0),(11191,'12413',11367,11368,4,0),(11192,'12414',11675,11676,4,0),(11193,'12414',11249,11250,4,0),(11194,'12414',11755,11756,4,0),(11195,'12415',11475,11476,4,0),(11196,'12415',11565,11566,4,0),(11197,'12420',11299,11300,4,0),(11198,'12428',11629,11630,4,0),(11199,'12428',11795,11796,4,0),(11200,'12428',11467,11468,4,0),(11201,'12429',11621,11622,4,0),(11202,'12429',11443,11444,4,0),(11203,'12430',11303,11304,4,0),(11204,'12431',11721,11722,4,0),(11205,'12440',11397,11398,4,0),(11206,'12447',11573,11574,4,0),(11207,'12448',11577,11578,4,0),(11208,'12449',11307,11308,4,0),(11209,'12449',11489,11490,4,0),(11210,'12449',11613,11614,4,0),(11211,'12450',11493,11494,4,0),(11212,'12460',11811,11812,4,0),(11213,'12469',11705,11706,4,0),(11214,'12469',11645,11646,4,0),(11215,'12469',11813,11814,4,0),(11216,'12470',11585,11586,4,0),(11217,'12480',11689,11690,4,0),(11218,'12489',11693,11694,4,0),(11219,'12490',11295,11296,4,0),(11220,'12499',11415,11416,4,0),(11221,'12500',11803,11804,4,0),(11222,'12510',11651,11652,4,0),(11223,'12511',11637,11638,4,0),(11224,'12512',11639,11640,4,0),(11225,'12513',11393,11394,4,0),(11226,'12520',11589,11590,4,0),(11227,'12526',11545,11546,4,0),(11228,'12527',11281,11282,4,0),(11229,'12528',11447,11448,4,0),(11230,'12529',11591,11592,4,0),(11231,'12530',11319,11320,4,0),(11232,'12530',11337,11338,4,0),(11233,'12539',11549,11550,4,0),(11234,'12540',11767,11768,4,0),(11235,'12549',11333,11334,4,0),(11236,'12550',11253,11254,4,0),(11237,'12560',11385,11386,4,0),(11238,'12560',11325,11326,4,0),(11239,'12570',11235,11236,4,0),(11240,'12578',11401,11402,4,0),(11241,'12579',11237,11238,4,0),(11242,'12580',11321,11322,4,0),(11243,'12589',11351,11352,4,0),(11244,'12590',11261,11262,4,0),(11245,'12591',11509,11510,4,0),(11246,'12592',11405,11406,4,0),(11247,'12593',11569,11570,4,0),(11248,'12594',11605,11606,4,0),(11249,'12595',11347,11348,4,0),(11250,'12596',11729,11730,4,0),(11251,'12597',11667,11668,4,0),(11252,'12598',11617,11618,4,0),(11253,'12599',11641,11642,4,0),(11254,'12599',11517,11518,4,0),(11255,'12600',11541,11542,4,0),(11256,'12609',11245,11246,4,0),(11257,'12952',11407,11408,4,0),(11258,'13001',12021,12022,4,0),(11259,'13002',12023,12024,4,0),(11260,'13003',12025,12026,4,0),(11261,'13004',12027,12028,4,0),(11262,'13005',12029,12030,4,0),(11263,'13097',12031,12032,4,0),(11264,'13100',12179,12180,4,0),(11265,'13107',11867,11868,4,0),(11266,'13108',12121,12122,4,0),(11267,'13109',12203,12204,4,0),(11268,'13110',12097,12098,4,0),(11269,'13114',12053,12054,4,0),(11270,'13115',11861,11862,4,0),(11271,'13116',11863,11864,4,0),(11272,'13117',11937,11938,4,0),(11273,'13118',12189,12190,4,0),(11274,'13118',11939,11940,4,0),(11275,'13120',12191,12192,4,0),(11276,'13129',12193,12194,4,0),(11277,'13130',12065,12066,4,0),(11278,'13140',12057,12058,4,0),(11279,'13150',12005,12006,4,0),(11280,'13160',12267,12268,4,0),(11281,'13170',12149,12150,4,0),(11282,'13179',12199,12200,4,0),(11283,'13180',11833,11834,4,0),(11284,'13189',11905,11906,4,0),(11285,'13190',12041,12042,4,0),(11286,'13190',12151,12152,4,0),(11287,'13191',12001,12002,4,0),(11288,'13191',12117,12118,4,0),(11289,'13192',11907,11908,4,0),(11290,'13192',11977,11978,4,0),(11291,'13193',12061,12062,4,0),(11292,'13193',11959,11960,4,0),(11293,'13193',12163,12164,4,0),(11294,'13194',12125,12126,4,0),(11295,'13194',12167,12168,4,0),(11296,'13194',12195,12196,4,0),(11297,'13194',12221,12222,4,0),(11298,'13195',12033,12034,4,0),(11299,'13195',12185,12186,4,0),(11300,'13196',12175,12176,4,0),(11301,'13196',12181,12182,4,0),(11302,'13196',12035,12036,4,0),(11303,'13197',12037,12038,4,0),(11304,'13200',12135,12136,4,0),(11305,'13210',12327,12328,4,0),(11306,'13220',12109,12110,4,0),(11307,'13230',12139,12140,4,0),(11308,'13240',12101,12102,4,0),(11309,'13247',12233,12234,4,0),(11310,'13248',11879,11880,4,0),(11311,'13249',12225,12226,4,0),(11312,'13250',12049,12050,4,0),(11313,'13260',11967,11968,4,0),(11314,'13260',11895,11896,4,0),(11315,'13270',11897,11898,4,0),(11316,'13279',12289,12290,4,0),(11317,'13300',12283,12284,4,0),(11318,'13300',11851,11852,4,0),(11319,'13310',12285,12286,4,0),(11320,'13320',12311,12312,4,0),(11321,'13326',12155,12156,4,0),(11322,'13327',12241,12242,4,0),(11323,'13328',11901,11902,4,0),(11324,'13329',12009,12010,4,0),(11325,'13330',12307,12308,4,0),(11326,'13331',12293,12294,4,0),(11327,'13332',12295,12296,4,0),(11328,'13333',12069,12070,4,0),(11329,'13340',11847,11848,4,0),(11330,'13341',12257,12258,4,0),(11331,'13342',12207,12208,4,0),(11332,'13343',12299,12300,4,0),(11333,'13344',12271,12272,4,0),(11334,'13345',12045,12046,4,0),(11335,'13350',12159,12160,4,0),(11336,'13360',12079,12080,4,0),(11337,'13370',11985,11986,4,0),(11338,'13379',12315,12316,4,0),(11339,'13380',11875,11876,4,0),(11340,'13390',11881,11882,4,0),(11341,'13391',11871,11872,4,0),(11342,'13400',11885,11886,4,0),(11343,'13410',11839,11840,4,0),(11344,'13411',12279,12280,4,0),(11345,'13412',12017,12018,4,0),(11346,'13413',11843,11844,4,0),(11347,'13414',11889,11890,4,0),(11348,'13414',12229,12230,4,0),(11349,'13415',11909,11910,4,0),(11350,'13420',12127,12128,4,0),(11351,'13427',12113,12114,4,0),(11352,'13428',12129,12130,4,0),(11353,'13428',12073,12074,4,0),(11354,'13429',12131,12132,4,0),(11355,'13430',11997,11998,4,0),(11356,'13431',12319,12320,4,0),(11357,'13432',11963,11964,4,0),(11358,'13440',11955,11956,4,0),(11359,'13449',11971,11972,4,0),(11360,'13450',11973,11974,4,0),(11361,'13459',11911,11912,4,0),(11362,'13460',11913,11914,4,0),(11363,'13470',11915,11916,4,0),(11364,'13473',11917,11918,4,0),(11365,'13473',11835,11836,4,0),(11366,'13480',11891,11892,4,0),(11367,'13490',12083,12084,4,0),(11368,'13499',12085,12086,4,0),(11369,'13500',12215,12216,4,0),(11370,'13580',11919,11920,4,0),(11371,'13590',12093,12094,4,0),(11372,'13591',11981,11982,4,0),(11373,'13592',12143,12144,4,0),(11374,'13593',12253,12254,4,0),(11375,'13594',12145,12146,4,0),(11376,'13595',12303,12304,4,0),(11377,'13596',11921,11922,4,0),(11378,'13597',12217,12218,4,0),(11379,'13598',11923,11924,4,0),(11380,'13600',11853,11854,4,0),(11381,'13610',11993,11994,4,0),(11382,'13619',11943,11944,4,0),(11383,'13620',12171,12172,4,0),(11384,'13629',12261,12262,4,0),(11385,'13630',12249,12250,4,0),(11386,'13640',12089,12090,4,0),(11387,'13640',11925,11926,4,0),(11388,'13650',12211,12212,4,0),(11389,'13660',12105,12106,4,0),(11390,'13670',12323,12324,4,0),(11391,'13679',11947,11948,4,0),(11392,'13680',12075,12076,4,0),(11393,'13690',11855,11856,4,0),(11394,'13700',12263,12264,4,0),(11395,'13710',11951,11952,4,0),(11396,'13720',11857,11858,4,0),(11397,'13730',12245,12246,4,0),(11398,'13738',12331,12332,4,0),(11399,'13739',11987,11988,4,0),(11400,'13739',12333,12334,4,0),(11401,'13740',12275,12276,4,0),(11402,'13750',12013,12014,4,0),(11403,'13760',11931,11932,4,0),(11404,'13768',11933,11934,4,0),(11405,'13768',12335,12336,4,0),(11406,'13770',12337,12338,4,0),(11407,'13779',12237,12238,4,0),(11408,'13779',11989,11990,4,0),(11409,'14001',12461,12462,4,0),(11410,'14002',12463,12464,4,0),(11411,'14003',12465,12466,4,0),(11412,'14004',12467,12468,4,0),(11413,'14005',12469,12470,4,0),(11414,'14006',12471,12472,4,0),(11415,'14007',12473,12474,4,0),(11416,'14008',12475,12476,4,0),(11417,'14009',12477,12478,4,0),(11418,'14010',12479,12480,4,0),(11419,'14011',12481,12482,4,0),(11420,'14012',12483,12484,4,0),(11421,'14013',12485,12486,4,0),(11422,'14014',12487,12488,4,0),(11423,'14015',12489,12490,4,0),(11424,'14016',12491,12492,4,0),(11425,'14029',12493,12494,4,0),(11426,'14045',12437,12438,4,0),(11427,'14071',12819,12820,4,0),(11428,'14100',12633,12634,4,0),(11429,'14110',12583,12584,4,0),(11430,'14111',12635,12636,4,0),(11431,'14112',12585,12586,4,0),(11432,'14113',12587,12588,4,0),(11433,'14115',12529,12530,4,0),(11434,'14115',12589,12590,4,0),(11435,'14120',12591,12592,4,0),(11436,'14129',12611,12612,4,0),(11437,'14129',12593,12594,4,0),(11438,'14130',12603,12604,4,0),(11439,'14140',12651,12652,4,0),(11440,'14150',12783,12784,4,0),(11441,'14190',12495,12496,4,0),(11442,'14191',12637,12638,4,0),(11443,'14192',12497,12498,4,0),(11444,'14193',12639,12640,4,0),(11445,'14193',12499,12500,4,0),(11446,'14199',12659,12660,4,0),(11447,'14200',12743,12744,4,0),(11448,'14206',12809,12810,4,0),(11449,'14207',12643,12644,4,0),(11450,'14208',12655,12656,4,0),(11451,'14209',12567,12568,4,0),(11452,'14209',12613,12614,4,0),(11453,'14209',12389,12390,4,0),(11454,'14210',12595,12596,4,0),(11455,'14210',12551,12552,4,0),(11456,'14210',12825,12826,4,0),(11457,'14220',12553,12554,4,0),(11458,'14230',12837,12838,4,0),(11459,'14240',12391,12392,4,0),(11460,'14248',12393,12394,4,0),(11461,'14248',12569,12570,4,0),(11462,'14249',12395,12396,4,0),(11463,'14249',12571,12572,4,0),(11464,'14250',12833,12834,4,0),(11465,'14260',12563,12564,4,0),(11466,'14270',12607,12608,4,0),(11467,'14280',12501,12502,4,0),(11468,'14280',12385,12386,4,0),(11469,'14290',12573,12574,4,0),(11470,'14297',12575,12576,4,0),(11471,'14298',12577,12578,4,0),(11472,'14299',12579,12580,4,0),(11473,'14300',12845,12846,4,0),(11474,'14310',12713,12714,4,0),(11475,'14320',12847,12848,4,0),(11476,'14320',12715,12716,4,0),(11477,'14320',12555,12556,4,0),(11478,'14340',12503,12504,4,0),(11479,'14350',12505,12506,4,0),(11480,'14350',12717,12718,4,0),(11481,'14400',12753,12754,4,0),(11482,'14410',12801,12802,4,0),(11483,'14412',12739,12740,4,0),(11484,'14413',12535,12536,4,0),(11485,'14420',12821,12822,4,0),(11486,'14430',12343,12344,4,0),(11487,'14439',12345,12346,4,0),(11488,'14440',12829,12830,4,0),(11489,'14440',12439,12440,4,0),(11490,'14445',12441,12442,4,0),(11491,'14445',12397,12398,4,0),(11492,'14446',12443,12444,4,0),(11493,'14447',12445,12446,4,0),(11494,'14448',12457,12458,4,0),(11495,'14449',11927,11928,4,0),(11496,'14450',12371,12372,4,0),(11497,'14460',12525,12526,4,0),(11498,'14470',12849,12850,4,0),(11499,'14470',12539,12540,4,0),(11500,'14480',12355,12356,4,0),(11501,'14490',12841,12842,4,0),(11502,'14491',12787,12788,4,0),(11503,'14500',12771,12772,4,0),(11504,'14510',12703,12704,4,0),(11505,'14511',12661,12662,4,0),(11506,'14512',12773,12774,4,0),(11507,'14520',12685,12686,4,0),(11508,'14520',12559,12560,4,0),(11509,'14530',12687,12688,4,0),(11510,'14540',12647,12648,4,0),(11511,'14546',12793,12794,4,0),(11512,'14547',12795,12796,4,0),(11513,'14548',12681,12682,4,0),(11514,'14549',12797,12798,4,0),(11515,'14550',12373,12374,4,0),(11516,'14550',12691,12692,4,0),(11517,'14600',12695,12696,4,0),(11518,'14610',12507,12508,4,0),(11519,'14610',12347,12348,4,0),(11520,'14620',12531,12532,4,0),(11521,'14630',12735,12736,4,0),(11522,'14640',12813,12814,4,0),(11523,'14650',12407,12408,4,0),(11524,'14656',12409,12410,4,0),(11525,'14659',12411,12412,4,0),(11526,'14660',12425,12426,4,0),(11527,'14670',12805,12806,4,0),(11528,'14700',12725,12726,4,0),(11529,'14709',12727,12728,4,0),(11530,'14709',12615,12616,4,0),(11531,'14710',12509,12510,4,0),(11532,'14711',12511,12512,4,0),(11533,'14719',12513,12514,4,0),(11534,'14720',12365,12366,4,0),(11535,'14729',12367,12368,4,0),(11536,'14730',12747,12748,4,0),(11537,'14730',12729,12730,4,0),(11538,'14739',12749,12750,4,0),(11539,'14740',12617,12618,4,0),(11540,'14749',12731,12732,4,0),(11541,'14800',12673,12674,4,0),(11542,'14800',12757,12758,4,0),(11543,'14810',12429,12430,4,0),(11544,'14811',12431,12432,4,0),(11545,'14811',12415,12416,4,0),(11546,'14811',12759,12760,4,0),(11547,'14812',12359,12360,4,0),(11548,'14813',12361,12362,4,0),(11549,'14814',12761,12762,4,0),(11550,'14815',12599,12600,4,0),(11551,'14815',12763,12764,4,0),(11552,'14816',12765,12766,4,0),(11553,'14816',12433,12434,4,0),(11554,'14817',12767,12768,4,0),(11555,'14820',12515,12516,4,0),(11556,'14830',12547,12548,4,0),(11557,'14840',12449,12450,4,0),(11558,'14850',12377,12378,4,0),(11559,'14850',12663,12664,4,0),(11560,'14852',12707,12708,4,0),(11561,'14857',12709,12710,4,0),(11562,'14857',12451,12452,4,0),(11563,'14858',12453,12454,4,0),(11564,'14859',12379,12380,4,0),(11565,'14860',12521,12522,4,0),(11566,'14870',12853,12854,4,0),(11567,'14880',12675,12676,4,0),(11568,'14889',12677,12678,4,0),(11569,'14900',12665,12666,4,0),(11570,'14910',12401,12402,4,0),(11571,'14911',12667,12668,4,0),(11572,'14912',12517,12518,4,0),(11573,'14913',12543,12544,4,0),(11574,'14913',12669,12670,4,0),(11575,'14914',12721,12722,4,0),(11576,'14915',12403,12404,4,0),(11577,'14920',12351,12352,4,0),(11578,'14930',12699,12700,4,0),(11579,'14930',12417,12418,4,0),(11580,'14940',12419,12420,4,0),(11581,'14940',12815,12816,4,0),(11582,'14941',12789,12790,4,0),(11583,'14949',12421,12422,4,0),(11584,'14950',12381,12382,4,0),(11585,'14950',12619,12620,4,0),(11586,'14950',12777,12778,4,0),(11587,'14960',12779,12780,4,0),(11588,'14970',12623,12624,4,0),(11589,'14978',12625,12626,4,0),(11590,'14979',12627,12628,4,0),(11591,'15001',19973,19974,4,0),(11592,'15002',19975,19976,4,0),(11593,'15003',19977,19978,4,0),(11594,'15004',19979,19980,4,0),(11595,'15005',19981,19982,4,0),(11596,'15006',19983,19984,4,0),(11597,'15007',19985,19986,4,0),(11598,'15008',20051,20052,4,0),(11599,'15008',19987,19988,4,0),(11600,'15009',19989,19990,4,0),(11601,'15010',19991,19992,4,0),(11602,'15011',19993,19994,4,0),(11603,'15100',20205,20206,4,0),(11604,'15102',20207,20208,4,0),(11605,'15105',20209,20210,4,0),(11606,'15105',20005,20006,4,0),(11607,'15106',20211,20212,4,0),(11608,'15107',20213,20214,4,0),(11609,'15108',20215,20216,4,0),(11610,'15109',20217,20218,4,0),(11611,'15110',20683,20684,4,0),(11612,'15110',20159,20160,4,0),(11613,'15111',20421,20422,4,0),(11614,'15112',20423,20424,4,0),(11615,'15113',20425,20426,4,0),(11616,'15114',20685,20686,4,0),(11617,'15115',20161,20162,4,0),(11618,'15116',20163,20164,4,0),(11619,'15117',20403,20404,4,0),(11620,'15118',20405,20406,4,0),(11621,'15119',20165,20166,4,0),(11622,'15121',20181,20182,4,0),(11623,'15121',20945,20946,4,0),(11624,'15122',20183,20184,4,0),(11625,'15123',20185,20186,4,0),(11626,'15124',20507,20508,4,0),(11627,'15125',20509,20510,4,0),(11628,'15126',20511,20512,4,0),(11629,'15126',20947,20948,4,0),(11630,'15127',20949,20950,4,0),(11631,'15128',20951,20952,4,0),(11632,'15129',20953,20954,4,0),(11633,'15130',20295,20296,4,0),(11634,'15137',20297,20298,4,0),(11635,'15138',20265,20266,4,0),(11636,'15139',20307,20308,4,0),(11637,'15140',20053,20054,4,0),(11638,'15141',20055,20056,4,0),(11639,'15142',20057,20058,4,0),(11640,'15144',20059,20060,4,0),(11641,'15145',20007,20008,4,0),(11642,'15146',20009,20010,4,0),(11643,'15147',20301,20302,4,0),(11644,'15148',20303,20304,4,0),(11645,'15149',20167,20168,4,0),(11646,'15150',20955,20956,4,0),(11647,'15150',20959,20960,4,0),(11648,'15151',20337,20338,4,0),(11649,'15152',20339,20340,4,0),(11650,'15153',20385,20386,4,0),(11651,'15154',20387,20388,4,0),(11652,'15155',20389,20390,4,0),(11653,'15160',20767,20768,4,0),(11654,'15165',20101,20102,4,0),(11655,'15166',20103,20104,4,0),(11656,'15167',20105,20106,4,0),(11657,'15168',20769,20770,4,0),(11658,'15169',20771,20772,4,0),(11659,'15170',19995,19996,4,0),(11660,'15171',20577,20578,4,0),(11661,'15172',20579,20580,4,0),(11662,'15173',20581,20582,4,0),(11663,'15174',20309,20310,4,0),(11664,'15175',20241,20242,4,0),(11665,'15176',20583,20584,4,0),(11666,'15177',20585,20586,4,0),(11667,'15178',20587,20588,4,0),(11668,'15179',20589,20590,4,0),(11669,'15180',20311,20312,4,0),(11670,'15181',20189,20190,4,0),(11671,'15182',20243,20244,4,0),(11672,'15183',20245,20246,4,0),(11673,'15184',20247,20248,4,0),(11674,'15185',20275,20276,4,0),(11675,'15186',20277,20278,4,0),(11676,'15187',20279,20280,4,0),(11677,'15188',20281,20282,4,0),(11678,'15189',20313,20314,4,0),(11679,'15190',19997,19998,4,0),(11680,'15191',19999,20000,4,0),(11681,'15192',20001,20002,4,0),(11682,'15198',20315,20316,4,0),(11683,'15199',20317,20318,4,0),(11684,'15200',20553,20554,4,0),(11685,'15201',27743,27744,4,0),(11686,'15210',20555,20556,4,0),(11687,'15211',20557,20558,4,0),(11688,'15212',20409,20410,4,0),(11689,'15213',20559,20560,4,0),(11690,'15214',20411,20412,4,0),(11691,'15215',20413,20414,4,0),(11692,'15216',20415,20416,4,0),(11693,'15218',20701,20702,4,0),(11694,'15218',20561,20562,4,0),(11695,'15218',20417,20418,4,0),(11696,'15220',20025,20026,4,0),(11697,'15228',20027,20028,4,0),(11698,'15229',20029,20030,4,0),(11699,'15230',20631,20632,4,0),(11700,'15236',20633,20634,4,0),(11701,'15237',20635,20636,4,0),(11702,'15239',20637,20638,4,0),(11703,'15240',20493,20494,4,0),(11704,'15250',20495,20496,4,0),(11705,'15256',20435,20436,4,0),(11706,'15258',20437,20438,4,0),(11707,'15259',20497,20498,4,0),(11708,'15270',20267,20268,4,0),(11709,'15280',20151,20152,4,0),(11710,'15281',20753,20754,4,0),(11711,'15282',20755,20756,4,0),(11712,'15284',20499,20500,4,0),(11713,'15286',20639,20640,4,0),(11714,'15287',20641,20642,4,0),(11715,'15288',20643,20644,4,0),(11716,'15290',20501,20502,4,0),(11717,'15291',20503,20504,4,0),(11718,'15292',20231,20232,4,0),(11719,'15293',20233,20234,4,0),(11720,'15295',20235,20236,4,0),(11721,'15296',20237,20238,4,0),(11722,'15297',20341,20342,4,0),(11723,'15298',20269,20270,4,0),(11724,'15299',20271,20272,4,0),(11725,'15300',20113,20114,4,0),(11726,'15310',20323,20324,4,0),(11727,'15313',20399,20400,4,0),(11728,'15314',20663,20664,4,0),(11729,'15315',20475,20476,4,0),(11730,'15316',20291,20292,4,0),(11731,'15317',20039,20040,4,0),(11732,'15318',20021,20022,4,0),(11733,'15319',20115,20116,4,0),(11734,'15319',20665,20666,4,0),(11735,'15319',20107,20108,4,0),(11736,'15320',20073,20074,4,0),(11737,'15324',20075,20076,4,0),(11738,'15325',20077,20078,4,0),(11739,'15326',20079,20080,4,0),(11740,'15327',20081,20082,4,0),(11741,'15328',20083,20084,4,0),(11742,'15329',20085,20086,4,0),(11743,'15330',20613,20614,4,0),(11744,'15332',20615,20616,4,0),(11745,'15337',20429,20430,4,0),(11746,'15338',20617,20618,4,0),(11747,'15339',20431,20432,4,0),(11748,'15339',20619,20620,4,0),(11749,'15340',20621,20622,4,0),(11750,'15347',20251,20252,4,0),(11751,'15349',20623,20624,4,0),(11752,'15350',20253,20254,4,0),(11753,'15357',20255,20256,4,0),(11754,'15358',20257,20258,4,0),(11755,'15359',20259,20260,4,0),(11756,'15360',20221,20222,4,0),(11757,'15365',20223,20224,4,0),(11758,'15366',20225,20226,4,0),(11759,'15367',20625,20626,4,0),(11760,'15368',20627,20628,4,0),(11761,'15369',20227,20228,4,0),(11762,'15379',20325,20326,4,0),(11763,'15380',20647,20648,4,0),(11764,'15386',20649,20650,4,0),(11765,'15387',20651,20652,4,0),(11766,'15388',20653,20654,4,0),(11767,'15389',20655,20656,4,0),(11768,'15390',20657,20658,4,0),(11769,'15391',20659,20660,4,0),(11770,'15401',20357,20358,4,0),(11771,'15402',20359,20360,4,0),(11772,'15403',20361,20362,4,0),(11773,'15404',20363,20364,4,0),(11774,'15405',20365,20366,4,0),(11775,'15406',20367,20368,4,0),(11776,'15407',20369,20370,4,0),(11777,'15489',15359,15360,4,0),(11778,'15500',20345,20346,4,0),(11779,'15509',20347,20348,4,0),(11780,'15510',20535,20536,4,0),(11781,'15520',20349,20350,4,0),(11782,'15528',20351,20352,4,0),(11783,'15530',20285,20286,4,0),(11784,'15540',20515,20516,4,0),(11785,'15541',20517,20518,4,0),(11786,'15542',20907,20908,4,0),(11787,'15543',20909,20910,4,0),(11788,'15550',20911,20912,4,0),(11789,'15551',20913,20914,4,0),(11790,'15552',20915,20916,4,0),(11791,'15553',20917,20918,4,0),(11792,'15554',20919,20920,4,0),(11793,'15555',20261,20262,4,0),(11794,'15560',20775,20776,4,0),(11795,'15561',20777,20778,4,0),(11796,'15562',20779,20780,4,0),(11797,'15563',20469,20470,4,0),(11798,'15564',20471,20472,4,0),(11799,'15565',20091,20092,4,0),(11800,'15566',20093,20094,4,0),(11801,'15567',20095,20096,4,0),(11802,'15568',20097,20098,4,0),(11803,'15569',20287,20288,4,0),(11804,'15570',20519,20520,4,0),(11805,'15572',20521,20522,4,0),(11806,'15573',20523,20524,4,0),(11807,'15576',20781,20782,4,0),(11808,'15577',20525,20526,4,0),(11809,'15577',20537,20538,4,0),(11810,'15578',20527,20528,4,0),(11811,'15579',20539,20540,4,0),(11812,'15580',20783,20784,4,0),(11813,'15582',20087,20088,4,0),(11814,'15582',20143,20144,4,0),(11815,'15587',20529,20530,4,0),(11816,'15590',20371,20372,4,0),(11817,'15591',20373,20374,4,0),(11818,'15592',20375,20376,4,0),(11819,'15593',20377,20378,4,0),(11820,'15594',20379,20380,4,0),(11821,'15595',20381,20382,4,0),(11822,'15596',20531,20532,4,0),(11823,'15598',20785,20786,4,0),(11824,'15600',20689,20690,4,0),(11825,'15607',20691,20692,4,0),(11826,'15608',20693,20694,4,0),(11827,'15608',20459,20460,4,0),(11828,'15609',20695,20696,4,0),(11829,'15609',20477,20478,4,0),(11830,'15611',20171,20172,4,0),(11831,'15612',20173,20174,4,0),(11832,'15613',19969,19970,4,0),(11833,'15614',20697,20698,4,0),(11834,'15615',20931,20932,4,0),(11835,'15616',20933,20934,4,0),(11836,'15617',20479,20480,4,0),(11837,'15619',20481,20482,4,0),(11838,'15620',20485,20486,4,0),(11839,'15621',20175,20176,4,0),(11840,'15622',20177,20178,4,0),(11841,'15623',20043,20044,4,0),(11842,'15624',20045,20046,4,0),(11843,'15625',20047,20048,4,0),(11844,'15626',20487,20488,4,0),(11845,'15627',20489,20490,4,0),(11846,'15627',20353,20354,4,0),(11847,'15630',20461,20462,4,0),(11848,'15635',20463,20464,4,0),(11849,'15637',20935,20936,4,0),(11850,'15638',20937,20938,4,0),(11851,'15639',20465,20466,4,0),(11852,'15640',20109,20110,4,0),(11853,'15650',20191,20192,4,0),(11854,'15656',20961,20962,4,0),(11855,'15659',20193,20194,4,0),(11856,'15660',20195,20196,4,0),(11857,'15668',20197,20198,4,0),(11858,'15669',20199,20200,4,0),(11859,'15670',20319,20320,4,0),(11860,'15679',20201,20202,4,0),(11861,'15680',20593,20594,4,0),(11862,'15683',20873,20874,4,0),(11863,'15684',20605,20606,4,0),(11864,'15684',20875,20876,4,0),(11865,'15684',20595,20596,4,0),(11866,'15685',20451,20452,4,0),(11867,'15685',20393,20394,4,0),(11868,'15685',20597,20598,4,0),(11869,'15686',20891,20892,4,0),(11870,'15686',20453,20454,4,0),(11871,'15686',20395,20396,4,0),(11872,'15687',20599,20600,4,0),(11873,'15687',20893,20894,4,0),(11874,'15688',20809,20810,4,0),(11875,'15688',20607,20608,4,0),(11876,'15689',20601,20602,4,0),(11877,'15689',20877,20878,4,0),(11878,'15689',20455,20456,4,0),(11879,'15690',20061,20062,4,0),(11880,'15701',20811,20812,4,0),(11881,'15702',20813,20814,4,0),(11882,'15703',20815,20816,4,0),(11883,'15704',20817,20818,4,0),(11884,'15705',20819,20820,4,0),(11885,'15706',20821,20822,4,0),(11886,'15707',20823,20824,4,0),(11887,'15800',20441,20442,4,0),(11888,'15805',20443,20444,4,0),(11889,'15806',20869,20870,4,0),(11890,'15807',20941,20942,4,0),(11891,'15808',20847,20848,4,0),(11892,'15809',20445,20446,4,0),(11893,'15810',20065,20066,4,0),(11894,'15813',20851,20852,4,0),(11895,'15814',20853,20854,4,0),(11896,'15815',20855,20856,4,0),(11897,'15816',20119,20120,4,0),(11898,'15817',20121,20122,4,0),(11899,'15818',20123,20124,4,0),(11900,'15819',20447,20448,4,0),(11901,'15819',20067,20068,4,0),(11902,'15820',20825,20826,4,0),(11903,'15821',20565,20566,4,0),(11904,'15822',20881,20882,4,0),(11905,'15823',20567,20568,4,0),(11906,'15823',20883,20884,4,0),(11907,'15824',20885,20886,4,0),(11908,'15824',20569,20570,4,0),(11909,'15825',20571,20572,4,0),(11910,'15826',20069,20070,4,0),(11911,'15828',20887,20888,4,0),(11912,'15830',20543,20544,4,0),(11913,'15837',20789,20790,4,0),(11914,'15838',20545,20546,4,0),(11915,'15839',20547,20548,4,0),(11916,'15839',20153,20154,4,0),(11917,'15839',19961,19962,4,0),(11918,'15840',20791,20792,4,0),(11919,'15841',20793,20794,4,0),(11920,'15845',20795,20796,4,0),(11921,'15846',20797,20798,4,0),(11922,'15847',20799,20800,4,0),(11923,'15848',20801,20802,4,0),(11924,'15850',20963,20964,4,0),(11925,'15851',20965,20966,4,0),(11926,'15855',20967,20968,4,0),(11927,'15856',20969,20970,4,0),(11928,'15857',20971,20972,4,0),(11929,'15858',20973,20974,4,0),(11930,'15859',20975,20976,4,0),(11931,'15860',20803,20804,4,0),(11932,'15861',20805,20806,4,0),(11933,'15862',19963,19964,4,0),(11934,'15863',19965,19966,4,0),(11935,'15863',20549,20550,4,0),(11936,'15864',20031,20032,4,0),(11937,'15865',20155,20156,4,0),(11938,'15866',20859,20860,4,0),(11939,'15870',20033,20034,4,0),(11940,'15871',20897,20898,4,0),(11941,'15872',20899,20900,4,0),(11942,'15873',20901,20902,4,0),(11943,'15874',20903,20904,4,0),(11944,'15880',20923,20924,4,0),(11945,'15881',20145,20146,4,0),(11946,'15881',20925,20926,4,0),(11947,'15882',20147,20148,4,0),(11948,'15883',20861,20862,4,0),(11949,'15884',20827,20828,4,0),(11950,'15885',20927,20928,4,0),(11951,'15886',20863,20864,4,0),(11952,'15887',20573,20574,4,0),(11953,'15888',20609,20610,4,0),(11954,'15890',20829,20830,4,0),(11955,'15891',20831,20832,4,0),(11956,'15892',20833,20834,4,0),(11957,'15893',20835,20836,4,0),(11958,'15894',20865,20866,4,0),(11959,'15895',20035,20036,4,0),(11960,'15896',20837,20838,4,0),(11961,'15897',20839,20840,4,0),(11962,'15898',20841,20842,4,0),(11963,'15899',20843,20844,4,0),(11964,'15900',20669,20670,4,0),(11965,'15910',20671,20672,4,0),(11966,'15911',20757,20758,4,0),(11967,'15912',20759,20760,4,0),(11968,'15913',20761,20762,4,0),(11969,'15914',20673,20674,4,0),(11970,'15915',20675,20676,4,0),(11971,'15916',20329,20330,4,0),(11972,'15917',20677,20678,4,0),(11973,'15920',20721,20722,4,0),(11974,'15928',20723,20724,4,0),(11975,'15930',20127,20128,4,0),(11976,'15937',20129,20130,4,0),(11977,'15938',20131,20132,4,0),(11978,'15939',20133,20134,4,0),(11979,'15940',20013,20014,4,0),(11980,'15948',20015,20016,4,0),(11981,'15949',20017,20018,4,0),(11982,'15950',20733,20734,4,0),(11983,'15959',20735,20736,4,0),(11984,'15960',20737,20738,4,0),(11985,'15965',20739,20740,4,0),(11986,'15966',20741,20742,4,0),(11987,'15967',20743,20744,4,0),(11988,'15968',20745,20746,4,0),(11989,'15969',20747,20748,4,0),(11990,'15970',20703,20704,4,0),(11991,'15978',20705,20706,4,0),(11992,'15979',20707,20708,4,0),(11993,'15980',20679,20680,4,0),(11994,'15980',20763,20764,4,0),(11995,'15981',20331,20332,4,0),(11996,'15982',20333,20334,4,0),(11997,'15983',20725,20726,4,0),(11998,'15984',20727,20728,4,0),(11999,'15985',20729,20730,4,0),(12000,'15990',20135,20136,4,0),(12001,'15991',20137,20138,4,0),(12002,'15992',20139,20140,4,0),(12003,'15993',20749,20750,4,0),(12004,'15994',20709,20710,4,0),(12005,'15995',20711,20712,4,0),(12006,'15996',20713,20714,4,0),(12007,'15998',20715,20716,4,0),(12008,'15999',20717,20718,4,0),(12009,'16001',13149,13150,4,0),(12010,'16002',13151,13152,4,0),(12011,'16003',13153,13154,4,0),(12012,'16004',13155,13156,4,0),(12013,'16043',13013,13014,4,0),(12014,'16100',13751,13752,4,0),(12015,'16111',13877,13878,4,0),(12016,'16111',12867,12868,4,0),(12017,'16113',13363,13364,4,0),(12018,'16114',12997,12998,4,0),(12019,'16118',13291,13292,4,0),(12020,'16118',12955,12956,4,0),(12021,'16118',13533,13534,4,0),(12022,'16118',13487,13488,4,0),(12023,'16120',13401,13402,4,0),(12024,'16122',13221,13222,4,0),(12025,'16122',13739,13740,4,0),(12026,'16123',12929,12930,4,0),(12027,'16140',13785,13786,4,0),(12028,'16141',12933,12934,4,0),(12029,'16141',13227,13228,4,0),(12030,'16141',13121,13122,4,0),(12031,'16141',13541,13542,4,0),(12032,'16142',13389,13390,4,0),(12033,'16143',13653,13654,4,0),(12034,'16143',13423,13424,4,0),(12035,'16144',13655,13656,4,0),(12036,'16144',13355,13356,4,0),(12037,'16145',13657,13658,4,0),(12038,'16146',13905,13906,4,0),(12039,'16146',13157,13158,4,0),(12040,'16147',13425,13426,4,0),(12041,'16150',13703,13704,4,0),(12042,'16150',13763,13764,4,0),(12043,'16152',13299,13300,4,0),(12044,'16152',13719,13720,4,0),(12045,'16152',12963,12964,4,0),(12046,'16152',13723,13724,4,0),(12047,'16160',13507,13508,4,0),(12048,'16160',16203,16204,4,0),(12049,'16161',13687,13688,4,0),(12050,'16162',13689,13690,4,0),(12051,'16190',13243,13244,4,0),(12052,'16190',13137,13138,4,0),(12053,'16191',13159,13160,4,0),(12054,'16191',13245,13246,4,0),(12055,'16191',13139,13140,4,0),(12056,'16191',12959,12960,4,0),(12057,'16191',13821,13822,4,0),(12058,'16192',13511,13512,4,0),(12059,'16192',13001,13002,4,0),(12060,'16193',13251,13252,4,0),(12061,'16193',13161,13162,4,0),(12062,'16194',13163,13164,4,0),(12063,'16194',13247,13248,4,0),(12064,'16194',13141,13142,4,0),(12065,'16195',13311,13312,4,0),(12066,'16195',13831,13832,4,0),(12067,'16195',13691,13692,4,0),(12068,'16195',12919,12920,4,0),(12069,'16195',12859,12860,4,0),(12070,'16196',13833,13834,4,0),(12071,'16200',13465,13466,4,0),(12072,'16210',13009,13010,4,0),(12073,'16211',13195,13196,4,0),(12074,'16212',13553,13554,4,0),(12075,'16214',13755,13756,4,0),(12076,'16214',12863,12864,4,0),(12077,'16214',13259,13260,4,0),(12078,'16214',13743,13744,4,0),(12079,'16215',12911,12912,4,0),(12080,'16216',13649,13650,4,0),(12081,'16216',13483,13484,4,0),(12082,'16216',13145,13146,4,0),(12083,'16216',13403,13404,4,0),(12084,'16220',13573,13574,4,0),(12085,'16230',13809,13810,4,0),(12086,'16235',13335,13336,4,0),(12087,'16236',13811,13812,4,0),(12088,'16236',13337,13338,4,0),(12089,'16236',13779,13780,4,0),(12090,'16237',13407,13408,4,0),(12091,'16238',13781,13782,4,0),(12092,'16238',13813,13814,4,0),(12093,'16239',13109,13110,4,0),(12094,'16240',13191,13192,4,0),(12095,'16250',13117,13118,4,0),(12096,'16251',13275,13276,4,0),(12097,'16260',13433,13434,4,0),(12098,'16269',13371,13372,4,0),(12099,'16269',13569,13570,4,0),(12100,'16270',13797,13798,4,0),(12101,'16280',13869,13870,4,0),(12102,'16290',13179,13180,4,0),(12103,'16290',13339,13340,4,0),(12104,'16300',13053,13054,4,0),(12105,'16311',12989,12990,4,0),(12106,'16311',13015,13016,4,0),(12107,'16311',13307,13308,4,0),(12108,'16311',13239,13240,4,0),(12109,'16312',13279,13280,4,0),(12110,'16312',13263,13264,4,0),(12111,'16313',12903,12904,4,0),(12112,'16315',12879,12880,4,0),(12113,'16316',13315,13316,4,0),(12114,'16316',13731,13732,4,0),(12115,'16316',13019,13020,4,0),(12116,'16316',13375,13376,4,0),(12117,'16317',13599,13600,4,0),(12118,'16317',13897,13898,4,0),(12119,'16317',13675,13676,4,0),(12120,'16318',13607,13608,4,0),(12121,'16320',13661,13662,4,0),(12122,'16321',13663,13664,4,0),(12123,'16330',13383,13384,4,0),(12124,'16336',13627,13628,4,0),(12125,'16338',13093,13094,4,0),(12126,'16338',12899,12900,4,0),(12127,'16339',13629,13630,4,0),(12128,'16339',13385,13386,4,0),(12129,'16339',13271,13272,4,0),(12130,'16340',13727,13728,4,0),(12131,'16340',13351,13352,4,0),(12132,'16340',13029,13030,4,0),(12133,'16350',13065,13066,4,0),(12134,'16360',13453,13454,4,0),(12135,'16360',12937,12938,4,0),(12136,'16370',13837,13838,4,0),(12137,'16370',13619,13620,4,0),(12138,'16371',13471,13472,4,0),(12139,'16371',13881,13882,4,0),(12140,'16372',13515,13516,4,0),(12141,'16372',13217,13218,4,0),(12142,'16373',13069,13070,4,0),(12143,'16373',13889,13890,4,0),(12144,'16373',13517,13518,4,0),(12145,'16390',13499,13500,4,0),(12146,'16390',13503,13504,4,0),(12147,'16390',13581,13582,4,0),(12148,'16393',13437,13438,4,0),(12149,'16400',13667,13668,4,0),(12150,'16410',13295,13296,4,0),(12151,'16411',13231,13232,4,0),(12152,'16412',13171,13172,4,0),(12153,'16413',13695,13696,4,0),(12154,'16414',13557,13558,4,0),(12155,'16415',13801,13802,4,0),(12156,'16417',13415,13416,4,0),(12157,'16420',12907,12908,4,0),(12158,'16420',13865,13866,4,0),(12159,'16421',13565,13566,4,0),(12160,'16421',13287,13288,4,0),(12161,'16422',13707,13708,4,0),(12162,'16423',13495,13496,4,0),(12163,'16430',13595,13596,4,0),(12164,'16431',12915,12916,4,0),(12165,'16432',13585,13586,4,0),(12166,'16432',13849,13850,4,0),(12167,'16433',12895,12896,4,0),(12168,'16433',13817,13818,4,0),(12169,'16434',13445,13446,4,0),(12170,'16435',13359,13360,4,0),(12171,'16440',13449,13450,4,0),(12172,'16441',13183,13184,4,0),(12173,'16442',13861,13862,4,0),(12174,'16444',13133,13134,4,0),(12175,'16452',13711,13712,4,0),(12176,'16452',13587,13588,4,0),(12177,'16452',13715,13716,4,0),(12178,'16460',12949,12950,4,0),(12179,'16461',13411,13412,4,0),(12180,'16463',13591,13592,4,0),(12181,'16464',12887,12888,4,0),(12182,'16465',13521,13522,4,0),(12183,'16465',13303,13304,4,0),(12184,'16470',12967,12968,4,0),(12185,'16470',12951,12952,4,0),(12186,'16470',13901,13902,4,0),(12187,'16500',13319,13320,4,0),(12188,'16510',13207,13208,4,0),(12189,'16510',13767,13768,4,0),(12190,'16512',13209,13210,4,0),(12191,'16512',13005,13006,4,0),(12192,'16514',13211,13212,4,0),(12193,'16520',13321,13322,4,0),(12194,'16521',13323,13324,4,0),(12195,'16522',13679,13680,4,0),(12196,'16522',13537,13538,4,0),(12197,'16532',13805,13806,4,0),(12198,'16532',13267,13268,4,0),(12199,'16532',13325,13326,4,0),(12200,'16532',13367,13368,4,0),(12201,'16535',13789,13790,4,0),(12202,'16537',12891,12892,4,0),(12203,'16537',13049,13050,4,0),(12204,'16540',13327,13328,4,0),(12205,'16541',13853,13854,4,0),(12206,'16541',13329,13330,4,0),(12207,'16541',13529,13530,4,0),(12208,'16541',13419,13420,4,0),(12209,'16542',13845,13846,4,0),(12210,'16550',13023,13024,4,0),(12211,'16550',13331,13332,4,0),(12212,'16555',13025,13026,4,0),(12213,'16600',13611,13612,4,0),(12214,'16610',13089,13090,4,0),(12215,'16611',13101,13102,4,0),(12216,'16612',13105,13106,4,0),(12217,'16620',13343,13344,4,0),(12218,'16621',13637,13638,4,0),(12219,'16622',13525,13526,4,0),(12220,'16623',13125,13126,4,0),(12221,'16630',13461,13462,4,0),(12222,'16638',13187,13188,4,0),(12223,'16639',13633,13634,4,0),(12224,'16640',12973,12974,4,0),(12225,'16646',13793,13794,4,0),(12226,'16647',13235,13236,4,0),(12227,'16647',13775,13776,4,0),(12228,'16648',13827,13828,4,0),(12229,'16649',13577,13578,4,0),(12230,'16649',13079,13080,4,0),(12231,'16649',13441,13442,4,0),(12232,'16650',13393,13394,4,0),(12233,'16660',13397,13398,4,0),(12234,'16670',13203,13204,4,0),(12235,'16700',13645,13646,4,0),(12236,'16707',13085,13086,4,0),(12237,'16708',13549,13550,4,0),(12238,'16708',13097,13098,4,0),(12239,'16709',13759,13760,4,0),(12240,'16710',12945,12946,4,0),(12241,'16710',13671,13672,4,0),(12242,'16720',13033,13034,4,0),(12243,'16730',13283,13284,4,0),(12244,'16738',13175,13176,4,0),(12245,'16739',13699,13700,4,0),(12246,'16740',13347,13348,4,0),(12247,'16740',12969,12970,4,0),(12248,'16760',13475,13476,4,0),(12249,'16770',13615,13616,4,0),(12250,'16771',13857,13858,4,0),(12251,'16771',13893,13894,4,0),(12252,'16779',12977,12978,4,0),(12253,'16780',13457,13458,4,0),(12254,'16780',12921,12922,4,0),(12255,'16781',13223,13224,4,0),(12256,'16800',13561,13562,4,0),(12257,'16812',12925,12926,4,0),(12258,'16812',12883,12884,4,0),(12259,'16812',13885,13886,4,0),(12260,'16812',13199,13200,4,0),(12261,'16812',12875,12876,4,0),(12262,'16813',13623,13624,4,0),(12263,'16813',13603,13604,4,0),(12264,'16813',13735,13736,4,0),(12265,'16813',13841,13842,4,0),(12266,'16840',13823,13824,4,0),(12267,'16841',12871,12872,4,0),(12268,'16842',13683,13684,4,0),(12269,'16843',13873,13874,4,0),(12270,'16850',13045,13046,4,0),(12271,'16851',12993,12994,4,0),(12272,'16852',13479,13480,4,0),(12273,'16853',13491,13492,4,0),(12274,'16854',13129,13130,4,0),(12275,'16855',12941,12942,4,0),(12276,'16857',13037,13038,4,0),(12277,'16860',13771,13772,4,0),(12278,'16870',12981,12982,4,0),(12279,'16878',13379,13380,4,0),(12280,'16878',13545,13546,4,0),(12281,'16878',13429,13430,4,0),(12282,'16878',13641,13642,4,0),(12283,'16879',13167,13168,4,0),(12284,'16879',13073,13074,4,0),(12285,'16879',13747,13748,4,0),(12286,'16879',12983,12984,4,0),(12287,'16890',13041,13042,4,0),(12288,'16890',13255,13256,4,0),(12289,'16890',13057,13058,4,0),(12290,'16891',13059,13060,4,0),(12291,'16891',13075,13076,4,0),(12292,'16892',13061,13062,4,0),(12293,'16893',12985,12986,4,0),(12294,'17001',14245,14246,4,0),(12295,'17002',14247,14248,4,0),(12296,'17003',14249,14250,4,0),(12297,'17004',14251,14252,4,0),(12298,'17005',14253,14254,4,0),(12299,'17006',14255,14256,4,0),(12300,'17007',14257,14258,4,0),(12301,'17100',14299,14300,4,0),(12302,'17110',14213,14214,4,0),(12303,'17111',14215,14216,4,0),(12304,'17113',14217,14218,4,0),(12305,'17114',14883,14884,4,0),(12306,'17116',14143,14144,4,0),(12307,'17117',14145,14146,4,0),(12308,'17118',14147,14148,4,0),(12309,'17120',14315,14316,4,0),(12310,'17121',14149,14150,4,0),(12311,'17121',14131,14132,4,0),(12312,'17124',14505,14506,4,0),(12313,'17130',14295,14296,4,0),(12314,'17130',14855,14856,4,0),(12315,'17131',14647,14648,4,0),(12316,'17132',14193,14194,4,0),(12317,'17133',14549,14550,4,0),(12318,'17133',14195,14196,4,0),(12319,'17133',14887,14888,4,0),(12320,'17133',14809,14810,4,0),(12321,'17134',14323,14324,4,0),(12322,'17135',14325,14326,4,0),(12323,'17136',13925,13926,4,0),(12324,'17137',14903,14904,4,0),(12325,'17137',14937,14938,4,0),(12326,'17140',14857,14858,4,0),(12327,'17140',14879,14880,4,0),(12328,'17141',14859,14860,4,0),(12329,'17141',13973,13974,4,0),(12330,'17142',14913,14914,4,0),(12331,'17143',14283,14284,4,0),(12332,'17144',14127,14128,4,0),(12333,'17144',14997,14998,4,0),(12334,'17150',14693,14694,4,0),(12335,'17151',14695,14696,4,0),(12336,'17152',14741,14742,4,0),(12337,'17153',14743,14744,4,0),(12338,'17154',14663,14664,4,0),(12339,'17160',13939,13940,4,0),(12340,'17161',14501,14502,4,0),(12341,'17162',13981,13982,4,0),(12342,'17163',13983,13984,4,0),(12343,'17164',14733,14734,4,0),(12344,'17164',14697,14698,4,0),(12345,'17164',14745,14746,4,0),(12346,'17165',14303,14304,4,0),(12347,'17166',14827,14828,4,0),(12348,'17166',14305,14306,4,0),(12349,'17170',13935,13936,4,0),(12350,'17171',14665,14666,4,0),(12351,'17171',14829,14830,4,0),(12352,'17172',14357,14358,4,0),(12353,'17173',14359,14360,4,0),(12354,'17174',14683,14684,4,0),(12355,'17176',14333,14334,4,0),(12356,'17177',14335,14336,4,0),(12357,'17178',14363,14364,4,0),(12358,'17178',14337,14338,4,0),(12359,'17179',14631,14632,4,0),(12360,'17179',14339,14340,4,0),(12361,'17180',14933,14934,4,0),(12362,'17181',13915,13916,4,0),(12363,'17182',13985,13986,4,0),(12364,'17183',14989,14990,4,0),(12365,'17184',14991,14992,4,0),(12366,'17185',14993,14994,4,0),(12367,'17190',14655,14656,4,0),(12368,'17199',14699,14700,4,0),(12369,'17199',14077,14078,4,0),(12370,'17200',14507,14508,4,0),(12371,'17210',14509,14510,4,0),(12372,'17211',14511,14512,4,0),(12373,'17212',14513,14514,4,0),(12374,'17213',14515,14516,4,0),(12375,'17213',13967,13968,4,0),(12376,'17214',14611,14612,4,0),(12377,'17220',14677,14678,4,0),(12378,'17230',14519,14520,4,0),(12379,'17240',14779,14780,4,0),(12380,'17240',14371,14372,4,0),(12381,'17241',14595,14596,4,0),(12382,'17242',14597,14598,4,0),(12383,'17243',14375,14376,4,0),(12384,'17244',14089,14090,4,0),(12385,'17244',14151,14152,4,0),(12386,'17245',14781,14782,4,0),(12387,'17246',14783,14784,4,0),(12388,'17248',14093,14094,4,0),(12389,'17248',14679,14680,4,0),(12390,'17249',14095,14096,4,0),(12391,'17250',14097,14098,4,0),(12392,'17251',14047,14048,4,0),(12393,'17252',14049,14050,4,0),(12394,'17253',14895,14896,4,0),(12395,'17253',14471,14472,4,0),(12396,'17255',13969,13970,4,0),(12397,'17256',14529,14530,4,0),(12398,'17256',14541,14542,4,0),(12399,'17257',14267,14268,4,0),(12400,'17257',14861,14862,4,0),(12401,'17257',14205,14206,4,0),(12402,'17258',14863,14864,4,0),(12403,'17300',13999,14000,4,0),(12404,'17310',14395,14396,4,0),(12405,'17320',14875,14876,4,0),(12406,'17320',14521,14522,4,0),(12407,'17400',14021,14022,4,0),(12408,'17401',13943,13944,4,0),(12409,'17402',13945,13946,4,0),(12410,'17403',14703,14704,4,0),(12411,'17404',14619,14620,4,0),(12412,'17405',14171,14172,4,0),(12413,'17406',14951,14952,4,0),(12414,'17410',14817,14818,4,0),(12415,'17411',14921,14922,4,0),(12416,'17412',14407,14408,4,0),(12417,'17420',14819,14820,4,0),(12418,'17421',14627,14628,4,0),(12419,'17430',14775,14776,4,0),(12420,'17430',14397,14398,4,0),(12421,'17441',14025,14026,4,0),(12422,'17450',14275,14276,4,0),(12423,'17451',14673,14674,4,0),(12424,'17452',14425,14426,4,0),(12425,'17454',14659,14660,4,0),(12426,'17455',14041,14042,4,0),(12427,'17456',14043,14044,4,0),(12428,'17457',14635,14636,4,0),(12429,'17458',14221,14222,4,0),(12430,'17459',14069,14070,4,0),(12431,'17460',14111,14112,4,0),(12432,'17461',14259,14260,4,0),(12433,'17462',14749,14750,4,0),(12434,'17462',14011,14012,4,0),(12435,'17462',14287,14288,4,0),(12436,'17462',14411,14412,4,0),(12437,'17463',14197,14198,4,0),(12438,'17463',14715,14716,4,0),(12439,'17463',14189,14190,4,0),(12440,'17464',14115,14116,4,0),(12441,'17464',14723,14724,4,0),(12442,'17464',14941,14942,4,0),(12443,'17465',14799,14800,4,0),(12444,'17466',14999,15000,4,0),(12445,'17466',14233,14234,4,0),(12446,'17467',14761,14762,4,0),(12447,'17467',14801,14802,4,0),(12448,'17468',13961,13962,4,0),(12449,'17468',14945,14946,4,0),(12450,'17469',14971,14972,4,0),(12451,'17469',14225,14226,4,0),(12452,'17469',14163,14164,4,0),(12453,'17469',14639,14640,4,0),(12454,'17469',14823,14824,4,0),(12455,'17470',14771,14772,4,0),(12456,'17472',14905,14906,4,0),(12457,'17472',14291,14292,4,0),(12458,'17473',14907,14908,4,0),(12459,'17474',14967,14968,4,0),(12460,'17474',14851,14852,4,0),(12461,'17475',14757,14758,4,0),(12462,'17475',14909,14910,4,0),(12463,'17476',14525,14526,4,0),(12464,'17476',14229,14230,4,0),(12465,'17480',14643,14644,4,0),(12466,'17481',14727,14728,4,0),(12467,'17482',14729,14730,4,0),(12468,'17483',14985,14986,4,0),(12469,'17483',13963,13964,4,0),(12470,'17484',14183,14184,4,0),(12471,'17485',14925,14926,4,0),(12472,'17486',14105,14106,4,0),(12473,'17487',14107,14108,4,0),(12474,'17488',14037,14038,4,0),(12475,'17489',14319,14320,4,0),(12476,'17489',14167,14168,4,0),(12477,'17490',14383,14384,4,0),(12478,'17491',14561,14562,4,0),(12479,'17492',14563,14564,4,0),(12480,'17493',14557,14558,4,0),(12481,'17493',14959,14960,4,0),(12482,'17494',14553,14554,4,0),(12483,'17495',14533,14534,4,0),(12484,'17496',14123,14124,4,0),(12485,'17497',14585,14586,4,0),(12486,'17500',14623,14624,4,0),(12487,'17512',14349,14350,4,0),(12488,'17513',14351,14352,4,0),(12489,'17515',14917,14918,4,0),(12490,'17520',14589,14590,4,0),(12491,'17527',14391,14392,4,0),(12492,'17528',14271,14272,4,0),(12493,'17529',14591,14592,4,0),(12494,'17530',14059,14060,4,0),(12495,'17531',14263,14264,4,0),(12496,'17531',14061,14062,4,0),(12497,'17532',14353,14354,4,0),(12498,'17534',14601,14602,4,0),(12499,'17534',14065,14066,4,0),(12500,'17534',14615,14616,4,0),(12501,'17534',14545,14546,4,0),(12502,'17535',14567,14568,4,0),(12503,'17536',14871,14872,4,0),(12504,'17537',13929,13930,4,0),(12505,'17538',14201,14202,4,0),(12506,'17538',13931,13932,4,0),(12507,'17538',14159,14160,4,0),(12508,'17538',14891,14892,4,0),(12509,'17539',14007,14008,4,0),(12510,'17539',14241,14242,4,0),(12511,'17539',14429,14430,4,0),(12512,'17539',14279,14280,4,0),(12513,'17600',14185,14186,4,0),(12514,'17700',14309,14310,4,0),(12515,'17700',14015,14016,4,0),(12516,'17706',14571,14572,4,0),(12517,'17707',14329,14330,4,0),(12518,'17707',13911,13912,4,0),(12519,'17708',14081,14082,4,0),(12520,'17709',14311,14312,4,0),(12521,'17720',14401,14402,4,0),(12522,'17721',14403,14404,4,0),(12523,'17722',14155,14156,4,0),(12524,'17723',14003,14004,4,0),(12525,'17723',13995,13996,4,0),(12526,'17730',14387,14388,4,0),(12527,'17731',14833,14834,4,0),(12528,'17732',14737,14738,4,0),(12529,'17733',13919,13920,4,0),(12530,'17734',13921,13922,4,0),(12531,'17740',14955,14956,4,0),(12532,'17741',14979,14980,4,0),(12533,'17741',14119,14120,4,0),(12534,'17742',13953,13954,4,0),(12535,'17743',14981,14982,4,0),(12536,'17744',14481,14482,4,0),(12537,'17745',14367,14368,4,0),(12538,'17746',14029,14030,4,0),(12539,'17747',14031,14032,4,0),(12540,'17750',14085,14086,4,0),(12541,'17751',14669,14670,4,0),(12542,'17752',14463,14464,4,0),(12543,'17753',14175,14176,4,0),(12544,'17754',14605,14606,4,0),(12545,'17755',14607,14608,4,0),(12546,'17760',14929,14930,4,0),(12547,'17762',14419,14420,4,0),(12548,'17763',14421,14422,4,0),(12549,'17770',14017,14018,4,0),(12550,'17771',14787,14788,4,0),(12551,'17772',14497,14498,4,0),(12552,'17773',14575,14576,4,0),(12553,'17780',14237,14238,4,0),(12554,'17781',14975,14976,4,0),(12555,'17800',14489,14490,4,0),(12556,'17810',14491,14492,4,0),(12557,'17811',14791,14792,4,0),(12558,'17812',14493,14494,4,0),(12559,'17813',14343,14344,4,0),(12560,'17820',13957,13958,4,0),(12561,'17830',14687,14688,4,0),(12562,'17831',14753,14754,4,0),(12563,'17832',14179,14180,4,0),(12564,'17832',14139,14140,4,0),(12565,'17833',14947,14948,4,0),(12566,'17833',14209,14210,4,0),(12567,'17834',14053,14054,4,0),(12568,'17834',14579,14580,4,0),(12569,'17840',14795,14796,4,0),(12570,'17843',14537,14538,4,0),(12571,'17844',14135,14136,4,0),(12572,'17846',14581,14582,4,0),(12573,'17850',13977,13978,4,0),(12574,'17850',14689,14690,4,0),(12575,'17850',13989,13990,4,0),(12576,'17851',14415,14416,4,0),(12577,'17851',13991,13992,4,0),(12578,'17852',14805,14806,4,0),(12579,'17853',14651,14652,4,0),(12580,'17853',14867,14868,4,0),(12581,'17853',13949,13950,4,0),(12582,'17854',14707,14708,4,0),(12583,'17854',14055,14056,4,0),(12584,'17855',14475,14476,4,0),(12585,'17856',14101,14102,4,0),(12586,'17856',14477,14478,4,0),(12587,'17857',14719,14720,4,0),(12588,'17858',14345,14346,4,0),(12589,'17860',14711,14712,4,0),(12590,'17861',14485,14486,4,0),(12591,'17862',14899,14900,4,0),(12592,'17864',14765,14766,4,0),(12593,'17865',14767,14768,4,0),(12594,'17867',14073,14074,4,0),(12595,'17868',14467,14468,4,0),(12596,'17869',14379,14380,4,0),(12597,'17869',14813,14814,4,0),(12598,'17869',14963,14964,4,0),(12599,'18001',15361,15362,4,0),(12600,'18002',15363,15364,4,0),(12601,'18003',15365,15366,4,0),(12602,'18004',15367,15368,4,0),(12603,'18005',15369,15370,4,0),(12604,'18006',15371,15372,4,0),(12605,'18007',15373,15374,4,0),(12606,'18008',15375,15376,4,0),(12607,'18009',15377,15378,4,0),(12608,'18010',15379,15380,4,0),(12609,'18011',15381,15382,4,0),(12610,'18012',15383,15384,4,0),(12611,'18013',15385,15386,4,0),(12612,'18014',15387,15388,4,0),(12613,'18015',15389,15390,4,0),(12614,'18053',15239,15240,4,0),(12615,'18100',15103,15104,4,0),(12616,'18101',15841,15842,4,0),(12617,'18102',15843,15844,4,0),(12618,'18110',15541,15542,4,0),(12619,'18120',15057,15058,4,0),(12620,'18126',15095,15096,4,0),(12621,'18127',15483,15484,4,0),(12622,'18127',15097,15098,4,0),(12623,'18128',15879,15880,4,0),(12624,'18128',15059,15060,4,0),(12625,'18129',15781,15782,4,0),(12626,'18129',15099,15100,4,0),(12627,'18129',15153,15154,4,0),(12628,'18130',15507,15508,4,0),(12629,'18130',15315,15316,4,0),(12630,'18131',15855,15856,4,0),(12631,'18132',15005,15006,4,0),(12632,'18140',15523,15524,4,0),(12633,'18140',16473,16474,4,0),(12634,'18150',15347,15348,4,0),(12635,'18151',15669,15670,4,0),(12636,'18152',15287,15288,4,0),(12637,'18160',15419,15420,4,0),(12638,'18170',15045,15046,4,0),(12639,'18179',15047,15048,4,0),(12640,'18179',15875,15876,4,0),(12641,'18180',15283,15284,4,0),(12642,'18181',15511,15512,4,0),(12643,'18181',15269,15270,4,0),(12644,'18182',15391,15392,4,0),(12645,'18183',15441,15442,4,0),(12646,'18184',15121,15122,4,0),(12647,'18185',15443,15444,4,0),(12648,'18190',15393,15394,4,0),(12649,'18190',15205,15206,4,0),(12650,'18191',15421,15422,4,0),(12651,'18191',15713,15714,4,0),(12652,'18192',15297,15298,4,0),(12653,'18192',15757,15758,4,0),(12654,'18193',15607,15608,4,0),(12655,'18194',15219,15220,4,0),(12656,'18194',15543,15544,4,0),(12657,'18195',15265,15266,4,0),(12658,'18196',15609,15610,4,0),(12659,'18197',15745,15746,4,0),(12660,'18198',15451,15452,4,0),(12661,'18199',15163,15164,4,0),(12662,'18200',15587,15588,4,0),(12663,'18210',15747,15748,4,0),(12664,'18210',15703,15704,4,0),(12665,'18211',15231,15232,4,0),(12666,'18212',15425,15426,4,0),(12667,'18213',15495,15496,4,0),(12668,'18214',15665,15666,4,0),(12669,'18220',15015,15016,4,0),(12670,'18230',15107,15108,4,0),(12671,'18240',15717,15718,4,0),(12672,'18247',15595,15596,4,0),(12673,'18248',15597,15598,4,0),(12674,'18249',15599,15600,4,0),(12675,'18250',15009,15010,4,0),(12676,'18250',15719,15720,4,0),(12677,'18260',15455,15456,4,0),(12678,'18270',15613,15614,4,0),(12679,'18280',15051,15052,4,0),(12680,'18290',15167,15168,4,0),(12681,'18290',15109,15110,4,0),(12682,'18290',15017,15018,4,0),(12683,'18291',15721,15722,4,0),(12684,'18292',15785,15786,4,0),(12685,'18293',15457,15458,4,0),(12686,'18294',15459,15460,4,0),(12687,'18295',15053,15054,4,0),(12688,'18300',15563,15564,4,0),(12689,'18310',15767,15768,4,0),(12690,'18311',15883,15884,4,0),(12691,'18311',15565,15566,4,0),(12692,'18312',12629,12630,4,0),(12693,'18312',15567,15568,4,0),(12694,'18313',15569,15570,4,0),(12695,'18314',15571,15572,4,0),(12696,'18320',15787,15788,4,0),(12697,'18327',15527,15528,4,0),(12698,'18328',15723,15724,4,0),(12699,'18328',15529,15530,4,0),(12700,'18329',15215,15216,4,0),(12701,'18329',15789,15790,4,0),(12702,'18330',15209,15210,4,0),(12703,'18330',15791,15792,4,0),(12704,'18330',15111,15112,4,0),(12705,'18339',15223,15224,4,0),(12706,'18339',15211,15212,4,0),(12707,'18340',15331,15332,4,0),(12708,'18350',15461,15462,4,0),(12709,'18360',15447,15448,4,0),(12710,'18369',15871,15872,4,0),(12711,'18370',15625,15626,4,0),(12712,'18380',15463,15464,4,0),(12713,'18381',15465,15466,4,0),(12714,'18400',15677,15678,4,0),(12715,'18410',15189,15190,4,0),(12716,'18410',15679,15680,4,0),(12717,'18410',15795,15796,4,0),(12718,'18411',15695,15696,4,0),(12719,'18412',15145,15146,4,0),(12720,'18413',15185,15186,4,0),(12721,'18414',15517,15518,4,0),(12722,'18415',15737,15738,4,0),(12723,'18416',15519,15520,4,0),(12724,'18416',15149,15150,4,0),(12725,'18417',15815,15816,4,0),(12726,'18418',15633,15634,4,0),(12727,'18418',15681,15682,4,0),(12728,'18418',15175,15176,4,0),(12729,'18420',15081,15082,4,0),(12730,'18420',15533,15534,4,0),(12731,'18430',15811,15812,4,0),(12732,'18438',15071,15072,4,0),(12733,'18439',15193,15194,4,0),(12734,'18440',15157,15158,4,0),(12735,'18448',15159,15160,4,0),(12736,'18449',15559,15560,4,0),(12737,'18450',15083,15084,4,0),(12738,'18451',15141,15142,4,0),(12739,'18452',15499,15500,4,0),(12740,'18460',15085,15086,4,0),(12741,'18470',15837,15838,4,0),(12742,'18480',15823,15824,4,0),(12743,'18490',15649,15650,4,0),(12744,'18491',15819,15820,4,0),(12745,'18492',15825,15826,4,0),(12746,'18492',15651,15652,4,0),(12747,'18493',15655,15656,4,0),(12748,'18494',15827,15828,4,0),(12749,'18494',15657,15658,4,0),(12750,'18500',15401,15402,4,0),(12751,'18510',15129,15130,4,0),(12752,'18511',15833,15834,4,0),(12753,'18512',15291,15292,4,0),(12754,'18512',15433,15434,4,0),(12755,'18512',15503,15504,4,0),(12756,'18513',15319,15320,4,0),(12757,'18514',15041,15042,4,0),(12758,'18515',15323,15324,4,0),(12759,'18515',15751,15752,4,0),(12760,'18515',15403,15404,4,0),(12761,'18516',15579,15580,4,0),(12762,'18516',15727,15728,4,0),(12763,'18516',15125,15126,4,0),(12764,'18516',15591,15592,4,0),(12765,'18517',15759,15760,4,0),(12766,'18517',15247,15248,4,0),(12767,'18517',15513,15514,4,0),(12768,'18518',15487,15488,4,0),(12769,'18518',15227,15228,4,0),(12770,'18518',15025,15026,4,0),(12771,'18518',15537,15538,4,0),(12772,'18518',15091,15092,4,0),(12773,'18519',15405,15406,4,0),(12774,'18519',15753,15754,4,0),(12775,'18520',15011,15012,4,0),(12776,'18530',15699,15700,4,0),(12777,'18538',15067,15068,4,0),(12778,'18538',15273,15274,4,0),(12779,'18539',15867,15868,4,0),(12780,'18540',15341,15342,4,0),(12781,'18540',15429,15430,4,0),(12782,'18540',15629,15630,4,0),(12783,'18540',15087,15088,4,0),(12784,'18550',15475,15476,4,0),(12785,'18560',15397,15398,4,0),(12786,'18561',15617,15618,4,0),(12787,'18562',15707,15708,4,0),(12788,'18563',15343,15344,4,0),(12789,'18563',15807,15808,4,0),(12790,'18564',15235,15236,4,0),(12791,'18565',15171,15172,4,0),(12792,'18566',15133,15134,4,0),(12793,'18567',15477,15478,4,0),(12794,'18568',15709,15710,4,0),(12795,'18569',15621,15622,4,0),(12796,'18570',15279,15280,4,0),(12797,'18600',15635,15636,4,0),(12798,'18610',15771,15772,4,0),(12799,'18611',15603,15604,4,0),(12800,'18612',15471,15472,4,0),(12801,'18613',15637,15638,4,0),(12802,'18614',15583,15584,4,0),(12803,'18614',15413,15414,4,0),(12804,'18614',15639,15640,4,0),(12805,'18615',15575,15576,4,0),(12806,'18615',15847,15848,4,0),(12807,'18616',15849,15850,4,0),(12808,'18620',15063,15064,4,0),(12809,'18620',15641,15642,4,0),(12810,'18630',15859,15860,4,0),(12811,'18640',15691,15692,4,0),(12812,'18650',15301,15302,4,0),(12813,'18656',15547,15548,4,0),(12814,'18657',15549,15550,4,0),(12815,'18657',15661,15662,4,0),(12816,'18658',15311,15312,4,0),(12817,'18658',15305,15306,4,0),(12818,'18659',15863,15864,4,0),(12819,'18659',15037,15038,4,0),(12820,'18660',15307,15308,4,0),(12821,'18660',15551,15552,4,0),(12822,'18670',15851,15852,4,0),(12823,'18680',15773,15774,4,0),(12824,'18690',15075,15076,4,0),(12825,'18690',15775,15776,4,0),(12826,'18697',15077,15078,4,0),(12827,'18698',15687,15688,4,0),(12828,'18699',15555,15556,4,0),(12829,'18699',15491,15492,4,0),(12830,'18700',15029,15030,4,0),(12831,'18708',15021,15022,4,0),(12832,'18710',15799,15800,4,0),(12833,'18710',15731,15732,4,0),(12834,'18710',15683,15684,4,0),(12835,'18711',15763,15764,4,0),(12836,'18713',15801,15802,4,0),(12837,'18720',15643,15644,4,0),(12838,'18730',15645,15646,4,0),(12839,'18740',15415,15416,4,0),(12840,'18750',15803,15804,4,0),(12841,'18750',15733,15734,4,0),(12842,'18760',15031,15032,4,0),(12843,'18770',15033,15034,4,0),(12844,'18800',15115,15116,4,0),(12845,'18810',15179,15180,4,0),(12846,'18811',15887,15888,4,0),(12847,'18812',15327,15328,4,0),(12848,'18813',15251,15252,4,0),(12849,'18814',15241,15242,4,0),(12850,'18815',15243,15244,4,0),(12851,'18816',15201,15202,4,0),(12852,'18817',15137,15138,4,0),(12853,'18818',15197,15198,4,0),(12854,'18819',15181,15182,4,0),(12855,'18820',15741,15742,4,0),(12856,'18830',15467,15468,4,0),(12857,'18830',15437,15438,4,0),(12858,'18840',15335,15336,4,0),(12859,'18849',15337,15338,4,0),(12860,'18850',15255,15256,4,0),(12861,'18857',15257,15258,4,0),(12862,'18858',15673,15674,4,0),(12863,'18859',15259,15260,4,0),(12864,'18860',15407,15408,4,0),(12865,'18860',15117,15118,4,0),(12866,'18870',15351,15352,4,0),(12867,'18880',15409,15410,4,0),(12868,'18890',15355,15356,4,0),(12869,'18891',15261,15262,4,0),(12870,'19001',16417,16418,4,0),(12871,'19002',16419,16420,4,0),(12872,'19003',16421,16422,4,0),(12873,'19004',16423,16424,4,0),(12874,'19005',16425,16426,4,0),(12875,'19080',16427,16428,4,0),(12876,'19080',17205,17206,4,0),(12877,'19100',16753,16754,4,0),(12878,'19110',16693,16694,4,0),(12879,'19111',17213,17214,4,0),(12880,'19112',16795,16796,4,0),(12881,'19112',15919,15920,4,0),(12882,'19113',16395,16396,4,0),(12883,'19114',16633,16634,4,0),(12884,'19115',15971,15972,4,0),(12885,'19116',16283,16284,4,0),(12886,'19117',15913,15914,4,0),(12887,'19118',15975,15976,4,0),(12888,'19119',16469,16470,4,0),(12889,'19119',16341,16342,4,0),(12890,'19119',15977,15978,4,0),(12891,'19119',16345,16346,4,0),(12892,'19119',16493,16494,4,0),(12893,'19119',15915,15916,4,0),(12894,'19119',16915,16916,4,0),(12895,'19119',17241,17242,4,0),(12896,'19119',16505,16506,4,0),(12897,'19120',16883,16884,4,0),(12898,'19125',15927,15928,4,0),(12899,'19126',16895,16896,4,0),(12900,'19127',16337,16338,4,0),(12901,'19127',16885,16886,4,0),(12902,'19127',16171,16172,4,0),(12903,'19127',16653,16654,4,0),(12904,'19128',16199,16200,4,0),(12905,'19128',16601,16602,4,0),(12906,'19128',16887,16888,4,0),(12907,'19128',16745,16746,4,0),(12908,'19129',16747,16748,4,0),(12909,'19129',15963,15964,4,0),(12910,'19130',16059,16060,4,0),(12911,'19131',16061,16062,4,0),(12912,'19132',15959,15960,4,0),(12913,'19132',17123,17124,4,0),(12914,'19133',16085,16086,4,0),(12915,'19133',16307,16308,4,0),(12916,'19133',15981,15982,4,0),(12917,'19133',16105,16106,4,0),(12918,'19133',16287,16288,4,0),(12919,'19134',16995,16996,4,0),(12920,'19134',16761,16762,4,0),(12921,'19135',16041,16042,4,0),(12922,'19135',16037,16038,4,0),(12923,'19139',17207,17208,4,0),(12924,'19140',16475,16476,4,0),(12925,'19141',17105,17106,4,0),(12926,'19141',16017,16018,4,0),(12927,'19141',16569,16570,4,0),(12928,'19141',17209,17210,4,0),(12929,'19142',17113,17114,4,0),(12930,'19142',16573,16574,4,0),(12931,'19143',16871,16872,4,0),(12932,'19143',16513,16514,4,0),(12933,'19143',16903,16904,4,0),(12934,'19143',16477,16478,4,0),(12935,'19143',16289,16290,4,0),(12936,'19143',17217,17218,4,0),(12937,'19143',17221,17222,4,0),(12938,'19144',16391,16392,4,0),(12939,'19144',16701,16702,4,0),(12940,'19144',16383,16384,4,0),(12941,'19145',16837,16838,4,0),(12942,'19150',16429,16430,4,0),(12943,'19151',16187,16188,4,0),(12944,'19152',15947,15948,4,0),(12945,'19153',16045,16046,4,0),(12946,'19160',16205,16206,4,0),(12947,'19161',16799,16800,4,0),(12948,'19162',16781,16782,4,0),(12949,'19170',16297,16298,4,0),(12950,'19171',16119,16120,4,0),(12951,'19174',17037,17038,4,0),(12952,'19174',17117,17118,4,0),(12953,'19174',16405,16406,4,0),(12954,'19180',16613,16614,4,0),(12955,'19181',16431,16432,4,0),(12956,'19182',16433,16434,4,0),(12957,'19182',16379,16380,4,0),(12958,'19184',17139,17140,4,0),(12959,'19184',17073,17074,4,0),(12960,'19184',17193,17194,4,0),(12961,'19184',16151,16152,4,0),(12962,'19184',17201,17202,4,0),(12963,'19185',17135,17136,4,0),(12964,'19185',17119,17120,4,0),(12965,'19185',16299,16300,4,0),(12966,'19186',16303,16304,4,0),(12967,'19187',17093,17094,4,0),(12968,'19190',16207,16208,4,0),(12969,'19190',17019,17020,4,0),(12970,'19191',17021,17022,4,0),(12971,'19191',16801,16802,4,0),(12972,'19192',16401,16402,4,0),(12973,'19192',16783,16784,4,0),(12974,'19192',17081,17082,4,0),(12975,'19193',16435,16436,4,0),(12976,'19194',16437,16438,4,0),(12977,'19196',16565,16566,4,0),(12978,'19196',17109,17110,4,0),(12979,'19196',16029,16030,4,0),(12980,'19196',16709,16710,4,0),(12981,'19196',17101,17102,4,0),(12982,'19197',16445,16446,4,0),(12983,'19197',16137,16138,4,0),(12984,'19197',16227,16228,4,0),(12985,'19197',17025,17026,4,0),(12986,'19198',17065,17066,4,0),(12987,'19200',16065,16066,4,0),(12988,'19208',15985,15986,4,0),(12989,'19209',16829,16830,4,0),(12990,'19209',17179,17180,4,0),(12991,'19210',17225,17226,4,0),(12992,'19219',16589,16590,4,0),(12993,'19219',17181,17182,4,0),(12994,'19219',16593,16594,4,0),(12995,'19220',16497,16498,4,0),(12996,'19222',16969,16970,4,0),(12997,'19223',16127,16128,4,0),(12998,'19223',16841,16842,4,0),(12999,'19223',16585,16586,4,0),(13000,'19224',17163,17164,4,0),(13001,'19224',16129,16130,4,0),(13002,'19224',16971,16972,4,0),(13003,'19225',16825,16826,4,0),(13004,'19225',16535,16536,4,0),(13005,'19225',17147,17148,4,0),(13006,'19225',16843,16844,4,0),(13007,'19226',16973,16974,4,0),(13008,'19226',16499,16500,4,0),(13009,'19226',16673,16674,4,0),(13010,'19227',16977,16978,4,0),(13011,'19227',15909,15910,4,0),(13012,'19227',16621,16622,4,0),(13013,'19227',16859,16860,4,0),(13014,'19229',16243,16244,4,0),(13015,'19229',16697,16698,4,0),(13016,'19229',16501,16502,4,0),(13017,'19229',16821,16822,4,0),(13018,'19230',16245,16246,4,0),(13019,'19237',16021,16022,4,0),(13020,'19237',16899,16900,4,0),(13021,'19237',16247,16248,4,0),(13022,'19237',16375,16376,4,0),(13023,'19237',17237,17238,4,0),(13024,'19238',16531,16532,4,0),(13025,'19238',16311,16312,4,0),(13026,'19239',16249,16250,4,0),(13027,'19239',16689,16690,4,0),(13028,'19240',16517,16518,4,0),(13029,'19242',16453,16454,4,0),(13030,'19243',16413,16414,4,0),(13031,'19243',16263,16264,4,0),(13032,'19243',17185,17186,4,0),(13033,'19243',16549,16550,4,0),(13034,'19243',16863,16864,4,0),(13035,'19243',16115,16116,4,0),(13036,'19243',16805,16806,4,0),(13037,'19244',16313,16314,4,0),(13038,'19244',16561,16562,4,0),(13039,'19244',16257,16258,4,0),(13040,'19245',15995,15996,4,0),(13041,'19245',16179,16180,4,0),(13042,'19245',17041,17042,4,0),(13043,'19245',16183,16184,4,0),(13044,'19245',16731,16732,4,0),(13045,'19245',16833,16834,4,0),(13046,'19245',16907,16908,4,0),(13047,'19245',16523,16524,4,0),(13048,'19245',16713,16714,4,0),(13049,'19246',16637,16638,4,0),(13050,'19246',16155,16156,4,0),(13051,'19246',16773,16774,4,0),(13052,'19246',16665,16666,4,0),(13053,'19246',16519,16520,4,0),(13054,'19246',17175,17176,4,0),(13055,'19247',16645,16646,4,0),(13056,'19247',16349,16350,4,0),(13057,'19247',16111,16112,4,0),(13058,'19248',16461,16462,4,0),(13059,'19250',16935,16936,4,0),(13060,'19260',15935,15936,4,0),(13061,'19261',15937,15938,4,0),(13062,'19261',16577,16578,4,0),(13063,'19262',16363,16364,4,0),(13064,'19262',16937,16938,4,0),(13065,'19262',16911,16912,4,0),(13066,'19263',16939,16940,4,0),(13067,'19264',16941,16942,4,0),(13068,'19265',16943,16944,4,0),(13069,'19266',16945,16946,4,0),(13070,'19266',16545,16546,4,0),(13071,'19267',16947,16948,4,0),(13072,'19268',15955,15956,4,0),(13073,'19268',17045,17046,4,0),(13074,'19268',16661,16662,4,0),(13075,'19268',16949,16950,4,0),(13076,'19269',17131,17132,4,0),(13077,'19269',16931,16932,4,0),(13078,'19269',16855,16856,4,0),(13079,'19269',16739,16740,4,0),(13080,'19269',16951,16952,4,0),(13081,'19270',16049,16050,4,0),(13082,'19273',16807,16808,4,0),(13083,'19274',16145,16146,4,0),(13084,'19274',16539,16540,4,0),(13085,'19274',16051,16052,4,0),(13086,'19275',16259,16260,4,0),(13087,'19275',16147,16148,4,0),(13088,'19275',16961,16962,4,0),(13089,'19275',16133,16134,4,0),(13090,'19275',16253,16254,4,0),(13091,'19275',15923,15924,4,0),(13092,'19275',16409,16410,4,0),(13093,'19276',16649,16650,4,0),(13094,'19276',16457,16458,4,0),(13095,'19276',16053,16054,4,0),(13096,'19276',17097,17098,4,0),(13097,'19276',16077,16078,4,0),(13098,'19276',16867,16868,4,0),(13099,'19277',15931,15932,4,0),(13100,'19277',16223,16224,4,0),(13101,'19277',17011,17012,4,0),(13102,'19277',16055,16056,4,0),(13103,'19277',16741,16742,4,0),(13104,'19278',16527,16528,4,0),(13105,'19278',16541,16542,4,0),(13106,'19280',16605,16606,4,0),(13107,'19281',16607,16608,4,0),(13108,'19282',15999,16000,4,0),(13109,'19283',16509,16510,4,0),(13110,'19283',16001,16002,4,0),(13111,'19284',15939,15940,4,0),(13112,'19285',16231,16232,4,0),(13113,'19285',16581,16582,4,0),(13114,'19286',16007,16008,4,0),(13115,'19286',16629,16630,4,0),(13116,'19287',16387,16388,4,0),(13117,'19287',16985,16986,4,0),(13118,'19287',16009,16010,4,0),(13119,'19287',16657,16658,4,0),(13120,'19287',16359,16360,4,0),(13121,'19287',16609,16610,4,0),(13122,'19290',16367,16368,4,0),(13123,'19292',16267,16268,4,0),(13124,'19292',16351,16352,4,0),(13125,'19294',16597,16598,4,0),(13126,'19294',16163,16164,4,0),(13127,'19294',17189,17190,4,0),(13128,'19294',16625,16626,4,0),(13129,'19295',16485,16486,4,0),(13130,'19295',16069,16070,4,0),(13131,'19295',17167,17168,4,0),(13132,'19295',16953,16954,4,0),(13133,'19300',16677,16678,4,0),(13134,'19310',16191,16192,4,0),(13135,'19310',16195,16196,4,0),(13136,'19310',15943,15944,4,0),(13137,'19311',16727,16728,4,0),(13138,'19312',16999,17000,4,0),(13139,'19312',16777,16778,4,0),(13140,'19312',17077,17078,4,0),(13141,'19313',16765,16766,4,0),(13142,'19314',16981,16982,4,0),(13143,'19315',16641,16642,4,0),(13144,'19320',15989,15990,4,0),(13145,'19321',15991,15992,4,0),(13146,'19323',17015,17016,4,0),(13147,'19324',16927,16928,4,0),(13148,'19325',16787,16788,4,0),(13149,'19325',15901,15902,4,0),(13150,'19325',17007,17008,4,0),(13151,'19326',16321,16322,4,0),(13152,'19327',16317,16318,4,0),(13153,'19328',16705,16706,4,0),(13154,'19328',16167,16168,4,0),(13155,'19328',16465,16466,4,0),(13156,'19332',15951,15952,4,0),(13157,'19332',16987,16988,4,0),(13158,'19332',16669,16670,4,0),(13159,'19332',17197,17198,4,0),(13160,'19333',16989,16990,4,0),(13161,'19334',16991,16992,4,0),(13162,'19334',16271,16272,4,0),(13163,'19336',16735,16736,4,0),(13164,'19337',17061,17062,4,0),(13165,'19338',17069,17070,4,0),(13166,'19339',16875,16876,4,0),(13167,'19339',16333,16334,4,0),(13168,'19340',16851,16852,4,0),(13169,'19341',16273,16274,4,0),(13170,'19342',16449,16450,4,0),(13171,'19343',16275,16276,4,0),(13172,'19345',17053,17054,4,0),(13173,'19346',16919,16920,4,0),(13174,'19346',16923,16924,4,0),(13175,'19350',16679,16680,4,0),(13176,'19351',16681,16682,4,0),(13177,'19352',16811,16812,4,0),(13178,'19353',16813,16814,4,0),(13179,'19354',16815,16816,4,0),(13180,'19355',17029,17030,4,0),(13181,'19357',16013,16014,4,0),(13182,'19360',16123,16124,4,0),(13183,'19361',16553,16554,4,0),(13184,'19362',16683,16684,4,0),(13185,'19363',16685,16686,4,0),(13186,'19390',17155,17156,4,0),(13187,'19390',16371,16372,4,0),(13188,'19390',17003,17004,4,0),(13189,'19390',16397,16398,4,0),(13190,'19390',16073,16074,4,0),(13191,'19390',16277,16278,4,0),(13192,'19391',16817,16818,4,0),(13193,'19391',16175,16176,4,0),(13194,'19391',17057,17058,4,0),(13195,'19392',16279,16280,4,0),(13196,'19400',16089,16090,4,0),(13197,'19410',16091,16092,4,0),(13198,'19411',16093,16094,4,0),(13199,'19411',17151,17152,4,0),(13200,'19412',16159,16160,4,0),(13201,'19412',16095,16096,4,0),(13202,'19412',17127,17128,4,0),(13203,'19413',16097,16098,4,0),(13204,'19414',16099,16100,4,0),(13205,'19420',16211,16212,4,0),(13206,'19428',16213,16214,4,0),(13207,'19429',16215,16216,4,0),(13208,'19431',16217,16218,4,0),(13209,'19431',17033,17034,4,0),(13210,'19431',16141,16142,4,0),(13211,'19432',16717,16718,4,0),(13212,'19432',16879,16880,4,0),(13213,'19432',17047,17048,4,0),(13214,'19432',15893,15894,4,0),(13215,'19441',16847,16848,4,0),(13216,'19441',16489,16490,4,0),(13217,'19442',15897,15898,4,0),(13218,'19443',16891,16892,4,0),(13219,'19443',16721,16722,4,0),(13220,'19443',16235,16236,4,0),(13221,'19444',17229,17230,4,0),(13222,'19444',16723,16724,4,0),(13223,'19445',16003,16004,4,0),(13224,'19445',16965,16966,4,0),(13225,'19445',16481,16482,4,0),(13226,'19445',16355,16356,4,0),(13227,'19450',17085,17086,4,0),(13228,'19458',17087,17088,4,0),(13229,'19459',16219,16220,4,0),(13230,'19459',16107,16108,4,0),(13231,'19460',17171,17172,4,0),(13232,'19461',17231,17232,4,0),(13233,'19461',16033,16034,4,0),(13234,'19462',16757,16758,4,0),(13235,'19463',16791,16792,4,0),(13236,'19490',15905,15906,4,0),(13237,'19490',16617,16618,4,0),(13238,'19490',16101,16102,4,0),(13239,'19490',17143,17144,4,0),(13240,'19490',15967,15968,4,0),(13241,'19490',16081,16082,4,0),(13242,'19490',16239,16240,4,0),(13243,'19491',16441,16442,4,0),(13244,'19491',16957,16958,4,0),(13245,'19491',16557,16558,4,0),(13246,'19491',16329,16330,4,0),(13247,'19491',17049,17050,4,0),(13248,'19492',17159,17160,4,0),(13249,'19492',16749,16750,4,0),(13250,'19492',17089,17090,4,0),(13251,'19492',16025,16026,4,0),(13252,'19492',16325,16326,4,0),(13253,'19493',16769,16770,4,0),(13254,'19495',17233,17234,4,0),(13255,'19680',15777,15778,4,0),(13256,'20001',17381,17382,4,0),(13257,'20002',17383,17384,4,0),(13258,'20003',17385,17386,4,0),(13259,'20004',17387,17388,4,0),(13260,'20005',17389,17390,4,0),(13261,'20006',17391,17392,4,0),(13262,'20007',17393,17394,4,0),(13263,'20008',17395,17396,4,0),(13264,'20009',17397,17398,4,0),(13265,'20010',17399,17400,4,0),(13266,'20011',17401,17402,4,0),(13267,'20012',17403,17404,4,0),(13268,'20013',17405,17406,4,0),(13269,'20014',17407,17408,4,0),(13270,'20015',17409,17410,4,0),(13271,'20016',17411,17412,4,0),(13272,'20017',17413,17414,4,0),(13273,'20018',17415,17416,4,0),(13274,'20100',17441,17442,4,0),(13275,'20100',17417,17418,4,0),(13276,'20100',17555,17556,4,0),(13277,'20110',17613,17614,4,0),(13278,'20115',17319,17320,4,0),(13279,'20120',17477,17478,4,0),(13280,'20128',17479,17480,4,0),(13281,'20130',17635,17636,4,0),(13282,'20130',17643,17644,4,0),(13283,'20140',17289,17290,4,0),(13284,'20150',17251,17252,4,0),(13285,'20150',17649,17650,4,0),(13286,'20159',17315,17316,4,0),(13287,'20159',17523,17524,4,0),(13288,'20159',17675,17676,4,0),(13289,'20160',17419,17420,4,0),(13290,'20160',17527,17528,4,0),(13291,'20170',17645,17646,4,0),(13292,'20180',17575,17576,4,0),(13293,'20200',17339,17340,4,0),(13294,'20210',17531,17532,4,0),(13295,'20211',17323,17324,4,0),(13296,'20212',17579,17580,4,0),(13297,'20213',17495,17496,4,0),(13298,'20214',17567,17568,4,0),(13299,'20214',17665,17666,4,0),(13300,'20214',17617,17618,4,0),(13301,'20215',17661,17662,4,0),(13302,'20216',17609,17610,4,0),(13303,'20217',17461,17462,4,0),(13304,'20218',17455,17456,4,0),(13305,'20220',17539,17540,4,0),(13306,'20230',17541,17542,4,0),(13307,'20240',17593,17594,4,0),(13308,'20247',17653,17654,4,0),(13309,'20248',17277,17278,4,0),(13310,'20248',17465,17466,4,0),(13311,'20248',17301,17302,4,0),(13312,'20249',17519,17520,4,0),(13313,'20250',17545,17546,4,0),(13314,'20259',17335,17336,4,0),(13315,'20260',17269,17270,4,0),(13316,'20267',17499,17500,4,0),(13317,'20267',17625,17626,4,0),(13318,'20268',17627,17628,4,0),(13319,'20268',17281,17282,4,0),(13320,'20268',17285,17286,4,0),(13321,'20269',17247,17248,4,0),(13322,'20269',17597,17598,4,0),(13323,'20270',17293,17294,4,0),(13324,'20271',17515,17516,4,0),(13325,'20280',17487,17488,4,0),(13326,'20301',17503,17504,4,0),(13327,'20302',17505,17506,4,0),(13328,'20303',17507,17508,4,0),(13329,'20304',17509,17510,4,0),(13330,'20305',17511,17512,4,0),(13331,'20400',17629,17630,4,0),(13332,'20400',17491,17492,4,0),(13333,'20490',17601,17602,4,0),(13334,'20490',17559,17560,4,0),(13335,'20491',17347,17348,4,0),(13336,'20491',17469,17470,4,0),(13337,'20491',17535,17536,4,0),(13338,'20492',17351,17352,4,0),(13339,'20493',17367,17368,4,0),(13340,'20493',17427,17428,4,0),(13341,'20493',17353,17354,4,0),(13342,'20494',17273,17274,4,0),(13343,'20494',17631,17632,4,0),(13344,'20494',17483,17484,4,0),(13345,'20495',17265,17266,4,0),(13346,'20496',17371,17372,4,0),(13347,'20500',17309,17310,4,0),(13348,'20509',17311,17312,4,0),(13349,'20530',17449,17450,4,0),(13350,'20530',17549,17550,4,0),(13351,'20540',17451,17452,4,0),(13352,'20550',17305,17306,4,0),(13353,'20560',17583,17584,4,0),(13354,'20567',17585,17586,4,0),(13355,'20568',17587,17588,4,0),(13356,'20569',17357,17358,4,0),(13357,'20569',17589,17590,4,0),(13358,'20570',17359,17360,4,0),(13359,'20577',17297,17298,4,0),(13360,'20578',17361,17362,4,0),(13361,'20580',17363,17364,4,0),(13362,'20590',17621,17622,4,0),(13363,'20600',17423,17424,4,0),(13364,'20690',17431,17432,4,0),(13365,'20700',17639,17640,4,0),(13366,'20700',17683,17684,4,0),(13367,'20709',17457,17458,4,0),(13368,'20720',17327,17328,4,0),(13369,'20730',17331,17332,4,0),(13370,'20737',17445,17446,4,0),(13371,'20739',17343,17344,4,0),(13372,'20740',17669,17670,4,0),(13373,'20749',17261,17262,4,0),(13374,'20749',17671,17672,4,0),(13375,'20750',17679,17680,4,0),(13376,'20800',17657,17658,4,0),(13377,'20808',17473,17474,4,0),(13378,'20809',17255,17256,4,0),(13379,'20810',17605,17606,4,0),(13380,'20810',17257,17258,4,0),(13381,'20820',17375,17376,4,0),(13382,'20829',17377,17378,4,0),(13383,'20830',17571,17572,4,0),(13384,'20850',17563,17564,4,0),(13385,'20860',17435,17436,4,0),(13386,'20870',17437,17438,4,0),(13387,'21000',17923,17924,4,0),(13388,'21001',17925,17926,4,0),(13389,'21002',17927,17928,4,0),(13390,'21003',17929,17930,4,0),(13391,'21004',17931,17932,4,0),(13392,'21005',17933,17934,4,0),(13393,'21006',17935,17936,4,0),(13394,'21007',17937,17938,4,0),(13395,'21009',17763,17764,4,0),(13396,'21100',17693,17694,4,0),(13397,'21100',18045,18046,4,0),(13398,'21110',17695,17696,4,0),(13399,'21110',18047,18048,4,0),(13400,'21120',17697,17698,4,0),(13401,'21122',17699,17700,4,0),(13402,'21130',18015,18016,4,0),(13403,'21130',18001,18002,4,0),(13404,'21193',23241,23242,4,0),(13405,'21200',17737,17738,4,0),(13406,'21207',17739,17740,4,0),(13407,'21207',17979,17980,4,0),(13408,'21208',17741,17742,4,0),(13409,'21208',17983,17984,4,0),(13410,'21208',17855,17856,4,0),(13411,'21209',17843,17844,4,0),(13412,'21209',18041,18042,4,0),(13413,'21209',17743,17744,4,0),(13414,'21210',18139,18140,4,0),(13415,'21220',17911,17912,4,0),(13416,'21230',17847,17848,4,0),(13417,'21239',18081,18082,4,0),(13418,'21239',17849,17850,4,0),(13419,'21239',17747,17748,4,0),(13420,'21240',17749,17750,4,0),(13421,'21248',17751,17752,4,0),(13422,'21250',18057,18058,4,0),(13423,'21260',18091,18092,4,0),(13424,'21270',17805,17806,4,0),(13425,'21280',17759,17760,4,0),(13426,'21290',17953,17954,4,0),(13427,'21290',17703,17704,4,0),(13428,'21291',17963,17964,4,0),(13429,'21291',17777,17778,4,0),(13430,'21291',17903,17904,4,0),(13431,'21291',18101,18102,4,0),(13432,'21292',17835,17836,4,0),(13433,'21292',17899,17900,4,0),(13434,'21300',17809,17810,4,0),(13435,'21309',17811,17812,4,0),(13436,'21310',17813,17814,4,0),(13437,'21319',17815,17816,4,0),(13438,'21320',17879,17880,4,0),(13439,'21330',17851,17852,4,0),(13440,'21330',17881,17882,4,0),(13441,'21330',17705,17706,4,0),(13442,'21340',17753,17754,4,0),(13443,'21340',17689,17690,4,0),(13444,'21342',17707,17708,4,0),(13445,'21350',17709,17710,4,0),(13446,'21359',18083,18084,4,0),(13447,'21359',17711,17712,4,0),(13448,'21360',17955,17956,4,0),(13449,'21380',17867,17868,4,0),(13450,'21386',17863,17864,4,0),(13451,'21387',17859,17860,4,0),(13452,'21388',17915,17916,4,0),(13453,'21388',17823,17824,4,0),(13454,'21390',17891,17892,4,0),(13455,'21400',17941,17942,4,0),(13456,'21400',17971,17972,4,0),(13457,'21400',17765,17766,4,0),(13458,'21409',17767,17768,4,0),(13459,'21410',17943,17944,4,0),(13460,'21420',17769,17770,4,0),(13461,'21420',17945,17946,4,0),(13462,'21430',17947,17948,4,0),(13463,'21440',17771,17772,4,0),(13464,'21440',17973,17974,4,0),(13465,'21449',17975,17976,4,0),(13466,'21450',17827,17828,4,0),(13467,'21459',17829,17830,4,0),(13468,'21459',18049,18050,4,0),(13469,'21460',17949,17950,4,0),(13470,'21500',17907,17908,4,0),(13471,'21510',18061,18062,4,0),(13472,'21520',18063,18064,4,0),(13473,'21520',17731,17732,4,0),(13474,'21530',17733,17734,4,0),(13475,'21540',17831,17832,4,0),(13476,'21540',18121,18122,4,0),(13477,'21550',18035,18036,4,0),(13478,'21559',18037,18038,4,0),(13479,'21560',18031,18032,4,0),(13480,'21570',18087,18088,4,0),(13481,'21580',17755,17756,4,0),(13482,'21580',17801,17802,4,0),(13483,'21580',17883,17884,4,0),(13484,'21590',18109,18110,4,0),(13485,'21591',18073,18074,4,0),(13486,'21592',18117,18118,4,0),(13487,'21593',17871,17872,4,0),(13488,'21594',17887,17888,4,0),(13489,'21595',18077,18078,4,0),(13490,'21600',18105,18106,4,0),(13491,'21609',17779,17780,4,0),(13492,'21610',18067,18068,4,0),(13493,'21620',18093,18094,4,0),(13494,'21620',18097,18098,4,0),(13495,'21630',17781,17782,4,0),(13496,'21639',18069,18070,4,0),(13497,'21639',17783,17784,4,0),(13498,'21640',18129,18130,4,0),(13499,'21646',17713,17714,4,0),(13500,'21647',17787,17788,4,0),(13501,'21647',18131,18132,4,0),(13502,'21649',18133,18134,4,0),(13503,'21660',17995,17996,4,0),(13504,'21667',17997,17998,4,0),(13505,'21668',17959,17960,4,0),(13506,'21668',18135,18136,4,0),(13507,'21668',17819,17820,4,0),(13508,'21669',17715,17716,4,0),(13509,'21670',18007,18008,4,0),(13510,'21700',17967,17968,4,0),(13511,'21710',17793,17794,4,0),(13512,'21710',17719,17720,4,0),(13513,'21720',18053,18054,4,0),(13514,'21730',17721,17722,4,0),(13515,'21739',17723,17724,4,0),(13516,'21740',17919,17920,4,0),(13517,'21750',17725,17726,4,0),(13518,'21760',17727,17728,4,0),(13519,'21800',18017,18018,4,0),(13520,'21800',18003,18004,4,0),(13521,'21810',18019,18020,4,0),(13522,'21819',18021,18022,4,0),(13523,'21820',17987,17988,4,0),(13524,'21830',17797,17798,4,0),(13525,'21840',18011,18012,4,0),(13526,'21850',18125,18126,4,0),(13527,'21860',18113,18114,4,0),(13528,'21870',17895,17896,4,0),(13529,'21880',18025,18026,4,0),(13530,'21888',18027,18028,4,0),(13531,'21890',17991,17992,4,0),(13532,'21891',17839,17840,4,0),(13533,'22000',18729,18730,4,0),(13534,'22001',18731,18732,4,0),(13535,'22002',18733,18734,4,0),(13536,'22003',18735,18736,4,0),(13537,'22004',18737,18738,4,0),(13538,'22005',18739,18740,4,0),(13539,'22006',18741,18742,4,0),(13540,'22080',18743,18744,4,0),(13541,'22090',18745,18746,4,0),(13542,'22092',18747,18748,4,0),(13543,'22094',18749,18750,4,0),(13544,'22097',18751,18752,4,0),(13545,'22100',19155,19156,4,0),(13546,'22110',19213,19214,4,0),(13547,'22110',19125,19126,4,0),(13548,'22111',18931,18932,4,0),(13549,'22112',18199,18200,4,0),(13550,'22113',18961,18962,4,0),(13551,'22120',19221,19222,4,0),(13552,'22121',19223,19224,4,0),(13553,'22122',18763,18764,4,0),(13554,'22122',19225,19226,4,0),(13555,'22122',18267,18268,4,0),(13556,'22123',18269,18270,4,0),(13557,'22124',18883,18884,4,0),(13558,'22125',18845,18846,4,0),(13559,'22126',18865,18866,4,0),(13560,'22130',19001,19002,4,0),(13561,'22131',19003,19004,4,0),(13562,'22131',18397,18398,4,0),(13563,'22132',19285,19286,4,0),(13564,'22132',19025,19026,4,0),(13565,'22132',18355,18356,4,0),(13566,'22133',18281,18282,4,0),(13567,'22133',18451,18452,4,0),(13568,'22133',18271,18272,4,0),(13569,'22134',18453,18454,4,0),(13570,'22135',18217,18218,4,0),(13571,'22135',18293,18294,4,0),(13572,'22140',18909,18910,4,0),(13573,'22141',18911,18912,4,0),(13574,'22141',18409,18410,4,0),(13575,'22141',18537,18538,4,0),(13576,'22142',18539,18540,4,0),(13577,'22143',18145,18146,4,0),(13578,'22144',18411,18412,4,0),(13579,'22145',18259,18260,4,0),(13580,'22146',19171,19172,4,0),(13581,'22147',18147,18148,4,0),(13582,'22147',18157,18158,4,0),(13583,'22148',18597,18598,4,0),(13584,'22148',18359,18360,4,0),(13585,'22149',18165,18166,4,0),(13586,'22149',18361,18362,4,0),(13587,'22150',18297,18298,4,0),(13588,'22160',18831,18832,4,0),(13589,'22161',18833,18834,4,0),(13590,'22162',18835,18836,4,0),(13591,'22190',19335,19336,4,0),(13592,'22191',19069,19070,4,0),(13593,'22192',18913,18914,4,0),(13594,'22192',19253,19254,4,0),(13595,'22193',18767,18768,4,0),(13596,'22193',18965,18966,4,0),(13597,'22194',18593,18594,4,0),(13598,'22194',18753,18754,4,0),(13599,'22194',18233,18234,4,0),(13600,'22194',18341,18342,4,0),(13601,'22195',18755,18756,4,0),(13602,'22196',18757,18758,4,0),(13603,'22196',18933,18934,4,0),(13604,'22197',18759,18760,4,0),(13605,'22200',19183,19184,4,0),(13606,'22210',18723,18724,4,0),(13607,'22211',18725,18726,4,0),(13608,'22212',18849,18850,4,0),(13609,'22212',18527,18528,4,0),(13610,'22212',18207,18208,4,0),(13611,'22213',18857,18858,4,0),(13612,'22213',19185,19186,4,0),(13613,'22214',18851,18852,4,0),(13614,'22215',19187,19188,4,0),(13615,'22215',18559,18560,4,0),(13616,'22215',19005,19006,4,0),(13617,'22216',19039,19040,4,0),(13618,'22216',18859,18860,4,0),(13619,'22220',18191,18192,4,0),(13620,'22221',19189,19190,4,0),(13621,'22222',18543,18544,4,0),(13622,'22223',19297,19298,4,0),(13623,'22225',18675,18676,4,0),(13624,'22230',19205,19206,4,0),(13625,'22231',19347,19348,4,0),(13626,'22232',18975,18976,4,0),(13627,'22233',18585,18586,4,0),(13628,'22234',18337,18338,4,0),(13629,'22240',19241,19242,4,0),(13630,'22250',18861,18862,4,0),(13631,'22251',18229,18230,4,0),(13632,'22252',19073,19074,4,0),(13633,'22253',19209,19210,4,0),(13634,'22254',19269,19270,4,0),(13635,'22255',19289,19290,4,0),(13636,'22255',18351,18352,4,0),(13637,'22255',18203,18204,4,0),(13638,'22255',18677,18678,4,0),(13639,'22255',18253,18254,4,0),(13640,'22260',18679,18680,4,0),(13641,'22268',18681,18682,4,0),(13642,'22268',19293,19294,4,0),(13643,'22268',19029,19030,4,0),(13644,'22268',18853,18854,4,0),(13645,'22269',18255,18256,4,0),(13646,'22269',18683,18684,4,0),(13647,'22270',18241,18242,4,0),(13648,'22280',18707,18708,4,0),(13649,'22281',18709,18710,4,0),(13650,'22282',18211,18212,4,0),(13651,'22283',18213,18214,4,0),(13652,'22283',18243,18244,4,0),(13653,'22300',18345,18346,4,0),(13654,'22310',18555,18556,4,0),(13655,'22311',19017,19018,4,0),(13656,'22311',18313,18314,4,0),(13657,'22311',18317,18318,4,0),(13658,'22312',18717,18718,4,0),(13659,'22312',18601,18602,4,0),(13660,'22313',18575,18576,4,0),(13661,'22313',19043,19044,4,0),(13662,'22313',19173,19174,4,0),(13663,'22314',19115,19116,4,0),(13664,'22314',19121,19122,4,0),(13665,'22315',18347,18348,4,0),(13666,'22315',18719,18720,4,0),(13667,'22320',18363,18364,4,0),(13668,'22320',18955,18956,4,0),(13669,'22330',18167,18168,4,0),(13670,'22336',18169,18170,4,0),(13671,'22336',18815,18816,4,0),(13672,'22337',18651,18652,4,0),(13673,'22337',18985,18986,4,0),(13674,'22337',18817,18818,4,0),(13675,'22338',18607,18608,4,0),(13676,'22339',18171,18172,4,0),(13677,'22340',18457,18458,4,0),(13678,'22347',18459,18460,4,0),(13679,'22348',18461,18462,4,0),(13680,'22349',18783,18784,4,0),(13681,'22349',18463,18464,4,0),(13682,'22349',18173,18174,4,0),(13683,'22350',18401,18402,4,0),(13684,'22351',18403,18404,4,0),(13685,'22360',18841,18842,4,0),(13686,'22361',18901,18902,4,0),(13687,'22362',19059,19060,4,0),(13688,'22363',19061,19062,4,0),(13689,'22364',19245,19246,4,0),(13690,'22365',18405,18406,4,0),(13691,'22365',19247,19248,4,0),(13692,'22366',19249,19250,4,0),(13693,'22366',19033,19034,4,0),(13694,'22367',18671,18672,4,0),(13695,'22367',19143,19144,4,0),(13696,'22367',19035,19036,4,0),(13697,'22370',18477,18478,4,0),(13698,'22371',18637,18638,4,0),(13699,'22372',18479,18480,4,0),(13700,'22372',18639,18640,4,0),(13701,'22373',18481,18482,4,0),(13702,'22373',18641,18642,4,0),(13703,'22374',18483,18484,4,0),(13704,'22375',18633,18634,4,0),(13705,'22375',18485,18486,4,0),(13706,'22376',19261,19262,4,0),(13707,'22377',19263,19264,4,0),(13708,'22378',19265,19266,4,0),(13709,'22390',18603,18604,4,0),(13710,'22391',19193,19194,4,0),(13711,'22392',18151,18152,4,0),(13712,'22392',19077,19078,4,0),(13713,'22393',18957,18958,4,0),(13714,'22393',18153,18154,4,0),(13715,'22394',18819,18820,4,0),(13716,'22394',18175,18176,4,0),(13717,'22395',18177,18178,4,0),(13718,'22400',17773,17774,4,0),(13719,'22400',18947,18948,4,0),(13720,'22410',18225,18226,4,0),(13721,'22411',19147,19148,4,0),(13722,'22412',19149,19150,4,0),(13723,'22413',19151,19152,4,0),(13724,'22414',18949,18950,4,0),(13725,'22415',18771,18772,4,0),(13726,'22415',18951,18952,4,0),(13727,'22416',18237,18238,4,0),(13728,'22416',19065,19066,4,0),(13729,'22417',18247,18248,4,0),(13730,'22417',18645,18646,4,0),(13731,'22420',18249,18250,4,0),(13732,'22421',18309,18310,4,0),(13733,'22422',18647,18648,4,0),(13734,'22423',18619,18620,4,0),(13735,'22424',18615,18616,4,0),(13736,'22430',18687,18688,4,0),(13737,'22435',18827,18828,4,0),(13738,'22436',18869,18870,4,0),(13739,'22436',18689,18690,4,0),(13740,'22437',18691,18692,4,0),(13741,'22438',18821,18822,4,0),(13742,'22438',18693,18694,4,0),(13743,'22439',19195,19196,4,0),(13744,'22439',18971,18972,4,0),(13745,'22440',18383,18384,4,0),(13746,'22449',18385,18386,4,0),(13747,'22450',18497,18498,4,0),(13748,'22450',18653,18654,4,0),(13749,'22451',18499,18500,4,0),(13750,'22451',18655,18656,4,0),(13751,'22451',19273,19274,4,0),(13752,'22451',19301,19302,4,0),(13753,'22451',19315,19316,4,0),(13754,'22452',18823,18824,4,0),(13755,'22452',18657,18658,4,0),(13756,'22460',19021,19022,4,0),(13757,'22460',19177,19178,4,0),(13758,'22461',18695,18696,4,0),(13759,'22461',18465,18466,4,0),(13760,'22461',19179,19180,4,0),(13761,'22462',18775,18776,4,0),(13762,'22462',18659,18660,4,0),(13763,'22463',19199,19200,4,0),(13764,'22464',19201,19202,4,0),(13765,'22465',18547,18548,4,0),(13766,'22465',18589,18590,4,0),(13767,'22466',18549,18550,4,0),(13768,'22466',18441,18442,4,0),(13769,'22467',19339,19340,4,0),(13770,'22467',18551,18552,4,0),(13771,'22467',19217,19218,4,0),(13772,'22467',19107,19108,4,0),(13773,'22468',19109,19110,4,0),(13774,'22469',19111,19112,4,0),(13775,'22469',18387,18388,4,0),(13776,'22470',18443,18444,4,0),(13777,'22471',18891,18892,4,0),(13778,'22472',18893,18894,4,0),(13779,'22473',18895,18896,4,0),(13780,'22473',18937,18938,4,0),(13781,'22474',18939,18940,4,0),(13782,'22474',18897,18898,4,0),(13783,'22480',18697,18698,4,0),(13784,'22480',18531,18532,4,0),(13785,'22481',18699,18700,4,0),(13786,'22482',18777,18778,4,0),(13787,'22483',19317,19318,4,0),(13788,'22483',19275,19276,4,0),(13789,'22483',18779,18780,4,0),(13790,'22484',18391,18392,4,0),(13791,'22484',19277,19278,4,0),(13792,'22485',18393,18394,4,0),(13793,'22486',18941,18942,4,0),(13794,'22486',18469,18470,4,0),(13795,'22487',18943,18944,4,0),(13796,'22500',18437,18438,4,0),(13797,'22510',18431,18432,4,0),(13798,'22511',18433,18434,4,0),(13799,'22512',19139,19140,4,0),(13800,'22513',19009,19010,4,0),(13801,'22514',19011,19012,4,0),(13802,'22520',18663,18664,4,0),(13803,'22528',19321,19322,4,0),(13804,'22529',18665,18666,4,0),(13805,'22530',19361,19362,4,0),(13806,'22531',18979,18980,4,0),(13807,'22532',18981,18982,4,0),(13808,'22533',18369,18370,4,0),(13809,'22534',18187,18188,4,0),(13810,'22535',18611,18612,4,0),(13811,'22536',18371,18372,4,0),(13812,'22540',18263,18264,4,0),(13813,'22549',19233,19234,4,0),(13814,'22549',19325,19326,4,0),(13815,'22549',18373,18374,4,0),(13816,'22550',19235,19236,4,0),(13817,'22558',18195,18196,4,0),(13818,'22559',19237,19238,4,0),(13819,'22560',18221,18222,4,0),(13820,'22569',18321,18322,4,0),(13821,'22569',19013,19014,4,0),(13822,'22570',18579,18580,4,0),(13823,'22570',18503,18504,4,0),(13824,'22571',18333,18334,4,0),(13825,'22572',18581,18582,4,0),(13826,'22572',18623,18624,4,0),(13827,'22580',18377,18378,4,0),(13828,'22583',19229,19230,4,0),(13829,'22583',24481,24482,4,0),(13830,'22583',18289,18290,4,0),(13831,'22584',19047,19048,4,0),(13832,'22584',19329,19330,4,0),(13833,'22584',24483,24484,4,0),(13834,'22585',18365,18366,4,0),(13835,'22585',18667,18668,4,0),(13836,'22585',19117,19118,4,0),(13837,'22585',19257,19258,4,0),(13838,'22585',19331,19332,4,0),(13839,'22585',18569,18570,4,0),(13840,'22586',18887,18888,4,0),(13841,'22587',18571,18572,4,0),(13842,'22587',18533,18534,4,0),(13843,'22587',18927,18928,4,0),(13844,'22588',18701,18702,4,0),(13845,'22589',18379,18380,4,0),(13846,'22589',18625,18626,4,0),(13847,'22590',19281,19282,4,0),(13848,'22591',18517,18518,4,0),(13849,'22592',18997,18998,4,0),(13850,'22600',19079,19080,4,0),(13851,'22609',19081,19082,4,0),(13852,'22610',19083,19084,4,0),(13853,'22610',19351,19352,4,0),(13854,'22611',19353,19354,4,0),(13855,'22612',19085,19086,4,0),(13856,'22613',19087,19088,4,0),(13857,'22613',18415,18416,4,0),(13858,'22620',18785,18786,4,0),(13859,'22620',19089,19090,4,0),(13860,'22621',18787,18788,4,0),(13861,'22621',19091,19092,4,0),(13862,'22622',18967,18968,4,0),(13863,'22622',19093,19094,4,0),(13864,'22623',19095,19096,4,0),(13865,'22624',18489,18490,4,0),(13866,'22625',18491,18492,4,0),(13867,'22630',18417,18418,4,0),(13868,'22636',19097,19098,4,0),(13869,'22636',18419,18420,4,0),(13870,'22637',18421,18422,4,0),(13871,'22638',18423,18424,4,0),(13872,'22639',18425,18426,4,0),(13873,'22639',19357,19358,4,0),(13874,'22640',19129,19130,4,0),(13875,'22650',18989,18990,4,0),(13876,'22660',19131,19132,4,0),(13877,'22661',18991,18992,4,0),(13878,'22662',18713,18714,4,0),(13879,'22662',18993,18994,4,0),(13880,'22663',19133,19134,4,0),(13881,'22664',19135,19136,4,0),(13882,'22665',18427,18428,4,0),(13883,'22666',19099,19100,4,0),(13884,'22700',18789,18790,4,0),(13885,'22710',18563,18564,4,0),(13886,'22710',18791,18792,4,0),(13887,'22711',18793,18794,4,0),(13888,'22712',18795,18796,4,0),(13889,'22713',18797,18798,4,0),(13890,'22714',18799,18800,4,0),(13891,'22714',19101,19102,4,0),(13892,'22715',18801,18802,4,0),(13893,'22720',19305,19306,4,0),(13894,'22725',18275,18276,4,0),(13895,'22728',18277,18278,4,0),(13896,'22729',18629,18630,4,0),(13897,'22730',18285,18286,4,0),(13898,'22731',18811,18812,4,0),(13899,'22732',19307,19308,4,0),(13900,'22740',19309,19310,4,0),(13901,'22750',19051,19052,4,0),(13902,'22751',19053,19054,4,0),(13903,'22751',18325,18326,4,0),(13904,'22752',19159,19160,4,0),(13905,'22753',19055,19056,4,0),(13906,'22760',18327,18328,4,0),(13907,'22761',18329,18330,4,0),(13908,'22770',18507,18508,4,0),(13909,'22771',18509,18510,4,0),(13910,'22772',18511,18512,4,0),(13911,'22773',18513,18514,4,0),(13912,'22790',19311,19312,4,0),(13913,'22791',19161,19162,4,0),(13914,'22791',19165,19166,4,0),(13915,'22792',19167,19168,4,0),(13916,'22800',18301,18302,4,0),(13917,'22807',18303,18304,4,0),(13918,'22807',18447,18448,4,0),(13919,'22808',44111,44112,4,0),(13920,'22808',18871,18872,4,0),(13921,'22808',18161,18162,4,0),(13922,'22809',18917,18918,4,0),(13923,'22809',18305,18306,4,0),(13924,'22809',18905,18906,4,0),(13925,'22810',18837,18838,4,0),(13926,'22810',18921,18922,4,0),(13927,'22811',18923,18924,4,0),(13928,'22820',18873,18874,4,0),(13929,'22821',18875,18876,4,0),(13930,'22822',18877,18878,4,0),(13931,'22830',18879,18880,4,0),(13932,'22830',18493,18494,4,0),(13933,'22830',18803,18804,4,0),(13934,'22830',18703,18704,4,0),(13935,'22850',19103,19104,4,0),(13936,'22850',18805,18806,4,0),(13937,'22860',18565,18566,4,0),(13938,'22860',18181,18182,4,0),(13939,'22860',18473,18474,4,0),(13940,'22870',19343,19344,4,0),(13941,'22880',18521,18522,4,0),(13942,'22888',18523,18524,4,0),(13943,'22889',18807,18808,4,0),(13944,'22889',18183,18184,4,0),(13945,'23001',19633,19634,4,0),(13946,'23002',19635,19636,4,0),(13947,'23003',19637,19638,4,0),(13948,'23004',19639,19640,4,0),(13949,'23005',19641,19642,4,0),(13950,'23006',19643,19644,4,0),(13951,'23007',19645,19646,4,0),(13952,'23008',19647,19648,4,0),(13953,'23009',19649,19650,4,0),(13954,'23100',19725,19726,4,0),(13955,'23110',19775,19776,4,0),(13956,'23120',19489,19490,4,0),(13957,'23130',19495,19496,4,0),(13958,'23140',19759,19760,4,0),(13959,'23150',19905,19906,4,0),(13960,'23159',19907,19908,4,0),(13961,'23160',19715,19716,4,0),(13962,'23170',19679,19680,4,0),(13963,'23180',19577,19578,4,0),(13964,'23190',19777,19778,4,0),(13965,'23191',19507,19508,4,0),(13966,'23192',19509,19510,4,0),(13967,'23193',19491,19492,4,0),(13968,'23194',19651,19652,4,0),(13969,'23196',19653,19654,4,0),(13970,'23196',19909,19910,4,0),(13971,'23200',19671,19672,4,0),(13972,'23210',19585,19586,4,0),(13973,'23211',19503,19504,4,0),(13974,'23212',19673,19674,4,0),(13975,'23213',19815,19816,4,0),(13976,'23214',19675,19676,4,0),(13977,'23214',19449,19450,4,0),(13978,'23215',19399,19400,4,0),(13979,'23220',19913,19914,4,0),(13980,'23230',19421,19422,4,0),(13981,'23239',19423,19424,4,0),(13982,'23240',19755,19756,4,0),(13983,'23250',19839,19840,4,0),(13984,'23260',19513,19514,4,0),(13985,'23264',19537,19538,4,0),(13986,'23265',19747,19748,4,0),(13987,'23266',19749,19750,4,0),(13988,'23267',19751,19752,4,0),(13989,'23268',19539,19540,4,0),(13990,'23269',19541,19542,4,0),(13991,'23270',19863,19864,4,0),(13992,'23280',19455,19456,4,0),(13993,'23289',19427,19428,4,0),(13994,'23289',19457,19458,4,0),(13995,'23290',19823,19824,4,0),(13996,'23291',19825,19826,4,0),(13997,'23292',19597,19598,4,0),(13998,'23293',19847,19848,4,0),(13999,'23293',19599,19600,4,0),(14000,'23294',19827,19828,4,0),(14001,'23294',19849,19850,4,0),(14002,'23295',19851,19852,4,0),(14003,'23296',19829,19830,4,0),(14004,'23297',19831,19832,4,0),(14005,'23298',19833,19834,4,0),(14006,'23300',19921,19922,4,0),(14007,'23310',19923,19924,4,0),(14008,'23311',19843,19844,4,0),(14009,'23312',19925,19926,4,0),(14010,'23314',19893,19894,4,0),(14011,'23315',19927,19928,4,0),(14012,'23320',19881,19882,4,0),(14013,'23330',19937,19938,4,0),(14014,'23337',19601,19602,4,0),(14015,'23338',19623,19624,4,0),(14016,'23339',19939,19940,4,0),(14017,'23340',19853,19854,4,0),(14018,'23340',19429,19430,4,0),(14019,'23350',19791,19792,4,0),(14020,'23359',19793,19794,4,0),(14021,'23360',19689,19690,4,0),(14022,'23369',19691,19692,4,0),(14023,'23370',19763,19764,4,0),(14024,'23379',19855,19856,4,0),(14025,'23380',19859,19860,4,0),(14026,'23390',19477,19478,4,0),(14027,'23391',19889,19890,4,0),(14028,'23392',19581,19582,4,0),(14029,'23393',19947,19948,4,0),(14030,'23400',19895,19896,4,0),(14031,'23410',19811,19812,4,0),(14032,'23411',19433,19434,4,0),(14033,'23412',19805,19806,4,0),(14034,'23413',19897,19898,4,0),(14035,'23420',19499,19500,4,0),(14036,'23430',19807,19808,4,0),(14037,'23440',19435,19436,4,0),(14038,'23450',19617,19618,4,0),(14039,'23460',19767,19768,4,0),(14040,'23468',19769,19770,4,0),(14041,'23469',19899,19900,4,0),(14042,'23469',19527,19528,4,0),(14043,'23470',19545,19546,4,0),(14044,'23470',19529,19530,4,0),(14045,'23476',19683,19684,4,0),(14046,'23477',19547,19548,4,0),(14047,'23478',19835,19836,4,0),(14048,'23479',19685,19686,4,0),(14049,'23479',19531,19532,4,0),(14050,'23480',19797,19798,4,0),(14051,'23485',19533,19534,4,0),(14052,'23485',19785,19786,4,0),(14053,'23485',19771,19772,4,0),(14054,'23486',19787,19788,4,0),(14055,'23486',19593,19594,4,0),(14056,'23487',19613,19614,4,0),(14057,'23488',19799,19800,4,0),(14058,'23488',19561,19562,4,0),(14059,'23489',19801,19802,4,0),(14060,'23490',19703,19704,4,0),(14061,'23490',19619,19620,4,0),(14062,'23499',19915,19916,4,0),(14063,'23500',19667,19668,4,0),(14064,'23509',19901,19902,4,0),(14065,'23510',19867,19868,4,0),(14066,'23519',19719,19720,4,0),(14067,'23519',19869,19870,4,0),(14068,'23520',19467,19468,4,0),(14069,'23528',19721,19722,4,0),(14070,'23529',19727,19728,4,0),(14071,'23529',19437,19438,4,0),(14072,'23529',19469,19470,4,0),(14073,'23529',19951,19952,4,0),(14074,'23530',19663,19664,4,0),(14075,'23537',19461,19462,4,0),(14076,'23538',19367,19368,4,0),(14077,'23539',19439,19440,4,0),(14078,'23539',19463,19464,4,0),(14079,'23540',19885,19886,4,0),(14080,'23550',19481,19482,4,0),(14081,'23560',19607,19608,4,0),(14082,'23568',19473,19474,4,0),(14083,'23569',19609,19610,4,0),(14084,'23569',19603,19604,4,0),(14085,'23590',19483,19484,4,0),(14086,'23591',19699,19700,4,0),(14087,'23591',19485,19486,4,0),(14088,'23600',19735,19736,4,0),(14089,'23610',19571,19572,4,0),(14090,'23611',19589,19590,4,0),(14091,'23612',19819,19820,4,0),(14092,'23614',19737,19738,4,0),(14093,'23615',19739,19740,4,0),(14094,'23616',19573,19574,4,0),(14095,'23620',19743,19744,4,0),(14096,'23628',19555,19556,4,0),(14097,'23628',19523,19524,4,0),(14098,'23629',19627,19628,4,0),(14099,'23630',19953,19954,4,0),(14100,'23638',19955,19956,4,0),(14101,'23639',19655,19656,4,0),(14102,'23640',19873,19874,4,0),(14103,'23650',19877,19878,4,0),(14104,'23657',19551,19552,4,0),(14105,'23658',19659,19660,4,0),(14106,'23659',19943,19944,4,0),(14107,'23660',19391,19392,4,0),(14108,'23669',19393,19394,4,0),(14109,'23670',19517,19518,4,0),(14110,'23680',19371,19372,4,0),(14111,'23684',19373,19374,4,0),(14112,'23685',19375,19376,4,0),(14113,'23685',19395,19396,4,0),(14114,'23686',19377,19378,4,0),(14115,'23686',19563,19564,4,0),(14116,'23687',19379,19380,4,0),(14117,'23688',19381,19382,4,0),(14118,'23689',19383,19384,4,0),(14119,'23690',19565,19566,4,0),(14120,'23691',19385,19386,4,0),(14121,'23691',19567,19568,4,0),(14122,'23692',19387,19388,4,0),(14123,'23693',19519,19520,4,0),(14124,'23700',19705,19706,4,0),(14125,'23710',19445,19446,4,0),(14126,'23711',19451,19452,4,0),(14127,'23712',19629,19630,4,0),(14128,'23713',19917,19918,4,0),(14129,'23713',19707,19708,4,0),(14130,'23720',19557,19558,4,0),(14131,'23730',19931,19932,4,0),(14132,'23740',19403,19404,4,0),(14133,'23746',19695,19696,4,0),(14134,'23747',19441,19442,4,0),(14135,'23747',19405,19406,4,0),(14136,'23748',19407,19408,4,0),(14137,'23749',19409,19410,4,0),(14138,'23749',19933,19934,4,0),(14139,'23750',19417,19418,4,0),(14140,'23760',19413,19414,4,0),(14141,'23770',19731,19732,4,0),(14142,'23780',19711,19712,4,0),(14143,'23790',19781,19782,4,0),(14144,'24001',22327,22328,4,0),(14145,'24002',22329,22330,4,0),(14146,'24003',22331,22332,4,0),(14147,'24003',22521,22522,4,0),(14148,'24004',22333,22334,4,0),(14149,'24005',22335,22336,4,0),(14150,'24006',22337,22338,4,0),(14151,'24007',22339,22340,4,0),(14152,'24008',22341,22342,4,0),(14153,'24009',22343,22344,4,0),(14154,'24009',22695,22696,4,0),(14155,'24010',22345,22346,4,0),(14156,'24010',22697,22698,4,0),(14157,'24100',23103,23104,4,0),(14158,'24110',23105,23106,4,0),(14159,'24111',23107,23108,4,0),(14160,'24112',23109,23110,4,0),(14161,'24113',23111,23112,4,0),(14162,'24114',23113,23114,4,0),(14163,'24120',22845,22846,4,0),(14164,'24121',22823,22824,4,0),(14165,'24122',22111,22112,4,0),(14166,'24123',21971,21972,4,0),(14167,'24124',22775,22776,4,0),(14168,'24124',22847,22848,4,0),(14169,'24125',22849,22850,4,0),(14170,'24126',22643,22644,4,0),(14171,'24126',22851,22852,4,0),(14172,'24127',22645,22646,4,0),(14173,'24127',23011,23012,4,0),(14174,'24130',22425,22426,4,0),(14175,'24131',22647,22648,4,0),(14176,'24132',22649,22650,4,0),(14177,'24133',22651,22652,4,0),(14178,'24133',22427,22428,4,0),(14179,'24134',22653,22654,4,0),(14180,'24134',22429,22430,4,0),(14181,'24135',22431,22432,4,0),(14182,'24136',22433,22434,4,0),(14183,'24137',22435,22436,4,0),(14184,'24138',23115,23116,4,0),(14185,'24139',23117,23118,4,0),(14186,'24140',23119,23120,4,0),(14187,'24141',21909,21910,4,0),(14188,'24142',21911,21912,4,0),(14189,'24143',22713,22714,4,0),(14190,'24143',21913,21914,4,0),(14191,'24144',22715,22716,4,0),(14192,'24145',22717,22718,4,0),(14193,'24145',22829,22830,4,0),(14194,'24146',22831,22832,4,0),(14195,'24148',22357,22358,4,0),(14196,'24149',22359,22360,4,0),(14197,'24150',22145,22146,4,0),(14198,'24150',22747,22748,4,0),(14199,'24150',23091,23092,4,0),(14200,'24151',22749,22750,4,0),(14201,'24152',23081,23082,4,0),(14202,'24153',23093,23094,4,0),(14203,'24154',23095,23096,4,0),(14204,'24155',23097,23098,4,0),(14205,'24156',22935,22936,4,0),(14206,'24160',22205,22206,4,0),(14207,'24161',22207,22208,4,0),(14208,'24161',22125,22126,4,0),(14209,'24162',23265,23266,4,0),(14210,'24163',23099,23100,4,0),(14211,'24163',23267,23268,4,0),(14212,'24164',22209,22210,4,0),(14213,'24165',22211,22212,4,0),(14214,'24166',22213,22214,4,0),(14215,'24170',21757,21758,4,0),(14216,'24170',22029,22030,4,0),(14217,'24171',23275,23276,4,0),(14218,'24171',21759,21760,4,0),(14219,'24172',23293,23294,4,0),(14220,'24172',22021,22022,4,0),(14221,'24172',23205,23206,4,0),(14222,'24174',22023,22024,4,0),(14223,'24175',23207,23208,4,0),(14224,'24190',22347,22348,4,0),(14225,'24190',22699,22700,4,0),(14226,'24191',22701,22702,4,0),(14227,'24192',22349,22350,4,0),(14228,'24192',22455,22456,4,0),(14229,'24193',23243,23244,4,0),(14230,'24194',22817,22818,4,0),(14231,'24195',22937,22938,4,0),(14232,'24195',23245,23246,4,0),(14233,'24196',22825,22826,4,0),(14234,'24197',23247,23248,4,0),(14235,'24198',23031,23032,4,0),(14236,'24199',23281,23282,4,0),(14237,'24200',23021,23022,4,0),(14238,'24205',23023,23024,4,0),(14239,'24206',23125,23126,4,0),(14240,'24206',22959,22960,4,0),(14241,'24206',21983,21984,4,0),(14242,'24206',22185,22186,4,0),(14243,'24207',23127,23128,4,0),(14244,'24207',22415,22416,4,0),(14245,'24208',22469,22470,4,0),(14246,'24209',22223,22224,4,0),(14247,'24209',22471,22472,4,0),(14248,'24210',22383,22384,4,0),(14249,'24212',21899,21900,4,0),(14250,'24217',22389,22390,4,0),(14251,'24218',22971,22972,4,0),(14252,'24218',22385,22386,4,0),(14253,'24219',23269,23270,4,0),(14254,'24220',22979,22980,4,0),(14255,'24221',21929,21930,4,0),(14256,'24222',23231,23232,4,0),(14257,'24223',22401,22402,4,0),(14258,'24223',22473,22474,4,0),(14259,'24223',22181,22182,4,0),(14260,'24224',21905,21906,4,0),(14261,'24224',22121,22122,4,0),(14262,'24224',22475,22476,4,0),(14263,'24225',22083,22084,4,0),(14264,'24225',23221,23222,4,0),(14265,'24225',21933,21934,4,0),(14266,'24226',23271,23272,4,0),(14267,'24226',23283,23284,4,0),(14268,'24227',22939,22940,4,0),(14269,'24228',22941,22942,4,0),(14270,'24230',23015,23016,4,0),(14271,'24231',22041,22042,4,0),(14272,'24231',22457,22458,4,0),(14273,'24232',21765,21766,4,0),(14274,'24233',21767,21768,4,0),(14275,'24233',23169,23170,4,0),(14276,'24234',22319,22320,4,0),(14277,'24234',23171,23172,4,0),(14278,'24235',23235,23236,4,0),(14279,'24236',23237,23238,4,0),(14280,'24237',22733,22734,4,0),(14281,'24237',22855,22856,4,0),(14282,'24237',23135,23136,4,0),(14283,'24238',21747,21748,4,0),(14284,'24238',23175,23176,4,0),(14285,'24239',22053,22054,4,0),(14286,'24240',22791,22792,4,0),(14287,'24248',22925,22926,4,0),(14288,'24248',22311,22312,4,0),(14289,'24249',21823,21824,4,0),(14290,'24249',22517,22518,4,0),(14291,'24249',23301,23302,4,0),(14292,'24249',22313,22314,4,0),(14293,'24250',22043,22044,4,0),(14294,'24250',23017,23018,4,0),(14295,'24251',22459,22460,4,0),(14296,'24251',22045,22046,4,0),(14297,'24251',21769,21770,4,0),(14298,'24252',22737,22738,4,0),(14299,'24252',21825,21826,4,0),(14300,'24252',22927,22928,4,0),(14301,'24253',22945,22946,4,0),(14302,'24257',21847,21848,4,0),(14303,'24270',21965,21966,4,0),(14304,'24271',22353,22354,4,0),(14305,'24272',22057,22058,4,0),(14306,'24273',22323,22324,4,0),(14307,'24273',22059,22060,4,0),(14308,'24274',22657,22658,4,0),(14309,'24275',22659,22660,4,0),(14310,'24275',22777,22778,4,0),(14311,'24276',22779,22780,4,0),(14312,'24277',22781,22782,4,0),(14313,'24280',21807,21808,4,0),(14314,'24281',21809,21810,4,0),(14315,'24282',22703,22704,4,0),(14316,'24282',23033,23034,4,0),(14317,'24283',21967,21968,4,0),(14318,'24284',22919,22920,4,0),(14319,'24285',22603,22604,4,0),(14320,'24285',22921,22922,4,0),(14321,'24285',21811,21812,4,0),(14322,'24286',22227,22228,4,0),(14323,'24287',23259,23260,4,0),(14324,'24287',21813,21814,4,0),(14325,'24288',23261,23262,4,0),(14326,'24288',23251,23252,4,0),(14327,'24290',22761,22762,4,0),(14328,'24291',22397,22398,4,0),(14329,'24292',23039,23040,4,0),(14330,'24293',22247,22248,4,0),(14331,'24294',22201,22202,4,0),(14332,'24300',21797,21798,4,0),(14333,'24310',22171,22172,4,0),(14334,'24310',22889,22890,4,0),(14335,'24311',22173,22174,4,0),(14336,'24312',22231,22232,4,0),(14337,'24312',22175,22176,4,0),(14338,'24313',22233,22234,4,0),(14339,'24314',22009,22010,4,0),(14340,'24315',22177,22178,4,0),(14341,'24315',21799,21800,4,0),(14342,'24316',22011,22012,4,0),(14343,'24317',22891,22892,4,0),(14344,'24318',21801,21802,4,0),(14345,'24319',21803,21804,4,0),(14346,'24319',22439,22440,4,0),(14347,'24319',22235,22236,4,0),(14348,'24320',22681,22682,4,0),(14349,'24323',23041,23042,4,0),(14350,'24323',22017,22018,4,0),(14351,'24324',23027,23028,4,0),(14352,'24324',22251,22252,4,0),(14353,'24325',21829,21830,4,0),(14354,'24325',22197,22198,4,0),(14355,'24326',22683,22684,4,0),(14356,'24327',23295,23296,4,0),(14357,'24328',22685,22686,4,0),(14358,'24328',23297,23298,4,0),(14359,'24328',22025,22026,4,0),(14360,'24329',22315,22316,4,0),(14361,'24329',22687,22688,4,0),(14362,'24330',22799,22800,4,0),(14363,'24339',22801,22802,4,0),(14364,'24339',23217,23218,4,0),(14365,'24340',22219,22220,4,0),(14366,'24341',22157,22158,4,0),(14367,'24342',21925,21926,4,0),(14368,'24343',22139,22140,4,0),(14369,'24343',22785,22786,4,0),(14370,'24344',22787,22788,4,0),(14371,'24344',23193,23194,4,0),(14372,'24344',23277,23278,4,0),(14373,'24344',22141,22142,4,0),(14374,'24345',22803,22804,4,0),(14375,'24346',23059,23060,4,0),(14376,'24347',22461,22462,4,0),(14377,'24347',23061,23062,4,0),(14378,'24350',23253,23254,4,0),(14379,'24356',21891,21892,4,0),(14380,'24356',23287,23288,4,0),(14381,'24357',21893,21894,4,0),(14382,'24358',23255,23256,4,0),(14383,'24359',22725,22726,4,0),(14384,'24359',22707,22708,4,0),(14385,'24360',23157,23158,4,0),(14386,'24367',23159,23160,4,0),(14387,'24368',23161,23162,4,0),(14388,'24369',23163,23164,4,0),(14389,'24370',22893,22894,4,0),(14390,'24374',22237,22238,4,0),(14391,'24374',22895,22896,4,0),(14392,'24375',22239,22240,4,0),(14393,'24376',22241,22242,4,0),(14394,'24377',22243,22244,4,0),(14395,'24378',22897,22898,4,0),(14396,'24379',22899,22900,4,0),(14397,'24379',23165,23166,4,0),(14398,'24380',22589,22590,4,0),(14399,'24384',22591,22592,4,0),(14400,'24385',22593,22594,4,0),(14401,'24386',22595,22596,4,0),(14402,'24387',22597,22598,4,0),(14403,'24388',21817,21818,4,0),(14404,'24389',21819,21820,4,0),(14405,'24389',22599,22600,4,0),(14406,'24390',21953,21954,4,0),(14407,'24391',22819,22820,4,0),(14408,'24391',22047,22048,4,0),(14409,'24391',23035,23036,4,0),(14410,'24392',23131,23132,4,0),(14411,'24392',22049,22050,4,0),(14412,'24392',22061,22062,4,0),(14413,'24393',22063,22064,4,0),(14414,'24393',21895,21896,4,0),(14415,'24393',22795,22796,4,0),(14416,'24394',22983,22984,4,0),(14417,'24395',22985,22986,4,0),(14418,'24395',22727,22728,4,0),(14419,'24396',22377,22378,4,0),(14420,'24397',22605,22606,4,0),(14421,'24397',22379,22380,4,0),(14422,'24398',22419,22420,4,0),(14423,'24398',22079,22080,4,0),(14424,'24398',22013,22014,4,0),(14425,'24400',22523,22524,4,0),(14426,'24401',22525,22526,4,0),(14427,'24402',22527,22528,4,0),(14428,'24403',22529,22530,4,0),(14429,'24404',22531,22532,4,0),(14430,'24410',21773,21774,4,0),(14431,'24410',21937,21938,4,0),(14432,'24411',22533,22534,4,0),(14433,'24412',21901,21902,4,0),(14434,'24413',22421,22422,4,0),(14435,'24413',22535,22536,4,0),(14436,'24414',22537,22538,4,0),(14437,'24415',22539,22540,4,0),(14438,'24416',22541,22542,4,0),(14439,'24420',22161,22162,4,0),(14440,'24424',22543,22544,4,0),(14441,'24428',22163,22164,4,0),(14442,'24429',22513,22514,4,0),(14443,'24429',22165,22166,4,0),(14444,'24430',23045,23046,4,0),(14445,'24433',21941,21942,4,0),(14446,'24434',22167,22168,4,0),(14447,'24434',23047,23048,4,0),(14448,'24435',23049,23050,4,0),(14449,'24436',23051,23052,4,0),(14450,'24437',23053,23054,4,0),(14451,'24438',22873,22874,4,0),(14452,'24438',21833,21834,4,0),(14453,'24439',22741,22742,4,0),(14454,'24439',23055,23056,4,0),(14455,'24440',21975,21976,4,0),(14456,'24441',21977,21978,4,0),(14457,'24441',22859,22860,4,0),(14458,'24442',21943,21944,4,0),(14459,'24442',21979,21980,4,0),(14460,'24443',21867,21868,4,0),(14461,'24444',21869,21870,4,0),(14462,'24445',22569,22570,4,0),(14463,'24446',22571,22572,4,0),(14464,'24447',22573,22574,4,0),(14465,'24448',22575,22576,4,0),(14466,'24448',22545,22546,4,0),(14467,'24450',22875,22876,4,0),(14468,'24457',22877,22878,4,0),(14469,'24458',22441,22442,4,0),(14470,'24458',22879,22880,4,0),(14471,'24459',22881,22882,4,0),(14472,'24460',22883,22884,4,0),(14473,'24469',22885,22886,4,0),(14474,'24469',22499,22500,4,0),(14475,'24470',22501,22502,4,0),(14476,'24478',22503,22504,4,0),(14477,'24479',22505,22506,4,0),(14478,'24480',22485,22486,4,0),(14479,'24488',22507,22508,4,0),(14480,'24489',22487,22488,4,0),(14481,'24490',22547,22548,4,0),(14482,'24491',22549,22550,4,0),(14483,'24492',22131,22132,4,0),(14484,'24494',22509,22510,4,0),(14485,'24495',22489,22490,4,0),(14486,'24496',22491,22492,4,0),(14487,'24497',22493,22494,4,0),(14488,'24498',22495,22496,4,0),(14489,'24500',23139,23140,4,0),(14490,'24510',23141,23142,4,0),(14491,'24511',23143,23144,4,0),(14492,'24512',23145,23146,4,0),(14493,'24512',13213,13214,4,0),(14494,'24513',23147,23148,4,0),(14495,'24514',22087,22088,4,0),(14496,'24515',22089,22090,4,0),(14497,'24516',23149,23150,4,0),(14498,'24516',22091,22092,4,0),(14499,'24516',22861,22862,4,0),(14500,'24517',22093,22094,4,0),(14501,'24520',23065,23066,4,0),(14502,'24521',21791,21792,4,0),(14503,'24521',23067,23068,4,0),(14504,'24522',22905,22906,4,0),(14505,'24523',22907,22908,4,0),(14506,'24524',23069,23070,4,0),(14507,'24525',21787,21788,4,0),(14508,'24526',23071,23072,4,0),(14509,'24530',23151,23152,4,0),(14510,'24530',22863,22864,4,0),(14511,'24540',21917,21918,4,0),(14512,'24544',21955,21956,4,0),(14513,'24545',22743,22744,4,0),(14514,'24545',21775,21776,4,0),(14515,'24546',21777,21778,4,0),(14516,'24547',21919,21920,4,0),(14517,'24547',23153,23154,4,0),(14518,'24548',21921,21922,4,0),(14519,'24549',21957,21958,4,0),(14520,'24550',21959,21960,4,0),(14521,'24550',22865,22866,4,0),(14522,'24560',22867,22868,4,0),(14523,'24565',21961,21962,4,0),(14524,'24566',22445,22446,4,0),(14525,'24567',22447,22448,4,0),(14526,'24568',22449,22450,4,0),(14527,'24569',22869,22870,4,0),(14528,'24569',22451,22452,4,0),(14529,'24600',22277,22278,4,0),(14530,'24607',22279,22280,4,0),(14531,'24608',22281,22282,4,0),(14532,'24609',22283,22284,4,0),(14533,'24610',22113,22114,4,0),(14534,'24620',22115,22116,4,0),(14535,'24630',22117,22118,4,0),(14536,'24640',22295,22296,4,0),(14537,'24648',22403,22404,4,0),(14538,'24648',22297,22298,4,0),(14539,'24649',22299,22300,4,0),(14540,'24650',22285,22286,4,0),(14541,'24660',22287,22288,4,0),(14542,'24670',22289,22290,4,0),(14543,'24680',23179,23180,4,0),(14544,'24687',23181,23182,4,0),(14545,'24688',23183,23184,4,0),(14546,'24689',23185,23186,4,0),(14547,'24690',23187,23188,4,0),(14548,'24699',23189,23190,4,0),(14549,'24700',21781,21782,4,0),(14550,'24710',22729,22730,4,0),(14551,'24711',23197,23198,4,0),(14552,'24711',23225,23226,4,0),(14553,'24712',23199,23200,4,0),(14554,'24713',23201,23202,4,0),(14555,'24714',21873,21874,4,0),(14556,'24715',21875,21876,4,0),(14557,'24716',21877,21878,4,0),(14558,'24717',22363,22364,4,0),(14559,'24717',22807,22808,4,0),(14560,'24717',22931,22932,4,0),(14561,'24717',22371,22372,4,0),(14562,'24718',21783,21784,4,0),(14563,'24718',21879,21880,4,0),(14564,'24719',23227,23228,4,0),(14565,'24720',22755,22756,4,0),(14566,'24721',22373,22374,4,0),(14567,'24721',21993,21994,4,0),(14568,'24722',22757,22758,4,0),(14569,'24723',22365,22366,4,0),(14570,'24724',22367,22368,4,0),(14571,'24730',22135,22136,4,0),(14572,'24731',22809,22810,4,0),(14573,'24732',22811,22812,4,0),(14574,'24732',22987,22988,4,0),(14575,'24733',22615,22616,4,0),(14576,'24734',22001,22002,4,0),(14577,'24735',22003,22004,4,0),(14578,'24736',22005,22006,4,0),(14579,'24738',22911,22912,4,0),(14580,'24739',22901,22902,4,0),(14581,'24740',22813,22814,4,0),(14582,'24740',22913,22914,4,0),(14583,'24740',21793,21794,4,0),(14584,'24740',23121,23122,4,0),(14585,'24741',22915,22916,4,0),(14586,'24742',21987,21988,4,0),(14587,'24743',22147,22148,4,0),(14588,'24744',22149,22150,4,0),(14589,'24744',21989,21990,4,0),(14590,'24745',22151,22152,4,0),(14591,'24746',22153,22154,4,0),(14592,'24750',22259,22260,4,0),(14593,'24760',21997,21998,4,0),(14594,'24760',22721,22722,4,0),(14595,'24760',22291,22292,4,0),(14596,'24761',21751,21752,4,0),(14597,'24762',22609,22610,4,0),(14598,'24762',22765,22766,4,0),(14599,'24763',23289,23290,4,0),(14600,'24763',22837,22838,4,0),(14601,'24763',22621,22622,4,0),(14602,'24764',22479,22480,4,0),(14603,'24764',22839,22840,4,0),(14604,'24764',22261,22262,4,0),(14605,'24765',23211,23212,4,0),(14606,'24765',22635,22636,4,0),(14607,'24766',23213,23214,4,0),(14608,'24766',22481,22482,4,0),(14609,'24766',22263,22264,4,0),(14610,'24767',22767,22768,4,0),(14611,'24767',22617,22618,4,0),(14612,'24768',22841,22842,4,0),(14613,'24769',22037,22038,4,0),(14614,'24790',22663,22664,4,0),(14615,'24791',23303,23304,4,0),(14616,'24791',22665,22666,4,0),(14617,'24792',21753,21754,4,0),(14618,'24792',22611,22612,4,0),(14619,'24792',22559,22560,4,0),(14620,'24793',22989,22990,4,0),(14621,'24794',22637,22638,4,0),(14622,'24795',22771,22772,4,0),(14623,'24795',22639,22640,4,0),(14624,'24795',22709,22710,4,0),(14625,'24796',22561,22562,4,0),(14626,'24796',22255,22256,4,0),(14627,'24797',22691,22692,4,0),(14628,'24800',22067,22068,4,0),(14629,'24810',22669,22670,4,0),(14630,'24811',22671,22672,4,0),(14631,'24812',22673,22674,4,0),(14632,'24813',22069,22070,4,0),(14633,'24814',22675,22676,4,0),(14634,'24815',22071,22072,4,0),(14635,'24816',22073,22074,4,0),(14636,'24820',22189,22190,4,0),(14637,'24820',22405,22406,4,0),(14638,'24830',22407,22408,4,0),(14639,'24836',23075,23076,4,0),(14640,'24836',22409,22410,4,0),(14641,'24837',23077,23078,4,0),(14642,'24837',21947,21948,4,0),(14643,'24837',22949,22950,4,0),(14644,'24838',21949,21950,4,0),(14645,'24839',22411,22412,4,0),(14646,'24840',22303,22304,4,0),(14647,'24843',22951,22952,4,0),(14648,'24844',22953,22954,4,0),(14649,'24845',22955,22956,4,0),(14650,'24846',22963,22964,4,0),(14651,'24847',22965,22966,4,0),(14652,'24848',22305,22306,4,0),(14653,'24848',22751,22752,4,0),(14654,'24849',22307,22308,4,0),(14655,'24849',22967,22968,4,0),(14656,'24850',21849,21850,4,0),(14657,'24852',23083,23084,4,0),(14658,'24852',21851,21852,4,0),(14659,'24853',21853,21854,4,0),(14660,'24854',21855,21856,4,0),(14661,'24855',22583,22584,4,0),(14662,'24856',22625,22626,4,0),(14663,'24857',21857,21858,4,0),(14664,'24857',22585,22586,4,0),(14665,'24858',21859,21860,4,0),(14666,'24859',21861,21862,4,0),(14667,'24860',23085,23086,4,0),(14668,'24860',21863,21864,4,0),(14669,'24869',23087,23088,4,0),(14670,'24870',22267,22268,4,0),(14671,'24877',22269,22270,4,0),(14672,'24878',22271,22272,4,0),(14673,'24878',22215,22216,4,0),(14674,'24879',22273,22274,4,0),(14675,'24880',22993,22994,4,0),(14676,'24882',22995,22996,4,0),(14677,'24883',22997,22998,4,0),(14678,'24884',22999,23000,4,0),(14679,'24885',22579,22580,4,0),(14680,'24885',21837,21838,4,0),(14681,'24886',23001,23002,4,0),(14682,'24887',23003,23004,4,0),(14683,'24888',23005,23006,4,0),(14684,'24888',21761,21762,4,0),(14685,'24888',22031,22032,4,0),(14686,'24889',23007,23008,4,0),(14687,'24890',22191,22192,4,0),(14688,'24891',22193,22194,4,0),(14689,'24892',22033,22034,4,0),(14690,'24893',22565,22566,4,0),(14691,'24900',22629,22630,4,0),(14692,'24911',21839,21840,4,0),(14693,'24912',21841,21842,4,0),(14694,'24913',21843,21844,4,0),(14695,'24914',22553,22554,4,0),(14696,'24915',22555,22556,4,0),(14697,'24916',22465,22466,4,0),(14698,'24917',21883,21884,4,0),(14699,'24918',22631,22632,4,0),(14700,'24920',22973,22974,4,0),(14701,'24930',22975,22976,4,0),(14702,'24940',22127,22128,4,0),(14703,'24950',22075,22076,4,0),(14704,'24960',22677,22678,4,0),(14705,'24960',22097,22098,4,0),(14706,'24970',22099,22100,4,0),(14707,'24980',22101,22102,4,0),(14708,'24989',22103,22104,4,0),(14709,'24990',22105,22106,4,0),(14710,'24991',22107,22108,4,0),(14711,'24994',21885,21886,4,0),(14712,'24994',21741,21742,4,0),(14713,'24995',21887,21888,4,0),(14714,'24996',21743,21744,4,0),(14715,'24996',22393,22394,4,0),(14716,'25001',24019,24020,4,0),(14717,'25002',24021,24022,4,0),(14718,'25003',24023,24024,4,0),(14719,'25004',24025,24026,4,0),(14720,'25005',24027,24028,4,0),(14721,'25006',24029,24030,4,0),(14722,'25007',24031,24032,4,0),(14723,'25008',24033,24034,4,0),(14724,'25100',23397,23398,4,0),(14725,'25110',23413,23414,4,0),(14726,'25110',24455,24456,4,0),(14727,'25111',24035,24036,4,0),(14728,'25112',23779,23780,4,0),(14729,'25113',24037,24038,4,0),(14730,'25114',23781,23782,4,0),(14731,'25120',23373,23374,4,0),(14732,'25122',23839,23840,4,0),(14733,'25123',24457,24458,4,0),(14734,'25124',24285,24286,4,0),(14735,'25125',23385,23386,4,0),(14736,'25126',23405,23406,4,0),(14737,'25126',24459,24460,4,0),(14738,'25130',23381,23382,4,0),(14739,'25131',24447,24448,4,0),(14740,'25132',23533,23534,4,0),(14741,'25133',24585,24586,4,0),(14742,'25134',23923,23924,4,0),(14743,'25135',23353,23354,4,0),(14744,'25136',23595,23596,4,0),(14745,'25137',23645,23646,4,0),(14746,'25138',24473,24474,4,0),(14747,'25139',24091,24092,4,0),(14748,'25140',23431,23432,4,0),(14749,'25141',24469,24470,4,0),(14750,'25142',23527,23528,4,0),(14751,'25143',23661,23662,4,0),(14752,'25144',23529,23530,4,0),(14753,'25150',23443,23444,4,0),(14754,'25151',23459,23460,4,0),(14755,'25152',23653,23654,4,0),(14756,'25153',24249,24250,4,0),(14757,'25154',23587,23588,4,0),(14758,'25155',23861,23862,4,0),(14759,'25160',23797,23798,4,0),(14760,'25161',23377,23378,4,0),(14761,'25162',23357,23358,4,0),(14762,'25163',23691,23692,4,0),(14763,'25164',23719,23720,4,0),(14764,'25165',23853,23854,4,0),(14765,'25170',24477,24478,4,0),(14766,'25171',23349,23350,4,0),(14767,'25172',24123,24124,4,0),(14768,'25173',24383,24384,4,0),(14769,'25174',24387,24388,4,0),(14770,'25175',24337,24338,4,0),(14771,'25176',24451,24452,4,0),(14772,'25177',23503,23504,4,0),(14773,'25177',23889,23890,4,0),(14774,'25178',23549,23550,4,0),(14775,'25179',24075,24076,4,0),(14776,'25180',23361,23362,4,0),(14777,'25181',24379,24380,4,0),(14778,'25182',23337,23338,4,0),(14779,'25183',24349,24350,4,0),(14780,'25184',24083,24084,4,0),(14781,'25185',23893,23894,4,0),(14782,'25186',24009,24010,4,0),(14783,'25187',23401,23402,4,0),(14784,'25190',24039,24040,4,0),(14785,'25191',24041,24042,4,0),(14786,'25192',24043,24044,4,0),(14787,'25193',24045,24046,4,0),(14788,'25193',23363,23364,4,0),(14789,'25193',24313,24314,4,0),(14790,'25194',24047,24048,4,0),(14791,'25195',24049,24050,4,0),(14792,'25196',24051,24052,4,0),(14793,'25197',24053,24054,4,0),(14794,'25198',24055,24056,4,0),(14795,'25199',24057,24058,4,0),(14796,'25200',23607,23608,4,0),(14797,'25210',23809,23810,4,0),(14798,'25211',24309,24310,4,0),(14799,'25211',24463,24464,4,0),(14800,'25211',24087,24088,4,0),(14801,'25212',24421,24422,4,0),(14802,'25212',23713,23714,4,0),(14803,'25212',24465,24466,4,0),(14804,'25213',24257,24258,4,0),(14805,'25213',24397,24398,4,0),(14806,'25213',23609,23610,4,0),(14807,'25214',23611,23612,4,0),(14808,'25214',23735,23736,4,0),(14809,'25214',24341,24342,4,0),(14810,'25214',23977,23978,4,0),(14811,'25215',23737,23738,4,0),(14812,'25215',24327,24328,4,0),(14813,'25216',23843,23844,4,0),(14814,'25216',24329,24330,4,0),(14815,'25217',23801,23802,4,0),(14816,'25217',23463,23464,4,0),(14817,'25217',24127,24128,4,0),(14818,'25217',24259,24260,4,0),(14819,'25218',23793,23794,4,0),(14820,'25218',23613,23614,4,0),(14821,'25218',23715,23716,4,0),(14822,'25220',23499,23500,4,0),(14823,'25221',23701,23702,4,0),(14824,'25222',24353,24354,4,0),(14825,'25230',24099,24100,4,0),(14826,'25240',24195,24196,4,0),(14827,'25240',23991,23992,4,0),(14828,'25241',23785,23786,4,0),(14829,'25242',24095,24096,4,0),(14830,'25243',23657,23658,4,0),(14831,'25244',23759,23760,4,0),(14832,'25245',24545,24546,4,0),(14833,'25250',23515,23516,4,0),(14834,'25260',23833,23834,4,0),(14835,'25261',24197,24198,4,0),(14836,'25261',23835,23836,4,0),(14837,'25262',23479,23480,4,0),(14838,'25263',24229,24230,4,0),(14839,'25264',24563,24564,4,0),(14840,'25265',23591,23592,4,0),(14841,'25266',24079,24080,4,0),(14842,'25266',23495,23496,4,0),(14843,'25267',24319,24320,4,0),(14844,'25268',23709,23710,4,0),(14845,'25268',24519,24520,4,0),(14846,'25269',24521,24522,4,0),(14847,'25270',24303,24304,4,0),(14848,'25271',24305,24306,4,0),(14849,'25271',23739,23740,4,0),(14850,'25280',24169,24170,4,0),(14851,'25280',24357,24358,4,0),(14852,'25281',24071,24072,4,0),(14853,'25282',24315,24316,4,0),(14854,'25283',24003,24004,4,0),(14855,'25283',24151,24152,4,0),(14856,'25284',23877,23878,4,0),(14857,'25285',23813,23814,4,0),(14858,'25286',24147,24148,4,0),(14859,'25286',23417,23418,4,0),(14860,'25286',24171,24172,4,0),(14861,'25286',24209,24210,4,0),(14862,'25287',24213,24214,4,0),(14863,'25287',24275,24276,4,0),(14864,'25287',24173,24174,4,0),(14865,'25288',24005,24006,4,0),(14866,'25289',23483,23484,4,0),(14867,'25289',23583,23584,4,0),(14868,'25290',24277,24278,4,0),(14869,'25290',23625,23626,4,0),(14870,'25300',24401,24402,4,0),(14871,'25310',23327,23328,4,0),(14872,'25315',24117,24118,4,0),(14873,'25316',24233,24234,4,0),(14874,'25317',23329,23330,4,0),(14875,'25318',24161,24162,4,0),(14876,'25318',24191,24192,4,0),(14877,'25318',23331,23332,4,0),(14878,'25318',24245,24246,4,0),(14879,'25320',23427,23428,4,0),(14880,'25327',23949,23950,4,0),(14881,'25330',24549,24550,4,0),(14882,'25331',24443,24444,4,0),(14883,'25331',23333,23334,4,0),(14884,'25332',23885,23886,4,0),(14885,'25333',24199,24200,4,0),(14886,'25334',23599,23600,4,0),(14887,'25335',24201,24202,4,0),(14888,'25336',23511,23512,4,0),(14889,'25337',23507,23508,4,0),(14890,'25340',24131,24132,4,0),(14891,'25340',24531,24532,4,0),(14892,'25341',24135,24136,4,0),(14893,'25341',23621,23622,4,0),(14894,'25341',23805,23806,4,0),(14895,'25343',24321,24322,4,0),(14896,'25344',24323,24324,4,0),(14897,'25350',24403,24404,4,0),(14898,'25351',24405,24406,4,0),(14899,'25352',24407,24408,4,0),(14900,'25353',24409,24410,4,0),(14901,'25354',24411,24412,4,0),(14902,'25360',24413,24414,4,0),(14903,'25400',23973,23974,4,0),(14904,'25410',23869,23870,4,0),(14905,'25411',23767,23768,4,0),(14906,'25412',23705,23706,4,0),(14907,'25413',23881,23882,4,0),(14908,'25420',24241,24242,4,0),(14909,'25430',23857,23858,4,0),(14910,'25440',24589,24590,4,0),(14911,'25450',23865,23866,4,0),(14912,'25460',23617,23618,4,0),(14913,'25471',23911,23912,4,0),(14914,'25480',24417,24418,4,0),(14915,'25500',23915,23916,4,0),(14916,'25510',23937,23938,4,0),(14917,'25511',23939,23940,4,0),(14918,'25512',23941,23942,4,0),(14919,'25513',23943,23944,4,0),(14920,'25513',23465,23466,4,0),(14921,'25513',23917,23918,4,0),(14922,'25514',23673,23674,4,0),(14923,'25514',24343,24344,4,0),(14924,'25515',23945,23946,4,0),(14925,'25516',23919,23920,4,0),(14926,'25516',23637,23638,4,0),(14927,'25517',23639,23640,4,0),(14928,'25518',23641,23642,4,0),(14929,'25520',23675,23676,4,0),(14930,'25526',23951,23952,4,0),(14931,'25526',23677,23678,4,0),(14932,'25527',23953,23954,4,0),(14933,'25528',23955,23956,4,0),(14934,'25529',23679,23680,4,0),(14935,'25530',24535,24536,4,0),(14936,'25537',24537,24538,4,0),(14937,'25538',24539,24540,4,0),(14938,'25539',24139,24140,4,0),(14939,'25539',24541,24542,4,0),(14940,'25540',23963,23964,4,0),(14941,'25547',23695,23696,4,0),(14942,'25548',23571,23572,4,0),(14943,'25549',23491,23492,4,0),(14944,'25550',23545,23546,4,0),(14945,'25551',23723,23724,4,0),(14946,'25551',23435,23436,4,0),(14947,'25551',24559,24560,4,0),(14948,'25552',24553,24554,4,0),(14949,'25552',23681,23682,4,0),(14950,'25553',24555,24556,4,0),(14951,'25554',23683,23684,4,0),(14952,'25555',24333,24334,4,0),(14953,'25555',23685,23686,4,0),(14954,'25555',24345,24346,4,0),(14955,'25556',23687,23688,4,0),(14956,'25557',23697,23698,4,0),(14957,'25560',23367,23368,4,0),(14958,'25560',24369,24370,4,0),(14959,'25566',24361,24362,4,0),(14960,'25567',24371,24372,4,0),(14961,'25568',24373,24374,4,0),(14962,'25569',24363,24364,4,0),(14963,'25569',24375,24376,4,0),(14964,'25570',24507,24508,4,0),(14965,'25571',23995,23996,4,0),(14966,'25571',24509,24510,4,0),(14967,'25571',23747,23748,4,0),(14968,'25572',24511,24512,4,0),(14969,'25573',23389,23390,4,0),(14970,'25574',23391,23392,4,0),(14971,'25575',23393,23394,4,0),(14972,'25576',23997,23998,4,0),(14973,'25576',24513,24514,4,0),(14974,'25577',23999,24000,4,0),(14975,'25580',23743,23744,4,0),(14976,'25583',24485,24486,4,0),(14977,'25584',24487,24488,4,0),(14978,'25586',23419,23420,4,0),(14979,'25587',23421,23422,4,0),(14980,'25588',23897,23898,4,0),(14981,'25589',23423,23424,4,0),(14982,'25590',23467,23468,4,0),(14983,'25591',23469,23470,4,0),(14984,'25592',23471,23472,4,0),(14985,'25592',23561,23562,4,0),(14986,'25593',24365,24366,4,0),(14987,'25594',24253,24254,4,0),(14988,'25594',24013,24014,4,0),(14989,'25595',23751,23752,4,0),(14990,'25595',24429,24430,4,0),(14991,'25595',24015,24016,4,0),(14992,'25595',23899,23900,4,0),(14993,'25596',23901,23902,4,0),(14994,'25597',23727,23728,4,0),(14995,'25597',23903,23904,4,0),(14996,'25598',24141,24142,4,0),(14997,'25599',24143,24144,4,0),(14998,'25600',23475,23476,4,0),(14999,'25610',24181,24182,4,0),(15000,'25611',23967,23968,4,0),(15001,'25611',23319,23320,4,0),(15002,'25611',24183,24184,4,0),(15003,'25612',23969,23970,4,0),(15004,'25612',24185,24186,4,0),(15005,'25613',23563,23564,4,0),(15006,'25614',24187,24188,4,0),(15007,'25615',23565,23566,4,0),(15008,'25616',24119,24120,4,0),(15009,'25617',23927,23928,4,0),(15010,'25617',24525,24526,4,0),(15011,'25620',24489,24490,4,0),(15012,'25630',24391,24392,4,0),(15013,'25631',23575,23576,4,0),(15014,'25632',23577,23578,4,0),(15015,'25632',24297,24298,4,0),(15016,'25633',24491,24492,4,0),(15017,'25633',23579,23580,4,0),(15018,'25634',24493,24494,4,0),(15019,'25635',24495,24496,4,0),(15020,'25636',24497,24498,4,0),(15021,'25637',24499,24500,4,0),(15022,'25638',23771,23772,4,0),(15023,'25638',24065,24066,4,0),(15024,'25639',24067,24068,4,0),(15025,'25639',23773,23774,4,0),(15026,'25640',24501,24502,4,0),(15027,'25650',23817,23818,4,0),(15028,'25651',23311,23312,4,0),(15029,'25651',23819,23820,4,0),(15030,'25652',23313,23314,4,0),(15031,'25653',23821,23822,4,0),(15032,'25654',24503,24504,4,0),(15033,'25655',23823,23824,4,0),(15034,'25656',23825,23826,4,0),(15035,'25657',23827,23828,4,0),(15036,'25658',23829,23830,4,0),(15037,'25660',23369,23370,4,0),(15038,'25670',24425,24426,4,0),(15039,'25680',24527,24528,4,0),(15040,'25689',23775,23776,4,0),(15041,'25690',24573,24574,4,0),(15042,'25691',23321,23322,4,0),(15043,'25692',23567,23568,4,0),(15044,'25692',23323,23324,4,0),(15045,'25693',24289,24290,4,0),(15046,'25700',23931,23932,4,0),(15047,'25710',23933,23934,4,0),(15048,'25711',24109,24110,4,0),(15049,'25712',24111,24112,4,0),(15050,'25713',24263,24264,4,0),(15051,'25714',23981,23982,4,0),(15052,'25714',24265,24266,4,0),(15053,'25714',24113,24114,4,0),(15054,'25715',23341,23342,4,0),(15055,'25716',23789,23790,4,0),(15056,'25717',24515,24516,4,0),(15057,'25717',23849,23850,4,0),(15058,'25717',23959,23960,4,0),(15059,'25717',23343,23344,4,0),(15060,'25718',23345,23346,4,0),(15061,'25719',23731,23732,4,0),(15062,'25720',23519,23520,4,0),(15063,'25721',24281,24282,4,0),(15064,'25721',24225,24226,4,0),(15065,'25721',23521,23522,4,0),(15066,'25722',23439,23440,4,0),(15067,'25722',23603,23604,4,0),(15068,'25722',23665,23666,4,0),(15069,'25723',23667,23668,4,0),(15070,'25724',23523,23524,4,0),(15071,'25724',24103,24104,4,0),(15072,'25725',24105,24106,4,0),(15073,'25726',24061,24062,4,0),(15074,'25727',24237,24238,4,0),(15075,'25730',23447,23448,4,0),(15076,'25735',24577,24578,4,0),(15077,'25736',23449,23450,4,0),(15078,'25736',24579,24580,4,0),(15079,'25737',23451,23452,4,0),(15080,'25737',23409,23410,4,0),(15081,'25737',23485,23486,4,0),(15082,'25737',23763,23764,4,0),(15083,'25737',23649,23650,4,0),(15084,'25738',23453,23454,4,0),(15085,'25738',24581,24582,4,0),(15086,'25739',23455,23456,4,0),(15087,'25740',24217,24218,4,0),(15088,'25746',24219,24220,4,0),(15089,'25747',23315,23316,4,0),(15090,'25747',23873,23874,4,0),(15091,'25748',24163,24164,4,0),(15092,'25748',24567,24568,4,0),(15093,'25748',23553,23554,4,0),(15094,'25749',24165,24166,4,0),(15095,'25749',24221,24222,4,0),(15096,'25749',24569,24570,4,0),(15097,'25750',24437,24438,4,0),(15098,'25751',24439,24440,4,0),(15099,'25752',23537,23538,4,0),(15100,'25753',24293,24294,4,0),(15101,'25753',23539,23540,4,0),(15102,'25772',23541,23542,4,0),(15103,'25790',23629,23630,4,0),(15104,'25790',24153,24154,4,0),(15105,'25790',24205,24206,4,0),(15106,'25790',24157,24158,4,0),(15107,'25791',24433,24434,4,0),(15108,'25792',23487,23488,4,0),(15109,'25793',23631,23632,4,0),(15110,'25794',23633,23634,4,0),(15111,'25794',24177,24178,4,0),(15112,'25794',23755,23756,4,0),(15113,'25794',23557,23558,4,0),(15114,'25795',23983,23984,4,0),(15115,'25795',24267,24268,4,0),(15116,'25796',24269,24270,4,0),(15117,'25797',24271,24272,4,0),(15118,'25798',23987,23988,4,0),(15119,'25799',23669,23670,4,0),(15120,'26001',21367,21368,4,0),(15121,'26002',21369,21370,4,0),(15122,'26003',21371,21372,4,0),(15123,'26004',21373,21374,4,0),(15124,'26005',21375,21376,4,0),(15125,'26006',21377,21378,4,0),(15126,'26006',21681,21682,4,0),(15127,'26007',21379,21380,4,0),(15128,'26008',21381,21382,4,0),(15129,'26009',21383,21384,4,0),(15130,'26100',21029,21030,4,0),(15131,'26100',21625,21626,4,0),(15132,'26110',21447,21448,4,0),(15133,'26111',21489,21490,4,0),(15134,'26111',21031,21032,4,0),(15135,'26120',20999,21000,4,0),(15136,'26121',21433,21434,4,0),(15137,'26121',21669,21670,4,0),(15138,'26122',21497,21498,4,0),(15139,'26122',21281,21282,4,0),(15140,'26123',21687,21688,4,0),(15141,'26124',21229,21230,4,0),(15142,'26124',21451,21452,4,0),(15143,'26124',21477,21478,4,0),(15144,'26125',21715,21716,4,0),(15145,'26126',21387,21388,4,0),(15146,'26130',21513,21514,4,0),(15147,'26130',21003,21004,4,0),(15148,'26130',21199,21200,4,0),(15149,'26131',21565,21566,4,0),(15150,'26131',21347,21348,4,0),(15151,'26131',21521,21522,4,0),(15152,'26132',21603,21604,4,0),(15153,'26132',21363,21364,4,0),(15154,'26132',21567,21568,4,0),(15155,'26132',21599,21600,4,0),(15156,'26133',20995,20996,4,0),(15157,'26133',21323,21324,4,0),(15158,'26133',21547,21548,4,0),(15159,'26133',21509,21510,4,0),(15160,'26134',21423,21424,4,0),(15161,'26134',21621,21622,4,0),(15162,'26134',21339,21340,4,0),(15163,'26135',21343,21344,4,0),(15164,'26135',21127,21128,4,0),(15165,'26140',21351,21352,4,0),(15166,'26141',21005,21006,4,0),(15167,'26142',21683,21684,4,0),(15168,'26143',21415,21416,4,0),(15169,'26144',21207,21208,4,0),(15170,'26144',21459,21460,4,0),(15171,'26144',21277,21278,4,0),(15172,'26145',21461,21462,4,0),(15173,'26146',21233,21234,4,0),(15174,'26147',21463,21464,4,0),(15175,'26148',21465,21466,4,0),(15176,'26151',21063,21064,4,0),(15177,'26160',20985,20986,4,0),(15178,'26190',21435,21436,4,0),(15179,'26191',21591,21592,4,0),(15180,'26200',21427,21428,4,0),(15181,'26200',21297,21298,4,0),(15182,'26210',21035,21036,4,0),(15183,'26210',21607,21608,4,0),(15184,'26210',21191,21192,4,0),(15185,'26211',21263,21264,4,0),(15186,'26211',21609,21610,4,0),(15187,'26211',21259,21260,4,0),(15188,'26212',21531,21532,4,0),(15189,'26212',21265,21266,4,0),(15190,'26212',8137,8138,4,0),(15191,'26212',21169,21170,4,0),(15192,'26212',21273,21274,4,0),(15193,'26213',21359,21360,4,0),(15194,'26213',21455,21456,4,0),(15195,'26213',21617,21618,4,0),(15196,'26213',21307,21308,4,0),(15197,'26214',21525,21526,4,0),(15198,'26214',21221,21222,4,0),(15199,'26215',21637,21638,4,0),(15200,'26216',21543,21544,4,0),(15201,'26220',21473,21474,4,0),(15202,'26221',21285,21286,4,0),(15203,'26222',21527,21528,4,0),(15204,'26223',21319,21320,4,0),(15205,'26224',21629,21630,4,0),(15206,'26230',21157,21158,4,0),(15207,'26240',21161,21162,4,0),(15208,'26241',21091,21092,4,0),(15209,'26250',21575,21576,4,0),(15210,'26250',21057,21058,4,0),(15211,'26256',21677,21678,4,0),(15212,'26257',21083,21084,4,0),(15213,'26257',21311,21312,4,0),(15214,'26258',21399,21400,4,0),(15215,'26258',21195,21196,4,0),(15216,'26259',21289,21290,4,0),(15217,'26259',21703,21704,4,0),(15218,'26259',21217,21218,4,0),(15219,'26260',21579,21580,4,0),(15220,'26261',21583,21584,4,0),(15221,'26261',21481,21482,4,0),(15222,'26270',21469,21470,4,0),(15223,'26280',21253,21254,4,0),(15224,'26288',21657,21658,4,0),(15225,'26288',21735,21736,4,0),(15226,'26289',21255,21256,4,0),(15227,'26290',21119,21120,4,0),(15228,'26291',21727,21728,4,0),(15229,'26291',21187,21188,4,0),(15230,'26291',21551,21552,4,0),(15231,'26292',21299,21300,4,0),(15232,'26292',21673,21674,4,0),(15233,'26300',21429,21430,4,0),(15234,'26310',21079,21080,4,0),(15235,'26311',21203,21204,4,0),(15236,'26311',21135,21136,4,0),(15237,'26311',21043,21044,4,0),(15238,'26311',21153,21154,4,0),(15239,'26312',21107,21108,4,0),(15240,'26312',21047,21048,4,0),(15241,'26312',21641,21642,4,0),(15242,'26313',21649,21650,4,0),(15243,'26314',21331,21332,4,0),(15244,'26315',21165,21166,4,0),(15245,'26315',21021,21022,4,0),(15246,'26315',21391,21392,4,0),(15247,'26315',21561,21562,4,0),(15248,'26320',21087,21088,4,0),(15249,'26321',21111,21112,4,0),(15250,'26321',21403,21404,4,0),(15251,'26321',21613,21614,4,0),(15252,'26321',21711,21712,4,0),(15253,'26321',21355,21356,4,0),(15254,'26321',21485,21486,4,0),(15255,'26322',21039,21040,4,0),(15256,'26322',21115,21116,4,0),(15257,'26323',21315,21316,4,0),(15258,'26323',21075,21076,4,0),(15259,'26324',21017,21018,4,0),(15260,'26325',21695,21696,4,0),(15261,'26325',21149,21150,4,0),(15262,'26325',21145,21146,4,0),(15263,'26325',21691,21692,4,0),(15264,'26326',21539,21540,4,0),(15265,'26327',21095,21096,4,0),(15266,'26328',21249,21250,4,0),(15267,'26329',21395,21396,4,0),(15268,'26329',21723,21724,4,0),(15269,'26329',21137,21138,4,0),(15270,'26329',21141,21142,4,0),(15271,'26329',21707,21708,4,0),(15272,'26329',21665,21666,4,0),(15273,'26329',21719,21720,4,0),(15274,'26330',21123,21124,4,0),(15275,'26338',21555,21556,4,0),(15276,'26339',21557,21558,4,0),(15277,'26339',20981,20982,4,0),(15278,'26340',21535,21536,4,0),(15279,'26350',21173,21174,4,0),(15280,'26359',21633,21634,4,0),(15281,'26360',21269,21270,4,0),(15282,'26370',21443,21444,4,0),(15283,'26371',21661,21662,4,0),(15284,'26371',21595,21596,4,0),(15285,'26372',21327,21328,4,0),(15286,'26373',21225,21226,4,0),(15287,'26374',21407,21408,4,0),(15288,'26375',21245,21246,4,0),(15289,'26376',21587,21588,4,0),(15290,'26500',21131,21132,4,0),(15291,'26509',21009,21010,4,0),(15292,'26510',21493,21494,4,0),(15293,'26511',21237,21238,4,0),(15294,'26512',21645,21646,4,0),(15295,'26513',21067,21068,4,0),(15296,'26520',21177,21178,4,0),(15297,'26525',21335,21336,4,0),(15298,'26526',21211,21212,4,0),(15299,'26527',21213,21214,4,0),(15300,'26527',21179,21180,4,0),(15301,'26528',21181,21182,4,0),(15302,'26529',21183,21184,4,0),(15303,'26530',20989,20990,4,0),(15304,'26531',20991,20992,4,0),(15305,'26532',21653,21654,4,0),(15306,'26533',21439,21440,4,0),(15307,'26540',21025,21026,4,0),(15308,'26550',21517,21518,4,0),(15309,'26559',21013,21014,4,0),(15310,'26560',21071,21072,4,0),(15311,'26570',21505,21506,4,0),(15312,'26580',21059,21060,4,0),(15313,'26584',21303,21304,4,0),(15314,'26585',21571,21572,4,0),(15315,'26585',21051,21052,4,0),(15316,'26586',21241,21242,4,0),(15317,'26586',21731,21732,4,0),(15318,'26586',21411,21412,4,0),(15319,'26587',21699,21700,4,0),(15320,'26587',21293,21294,4,0),(15321,'26587',21419,21420,4,0),(15322,'26588',21099,21100,4,0),(15323,'26588',21103,21104,4,0),(15324,'26589',21501,21502,4,0),(15325,'26589',21053,21054,4,0),(15326,'27001',25113,25114,4,0),(15327,'27002',25115,25116,4,0),(15328,'27003',25117,25118,4,0),(15329,'27004',25119,25120,4,0),(15330,'27100',24595,24596,4,0),(15331,'27110',24597,24598,4,0),(15332,'27111',24599,24600,4,0),(15333,'27112',24601,24602,4,0),(15334,'27113',25277,25278,4,0),(15335,'27113',24603,24604,4,0),(15336,'27114',24605,24606,4,0),(15337,'27115',24607,24608,4,0),(15338,'27116',24609,24610,4,0),(15339,'27117',24611,24612,4,0),(15340,'27118',24613,24614,4,0),(15341,'27120',24885,24886,4,0),(15342,'27122',24887,24888,4,0),(15343,'27123',24889,24890,4,0),(15344,'27124',24891,24892,4,0),(15345,'27125',24893,24894,4,0),(15346,'27126',24895,24896,4,0),(15347,'27127',24897,24898,4,0),(15348,'27128',24899,24900,4,0),(15349,'27129',24901,24902,4,0),(15350,'27130',24731,24732,4,0),(15351,'27131',24733,24734,4,0),(15352,'27132',24735,24736,4,0),(15353,'27133',24737,24738,4,0),(15354,'27134',24615,24616,4,0),(15355,'27135',24617,24618,4,0),(15356,'27136',24619,24620,4,0),(15357,'27140',25121,25122,4,0),(15358,'27141',25123,25124,4,0),(15359,'27142',24903,24904,4,0),(15360,'27143',24905,24906,4,0),(15361,'27144',24907,24908,4,0),(15362,'27145',25281,25282,4,0),(15363,'27146',25125,25126,4,0),(15364,'27146',24909,24910,4,0),(15365,'27150',25371,25372,4,0),(15366,'27151',25373,25374,4,0),(15367,'27152',25375,25376,4,0),(15368,'27152',25059,25060,4,0),(15369,'27153',25377,25378,4,0),(15370,'27154',25379,25380,4,0),(15371,'27155',25381,25382,4,0),(15372,'27156',25017,25018,4,0),(15373,'27157',25383,25384,4,0),(15374,'27160',25127,25128,4,0),(15375,'27161',25129,25130,4,0),(15376,'27162',25283,25284,4,0),(15377,'27163',25285,25286,4,0),(15378,'27164',25287,25288,4,0),(15379,'27166',24911,24912,4,0),(15380,'27168',25289,25290,4,0),(15381,'27169',25131,25132,4,0),(15382,'27170',25471,25472,4,0),(15383,'27177',25473,25474,4,0),(15384,'27178',25475,25476,4,0),(15385,'27179',25477,25478,4,0),(15386,'27180',25133,25134,4,0),(15387,'27181',25135,25136,4,0),(15388,'27181',25061,25062,4,0),(15389,'27182',25137,25138,4,0),(15390,'27183',25063,25064,4,0),(15391,'27184',25065,25066,4,0),(15392,'27185',25139,25140,4,0),(15393,'27185',25067,25068,4,0),(15394,'27186',25069,25070,4,0),(15395,'27187',25479,25480,4,0),(15396,'27188',25141,25142,4,0),(15397,'27188',25481,25482,4,0),(15398,'27190',25143,25144,4,0),(15399,'27190',25291,25292,4,0),(15400,'27191',25145,25146,4,0),(15401,'27192',25147,25148,4,0),(15402,'27200',25391,25392,4,0),(15403,'27203',25393,25394,4,0),(15404,'27204',25395,25396,4,0),(15405,'27205',25397,25398,4,0),(15406,'27206',25399,25400,4,0),(15407,'27207',25401,25402,4,0),(15408,'27208',25403,25404,4,0),(15409,'27209',25405,25406,4,0),(15410,'27210',25149,25150,4,0),(15411,'27210',25071,25072,4,0),(15412,'27211',25073,25074,4,0),(15413,'27212',25483,25484,4,0),(15414,'27213',25485,25486,4,0),(15415,'27214',25487,25488,4,0),(15416,'27215',25233,25234,4,0),(15417,'27216',25407,25408,4,0),(15418,'27217',25409,25410,4,0),(15419,'27220',25019,25020,4,0),(15420,'27220',24659,24660,4,0),(15421,'27226',25021,25022,4,0),(15422,'27227',25023,25024,4,0),(15423,'27228',25025,25026,4,0),(15424,'27229',25027,25028,4,0),(15425,'27230',25151,25152,4,0),(15426,'27231',25153,25154,4,0),(15427,'27232',25155,25156,4,0),(15428,'27233',25075,25076,4,0),(15429,'27233',25157,25158,4,0),(15430,'27234',25077,25078,4,0),(15431,'27235',25029,25030,4,0),(15432,'27240',25177,25178,4,0),(15433,'27241',25179,25180,4,0),(15434,'27243',25535,25536,4,0),(15435,'27244',25537,25538,4,0),(15436,'27245',25539,25540,4,0),(15437,'27246',24623,24624,4,0),(15438,'27247',25451,25452,4,0),(15439,'27247',25181,25182,4,0),(15440,'27248',24625,24626,4,0),(15441,'27250',24859,24860,4,0),(15442,'27256',24861,24862,4,0),(15443,'27257',24863,24864,4,0),(15444,'27258',24865,24866,4,0),(15445,'27259',24867,24868,4,0),(15446,'27260',24869,24870,4,0),(15447,'27266',24871,24872,4,0),(15448,'27267',24873,24874,4,0),(15449,'27268',24875,24876,4,0),(15450,'27269',24877,24878,4,0),(15451,'27270',25453,25454,4,0),(15452,'27271',24879,24880,4,0),(15453,'27272',25455,25456,4,0),(15454,'27273',25457,25458,4,0),(15455,'27274',25459,25460,4,0),(15456,'27275',25461,25462,4,0),(15457,'27276',24739,24740,4,0),(15458,'27277',24741,24742,4,0),(15459,'27278',24743,24744,4,0),(15460,'27279',25463,25464,4,0),(15461,'27280',25465,25466,4,0),(15462,'27283',25467,25468,4,0),(15463,'27286',24627,24628,4,0),(15464,'27287',24629,24630,4,0),(15465,'27289',24881,24882,4,0),(15466,'27289',25159,25160,4,0),(15467,'27290',25161,25162,4,0),(15468,'27293',25163,25164,4,0),(15469,'27293',24913,24914,4,0),(15470,'27294',25165,25166,4,0),(15471,'27296',25167,25168,4,0),(15472,'27297',25169,25170,4,0),(15473,'27298',25171,25172,4,0),(15474,'27299',25031,25032,4,0),(15475,'27299',25173,25174,4,0),(15476,'27300',25035,25036,4,0),(15477,'27305',25037,25038,4,0),(15478,'27306',25039,25040,4,0),(15479,'27307',25041,25042,4,0),(15480,'27308',25043,25044,4,0),(15481,'27309',25045,25046,4,0),(15482,'27310',25527,25528,4,0),(15483,'27317',25529,25530,4,0),(15484,'27318',25531,25532,4,0),(15485,'27320',25491,25492,4,0),(15486,'27324',24985,24986,4,0),(15487,'27325',24987,24988,4,0),(15488,'27326',24989,24990,4,0),(15489,'27327',24991,24992,4,0),(15490,'27328',24993,24994,4,0),(15491,'27328',25493,25494,4,0),(15492,'27329',25495,25496,4,0),(15493,'27330',24633,24634,4,0),(15494,'27331',24635,24636,4,0),(15495,'27332',24637,24638,4,0),(15496,'27333',24639,24640,4,0),(15497,'27334',24641,24642,4,0),(15498,'27335',24643,24644,4,0),(15499,'27336',24645,24646,4,0),(15500,'27338',24647,24648,4,0),(15501,'27339',24995,24996,4,0),(15502,'27339',24649,24650,4,0),(15503,'27340',24823,24824,4,0),(15504,'27341',25295,25296,4,0),(15505,'27342',25297,25298,4,0),(15506,'27343',24825,24826,4,0),(15507,'27344',24827,24828,4,0),(15508,'27345',25299,25300,4,0),(15509,'27346',25301,25302,4,0),(15510,'27347',25303,25304,4,0),(15511,'27347',24651,24652,4,0),(15512,'27348',25305,25306,4,0),(15513,'27349',24829,24830,4,0),(15514,'27350',24831,24832,4,0),(15515,'27359',24833,24834,4,0),(15516,'27360',25081,25082,4,0),(15517,'27362',25309,25310,4,0),(15518,'27363',25311,25312,4,0),(15519,'27364',25313,25314,4,0),(15520,'27366',25083,25084,4,0),(15521,'27367',25085,25086,4,0),(15522,'27368',25087,25088,4,0),(15523,'27369',25315,25316,4,0),(15524,'27369',25089,25090,4,0),(15525,'27370',25503,25504,4,0),(15526,'27370',24813,24814,4,0),(15527,'27372',25047,25048,4,0),(15528,'27372',24815,24816,4,0),(15529,'27373',24817,24818,4,0),(15530,'27373',25385,25386,4,0),(15531,'27374',25387,25388,4,0),(15532,'27375',25667,25668,4,0),(15533,'27375',24819,24820,4,0),(15534,'27375',24973,24974,4,0),(15535,'27376',24975,24976,4,0),(15536,'27377',24977,24978,4,0),(15537,'27378',24979,24980,4,0),(15538,'27379',24981,24982,4,0),(15539,'27380',25049,25050,4,0),(15540,'27388',25051,25052,4,0),(15541,'27389',25053,25054,4,0),(15542,'27390',25497,25498,4,0),(15543,'27391',24653,24654,4,0),(15544,'27391',25499,25500,4,0),(15545,'27392',25577,25578,4,0),(15546,'27400',25055,25056,4,0),(15547,'27400',25201,25202,4,0),(15548,'27410',25203,25204,4,0),(15549,'27411',25205,25206,4,0),(15550,'27412',25207,25208,4,0),(15551,'27413',24655,24656,4,0),(15552,'27413',25209,25210,4,0),(15553,'27414',25211,25212,4,0),(15554,'27415',25213,25214,4,0),(15555,'27416',25215,25216,4,0),(15556,'27417',25217,25218,4,0),(15557,'27418',25219,25220,4,0),(15558,'27419',25413,25414,4,0),(15559,'27419',25221,25222,4,0),(15560,'27420',25223,25224,4,0),(15561,'27421',25605,25606,4,0),(15562,'27422',25607,25608,4,0),(15563,'27423',25609,25610,4,0),(15564,'27424',25611,25612,4,0),(15565,'27425',25613,25614,4,0),(15566,'27430',25415,25416,4,0),(15567,'27437',25417,25418,4,0),(15568,'27438',25419,25420,4,0),(15569,'27439',25421,25422,4,0),(15570,'27440',25615,25616,4,0),(15571,'27450',25423,25424,4,0),(15572,'27460',25617,25618,4,0),(15573,'27466',25619,25620,4,0),(15574,'27468',25621,25622,4,0),(15575,'27469',25623,25624,4,0),(15576,'27470',25425,25426,4,0),(15577,'27500',24945,24946,4,0),(15578,'27510',24947,24948,4,0),(15579,'27511',24949,24950,4,0),(15580,'27512',24951,24952,4,0),(15581,'27513',24953,24954,4,0),(15582,'27514',24955,24956,4,0),(15583,'27515',25235,25236,4,0),(15584,'27515',24957,24958,4,0),(15585,'27516',24959,24960,4,0),(15586,'27517',24961,24962,4,0),(15587,'27518',24963,24964,4,0),(15588,'27519',24965,24966,4,0),(15589,'27520',24841,24842,4,0),(15590,'27527',24843,24844,4,0),(15591,'27528',24845,24846,4,0),(15592,'27529',24847,24848,4,0),(15593,'27530',24849,24850,4,0),(15594,'27531',24851,24852,4,0),(15595,'27532',25321,25322,4,0),(15596,'27532',24853,24854,4,0),(15597,'27533',24967,24968,4,0),(15598,'27533',24855,24856,4,0),(15599,'27540',25323,25324,4,0),(15600,'27543',25325,25326,4,0),(15601,'27544',25327,25328,4,0),(15602,'27545',25329,25330,4,0),(15603,'27546',25331,25332,4,0),(15604,'27547',25333,25334,4,0),(15605,'27548',25335,25336,4,0),(15606,'27549',25427,25428,4,0),(15607,'27549',25337,25338,4,0),(15608,'27550',25627,25628,4,0),(15609,'27554',25629,25630,4,0),(15610,'27555',25631,25632,4,0),(15611,'27556',25633,25634,4,0),(15612,'27557',25635,25636,4,0),(15613,'27558',25637,25638,4,0),(15614,'27559',25639,25640,4,0),(15615,'27560',25237,25238,4,0),(15616,'27568',25239,25240,4,0),(15617,'27569',25241,25242,4,0),(15618,'27570',24709,24710,4,0),(15619,'27576',24711,24712,4,0),(15620,'27577',24713,24714,4,0),(15621,'27578',24715,24716,4,0),(15622,'27579',24717,24718,4,0),(15623,'27590',25225,25226,4,0),(15624,'27591',25227,25228,4,0),(15625,'27592',25429,25430,4,0),(15626,'27592',25229,25230,4,0),(15627,'27593',25431,25432,4,0),(15628,'27594',25339,25340,4,0),(15629,'27595',24969,24970,4,0),(15630,'27596',25641,25642,4,0),(15631,'27600',25579,25580,4,0),(15632,'27610',25581,25582,4,0),(15633,'27611',25435,25436,4,0),(15634,'27612',25583,25584,4,0),(15635,'27612',25437,25438,4,0),(15636,'27613',25585,25586,4,0),(15637,'27614',25091,25092,4,0),(15638,'27614',25587,25588,4,0),(15639,'27615',25093,25094,4,0),(15640,'27615',25589,25590,4,0),(15641,'27616',25591,25592,4,0),(15642,'27617',25593,25594,4,0),(15643,'27618',25595,25596,4,0),(15644,'27619',25597,25598,4,0),(15645,'27620',25551,25552,4,0),(15646,'27623',25553,25554,4,0),(15647,'27624',25555,25556,4,0),(15648,'27625',25557,25558,4,0),(15649,'27626',25559,25560,4,0),(15650,'27627',25561,25562,4,0),(15651,'27628',25563,25564,4,0),(15652,'27630',25655,25656,4,0),(15653,'27631',25565,25566,4,0),(15654,'27631',25657,25658,4,0),(15655,'27632',25659,25660,4,0),(15656,'27633',25567,25568,4,0),(15657,'27633',25317,25318,4,0),(15658,'27634',25661,25662,4,0),(15659,'27635',25569,25570,4,0),(15660,'27636',25571,25572,4,0),(15661,'27637',25599,25600,4,0),(15662,'27638',25573,25574,4,0),(15663,'27639',25663,25664,4,0),(15664,'27640',24779,24780,4,0),(15665,'27646',24721,24722,4,0),(15666,'27647',24781,24782,4,0),(15667,'27648',24783,24784,4,0),(15668,'27649',24785,24786,4,0),(15669,'27650',24787,24788,4,0),(15670,'27650',25255,25256,4,0),(15671,'27651',25257,25258,4,0),(15672,'27652',25259,25260,4,0),(15673,'27653',25261,25262,4,0),(15674,'27654',25263,25264,4,0),(15675,'27655',25265,25266,4,0),(15676,'27656',25267,25268,4,0),(15677,'27657',25269,25270,4,0),(15678,'27658',25271,25272,4,0),(15679,'27659',24917,24918,4,0),(15680,'27659',25273,25274,4,0),(15681,'27660',24789,24790,4,0),(15682,'27661',24919,24920,4,0),(15683,'27661',24791,24792,4,0),(15684,'27662',24921,24922,4,0),(15685,'27663',24793,24794,4,0),(15686,'27664',24923,24924,4,0),(15687,'27664',24795,24796,4,0),(15688,'27665',24925,24926,4,0),(15689,'27666',24927,24928,4,0),(15690,'27667',24929,24930,4,0),(15691,'27668',24797,24798,4,0),(15692,'27670',25441,25442,4,0),(15693,'27671',25443,25444,4,0),(15694,'27672',25445,25446,4,0),(15695,'27673',25447,25448,4,0),(15696,'27675',24723,24724,4,0),(15697,'27676',24725,24726,4,0),(15698,'27677',24799,24800,4,0),(15699,'27677',24931,24932,4,0),(15700,'27677',24727,24728,4,0),(15701,'27678',24801,24802,4,0),(15702,'27679',24803,24804,4,0),(15703,'27680',24747,24748,4,0),(15704,'27685',24749,24750,4,0),(15705,'27686',24751,24752,4,0),(15706,'27687',24753,24754,4,0),(15707,'27688',24755,24756,4,0),(15708,'27689',24757,24758,4,0),(15709,'27690',25601,25602,4,0),(15710,'27691',25095,25096,4,0),(15711,'27692',25097,25098,4,0),(15712,'27693',25099,25100,4,0),(15713,'27694',24805,24806,4,0),(15714,'27695',24759,24760,4,0),(15715,'27695',24807,24808,4,0),(15716,'27696',24761,24762,4,0),(15717,'27697',24763,24764,4,0),(15718,'27698',24809,24810,4,0),(15719,'27699',25101,25102,4,0),(15720,'27700',25507,25508,4,0),(15721,'27700',25343,25344,4,0),(15722,'27710',25509,25510,4,0),(15723,'27711',25511,25512,4,0),(15724,'27712',25513,25514,4,0),(15725,'27713',25515,25516,4,0),(15726,'27714',25517,25518,4,0),(15727,'27715',25519,25520,4,0),(15728,'27720',24661,24662,4,0),(15729,'27721',24663,24664,4,0),(15730,'27722',24665,24666,4,0),(15731,'27723',24667,24668,4,0),(15732,'27724',24669,24670,4,0),(15733,'27725',24671,24672,4,0),(15734,'27726',24673,24674,4,0),(15735,'27727',24675,24676,4,0),(15736,'27728',24677,24678,4,0),(15737,'27729',24679,24680,4,0),(15738,'27730',24683,24684,4,0),(15739,'27737',24685,24686,4,0),(15740,'27738',24687,24688,4,0),(15741,'27740',25185,25186,4,0),(15742,'27742',25187,25188,4,0),(15743,'27743',25543,25544,4,0),(15744,'27744',25545,25546,4,0),(15745,'27745',25547,25548,4,0),(15746,'27747',25189,25190,4,0),(15747,'27748',25191,25192,4,0),(15748,'27749',25193,25194,4,0),(15749,'27750',25105,25106,4,0),(15750,'27751',25107,25108,4,0),(15751,'27752',25195,25196,4,0),(15752,'27760',25109,25110,4,0),(15753,'27765',25645,25646,4,0),(15754,'27766',25647,25648,4,0),(15755,'27767',25649,25650,4,0),(15756,'27768',25651,25652,4,0),(15757,'27770',25345,25346,4,0),(15758,'27773',24697,24698,4,0),(15759,'27774',24699,24700,4,0),(15760,'27775',24701,24702,4,0),(15761,'27776',24703,24704,4,0),(15762,'27777',25347,25348,4,0),(15763,'27778',25349,25350,4,0),(15764,'27778',24705,24706,4,0),(15765,'27779',25351,25352,4,0),(15766,'27780',24999,25000,4,0),(15767,'27785',25001,25002,4,0),(15768,'27786',25003,25004,4,0),(15769,'27787',25005,25006,4,0),(15770,'27788',25007,25008,4,0),(15771,'27789',25009,25010,4,0),(15772,'27790',24767,24768,4,0),(15773,'27791',25197,25198,4,0),(15774,'27792',24769,24770,4,0),(15775,'27793',24771,24772,4,0),(15776,'27794',24773,24774,4,0),(15777,'27796',25521,25522,4,0),(15778,'27797',25523,25524,4,0),(15779,'27798',24775,24776,4,0),(15780,'27800',25669,25670,4,0),(15781,'27810',25671,25672,4,0),(15782,'27811',25673,25674,4,0),(15783,'27812',25675,25676,4,0),(15784,'27813',25677,25678,4,0),(15785,'27814',25679,25680,4,0),(15786,'27815',25681,25682,4,0),(15787,'27816',25683,25684,4,0),(15788,'27817',25245,25246,4,0),(15789,'27818',25685,25686,4,0),(15790,'27820',25687,25688,4,0),(15791,'27821',25689,25690,4,0),(15792,'27822',25691,25692,4,0),(15793,'27823',25693,25694,4,0),(15794,'27824',25725,25726,4,0),(15795,'27825',25695,25696,4,0),(15796,'27826',25727,25728,4,0),(15797,'27830',25697,25698,4,0),(15798,'27832',25729,25730,4,0),(15799,'27833',25731,25732,4,0),(15800,'27834',25733,25734,4,0),(15801,'27835',25735,25736,4,0),(15802,'27836',25247,25248,4,0),(15803,'27837',25249,25250,4,0),(15804,'27840',25699,25700,4,0),(15805,'27841',25701,25702,4,0),(15806,'27842',25703,25704,4,0),(15807,'27843',25705,25706,4,0),(15808,'27843',24689,24690,4,0),(15809,'27845',24691,24692,4,0),(15810,'27849',24693,24694,4,0),(15811,'27850',25709,25710,4,0),(15812,'27860',25355,25356,4,0),(15813,'27861',25711,25712,4,0),(15814,'27861',25357,25358,4,0),(15815,'27863',25713,25714,4,0),(15816,'27864',25715,25716,4,0),(15817,'27865',25251,25252,4,0),(15818,'27865',25363,25364,4,0),(15819,'27866',25365,25366,4,0),(15820,'27866',25717,25718,4,0),(15821,'27867',25367,25368,4,0),(15822,'27867',25719,25720,4,0),(15823,'27868',25359,25360,4,0),(15824,'27869',25721,25722,4,0),(15825,'27870',25739,25740,4,0),(15826,'27876',25741,25742,4,0),(15827,'27877',25743,25744,4,0),(15828,'27878',25745,25746,4,0),(15829,'27879',25747,25748,4,0),(15830,'27880',24837,24838,4,0),(15831,'27888',24935,24936,4,0),(15832,'27889',24937,24938,4,0),(15833,'27890',24939,24940,4,0),(15834,'27891',24941,24942,4,0),(15835,'27892',25011,25012,4,0),(15836,'27893',25013,25014,4,0),(15837,'28000',26217,26218,4,0),(15838,'28001',26219,26220,4,0),(15839,'28002',26221,26222,4,0),(15840,'28003',26223,26224,4,0),(15841,'28004',26225,26226,4,0),(15842,'28005',26227,26228,4,0),(15843,'28006',26229,26230,4,0),(15844,'28007',26231,26232,4,0),(15845,'28008',26233,26234,4,0),(15846,'28009',26235,26236,4,0),(15847,'28010',26237,26238,4,0),(15848,'28011',26239,26240,4,0),(15849,'28012',26241,26242,4,0),(15850,'28013',26243,26244,4,0),(15851,'28014',26245,26246,4,0),(15852,'28015',26247,26248,4,0),(15853,'28016',26249,26250,4,0),(15854,'28017',26251,26252,4,0),(15855,'28018',26253,26254,4,0),(15856,'28019',26255,26256,4,0),(15857,'28020',26257,26258,4,0),(15858,'28021',26259,26260,4,0),(15859,'28022',26261,26262,4,0),(15860,'28023',26263,26264,4,0),(15861,'28024',26265,26266,4,0),(15862,'28025',26267,26268,4,0),(15863,'28026',26269,26270,4,0),(15864,'28027',26271,26272,4,0),(15865,'28028',26273,26274,4,0),(15866,'28029',26275,26276,4,0),(15867,'28030',26277,26278,4,0),(15868,'28031',26279,26280,4,0),(15869,'28032',26281,26282,4,0),(15870,'28033',26283,26284,4,0),(15871,'28034',26285,26286,4,0),(15872,'28035',26287,26288,4,0),(15873,'28036',26289,26290,4,0),(15874,'28037',26291,26292,4,0),(15875,'28038',26293,26294,4,0),(15876,'28039',26295,26296,4,0),(15877,'28040',26297,26298,4,0),(15878,'28041',26299,26300,4,0),(15879,'28042',26301,26302,4,0),(15880,'28043',26303,26304,4,0),(15881,'28044',26305,26306,4,0),(15882,'28045',26307,26308,4,0),(15883,'28046',26309,26310,4,0),(15884,'28047',26311,26312,4,0),(15885,'28048',26313,26314,4,0),(15886,'28049',26315,26316,4,0),(15887,'28050',26317,26318,4,0),(15888,'28051',26319,26320,4,0),(15889,'28052',26321,26322,4,0),(15890,'28053',26323,26324,4,0),(15891,'28054',26325,26326,4,0),(15892,'28055',26327,26328,4,0),(15893,'28100',25777,25778,4,0),(15894,'28108',25779,25780,4,0),(15895,'28109',25781,25782,4,0),(15896,'28110',25801,25802,4,0),(15897,'28120',25949,25950,4,0),(15898,'28120',25803,25804,4,0),(15899,'28130',26699,26700,4,0),(15900,'28140',26057,26058,4,0),(15901,'28150',26707,26708,4,0),(15902,'28160',26625,26626,4,0),(15903,'28170',26703,26704,4,0),(15904,'28180',26649,26650,4,0),(15905,'28189',26657,26658,4,0),(15906,'28189',25993,25994,4,0),(15907,'28189',26455,26456,4,0),(15908,'28190',16293,16294,4,0),(15909,'28190',26501,26502,4,0),(15910,'28190',26359,26360,4,0),(15911,'28191',26497,26498,4,0),(15912,'28191',26153,26154,4,0),(15913,'28191',26131,26132,4,0),(15914,'28192',25997,25998,4,0),(15915,'28193',25913,25914,4,0),(15916,'28194',26543,26544,4,0),(15917,'28194',25847,25848,4,0),(15918,'28195',26505,26506,4,0),(15919,'28196',26507,26508,4,0),(15920,'28200',26567,26568,4,0),(15921,'28210',26403,26404,4,0),(15922,'28210',26691,26692,4,0),(15923,'28211',26009,26010,4,0),(15924,'28212',26405,26406,4,0),(15925,'28212',26011,26012,4,0),(15926,'28213',25945,25946,4,0),(15927,'28214',26033,26034,4,0),(15928,'28219',26013,26014,4,0),(15929,'28220',26331,26332,4,0),(15930,'28221',26333,26334,4,0),(15931,'28222',26335,26336,4,0),(15932,'28223',26487,26488,4,0),(15933,'28224',26489,26490,4,0),(15934,'28229',26761,26762,4,0),(15935,'28231',26161,26162,4,0),(15936,'28232',26163,26164,4,0),(15937,'28240',26135,26136,4,0),(15938,'28248',26137,26138,4,0),(15939,'28250',26065,26066,4,0),(15940,'28250',26653,26654,4,0),(15941,'28260',26067,26068,4,0),(15942,'28270',26069,26070,4,0),(15943,'28270',25959,25960,4,0),(15944,'28279',25961,25962,4,0),(15945,'28280',26015,26016,4,0),(15946,'28290',26165,26166,4,0),(15947,'28292',26071,26072,4,0),(15948,'28292',26017,26018,4,0),(15949,'28293',26783,26784,4,0),(15950,'28294',26547,26548,4,0),(15951,'28295',26687,26688,4,0),(15952,'28296',26599,26600,4,0),(15953,'28297',26601,26602,4,0),(15954,'28300',25821,25822,4,0),(15955,'28320',26479,26480,4,0),(15956,'28330',26573,26574,4,0),(15957,'28340',26695,26696,4,0),(15958,'28350',25925,25926,4,0),(15959,'28359',26633,26634,4,0),(15960,'28360',26731,26732,4,0),(15961,'28370',25921,25922,4,0),(15962,'28380',25941,25942,4,0),(15963,'28390',25843,25844,4,0),(15964,'28391',26679,26680,4,0),(15965,'28400',26073,26074,4,0),(15966,'28400',25937,25938,4,0),(15967,'28409',25807,25808,4,0),(15968,'28410',26339,26340,4,0),(15969,'28411',26367,26368,4,0),(15970,'28412',26001,26002,4,0),(15971,'28413',26003,26004,4,0),(15972,'28420',26075,26076,4,0),(15973,'28430',26119,26120,4,0),(15974,'28430',25809,25810,4,0),(15975,'28440',26121,26122,4,0),(15976,'28450',25933,25934,4,0),(15977,'28460',26193,26194,4,0),(15978,'28470',25909,25910,4,0),(15979,'28470',26341,26342,4,0),(15980,'28480',26123,26124,4,0),(15981,'28490',25839,25840,4,0),(15982,'28491',26395,26396,4,0),(15983,'28492',26005,26006,4,0),(15984,'28492',26343,26344,4,0),(15985,'28500',25825,25826,4,0),(15986,'28510',25889,25890,4,0),(15987,'28511',26711,26712,4,0),(15988,'28512',26765,26766,4,0),(15989,'28514',26423,26424,4,0),(15990,'28514',26767,26768,4,0),(15991,'28515',26427,26428,4,0),(15992,'28521',26531,26532,4,0),(15993,'28522',26533,26534,4,0),(15994,'28523',26535,26536,4,0),(15995,'28524',26537,26538,4,0),(15996,'28529',26539,26540,4,0),(15997,'28530',26371,26372,4,0),(15998,'28540',26467,26468,4,0),(15999,'28550',26629,26630,4,0),(16000,'28560',25897,25898,4,0),(16001,'28570',26431,26432,4,0),(16002,'28580',25813,25814,4,0),(16003,'28590',26771,26772,4,0),(16004,'28594',26671,26672,4,0),(16005,'28595',26029,26030,4,0),(16006,'28596',25859,25860,4,0),(16007,'28597',26061,26062,4,0),(16008,'28598',26739,26740,4,0),(16009,'28600',26411,26412,4,0),(16010,'28607',25987,25988,4,0),(16011,'28609',26757,26758,4,0),(16012,'28609',26613,26614,4,0),(16013,'28609',26747,26748,4,0),(16014,'28610',26743,26744,4,0),(16015,'28620',25797,25798,4,0),(16016,'28630',26727,26728,4,0),(16017,'28635',26375,26376,4,0),(16018,'28640',25879,25880,4,0),(16019,'28648',25881,25882,4,0),(16020,'28649',26555,26556,4,0),(16021,'28650',25905,25906,4,0),(16022,'28660',25851,25852,4,0),(16023,'28670',26775,26776,4,0),(16024,'28680',26577,26578,4,0),(16025,'28690',25863,25864,4,0),(16026,'28691',26751,26752,4,0),(16027,'28692',26753,26754,4,0),(16028,'28693',26513,26514,4,0),(16029,'28694',25917,25918,4,0),(16030,'28695',26419,26420,4,0),(16031,'28696',26463,26464,4,0),(16032,'28700',26581,26582,4,0),(16033,'28701',26583,26584,4,0),(16034,'28702',26585,26586,4,0),(16035,'28703',26587,26588,4,0),(16036,'28706',26589,26590,4,0),(16037,'28707',26591,26592,4,0),(16038,'28707',25951,25952,4,0),(16039,'28708',26593,26594,4,0),(16040,'28709',26595,26596,4,0),(16041,'28720',25871,25872,4,0),(16042,'28721',25875,25876,4,0),(16043,'28721',26523,26524,4,0),(16044,'28722',26025,26026,4,0),(16045,'28723',26459,26460,4,0),(16046,'28729',26683,26684,4,0),(16047,'28729',26723,26724,4,0),(16048,'28729',26399,26400,4,0),(16049,'28730',25867,25868,4,0),(16050,'28737',26157,26158,4,0),(16051,'28737',25855,25856,4,0),(16052,'28737',26089,26090,4,0),(16053,'28737',26483,26484,4,0),(16054,'28739',26779,26780,4,0),(16055,'28739',26085,26086,4,0),(16056,'28739',26415,26416,4,0),(16057,'28739',26079,26080,4,0),(16058,'28740',26517,26518,4,0),(16059,'28742',26201,26202,4,0),(16060,'28742',25757,25758,4,0),(16061,'28743',26081,26082,4,0),(16062,'28743',25893,25894,4,0),(16063,'28749',26519,26520,4,0),(16064,'28749',26475,26476,4,0),(16065,'28750',25953,25954,4,0),(16066,'28750',26559,26560,4,0),(16067,'28750',26569,26570,4,0),(16068,'28751',26149,26150,4,0),(16069,'28752',26205,26206,4,0),(16070,'28753',26207,26208,4,0),(16071,'28754',26509,26510,4,0),(16072,'28754',26209,26210,4,0),(16073,'28755',26145,26146,4,0),(16074,'28755',26213,26214,4,0),(16075,'28755',26551,26552,4,0),(16076,'28755',26127,26128,4,0),(16077,'28756',26617,26618,4,0),(16078,'28760',26665,26666,4,0),(16079,'28761',26667,26668,4,0),(16080,'28770',25955,25956,4,0),(16081,'28791',26621,26622,4,0),(16082,'28792',26355,26356,4,0),(16083,'28794',26115,26116,4,0),(16084,'28801',25761,25762,4,0),(16085,'28802',25763,25764,4,0),(16086,'28803',25765,25766,4,0),(16087,'28804',25767,25768,4,0),(16088,'28805',25769,25770,4,0),(16089,'28806',25771,25772,4,0),(16090,'28807',25989,25990,4,0),(16091,'28807',25773,25774,4,0),(16092,'28810',26735,26736,4,0),(16093,'28811',25965,25966,4,0),(16094,'28812',26715,26716,4,0),(16095,'28812',26471,26472,4,0),(16096,'28813',26493,26494,4,0),(16097,'28813',26661,26662,4,0),(16098,'28814',25983,25984,4,0),(16099,'28815',26527,26528,4,0),(16100,'28815',26037,26038,4,0),(16101,'28816',26675,26676,4,0),(16102,'28816',25885,25886,4,0),(16103,'28817',26197,26198,4,0),(16104,'28818',25817,25818,4,0),(16105,'28818',26605,26606,4,0),(16106,'28820',25969,25970,4,0),(16107,'28821',25971,25972,4,0),(16108,'28822',25973,25974,4,0),(16109,'28823',25975,25976,4,0),(16110,'28830',26563,26564,4,0),(16111,'28840',26351,26352,4,0),(16112,'28850',26637,26638,4,0),(16113,'28860',26435,26436,4,0),(16114,'28861',26437,26438,4,0),(16115,'28862',26439,26440,4,0),(16116,'28863',25929,25930,4,0),(16117,'28864',25753,25754,4,0),(16118,'28880',26347,26348,4,0),(16119,'28890',26189,26190,4,0),(16120,'28891',26719,26720,4,0),(16121,'28901',26093,26094,4,0),(16122,'28902',26095,26096,4,0),(16123,'28903',26097,26098,4,0),(16124,'28904',26099,26100,4,0),(16125,'28905',26101,26102,4,0),(16126,'28906',26103,26104,4,0),(16127,'28907',26105,26106,4,0),(16128,'28909',26107,26108,4,0),(16129,'28911',26169,26170,4,0),(16130,'28912',26171,26172,4,0),(16131,'28913',26173,26174,4,0),(16132,'28914',26175,26176,4,0),(16133,'28915',26177,26178,4,0),(16134,'28916',26179,26180,4,0),(16135,'28917',26181,26182,4,0),(16136,'28918',26183,26184,4,0),(16137,'28919',26185,26186,4,0),(16138,'28921',25785,25786,4,0),(16139,'28922',25787,25788,4,0),(16140,'28923',25789,25790,4,0),(16141,'28924',25791,25792,4,0),(16142,'28925',25793,25794,4,0),(16143,'28931',26377,26378,4,0),(16144,'28932',26379,26380,4,0),(16145,'28933',26381,26382,4,0),(16146,'28934',26383,26384,4,0),(16147,'28935',26385,26386,4,0),(16148,'28936',26387,26388,4,0),(16149,'28937',26389,26390,4,0),(16150,'28938',26391,26392,4,0),(16151,'28939',25829,25830,4,0),(16152,'28939',25833,25834,4,0),(16153,'28941',26041,26042,4,0),(16154,'28942',26043,26044,4,0),(16155,'28943',26045,26046,4,0),(16156,'28944',26047,26048,4,0),(16157,'28945',26049,26050,4,0),(16158,'28946',26051,26052,4,0),(16159,'28947',26053,26054,4,0),(16160,'28950',26363,26364,4,0),(16161,'28954',26407,26408,4,0),(16162,'28970',26141,26142,4,0),(16163,'28971',26111,26112,4,0),(16164,'28976',25835,25836,4,0),(16165,'28977',25901,25902,4,0),(16166,'28978',25979,25980,4,0),(16167,'28979',26609,26610,4,0),(16168,'28980',26443,26444,4,0),(16169,'28981',26445,26446,4,0),(16170,'28982',26447,26448,4,0),(16171,'28983',26449,26450,4,0),(16172,'28984',26451,26452,4,0),(16173,'28990',26645,26646,4,0),(16174,'28991',26641,26642,4,0),(16175,'29001',27113,27114,4,0),(16176,'29002',27115,27116,4,0),(16177,'29003',27117,27118,4,0),(16178,'29004',27119,27120,4,0),(16179,'29005',27121,27122,4,0),(16180,'29006',27123,27124,4,0),(16181,'29007',27125,27126,4,0),(16182,'29008',27127,27128,4,0),(16183,'29009',27129,27130,4,0),(16184,'29010',27131,27132,4,0),(16185,'29010',26963,26964,4,0),(16186,'29011',27133,27134,4,0),(16187,'29012',27135,27136,4,0),(16188,'29013',27137,27138,4,0),(16189,'29014',27139,27140,4,0),(16190,'29015',27141,27142,4,0),(16191,'29016',27143,27144,4,0),(16192,'29017',27145,27146,4,0),(16193,'29018',27147,27148,4,0),(16194,'29100',26989,26990,4,0),(16195,'29108',27075,27076,4,0),(16196,'29109',27303,27304,4,0),(16197,'29110',27211,27212,4,0),(16198,'29120',26819,26820,4,0),(16199,'29130',26815,26816,4,0),(16200,'29140',27149,27150,4,0),(16201,'29150',26831,26832,4,0),(16202,'29160',26975,26976,4,0),(16203,'29170',26993,26994,4,0),(16204,'29180',27261,27262,4,0),(16205,'29190',27151,27152,4,0),(16206,'29191',27153,27154,4,0),(16207,'29194',26799,26800,4,0),(16208,'29194',26803,26804,4,0),(16209,'29195',26997,26998,4,0),(16210,'29196',27155,27156,4,0),(16211,'29197',27157,27158,4,0),(16212,'29197',27319,27320,4,0),(16213,'29200',26853,26854,4,0),(16214,'29210',27017,27018,4,0),(16215,'29220',27013,27014,4,0),(16216,'29230',26855,26856,4,0),(16217,'29230',27355,27356,4,0),(16218,'29240',27323,27324,4,0),(16219,'29250',26857,26858,4,0),(16220,'29260',26859,26860,4,0),(16221,'29300',26871,26872,4,0),(16222,'29309',26873,26874,4,0),(16223,'29310',27349,27350,4,0),(16224,'29311',27351,27352,4,0),(16225,'29312',27363,27364,4,0),(16226,'29313',27367,27368,4,0),(16227,'29314',26861,26862,4,0),(16228,'29314',26875,26876,4,0),(16229,'29315',26877,26878,4,0),(16230,'29315',27359,27360,4,0),(16231,'29315',27369,27370,4,0),(16232,'29320',26937,26938,4,0),(16233,'29327',27299,27300,4,0),(16234,'29328',27293,27294,4,0),(16235,'29329',27295,27296,4,0),(16236,'29330',26827,26828,4,0),(16237,'29340',26941,26942,4,0),(16238,'29350',26893,26894,4,0),(16239,'29360',27217,27218,4,0),(16240,'29370',26929,26930,4,0),(16241,'29380',27005,27006,4,0),(16242,'29391',27007,27008,4,0),(16243,'29392',27097,27098,4,0),(16244,'29394',27265,27266,4,0),(16245,'29400',27267,27268,4,0),(16246,'29410',27381,27382,4,0),(16247,'29420',27033,27034,4,0),(16248,'29430',27269,27270,4,0),(16249,'29440',27085,27086,4,0),(16250,'29450',27249,27250,4,0),(16251,'29451',27233,27234,4,0),(16252,'29452',26959,26960,4,0),(16253,'29460',26849,26850,4,0),(16254,'29461',27049,27050,4,0),(16255,'29462',27105,27106,4,0),(16256,'29470',27159,27160,4,0),(16257,'29470',27021,27022,4,0),(16258,'29471',27271,27272,4,0),(16259,'29480',27067,27068,4,0),(16260,'29490',27009,27010,4,0),(16261,'29490',26933,26934,4,0),(16262,'29491',26909,26910,4,0),(16263,'29491',26811,26812,4,0),(16264,'29492',27101,27102,4,0),(16265,'29492',27071,27072,4,0),(16266,'29493',26901,26902,4,0),(16267,'29494',26897,26898,4,0),(16268,'29500',26835,26836,4,0),(16269,'29510',26837,26838,4,0),(16270,'29520',27063,27064,4,0),(16271,'29530',26789,26790,4,0),(16272,'29531',27079,27080,4,0),(16273,'29532',27207,27208,4,0),(16274,'29533',27081,27082,4,0),(16275,'29540',26863,26864,4,0),(16276,'29550',26881,26882,4,0),(16277,'29551',26955,26956,4,0),(16278,'29552',26883,26884,4,0),(16279,'29552',26839,26840,4,0),(16280,'29560',27241,27242,4,0),(16281,'29566',26979,26980,4,0),(16282,'29567',26845,26846,4,0),(16283,'29568',27243,27244,4,0),(16284,'29569',26965,26966,4,0),(16285,'29569',27245,27246,4,0),(16286,'29570',26967,26968,4,0),(16287,'29580',26969,26970,4,0),(16288,'29590',27161,27162,4,0),(16289,'29591',27163,27164,4,0),(16290,'29592',26971,26972,4,0),(16291,'29593',26841,26842,4,0),(16292,'29601',27177,27178,4,0),(16293,'29602',27179,27180,4,0),(16294,'29603',27181,27182,4,0),(16295,'29604',27183,27184,4,0),(16296,'29610',27227,27228,4,0),(16297,'29611',27089,27090,4,0),(16298,'29620',27229,27230,4,0),(16299,'29620',27165,27166,4,0),(16300,'29620',27307,27308,4,0),(16301,'29630',26913,26914,4,0),(16302,'29631',26915,26916,4,0),(16303,'29639',26917,26918,4,0),(16304,'29640',27059,27060,4,0),(16305,'29647',27191,27192,4,0),(16306,'29648',27193,27194,4,0),(16307,'29649',27195,27196,4,0),(16308,'29650',27197,27198,4,0),(16309,'29651',27199,27200,4,0),(16310,'29660',27185,27186,4,0),(16311,'29670',27187,27188,4,0),(16312,'29679',26905,26906,4,0),(16313,'29680',27037,27038,4,0),(16314,'29688',27039,27040,4,0),(16315,'29689',27041,27042,4,0),(16316,'29690',26983,26984,4,0),(16317,'29691',27171,27172,4,0),(16318,'29692',27173,27174,4,0),(16319,'29692',26985,26986,4,0),(16320,'29693',27043,27044,4,0),(16321,'29698',27045,27046,4,0),(16322,'29700',27327,27328,4,0),(16323,'29710',27237,27238,4,0),(16324,'29711',26793,26794,4,0),(16325,'29712',27373,27374,4,0),(16326,'29713',27375,27376,4,0),(16327,'29713',26795,26796,4,0),(16328,'29714',27275,27276,4,0),(16329,'29715',27285,27286,4,0),(16330,'29716',26945,26946,4,0),(16331,'29717',26887,26888,4,0),(16332,'29718',26823,26824,4,0),(16333,'29718',26921,26922,4,0),(16334,'29718',27025,27026,4,0),(16335,'29718',27029,27030,4,0),(16336,'29718',27329,27330,4,0),(16337,'29719',27331,27332,4,0),(16338,'29719',27287,27288,4,0),(16339,'29719',26925,26926,4,0),(16340,'29719',26947,26948,4,0),(16341,'29719',27377,27378,4,0),(16342,'29720',27253,27254,4,0),(16343,'29720',27167,27168,4,0),(16344,'29730',27255,27256,4,0),(16345,'29738',27203,27204,4,0),(16346,'29738',27257,27258,4,0),(16347,'29740',27333,27334,4,0),(16348,'29749',27335,27336,4,0),(16349,'29750',26807,26808,4,0),(16350,'29750',27337,27338,4,0),(16351,'29751',27339,27340,4,0),(16352,'29752',27279,27280,4,0),(16353,'29753',26867,26868,4,0),(16354,'29753',26889,26890,4,0),(16355,'29753',27281,27282,4,0),(16356,'29754',27001,27002,4,0),(16357,'29755',26951,26952,4,0),(16358,'29760',27341,27342,4,0),(16359,'29770',27311,27312,4,0),(16360,'29780',27221,27222,4,0),(16361,'29787',27223,27224,4,0),(16362,'29788',27053,27054,4,0),(16363,'29789',27055,27056,4,0),(16364,'29790',27343,27344,4,0),(16365,'29791',27109,27110,4,0),(16366,'29792',27345,27346,4,0),(16367,'29792',27093,27094,4,0),(16368,'29793',27313,27314,4,0),(16369,'29796',27315,27316,4,0),(16370,'30000',27745,27746,4,0),(16371,'30001',27747,27748,4,0),(16372,'30002',27749,27750,4,0),(16373,'30003',27751,27752,4,0),(16374,'30004',27753,27754,4,0),(16375,'30005',27755,27756,4,0),(16376,'30006',27757,27758,4,0),(16377,'30007',27759,27760,4,0),(16378,'30008',27761,27762,4,0),(16379,'30009',27763,27764,4,0),(16380,'30010',27765,27766,4,0),(16381,'30011',27767,27768,4,0),(16382,'30012',27769,27770,4,0),(16383,'30017',27631,27632,4,0),(16384,'30100',27771,27772,4,0),(16385,'30107',27773,27774,4,0),(16386,'30108',27775,27776,4,0),(16387,'30110',27777,27778,4,0),(16388,'30120',27779,27780,4,0),(16389,'30130',27437,27438,4,0),(16390,'30139',27781,27782,4,0),(16391,'30140',27909,27910,4,0),(16392,'30148',27911,27912,4,0),(16393,'30149',27913,27914,4,0),(16394,'30150',27783,27784,4,0),(16395,'30151',27785,27786,4,0),(16396,'30152',27787,27788,4,0),(16397,'30153',27789,27790,4,0),(16398,'30154',27791,27792,4,0),(16399,'30155',27793,27794,4,0),(16400,'30156',27795,27796,4,0),(16401,'30157',27797,27798,4,0),(16402,'30158',27799,27800,4,0),(16403,'30160',27801,27802,4,0),(16404,'30161',27803,27804,4,0),(16405,'30162',27805,27806,4,0),(16406,'30163',27807,27808,4,0),(16407,'30164',27809,27810,4,0),(16408,'30165',27811,27812,4,0),(16409,'30166',27813,27814,4,0),(16410,'30167',27815,27816,4,0),(16411,'30168',27817,27818,4,0),(16412,'30169',27819,27820,4,0),(16413,'30170',27731,27732,4,0),(16414,'30176',27869,27870,4,0),(16415,'30178',27733,27734,4,0),(16416,'30179',27821,27822,4,0),(16417,'30180',27445,27446,4,0),(16418,'30189',27447,27448,4,0),(16419,'30189',27557,27558,4,0),(16420,'30190',27409,27410,4,0),(16421,'30191',27455,27456,4,0),(16422,'30192',27457,27458,4,0),(16423,'30193',27735,27736,4,0),(16424,'30194',27737,27738,4,0),(16425,'30195',27461,27462,4,0),(16426,'30196',27871,27872,4,0),(16427,'30201',27475,27476,4,0),(16428,'30202',27477,27478,4,0),(16429,'30203',27479,27480,4,0),(16430,'30204',27481,27482,4,0),(16431,'30205',27483,27484,4,0),(16432,'30300',27485,27486,4,0),(16433,'30310',27487,27488,4,0),(16434,'30319',27489,27490,4,0),(16435,'30320',27589,27590,4,0),(16436,'30330',27491,27492,4,0),(16437,'30331',27823,27824,4,0),(16438,'30332',27591,27592,4,0),(16439,'30333',27593,27594,4,0),(16440,'30334',27595,27596,4,0),(16441,'30335',27597,27598,4,0),(16442,'30335',27677,27678,4,0),(16443,'30338',27599,27600,4,0),(16444,'30350',27493,27494,4,0),(16445,'30351',27495,27496,4,0),(16446,'30360',27613,27614,4,0),(16447,'30362',27615,27616,4,0),(16448,'30364',27617,27618,4,0),(16449,'30365',27497,27498,4,0),(16450,'30366',27499,27500,4,0),(16451,'30367',27501,27502,4,0),(16452,'30368',27503,27504,4,0),(16453,'30369',27505,27506,4,0),(16454,'30369',27619,27620,4,0),(16455,'30370',27507,27508,4,0),(16456,'30370',27885,27886,4,0),(16457,'30379',27887,27888,4,0),(16458,'30380',27509,27510,4,0),(16459,'30380',27889,27890,4,0),(16460,'30381',27511,27512,4,0),(16461,'30382',27513,27514,4,0),(16462,'30383',27515,27516,4,0),(16463,'30384',27517,27518,4,0),(16464,'30385',27519,27520,4,0),(16465,'30387',27521,27522,4,0),(16466,'30387',27713,27714,4,0),(16467,'30389',27523,27524,4,0),(16468,'30390',27525,27526,4,0),(16469,'30391',27527,27528,4,0),(16470,'30392',27529,27530,4,0),(16471,'30393',27531,27532,4,0),(16472,'30394',27533,27534,4,0),(16473,'30395',27535,27536,4,0),(16474,'30396',27537,27538,4,0),(16475,'30397',27539,27540,4,0),(16476,'30398',27541,27542,4,0),(16477,'30399',27543,27544,4,0),(16478,'30400',27463,27464,4,0),(16479,'30400',27715,27716,4,0),(16480,'30410',27465,27466,4,0),(16481,'30410',27717,27718,4,0),(16482,'30411',27467,27468,4,0),(16483,'30411',27719,27720,4,0),(16484,'30412',27469,27470,4,0),(16485,'30413',27721,27722,4,0),(16486,'30413',27471,27472,4,0),(16487,'30420',27559,27560,4,0),(16488,'30420',27451,27452,4,0),(16489,'30430',27561,27562,4,0),(16490,'30438',27563,27564,4,0),(16491,'30439',27565,27566,4,0),(16492,'30440',27723,27724,4,0),(16493,'30441',27725,27726,4,0),(16494,'30442',27727,27728,4,0),(16495,'30500',27699,27700,4,0),(16496,'30506',27701,27702,4,0),(16497,'30507',27703,27704,4,0),(16498,'30508',27705,27706,4,0),(16499,'30509',27707,27708,4,0),(16500,'30510',27953,27954,4,0),(16501,'30520',27605,27606,4,0),(16502,'30528',27607,27608,4,0),(16503,'30529',27609,27610,4,0),(16504,'30540',27441,27442,4,0),(16505,'30550',27397,27398,4,0),(16506,'30559',27399,27400,4,0),(16507,'30560',27421,27422,4,0),(16508,'30561',27423,27424,4,0),(16509,'30562',27569,27570,4,0),(16510,'30563',27571,27572,4,0),(16511,'30564',27669,27670,4,0),(16512,'30565',27623,27624,4,0),(16513,'30570',27825,27826,4,0),(16514,'30579',27827,27828,4,0),(16515,'30580',27829,27830,4,0),(16516,'30588',27831,27832,4,0),(16517,'30589',27833,27834,4,0),(16518,'30590',27835,27836,4,0),(16519,'30590',27545,27546,4,0),(16520,'30591',27919,27920,4,0),(16521,'30592',27837,27838,4,0),(16522,'30592',27891,27892,4,0),(16523,'30592',27921,27922,4,0),(16524,'30593',27547,27548,4,0),(16525,'30594',27549,27550,4,0),(16526,'30600',27431,27432,4,0),(16527,'30609',27433,27434,4,0),(16528,'30610',27881,27882,4,0),(16529,'30611',27865,27866,4,0),(16530,'30612',27943,27944,4,0),(16531,'30613',27947,27948,4,0),(16532,'30620',27579,27580,4,0),(16533,'30626',27387,27388,4,0),(16534,'30626',27581,27582,4,0),(16535,'30628',27583,27584,4,0),(16536,'30629',27915,27916,4,0),(16537,'30629',27585,27586,4,0),(16538,'30640',27389,27390,4,0),(16539,'30648',27391,27392,4,0),(16540,'30649',27393,27394,4,0),(16541,'30700',27923,27924,4,0),(16542,'30708',27925,27926,4,0),(16543,'30709',27927,27928,4,0),(16544,'30710',27673,27674,4,0),(16545,'30710',27929,27930,4,0),(16546,'30720',27893,27894,4,0),(16547,'30729',27895,27896,4,0),(16548,'30730',27897,27898,4,0),(16549,'30739',27899,27900,4,0),(16550,'30739',27931,27932,4,0),(16551,'30740',27903,27904,4,0),(16552,'30749',27905,27906,4,0),(16553,'30750',27839,27840,4,0),(16554,'30800',27633,27634,4,0),(16555,'30810',27635,27636,4,0),(16556,'30811',27637,27638,4,0),(16557,'30812',27639,27640,4,0),(16558,'30813',27641,27642,4,0),(16559,'30814',27643,27644,4,0),(16560,'30815',27645,27646,4,0),(16561,'30816',27647,27648,4,0),(16562,'30817',27649,27650,4,0),(16563,'30818',27651,27652,4,0),(16564,'30820',27413,27414,4,0),(16565,'30826',27841,27842,4,0),(16566,'30830',27843,27844,4,0),(16567,'30831',27845,27846,4,0),(16568,'30832',27847,27848,4,0),(16569,'30833',27849,27850,4,0),(16570,'30834',27653,27654,4,0),(16571,'30834',27851,27852,4,0),(16572,'30835',27853,27854,4,0),(16573,'30835',27551,27552,4,0),(16574,'30836',27855,27856,4,0),(16575,'30837',27857,27858,4,0),(16576,'30840',27427,27428,4,0),(16577,'30850',27859,27860,4,0),(16578,'30850',27935,27936,4,0),(16579,'30858',27937,27938,4,0),(16580,'30858',27679,27680,4,0),(16581,'30859',27939,27940,4,0),(16582,'30859',27417,27418,4,0),(16583,'30860',27681,27682,4,0),(16584,'30868',27553,27554,4,0),(16585,'30868',27683,27684,4,0),(16586,'30870',27685,27686,4,0),(16587,'30875',27687,27688,4,0),(16588,'30876',27655,27656,4,0),(16589,'30876',27689,27690,4,0),(16590,'30877',27691,27692,4,0),(16591,'30878',27657,27658,4,0),(16592,'30878',27693,27694,4,0),(16593,'30879',27695,27696,4,0),(16594,'30880',27403,27404,4,0),(16595,'30883',27861,27862,4,0),(16596,'30889',27405,27406,4,0),(16597,'30889',27659,27660,4,0),(16598,'30890',27661,27662,4,0),(16599,'30890',27875,27876,4,0),(16600,'30891',27877,27878,4,0),(16601,'30892',27627,27628,4,0),(16602,'30893',27663,27664,4,0),(16603,'31001',28951,28952,4,0),(16604,'31002',28953,28954,4,0),(16605,'31003',28955,28956,4,0),(16606,'31004',28957,28958,4,0),(16607,'31005',28959,28960,4,0),(16608,'31006',28961,28962,4,0),(16609,'31007',28963,28964,4,0),(16610,'31008',28965,28966,4,0),(16611,'31009',28967,28968,4,0),(16612,'31010',28969,28970,4,0),(16613,'31010',28155,28156,4,0),(16614,'31011',28971,28972,4,0),(16615,'31012',28973,28974,4,0),(16616,'31013',28029,28030,4,0),(16617,'31013',28227,28228,4,0),(16618,'31013',28233,28234,4,0),(16619,'31014',28975,28976,4,0),(16620,'31015',28977,28978,4,0),(16621,'31016',28979,28980,4,0),(16622,'31100',28999,29000,4,0),(16623,'31109',28123,28124,4,0),(16624,'31110',28867,28868,4,0),(16625,'31119',28869,28870,4,0),(16626,'31130',28767,28768,4,0),(16627,'31131',28327,28328,4,0),(16628,'31132',29221,29222,4,0),(16629,'31133',28683,28684,4,0),(16630,'31133',29167,29168,4,0),(16631,'31140',28119,28120,4,0),(16632,'31150',28793,28794,4,0),(16633,'31151',28875,28876,4,0),(16634,'31152',28851,28852,4,0),(16635,'31153',27985,27986,4,0),(16636,'31153',28377,28378,4,0),(16637,'31154',29103,29104,4,0),(16638,'31154',29081,29082,4,0),(16639,'31154',28025,28026,4,0),(16640,'31160',28931,28932,4,0),(16641,'31170',28315,28316,4,0),(16642,'31170',28603,28604,4,0),(16643,'31171',28317,28318,4,0),(16644,'31172',28531,28532,4,0),(16645,'31172',29185,29186,4,0),(16646,'31172',28605,28606,4,0),(16647,'31173',28319,28320,4,0),(16648,'31174',28365,28366,4,0),(16649,'31174',28547,28548,4,0),(16650,'31174',28251,28252,4,0),(16651,'31174',28209,28210,4,0),(16652,'31174',28445,28446,4,0),(16653,'31174',29235,29236,4,0),(16654,'31174',28331,28332,4,0),(16655,'31174',28335,28336,4,0),(16656,'31175',29025,29026,4,0),(16657,'31175',28539,28540,4,0),(16658,'31176',29189,29190,4,0),(16659,'31176',28541,28542,4,0),(16660,'31177',29191,29192,4,0),(16661,'31177',28719,28720,4,0),(16662,'31178',27963,27964,4,0),(16663,'31179',29193,29194,4,0),(16664,'31180',29243,29244,4,0),(16665,'31190',28337,28338,4,0),(16666,'31191',28495,28496,4,0),(16667,'31191',28223,28224,4,0),(16668,'31192',28059,28060,4,0),(16669,'31192',29175,29176,4,0),(16670,'31193',28633,28634,4,0),(16671,'31193',28127,28128,4,0),(16672,'31194',28635,28636,4,0),(16673,'31194',28453,28454,4,0),(16674,'31195',28229,28230,4,0),(16675,'31195',28235,28236,4,0),(16676,'31200',28417,28418,4,0),(16677,'31208',28137,28138,4,0),(16678,'31210',28749,28750,4,0),(16679,'31219',28991,28992,4,0),(16680,'31219',28827,28828,4,0),(16681,'31219',29085,29086,4,0),(16682,'31219',28805,28806,4,0),(16683,'31219',29063,29064,4,0),(16684,'31219',28787,28788,4,0),(16685,'31220',29043,29044,4,0),(16686,'31227',28653,28654,4,0),(16687,'31227',28523,28524,4,0),(16688,'31227',28275,28276,4,0),(16689,'31227',28771,28772,4,0),(16690,'31228',28107,28108,4,0),(16691,'31228',29087,29088,4,0),(16692,'31228',28147,28148,4,0),(16693,'31228',27989,27990,4,0),(16694,'31228',28413,28414,4,0),(16695,'31229',28369,28370,4,0),(16696,'31229',28167,28168,4,0),(16697,'31229',28349,28350,4,0),(16698,'31229',29091,29092,4,0),(16699,'31230',29205,29206,4,0),(16700,'31239',28071,28072,4,0),(16701,'31240',28139,28140,4,0),(16702,'31241',28797,28798,4,0),(16703,'31241',27997,27998,4,0),(16704,'31241',28571,28572,4,0),(16705,'31242',29217,29218,4,0),(16706,'31243',28163,28164,4,0),(16707,'31243',28111,28112,4,0),(16708,'31243',28573,28574,4,0),(16709,'31243',28757,28758,4,0),(16710,'31250',28947,28948,4,0),(16711,'31251',28657,28658,4,0),(16712,'31252',28219,28220,4,0),(16713,'31253',28809,28810,4,0),(16714,'31260',28709,28710,4,0),(16715,'31261',28021,28022,4,0),(16716,'31262',28003,28004,4,0),(16717,'31263',28087,28088,4,0),(16718,'31263',28353,28354,4,0),(16719,'31264',27975,27976,4,0),(16720,'31264',28823,28824,4,0),(16721,'31270',28661,28662,4,0),(16722,'31271',28055,28056,4,0),(16723,'31271',28449,28450,4,0),(16724,'31272',28011,28012,4,0),(16725,'31280',27959,27960,4,0),(16726,'31280',28835,28836,4,0),(16727,'31280',28015,28016,4,0),(16728,'31281',28433,28434,4,0),(16729,'31281',28883,28884,4,0),(16730,'31281',28905,28906,4,0),(16731,'31281',28687,28688,4,0),(16732,'31281',28017,28018,4,0),(16733,'31282',28863,28864,4,0),(16734,'31282',28789,28790,4,0),(16735,'31283',28645,28646,4,0),(16736,'31284',29255,29256,4,0),(16737,'31290',29195,29196,4,0),(16738,'31290',27999,28000,4,0),(16739,'31291',28543,28544,4,0),(16740,'31291',28549,28550,4,0),(16741,'31292',29223,29224,4,0),(16742,'31292',29197,29198,4,0),(16743,'31292',27977,27978,4,0),(16744,'31293',29059,29060,4,0),(16745,'31300',29071,29072,4,0),(16746,'31310',28293,28294,4,0),(16747,'31311',28295,28296,4,0),(16748,'31312',28303,28304,4,0),(16749,'31313',28847,28848,4,0),(16750,'31314',29047,29048,4,0),(16751,'31315',28839,28840,4,0),(16752,'31320',28801,28802,4,0),(16753,'31330',29213,29214,4,0),(16754,'31340',28775,28776,4,0),(16755,'31350',28983,28984,4,0),(16756,'31360',28487,28488,4,0),(16757,'31370',28475,28476,4,0),(16758,'31380',28283,28284,4,0),(16759,'31381',28285,28286,4,0),(16760,'31382',28779,28780,4,0),(16761,'31383',28841,28842,4,0),(16762,'31390',28909,28910,4,0),(16763,'31391',28843,28844,4,0),(16764,'31392',28995,28996,4,0),(16765,'31393',28205,28206,4,0),(16766,'31394',29003,29004,4,0),(16767,'31395',28913,28914,4,0),(16768,'31395',28515,28516,4,0),(16769,'31395',28159,28160,4,0),(16770,'31395',28699,28700,4,0),(16771,'31395',28927,28928,4,0),(16772,'31396',29127,29128,4,0),(16773,'31396',28915,28916,4,0),(16774,'31397',29075,29076,4,0),(16775,'31398',29077,29078,4,0),(16776,'31398',28255,28256,4,0),(16777,'31400',29037,29038,4,0),(16778,'31409',29039,29040,4,0),(16779,'31409',28627,28628,4,0),(16780,'31410',29231,29232,4,0),(16781,'31411',28629,28630,4,0),(16782,'31412',28263,28264,4,0),(16783,'31413',29209,29210,4,0),(16784,'31414',28511,28512,4,0),(16785,'31415',29015,29016,4,0),(16786,'31416',29163,29164,4,0),(16787,'31417',28591,28592,4,0),(16788,'31418',29171,29172,4,0),(16789,'31420',29159,29160,4,0),(16790,'31421',28615,28616,4,0),(16791,'31422',29121,29122,4,0),(16792,'31430',28037,28038,4,0),(16793,'31438',28741,28742,4,0),(16794,'31438',28079,28080,4,0),(16795,'31439',28743,28744,4,0),(16796,'31439',28939,28940,4,0),(16797,'31439',28081,28082,4,0),(16798,'31440',28753,28754,4,0),(16799,'31448',29141,29142,4,0),(16800,'31448',29147,29148,4,0),(16801,'31449',29149,29150,4,0),(16802,'31450',28855,28856,4,0),(16803,'31451',28935,28936,4,0),(16804,'31451',28503,28504,4,0),(16805,'31451',28857,28858,4,0),(16806,'31451',29051,29052,4,0),(16807,'31452',28535,28536,4,0),(16808,'31453',28409,28410,4,0),(16809,'31454',29011,29012,4,0),(16810,'31454',28311,28312,4,0),(16811,'31454',29143,29144,4,0),(16812,'31454',28859,28860,4,0),(16813,'31460',28679,28680,4,0),(16814,'31460',27993,27994,4,0),(16815,'31470',28871,28872,4,0),(16816,'31471',28815,28816,4,0),(16817,'31472',28561,28562,4,0),(16818,'31472',29123,29124,4,0),(16819,'31473',28563,28564,4,0),(16820,'31480',29151,29152,4,0),(16821,'31481',28745,28746,4,0),(16822,'31481',28083,28084,4,0),(16823,'31482',28727,28728,4,0),(16824,'31483',28729,28730,4,0),(16825,'31484',28731,28732,4,0),(16826,'31485',28733,28734,4,0),(16827,'31486',29177,29178,4,0),(16828,'31487',28723,28724,4,0),(16829,'31490',28305,28306,4,0),(16830,'31491',28469,28470,4,0),(16831,'31492',28471,28472,4,0),(16832,'31493',28499,28500,4,0),(16833,'31494',28701,28702,4,0),(16834,'31494',28705,28706,4,0),(16835,'31494',28405,28406,4,0),(16836,'31495',29033,29034,4,0),(16837,'31496',29111,29112,4,0),(16838,'31500',29095,29096,4,0),(16839,'31510',28491,28492,4,0),(16840,'31511',28271,28272,4,0),(16841,'31512',28483,28484,4,0),(16842,'31513',28095,28096,4,0),(16843,'31514',29201,29202,4,0),(16844,'31515',28279,28280,4,0),(16845,'31520',28299,28300,4,0),(16846,'31521',28831,28832,4,0),(16847,'31522',29099,29100,4,0),(16848,'31522',28819,28820,4,0),(16849,'31523',28171,28172,4,0),(16850,'31523',27981,27982,4,0),(16851,'31523',28811,28812,4,0),(16852,'31530',28345,28346,4,0),(16853,'31540',28259,28260,4,0),(16854,'31550',29007,29008,4,0),(16855,'31560',28143,28144,4,0),(16856,'31570',29029,29030,4,0),(16857,'31579',28289,28290,4,0),(16858,'31580',28737,28738,4,0),(16859,'31587',28783,28784,4,0),(16860,'31588',28675,28676,4,0),(16861,'31589',29055,29056,4,0),(16862,'31590',13113,13114,4,0),(16863,'31591',28341,28342,4,0),(16864,'31592',28323,28324,4,0),(16865,'31593',28479,28480,4,0),(16866,'31600',28267,28268,4,0),(16867,'31610',29227,29228,4,0),(16868,'31620',28557,28558,4,0),(16869,'31620',29179,29180,4,0),(16870,'31621',29181,29182,4,0),(16871,'31630',28421,28422,4,0),(16872,'31638',28389,28390,4,0),(16873,'31638',28423,28424,4,0),(16874,'31639',28391,28392,4,0),(16875,'31639',28425,28426,4,0),(16876,'31640',28133,28134,4,0),(16877,'31650',28943,28944,4,0),(16878,'31660',28761,28762,4,0),(16879,'31669',28763,28764,4,0),(16880,'31670',28919,28920,4,0),(16881,'31671',28099,28100,4,0),(16882,'31671',28553,28554,4,0),(16883,'31671',28923,28924,4,0),(16884,'31671',28103,28104,4,0),(16885,'31680',28879,28880,4,0),(16886,'31689',28619,28620,4,0),(16887,'31690',28459,28460,4,0),(16888,'31691',28623,28624,4,0),(16889,'31692',28507,28508,4,0),(16890,'31692',27967,27968,4,0),(16891,'31692',27971,27972,4,0),(16892,'31693',28519,28520,4,0),(16893,'31694',28393,28394,4,0),(16894,'31695',28395,28396,4,0),(16895,'31696',28397,28398,4,0),(16896,'31697',28399,28400,4,0),(16897,'31698',28427,28428,4,0),(16898,'31699',28401,28402,4,0),(16899,'31699',28429,28430,4,0),(16900,'31700',28181,28182,4,0),(16901,'31710',29251,29252,4,0),(16902,'31711',29131,29132,4,0),(16903,'31712',29133,29134,4,0),(16904,'31713',28183,28184,4,0),(16905,'31714',28185,28186,4,0),(16906,'31715',28187,28188,4,0),(16907,'31720',28189,28190,4,0),(16908,'31720',28239,28240,4,0),(16909,'31730',28191,28192,4,0),(16910,'31740',28361,28362,4,0),(16911,'31744',28373,28374,4,0),(16912,'31745',28595,28596,4,0),(16913,'31746',29247,29248,4,0),(16914,'31747',29021,29022,4,0),(16915,'31748',28381,28382,4,0),(16916,'31749',28463,28464,4,0),(16917,'31750',28357,28358,4,0),(16918,'31751',28893,28894,4,0),(16919,'31752',29155,29156,4,0),(16920,'31753',28201,28202,4,0),(16921,'31754',28527,28528,4,0),(16922,'31754',28063,28064,4,0),(16923,'31760',28437,28438,4,0),(16924,'31770',28713,28714,4,0),(16925,'31780',28213,28214,4,0),(16926,'31789',28715,28716,4,0),(16927,'31789',28215,28216,4,0),(16928,'31790',28067,28068,4,0),(16929,'31790',28567,28568,4,0),(16930,'31791',29067,29068,4,0),(16931,'31792',28241,28242,4,0),(16932,'31793',28243,28244,4,0),(16933,'31794',28193,28194,4,0),(16934,'31794',28465,28466,4,0),(16935,'31795',28195,28196,4,0),(16936,'31796',28197,28198,4,0),(16937,'31797',29115,29116,4,0),(16938,'31798',28033,28034,4,0),(16939,'31798',28649,28650,4,0),(16940,'31799',28897,28898,4,0),(16941,'31799',28455,28456,4,0),(16942,'31799',29117,29118,4,0),(16943,'31799',28887,28888,4,0),(16944,'31800',28007,28008,4,0),(16945,'31809',28901,28902,4,0),(16946,'31809',29239,29240,4,0),(16947,'31810',28599,28600,4,0),(16948,'31810',29137,29138,4,0),(16949,'31810',28151,28152,4,0),(16950,'31820',28441,28442,4,0),(16951,'31829',28385,28386,4,0),(16952,'31830',28641,28642,4,0),(16953,'31839',28075,28076,4,0),(16954,'31840',28115,28116,4,0),(16955,'31840',29107,29108,4,0),(16956,'31849',28045,28046,4,0),(16957,'31849',28583,28584,4,0),(16958,'31850',28047,28048,4,0),(16959,'31860',28587,28588,4,0),(16960,'31866',28175,28176,4,0),(16961,'31867',28049,28050,4,0),(16962,'31867',28577,28578,4,0),(16963,'31867',28607,28608,4,0),(16964,'31867',28889,28890,4,0),(16965,'31867',28129,28130,4,0),(16966,'31868',28051,28052,4,0),(16967,'31868',28609,28610,4,0),(16968,'31869',28579,28580,4,0),(16969,'31869',28177,28178,4,0),(16970,'31870',28695,28696,4,0),(16971,'31876',28091,28092,4,0),(16972,'31877',28665,28666,4,0),(16973,'31878',28667,28668,4,0),(16974,'31879',28669,28670,4,0),(16975,'31880',28691,28692,4,0),(16976,'31890',28247,28248,4,0),(16977,'31891',28671,28672,4,0),(16978,'31891',28041,28042,4,0),(16979,'31892',28611,28612,4,0),(16980,'31892',28637,28638,4,0),(16981,'32001',29895,29896,4,0),(16982,'32002',29427,29428,4,0),(16983,'32002',29897,29898,4,0),(16984,'32003',29899,29900,4,0),(16985,'32004',29901,29902,4,0),(16986,'32005',30077,30078,4,0),(16987,'32005',29429,29430,4,0),(16988,'32005',29903,29904,4,0),(16989,'32100',29601,29602,4,0),(16990,'32101',30199,30200,4,0),(16991,'32102',30201,30202,4,0),(16992,'32103',29905,29906,4,0),(16993,'32110',29929,29930,4,0),(16994,'32111',29931,29932,4,0),(16995,'32120',30203,30204,4,0),(16996,'32120',29301,29302,4,0),(16997,'32130',30089,30090,4,0),(16998,'32131',27665,27666,4,0),(16999,'32133',30091,30092,4,0),(17000,'32134',30093,30094,4,0),(17001,'32135',29977,29978,4,0),(17002,'32135',30095,30096,4,0),(17003,'32136',30097,30098,4,0),(17004,'32137',29979,29980,4,0),(17005,'32137',30099,30100,4,0),(17006,'32138',29981,29982,4,0),(17007,'32139',30101,30102,4,0),(17008,'32140',30205,30206,4,0),(17009,'32141',30103,30104,4,0),(17010,'32141',30207,30208,4,0),(17011,'32150',29303,29304,4,0),(17012,'32151',29305,29306,4,0),(17013,'32152',29603,29604,4,0),(17014,'32153',29307,29308,4,0),(17015,'32153',29605,29606,4,0),(17016,'32160',29793,29794,4,0),(17017,'32161',29795,29796,4,0),(17018,'32162',29797,29798,4,0),(17019,'32163',29799,29800,4,0),(17020,'32164',29801,29802,4,0),(17021,'32170',29375,29376,4,0),(17022,'32171',29377,29378,4,0),(17023,'32172',29907,29908,4,0),(17024,'32172',29379,29380,4,0),(17025,'32200',29611,29612,4,0),(17026,'32211',29613,29614,4,0),(17027,'32212',29643,29644,4,0),(17028,'32213',29615,29616,4,0),(17029,'32220',29937,29938,4,0),(17030,'32226',29939,29940,4,0),(17031,'32227',29941,29942,4,0),(17032,'32228',29943,29944,4,0),(17033,'32229',29945,29946,4,0),(17034,'32235',29985,29986,4,0),(17035,'32236',29947,29948,4,0),(17036,'32300',29813,29814,4,0),(17037,'32310',30057,30058,4,0),(17038,'32311',30059,30060,4,0),(17039,'32312',30061,30062,4,0),(17040,'32313',29815,29816,4,0),(17041,'32314',29817,29818,4,0),(17042,'32315',29819,29820,4,0),(17043,'32315',30211,30212,4,0),(17044,'32316',30213,30214,4,0),(17045,'32317',29821,29822,4,0),(17046,'32318',29823,29824,4,0),(17047,'32320',30063,30064,4,0),(17048,'32329',29497,29498,4,0),(17049,'32329',30065,30066,4,0),(17050,'32330',29499,29500,4,0),(17051,'32334',29501,29502,4,0),(17052,'32335',29503,29504,4,0),(17053,'32336',29505,29506,4,0),(17054,'32337',29507,29508,4,0),(17055,'32338',29509,29510,4,0),(17056,'32339',29511,29512,4,0),(17057,'32340',30215,30216,4,0),(17058,'32348',30217,30218,4,0),(17059,'32349',30219,30220,4,0),(17060,'32350',29327,29328,4,0),(17061,'32356',29967,29968,4,0),(17062,'32357',29969,29970,4,0),(17063,'32357',29329,29330,4,0),(17064,'32357',29827,29828,4,0),(17065,'32357',29647,29648,4,0),(17066,'32357',29341,29342,4,0),(17067,'32358',29649,29650,4,0),(17068,'32359',29331,29332,4,0),(17069,'32360',29343,29344,4,0),(17070,'32365',29345,29346,4,0),(17071,'32366',29347,29348,4,0),(17072,'32367',29349,29350,4,0),(17073,'32368',29351,29352,4,0),(17074,'32369',29353,29354,4,0),(17075,'32370',29651,29652,4,0),(17076,'32370',29971,29972,4,0),(17077,'32371',29653,29654,4,0),(17078,'32371',29973,29974,4,0),(17079,'32372',29829,29830,4,0),(17080,'32373',29831,29832,4,0),(17081,'32374',29833,29834,4,0),(17082,'32375',29727,29728,4,0),(17083,'32375',29835,29836,4,0),(17084,'32400',30033,30034,4,0),(17085,'32410',29759,29760,4,0),(17086,'32411',29761,29762,4,0),(17087,'32412',29485,29486,4,0),(17088,'32413',29487,29488,4,0),(17089,'32414',30035,30036,4,0),(17090,'32415',30037,30038,4,0),(17091,'32416',30039,30040,4,0),(17092,'32416',29489,29490,4,0),(17093,'32417',30041,30042,4,0),(17094,'32417',29803,29804,4,0),(17095,'32417',29261,29262,4,0),(17096,'32418',30043,30044,4,0),(17097,'32420',29667,29668,4,0),(17098,'32425',29669,29670,4,0),(17099,'32426',29671,29672,4,0),(17100,'32427',29673,29674,4,0),(17101,'32428',29675,29676,4,0),(17102,'32429',29677,29678,4,0),(17103,'32430',29531,29532,4,0),(17104,'32431',29441,29442,4,0),(17105,'32432',29443,29444,4,0),(17106,'32433',29491,29492,4,0),(17107,'32434',29493,29494,4,0),(17108,'32440',29309,29310,4,0),(17109,'32448',29805,29806,4,0),(17110,'32449',29311,29312,4,0),(17111,'32450',29581,29582,4,0),(17112,'32452',29999,30000,4,0),(17113,'32453',30069,30070,4,0),(17114,'32454',29583,29584,4,0),(17115,'32455',30071,30072,4,0),(17116,'32456',30001,30002,4,0),(17117,'32456',29269,29270,4,0),(17118,'32457',30003,30004,4,0),(17119,'32459',29585,29586,4,0),(17120,'32499',29291,29292,4,0),(17121,'32500',29839,29840,4,0),(17122,'32510',29841,29842,4,0),(17123,'32511',29843,29844,4,0),(17124,'32512',29451,29452,4,0),(17125,'32513',29845,29846,4,0),(17126,'32514',29453,29454,4,0),(17127,'32515',30073,30074,4,0),(17128,'32515',29847,29848,4,0),(17129,'32516',29849,29850,4,0),(17130,'32520',29455,29456,4,0),(17131,'32520',29447,29448,4,0),(17132,'32520',29385,29386,4,0),(17133,'32521',29457,29458,4,0),(17134,'32522',29459,29460,4,0),(17135,'32523',29461,29462,4,0),(17136,'32524',29463,29464,4,0),(17137,'32525',29465,29466,4,0),(17138,'32526',29467,29468,4,0),(17139,'32526',29857,29858,4,0),(17140,'32530',29469,29470,4,0),(17141,'32530',29859,29860,4,0),(17142,'32534',29851,29852,4,0),(17143,'32535',29861,29862,4,0),(17144,'32536',29863,29864,4,0),(17145,'32537',29865,29866,4,0),(17146,'32538',29867,29868,4,0),(17147,'32539',29869,29870,4,0),(17148,'32540',29271,29272,4,0),(17149,'32545',29273,29274,4,0),(17150,'32546',29275,29276,4,0),(17151,'32547',29277,29278,4,0),(17152,'32547',30245,30246,4,0),(17153,'32548',29293,29294,4,0),(17154,'32549',29295,29296,4,0),(17155,'32550',30177,30178,4,0),(17156,'32554',30179,30180,4,0),(17157,'32555',30181,30182,4,0),(17158,'32556',30183,30184,4,0),(17159,'32557',30247,30248,4,0),(17160,'32557',30185,30186,4,0),(17161,'32558',30187,30188,4,0),(17162,'32560',30189,30190,4,0),(17163,'32562',30191,30192,4,0),(17164,'32563',30193,30194,4,0),(17165,'32570',29741,29742,4,0),(17166,'32572',29743,29744,4,0),(17167,'32572',30005,30006,4,0),(17168,'32574',29745,29746,4,0),(17169,'32574',29853,29854,4,0),(17170,'32575',29747,29748,4,0),(17171,'32576',29749,29750,4,0),(17172,'32577',29751,29752,4,0),(17173,'32578',30007,30008,4,0),(17174,'32578',29753,29754,4,0),(17175,'32579',29755,29756,4,0),(17176,'32590',29297,29298,4,0),(17177,'32591',30249,30250,4,0),(17178,'32591',29535,29536,4,0),(17179,'32592',29933,29934,4,0),(17180,'32592',29415,29416,4,0),(17181,'32593',29909,29910,4,0),(17182,'32600',30159,30160,4,0),(17183,'32610',30049,30050,4,0),(17184,'32610',30235,30236,4,0),(17185,'32611',30051,30052,4,0),(17186,'32611',29775,29776,4,0),(17187,'32612',30053,30054,4,0),(17188,'32612',29537,29538,4,0),(17189,'32613',29883,29884,4,0),(17190,'32614',30237,30238,4,0),(17191,'32615',30161,30162,4,0),(17192,'32616',30239,30240,4,0),(17193,'32617',30241,30242,4,0),(17194,'32618',29777,29778,4,0),(17195,'32619',30163,30164,4,0),(17196,'32620',29657,29658,4,0),(17197,'32621',29659,29660,4,0),(17198,'32622',29661,29662,4,0),(17199,'32623',29663,29664,4,0),(17200,'32624',29539,29540,4,0),(17201,'32624',29779,29780,4,0),(17202,'32625',29541,29542,4,0),(17203,'32626',29543,29544,4,0),(17204,'32630',30253,30254,4,0),(17205,'32631',30145,30146,4,0),(17206,'32631',30121,30122,4,0),(17207,'32631',30255,30256,4,0),(17208,'32632',30257,30258,4,0),(17209,'32632',29889,29890,4,0),(17210,'32632',29389,29390,4,0),(17211,'32633',29391,29392,4,0),(17212,'32634',29891,29892,4,0),(17213,'32635',30259,30260,4,0),(17214,'32635',30165,30166,4,0),(17215,'32636',30261,30262,4,0),(17216,'32636',30123,30124,4,0),(17217,'32637',30263,30264,4,0),(17218,'32637',30167,30168,4,0),(17219,'32640',30265,30266,4,0),(17220,'32641',29989,29990,4,0),(17221,'32643',29991,29992,4,0),(17222,'32644',29993,29994,4,0),(17223,'32644',29473,29474,4,0),(17224,'32645',29995,29996,4,0),(17225,'32645',29475,29476,4,0),(17226,'32646',29393,29394,4,0),(17227,'32646',29477,29478,4,0),(17228,'32647',29479,29480,4,0),(17229,'32648',29481,29482,4,0),(17230,'32650',30229,30230,4,0),(17231,'32651',30231,30232,4,0),(17232,'32652',30015,30016,4,0),(17233,'32653',30017,30018,4,0),(17234,'32654',30019,30020,4,0),(17235,'32655',30021,30022,4,0),(17236,'32660',29357,29358,4,0),(17237,'32664',29359,29360,4,0),(17238,'32665',29361,29362,4,0),(17239,'32666',29363,29364,4,0),(17240,'32667',29365,29366,4,0),(17241,'32668',29367,29368,4,0),(17242,'32669',29369,29370,4,0),(17243,'32670',30269,30270,4,0),(17244,'32678',30271,30272,4,0),(17245,'32679',30273,30274,4,0),(17246,'32680',29619,29620,4,0),(17247,'32688',29621,29622,4,0),(17248,'32689',29623,29624,4,0),(17249,'32690',30129,30130,4,0),(17250,'32690',29371,29372,4,0),(17251,'32691',30131,30132,4,0),(17252,'32692',30115,30116,4,0),(17253,'32693',30117,30118,4,0),(17254,'32694',30147,30148,4,0),(17255,'32695',30149,30150,4,0),(17256,'32696',30151,30152,4,0),(17257,'32696',30125,30126,4,0),(17258,'32697',30169,30170,4,0),(17259,'32698',29885,29886,4,0),(17260,'32698',30171,30172,4,0),(17261,'32699',30173,30174,4,0),(17262,'32700',29711,29712,4,0),(17263,'32701',29417,29418,4,0),(17264,'32702',30223,30224,4,0),(17265,'32702',29419,29420,4,0),(17266,'32703',29713,29714,4,0),(17267,'32704',29421,29422,4,0),(17268,'32705',29423,29424,4,0),(17269,'32705',30225,30226,4,0),(17270,'32706',29715,29716,4,0),(17271,'32707',29717,29718,4,0),(17272,'32708',30277,30278,4,0),(17273,'32708',29719,29720,4,0),(17274,'32710',29873,29874,4,0),(17275,'32711',29875,29876,4,0),(17276,'32720',29637,29638,4,0),(17277,'32720',30279,30280,4,0),(17278,'32720',29807,29808,4,0),(17279,'32720',29721,29722,4,0),(17280,'32730',30281,30282,4,0),(17281,'32740',29951,29952,4,0),(17282,'32746',29953,29954,4,0),(17283,'32747',29955,29956,4,0),(17284,'32748',29957,29958,4,0),(17285,'32749',29959,29960,4,0),(17286,'32750',29765,29766,4,0),(17287,'32751',29767,29768,4,0),(17288,'32760',29547,29548,4,0),(17289,'32764',29335,29336,4,0),(17290,'32764',29549,29550,4,0),(17291,'32765',29337,29338,4,0),(17292,'32766',29551,29552,4,0),(17293,'32767',29589,29590,4,0),(17294,'32768',29553,29554,4,0),(17295,'32768',29591,29592,4,0),(17296,'32769',29769,29770,4,0),(17297,'32769',29555,29556,4,0),(17298,'32770',30107,30108,4,0),(17299,'32774',29557,29558,4,0),(17300,'32779',30109,30110,4,0),(17301,'32780',29315,29316,4,0),(17302,'32781',29729,29730,4,0),(17303,'32782',29731,29732,4,0),(17304,'32782',29317,29318,4,0),(17305,'32783',29733,29734,4,0),(17306,'32784',29735,29736,4,0),(17307,'32785',29737,29738,4,0),(17308,'32786',29593,29594,4,0),(17309,'32787',29595,29596,4,0),(17310,'32787',29319,29320,4,0),(17311,'32788',29321,29322,4,0),(17312,'32789',29323,29324,4,0),(17313,'32789',30195,30196,4,0),(17314,'32790',29771,29772,4,0),(17315,'32790',29723,29724,4,0),(17316,'32790',29961,29962,4,0),(17317,'32791',29809,29810,4,0),(17318,'32792',29877,29878,4,0),(17319,'32793',29639,29640,4,0),(17320,'32793',29879,29880,4,0),(17321,'32794',29559,29560,4,0),(17322,'32794',29597,29598,4,0),(17323,'32794',30111,30112,4,0),(17324,'32800',29563,29564,4,0),(17325,'32810',30025,30026,4,0),(17326,'32811',30027,30028,4,0),(17327,'32812',30045,30046,4,0),(17328,'32812',29265,29266,4,0),(17329,'32813',30155,30156,4,0),(17330,'32814',30011,30012,4,0),(17331,'32815',30029,30030,4,0),(17332,'32815',29565,29566,4,0),(17333,'32816',29567,29568,4,0),(17334,'32816',29281,29282,4,0),(17335,'32817',29569,29570,4,0),(17336,'32820',29515,29516,4,0),(17337,'32821',29517,29518,4,0),(17338,'32822',29519,29520,4,0),(17339,'32823',29521,29522,4,0),(17340,'32823',29571,29572,4,0),(17341,'32824',29523,29524,4,0),(17342,'32825',29525,29526,4,0),(17343,'32826',29527,29528,4,0),(17344,'32827',29573,29574,4,0),(17345,'32828',29575,29576,4,0),(17346,'32829',29577,29578,4,0),(17347,'32830',29283,29284,4,0),(17348,'32838',29285,29286,4,0),(17349,'32839',29287,29288,4,0),(17350,'32840',29397,29398,4,0),(17351,'32845',29399,29400,4,0),(17352,'32846',29401,29402,4,0),(17353,'32846',29681,29682,4,0),(17354,'32847',29403,29404,4,0),(17355,'32848',29405,29406,4,0),(17356,'32849',29407,29408,4,0),(17357,'32850',29683,29684,4,0),(17358,'32857',29685,29686,4,0),(17359,'32858',29687,29688,4,0),(17360,'32859',29409,29410,4,0),(17361,'32859',29689,29690,4,0),(17362,'32860',29627,29628,4,0),(17363,'32867',29629,29630,4,0),(17364,'32868',29631,29632,4,0),(17365,'32869',29633,29634,4,0),(17366,'32869',29695,29696,4,0),(17367,'32870',29697,29698,4,0),(17368,'32879',29699,29700,4,0),(17369,'32880',29783,29784,4,0),(17370,'32890',29431,29432,4,0),(17371,'32891',29411,29412,4,0),(17372,'32892',29701,29702,4,0),(17373,'32893',29963,29964,4,0),(17374,'32893',29703,29704,4,0),(17375,'32894',29705,29706,4,0),(17376,'32895',29707,29708,4,0),(17377,'32896',29785,29786,4,0),(17378,'32897',29691,29692,4,0),(17379,'32898',29787,29788,4,0),(17380,'32899',29789,29790,4,0),(17381,'32900',30079,30080,4,0),(17382,'32900',29911,29912,4,0),(17383,'32901',30081,30082,4,0),(17384,'32910',30083,30084,4,0),(17385,'32911',30085,30086,4,0),(17386,'32920',30135,30136,4,0),(17387,'32920',29433,29434,4,0),(17388,'32930',29435,29436,4,0),(17389,'32930',30137,30138,4,0),(17390,'32940',30139,30140,4,0),(17391,'32940',29437,29438,4,0),(17392,'32940',29913,29914,4,0),(17393,'32941',30141,30142,4,0),(17394,'32950',29607,29608,4,0),(17395,'32960',29915,29916,4,0),(17396,'32970',29917,29918,4,0),(17397,'32971',29919,29920,4,0),(17398,'32980',29921,29922,4,0),(17399,'32980',29381,29382,4,0),(17400,'32981',29923,29924,4,0),(17401,'32990',29925,29926,4,0),(17402,'33001',2903,2904,4,0),(17403,'33002',2905,2906,4,0),(17404,'33003',2907,2908,4,0),(17405,'33004',2909,2910,4,0),(17406,'33005',2911,2912,4,0),(17407,'33006',2913,2914,4,0),(17408,'33007',2915,2916,4,0),(17409,'33008',2917,2918,4,0),(17410,'33009',2919,2920,4,0),(17411,'33010',3185,3186,4,0),(17412,'33010',2921,2922,4,0),(17413,'33011',2923,2924,4,0),(17414,'33012',2925,2926,4,0),(17415,'33013',2927,2928,4,0),(17416,'33060',2929,2930,4,0),(17417,'33069',2931,2932,4,0),(17418,'33110',3255,3256,4,0),(17419,'33111',3257,3258,4,0),(17420,'33112',3049,3050,4,0),(17421,'33114',3051,3052,4,0),(17422,'33115',3177,3178,4,0),(17423,'33115',3057,3058,4,0),(17424,'33116',3053,3054,4,0),(17425,'33116',3059,3060,4,0),(17426,'33117',3061,3062,4,0),(17427,'33118',3063,3064,4,0),(17428,'33119',2701,2702,4,0),(17429,'33119',2933,2934,4,0),(17430,'33120',3039,3040,4,0),(17431,'33125',3229,3230,4,0),(17432,'33126',3231,3232,4,0),(17433,'33127',2935,2936,4,0),(17434,'33127',3233,3234,4,0),(17435,'33127',3041,3042,4,0),(17436,'33128',3043,3044,4,0),(17437,'33129',3045,3046,4,0),(17438,'33130',2867,2868,4,0),(17439,'33138',2869,2870,4,0),(17440,'33140',2937,2938,4,0),(17441,'33150',2603,2604,4,0),(17442,'33155',2605,2606,4,0),(17443,'33156',2607,2608,4,0),(17444,'33157',2609,2610,4,0),(17445,'33159',2611,2612,4,0),(17446,'33160',3105,3106,4,0),(17447,'33161',2859,2860,4,0),(17448,'33162',2861,2862,4,0),(17449,'33163',2863,2864,4,0),(17450,'33170',3093,3094,4,0),(17451,'33170',2939,2940,4,0),(17452,'33171',2941,2942,4,0),(17453,'33171',3095,3096,4,0),(17454,'33172',3097,3098,4,0),(17455,'33173',3099,3100,4,0),(17456,'33174',2943,2944,4,0),(17457,'33180',2895,2896,4,0),(17458,'33186',3187,3188,4,0),(17459,'33187',3189,3190,4,0),(17460,'33188',3191,3192,4,0),(17461,'33189',3193,3194,4,0),(17462,'33190',2761,2762,4,0),(17463,'33191',2945,2946,4,0),(17464,'33191',2763,2764,4,0),(17465,'33192',2815,2816,4,0),(17466,'33192',2765,2766,4,0),(17467,'33193',2947,2948,4,0),(17468,'33194',2949,2950,4,0),(17469,'33195',2951,2952,4,0),(17470,'33196',2953,2954,4,0),(17471,'33199',2955,2956,4,0),(17472,'33199',3195,3196,4,0),(17473,'33201',2639,2640,4,0),(17474,'33202',2641,2642,4,0),(17475,'33203',2643,2644,4,0),(17476,'33204',2645,2646,4,0),(17477,'33205',2647,2648,4,0),(17478,'33206',2649,2650,4,0),(17479,'33207',2651,2652,4,0),(17480,'33208',2653,2654,4,0),(17481,'33209',2655,2656,4,0),(17482,'33210',2657,2658,4,0),(17483,'33211',2659,2660,4,0),(17484,'33212',2661,2662,4,0),(17485,'33213',2663,2664,4,0),(17486,'33290',2665,2666,4,0),(17487,'33299',2667,2668,4,0),(17488,'33300',3325,3326,4,0),(17489,'33310',3327,3328,4,0),(17490,'33310',2445,2446,4,0),(17491,'33311',3329,3330,4,0),(17492,'33312',3331,3332,4,0),(17493,'33313',3333,3334,4,0),(17494,'33314',3335,3336,4,0),(17495,'33315',3337,3338,4,0),(17496,'33316',3339,3340,4,0),(17497,'33317',3341,3342,4,0),(17498,'33318',3343,3344,4,0),(17499,'33320',2567,2568,4,0),(17500,'33324',2569,2570,4,0),(17501,'33325',2571,2572,4,0),(17502,'33326',2573,2574,4,0),(17503,'33326',3345,3346,4,0),(17504,'33327',2575,2576,4,0),(17505,'33328',2577,2578,4,0),(17506,'33329',2579,2580,4,0),(17507,'33330',2581,2582,4,0),(17508,'33340',2583,2584,4,0),(17509,'33341',2585,2586,4,0),(17510,'33342',2587,2588,4,0),(17511,'33343',2493,2494,4,0),(17512,'33344',2495,2496,4,0),(17513,'33345',3073,3074,4,0),(17514,'33346',3075,3076,4,0),(17515,'33347',3077,3078,4,0),(17516,'33350',2669,2670,4,0),(17517,'33390',2671,2672,4,0),(17518,'33391',2673,2674,4,0),(17519,'33392',2675,2676,4,0),(17520,'33393',2677,2678,4,0),(17521,'33394',2679,2680,4,0),(17522,'33401',2365,2366,4,0),(17523,'33401',2521,2522,4,0),(17524,'33402',2367,2368,4,0),(17525,'33403',2369,2370,4,0),(17526,'33404',2591,2592,4,0),(17527,'33405',2523,2524,4,0),(17528,'33410',2525,2526,4,0),(17529,'33410',2371,2372,4,0),(17530,'33411',2735,2736,4,0),(17531,'33412',2527,2528,4,0),(17532,'33412',2737,2738,4,0),(17533,'33412',2593,2594,4,0),(17534,'33414',2451,2452,4,0),(17535,'33414',2739,2740,4,0),(17536,'33414',2767,2768,4,0),(17537,'33416',2595,2596,4,0),(17538,'33417',2373,2374,4,0),(17539,'33417',2529,2530,4,0),(17540,'33418',2375,2376,4,0),(17541,'33418',2687,2688,4,0),(17542,'33419',2689,2690,4,0),(17543,'33420',3197,3198,4,0),(17544,'33423',2817,2818,4,0),(17545,'33424',2819,2820,4,0),(17546,'33425',2821,2822,4,0),(17547,'33426',2823,2824,4,0),(17548,'33427',2825,2826,4,0),(17549,'33428',2827,2828,4,0),(17550,'33429',3199,3200,4,0),(17551,'33430',2499,2500,4,0),(17552,'33438',2501,2502,4,0),(17553,'33439',2503,2504,4,0),(17554,'33440',2691,2692,4,0),(17555,'33448',2693,2694,4,0),(17556,'33449',2695,2696,4,0),(17557,'33450',2531,2532,4,0),(17558,'33456',2453,2454,4,0),(17559,'33456',2533,2534,4,0),(17560,'33457',2535,2536,4,0),(17561,'33458',3235,3236,4,0),(17562,'33459',2537,2538,4,0),(17563,'33460',2377,2378,4,0),(17564,'33468',2597,2598,4,0),(17565,'33468',2697,2698,4,0),(17566,'33469',2505,2506,4,0),(17567,'33470',2599,2600,4,0),(17568,'33470',2379,2380,4,0),(17569,'33470',2829,2830,4,0),(17570,'33476',3239,3240,4,0),(17571,'33480',2831,2832,4,0),(17572,'33490',2381,2382,4,0),(17573,'33491',2507,2508,4,0),(17574,'33492',2509,2510,4,0),(17575,'33500',2837,2838,4,0),(17576,'33507',2839,2840,4,0),(17577,'33509',2841,2842,4,0),(17578,'33509',2973,2974,4,0),(17579,'33510',3201,3202,4,0),(17580,'33518',3181,3182,4,0),(17581,'33518',3203,3204,4,0),(17582,'33519',3205,3206,4,0),(17583,'33519',2613,2614,4,0),(17584,'33520',3067,3068,4,0),(17585,'33520',2873,2874,4,0),(17586,'33527',2411,2412,4,0),(17587,'33528',2875,2876,4,0),(17588,'33528',2413,2414,4,0),(17589,'33529',2447,2448,4,0),(17590,'33529',2877,2878,4,0),(17591,'33530',3013,3014,4,0),(17592,'33534',3015,3016,4,0),(17593,'33535',3017,3018,4,0),(17594,'33535',2957,2958,4,0),(17595,'33536',3019,3020,4,0),(17596,'33537',3021,3022,4,0),(17597,'33538',3023,3024,4,0),(17598,'33539',3025,3026,4,0),(17599,'33540',2975,2976,4,0),(17600,'33546',2977,2978,4,0),(17601,'33547',2461,2462,4,0),(17602,'33548',2979,2980,4,0),(17603,'33549',2981,2982,4,0),(17604,'33550',2463,2464,4,0),(17605,'33554',2439,2440,4,0),(17606,'33555',2441,2442,4,0),(17607,'33556',2899,2900,4,0),(17608,'33556',2465,2466,4,0),(17609,'33557',2359,2360,4,0),(17610,'33557',3033,3034,4,0),(17611,'33558',2361,2362,4,0),(17612,'33558',3035,3036,4,0),(17613,'33559',2983,2984,4,0),(17614,'33559',2467,2468,4,0),(17615,'33560',3079,3080,4,0),(17616,'33566',3081,3082,4,0),(17617,'33567',3083,3084,4,0),(17618,'33568',3085,3086,4,0),(17619,'33569',3087,3088,4,0),(17620,'33576',2993,2994,4,0),(17621,'33577',2995,2996,4,0),(17622,'33578',2997,2998,4,0),(17623,'33579',3001,3002,4,0),(17624,'33580',3207,3208,4,0),(17625,'33581',2879,2880,4,0),(17626,'33582',2881,2882,4,0),(17627,'33583',3027,3028,4,0),(17628,'33584',3029,3030,4,0),(17629,'33585',2985,2986,4,0),(17630,'33586',2987,2988,4,0),(17631,'33587',2989,2990,4,0),(17632,'33588',3089,3090,4,0),(17633,'33589',2469,2470,4,0),(17634,'33590',3069,3070,4,0),(17635,'33592',2843,2844,4,0),(17636,'33593',2845,2846,4,0),(17637,'33594',2847,2848,4,0),(17638,'33595',2849,2850,4,0),(17639,'33596',2851,2852,4,0),(17640,'33598',2853,2854,4,0),(17641,'33600',14433,14434,4,0),(17642,'33610',14435,14436,4,0),(17643,'33611',14437,14438,4,0),(17644,'33612',14439,14440,4,0),(17645,'33614',14441,14442,4,0),(17646,'33615',14443,14444,4,0),(17647,'33616',14445,14446,4,0),(17648,'33616',2959,2960,4,0),(17649,'33617',14447,14448,4,0),(17650,'33618',14449,14450,4,0),(17651,'33619',14451,14452,4,0),(17652,'33620',2789,2790,4,0),(17653,'33627',2791,2792,4,0),(17654,'33628',2793,2794,4,0),(17655,'33629',2795,2796,4,0),(17656,'33630',2797,2798,4,0),(17657,'33637',2799,2800,4,0),(17658,'33638',2801,2802,4,0),(17659,'33639',2803,2804,4,0),(17660,'33640',14453,14454,4,0),(17661,'33650',14455,14456,4,0),(17662,'33660',2961,2962,4,0),(17663,'33669',2963,2964,4,0),(17664,'33670',2329,2330,4,0),(17665,'33675',2331,2332,4,0),(17666,'33676',2333,2334,4,0),(17667,'33677',2335,2336,4,0),(17668,'33678',2337,2338,4,0),(17669,'33679',2339,2340,4,0),(17670,'33680',2341,2342,4,0),(17671,'33681',2343,2344,4,0),(17672,'33682',14457,14458,4,0),(17673,'33683',2345,2346,4,0),(17674,'33683',14459,14460,4,0),(17675,'33684',2347,2348,4,0),(17676,'33685',2349,2350,4,0),(17677,'33686',2351,2352,4,0),(17678,'33687',2353,2354,4,0),(17679,'33688',2355,2356,4,0),(17680,'33690',2833,2834,4,0),(17681,'33691',2681,2682,4,0),(17682,'33692',2805,2806,4,0),(17683,'33693',2807,2808,4,0),(17684,'33694',2809,2810,4,0),(17685,'33695',2811,2812,4,0),(17686,'33696',2965,2966,4,0),(17687,'33696',3101,3102,4,0),(17688,'33697',2683,2684,4,0),(17689,'33700',3279,3280,4,0),(17690,'33707',3281,3282,4,0),(17691,'33708',3283,3284,4,0),(17692,'33709',3285,3286,4,0),(17693,'33710',2885,2886,4,0),(17694,'33716',2553,2554,4,0),(17695,'33717',3349,3350,4,0),(17696,'33718',3351,3352,4,0),(17697,'33719',2555,2556,4,0),(17698,'33719',2887,2888,4,0),(17699,'33720',2417,2418,4,0),(17700,'33724',2419,2420,4,0),(17701,'33725',2421,2422,4,0),(17702,'33726',2557,2558,4,0),(17703,'33726',2423,2424,4,0),(17704,'33727',2425,2426,4,0),(17705,'33728',2427,2428,4,0),(17706,'33729',2429,2430,4,0),(17707,'33730',2715,2716,4,0),(17708,'33731',2431,2432,4,0),(17709,'33732',2727,2728,4,0),(17710,'33733',2729,2730,4,0),(17711,'33734',2731,2732,4,0),(17712,'33735',3005,3006,4,0),(17713,'33736',3007,3008,4,0),(17714,'33740',3241,3242,4,0),(17715,'33746',3243,3244,4,0),(17716,'33746',2623,2624,4,0),(17717,'33747',3245,3246,4,0),(17718,'33749',3247,3248,4,0),(17719,'33750',2625,2626,4,0),(17720,'33757',2627,2628,4,0),(17721,'33758',2629,2630,4,0),(17722,'33759',2631,2632,4,0),(17723,'33760',2541,2542,4,0),(17724,'33768',2543,2544,4,0),(17725,'33769',2545,2546,4,0),(17726,'33770',3311,3312,4,0),(17727,'33774',3167,3168,4,0),(17728,'33775',3251,3252,4,0),(17729,'33776',3171,3172,4,0),(17730,'33776',3313,3314,4,0),(17731,'33777',3321,3322,4,0),(17732,'33777',3141,3142,4,0),(17733,'33777',3009,3010,4,0),(17734,'33778',2547,2548,4,0),(17735,'33778',3315,3316,4,0),(17736,'33779',3317,3318,4,0),(17737,'33779',3173,3174,4,0),(17738,'33780',3287,3288,4,0),(17739,'33781',3109,3110,4,0),(17740,'33782',3111,3112,4,0),(17741,'33782',3289,3290,4,0),(17742,'33783',3291,3292,4,0),(17743,'33784',3293,3294,4,0),(17744,'33785',3295,3296,4,0),(17745,'33787',3297,3298,4,0),(17746,'33788',3299,3300,4,0),(17747,'33789',3301,3302,4,0),(17748,'33790',2889,2890,4,0),(17749,'33791',3303,3304,4,0),(17750,'33792',3305,3306,4,0),(17751,'33793',2891,2892,4,0),(17752,'33794',2549,2550,4,0),(17753,'33795',2559,2560,4,0),(17754,'33796',2561,2562,4,0),(17755,'33797',2563,2564,4,0),(17756,'33798',2433,2434,4,0),(17757,'33799',2435,2436,4,0),(17758,'33800',2473,2474,4,0),(17759,'33810',2719,2720,4,0),(17760,'33811',2475,2476,4,0),(17761,'33811',2721,2722,4,0),(17762,'33812',2617,2618,4,0),(17763,'33812',2723,2724,4,0),(17764,'33813',2477,2478,4,0),(17765,'33813',2619,2620,4,0),(17766,'33814',2479,2480,4,0),(17767,'33815',2481,2482,4,0),(17768,'33815',2313,2314,4,0),(17769,'33816',2483,2484,4,0),(17770,'33817',2485,2486,4,0),(17771,'33818',2487,2488,4,0),(17772,'33819',2489,2490,4,0),(17773,'33820',2703,2704,4,0),(17774,'33825',2705,2706,4,0),(17775,'33826',3355,3356,4,0),(17776,'33826',2707,2708,4,0),(17777,'33827',2385,2386,4,0),(17778,'33827',2709,2710,4,0),(17779,'33828',2455,2456,4,0),(17780,'33829',2711,2712,4,0),(17781,'33829',2457,2458,4,0),(17782,'33830',2387,2388,4,0),(17783,'33836',3113,3114,4,0),(17784,'33836',2389,2390,4,0),(17785,'33837',2391,2392,4,0),(17786,'33838',2393,2394,4,0),(17787,'33839',2395,2396,4,0),(17788,'33840',3221,3222,4,0),(17789,'33841',3223,3224,4,0),(17790,'33842',3225,3226,4,0),(17791,'33842',2397,2398,4,0),(17792,'33843',2399,2400,4,0),(17793,'33844',2401,2402,4,0),(17794,'33845',2403,2404,4,0),(17795,'33846',3115,3116,4,0),(17796,'33846',2405,2406,4,0),(17797,'33847',2407,2408,4,0),(17798,'33848',3117,3118,4,0),(17799,'33850',3119,3120,4,0),(17800,'33857',3121,3122,4,0),(17801,'33858',3123,3124,4,0),(17802,'33859',3125,3126,4,0),(17803,'33860',3127,3128,4,0),(17804,'33866',3129,3130,4,0),(17805,'33867',3131,3132,4,0),(17806,'33868',3133,3134,4,0),(17807,'33869',3135,3136,4,0),(17808,'33870',3261,3262,4,0),(17809,'33873',3263,3264,4,0),(17810,'33874',3307,3308,4,0),(17811,'33874',3265,3266,4,0),(17812,'33875',3267,3268,4,0),(17813,'33876',3269,3270,4,0),(17814,'33877',3271,3272,4,0),(17815,'33878',3273,3274,4,0),(17816,'33879',3275,3276,4,0),(17817,'33880',2315,2316,4,0),(17818,'33885',2317,2318,4,0),(17819,'33887',2319,2320,4,0),(17820,'33888',2321,2322,4,0),(17821,'33889',2323,2324,4,0),(17822,'33890',2325,2326,4,0),(17823,'33891',3137,3138,4,0),(17824,'33900',2743,2744,4,0),(17825,'33909',2745,2746,4,0),(17826,'33910',2967,2968,4,0),(17827,'33919',2969,2970,4,0),(17828,'33920',2747,2748,4,0),(17829,'33929',2749,2750,4,0),(17830,'33930',2751,2752,4,0),(17831,'33934',2753,2754,4,0),(17832,'33935',2755,2756,4,0),(17833,'33936',3209,3210,4,0),(17834,'33937',3211,3212,4,0),(17835,'33938',3213,3214,4,0),(17836,'33939',2757,2758,4,0),(17837,'33940',3145,3146,4,0),(17838,'33945',3147,3148,4,0),(17839,'33946',3149,3150,4,0),(17840,'33947',3151,3152,4,0),(17841,'33948',3153,3154,4,0),(17842,'33950',3155,3156,4,0),(17843,'33957',3157,3158,4,0),(17844,'33958',3159,3160,4,0),(17845,'33959',3161,3162,4,0),(17846,'33960',3163,3164,4,0),(17847,'33970',2771,2772,4,0),(17848,'33979',2773,2774,4,0),(17849,'33980',2775,2776,4,0),(17850,'33986',2777,2778,4,0),(17851,'33987',2779,2780,4,0),(17852,'33989',2781,2782,4,0),(17853,'33990',2513,2514,4,0),(17854,'33991',2783,2784,4,0),(17855,'33992',2785,2786,4,0),(17856,'33993',3217,3218,4,0),(17857,'33995',2515,2516,4,0),(17858,'33996',2517,2518,4,0),(17859,'34001',30761,30762,4,0),(17860,'34002',30763,30764,4,0),(17861,'34003',30765,30766,4,0),(17862,'34004',30767,30768,4,0),(17863,'34005',30769,30770,4,0),(17864,'34006',30771,30772,4,0),(17865,'34100',30903,30904,4,0),(17866,'34110',30813,30814,4,0),(17867,'34111',31111,31112,4,0),(17868,'34111',30845,30846,4,0),(17869,'34111',31211,31212,4,0),(17870,'34111',30815,30816,4,0),(17871,'34111',30905,30906,4,0),(17872,'34112',31113,31114,4,0),(17873,'34112',30953,30954,4,0),(17874,'34112',31213,31214,4,0),(17875,'34113',31115,31116,4,0),(17876,'34113',31163,31164,4,0),(17877,'34113',30797,30798,4,0),(17878,'34114',30861,30862,4,0),(17879,'34115',30907,30908,4,0),(17880,'34115',31025,31026,4,0),(17881,'34116',30429,30430,4,0),(17882,'34116',31165,31166,4,0),(17883,'34116',30799,30800,4,0),(17884,'34117',30909,30910,4,0),(17885,'34118',30671,30672,4,0),(17886,'34120',30453,30454,4,0),(17887,'34126',31135,31136,4,0),(17888,'34126',30871,30872,4,0),(17889,'34127',30673,30674,4,0),(17890,'34127',31017,31018,4,0),(17891,'34128',30735,30736,4,0),(17892,'34128',30863,30864,4,0),(17893,'34128',30649,30650,4,0),(17894,'34128',30675,30676,4,0),(17895,'34129',31181,31182,4,0),(17896,'34129',30433,30434,4,0),(17897,'34129',30441,30442,4,0),(17898,'34131',31207,31208,4,0),(17899,'34131',30455,30456,4,0),(17900,'34132',31173,31174,4,0),(17901,'34159',30327,30328,4,0),(17902,'34160',30329,30330,4,0),(17903,'34170',31185,31186,4,0),(17904,'34170',31119,31120,4,0),(17905,'34170',30701,30702,4,0),(17906,'34170',30793,30794,4,0),(17907,'34190',31143,31144,4,0),(17908,'34191',30331,30332,4,0),(17909,'34191',30943,30944,4,0),(17910,'34191',30773,30774,4,0),(17911,'34191',30355,30356,4,0),(17912,'34192',31187,31188,4,0),(17913,'34192',30587,30588,4,0),(17914,'34200',31047,31048,4,0),(17915,'34208',30551,30552,4,0),(17916,'34208',30867,30868,4,0),(17917,'34208',31049,31050,4,0),(17918,'34209',30621,30622,4,0),(17919,'34209',30997,30998,4,0),(17920,'34209',30977,30978,4,0),(17921,'34209',31031,31032,4,0),(17922,'34210',30553,30554,4,0),(17923,'34218',30503,30504,4,0),(17924,'34219',30319,30320,4,0),(17925,'34219',30827,30828,4,0),(17926,'34219',30535,30536,4,0),(17927,'34219',30475,30476,4,0),(17928,'34219',31053,31054,4,0),(17929,'34220',30685,30686,4,0),(17930,'34230',31001,31002,4,0),(17931,'34239',31021,31022,4,0),(17932,'34239',31123,31124,4,0),(17933,'34240',30367,30368,4,0),(17934,'34246',30471,30472,4,0),(17935,'34247',30507,30508,4,0),(17936,'34247',31067,31068,4,0),(17937,'34247',30605,30606,4,0),(17938,'34248',30341,30342,4,0),(17939,'34248',30515,30516,4,0),(17940,'34248',30557,30558,4,0),(17941,'34249',30369,30370,4,0),(17942,'34249',30625,30626,4,0),(17943,'34249',31191,31192,4,0),(17944,'34250',30857,30858,4,0),(17945,'34257',30777,30778,4,0),(17946,'34257',30985,30986,4,0),(17947,'34257',31203,31204,4,0),(17948,'34257',31081,31082,4,0),(17949,'34259',30531,30532,4,0),(17950,'34259',30617,30618,4,0),(17951,'34259',31091,31092,4,0),(17952,'34260',8937,8938,4,0),(17953,'34260',8445,8446,4,0),(17954,'34260',8831,8832,4,0),(17955,'34300',30785,30786,4,0),(17956,'34304',30397,30398,4,0),(17957,'34305',30373,30374,4,0),(17958,'34305',30713,30714,4,0),(17959,'34305',30445,30446,4,0),(17960,'34305',30407,30408,4,0),(17961,'34305',31195,31196,4,0),(17962,'34305',31005,31006,4,0),(17963,'34305',30483,30484,4,0),(17964,'34306',30601,30602,4,0),(17965,'34306',30459,30460,4,0),(17966,'34306',30705,30706,4,0),(17967,'34306',30567,30568,4,0),(17968,'34307',31035,31036,4,0),(17969,'34309',30487,30488,4,0),(17970,'34309',30449,30450,4,0),(17971,'34309',31139,31140,4,0),(17972,'34309',30899,30900,4,0),(17973,'34309',31147,31148,4,0),(17974,'34310',30803,30804,4,0),(17975,'34310',30393,30394,4,0),(17976,'34320',30511,30512,4,0),(17977,'34337',30579,30580,4,0),(17978,'34338',30359,30360,4,0),(17979,'34338',30287,30288,4,0),(17980,'34340',31071,31072,4,0),(17981,'34347',30657,30658,4,0),(17982,'34347',30849,30850,4,0),(17983,'34347',30667,30668,4,0),(17984,'34347',30939,30940,4,0),(17985,'34347',31103,31104,4,0),(17986,'34347',30819,30820,4,0),(17987,'34348',31061,31062,4,0),(17988,'34349',31063,31064,4,0),(17989,'34349',30659,30660,4,0),(17990,'34349',31073,31074,4,0),(17991,'34349',30727,30728,4,0),(17992,'34349',30411,30412,4,0),(17993,'34350',31169,31170,4,0),(17994,'34400',30609,30610,4,0),(17995,'34404',30539,30540,4,0),(17996,'34405',30947,30948,4,0),(17997,'34405',30561,30562,4,0),(17998,'34405',30611,30612,4,0),(17999,'34406',30613,30614,4,0),(18000,'34406',30519,30520,4,0),(18001,'34406',30389,30390,4,0),(18002,'34406',30547,30548,4,0),(18003,'34407',30739,30740,4,0),(18004,'34407',30781,30782,4,0),(18005,'34407',30891,30892,4,0),(18006,'34407',30521,30522,4,0),(18007,'34407',30981,30982,4,0),(18008,'34407',30437,30438,4,0),(18009,'34407',31127,31128,4,0),(18010,'34408',31129,31130,4,0),(18011,'34409',31131,31132,4,0),(18012,'34410',30721,30722,4,0),(18013,'34419',30583,30584,4,0),(18014,'34419',30723,30724,4,0),(18015,'34419',30629,30630,4,0),(18016,'34419',31107,31108,4,0),(18017,'34419',30335,30336,4,0),(18018,'34420',30337,30338,4,0),(18019,'34429',30689,30690,4,0),(18020,'34429',30693,30694,4,0),(18021,'34429',30805,30806,4,0),(18022,'34429',30323,30324,4,0),(18023,'34429',30895,30896,4,0),(18024,'34429',30921,30922,4,0),(18025,'34430',30809,30810,4,0),(18026,'34439',30993,30994,4,0),(18027,'34440',30575,30576,4,0),(18028,'34447',30887,30888,4,0),(18029,'34447',31159,31160,4,0),(18030,'34449',30823,30824,4,0),(18031,'34449',30345,30346,4,0),(18032,'34449',31099,31100,4,0),(18033,'34449',31217,31218,4,0),(18034,'34449',30681,30682,4,0),(18035,'34450',30349,30350,4,0),(18036,'34460',30755,30756,4,0),(18037,'34465',31013,31014,4,0),(18038,'34466',31199,31200,4,0),(18039,'34467',30709,30710,4,0),(18040,'34468',30663,30664,4,0),(18041,'34468',30415,30416,4,0),(18042,'34468',30751,30752,4,0),(18043,'34468',30633,30634,4,0),(18044,'34469',30757,30758,4,0),(18045,'34469',30697,30698,4,0),(18046,'34469',30875,30876,4,0),(18047,'34469',31085,31086,4,0),(18048,'34470',30423,30424,4,0),(18049,'34470',30645,30646,4,0),(18050,'34473',30989,30990,4,0),(18051,'34473',30363,30364,4,0),(18052,'34473',30425,30426,4,0),(18053,'34473',31027,31028,4,0),(18054,'34475',31177,31178,4,0),(18055,'34475',31077,31078,4,0),(18056,'34475',31057,31058,4,0),(18057,'34477',30377,30378,4,0),(18058,'34477',30677,30678,4,0),(18059,'34477',31151,31152,4,0),(18060,'34478',30479,30480,4,0),(18061,'34480',30311,30312,4,0),(18062,'34484',30541,30542,4,0),(18063,'34485',30717,30718,4,0),(18064,'34485',30743,30744,4,0),(18065,'34485',30653,30654,4,0),(18066,'34485',30789,30790,4,0),(18067,'34486',30491,30492,4,0),(18068,'34486',30745,30746,4,0),(18069,'34486',30853,30854,4,0),(18070,'34486',30957,30958,4,0),(18071,'34486',30295,30296,4,0),(18072,'34487',30747,30748,4,0),(18073,'34487',30313,30314,4,0),(18074,'34490',30973,30974,4,0),(18075,'34490',30351,30352,4,0),(18076,'34491',31155,31156,4,0),(18077,'34491',31087,31088,4,0),(18078,'34491',30949,30950,4,0),(18079,'34491',30931,30932,4,0),(18080,'34491',30291,30292,4,0),(18081,'34491',30563,30564,4,0),(18082,'34492',30315,30316,4,0),(18083,'34492',8627,8628,4,0),(18084,'34492',8413,8414,4,0),(18085,'34492',30297,30298,4,0),(18086,'34800',30299,30300,4,0),(18087,'34810',30301,30302,4,0),(18088,'34810',30913,30914,4,0),(18089,'34811',30303,30304,4,0),(18090,'34811',30835,30836,4,0),(18091,'34813',30305,30306,4,0),(18092,'34813',30837,30838,4,0),(18093,'34814',30401,30402,4,0),(18094,'34814',30839,30840,4,0),(18095,'34815',30841,30842,4,0),(18096,'34815',30307,30308,4,0),(18097,'34820',30381,30382,4,0),(18098,'34828',30925,30926,4,0),(18099,'34828',30383,30384,4,0),(18100,'34828',30915,30916,4,0),(18101,'34829',30419,30420,4,0),(18102,'34829',30385,30386,4,0),(18103,'34830',30935,30936,4,0),(18104,'34830',30917,30918,4,0),(18105,'34839',30927,30928,4,0),(18106,'34839',30493,30494,4,0),(18107,'34839',30731,30732,4,0),(18108,'34840',30495,30496,4,0),(18109,'34844',30497,30498,4,0),(18110,'34844',30543,30544,4,0),(18111,'34844',31009,31010,4,0),(18112,'34846',30831,30832,4,0),(18113,'34846',30499,30500,4,0),(18114,'34847',30637,30638,4,0),(18115,'34848',30639,30640,4,0),(18116,'34849',30641,30642,4,0),(18117,'34850',30463,30464,4,0),(18118,'34858',30465,30466,4,0),(18119,'34859',30467,30468,4,0),(18120,'34869',30961,30962,4,0),(18121,'34870',30879,30880,4,0),(18122,'34870',30963,30964,4,0),(18123,'34874',30881,30882,4,0),(18124,'34878',30883,30884,4,0),(18125,'34878',30525,30526,4,0),(18126,'34878',30965,30966,4,0),(18127,'34879',30967,30968,4,0),(18128,'34879',30591,30592,4,0),(18129,'34880',30593,30594,4,0),(18130,'34882',30527,30528,4,0),(18131,'34882',30595,30596,4,0),(18132,'34884',30969,30970,4,0),(18133,'34886',31039,31040,4,0),(18134,'34888',31041,31042,4,0),(18135,'34889',30571,30572,4,0),(18136,'34889',30597,30598,4,0),(18137,'34889',31043,31044,4,0),(18138,'34889',31095,31096,4,0),(18139,'36001',31815,31816,4,0),(18140,'36002',31817,31818,4,0),(18141,'36003',31819,31820,4,0),(18142,'36004',31821,31822,4,0),(18143,'36005',31749,31750,4,0),(18144,'36005',31823,31824,4,0),(18145,'36110',31411,31412,4,0),(18146,'36116',31437,31438,4,0),(18147,'36117',31413,31414,4,0),(18148,'36118',31415,31416,4,0),(18149,'36119',31417,31418,4,0),(18150,'36120',31439,31440,4,0),(18151,'36121',31441,31442,4,0),(18152,'36139',31443,31444,4,0),(18153,'36140',32127,32128,4,0),(18154,'36141',32129,32130,4,0),(18155,'36142',32131,32132,4,0),(18156,'36143',31825,31826,4,0),(18157,'36150',31827,31828,4,0),(18158,'36151',31829,31830,4,0),(18159,'36152',31831,31832,4,0),(18160,'36153',31833,31834,4,0),(18161,'36154',31835,31836,4,0),(18162,'36155',31837,31838,4,0),(18163,'36156',31839,31840,4,0),(18164,'36157',31841,31842,4,0),(18165,'36158',31843,31844,4,0),(18166,'36160',31845,31846,4,0),(18167,'36161',31847,31848,4,0),(18168,'36162',31849,31850,4,0),(18169,'36163',31751,31752,4,0),(18170,'36164',31851,31852,4,0),(18171,'36190',31361,31362,4,0),(18172,'36191',31363,31364,4,0),(18173,'36192',31613,31614,4,0),(18174,'36193',31859,31860,4,0),(18175,'36193',31365,31366,4,0),(18176,'36194',31367,31368,4,0),(18177,'36201',32045,32046,4,0),(18178,'36202',32047,32048,4,0),(18179,'36203',32049,32050,4,0),(18180,'36204',32051,32052,4,0),(18181,'36205',32053,32054,4,0),(18182,'36206',32055,32056,4,0),(18183,'36207',32057,32058,4,0),(18184,'36208',32059,32060,4,0),(18185,'36209',32061,32062,4,0),(18186,'36210',32063,32064,4,0),(18187,'36211',32065,32066,4,0),(18188,'36212',32067,32068,4,0),(18189,'36213',32069,32070,4,0),(18190,'36214',32071,32072,4,0),(18191,'36215',32073,32074,4,0),(18192,'36216',32075,32076,4,0),(18193,'36300',31349,31350,4,0),(18194,'36307',31351,31352,4,0),(18195,'36308',31353,31354,4,0),(18196,'36309',31727,31728,4,0),(18197,'36309',31355,31356,4,0),(18198,'36310',32077,32078,4,0),(18199,'36311',31663,31664,4,0),(18200,'36312',32079,32080,4,0),(18201,'36313',32081,32082,4,0),(18202,'36314',32083,32084,4,0),(18203,'36315',32085,32086,4,0),(18204,'36316',31547,31548,4,0),(18205,'36317',32087,32088,4,0),(18206,'36318',32089,32090,4,0),(18207,'36320',31867,31868,4,0),(18208,'36330',32091,32092,4,0),(18209,'36331',32093,32094,4,0),(18210,'36340',31677,31678,4,0),(18211,'36350',31679,31680,4,0),(18212,'36360',31681,31682,4,0),(18213,'36370',31683,31684,4,0),(18214,'36378',31549,31550,4,0),(18215,'36379',31685,31686,4,0),(18216,'36380',31551,31552,4,0),(18217,'36388',31553,31554,4,0),(18218,'36389',31555,31556,4,0),(18219,'36390',32095,32096,4,0),(18220,'36391',31687,31688,4,0),(18221,'36392',32097,32098,4,0),(18222,'36393',31357,31358,4,0),(18223,'36400',31701,31702,4,0),(18224,'36410',31703,31704,4,0),(18225,'36411',31705,31706,4,0),(18226,'36412',31707,31708,4,0),(18227,'36413',31709,31710,4,0),(18228,'36414',31711,31712,4,0),(18229,'36415',31665,31666,4,0),(18230,'36416',31667,31668,4,0),(18231,'36417',31669,31670,4,0),(18232,'36418',31713,31714,4,0),(18233,'36418',31671,31672,4,0),(18234,'36419',31673,31674,4,0),(18235,'36420',31473,31474,4,0),(18236,'36428',31475,31476,4,0),(18237,'36429',31477,31478,4,0),(18238,'36430',31321,31322,4,0),(18239,'36435',31323,31324,4,0),(18240,'36436',31325,31326,4,0),(18241,'36437',31327,31328,4,0),(18242,'36438',31329,31330,4,0),(18243,'36439',31331,31332,4,0),(18244,'36440',31337,31338,4,0),(18245,'36446',31339,31340,4,0),(18246,'36447',31341,31342,4,0),(18247,'36448',31343,31344,4,0),(18248,'36449',31345,31346,4,0),(18249,'36450',31929,31930,4,0),(18250,'36455',31931,31932,4,0),(18251,'36456',31933,31934,4,0),(18252,'36457',31935,31936,4,0),(18253,'36458',31937,31938,4,0),(18254,'36459',31939,31940,4,0),(18255,'36460',31913,31914,4,0),(18256,'36460',32015,32016,4,0),(18257,'36470',31915,31916,4,0),(18258,'36470',31989,31990,4,0),(18259,'36471',31917,31918,4,0),(18260,'36472',31919,31920,4,0),(18261,'36473',31921,31922,4,0),(18262,'36474',31923,31924,4,0),(18263,'36475',31925,31926,4,0),(18264,'36475',31715,31716,4,0),(18265,'36490',31479,31480,4,0),(18266,'36491',31481,31482,4,0),(18267,'36492',31483,31484,4,0),(18268,'36493',31485,31486,4,0),(18269,'36494',31333,31334,4,0),(18270,'36500',31559,31560,4,0),(18271,'36510',31561,31562,4,0),(18272,'36511',31563,31564,4,0),(18273,'36511',31901,31902,4,0),(18274,'36512',31565,31566,4,0),(18275,'36514',31567,31568,4,0),(18276,'36514',31303,31304,4,0),(18277,'36515',31569,31570,4,0),(18278,'36516',31503,31504,4,0),(18279,'36516',31571,31572,4,0),(18280,'36517',31573,31574,4,0),(18281,'36518',31575,31576,4,0),(18282,'36518',31505,31506,4,0),(18283,'36519',31577,31578,4,0),(18284,'36520',31305,31306,4,0),(18285,'36524',31307,31308,4,0),(18286,'36525',31309,31310,4,0),(18287,'36526',31311,31312,4,0),(18288,'36527',31313,31314,4,0),(18289,'36528',31315,31316,4,0),(18290,'36529',31317,31318,4,0),(18291,'36530',31903,31904,4,0),(18292,'36537',31905,31906,4,0),(18293,'36538',31907,31908,4,0),(18294,'36539',31909,31910,4,0),(18295,'36540',31957,31958,4,0),(18296,'36543',31959,31960,4,0),(18297,'36544',31961,31962,4,0),(18298,'36545',31963,31964,4,0),(18299,'36546',31965,31966,4,0),(18300,'36547',31967,31968,4,0),(18301,'36548',31969,31970,4,0),(18302,'36549',31509,31510,4,0),(18303,'36549',31971,31972,4,0),(18304,'36550',31511,31512,4,0),(18305,'36555',31513,31514,4,0),(18306,'36556',31515,31516,4,0),(18307,'36557',31517,31518,4,0),(18308,'36558',31519,31520,4,0),(18309,'36559',31241,31242,4,0),(18310,'36560',31521,31522,4,0),(18311,'36567',31523,31524,4,0),(18312,'36569',31525,31526,4,0),(18313,'36570',31973,31974,4,0),(18314,'36579',31975,31976,4,0),(18315,'36580',32101,32102,4,0),(18316,'36581',32103,32104,4,0),(18317,'36582',32105,32106,4,0),(18318,'36583',32107,32108,4,0),(18319,'36583',31579,31580,4,0),(18320,'36584',31243,31244,4,0),(18321,'36585',32109,32110,4,0),(18322,'36586',32111,32112,4,0),(18323,'36587',31977,31978,4,0),(18324,'36587',32113,32114,4,0),(18325,'36588',31245,31246,4,0),(18326,'36589',31979,31980,4,0),(18327,'36590',32115,32116,4,0),(18328,'36596',32117,32118,4,0),(18329,'36596',31581,31582,4,0),(18330,'36597',32119,32120,4,0),(18331,'36598',32121,32122,4,0),(18332,'36598',31583,31584,4,0),(18333,'36599',32123,32124,4,0),(18334,'36600',32135,32136,4,0),(18335,'36610',32137,32138,4,0),(18336,'36611',32139,32140,4,0),(18337,'36612',31433,31434,4,0),(18338,'36613',32141,32142,4,0),(18339,'36614',32153,32154,4,0),(18340,'36615',31383,31384,4,0),(18341,'36616',32155,32156,4,0),(18342,'36616',31615,31616,4,0),(18343,'36617',32143,32144,4,0),(18344,'36618',32145,32146,4,0),(18345,'36619',32147,32148,4,0),(18346,'36620',32157,32158,4,0),(18347,'36626',31281,31282,4,0),(18348,'36627',32159,32160,4,0),(18349,'36628',32161,32162,4,0),(18350,'36629',32163,32164,4,0),(18351,'36629',32149,32150,4,0),(18352,'36630',31399,31400,4,0),(18353,'36633',31401,31402,4,0),(18354,'36634',31403,31404,4,0),(18355,'36635',31405,31406,4,0),(18356,'36635',31893,31894,4,0),(18357,'36636',31895,31896,4,0),(18358,'36637',31617,31618,4,0),(18359,'36638',31603,31604,4,0),(18360,'36638',31897,31898,4,0),(18361,'36639',31407,31408,4,0),(18362,'36640',31809,31810,4,0),(18363,'36645',32037,32038,4,0),(18364,'36646',32039,32040,4,0),(18365,'36647',32041,32042,4,0),(18366,'36649',31811,31812,4,0),(18367,'36650',31385,31386,4,0),(18368,'36653',31387,31388,4,0),(18369,'36654',31389,31390,4,0),(18370,'36655',31391,31392,4,0),(18371,'36656',31393,31394,4,0),(18372,'36657',31861,31862,4,0),(18373,'36658',31247,31248,4,0),(18374,'36658',31863,31864,4,0),(18375,'36659',31395,31396,4,0),(18376,'36660',31655,31656,4,0),(18377,'36668',31657,31658,4,0),(18378,'36669',31659,31660,4,0),(18379,'36670',31491,31492,4,0),(18380,'36675',31493,31494,4,0),(18381,'36676',31249,31250,4,0),(18382,'36677',31495,31496,4,0),(18383,'36678',31497,31498,4,0),(18384,'36679',31499,31500,4,0),(18385,'36680',31251,31252,4,0),(18386,'36681',31253,31254,4,0),(18387,'36682',31255,31256,4,0),(18388,'36683',31257,31258,4,0),(18389,'36684',31259,31260,4,0),(18390,'36685',31261,31262,4,0),(18391,'36685',31777,31778,4,0),(18392,'36686',31263,31264,4,0),(18393,'36687',31265,31266,4,0),(18394,'36688',31267,31268,4,0),(18395,'36689',31269,31270,4,0),(18396,'36690',31853,31854,4,0),(18397,'36690',31983,31984,4,0),(18398,'36691',31985,31986,4,0),(18399,'36692',31369,31370,4,0),(18400,'36693',31869,31870,4,0),(18401,'36700',32017,32018,4,0),(18402,'36710',32019,32020,4,0),(18403,'36711',32021,32022,4,0),(18404,'36712',32023,32024,4,0),(18405,'36713',32025,32026,4,0),(18406,'36714',32027,32028,4,0),(18407,'36715',32029,32030,4,0),(18408,'36720',32031,32032,4,0),(18409,'36729',32033,32034,4,0),(18410,'36730',31991,31992,4,0),(18411,'36739',31993,31994,4,0),(18412,'36740',31995,31996,4,0),(18413,'36746',31997,31998,4,0),(18414,'36747',31999,32000,4,0),(18415,'36748',32001,32002,4,0),(18416,'36749',32003,32004,4,0),(18417,'36750',32005,32006,4,0),(18418,'36760',31719,31720,4,0),(18419,'36770',31721,31722,4,0),(18420,'36778',31723,31724,4,0),(18421,'36779',31729,31730,4,0),(18422,'36780',31273,31274,4,0),(18423,'36788',31275,31276,4,0),(18424,'36789',31277,31278,4,0),(18425,'36790',32007,32008,4,0),(18426,'36791',32009,32010,4,0),(18427,'36792',32011,32012,4,0),(18428,'36794',31731,31732,4,0),(18429,'36800',31871,31872,4,0),(18430,'36810',31873,31874,4,0),(18431,'36811',31875,31876,4,0),(18432,'36812',31877,31878,4,0),(18433,'36813',31879,31880,4,0),(18434,'36814',31881,31882,4,0),(18435,'36815',31883,31884,4,0),(18436,'36816',31885,31886,4,0),(18437,'36817',31735,31736,4,0),(18438,'36817',31887,31888,4,0),(18439,'36818',31889,31890,4,0),(18440,'36820',31761,31762,4,0),(18441,'36826',31763,31764,4,0),(18442,'36827',31765,31766,4,0),(18443,'36828',31767,31768,4,0),(18444,'36829',31769,31770,4,0),(18445,'36830',31285,31286,4,0),(18446,'36835',31287,31288,4,0),(18447,'36836',31289,31290,4,0),(18448,'36837',31291,31292,4,0),(18449,'36838',31293,31294,4,0),(18450,'36839',31295,31296,4,0),(18451,'36840',31737,31738,4,0),(18452,'36841',31739,31740,4,0),(18453,'36842',31741,31742,4,0),(18454,'36843',31743,31744,4,0),(18455,'36844',31745,31746,4,0),(18456,'36845',31529,31530,4,0),(18457,'36846',31531,31532,4,0),(18458,'36847',31533,31534,4,0),(18459,'36848',31535,31536,4,0),(18460,'36849',31537,31538,4,0),(18461,'36850',31297,31298,4,0),(18462,'36851',31539,31540,4,0),(18463,'36852',31541,31542,4,0),(18464,'36853',31771,31772,4,0),(18465,'36853',31299,31300,4,0),(18466,'36854',31445,31446,4,0),(18467,'36855',31447,31448,4,0),(18468,'36856',31449,31450,4,0),(18469,'36857',31773,31774,4,0),(18470,'36857',31451,31452,4,0),(18471,'36858',31453,31454,4,0),(18472,'36859',31455,31456,4,0),(18473,'36860',31779,31780,4,0),(18474,'36861',31781,31782,4,0),(18475,'36862',31783,31784,4,0),(18476,'36863',31785,31786,4,0),(18477,'36864',31787,31788,4,0),(18478,'36865',31789,31790,4,0),(18479,'36866',31791,31792,4,0),(18480,'36867',31793,31794,4,0),(18481,'36868',31795,31796,4,0),(18482,'36869',31797,31798,4,0),(18483,'36870',31635,31636,4,0),(18484,'36872',31459,31460,4,0),(18485,'36873',31461,31462,4,0),(18486,'36874',31637,31638,4,0),(18487,'36875',31639,31640,4,0),(18488,'36875',31543,31544,4,0),(18489,'36876',31641,31642,4,0),(18490,'36876',31463,31464,4,0),(18491,'36877',31643,31644,4,0),(18492,'36877',31465,31466,4,0),(18493,'36878',31645,31646,4,0),(18494,'36878',31467,31468,4,0),(18495,'36879',31647,31648,4,0),(18496,'36880',31223,31224,4,0),(18497,'36883',31225,31226,4,0),(18498,'36884',31227,31228,4,0),(18499,'36885',31487,31488,4,0),(18500,'36885',31229,31230,4,0),(18501,'36886',31231,31232,4,0),(18502,'36887',31233,31234,4,0),(18503,'36888',31235,31236,4,0),(18504,'36889',31237,31238,4,0),(18505,'36889',31469,31470,4,0),(18506,'36890',31651,31652,4,0),(18507,'36891',31799,31800,4,0),(18508,'36892',31801,31802,4,0),(18509,'36893',31803,31804,4,0),(18510,'36895',31805,31806,4,0),(18511,'36900',31587,31588,4,0),(18512,'36910',31855,31856,4,0),(18513,'36911',31589,31590,4,0),(18514,'36912',31591,31592,4,0),(18515,'36913',31593,31594,4,0),(18516,'36914',31595,31596,4,0),(18517,'36915',31597,31598,4,0),(18518,'36920',31599,31600,4,0),(18519,'36930',31373,31374,4,0),(18520,'36937',31375,31376,4,0),(18521,'36938',31377,31378,4,0),(18522,'36939',31379,31380,4,0),(18523,'36940',31421,31422,4,0),(18524,'36945',31423,31424,4,0),(18525,'36946',31425,31426,4,0),(18526,'36947',31427,31428,4,0),(18527,'36948',31429,31430,4,0),(18528,'36950',31621,31622,4,0),(18529,'36954',31623,31624,4,0),(18530,'36955',31625,31626,4,0),(18531,'36957',31627,31628,4,0),(18532,'36958',31629,31630,4,0),(18533,'36959',31631,31632,4,0),(18534,'36960',31943,31944,4,0),(18535,'36966',31945,31946,4,0),(18536,'36967',31605,31606,4,0),(18537,'36968',31607,31608,4,0),(18538,'36969',31947,31948,4,0),(18539,'36969',31609,31610,4,0),(18540,'36970',31949,31950,4,0),(18541,'36979',31951,31952,4,0),(18542,'36980',31691,31692,4,0),(18543,'36988',31693,31694,4,0),(18544,'36989',31695,31696,4,0),(18545,'36990',31953,31954,4,0),(18546,'36991',31697,31698,4,0),(18547,'36992',31753,31754,4,0),(18548,'36993',31755,31756,4,0),(18549,'36995',31757,31758,4,0),(18550,'37001',33435,33436,4,0),(18551,'37002',33437,33438,4,0),(18552,'37003',33439,33440,4,0),(18553,'37004',33441,33442,4,0),(18554,'37005',33443,33444,4,0),(18555,'37006',33445,33446,4,0),(18556,'37007',33447,33448,4,0),(18557,'37008',33449,33450,4,0),(18558,'37008',32469,32470,4,0),(18559,'37100',33035,33036,4,0),(18560,'37110',32625,32626,4,0),(18561,'37110',33907,33908,4,0),(18562,'37110',32235,32236,4,0),(18563,'37110',33577,33578,4,0),(18564,'37110',33671,33672,4,0),(18565,'37110',33519,33520,4,0),(18566,'37111',32293,32294,4,0),(18567,'37111',33037,33038,4,0),(18568,'37111',33253,33254,4,0),(18569,'37111',33521,33522,4,0),(18570,'37114',32821,32822,4,0),(18571,'37114',32691,32692,4,0),(18572,'37114',33853,33854,4,0),(18573,'37115',33755,33756,4,0),(18574,'37115',33741,33742,4,0),(18575,'37115',32279,32280,4,0),(18576,'37115',32895,32896,4,0),(18577,'37115',33833,33834,4,0),(18578,'37116',33039,33040,4,0),(18579,'37117',32613,32614,4,0),(18580,'37120',32483,32484,4,0),(18581,'37120',32615,32616,4,0),(18582,'37129',32731,32732,4,0),(18583,'37129',32781,32782,4,0),(18584,'37129',32485,32486,4,0),(18585,'37129',33265,33266,4,0),(18586,'37129',32617,32618,4,0),(18587,'37130',33835,33836,4,0),(18588,'37130',32605,32606,4,0),(18589,'37130',32959,32960,4,0),(18590,'37130',32445,32446,4,0),(18591,'37130',33421,33422,4,0),(18592,'37130',33623,33624,4,0),(18593,'37139',32607,32608,4,0),(18594,'37139',32961,32962,4,0),(18595,'37140',33857,33858,4,0),(18596,'37147',33803,33804,4,0),(18597,'37148',33859,33860,4,0),(18598,'37148',33805,33806,4,0),(18599,'37148',32719,32720,4,0),(18600,'37148',33679,33680,4,0),(18601,'37149',33861,33862,4,0),(18602,'37149',33041,33042,4,0),(18603,'37149',33681,33682,4,0),(18604,'37150',33863,33864,4,0),(18605,'37159',33393,33394,4,0),(18606,'37159',33865,33866,4,0),(18607,'37160',33825,33826,4,0),(18608,'37169',33827,33828,4,0),(18609,'37170',32825,32826,4,0),(18610,'37170',33837,33838,4,0),(18611,'37170',33911,33912,4,0),(18612,'37170',32675,32676,4,0),(18613,'37170',33757,33758,4,0),(18614,'37170',33515,33516,4,0),(18615,'37170',32569,32570,4,0),(18616,'37170',32487,32488,4,0),(18617,'37170',32963,32964,4,0),(18618,'37171',32659,32660,4,0),(18619,'37171',33137,33138,4,0),(18620,'37172',33581,33582,4,0),(18621,'37173',32181,32182,4,0),(18622,'37173',33675,33676,4,0),(18623,'37174',33829,33830,4,0),(18624,'37175',33345,33346,4,0),(18625,'37176',32283,32284,4,0),(18626,'37181',33305,33306,4,0),(18627,'37181',32419,32420,4,0),(18628,'37183',33165,33166,4,0),(18629,'37183',32301,32302,4,0),(18630,'37183',33501,33502,4,0),(18631,'37183',32251,32252,4,0),(18632,'37183',33185,33186,4,0),(18633,'37184',33813,33814,4,0),(18634,'37185',32515,32516,4,0),(18635,'37185',33777,33778,4,0),(18636,'37185',32609,32610,4,0),(18637,'37185',33743,33744,4,0),(18638,'37186',32253,32254,4,0),(18639,'37186',33187,33188,4,0),(18640,'37186',32333,32334,4,0),(18641,'37186',33503,33504,4,0),(18642,'37187',32255,32256,4,0),(18643,'37187',33113,33114,4,0),(18644,'37188',32303,32304,4,0),(18645,'37188',32471,32472,4,0),(18646,'37189',33815,33816,4,0),(18647,'37190',33655,33656,4,0),(18648,'37191',32473,32474,4,0),(18649,'37191',32423,32424,4,0),(18650,'37192',32489,32490,4,0),(18651,'37192',32257,32258,4,0),(18652,'37193',33505,33506,4,0),(18653,'37193',32409,32410,4,0),(18654,'37194',33557,33558,4,0),(18655,'37197',33189,33190,4,0),(18656,'37198',32475,32476,4,0),(18657,'37200',32943,32944,4,0),(18658,'37207',32945,32946,4,0),(18659,'37208',32947,32948,4,0),(18660,'37208',33495,33496,4,0),(18661,'37209',33309,33310,4,0),(18662,'37209',32649,32650,4,0),(18663,'37209',32391,32392,4,0),(18664,'37209',32815,32816,4,0),(18665,'37210',33893,33894,4,0),(18666,'37214',33005,33006,4,0),(18667,'37214',32401,32402,4,0),(18668,'37214',32977,32978,4,0),(18669,'37214',33731,33732,4,0),(18670,'37216',33369,33370,4,0),(18671,'37216',32563,32564,4,0),(18672,'37216',33177,33178,4,0),(18673,'37216',33337,33338,4,0),(18674,'37216',33341,33342,4,0),(18675,'37217',32343,32344,4,0),(18676,'37217',32887,32888,4,0),(18677,'37217',33841,33842,4,0),(18678,'37217',32387,32388,4,0),(18679,'37217',33527,33528,4,0),(18680,'37217',33809,33810,4,0),(18681,'37217',33733,33734,4,0),(18682,'37219',33411,33412,4,0),(18683,'37219',32833,32834,4,0),(18684,'37219',33179,33180,4,0),(18685,'37219',33899,33900,4,0),(18686,'37219',32411,32412,4,0),(18687,'37220',32939,32940,4,0),(18688,'37230',32867,32868,4,0),(18689,'37240',33057,33058,4,0),(18690,'37246',33611,33612,4,0),(18691,'37247',32981,32982,4,0),(18692,'37248',32177,32178,4,0),(18693,'37250',32215,32216,4,0),(18694,'37250',33895,33896,4,0),(18695,'37251',32217,32218,4,0),(18696,'37251',33095,33096,4,0),(18697,'37253',32541,32542,4,0),(18698,'37253',32219,32220,4,0),(18699,'37253',33009,33010,4,0),(18700,'37254',33109,33110,4,0),(18701,'37255',32347,32348,4,0),(18702,'37256',33713,33714,4,0),(18703,'37256',33845,33846,4,0),(18704,'37256',32663,32664,4,0),(18705,'37256',32705,32706,4,0),(18706,'37257',33585,33586,4,0),(18707,'37258',33889,33890,4,0),(18708,'37258',33181,33182,4,0),(18709,'37259',33453,33454,4,0),(18710,'37260',33877,33878,4,0),(18711,'37267',33821,33822,4,0),(18712,'37270',33473,33474,4,0),(18713,'37271',32329,32330,4,0),(18714,'37273',32545,32546,4,0),(18715,'37281',32651,32652,4,0),(18716,'37290',32375,32376,4,0),(18717,'37291',32379,32380,4,0),(18718,'37291',32363,32364,4,0),(18719,'37291',33241,33242,4,0),(18720,'37291',32547,32548,4,0),(18721,'37291',32755,32756,4,0),(18722,'37292',33243,33244,4,0),(18723,'37300',33329,33330,4,0),(18724,'37310',33065,33066,4,0),(18725,'37311',33563,33564,4,0),(18726,'37312',32185,32186,4,0),(18727,'37313',33073,33074,4,0),(18728,'37314',33457,33458,4,0),(18729,'37315',33077,33078,4,0),(18730,'37316',32383,32384,4,0),(18731,'37317',32637,32638,4,0),(18732,'37317',32247,32248,4,0),(18733,'37318',33275,33276,4,0),(18734,'37318',33407,33408,4,0),(18735,'37319',32465,32466,4,0),(18736,'37320',33793,33794,4,0),(18737,'37329',33761,33762,4,0),(18738,'37329',32203,32204,4,0),(18739,'37330',32325,32326,4,0),(18740,'37337',32593,32594,4,0),(18741,'37337',33169,33170,4,0),(18742,'37338',32883,32884,4,0),(18743,'37338',33885,33886,4,0),(18744,'37339',33881,33882,4,0),(18745,'37340',33491,33492,4,0),(18746,'37340',32239,32240,4,0),(18747,'37350',32223,32224,4,0),(18748,'37400',32457,32458,4,0),(18749,'37405',32461,32462,4,0),(18750,'37406',33257,33258,4,0),(18751,'37406',33765,33766,4,0),(18752,'37406',33365,33366,4,0),(18753,'37408',33915,33916,4,0),(18754,'37409',33639,33640,4,0),(18755,'37410',32671,32672,4,0),(18756,'37418',32297,32298,4,0),(18757,'37419',33271,33272,4,0),(18758,'37419',32727,32728,4,0),(18759,'37420',32829,32830,4,0),(18760,'37427',33001,33002,4,0),(18761,'37427',33301,33302,4,0),(18762,'37427',32971,32972,4,0),(18763,'37428',33247,33248,4,0),(18764,'37428',32973,32974,4,0),(18765,'37428',33873,33874,4,0),(18766,'37429',32311,32312,4,0),(18767,'37429',33643,33644,4,0),(18768,'37429',32227,32228,4,0),(18769,'37430',33173,33174,4,0),(18770,'37439',33465,33466,4,0),(18771,'37439',32511,32512,4,0),(18772,'37440',32427,32428,4,0),(18773,'37440',32335,32336,4,0),(18774,'37447',33427,33428,4,0),(18775,'37448',32447,32448,4,0),(18776,'37448',32429,32430,4,0),(18777,'37449',33267,33268,4,0),(18778,'37449',32491,32492,4,0),(18779,'37449',32783,32784,4,0),(18780,'37450',33099,33100,4,0),(18781,'37450',33025,33026,4,0),(18782,'37450',33747,33748,4,0),(18783,'37451',33773,33774,4,0),(18784,'37451',32493,32494,4,0),(18785,'37451',32497,32498,4,0),(18786,'37452',33195,33196,4,0),(18787,'37452',33027,33028,4,0),(18788,'37452',33749,33750,4,0),(18789,'37453',33751,33752,4,0),(18790,'37453',33101,33102,4,0),(18791,'37453',33507,33508,4,0),(18792,'37454',33029,33030,4,0),(18793,'37458',33291,33292,4,0),(18794,'37460',33545,33546,4,0),(18795,'37460',32267,32268,4,0),(18796,'37460',33625,33626,4,0),(18797,'37460',32817,32818,4,0),(18798,'37465',32989,32990,4,0),(18799,'37466',33531,33532,4,0),(18800,'37466',32269,32270,4,0),(18801,'37467',33547,33548,4,0),(18802,'37468',33553,33554,4,0),(18803,'37468',33549,33550,4,0),(18804,'37468',32565,32566,4,0),(18805,'37468',33849,33850,4,0),(18806,'37470',33539,33540,4,0),(18807,'37478',32273,32274,4,0),(18808,'37478',32199,32200,4,0),(18809,'37478',32601,32602,4,0),(18810,'37479',32523,32524,4,0),(18811,'37479',33541,33542,4,0),(18812,'37480',32767,32768,4,0),(18813,'37481',32769,32770,4,0),(18814,'37488',33797,33798,4,0),(18815,'37488',32923,32924,4,0),(18816,'37488',33509,33510,4,0),(18817,'37488',33403,33404,4,0),(18818,'37488',32207,32208,4,0),(18819,'37488',33789,33790,4,0),(18820,'37490',32405,32406,4,0),(18821,'37490',33357,33358,4,0),(18822,'37491',32449,32450,4,0),(18823,'37491',33627,33628,4,0),(18824,'37492',33423,33424,4,0),(18825,'37493',33311,33312,4,0),(18826,'37493',32949,32950,4,0),(18827,'37493',32393,32394,4,0),(18828,'37494',33085,33086,4,0),(18829,'37494',32529,32530,4,0),(18830,'37495',33413,33414,4,0),(18831,'37496',33087,33088,4,0),(18832,'37497',33799,33800,4,0),(18833,'37497',32899,32900,4,0),(18834,'37497',32479,32480,4,0),(18835,'37497',33785,33786,4,0),(18836,'37497',32723,32724,4,0),(18837,'37497',32797,32798,4,0),(18838,'37500',32571,32572,4,0),(18839,'37510',33081,33082,4,0),(18840,'37510',32851,32852,4,0),(18841,'37510',33279,33280,4,0),(18842,'37510',32173,32174,4,0),(18843,'37510',32679,32680,4,0),(18844,'37515',32935,32936,4,0),(18845,'37516',32853,32854,4,0),(18846,'37520',32629,32630,4,0),(18847,'37521',33417,33418,4,0),(18848,'37522',33869,33870,4,0),(18849,'37523',33325,33326,4,0),(18850,'37524',32667,32668,4,0),(18851,'37530',33603,33604,4,0),(18852,'37531',33597,33598,4,0),(18853,'37532',33141,33142,4,0),(18854,'37540',32751,32752,4,0),(18855,'37541',32507,32508,4,0),(18856,'37542',33233,33234,4,0),(18857,'37550',32437,32438,4,0),(18858,'37551',32891,32892,4,0),(18859,'37552',33373,33374,4,0),(18860,'37553',33375,33376,4,0),(18861,'37554',32903,32904,4,0),(18862,'37555',32911,32912,4,0),(18863,'37590',32573,32574,4,0),(18864,'37590',33651,33652,4,0),(18865,'37590',33599,33600,4,0),(18866,'37590',33161,33162,4,0),(18867,'37591',33903,33904,4,0),(18868,'37591',32575,32576,4,0),(18869,'37591',32915,32916,4,0),(18870,'37591',32259,32260,4,0),(18871,'37592',33431,33432,4,0),(18872,'37592',32525,32526,4,0),(18873,'37593',32577,32578,4,0),(18874,'37594',32579,32580,4,0),(18875,'37595',32581,32582,4,0),(18876,'37600',33631,33632,4,0),(18877,'37606',33383,33384,4,0),(18878,'37607',32339,32340,4,0),(18879,'37607',33647,33648,4,0),(18880,'37607',32985,32986,4,0),(18881,'37607',33229,33230,4,0),(18882,'37608',33633,33634,4,0),(18883,'37609',33031,33032,4,0),(18884,'37609',32367,32368,4,0),(18885,'37609',33511,33512,4,0),(18886,'37609',33635,33636,4,0),(18887,'37609',32499,32500,4,0),(18888,'37609',33197,33198,4,0),(18889,'37610',33121,33122,4,0),(18890,'37617',32857,32858,4,0),(18891,'37618',33129,33130,4,0),(18892,'37619',33069,33070,4,0),(18893,'37619',32859,32860,4,0),(18894,'37621',32537,32538,4,0),(18895,'37621',32231,32232,4,0),(18896,'37621',32633,32634,4,0),(18897,'37621',32559,32560,4,0),(18898,'37621',32919,32920,4,0),(18899,'37621',32655,32656,4,0),(18900,'37624',32907,32908,4,0),(18901,'37630',32415,32416,4,0),(18902,'37638',33589,33590,4,0),(18903,'37638',32875,32876,4,0),(18904,'37639',32275,32276,4,0),(18905,'37640',33497,33498,4,0),(18906,'37640',32169,32170,4,0),(18907,'37650',33593,33594,4,0),(18908,'37656',32533,32534,4,0),(18909,'37657',33619,33620,4,0),(18910,'37658',32805,32806,4,0),(18911,'37658',33781,33782,4,0),(18912,'37659',33205,33206,4,0),(18913,'37659',33477,33478,4,0),(18914,'37659',33485,33486,4,0),(18915,'37659',33021,33022,4,0),(18916,'37660',33117,33118,4,0),(18917,'37670',33571,33572,4,0),(18918,'37671',33469,33470,4,0),(18919,'37680',33689,33690,4,0),(18920,'37682',33573,33574,4,0),(18921,'37683',33125,33126,4,0),(18922,'37684',32597,32598,4,0),(18923,'37690',32951,32952,4,0),(18924,'37694',33487,33488,4,0),(18925,'37700',32351,32352,4,0),(18926,'37700',32841,32842,4,0),(18927,'37710',32441,32442,4,0),(18928,'37711',32589,32590,4,0),(18929,'37712',33353,33354,4,0),(18930,'37712',32871,32872,4,0),(18931,'37713',33693,33694,4,0),(18932,'37714',32931,32932,4,0),(18933,'37716',32955,32956,4,0),(18934,'37716',32453,32454,4,0),(18935,'37716',33213,33214,4,0),(18936,'37717',33727,33728,4,0),(18937,'37717',32353,32354,4,0),(18938,'37718',32211,32212,4,0),(18939,'37720',33397,33398,4,0),(18940,'37720',32641,32642,4,0),(18941,'37724',33701,33702,4,0),(18942,'37724',32643,32644,4,0),(18943,'37724',33013,33014,4,0),(18944,'37726',32645,32646,4,0),(18945,'37727',33149,33150,4,0),(18946,'37727',33321,33322,4,0),(18947,'37729',33399,33400,4,0),(18948,'37730',33045,33046,4,0),(18949,'37740',33567,33568,4,0),(18950,'37748',33387,33388,4,0),(18951,'37749',32683,32684,4,0),(18952,'37749',33225,33226,4,0),(18953,'37750',32551,32552,4,0),(18954,'37750',33389,33390,4,0),(18955,'37751',32801,32802,4,0),(18956,'37752',32997,32998,4,0),(18957,'37753',32315,32316,4,0),(18958,'37754',32317,32318,4,0),(18959,'37755',32319,32320,4,0),(18960,'37756',32321,32322,4,0),(18961,'37760',33049,33050,4,0),(18962,'37762',32863,32864,4,0),(18963,'37762',32715,32716,4,0),(18964,'37762',32993,32994,4,0),(18965,'37763',33481,33482,4,0),(18966,'37764',33723,33724,4,0),(18967,'37765',32709,32710,4,0),(18968,'37765',32687,32688,4,0),(18969,'37765',33133,33134,4,0),(18970,'37766',33293,33294,4,0),(18971,'37766',32711,32712,4,0),(18972,'37766',32739,32740,4,0),(18973,'37766',33105,33106,4,0),(18974,'37767',32503,32504,4,0),(18975,'37768',32759,32760,4,0),(18976,'37768',33053,33054,4,0),(18977,'37770',32843,32844,4,0),(18978,'37774',32837,32838,4,0),(18979,'37775',32743,32744,4,0),(18980,'37776',33201,33202,4,0),(18981,'37777',33615,33616,4,0),(18982,'37777',32927,32928,4,0),(18983,'37778',32845,32846,4,0),(18984,'37779',33461,33462,4,0),(18985,'37779',32263,32264,4,0),(18986,'37780',32967,32968,4,0),(18987,'37785',32787,32788,4,0),(18988,'37786',32789,32790,4,0),(18989,'37787',33315,33316,4,0),(18990,'37788',33295,33296,4,0),(18991,'37788',33157,33158,4,0),(18992,'37789',32397,32398,4,0),(18993,'37789',32359,32360,4,0),(18994,'37789',32747,32748,4,0),(18995,'37790',32763,32764,4,0),(18996,'37791',33349,33350,4,0),(18997,'37791',33737,33738,4,0),(18998,'37791',33379,33380,4,0),(18999,'37791',33697,33698,4,0),(19000,'37792',33297,33298,4,0),(19001,'37793',32305,32306,4,0),(19002,'37793',32355,32356,4,0),(19003,'37794',33221,33222,4,0),(19004,'37794',33535,33536,4,0),(19005,'37795',33145,33146,4,0),(19006,'37795',32847,32848,4,0),(19007,'37795',32371,32372,4,0),(19008,'37795',33361,33362,4,0),(19009,'37796',33191,33192,4,0),(19010,'37796',32307,32308,4,0),(19011,'37797',32433,32434,4,0),(19012,'37797',32517,32518,4,0),(19013,'37798',33817,33818,4,0),(19014,'37798',33717,33718,4,0),(19015,'37798',32519,32520,4,0),(19016,'37798',33153,33154,4,0),(19017,'37799',33663,33664,4,0),(19018,'37799',33523,33524,4,0),(19019,'37799',32735,32736,4,0),(19020,'37799',33237,33238,4,0),(19021,'37799',33719,33720,4,0),(19022,'37799',33261,33262,4,0),(19023,'37799',33705,33706,4,0),(19024,'37800',32189,32190,4,0),(19025,'37810',32809,32810,4,0),(19026,'37820',33333,33334,4,0),(19027,'37830',32585,32586,4,0),(19028,'37840',33667,33668,4,0),(19029,'37850',33209,33210,4,0),(19030,'37860',32877,32878,4,0),(19031,'37861',32555,32556,4,0),(19032,'37862',32879,32880,4,0),(19033,'37863',32287,32288,4,0),(19034,'37864',32289,32290,4,0),(19035,'37865',33017,33018,4,0),(19036,'37870',32243,32244,4,0),(19037,'37871',33287,33288,4,0),(19038,'37872',32773,32774,4,0),(19039,'37873',32775,32776,4,0),(19040,'37874',32777,32778,4,0),(19041,'37874',32695,32696,4,0),(19042,'37874',32811,32812,4,0),(19043,'37881',33685,33686,4,0),(19044,'37882',33217,33218,4,0),(19045,'37882',33657,33658,4,0),(19046,'37882',33283,33284,4,0),(19047,'37890',32191,32192,4,0),(19048,'37891',32621,32622,4,0),(19049,'37891',33709,33710,4,0),(19050,'37891',33091,33092,4,0),(19051,'37891',33317,33318,4,0),(19052,'37891',32793,32794,4,0),(19053,'37892',33607,33608,4,0),(19054,'37892',32193,32194,4,0),(19055,'37892',32701,32702,4,0),(19056,'37893',32195,32196,4,0),(19057,'37893',33061,33062,4,0),(19058,'37893',32697,32698,4,0),(19059,'37893',33659,33660,4,0),(19060,'37893',33769,33770,4,0),(19061,'37900',33559,33560,4,0),(19062,'39001',11013,11014,4,0),(19063,'39002',11015,11016,4,0),(19064,'39003',11017,11018,4,0),(19065,'39004',11019,11020,4,0),(19066,'39005',11021,11022,4,0),(19067,'39006',11023,11024,4,0),(19068,'39007',11025,11026,4,0),(19069,'39008',11027,11028,4,0),(19070,'39009',11029,11030,4,0),(19071,'39010',11031,11032,4,0),(19072,'39011',11033,11034,4,0),(19073,'39012',11035,11036,4,0),(19074,'39100',10993,10994,4,0),(19075,'39108',10995,10996,4,0),(19076,'39110',10997,10998,4,0),(19077,'39120',10847,10848,4,0),(19078,'39130',10767,10768,4,0),(19079,'39140',10915,10916,4,0),(19080,'39146',10917,10918,4,0),(19081,'39150',10919,10920,4,0),(19082,'39160',10921,10922,4,0),(19083,'39170',10503,10504,4,0),(19084,'39180',10825,10826,4,0),(19085,'39190',10505,10506,4,0),(19086,'39191',10507,10508,4,0),(19087,'39192',10795,10796,4,0),(19088,'39193',10477,10478,4,0),(19089,'39193',10663,10664,4,0),(19090,'39195',10479,10480,4,0),(19091,'39197',10473,10474,4,0),(19092,'39197',11065,11066,4,0),(19093,'39200',10899,10900,4,0),(19094,'39200',10563,10564,4,0),(19095,'39210',10691,10692,4,0),(19096,'39211',10693,10694,4,0),(19097,'39212',10565,10566,4,0),(19098,'39212',10695,10696,4,0),(19099,'39213',10567,10568,4,0),(19100,'39213',10697,10698,4,0),(19101,'39220',11167,11168,4,0),(19102,'39229',11169,11170,4,0),(19103,'39230',11171,11172,4,0),(19104,'39232',11173,11174,4,0),(19105,'39232',7271,7272,4,0),(19106,'39248',11159,11160,4,0),(19107,'39250',11175,11176,4,0),(19108,'39250',30403,30404,4,0),(19109,'39290',10575,10576,4,0),(19110,'39291',10577,10578,4,0),(19111,'39291',10569,10570,4,0),(19112,'39292',10579,10580,4,0),(19113,'39293',10581,10582,4,0),(19114,'39294',10583,10584,4,0),(19115,'39300',11111,11112,4,0),(19116,'39310',10799,10800,4,0),(19117,'39311',10587,10588,4,0),(19118,'39312',10867,10868,4,0),(19119,'39312',10801,10802,4,0),(19120,'39313',10869,10870,4,0),(19121,'39314',11039,11040,4,0),(19122,'39315',11113,11114,4,0),(19123,'39316',11115,11116,4,0),(19124,'39317',11117,11118,4,0),(19125,'39318',10803,10804,4,0),(19126,'39320',10441,10442,4,0),(19127,'39329',10443,10444,4,0),(19128,'39330',11041,11042,4,0),(19129,'39340',11103,11104,4,0),(19130,'39350',11105,11106,4,0),(19131,'39360',11043,11044,4,0),(19132,'39360',11107,11108,4,0),(19133,'39390',11045,11046,4,0),(19134,'39400',10745,10746,4,0),(19135,'39407',27575,27576,4,0),(19136,'39408',10747,10748,4,0),(19137,'39409',10963,10964,4,0),(19138,'39410',11153,11154,4,0),(19139,'39416',10721,10722,4,0),(19140,'39417',11161,11162,4,0),(19141,'39417',10723,10724,4,0),(19142,'39418',11155,11156,4,0),(19143,'39419',11177,11178,4,0),(19144,'39419',11163,11164,4,0),(19145,'39420',10815,10816,4,0),(19146,'39420',10499,10500,4,0),(19147,'39430',10817,10818,4,0),(19148,'39438',10819,10820,4,0),(19149,'39439',10821,10822,4,0),(19150,'39450',10467,10468,4,0),(19151,'39451',10463,10464,4,0),(19152,'39451',10469,10470,4,0),(19153,'39460',10589,10590,4,0),(19154,'39460',10749,10750,4,0),(19155,'39470',10849,10850,4,0),(19156,'39477',10851,10852,4,0),(19157,'39478',10853,10854,4,0),(19158,'39479',10855,10856,4,0),(19159,'39490',11051,11052,4,0),(19160,'39491',10843,10844,4,0),(19161,'39491',11053,11054,4,0),(19162,'39491',10967,10968,4,0),(19163,'39491',10571,10572,4,0),(19164,'39500',10511,10512,4,0),(19165,'39506',10513,10514,4,0),(19166,'39507',11129,11130,4,0),(19167,'39507',10515,10516,4,0),(19168,'39509',10517,10518,4,0),(19169,'39509',10777,10778,4,0),(19170,'39510',10945,10946,4,0),(19171,'39510',10533,10534,4,0),(19172,'39511',10535,10536,4,0),(19173,'39513',10947,10948,4,0),(19174,'39517',10753,10754,4,0),(19175,'39518',10755,10756,4,0),(19176,'39518',10537,10538,4,0),(19177,'39520',10631,10632,4,0),(19178,'39525',10445,10446,4,0),(19179,'39526',10447,10448,4,0),(19180,'39527',10959,10960,4,0),(19181,'39528',11145,11146,4,0),(19182,'39528',10633,10634,4,0),(19183,'39530',10903,10904,4,0),(19184,'39530',11047,11048,4,0),(19185,'39538',10905,10906,4,0),(19186,'39539',10907,10908,4,0),(19187,'39539',10449,10450,4,0),(19188,'39540',10983,10984,4,0),(19189,'39547',10985,10986,4,0),(19190,'39548',10987,10988,4,0),(19191,'39548',11133,11134,4,0),(19192,'39549',10701,10702,4,0),(19193,'39549',10989,10990,4,0),(19194,'39549',11135,11136,4,0),(19195,'39550',10703,10704,4,0),(19196,'39550',10711,10712,4,0),(19197,'39551',10705,10706,4,0),(19198,'39553',10931,10932,4,0),(19199,'39554',10933,10934,4,0),(19200,'39555',11125,11126,4,0),(19201,'39556',10861,10862,4,0),(19202,'39557',10863,10864,4,0),(19203,'39558',10539,10540,4,0),(19204,'39559',10935,10936,4,0),(19205,'39560',11137,11138,4,0),(19206,'39569',11139,11140,4,0),(19207,'39570',10873,10874,4,0),(19208,'39571',10525,10526,4,0),(19209,'39572',10837,10838,4,0),(19210,'39573',10527,10528,4,0),(19211,'39574',10529,10530,4,0),(19212,'39574',10839,10840,4,0),(19213,'39575',11185,11186,4,0),(19214,'39577',11187,11188,4,0),(19215,'39580',10617,10618,4,0),(19216,'39580',10833,10834,4,0),(19217,'39580',11121,11122,4,0),(19218,'39582',10543,10544,4,0),(19219,'39583',10619,10620,4,0),(19220,'39584',10621,10622,4,0),(19221,'39585',10623,10624,4,0),(19222,'39586',10545,10546,4,0),(19223,'39587',10547,10548,4,0),(19224,'39588',10549,10550,4,0),(19225,'39589',10551,10552,4,0),(19226,'39590',10909,10910,4,0),(19227,'39590',10451,10452,4,0),(19228,'39591',10519,10520,4,0),(19229,'39591',10911,10912,4,0),(19230,'39592',10521,10522,4,0),(19231,'39592',11147,11148,4,0),(19232,'39592',10779,10780,4,0),(19233,'39593',11149,11150,4,0),(19234,'39594',11141,11142,4,0),(19235,'39594',10707,10708,4,0),(19236,'39600',10555,10556,4,0),(19237,'39608',10557,10558,4,0),(19238,'39609',10559,10560,4,0),(19239,'39610',10647,10648,4,0),(19240,'39611',10649,10650,4,0),(19241,'39612',10857,10858,4,0),(19242,'39613',10651,10652,4,0),(19243,'39618',10769,10770,4,0),(19244,'39619',10783,10784,4,0),(19245,'39620',11001,11002,4,0),(19246,'39626',11003,11004,4,0),(19247,'39627',10829,10830,4,0),(19248,'39627',11005,11006,4,0),(19249,'39630',11209,11210,4,0),(19250,'39638',11211,11212,4,0),(19251,'39639',11199,11200,4,0),(19252,'39639',11073,11074,4,0),(19253,'39640',11201,11202,4,0),(19254,'39649',11203,11204,4,0),(19255,'39650',11007,11008,4,0),(19256,'39650',10593,10594,4,0),(19257,'39660',10595,10596,4,0),(19258,'39670',10877,10878,4,0),(19259,'39679',10879,10880,4,0),(19260,'39680',10637,10638,4,0),(19261,'39682',10639,10640,4,0),(19262,'39682',10759,10760,4,0),(19263,'39682',11191,11192,4,0),(19264,'39683',10971,10972,4,0),(19265,'39683',11193,11194,4,0),(19266,'39685',11195,11196,4,0),(19267,'39686',10973,10974,4,0),(19268,'39687',10761,10762,4,0),(19269,'39688',10763,10764,4,0),(19270,'39689',11057,11058,4,0),(19271,'39691',11059,11060,4,0),(19272,'39694',11009,11010,4,0),(19273,'39696',11077,11078,4,0),(19274,'39697',10641,10642,4,0),(19275,'39698',11061,11062,4,0),(19276,'39699',10643,10644,4,0),(19277,'39700',10599,10600,4,0),(19278,'39706',10601,10602,4,0),(19279,'39707',10603,10604,4,0),(19280,'39708',10605,10606,4,0),(19281,'39709',10607,10608,4,0),(19282,'39710',10785,10786,4,0),(19283,'39715',10655,10656,4,0),(19284,'39716',10657,10658,4,0),(19285,'39717',11095,11096,4,0),(19286,'39718',10787,10788,4,0),(19287,'39718',10731,10732,4,0),(19288,'39719',10771,10772,4,0),(19289,'39719',10659,10660,4,0),(19290,'39720',10939,10940,4,0),(19291,'39722',10733,10734,4,0),(19292,'39723',10807,10808,4,0),(19293,'39723',10941,10942,4,0),(19294,'39724',10789,10790,4,0),(19295,'39725',10809,10810,4,0),(19296,'39726',10977,10978,4,0),(19297,'39727',10735,10736,4,0),(19298,'39728',11081,11082,4,0),(19299,'39728',10951,10952,4,0),(19300,'39728',10811,10812,4,0),(19301,'39728',10979,10980,4,0),(19302,'39730',10683,10684,4,0),(19303,'39738',11097,11098,4,0),(19304,'39738',10685,10686,4,0),(19305,'39739',10687,10688,4,0),(19306,'39740',11067,11068,4,0),(19307,'39749',11069,11070,4,0),(19308,'39750',10627,10628,4,0),(19309,'39760',10487,10488,4,0),(19310,'39761',11215,11216,4,0),(19311,'39761',10489,10490,4,0),(19312,'39762',11217,11218,4,0),(19313,'39764',11219,11220,4,0),(19314,'39766',11221,11222,4,0),(19315,'39770',10715,10716,4,0),(19316,'39776',10727,10728,4,0),(19317,'39777',10717,10718,4,0),(19318,'39778',10739,10740,4,0),(19319,'39778',10669,10670,4,0),(19320,'39780',10609,10610,4,0),(19321,'39780',10671,10672,4,0),(19322,'39786',10673,10674,4,0),(19323,'39787',10675,10676,4,0),(19324,'39788',10677,10678,4,0),(19325,'39790',10491,10492,4,0),(19326,'39791',11099,11100,4,0),(19327,'39791',10493,10494,4,0),(19328,'39792',10773,10774,4,0),(19329,'39792',10791,10792,4,0),(19330,'39793',10925,10926,4,0),(19331,'39794',10927,10928,4,0),(19332,'39795',10665,10666,4,0),(19333,'39796',10495,10496,4,0),(19334,'39798',10611,10612,4,0),(19335,'39800',10883,10884,4,0),(19336,'39805',11083,11084,4,0),(19337,'39805',10885,10886,4,0),(19338,'39806',11085,11086,4,0),(19339,'39807',11087,11088,4,0),(19340,'39808',11089,11090,4,0),(19341,'39809',10887,10888,4,0),(19342,'39811',10889,10890,4,0),(19343,'39812',10953,10954,4,0),(19344,'39813',10483,10484,4,0),(19345,'39813',11091,11092,4,0),(19346,'39815',10955,10956,4,0),(19347,'39815',10891,10892,4,0),(19348,'39820',10741,10742,4,0),(19349,'39840',10455,10456,4,0),(19350,'39849',10457,10458,4,0),(19351,'39850',10459,10460,4,0),(19352,'39860',10895,10896,4,0),(19353,'39880',10679,10680,4,0),(19354,'39880',11181,11182,4,0),(19355,'40001',34725,34726,4,0),(19356,'40002',34727,34728,4,0),(19357,'40003',34729,34730,4,0),(19358,'40004',34731,34732,4,0),(19359,'40005',34733,34734,4,0),(19360,'40006',34735,34736,4,0),(19361,'40100',34585,34586,4,0),(19362,'40109',34587,34588,4,0),(19363,'40120',34321,34322,4,0),(19364,'40121',33983,33984,4,0),(19365,'40122',34673,34674,4,0),(19366,'40123',34675,34676,4,0),(19367,'40130',34405,34406,4,0),(19368,'40131',34349,34350,4,0),(19369,'40132',34397,34398,4,0),(19370,'40133',34401,34402,4,0),(19371,'40134',34667,34668,4,0),(19372,'40135',34677,34678,4,0),(19373,'40136',34679,34680,4,0),(19374,'40140',34855,34856,4,0),(19375,'40141',34695,34696,4,0),(19376,'40141',33921,33922,4,0),(19377,'40142',34449,34450,4,0),(19378,'40142',34385,34386,4,0),(19379,'40142',34417,34418,4,0),(19380,'40144',34669,34670,4,0),(19381,'40144',34033,34034,4,0),(19382,'40145',34461,34462,4,0),(19383,'40146',34369,34370,4,0),(19384,'40150',34871,34872,4,0),(19385,'40151',34345,34346,4,0),(19386,'40152',34893,34894,4,0),(19387,'40153',34737,34738,4,0),(19388,'40154',34739,34740,4,0),(19389,'40156',34263,34264,4,0),(19390,'40160',34789,34790,4,0),(19391,'40161',34475,34476,4,0),(19392,'40162',34317,34318,4,0),(19393,'40162',33949,33950,4,0),(19394,'40163',34425,34426,4,0),(19395,'40164',33997,33998,4,0),(19396,'40165',34571,34572,4,0),(19397,'40165',34867,34868,4,0),(19398,'40170',34553,34554,4,0),(19399,'40170',34167,34168,4,0),(19400,'40170',34769,34770,4,0),(19401,'40171',34697,34698,4,0),(19402,'40171',34781,34782,4,0),(19403,'40172',34547,34548,4,0),(19404,'40173',34549,34550,4,0),(19405,'40173',34699,34700,4,0),(19406,'40173',33991,33992,4,0),(19407,'40174',34837,34838,4,0),(19408,'40175',34365,34366,4,0),(19409,'40176',34523,34524,4,0),(19410,'40176',34841,34842,4,0),(19411,'40180',34555,34556,4,0),(19412,'40180',34029,34030,4,0),(19413,'40180',34707,34708,4,0),(19414,'40180',34055,34056,4,0),(19415,'40181',34807,34808,4,0),(19416,'40182',34059,34060,4,0),(19417,'40183',34465,34466,4,0),(19418,'40184',34577,34578,4,0),(19419,'40184',33993,33994,4,0),(19420,'40184',34593,34594,4,0),(19421,'40185',34001,34002,4,0),(19422,'40185',34821,34822,4,0),(19423,'40185',34825,34826,4,0),(19424,'40185',34183,34184,4,0),(19425,'40190',34045,34046,4,0),(19426,'40191',34005,34006,4,0),(19427,'40191',34255,34256,4,0),(19428,'40192',34797,34798,4,0),(19429,'40192',33925,33926,4,0),(19430,'40194',34803,34804,4,0),(19431,'40194',34543,34544,4,0),(19432,'40195',34741,34742,4,0),(19433,'40196',34357,34358,4,0),(19434,'40196',34743,34744,4,0),(19435,'40197',34647,34648,4,0),(19436,'40200',34187,34188,4,0),(19437,'40210',34189,34190,4,0),(19438,'40211',34191,34192,4,0),(19439,'40212',34639,34640,4,0),(19440,'40213',34833,34834,4,0),(19441,'40214',34421,34422,4,0),(19442,'40214',34013,34014,4,0),(19443,'40215',34193,34194,4,0),(19444,'40216',34143,34144,4,0),(19445,'40216',34597,34598,4,0),(19446,'40217',34259,34260,4,0),(19447,'40218',34289,34290,4,0),(19448,'40219',34875,34876,4,0),(19449,'40220',34517,34518,4,0),(19450,'40230',34195,34196,4,0),(19451,'40231',34197,34198,4,0),(19452,'40232',34199,34200,4,0),(19453,'40233',34519,34520,4,0),(19454,'40234',34433,34434,4,0),(19455,'40235',33965,33966,4,0),(19456,'40236',34373,34374,4,0),(19457,'40237',34629,34630,4,0),(19458,'40238',34849,34850,4,0),(19459,'40239',34207,34208,4,0),(19460,'40240',34325,34326,4,0),(19461,'40241',34201,34202,4,0),(19462,'40242',34203,34204,4,0),(19463,'40250',34457,34458,4,0),(19464,'40260',34293,34294,4,0),(19465,'40270',34099,34100,4,0),(19466,'40280',34483,34484,4,0),(19467,'40290',34625,34626,4,0),(19468,'40291',34245,34246,4,0),(19469,'40291',34773,34774,4,0),(19470,'40292',33941,33942,4,0),(19471,'40293',34897,34898,4,0),(19472,'40294',34567,34568,4,0),(19473,'40295',34651,34652,4,0),(19474,'40296',34563,34564,4,0),(19475,'40297',34663,34664,4,0),(19476,'40298',34277,34278,4,0),(19477,'40300',34747,34748,4,0),(19478,'40310',34749,34750,4,0),(19479,'40310',34691,34692,4,0),(19480,'40311',34765,34766,4,0),(19481,'40311',34751,34752,4,0),(19482,'40312',34753,34754,4,0),(19483,'40312',34219,34220,4,0),(19484,'40313',34785,34786,4,0),(19485,'40314',34851,34852,4,0),(19486,'40314',34309,34310,4,0),(19487,'40315',34115,34116,4,0),(19488,'40315',34119,34120,4,0),(19489,'40316',34127,34128,4,0),(19490,'40317',34813,34814,4,0),(19491,'40317',34755,34756,4,0),(19492,'40318',34573,34574,4,0),(19493,'40318',34171,34172,4,0),(19494,'40318',34123,34124,4,0),(19495,'40320',34083,34084,4,0),(19496,'40330',34301,34302,4,0),(19497,'40331',34479,34480,4,0),(19498,'40331',34829,34830,4,0),(19499,'40331',34103,34104,4,0),(19500,'40332',34655,34656,4,0),(19501,'40332',34151,34152,4,0),(19502,'40340',34719,34720,4,0),(19503,'40340',33933,33934,4,0),(19504,'40350',34241,34242,4,0),(19505,'40351',34715,34716,4,0),(19506,'40352',34381,34382,4,0),(19507,'40353',34337,34338,4,0),(19508,'40354',33929,33930,4,0),(19509,'40354',34559,34560,4,0),(19510,'40354',34179,34180,4,0),(19511,'40355',34305,34306,4,0),(19512,'40356',34071,34072,4,0),(19513,'40357',34313,34314,4,0),(19514,'40358',34297,34298,4,0),(19515,'40359',34793,34794,4,0),(19516,'40359',34285,34286,4,0),(19517,'40360',34091,34092,4,0),(19518,'40370',34809,34810,4,0),(19519,'40380',34085,34086,4,0),(19520,'40380',34721,34722,4,0),(19521,'40389',34087,34088,4,0),(19522,'40389',34659,34660,4,0),(19523,'40389',33945,33946,4,0),(19524,'40389',34757,34758,4,0),(19525,'40390',34845,34846,4,0),(19526,'40391',34237,34238,4,0),(19527,'40392',34063,34064,4,0),(19528,'40392',34249,34250,4,0),(19529,'40393',34251,34252,4,0),(19530,'40394',34799,34800,4,0),(19531,'40395',34859,34860,4,0),(19532,'40396',34067,34068,4,0),(19533,'40400',34223,34224,4,0),(19534,'40408',34509,34510,4,0),(19535,'40410',34225,34226,4,0),(19536,'40418',34265,34266,4,0),(19537,'40419',34227,34228,4,0),(19538,'40420',34589,34590,4,0),(19539,'40420',34505,34506,4,0),(19540,'40420',34361,34362,4,0),(19541,'40421',34531,34532,4,0),(19542,'40422',34535,34536,4,0),(19543,'40423',34863,34864,4,0),(19544,'40423',34817,34818,4,0),(19545,'40424',34229,34230,4,0),(19546,'40430',34041,34042,4,0),(19547,'40440',34681,34682,4,0),(19548,'40441',34437,34438,4,0),(19549,'40442',34633,34634,4,0),(19550,'40443',34635,34636,4,0),(19551,'40444',34429,34430,4,0),(19552,'40445',34353,34354,4,0),(19553,'40446',34413,34414,4,0),(19554,'40447',34513,34514,4,0),(19555,'40448',34683,34684,4,0),(19556,'40449',34685,34686,4,0),(19557,'40450',34469,34470,4,0),(19558,'40460',34703,34704,4,0),(19559,'40461',34471,34472,4,0),(19560,'40462',33961,33962,4,0),(19561,'40462',33973,33974,4,0),(19562,'40463',34161,34162,4,0),(19563,'40464',34163,34164,4,0),(19564,'40465',34643,34644,4,0),(19565,'40466',34409,34410,4,0),(19566,'40466',34581,34582,4,0),(19567,'40467',34777,34778,4,0),(19568,'40468',34441,34442,4,0),(19569,'40469',34215,34216,4,0),(19570,'40470',34501,34502,4,0),(19571,'40480',34155,34156,4,0),(19572,'40490',34341,34342,4,0),(19573,'40490',34389,34390,4,0),(19574,'40491',34007,34008,4,0),(19575,'40492',33987,33988,4,0),(19576,'40493',34889,34890,4,0),(19577,'40494',34009,34010,4,0),(19578,'40494',34687,34688,4,0),(19579,'40495',34527,34528,4,0),(19580,'40495',34211,34212,4,0),(19581,'40496',34885,34886,4,0),(19582,'40496',34281,34282,4,0),(19583,'40496',34157,34158,4,0),(19584,'40500',34605,34606,4,0),(19585,'40510',34607,34608,4,0),(19586,'40511',34609,34610,4,0),(19587,'40512',34611,34612,4,0),(19588,'40512',34015,34016,4,0),(19589,'40513',34617,34618,4,0),(19590,'40514',34017,34018,4,0),(19591,'40515',34621,34622,4,0),(19592,'40516',34267,34268,4,0),(19593,'40517',34761,34762,4,0),(19594,'40517',34613,34614,4,0),(19595,'40518',34269,34270,4,0),(19596,'40520',34019,34020,4,0),(19597,'40529',34601,34602,4,0),(19598,'40529',33937,33938,4,0),(19599,'40529',34175,34176,4,0),(19600,'40530',33977,33978,4,0),(19601,'40530',34025,34026,4,0),(19602,'40531',33979,33980,4,0),(19603,'40531',34487,34488,4,0),(19604,'40531',34233,34234,4,0),(19605,'40532',34493,34494,4,0),(19606,'40532',33957,33958,4,0),(19607,'40532',34497,34498,4,0),(19608,'40533',33969,33970,4,0),(19609,'40540',34095,34096,4,0),(19610,'40540',34273,34274,4,0),(19611,'40541',34333,34334,4,0),(19612,'40541',34879,34880,4,0),(19613,'40542',34445,34446,4,0),(19614,'40542',34881,34882,4,0),(19615,'40542',34453,34454,4,0),(19616,'40550',34131,34132,4,0),(19617,'40550',34037,34038,4,0),(19618,'40551',34147,34148,4,0),(19619,'40551',34075,34076,4,0),(19620,'40552',34077,34078,4,0),(19621,'40553',34079,34080,4,0),(19622,'40554',34393,34394,4,0),(19623,'40555',33953,33954,4,0),(19624,'40556',34377,34378,4,0),(19625,'40560',34049,34050,4,0),(19626,'40561',34489,34490,4,0),(19627,'40567',34539,34540,4,0),(19628,'40568',34051,34052,4,0),(19629,'40569',34329,34330,4,0),(19630,'40590',34711,34712,4,0),(19631,'40590',34107,34108,4,0),(19632,'40591',34135,34136,4,0),(19633,'40592',34139,34140,4,0),(19634,'40593',34111,34112,4,0),(19635,'40594',34021,34022,4,0),(19636,'41001',35365,35366,4,0),(19637,'41002',35367,35368,4,0),(19638,'41003',35369,35370,4,0),(19639,'41004',35371,35372,4,0),(19640,'41005',35373,35374,4,0),(19641,'41006',35375,35376,4,0),(19642,'41007',35377,35378,4,0),(19643,'41008',35379,35380,4,0),(19644,'41009',35381,35382,4,0),(19645,'41010',35383,35384,4,0),(19646,'41011',35385,35386,4,0),(19647,'41012',35387,35388,4,0),(19648,'41013',35389,35390,4,0),(19649,'41014',35391,35392,4,0),(19650,'41015',35393,35394,4,0),(19651,'41016',35395,35396,4,0),(19652,'41017',35397,35398,4,0),(19653,'41018',35399,35400,4,0),(19654,'41019',35401,35402,4,0),(19655,'41020',35403,35404,4,0),(19656,'41073',35053,35054,4,0),(19657,'41089',35055,35056,4,0),(19658,'41092',35405,35406,4,0),(19659,'41100',35043,35044,4,0),(19660,'41110',34971,34972,4,0),(19661,'41111',34943,34944,4,0),(19662,'41120',35149,35150,4,0),(19663,'41130',35219,35220,4,0),(19664,'41140',35187,35188,4,0),(19665,'41150',35189,35190,4,0),(19666,'41200',34921,34922,4,0),(19667,'41200',34983,34984,4,0),(19668,'41209',34923,34924,4,0),(19669,'41210',35171,35172,4,0),(19670,'41218',35173,35174,4,0),(19671,'41219',35175,35176,4,0),(19672,'41220',34985,34986,4,0),(19673,'41220',35151,35152,4,0),(19674,'41230',35017,35018,4,0),(19675,'41240',34939,34940,4,0),(19676,'41250',35113,35114,4,0),(19677,'41300',35223,35224,4,0),(19678,'41309',35225,35226,4,0),(19679,'41310',34979,34980,4,0),(19680,'41318',35461,35462,4,0),(19681,'41319',34925,34926,4,0),(19682,'41320',34999,35000,4,0),(19683,'41330',35409,35410,4,0),(19684,'41330',35453,35454,4,0),(19685,'41339',35003,35004,4,0),(19686,'41340',35411,35412,4,0),(19687,'41350',35455,35456,4,0),(19688,'41359',35457,35458,4,0),(19689,'41360',35109,35110,4,0),(19690,'41370',35033,35034,4,0),(19691,'41380',34907,34908,4,0),(19692,'41388',35349,35350,4,0),(19693,'41389',35351,35352,4,0),(19694,'41390',35167,35168,4,0),(19695,'41400',35071,35072,4,0),(19696,'41409',35073,35074,4,0),(19697,'41410',35005,35006,4,0),(19698,'41420',35143,35144,4,0),(19699,'41429',35199,35200,4,0),(19700,'41430',35203,35204,4,0),(19701,'41439',35205,35206,4,0),(19702,'41439',35145,35146,4,0),(19703,'41439',34995,34996,4,0),(19704,'41440',35257,35258,4,0),(19705,'41440',34929,34930,4,0),(19706,'41449',34931,34932,4,0),(19707,'41450',35039,35040,4,0),(19708,'41460',35245,35246,4,0),(19709,'41470',35213,35214,4,0),(19710,'41470',35329,35330,4,0),(19711,'41471',35423,35424,4,0),(19712,'41479',35215,35216,4,0),(19713,'41489',34951,34952,4,0),(19714,'41500',34915,34916,4,0),(19715,'41510',35277,35278,4,0),(19716,'41520',34917,34918,4,0),(19717,'41520',35131,35132,4,0),(19718,'41530',35305,35306,4,0),(19719,'41540',35209,35210,4,0),(19720,'41550',34903,34904,4,0),(19721,'41560',35139,35140,4,0),(19722,'41563',35075,35076,4,0),(19723,'41564',35253,35254,4,0),(19724,'41565',35159,35160,4,0),(19725,'41566',35325,35326,4,0),(19726,'41567',35179,35180,4,0),(19727,'41567',35077,35078,4,0),(19728,'41568',35121,35122,4,0),(19729,'41569',35293,35294,4,0),(19730,'41570',34961,34962,4,0),(19731,'41580',35013,35014,4,0),(19732,'41590',35229,35230,4,0),(19733,'41599',35231,35232,4,0),(19734,'41599',34963,34964,4,0),(19735,'41600',34947,34948,4,0),(19736,'41610',35321,35322,4,0),(19737,'41620',35289,35290,4,0),(19738,'41630',35235,35236,4,0),(19739,'41640',35313,35314,4,0),(19740,'41650',35125,35126,4,0),(19741,'41657',35261,35262,4,0),(19742,'41658',35297,35298,4,0),(19743,'41659',35127,35128,4,0),(19744,'41660',35445,35446,4,0),(19745,'41661',34935,34936,4,0),(19746,'41670',35337,35338,4,0),(19747,'41700',35057,35058,4,0),(19748,'41701',35059,35060,4,0),(19749,'41702',35061,35062,4,0),(19750,'41703',35063,35064,4,0),(19751,'41704',35065,35066,4,0),(19752,'41710',35425,35426,4,0),(19753,'41719',35427,35428,4,0),(19754,'41720',35269,35270,4,0),(19755,'41720',35429,35430,4,0),(19756,'41727',35271,35272,4,0),(19757,'41727',35431,35432,4,0),(19758,'41728',35433,35434,4,0),(19759,'41728',35067,35068,4,0),(19760,'41728',35273,35274,4,0),(19761,'41729',35239,35240,4,0),(19762,'41730',35241,35242,4,0),(19763,'41730',35035,35036,4,0),(19764,'41740',35249,35250,4,0),(19765,'41749',35095,35096,4,0),(19766,'41750',35265,35266,4,0),(19767,'41760',35091,35092,4,0),(19768,'41770',35301,35302,4,0),(19769,'41780',35047,35048,4,0),(19770,'41800',35357,35358,4,0),(19771,'41804',35309,35310,4,0),(19772,'41805',34967,34968,4,0),(19773,'41806',35419,35420,4,0),(19774,'41807',35135,35136,4,0),(19775,'41808',35449,35450,4,0),(19776,'41809',34911,34912,4,0),(19777,'41810',35029,35030,4,0),(19778,'41820',35009,35010,4,0),(19779,'41830',35183,35184,4,0),(19780,'41840',35333,35334,4,0),(19781,'41849',34953,34954,4,0),(19782,'41850',35441,35442,4,0),(19783,'41860',35155,35156,4,0),(19784,'41870',34957,34958,4,0),(19785,'41880',35117,35118,4,0),(19786,'41888',35099,35100,4,0),(19787,'41888',35353,35354,4,0),(19788,'41889',35081,35082,4,0),(19789,'41890',35083,35084,4,0),(19790,'41897',35103,35104,4,0),(19791,'41898',35085,35086,4,0),(19792,'41898',35105,35106,4,0),(19793,'41899',35087,35088,4,0),(19794,'41900',34989,34990,4,0),(19795,'41907',35437,35438,4,0),(19796,'41908',35021,35022,4,0),(19797,'41909',35341,35342,4,0),(19798,'41910',34991,34992,4,0),(19799,'41920',35345,35346,4,0),(19800,'41926',35281,35282,4,0),(19801,'41927',35283,35284,4,0),(19802,'41928',35317,35318,4,0),(19803,'41929',35285,35286,4,0),(19804,'41930',34975,34976,4,0),(19805,'41940',35415,35416,4,0),(19806,'41950',35025,35026,4,0),(19807,'41960',35163,35164,4,0),(19808,'41970',35361,35362,4,0),(19809,'41980',35193,35194,4,0),(19810,'41989',35195,35196,4,0),(19811,'42001',36219,36220,4,0),(19812,'42002',36221,36222,4,0),(19813,'42003',36223,36224,4,0),(19814,'42004',36225,36226,4,0),(19815,'42005',36227,36228,4,0),(19816,'42100',35475,35476,4,0),(19817,'42107',35629,35630,4,0),(19818,'42107',35477,35478,4,0),(19819,'42107',35803,35804,4,0),(19820,'42108',36079,36080,4,0),(19821,'42108',35479,35480,4,0),(19822,'42108',35807,35808,4,0),(19823,'42108',35745,35746,4,0),(19824,'42109',36397,36398,4,0),(19825,'42110',36081,36082,4,0),(19826,'42111',36303,36304,4,0),(19827,'42111',35571,35572,4,0),(19828,'42111',35505,35506,4,0),(19829,'42112',35925,35926,4,0),(19830,'42112',36097,36098,4,0),(19831,'42112',36245,36246,4,0),(19832,'42112',36089,36090,4,0),(19833,'42112',36367,36368,4,0),(19834,'42113',35747,35748,4,0),(19835,'42113',35887,35888,4,0),(19836,'42113',36307,36308,4,0),(19837,'42113',36287,36288,4,0),(19838,'42113',35979,35980,4,0),(19839,'42114',35765,35766,4,0),(19840,'42114',36325,36326,4,0),(19841,'42114',36181,36182,4,0),(19842,'42120',35909,35910,4,0),(19843,'42124',36073,36074,4,0),(19844,'42124',35867,35868,4,0),(19845,'42124',35707,35708,4,0),(19846,'42124',36273,36274,4,0),(19847,'42125',35811,35812,4,0),(19848,'42126',35769,35770,4,0),(19849,'42126',35813,35814,4,0),(19850,'42126',35553,35554,4,0),(19851,'42127',36035,36036,4,0),(19852,'42127',36209,36210,4,0),(19853,'42127',35911,35912,4,0),(19854,'42127',35555,35556,4,0),(19855,'42128',35647,35648,4,0),(19856,'42128',36267,36268,4,0),(19857,'42129',35913,35914,4,0),(19858,'42129',35521,35522,4,0),(19859,'42129',35659,35660,4,0),(19860,'42129',36383,36384,4,0),(19861,'42130',35559,35560,4,0),(19862,'42131',35561,35562,4,0),(19863,'42132',36075,36076,4,0),(19864,'42133',35483,35484,4,0),(19865,'42134',36135,36136,4,0),(19866,'42134',35711,35712,4,0),(19867,'42135',35497,35498,4,0),(19868,'42135',35689,35690,4,0),(19869,'42136',36283,36284,4,0),(19870,'42136',36093,36094,4,0),(19871,'42137',36149,36150,4,0),(19872,'42137',36101,36102,4,0),(19873,'42137',35715,35716,4,0),(19874,'42138',35563,35564,4,0),(19875,'42138',35773,35774,4,0),(19876,'42138',35655,35656,4,0),(19877,'42140',36185,36186,4,0),(19878,'42141',36205,36206,4,0),(19879,'42141',35831,35832,4,0),(19880,'42142',35837,35838,4,0),(19881,'42142',35833,35834,4,0),(19882,'42143',36053,36054,4,0),(19883,'42143',35853,35854,4,0),(19884,'42144',35921,35922,4,0),(19885,'42144',35733,35734,4,0),(19886,'42144',36295,36296,4,0),(19887,'42145',35761,35762,4,0),(19888,'42146',35467,35468,4,0),(19889,'42146',35693,35694,4,0),(19890,'42147',35695,35696,4,0),(19891,'42148',36049,36050,4,0),(19892,'42148',35793,35794,4,0),(19893,'42148',36253,36254,4,0),(19894,'42149',36061,36062,4,0),(19895,'42150',36387,36388,4,0),(19896,'42151',36389,36390,4,0),(19897,'42152',36229,36230,4,0),(19898,'42153',35821,35822,4,0),(19899,'42155',36007,36008,4,0),(19900,'42156',36161,36162,4,0),(19901,'42156',36009,36010,4,0),(19902,'42157',35789,35790,4,0),(19903,'42158',35817,35818,4,0),(19904,'42159',35823,35824,4,0),(19905,'42160',35535,35536,4,0),(19906,'42161',35537,35538,4,0),(19907,'42161',35595,35596,4,0),(19908,'42162',35663,35664,4,0),(19909,'42162',35863,35864,4,0),(19910,'42162',35891,35892,4,0),(19911,'42162',35871,35872,4,0),(19912,'42163',35893,35894,4,0),(19913,'42164',35539,35540,4,0),(19914,'42165',36235,36236,4,0),(19915,'42165',36157,36158,4,0),(19916,'42165',36363,36364,4,0),(19917,'42165',36299,36300,4,0),(19918,'42166',36237,36238,4,0),(19919,'42167',35541,35542,4,0),(19920,'42169',35543,35544,4,0),(19921,'42169',35933,35934,4,0),(19922,'42170',35873,35874,4,0),(19923,'42171',35599,35600,4,0),(19924,'42171',35841,35842,4,0),(19925,'42171',35965,35966,4,0),(19926,'42171',35501,35502,4,0),(19927,'42171',35737,35738,4,0),(19928,'42172',36085,36086,4,0),(19929,'42172',36401,36402,4,0),(19930,'42173',35949,35950,4,0),(19931,'42173',36393,36394,4,0),(19932,'42173',36195,36196,4,0),(19933,'42174',36371,36372,4,0),(19934,'42174',35951,35952,4,0),(19935,'42174',36189,36190,4,0),(19936,'42175',36327,36328,4,0),(19937,'42175',35755,35756,4,0),(19938,'42175',36191,36192,4,0),(19939,'42176',36197,36198,4,0),(19940,'42176',36373,36374,4,0),(19941,'42177',36375,36376,4,0),(19942,'42177',36403,36404,4,0),(19943,'42180',35525,35526,4,0),(19944,'42180',35509,35510,4,0),(19945,'42180',35727,35728,4,0),(19946,'42180',35777,35778,4,0),(19947,'42180',35967,35968,4,0),(19948,'42181',35929,35930,4,0),(19949,'42181',35883,35884,4,0),(19950,'42181',35971,35972,4,0),(19951,'42181',35729,35730,4,0),(19952,'42181',36335,36336,4,0),(19953,'42181',35757,35758,4,0),(19954,'42182',35513,35514,4,0),(19955,'42182',35573,35574,4,0),(19956,'42189',36057,36058,4,0),(19957,'42189',36241,36242,4,0),(19958,'42189',36137,36138,4,0),(19959,'42189',36343,36344,4,0),(19960,'42190',35897,35898,4,0),(19961,'42190',36231,36232,4,0),(19962,'42191',35959,35960,4,0),(19963,'42191',35797,35798,4,0),(19964,'42192',36355,36356,4,0),(19965,'42192',35899,35900,4,0),(19966,'42193',35901,35902,4,0),(19967,'42193',35699,35700,4,0),(19968,'42193',35643,35644,4,0),(19969,'42193',36317,36318,4,0),(19970,'42193',36045,36046,4,0),(19971,'42193',36277,36278,4,0),(19972,'42194',36279,36280,4,0),(19973,'42194',36153,36154,4,0),(19974,'42195',35667,35668,4,0),(19975,'42196',35669,35670,4,0),(19976,'42196',36319,36320,4,0),(19977,'42200',35547,35548,4,0),(19978,'42210',35613,35614,4,0),(19979,'42211',35751,35752,4,0),(19980,'42211',35983,35984,4,0),(19981,'42212',35549,35550,4,0),(19982,'42213',35603,35604,4,0),(19983,'42213',35567,35568,4,0),(19984,'42214',35605,35606,4,0),(19985,'42214',36379,36380,4,0),(19986,'42215',35845,35846,4,0),(19987,'42216',36263,36264,4,0),(19988,'42216',35471,35472,4,0),(19989,'42216',35607,35608,4,0),(19990,'42216',36039,36040,4,0),(19991,'42216',35781,35782,4,0),(19992,'42217',35783,35784,4,0),(19993,'42218',36351,36352,4,0),(19994,'42218',35651,35652,4,0),(19995,'42218',36269,36270,4,0),(19996,'42218',36065,36066,4,0),(19997,'42220',36017,36018,4,0),(19998,'42221',44229,44230,4,0),(19999,'42222',35529,35530,4,0),(20000,'42223',35785,35786,4,0),(20001,'42223',36213,36214,4,0),(20002,'42223',36041,36042,4,0),(20003,'42224',35827,35828,4,0),(20004,'42224',36215,36216,4,0),(20005,'42224',36069,36070,4,0),(20006,'42225',36347,36348,4,0),(20007,'42225',36013,36014,4,0),(20008,'42225',35975,35976,4,0),(20009,'42225',35517,35518,4,0),(20010,'42230',36407,36408,4,0),(20011,'42230',35997,35998,4,0),(20012,'42230',35987,35988,4,0),(20013,'42240',35989,35990,4,0),(20014,'42248',35991,35992,4,0),(20015,'42249',35993,35994,4,0),(20016,'42249',35577,35578,4,0),(20017,'42250',35579,35580,4,0),(20018,'42257',35581,35582,4,0),(20019,'42258',35583,35584,4,0),(20020,'42258',35531,35532,4,0),(20021,'42259',35585,35586,4,0),(20022,'42260',36201,36202,4,0),(20023,'42269',44057,44058,4,0),(20024,'42269',43389,43390,4,0),(20025,'42269',35587,35588,4,0),(20026,'42269',44419,44420,4,0),(20027,'42290',35903,35904,4,0),(20028,'42290',35961,35962,4,0),(20029,'42290',35799,35800,4,0),(20030,'42291',36105,36106,4,0),(20031,'42292',36107,36108,4,0),(20032,'42293',36331,36332,4,0),(20033,'42293',35877,35878,4,0),(20034,'42293',36109,36110,4,0),(20035,'42294',36259,36260,4,0),(20036,'42294',35905,35906,4,0),(20037,'42294',35879,35880,4,0),(20038,'42294',36111,36112,4,0),(20039,'42295',35493,35494,4,0),(20040,'42295',35609,35610,4,0),(20041,'42296',36409,36410,4,0),(20042,'42296',35999,36000,4,0),(20043,'42300',35671,35672,4,0),(20044,'42310',35673,35674,4,0),(20045,'42311',35719,35720,4,0),(20046,'42311',35723,35724,4,0),(20047,'42311',36021,36022,4,0),(20048,'42311',35675,35676,4,0),(20049,'42312',35677,35678,4,0),(20050,'42312',35849,35850,4,0),(20051,'42312',36359,36360,4,0),(20052,'42313',36321,36322,4,0),(20053,'42313',36115,36116,4,0),(20054,'42313',35679,35680,4,0),(20055,'42313',36123,36124,4,0),(20056,'42313',35917,35918,4,0),(20057,'42314',36125,36126,4,0),(20058,'42315',36127,36128,4,0),(20059,'42315',36141,36142,4,0),(20060,'42315',36023,36024,4,0),(20061,'42316',36143,36144,4,0),(20062,'42317',36255,36256,4,0),(20063,'42317',36311,36312,4,0),(20064,'42317',36291,36292,4,0),(20065,'42318',35681,35682,4,0),(20066,'42318',36313,36314,4,0),(20067,'42320',36165,36166,4,0),(20068,'42320',35941,35942,4,0),(20069,'42328',35741,35742,4,0),(20070,'42328',35943,35944,4,0),(20071,'42328',36003,36004,4,0),(20072,'42329',35945,35946,4,0),(20073,'42330',36167,36168,4,0),(20074,'42339',35859,35860,4,0),(20075,'42340',36169,36170,4,0),(20076,'42341',36025,36026,4,0),(20077,'42341',35955,35956,4,0),(20078,'42342',36027,36028,4,0),(20079,'42342',36171,36172,4,0),(20080,'42343',36029,36030,4,0),(20081,'42344',36031,36032,4,0),(20082,'42344',36145,36146,4,0),(20083,'42345',36173,36174,4,0),(20084,'42351',35487,35488,4,0),(20085,'42351',35683,35684,4,0),(20086,'42351',35855,35856,4,0),(20087,'42351',36175,36176,4,0),(20088,'42353',35489,35490,4,0),(20089,'42360',35633,35634,4,0),(20090,'42366',35621,35622,4,0),(20091,'42366',35625,35626,4,0),(20092,'42366',36249,36250,4,0),(20093,'42366',35635,35636,4,0),(20094,'42367',35703,35704,4,0),(20095,'42367',35637,35638,4,0),(20096,'42368',35617,35618,4,0),(20097,'42368',36131,36132,4,0),(20098,'42368',35937,35938,4,0),(20099,'42368',35591,35592,4,0),(20100,'42369',35639,35640,4,0),(20101,'42391',36177,36178,4,0),(20102,'42391',35685,35686,4,0),(20103,'42392',36339,36340,4,0),(20104,'43001',37139,37140,4,0),(20105,'43002',37141,37142,4,0),(20106,'43003',37143,37144,4,0),(20107,'43004',37145,37146,4,0),(20108,'43005',37147,37148,4,0),(20109,'43006',37149,37150,4,0),(20110,'43007',37151,37152,4,0),(20111,'43008',37153,37154,4,0),(20112,'43100',36775,36776,4,0),(20113,'43100',37155,37156,4,0),(20114,'43110',36777,36778,4,0),(20115,'43120',36585,36586,4,0),(20116,'43130',37157,37158,4,0),(20117,'43140',36815,36816,4,0),(20118,'43141',37255,37256,4,0),(20119,'43142',36669,36670,4,0),(20120,'43143',36797,36798,4,0),(20121,'43143',36631,36632,4,0),(20122,'43144',37213,37214,4,0),(20123,'43150',36617,36618,4,0),(20124,'43151',36687,36688,4,0),(20125,'43152',36973,36974,4,0),(20126,'43153',36679,36680,4,0),(20127,'43154',36835,36836,4,0),(20128,'43155',36975,36976,4,0),(20129,'43201',37031,37032,4,0),(20130,'43202',37033,37034,4,0),(20131,'43203',37035,37036,4,0),(20132,'43204',37037,37038,4,0),(20133,'43205',37039,37040,4,0),(20134,'43205',36637,36638,4,0),(20135,'43206',37041,37042,4,0),(20136,'43206',37239,37240,4,0),(20137,'43300',36923,36924,4,0),(20138,'43310',36575,36576,4,0),(20139,'43311',37259,37260,4,0),(20140,'43312',37261,37262,4,0),(20141,'43320',37165,37166,4,0),(20142,'43320',37007,37008,4,0),(20143,'43330',37057,37058,4,0),(20144,'43340',36943,36944,4,0),(20145,'43350',36865,36866,4,0),(20146,'43360',36593,36594,4,0),(20147,'43361',36801,36802,4,0),(20148,'43362',36595,36596,4,0),(20149,'43363',37201,37202,4,0),(20150,'43364',36917,36918,4,0),(20151,'43364',36999,37000,4,0),(20152,'43364',36785,36786,4,0),(20153,'43364',36559,36560,4,0),(20154,'43365',36445,36446,4,0),(20155,'43365',36469,36470,4,0),(20156,'43370',36811,36812,4,0),(20157,'43371',36891,36892,4,0),(20158,'43372',36767,36768,4,0),(20159,'43373',36535,36536,4,0),(20160,'43374',36861,36862,4,0),(20161,'43375',36857,36858,4,0),(20162,'43376',36983,36984,4,0),(20163,'43379',36803,36804,4,0),(20164,'43380',37269,37270,4,0),(20165,'43381',36743,36744,4,0),(20166,'43382',36909,36910,4,0),(20167,'43390',37053,37054,4,0),(20168,'43391',37289,37290,4,0),(20169,'43392',36571,36572,4,0),(20170,'43393',36453,36454,4,0),(20171,'43400',36931,36932,4,0),(20172,'43410',36933,36934,4,0),(20173,'43411',36515,36516,4,0),(20174,'43412',37135,37136,4,0),(20175,'43413',36963,36964,4,0),(20176,'43414',36935,36936,4,0),(20177,'43415',36937,36938,4,0),(20178,'43420',37107,37108,4,0),(20179,'43421',5909,5910,4,0),(20180,'43421',36987,36988,4,0),(20181,'43422',36487,36488,4,0),(20182,'43423',36979,36980,4,0),(20183,'43424',37119,37120,4,0),(20184,'43425',37121,37122,4,0),(20185,'43425',36965,36966,4,0),(20186,'43425',36703,36704,4,0),(20187,'43426',37061,37062,4,0),(20188,'43427',36579,36580,4,0),(20189,'43427',37127,37128,4,0),(20190,'43427',37209,37210,4,0),(20191,'43427',36875,36876,4,0),(20192,'43428',37123,37124,4,0),(20193,'43428',36581,36582,4,0),(20194,'43428',36869,36870,4,0),(20195,'43429',37109,37110,4,0),(20196,'43429',36871,36872,4,0),(20197,'43429',36489,36490,4,0),(20198,'43430',37277,37278,4,0),(20199,'43439',37205,37206,4,0),(20200,'43439',37265,37266,4,0),(20201,'43440',36763,36764,4,0),(20202,'43442',36491,36492,4,0),(20203,'43448',37279,37280,4,0),(20204,'43449',37131,37132,4,0),(20205,'43449',37281,37282,4,0),(20206,'43450',36827,36828,4,0),(20207,'43459',36919,36920,4,0),(20208,'43459',36939,36940,4,0),(20209,'43460',36433,36434,4,0),(20210,'43470',36841,36842,4,0),(20211,'43479',36735,36736,4,0),(20212,'43480',37241,37242,4,0),(20213,'43481',37243,37244,4,0),(20214,'43490',37273,37274,4,0),(20215,'43491',37217,37218,4,0),(20216,'43500',37179,37180,4,0),(20217,'43510',37181,37182,4,0),(20218,'43511',37161,37162,4,0),(20219,'43512',36507,36508,4,0),(20220,'43513',37023,37024,4,0),(20221,'43514',36895,36896,4,0),(20222,'43515',36793,36794,4,0),(20223,'43516',36723,36724,4,0),(20224,'43517',37183,37184,4,0),(20225,'43519',36653,36654,4,0),(20226,'43520',37073,37074,4,0),(20227,'43527',37185,37186,4,0),(20228,'43528',36441,36442,4,0),(20229,'43529',37075,37076,4,0),(20230,'43530',36427,36428,4,0),(20231,'43539',36599,36600,4,0),(20232,'43540',37087,37088,4,0),(20233,'43548',37089,37090,4,0),(20234,'43549',36461,36462,4,0),(20235,'43550',37193,37194,4,0),(20236,'43558',36707,36708,4,0),(20237,'43558',37195,37196,4,0),(20238,'43559',37197,37198,4,0),(20239,'43560',36845,36846,4,0),(20240,'43569',36429,36430,4,0),(20241,'43570',37103,37104,4,0),(20242,'43580',36609,36610,4,0),(20243,'43590',37187,37188,4,0),(20244,'43591',36437,36438,4,0),(20245,'43592',37293,37294,4,0),(20246,'43593',36969,36970,4,0),(20247,'43594',36657,36658,4,0),(20248,'43595',37003,37004,4,0),(20249,'43596',36731,36732,4,0),(20250,'43597',36473,36474,4,0),(20251,'43700',36673,36674,4,0),(20252,'43710',37113,37114,4,0),(20253,'43711',36481,36482,4,0),(20254,'43712',36879,36880,4,0),(20255,'43713',37099,37100,4,0),(20256,'43714',36415,36416,4,0),(20257,'43714',36639,36640,4,0),(20258,'43715',36881,36882,4,0),(20259,'43715',36483,36484,4,0),(20260,'43715',36641,36642,4,0),(20261,'43715',37017,37018,4,0),(20262,'43716',36421,36422,4,0),(20263,'43717',36771,36772,4,0),(20264,'43718',36905,36906,4,0),(20265,'43718',37115,37116,4,0),(20266,'43718',36423,36424,4,0),(20267,'43718',36643,36644,4,0),(20268,'43719',36503,36504,4,0),(20269,'43720',36755,36756,4,0),(20270,'43730',36691,36692,4,0),(20271,'43730',36885,36886,4,0),(20272,'43736',26021,26022,4,0),(20273,'43736',36789,36790,4,0),(20274,'43736',36627,36628,4,0),(20275,'43737',36727,36728,4,0),(20276,'43737',36623,36624,4,0),(20277,'43737',37175,37176,4,0),(20278,'43738',36499,36500,4,0),(20279,'43739',36991,36992,4,0),(20280,'43740',36951,36952,4,0),(20281,'43746',37167,37168,4,0),(20282,'43747',36913,36914,4,0),(20283,'43747',36511,36512,4,0),(20284,'43748',36719,36720,4,0),(20285,'43749',36715,36716,4,0),(20286,'43750',36699,36700,4,0),(20287,'43760',36649,36650,4,0),(20288,'43761',36823,36824,4,0),(20289,'43762',36831,36832,4,0),(20290,'43763',37231,37232,4,0),(20291,'43763',36807,36808,4,0),(20292,'43764',36619,36620,4,0),(20293,'43765',36837,36838,4,0),(20294,'43770',36955,36956,4,0),(20295,'43771',37049,37050,4,0),(20296,'43772',36527,36528,4,0),(20297,'43773',36759,36760,4,0),(20298,'43773',36613,36614,4,0),(20299,'43774',36995,36996,4,0),(20300,'43774',36849,36850,4,0),(20301,'43775',36887,36888,4,0),(20302,'43776',36563,36564,4,0),(20303,'43777',36683,36684,4,0),(20304,'43780',36711,36712,4,0),(20305,'43781',36781,36782,4,0),(20306,'43782',37251,37252,4,0),(20307,'43783',36819,36820,4,0),(20308,'43784',36589,36590,4,0),(20309,'43785',36523,36524,4,0),(20310,'43786',36495,36496,4,0),(20311,'43787',36567,36568,4,0),(20312,'43790',37045,37046,4,0),(20313,'43791',36477,36478,4,0),(20314,'43792',36853,36854,4,0),(20315,'43792',37285,37286,4,0),(20316,'43800',37219,37220,4,0),(20317,'43810',36661,36662,4,0),(20318,'43811',36539,36540,4,0),(20319,'43811',36695,36696,4,0),(20320,'43812',36645,36646,4,0),(20321,'43812',36947,36948,4,0),(20322,'43812',37069,37070,4,0),(20323,'43812',36531,36532,4,0),(20324,'43812',37013,37014,4,0),(20325,'43813',36449,36450,4,0),(20326,'43813',37221,37222,4,0),(20327,'43814',37235,37236,4,0),(20328,'43815',36417,36418,4,0),(20329,'43815',36925,36926,4,0),(20330,'43816',37019,37020,4,0),(20331,'43817',36665,36666,4,0),(20332,'43820',36543,36544,4,0),(20333,'43830',37171,37172,4,0),(20334,'43839',36601,36602,4,0),(20335,'43840',37083,37084,4,0),(20336,'43850',36555,36556,4,0),(20337,'43860',36747,36748,4,0),(20338,'43870',36463,36464,4,0),(20339,'43877',37093,37094,4,0),(20340,'43878',36899,36900,4,0),(20341,'43879',36901,36902,4,0),(20342,'43879',36465,36466,4,0),(20343,'43879',37095,37096,4,0),(20344,'43880',36675,36676,4,0),(20345,'43881',36605,36606,4,0),(20346,'43882',36545,36546,4,0),(20347,'43883',37065,37066,4,0),(20348,'43884',36519,36520,4,0),(20349,'43885',37079,37080,4,0),(20350,'43886',37247,37248,4,0),(20351,'43886',37027,37028,4,0),(20352,'43887',36959,36960,4,0),(20353,'43890',37225,37226,4,0),(20354,'43891',37009,37010,4,0),(20355,'43891',37227,37228,4,0),(20356,'43892',36927,36928,4,0),(20357,'43893',36457,36458,4,0),(20358,'43894',36551,36552,4,0),(20359,'43895',36751,36752,4,0),(20360,'43896',36739,36740,4,0),(20361,'43897',37189,37190,4,0),(20362,'43900',14837,14838,4,0),(20363,'44001',38151,38152,4,0),(20364,'44002',38153,38154,4,0),(20365,'44003',38155,38156,4,0),(20366,'44100',37331,37332,4,0),(20367,'44110',37747,37748,4,0),(20368,'44111',38225,38226,4,0),(20369,'44112',38247,38248,4,0),(20370,'44113',37975,37976,4,0),(20371,'44114',37751,37752,4,0),(20372,'44114',38315,38316,4,0),(20373,'44115',37755,37756,4,0),(20374,'44120',38147,38148,4,0),(20375,'44121',37333,37334,4,0),(20376,'44121',38157,38158,4,0),(20377,'44121',38089,38090,4,0),(20378,'44121',37467,37468,4,0),(20379,'44122',38279,38280,4,0),(20380,'44122',38105,38106,4,0),(20381,'44122',37777,37778,4,0),(20382,'44123',37663,37664,4,0),(20383,'44123',37335,37336,4,0),(20384,'44123',38175,38176,4,0),(20385,'44123',37779,37780,4,0),(20386,'44124',37963,37964,4,0),(20387,'44125',38085,38086,4,0),(20388,'44126',37715,37716,4,0),(20389,'44126',37527,37528,4,0),(20390,'44130',38335,38336,4,0),(20391,'44131',38339,38340,4,0),(20392,'44132',37865,37866,4,0),(20393,'44132',38241,38242,4,0),(20394,'44133',38077,38078,4,0),(20395,'44133',38243,38244,4,0),(20396,'44134',38179,38180,4,0),(20397,'44134',38299,38300,4,0),(20398,'44134',37655,37656,4,0),(20399,'44134',37395,37396,4,0),(20400,'44140',37551,37552,4,0),(20401,'44140',37563,37564,4,0),(20402,'44141',37811,37812,4,0),(20403,'44141',38251,38252,4,0),(20404,'44141',37921,37922,4,0),(20405,'44142',37827,37828,4,0),(20406,'44143',37707,37708,4,0),(20407,'44144',38331,38332,4,0),(20408,'44145',37379,37380,4,0),(20409,'44146',37951,37952,4,0),(20410,'44147',37597,37598,4,0),(20411,'44150',37371,37372,4,0),(20412,'44155',37541,37542,4,0),(20413,'44155',37659,37660,4,0),(20414,'44155',37299,37300,4,0),(20415,'44156',37315,37316,4,0),(20416,'44156',37791,37792,4,0),(20417,'44157',37767,37768,4,0),(20418,'44157',37373,37374,4,0),(20419,'44158',37375,37376,4,0),(20420,'44159',37925,37926,4,0),(20421,'44160',37367,37368,4,0),(20422,'44161',37667,37668,4,0),(20423,'44161',38015,38016,4,0),(20424,'44161',38041,38042,4,0),(20425,'44162',38037,38038,4,0),(20426,'44162',37643,37644,4,0),(20427,'44162',38159,38160,4,0),(20428,'44163',38043,38044,4,0),(20429,'44164',38347,38348,4,0),(20430,'44164',37869,37870,4,0),(20431,'44165',37419,37420,4,0),(20432,'44166',38093,38094,4,0),(20433,'44167',37531,37532,4,0),(20434,'44168',37555,37556,4,0),(20435,'44168',37739,37740,4,0),(20436,'44169',37783,37784,4,0),(20437,'44169',37917,37918,4,0),(20438,'44169',37639,37640,4,0),(20439,'44190',38161,38162,4,0),(20440,'44191',37535,37536,4,0),(20441,'44191',37631,37632,4,0),(20442,'44191',37567,37568,4,0),(20443,'44191',38267,38268,4,0),(20444,'44192',38163,38164,4,0),(20445,'44193',37609,37610,4,0),(20446,'44193',38165,38166,4,0),(20447,'44194',37601,37602,4,0),(20448,'44195',38167,38168,4,0),(20449,'44200',37503,37504,4,0),(20450,'44210',37505,37506,4,0),(20451,'44211',37507,37508,4,0),(20452,'44212',37771,37772,4,0),(20453,'44212',37403,37404,4,0),(20454,'44212',37885,37886,4,0),(20455,'44213',38051,38052,4,0),(20456,'44213',37773,37774,4,0),(20457,'44220',37509,37510,4,0),(20458,'44220',37443,37444,4,0),(20459,'44221',38211,38212,4,0),(20460,'44222',38213,38214,4,0),(20461,'44223',38311,38312,4,0),(20462,'44230',38183,38184,4,0),(20463,'44231',37571,37572,4,0),(20464,'44232',37455,37456,4,0),(20465,'44233',37991,37992,4,0),(20466,'44300',37937,37938,4,0),(20467,'44310',38081,38082,4,0),(20468,'44311',38319,38320,4,0),(20469,'44312',37995,37996,4,0),(20470,'44313',37997,37998,4,0),(20471,'44314',37471,37472,4,0),(20472,'44315',38059,38060,4,0),(20473,'44320',37435,37436,4,0),(20474,'44330',37491,37492,4,0),(20475,'44340',37727,37728,4,0),(20476,'44350',37545,37546,4,0),(20477,'44357',37439,37440,4,0),(20478,'44357',37511,37512,4,0),(20479,'44358',37617,37618,4,0),(20480,'44358',38203,38204,4,0),(20481,'44359',38187,38188,4,0),(20482,'44359',37547,37548,4,0),(20483,'44360',38125,38126,4,0),(20484,'44366',38011,38012,4,0),(20485,'44367',37483,37484,4,0),(20486,'44368',38055,38056,4,0),(20487,'44368',37955,37956,4,0),(20488,'44369',37391,37392,4,0),(20489,'44369',38033,38034,4,0),(20490,'44370',37605,37606,4,0),(20491,'44380',38327,38328,4,0),(20492,'44381',38221,38222,4,0),(20493,'44382',37307,37308,4,0),(20494,'44382',38217,38218,4,0),(20495,'44382',38143,38144,4,0),(20496,'44390',38117,38118,4,0),(20497,'44391',37513,37514,4,0),(20498,'44392',37515,37516,4,0),(20499,'44393',38237,38238,4,0),(20500,'44394',38303,38304,4,0),(20501,'44394',37487,37488,4,0),(20502,'44395',37323,37324,4,0),(20503,'44396',38169,38170,4,0),(20504,'44397',38171,38172,4,0),(20505,'44400',37959,37960,4,0),(20506,'44409',37651,37652,4,0),(20507,'44409',37495,37496,4,0),(20508,'44410',37967,37968,4,0),(20509,'44411',38063,38064,4,0),(20510,'44412',37873,37874,4,0),(20511,'44413',38283,38284,4,0),(20512,'44414',37983,37984,4,0),(20513,'44415',37731,37732,4,0),(20514,'44415',38097,38098,4,0),(20515,'44420',37895,37896,4,0),(20516,'44421',38233,38234,4,0),(20517,'44421',37411,37412,4,0),(20518,'44422',37897,37898,4,0),(20519,'44422',37303,37304,4,0),(20520,'44423',37899,37900,4,0),(20521,'44424',38129,38130,4,0),(20522,'44424',37339,37340,4,0),(20523,'44430',38271,38272,4,0),(20524,'44431',37349,37350,4,0),(20525,'44432',37351,37352,4,0),(20526,'44433',37759,37760,4,0),(20527,'44440',37697,37698,4,0),(20528,'44441',37699,37700,4,0),(20529,'44450',37845,37846,4,0),(20530,'44459',37537,37538,4,0),(20531,'44460',38131,38132,4,0),(20532,'44477',37341,37342,4,0),(20533,'44478',38001,38002,4,0),(20534,'44479',38003,38004,4,0),(20535,'44480',38113,38114,4,0),(20536,'44490',37681,37682,4,0),(20537,'44491',37635,37636,4,0),(20538,'44491',37431,37432,4,0),(20539,'44491',37857,37858,4,0),(20540,'44492',37447,37448,4,0),(20541,'44492',37387,37388,4,0),(20542,'44492',37853,37854,4,0),(20543,'44493',37933,37934,4,0),(20544,'44493',37887,37888,4,0),(20545,'44493',37979,37980,4,0),(20546,'44494',38307,38308,4,0),(20547,'44495',37517,37518,4,0),(20548,'44496',37519,37520,4,0),(20549,'44497',38121,38122,4,0),(20550,'44500',37407,37408,4,0),(20551,'44509',37383,37384,4,0),(20552,'44510',37839,37840,4,0),(20553,'44511',37841,37842,4,0),(20554,'44520',38109,38110,4,0),(20555,'44530',37763,37764,4,0),(20556,'44540',37327,37328,4,0),(20557,'44547',37423,37424,4,0),(20558,'44548',38007,38008,4,0),(20559,'44549',37319,37320,4,0),(20560,'44550',37363,37364,4,0),(20561,'44555',38047,38048,4,0),(20562,'44556',37463,37464,4,0),(20563,'44556',37929,37930,4,0),(20564,'44557',37831,37832,4,0),(20565,'44557',37881,37882,4,0),(20566,'44557',37627,37628,4,0),(20567,'44558',37677,37678,4,0),(20568,'44558',37743,37744,4,0),(20569,'44559',38323,38324,4,0),(20570,'44559',37647,37648,4,0),(20571,'44560',37579,37580,4,0),(20572,'44561',38139,38140,4,0),(20573,'44562',37581,37582,4,0),(20574,'44563',37479,37480,4,0),(20575,'44563',37583,37584,4,0),(20576,'44564',37909,37910,4,0),(20577,'44565',37585,37586,4,0),(20578,'44566',37311,37312,4,0),(20579,'44566',37861,37862,4,0),(20580,'44570',37523,37524,4,0),(20581,'44579',37711,37712,4,0),(20582,'44580',38291,38292,4,0),(20583,'44586',38029,38030,4,0),(20584,'44587',37735,37736,4,0),(20585,'44588',37451,37452,4,0),(20586,'44589',37835,37836,4,0),(20587,'44589',38067,38068,4,0),(20588,'44590',37427,37428,4,0),(20589,'44591',43413,43414,4,0),(20590,'44591',38343,38344,4,0),(20591,'44592',37589,37590,4,0),(20592,'44592',37787,37788,4,0),(20593,'44593',38255,38256,4,0),(20594,'44594',38275,38276,4,0),(20595,'44595',38295,38296,4,0),(20596,'44596',37815,37816,4,0),(20597,'44597',38199,38200,4,0),(20598,'44600',37355,37356,4,0),(20599,'44610',37499,37500,4,0),(20600,'44620',38287,38288,4,0),(20601,'44621',37913,37914,4,0),(20602,'44622',37415,37416,4,0),(20603,'44623',37623,37624,4,0),(20604,'44624',37877,37878,4,0),(20605,'44630',39815,39816,4,0),(20606,'44630',37593,37594,4,0),(20607,'44640',38207,38208,4,0),(20608,'44640',37807,37808,4,0),(20609,'44641',38229,38230,4,0),(20610,'44642',37459,37460,4,0),(20611,'44643',37819,37820,4,0),(20612,'44643',37799,37800,4,0),(20613,'44650',37703,37704,4,0),(20614,'44651',37803,37804,4,0),(20615,'44652',37941,37942,4,0),(20616,'44653',38191,38192,4,0),(20617,'44660',37357,37358,4,0),(20618,'44661',37359,37360,4,0),(20619,'44700',37945,37946,4,0),(20620,'44706',37575,37576,4,0),(20621,'44707',37849,37850,4,0),(20622,'44707',37559,37560,4,0),(20623,'44708',38019,38020,4,0),(20624,'44709',38195,38196,4,0),(20625,'44709',37947,37948,4,0),(20626,'44710',38071,38072,4,0),(20627,'44711',37723,37724,4,0),(20628,'44712',38073,38074,4,0),(20629,'44720',38023,38024,4,0),(20630,'44721',37619,37620,4,0),(20631,'44721',37399,37400,4,0),(20632,'44730',38025,38026,4,0),(20633,'44730',37903,37904,4,0),(20634,'44740',38351,38352,4,0),(20635,'44741',37719,37720,4,0),(20636,'44742',38353,38354,4,0),(20637,'44750',37905,37906,4,0),(20638,'44760',38259,38260,4,0),(20639,'44761',38261,38262,4,0),(20640,'44769',38263,38264,4,0),(20641,'44770',37671,37672,4,0),(20642,'44779',37673,37674,4,0),(20643,'44780',37971,37972,4,0),(20644,'44790',37475,37476,4,0),(20645,'44791',37823,37824,4,0),(20646,'44791',37613,37614,4,0),(20647,'44791',37891,37892,4,0),(20648,'44792',37987,37988,4,0),(20649,'44792',37795,37796,4,0),(20650,'44792',37345,37346,4,0),(20651,'44793',38101,38102,4,0),(20652,'44793',38135,38136,4,0),(20653,'45001',39129,39130,4,0),(20654,'45002',39131,39132,4,0),(20655,'45003',39133,39134,4,0),(20656,'45004',39135,39136,4,0),(20657,'45005',39137,39138,4,0),(20658,'45006',39139,39140,4,0),(20659,'45007',39141,39142,4,0),(20660,'45008',39143,39144,4,0),(20661,'45100',39105,39106,4,0),(20662,'45109',39107,39108,4,0),(20663,'45109',38943,38944,4,0),(20664,'45110',38359,38360,4,0),(20665,'45111',38557,38558,4,0),(20666,'45112',38449,38450,4,0),(20667,'45113',38545,38546,4,0),(20668,'45114',38827,38828,4,0),(20669,'45120',39051,39052,4,0),(20670,'45120',38839,38840,4,0),(20671,'45121',38841,38842,4,0),(20672,'45122',38419,38420,4,0),(20673,'45123',38755,38756,4,0),(20674,'45123',39089,39090,4,0),(20675,'45124',38517,38518,4,0),(20676,'45125',38997,38998,4,0),(20677,'45126',38569,38570,4,0),(20678,'45126',38829,38830,4,0),(20679,'45127',38743,38744,4,0),(20680,'45128',38843,38844,4,0),(20681,'45130',38775,38776,4,0),(20682,'45138',38777,38778,4,0),(20683,'45139',38779,38780,4,0),(20684,'45140',38771,38772,4,0),(20685,'45150',38889,38890,4,0),(20686,'45159',38891,38892,4,0),(20687,'45159',38665,38666,4,0),(20688,'45160',38653,38654,4,0),(20689,'45161',38985,38986,4,0),(20690,'45162',38911,38912,4,0),(20691,'45163',39163,39164,4,0),(20692,'45164',38641,38642,4,0),(20693,'45165',39043,39044,4,0),(20694,'45170',39047,39048,4,0),(20695,'45179',39225,39226,4,0),(20696,'45180',38485,38486,4,0),(20697,'45181',38489,38490,4,0),(20698,'45182',38415,38416,4,0),(20699,'45183',38747,38748,4,0),(20700,'45190',38883,38884,4,0),(20701,'45191',38885,38886,4,0),(20702,'45200',38685,38686,4,0),(20703,'45210',39265,39266,4,0),(20704,'45211',39015,39016,4,0),(20705,'45212',38763,38764,4,0),(20706,'45213',38961,38962,4,0),(20707,'45214',38533,38534,4,0),(20708,'45215',38611,38612,4,0),(20709,'45216',38505,38506,4,0),(20710,'45217',39171,39172,4,0),(20711,'45220',39249,39250,4,0),(20712,'45221',38631,38632,4,0),(20713,'45222',38441,38442,4,0),(20714,'45223',39091,39092,4,0),(20715,'45224',39093,39094,4,0),(20716,'45225',38427,38428,4,0),(20717,'45230',38923,38924,4,0),(20718,'45240',38363,38364,4,0),(20719,'45250',38411,38412,4,0),(20720,'45260',39235,39236,4,0),(20721,'45270',38861,38862,4,0),(20722,'45276',38865,38866,4,0),(20723,'45280',38935,38936,4,0),(20724,'45290',38965,38966,4,0),(20725,'45291',38553,38554,4,0),(20726,'45292',39237,39238,4,0),(20727,'45300',38713,38714,4,0),(20728,'45300',38931,38932,4,0),(20729,'45310',39245,39246,4,0),(20730,'45311',38577,38578,4,0),(20731,'45312',38461,38462,4,0),(20732,'45313',39253,39254,4,0),(20733,'45314',38549,38550,4,0),(20734,'45340',38939,38940,4,0),(20735,'45350',38907,38908,4,0),(20736,'45360',39229,39230,4,0),(20737,'45370',39231,39232,4,0),(20738,'45370',39063,39064,4,0),(20739,'45400',38879,38880,4,0),(20740,'45400',39005,39006,4,0),(20741,'45410',39221,39222,4,0),(20742,'45420',38403,38404,4,0),(20743,'45430',38823,38824,4,0),(20744,'45440',39209,39210,4,0),(20745,'45450',38945,38946,4,0),(20746,'45460',38597,38598,4,0),(20747,'45460',38807,38808,4,0),(20748,'45470',38783,38784,4,0),(20749,'45479',38815,38816,4,0),(20750,'45480',39175,39176,4,0),(20751,'45480',38785,38786,4,0),(20752,'45500',39159,39160,4,0),(20753,'45510',38635,38636,4,0),(20754,'45511',38673,38674,4,0),(20755,'45512',38989,38990,4,0),(20756,'45513',39067,39068,4,0),(20757,'45514',39011,39012,4,0),(20758,'45515',38811,38812,4,0),(20759,'45516',38715,38716,4,0),(20760,'45517',38623,38624,4,0),(20761,'45518',38649,38650,4,0),(20762,'45519',38919,38920,4,0),(20763,'45520',39201,39202,4,0),(20764,'45521',38453,38454,4,0),(20765,'45522',38367,38368,4,0),(20766,'45523',38371,38372,4,0),(20767,'45524',39023,39024,4,0),(20768,'45525',38429,38430,4,0),(20769,'45526',39077,39078,4,0),(20770,'45529',39257,39258,4,0),(20771,'45530',39073,39074,4,0),(20772,'45530',38855,38856,4,0),(20773,'45531',38501,38502,4,0),(20774,'45532',38509,38510,4,0),(20775,'45533',38585,38586,4,0),(20776,'45534',38701,38702,4,0),(20777,'45540',38615,38616,4,0),(20778,'45540',38637,38638,4,0),(20779,'45541',38851,38852,4,0),(20780,'45542',38589,38590,4,0),(20781,'45543',38957,38958,4,0),(20782,'45544',38573,38574,4,0),(20783,'45551',38681,38682,4,0),(20784,'45560',38949,38950,4,0),(20785,'45567',38733,38734,4,0),(20786,'45568',38751,38752,4,0),(20787,'45569',39147,39148,4,0),(20788,'45569',38951,38952,4,0),(20789,'45570',38593,38594,4,0),(20790,'45571',38423,38424,4,0),(20791,'45571',38383,38384,4,0),(20792,'45572',39179,39180,4,0),(20793,'45572',39155,39156,4,0),(20794,'45573',38899,38900,4,0),(20795,'45574',38689,38690,4,0),(20796,'45575',38395,38396,4,0),(20797,'45576',38867,38868,4,0),(20798,'45577',38993,38994,4,0),(20799,'45578',38581,38582,4,0),(20800,'45580',38481,38482,4,0),(20801,'45588',38657,38658,4,0),(20802,'45589',38477,38478,4,0),(20803,'45590',38797,38798,4,0),(20804,'45591',39261,39262,4,0),(20805,'45592',38457,38458,4,0),(20806,'45593',38433,38434,4,0),(20807,'45594',39205,39206,4,0),(20808,'45600',39115,39116,4,0),(20809,'45600',38953,38954,4,0),(20810,'45610',38895,38896,4,0),(20811,'45611',38973,38974,4,0),(20812,'45612',39187,39188,4,0),(20813,'45613',39117,39118,4,0),(20814,'45614',39119,39120,4,0),(20815,'45620',38875,38876,4,0),(20816,'45621',39085,39086,4,0),(20817,'45622',38833,38834,4,0),(20818,'45630',38903,38904,4,0),(20819,'45631',38399,38400,4,0),(20820,'45632',39081,39082,4,0),(20821,'45633',38697,38698,4,0),(20822,'45634',38445,38446,4,0),(20823,'45635',39111,39112,4,0),(20824,'45636',38819,38820,4,0),(20825,'45637',38537,38538,4,0),(20826,'45638',38981,38982,4,0),(20827,'45640',38599,38600,4,0),(20828,'45641',38521,38522,4,0),(20829,'45642',38497,38498,4,0),(20830,'45643',38645,38646,4,0),(20831,'45644',38927,38928,4,0),(20832,'45645',38661,38662,4,0),(20833,'45646',39055,39056,4,0),(20834,'45650',38627,38628,4,0),(20835,'45651',39151,39152,4,0),(20836,'45652',39019,39020,4,0),(20837,'45653',39059,39060,4,0),(20838,'45654',39039,39040,4,0),(20839,'45660',38437,38438,4,0),(20840,'45661',38391,38392,4,0),(20841,'45662',38379,38380,4,0),(20842,'45662',38835,38836,4,0),(20843,'45663',38737,38738,4,0),(20844,'45664',38739,38740,4,0),(20845,'45670',38705,38706,4,0),(20846,'45671',39097,39098,4,0),(20847,'45672',39099,39100,4,0),(20848,'45673',39101,39102,4,0),(20849,'45674',39027,39028,4,0),(20850,'45675',39029,39030,4,0),(20851,'45676',39031,39032,4,0),(20852,'45677',39033,39034,4,0),(20853,'45678',39035,39036,4,0),(20854,'45680',38529,38530,4,0),(20855,'45680',39191,39192,4,0),(20856,'45682',38767,38768,4,0),(20857,'45683',38525,38526,4,0),(20858,'45684',38789,38790,4,0),(20859,'45685',38871,38872,4,0),(20860,'45686',38471,38472,4,0),(20861,'45687',38375,38376,4,0),(20862,'45690',38719,38720,4,0),(20863,'45691',38721,38722,4,0),(20864,'45692',38801,38802,4,0),(20865,'45693',38803,38804,4,0),(20866,'45694',39121,39122,4,0),(20867,'45695',38473,38474,4,0),(20868,'45700',38561,38562,4,0),(20869,'45710',38793,38794,4,0),(20870,'45720',38493,38494,4,0),(20871,'45730',39197,39198,4,0),(20872,'45740',39241,39242,4,0),(20873,'45749',39213,39214,4,0),(20874,'45750',38677,38678,4,0),(20875,'45750',38463,38464,4,0),(20876,'45760',38693,38694,4,0),(20877,'45770',38603,38604,4,0),(20878,'45780',39125,39126,4,0),(20879,'45789',39167,39168,4,0),(20880,'45790',39001,39002,4,0),(20881,'45800',39007,39008,4,0),(20882,'45810',39217,39218,4,0),(20883,'45820',38607,38608,4,0),(20884,'45830',38857,38858,4,0),(20885,'45840',38709,38710,4,0),(20886,'45850',38729,38730,4,0),(20887,'45860',39193,39194,4,0),(20888,'45870',38759,38760,4,0),(20889,'45880',38565,38566,4,0),(20890,'45890',38467,38468,4,0),(20891,'45900',38407,38408,4,0),(20892,'45908',38969,38970,4,0),(20893,'45908',38387,38388,4,0),(20894,'45909',39069,39070,4,0),(20895,'45910',38619,38620,4,0),(20896,'45917',38915,38916,4,0),(20897,'45918',38977,38978,4,0),(20898,'45919',38669,38670,4,0),(20899,'45920',38725,38726,4,0),(20900,'45930',38847,38848,4,0),(20901,'45940',39183,39184,4,0),(20902,'45950',38513,38514,4,0),(20903,'45960',38541,38542,4,0),(20904,'46001',40375,40376,4,0),(20905,'46002',40377,40378,4,0),(20906,'46003',40379,40380,4,0),(20907,'46004',40381,40382,4,0),(20908,'46005',40383,40384,4,0),(20909,'46006',40385,40386,4,0),(20910,'46007',40387,40388,4,0),(20911,'46008',40389,40390,4,0),(20912,'46009',40391,40392,4,0),(20913,'46010',40393,40394,4,0),(20914,'46011',40395,40396,4,0),(20915,'46012',40397,40398,4,0),(20916,'46013',40399,40400,4,0),(20917,'46014',40481,40482,4,0),(20918,'46014',40401,40402,4,0),(20919,'46015',40403,40404,4,0),(20920,'46016',40405,40406,4,0),(20921,'46016',40317,40318,4,0),(20922,'46017',40407,40408,4,0),(20923,'46018',40409,40410,4,0),(20924,'46019',40411,40412,4,0),(20925,'46020',40413,40414,4,0),(20926,'46021',40415,40416,4,0),(20927,'46022',40417,40418,4,0),(20928,'46023',40419,40420,4,0),(20929,'46024',40421,40422,4,0),(20930,'46025',40423,40424,4,0),(20931,'46026',40425,40426,4,0),(20932,'46035',40427,40428,4,0),(20933,'46100',39589,39590,4,0),(20934,'46109',39689,39690,4,0),(20935,'46110',39857,39858,4,0),(20936,'46111',40213,40214,4,0),(20937,'46112',40429,40430,4,0),(20938,'46113',40015,40016,4,0),(20939,'46114',40477,40478,4,0),(20940,'46115',39361,39362,4,0),(20941,'46117',39557,39558,4,0),(20942,'46118',40271,40272,4,0),(20943,'46119',40043,40044,4,0),(20944,'46120',39319,39320,4,0),(20945,'46128',39321,39322,4,0),(20946,'46129',39323,39324,4,0),(20947,'46130',39987,39988,4,0),(20948,'46131',39573,39574,4,0),(20949,'46131',40431,40432,4,0),(20950,'46132',39393,39394,4,0),(20951,'46133',39995,39996,4,0),(20952,'46134',39799,39800,4,0),(20953,'46135',39303,39304,4,0),(20954,'46135',39769,39770,4,0),(20955,'46135',40433,40434,4,0),(20956,'46136',40039,40040,4,0),(20957,'46137',40135,40136,4,0),(20958,'46138',40161,40162,4,0),(20959,'46139',40137,40138,4,0),(20960,'46140',40141,40142,4,0),(20961,'46140',39271,39272,4,0),(20962,'46141',39655,39656,4,0),(20963,'46143',40339,40340,4,0),(20964,'46145',40441,40442,4,0),(20965,'46146',39637,39638,4,0),(20966,'46147',39633,39634,4,0),(20967,'46148',39385,39386,4,0),(20968,'46149',39853,39854,4,0),(20969,'46160',39923,39924,4,0),(20970,'46162',39877,39878,4,0),(20971,'46163',39975,39976,4,0),(20972,'46164',40099,40100,4,0),(20973,'46165',39581,39582,4,0),(20974,'46166',39849,39850,4,0),(20975,'46167',39699,39700,4,0),(20976,'46168',40299,40300,4,0),(20977,'46169',39837,39838,4,0),(20978,'46169',40065,40066,4,0),(20979,'46170',40467,40468,4,0),(20980,'46170',39425,39426,4,0),(20981,'46171',39641,39642,4,0),(20982,'46172',39341,39342,4,0),(20983,'46173',39473,39474,4,0),(20984,'46173',39943,39944,4,0),(20985,'46174',39747,39748,4,0),(20986,'46175',39593,39594,4,0),(20987,'46176',39679,39680,4,0),(20988,'46177',40357,40358,4,0),(20989,'46178',39919,39920,4,0),(20990,'46178',39409,39410,4,0),(20991,'46178',40335,40336,4,0),(20992,'46179',39437,39438,4,0),(20993,'46180',39477,39478,4,0),(20994,'46181',39545,39546,4,0),(20995,'46181',40055,40056,4,0),(20996,'46182',40089,40090,4,0),(20997,'46183',39907,39908,4,0),(20998,'46184',40243,40244,4,0),(20999,'46185',14839,14840,4,0),(21000,'46185',40145,40146,4,0),(21001,'46190',40205,40206,4,0),(21002,'46191',40459,40460,4,0),(21003,'46192',40035,40036,4,0),(21004,'46193',40031,40032,4,0),(21005,'46194',40177,40178,4,0),(21006,'46195',39935,39936,4,0),(21007,'46196',39659,39660,4,0),(21008,'46197',39365,39366,4,0),(21009,'46198',39751,39752,4,0),(21010,'46199',39999,40000,4,0),(21011,'46199',40181,40182,4,0),(21012,'46199',39711,39712,4,0),(21013,'46200',40077,40078,4,0),(21014,'46210',40107,40108,4,0),(21015,'46220',40111,40112,4,0),(21016,'46220',39331,39332,4,0),(21017,'46230',39389,39390,4,0),(21018,'46240',39625,39626,4,0),(21019,'46250',40229,40230,4,0),(21020,'46250',39903,39904,4,0),(21021,'46260',39311,39312,4,0),(21022,'46266',39433,39434,4,0),(21023,'46267',39841,39842,4,0),(21024,'46268',39417,39418,4,0),(21025,'46269',40353,40354,4,0),(21026,'46270',40463,40464,4,0),(21027,'46290',39333,39334,4,0),(21028,'46291',39529,39530,4,0),(21029,'46292',39979,39980,4,0),(21030,'46293',39337,39338,4,0),(21031,'46293',39485,39486,4,0),(21032,'46294',39621,39622,4,0),(21033,'46294',39715,39716,4,0),(21034,'46295',40259,40260,4,0),(21035,'46295',40313,40314,4,0),(21036,'46300',40365,40366,4,0),(21037,'46310',40449,40450,4,0),(21038,'46311',40451,40452,4,0),(21039,'46312',40367,40368,4,0),(21040,'46313',40369,40370,4,0),(21041,'46314',39821,39822,4,0),(21042,'46315',39667,39668,4,0),(21043,'46317',40471,40472,4,0),(21044,'46318',40473,40474,4,0),(21045,'46320',40289,40290,4,0),(21046,'46321',40371,40372,4,0),(21047,'46330',39597,39598,4,0),(21048,'46340',40183,40184,4,0),(21049,'46350',39685,39686,4,0),(21050,'46351',39681,39682,4,0),(21051,'46351',40185,40186,4,0),(21052,'46352',40187,40188,4,0),(21053,'46353',40189,40190,4,0),(21054,'46354',40191,40192,4,0),(21055,'46355',40193,40194,4,0),(21056,'46356',40195,40196,4,0),(21057,'46357',40197,40198,4,0),(21058,'46360',39585,39586,4,0),(21059,'46367',40487,40488,4,0),(21060,'46368',39963,39964,4,0),(21061,'46369',39315,39316,4,0),(21062,'46370',39695,39696,4,0),(21063,'46380',39691,39692,4,0),(21064,'46388',39861,39862,4,0),(21065,'46389',40361,40362,4,0),(21066,'46390',40199,40200,4,0),(21067,'46391',40201,40202,4,0),(21068,'46392',40275,40276,4,0),(21069,'46393',39939,39940,4,0),(21070,'46400',39735,39736,4,0),(21071,'46408',39737,39738,4,0),(21072,'46409',39739,39740,4,0),(21073,'46410',40305,40306,4,0),(21074,'46417',40209,40210,4,0),(21075,'46418',39807,39808,4,0),(21076,'46419',40307,40308,4,0),(21077,'46420',40309,40310,4,0),(21078,'46430',40293,40294,4,0),(21079,'46439',40295,40296,4,0),(21080,'46440',39405,39406,4,0),(21081,'46450',39759,39760,4,0),(21082,'46450',39517,39518,4,0),(21083,'46460',40281,40282,4,0),(21084,'46469',39537,39538,4,0),(21085,'46470',39663,39664,4,0),(21086,'46470',40325,40326,4,0),(21087,'46470',39295,39296,4,0),(21088,'46470',39991,39992,4,0),(21089,'46480',14841,14842,4,0),(21090,'46500',40231,40232,4,0),(21091,'46501',40103,40104,4,0),(21092,'46510',39727,39728,4,0),(21093,'46511',39513,39514,4,0),(21094,'46512',39791,39792,4,0),(21095,'46514',39481,39482,4,0),(21096,'46515',39719,39720,4,0),(21097,'46520',40233,40234,4,0),(21098,'46529',39609,39610,4,0),(21099,'46530',40131,40132,4,0),(21100,'46530',40235,40236,4,0),(21101,'46540',39761,39762,4,0),(21102,'46550',39327,39328,4,0),(21103,'46560',39983,39984,4,0),(21104,'46590',39783,39784,4,0),(21105,'46591',39307,39308,4,0),(21106,'46592',40255,40256,4,0),(21107,'46593',39377,39378,4,0),(21108,'46594',39357,39358,4,0),(21109,'46595',40349,40350,4,0),(21110,'46600',39419,39420,4,0),(21111,'46600',40277,40278,4,0),(21112,'46610',39869,39870,4,0),(21113,'46611',39533,39534,4,0),(21114,'46612',39707,39708,4,0),(21115,'46613',39931,39932,4,0),(21116,'46614',39795,39796,4,0),(21117,'46620',39449,39450,4,0),(21118,'46621',40491,40492,4,0),(21119,'46622',40327,40328,4,0),(21120,'46623',39889,39890,4,0),(21121,'46624',39881,39882,4,0),(21122,'46625',39703,39704,4,0),(21123,'46630',39817,39818,4,0),(21124,'46635',39803,39804,4,0),(21125,'46640',40011,40012,4,0),(21126,'46650',39601,39602,4,0),(21127,'46659',39603,39604,4,0),(21128,'46660',39971,39972,4,0),(21129,'46661',39779,39780,4,0),(21130,'46666',40169,40170,4,0),(21131,'46667',39453,39454,4,0),(21132,'46668',39893,39894,4,0),(21133,'46668',39951,39952,4,0),(21134,'46669',40267,40268,4,0),(21135,'46669',40247,40248,4,0),(21136,'46670',40153,40154,4,0),(21137,'46680',39381,39382,4,0),(21138,'46687',39299,39300,4,0),(21139,'46688',40123,40124,4,0),(21140,'46689',39505,39506,4,0),(21141,'46690',39345,39346,4,0),(21142,'46691',40437,40438,4,0),(21143,'46692',40023,40024,4,0),(21144,'46701',39825,39826,4,0),(21145,'46702',39827,39828,4,0),(21146,'46703',39541,39542,4,0),(21147,'46710',39743,39744,4,0),(21148,'46711',40003,40004,4,0),(21149,'46711',39873,39874,4,0),(21150,'46712',40115,40116,4,0),(21151,'46713',39465,39466,4,0),(21152,'46714',40085,40086,4,0),(21153,'46715',39413,39414,4,0),(21154,'46716',40165,40166,4,0),(21155,'46717',39811,39812,4,0),(21156,'46717',39643,39644,4,0),(21157,'46720',40455,40456,4,0),(21158,'46721',40127,40128,4,0),(21159,'46722',39521,39522,4,0),(21160,'46722',39493,39494,4,0),(21161,'46723',39401,39402,4,0),(21162,'46724',40081,40082,4,0),(21163,'46725',39373,39374,4,0),(21164,'46725',40221,40222,4,0),(21165,'46726',39959,39960,4,0),(21166,'46726',39651,39652,4,0),(21167,'46726',39397,39398,4,0),(21168,'46727',39765,39766,4,0),(21169,'46728',39829,39830,4,0),(21170,'46729',39275,39276,4,0),(21171,'46730',39831,39832,4,0),(21172,'46740',39613,39614,4,0),(21173,'46749',39615,39616,4,0),(21174,'46750',40285,40286,4,0),(21175,'46758',39457,39458,4,0),(21176,'46760',40321,40322,4,0),(21177,'46760',39833,39834,4,0),(21178,'46770',39885,39886,4,0),(21179,'46780',40057,40058,4,0),(21180,'46790',39899,39900,4,0),(21181,'46791',39509,39510,4,0),(21182,'46792',39617,39618,4,0),(21183,'46792',39421,39422,4,0),(21184,'46800',39895,39896,4,0),(21185,'46810',39773,39774,4,0),(21186,'46811',39775,39776,4,0),(21187,'46812',39441,39442,4,0),(21188,'46813',39671,39672,4,0),(21189,'46813',39605,39606,4,0),(21190,'46814',40343,40344,4,0),(21191,'46814',39927,39928,4,0),(21192,'46814',39911,39912,4,0),(21193,'46815',39915,39916,4,0),(21194,'46816',40217,40218,4,0),(21195,'46817',39787,39788,4,0),(21196,'46818',40445,40446,4,0),(21197,'46819',40051,40052,4,0),(21198,'46820',39429,39430,4,0),(21199,'46821',39675,39676,4,0),(21200,'46822',39569,39570,4,0),(21201,'46823',40047,40048,4,0),(21202,'46824',40157,40158,4,0),(21203,'46825',39561,39562,4,0),(21204,'46830',39525,39526,4,0),(21205,'46837',39731,39732,4,0),(21206,'46838',39501,39502,4,0),(21207,'46838',40119,40120,4,0),(21208,'46838',39947,39948,4,0),(21209,'46839',39469,39470,4,0),(21210,'46839',39553,39554,4,0),(21211,'46839',40263,40264,4,0),(21212,'46839',39865,39866,4,0),(21213,'46840',40149,40150,4,0),(21214,'46840',14843,14844,4,0),(21215,'46841',39647,39648,4,0),(21216,'46842',40301,40302,4,0),(21217,'46842',39445,39446,4,0),(21218,'46842',40027,40028,4,0),(21219,'46842',40331,40332,4,0),(21220,'46842',40225,40226,4,0),(21221,'46843',40239,40240,4,0),(21222,'46843',40173,40174,4,0),(21223,'46844',40073,40074,4,0),(21224,'46844',39497,39498,4,0),(21225,'46850',40061,40062,4,0),(21226,'46860',39291,39292,4,0),(21227,'46868',39461,39462,4,0),(21228,'46869',39549,39550,4,0),(21229,'46869',39279,39280,4,0),(21230,'46869',39629,39630,4,0),(21231,'46870',40069,40070,4,0),(21232,'46880',39565,39566,4,0),(21233,'46890',39283,39284,4,0),(21234,'46891',39577,39578,4,0),(21235,'46891',39755,39756,4,0),(21236,'46892',40019,40020,4,0),(21237,'46893',39369,39370,4,0),(21238,'46894',39845,39846,4,0),(21239,'46900',14845,14846,4,0),(21240,'46901',14847,14848,4,0),(21241,'46910',40251,40252,4,0),(21242,'46910',39955,39956,4,0),(21243,'46910',39353,39354,4,0),(21244,'46910',39489,39490,4,0),(21245,'46920',40007,40008,4,0),(21246,'46930',39723,39724,4,0),(21247,'46940',39967,39968,4,0),(21248,'46950',40483,40484,4,0),(21249,'46960',39349,39350,4,0),(21250,'46970',39287,39288,4,0),(21251,'46980',40091,40092,4,0),(21252,'46988',40093,40094,4,0),(21253,'46989',40095,40096,4,0),(21254,'47001',41251,41252,4,0),(21255,'47002',41253,41254,4,0),(21256,'47003',41255,41256,4,0),(21257,'47004',41257,41258,4,0),(21258,'47005',41259,41260,4,0),(21259,'47006',41261,41262,4,0),(21260,'47007',41263,41264,4,0),(21261,'47008',41265,41266,4,0),(21262,'47009',41267,41268,4,0),(21263,'47010',41269,41270,4,0),(21264,'47011',41271,41272,4,0),(21265,'47012',41273,41274,4,0),(21266,'47013',41275,41276,4,0),(21267,'47014',41277,41278,4,0),(21268,'47015',41279,41280,4,0),(21269,'47016',41281,41282,4,0),(21270,'47017',41283,41284,4,0),(21271,'47018',41285,41286,4,0),(21272,'47100',41169,41170,4,0),(21273,'47110',40635,40636,4,0),(21274,'47111',41389,41390,4,0),(21275,'47112',40961,40962,4,0),(21276,'47113',41171,41172,4,0),(21277,'47113',41401,41402,4,0),(21278,'47114',40851,40852,4,0),(21279,'47114',41321,41322,4,0),(21280,'47114',41187,41188,4,0),(21281,'47115',40563,40564,4,0),(21282,'47115',40567,40568,4,0),(21283,'47116',40995,40996,4,0),(21284,'47120',40915,40916,4,0),(21285,'47129',40551,40552,4,0),(21286,'47129',41079,41080,4,0),(21287,'47129',41107,41108,4,0),(21288,'47129',41195,41196,4,0),(21289,'47129',40497,40498,4,0),(21290,'47130',41153,41154,4,0),(21291,'47131',41051,41052,4,0),(21292,'47131',41413,41414,4,0),(21293,'47131',40779,40780,4,0),(21294,'47131',41325,41326,4,0),(21295,'47132',41173,41174,4,0),(21296,'47132',41095,41096,4,0),(21297,'47133',41313,41314,4,0),(21298,'47133',40841,40842,4,0),(21299,'47134',41447,41448,4,0),(21300,'47134',41199,41200,4,0),(21301,'47134',41115,41116,4,0),(21302,'47134',40771,40772,4,0),(21303,'47140',40819,40820,4,0),(21304,'47140',41287,41288,4,0),(21305,'47150',41333,41334,4,0),(21306,'47151',40587,40588,4,0),(21307,'47152',41289,41290,4,0),(21308,'47153',41291,41292,4,0),(21309,'47155',41137,41138,4,0),(21310,'47160',40999,41000,4,0),(21311,'47160',40517,40518,4,0),(21312,'47161',41215,41216,4,0),(21313,'47162',40521,40522,4,0),(21314,'47164',41091,41092,4,0),(21315,'47165',40619,40620,4,0),(21316,'47166',41467,41468,4,0),(21317,'47169',40523,40524,4,0),(21318,'47169',41217,41218,4,0),(21319,'47169',40821,40822,4,0),(21320,'47170',41043,41044,4,0),(21321,'47171',40667,40668,4,0),(21322,'47172',41443,41444,4,0),(21323,'47173',40945,40946,4,0),(21324,'47175',40983,40984,4,0),(21325,'47176',40739,40740,4,0),(21326,'47177',40531,40532,4,0),(21327,'47180',41373,41374,4,0),(21328,'47181',41357,41358,4,0),(21329,'47182',40679,40680,4,0),(21330,'47183',41177,41178,4,0),(21331,'47184',40743,40744,4,0),(21332,'47185',40627,40628,4,0),(21333,'47186',40893,40894,4,0),(21334,'47186',40735,40736,4,0),(21335,'47190',41471,41472,4,0),(21336,'47191',40695,40696,4,0),(21337,'47192',40655,40656,4,0),(21338,'47193',40699,40700,4,0),(21339,'47194',40919,40920,4,0),(21340,'47194',40759,40760,4,0),(21341,'47195',40535,40536,4,0),(21342,'47196',40803,40804,4,0),(21343,'47197',41293,41294,4,0),(21344,'47198',41295,41296,4,0),(21345,'47200',41301,41302,4,0),(21346,'47209',41087,41088,4,0),(21347,'47210',40539,40540,4,0),(21348,'47219',41099,41100,4,0),(21349,'47219',41075,41076,4,0),(21350,'47219',40923,40924,4,0),(21351,'47220',41007,41008,4,0),(21352,'47230',40845,40846,4,0),(21353,'47238',40847,40848,4,0),(21354,'47238',40787,40788,4,0),(21355,'47238',40513,40514,4,0),(21356,'47239',41145,41146,4,0),(21357,'47239',41421,41422,4,0),(21358,'47239',41329,41330,4,0),(21359,'47240',41243,41244,4,0),(21360,'47250',40885,40886,4,0),(21361,'47260',40603,40604,4,0),(21362,'47270',40691,40692,4,0),(21363,'47280',40711,40712,4,0),(21364,'47281',40713,40714,4,0),(21365,'47282',41211,41212,4,0),(21366,'47283',41027,41028,4,0),(21367,'47290',40721,40722,4,0),(21368,'47300',40965,40966,4,0),(21369,'47310',40615,40616,4,0),(21370,'47311',40623,40624,4,0),(21371,'47311',40747,40748,4,0),(21372,'47312',40543,40544,4,0),(21373,'47313',41181,41182,4,0),(21374,'47313',40707,40708,4,0),(21375,'47313',40967,40968,4,0),(21376,'47313',41203,41204,4,0),(21377,'47314',40825,40826,4,0),(21378,'47314',40837,40838,4,0),(21379,'47314',40969,40970,4,0),(21380,'47315',40979,40980,4,0),(21381,'47316',41055,41056,4,0),(21382,'47316',40729,40730,4,0),(21383,'47316',40987,40988,4,0),(21384,'47316',40991,40992,4,0),(21385,'47317',41235,41236,4,0),(21386,'47317',40583,40584,4,0),(21387,'47317',41083,41084,4,0),(21388,'47317',40717,40718,4,0),(21389,'47318',40949,40950,4,0),(21390,'47318',40643,40644,4,0),(21391,'47318',40971,40972,4,0),(21392,'47319',41183,41184,4,0),(21393,'47319',41035,41036,4,0),(21394,'47320',40899,40900,4,0),(21395,'47320',41219,41220,4,0),(21396,'47328',40799,40800,4,0),(21397,'47329',40647,40648,4,0),(21398,'47329',41337,41338,4,0),(21399,'47329',41451,41452,4,0),(21400,'47330',41131,41132,4,0),(21401,'47330',41207,41208,4,0),(21402,'47331',41133,41134,4,0),(21403,'47340',41141,41142,4,0),(21404,'47350',41023,41024,4,0),(21405,'47359',41231,41232,4,0),(21406,'47359',40935,40936,4,0),(21407,'47360',41019,41020,4,0),(21408,'47400',40865,40866,4,0),(21409,'47410',40939,40940,4,0),(21410,'47418',40501,40502,4,0),(21411,'47418',40829,40830,4,0),(21412,'47418',40767,40768,4,0),(21413,'47419',40527,40528,4,0),(21414,'47419',40579,40580,4,0),(21415,'47419',41015,41016,4,0),(21416,'47420',40791,40792,4,0),(21417,'47428',33249,33250,4,0),(21418,'47430',40957,40958,4,0),(21419,'47440',40703,40704,4,0),(21420,'47440',40873,40874,4,0),(21421,'47450',41003,41004,4,0),(21422,'47451',40941,40942,4,0),(21423,'47453',41039,41040,4,0),(21424,'47454',40907,40908,4,0),(21425,'47460',17875,17876,4,0),(21426,'47461',40595,40596,4,0),(21427,'47462',40575,40576,4,0),(21428,'47463',41317,41318,4,0),(21429,'47464',40931,40932,4,0),(21430,'47465',41459,41460,4,0),(21431,'47470',40631,40632,4,0),(21432,'47480',40755,40756,4,0),(21433,'47490',41063,41064,4,0),(21434,'47491',40807,40808,4,0),(21435,'47492',40867,40868,4,0),(21436,'47492',41065,41066,4,0),(21437,'47493',41119,41120,4,0),(21438,'47493',40869,40870,4,0),(21439,'47494',40833,40834,4,0),(21440,'47494',41059,41060,4,0),(21441,'47494',40763,40764,4,0),(21442,'47494',40687,40688,4,0),(21443,'47500',40927,40928,4,0),(21444,'47509',41067,41068,4,0),(21445,'47510',40509,40510,4,0),(21446,'47511',41149,41150,4,0),(21447,'47512',40639,40640,4,0),(21448,'47513',41191,41192,4,0),(21449,'47520',40671,40672,4,0),(21450,'47529',41365,41366,4,0),(21451,'47530',41111,41112,4,0),(21452,'47600',41405,41406,4,0),(21453,'47606',40775,40776,4,0),(21454,'47606',41361,41362,4,0),(21455,'47607',40783,40784,4,0),(21456,'47607',41353,41354,4,0),(21457,'47608',41425,41426,4,0),(21458,'47608',41381,41382,4,0),(21459,'47608',40599,40600,4,0),(21460,'47609',40751,40752,4,0),(21461,'47609',41127,41128,4,0),(21462,'47609',41349,41350,4,0),(21463,'47609',41309,41310,4,0),(21464,'47610',41475,41476,4,0),(21465,'47620',41417,41418,4,0),(21466,'47630',40795,40796,4,0),(21467,'47639',41397,41398,4,0),(21468,'47640',40975,40976,4,0),(21469,'47641',40663,40664,4,0),(21470,'47650',40725,40726,4,0),(21471,'47664',40675,40676,4,0),(21472,'47670',40555,40556,4,0),(21473,'47670',40811,40812,4,0),(21474,'47671',41223,41224,4,0),(21475,'47672',41247,41248,4,0),(21476,'47673',41031,41032,4,0),(21477,'47673',41047,41048,4,0),(21478,'47674',40547,40548,4,0),(21479,'47675',41385,41386,4,0),(21480,'47675',40591,40592,4,0),(21481,'47676',41463,41464,4,0),(21482,'47680',40855,40856,4,0),(21483,'47686',40881,40882,4,0),(21484,'47687',40877,40878,4,0),(21485,'47688',40889,40890,4,0),(21486,'47689',41071,41072,4,0),(21487,'47689',40651,40652,4,0),(21488,'47689',40607,40608,4,0),(21489,'47689',41393,41394,4,0),(21490,'47690',41305,41306,4,0),(21491,'47691',40903,40904,4,0),(21492,'47692',40683,40684,4,0),(21493,'47800',40859,40860,4,0),(21494,'47801',41297,41298,4,0),(21495,'47810',41369,41370,4,0),(21496,'47811',40911,40912,4,0),(21497,'47811',41123,41124,4,0),(21498,'47812',40953,40954,4,0),(21499,'47813',40571,40572,4,0),(21500,'47813',41435,41436,4,0),(21501,'47814',40505,40506,4,0),(21502,'47814',41409,41410,4,0),(21503,'47815',41341,41342,4,0),(21504,'47815',41157,41158,4,0),(21505,'47816',40861,40862,4,0),(21506,'47816',40895,40896,4,0),(21507,'47816',41239,41240,4,0),(21508,'47820',41345,41346,4,0),(21509,'47830',41165,41166,4,0),(21510,'47831',41011,41012,4,0),(21511,'47832',40611,40612,4,0),(21512,'47840',41377,41378,4,0),(21513,'47850',41429,41430,4,0),(21514,'47851',41103,41104,4,0),(21515,'47860',41439,41440,4,0),(21516,'47862',41227,41228,4,0),(21517,'47870',41161,41162,4,0),(21518,'47880',40559,40560,4,0),(21519,'47882',40659,40660,4,0),(21520,'47883',41455,41456,4,0),(21521,'48001',41609,41610,4,0),(21522,'48002',41611,41612,4,0),(21523,'48003',41539,41540,4,0),(21524,'48003',41613,41614,4,0),(21525,'48004',41615,41616,4,0),(21526,'48005',41617,41618,4,0),(21527,'48006',41619,41620,4,0),(21528,'48007',41621,41622,4,0),(21529,'48008',41623,41624,4,0),(21530,'48009',41625,41626,4,0),(21531,'48010',41627,41628,4,0),(21532,'48011',41629,41630,4,0),(21533,'48012',41631,41632,4,0),(21534,'48013',41633,41634,4,0),(21535,'48014',41635,41636,4,0),(21536,'48015',41637,41638,4,0),(21537,'48100',41875,41876,4,0),(21538,'48110',41721,41722,4,0),(21539,'48111',41807,41808,4,0),(21540,'48112',41851,41852,4,0),(21541,'48113',41713,41714,4,0),(21542,'48114',41535,41536,4,0),(21543,'48115',41867,41868,4,0),(21544,'48116',41701,41702,4,0),(21545,'48120',41855,41856,4,0),(21546,'48120',41877,41878,4,0),(21547,'48130',41563,41564,4,0),(21548,'48140',41513,41514,4,0),(21549,'48140',41773,41774,4,0),(21550,'48141',41651,41652,4,0),(21551,'48142',41545,41546,4,0),(21552,'48143',41517,41518,4,0),(21553,'48144',42009,42010,4,0),(21554,'48145',41963,41964,4,0),(21555,'48150',41937,41938,4,0),(21556,'48160',41971,41972,4,0),(21557,'48160',41645,41646,4,0),(21558,'48170',42001,42002,4,0),(21559,'48170',41647,41648,4,0),(21560,'48180',41831,41832,4,0),(21561,'48190',41945,41946,4,0),(21562,'48191',41709,41710,4,0),(21563,'48191',41947,41948,4,0),(21564,'48192',41749,41750,4,0),(21565,'48194',41751,41752,4,0),(21566,'48195',41803,41804,4,0),(21567,'48196',41827,41828,4,0),(21568,'48200',41717,41718,4,0),(21569,'48200',41655,41656,4,0),(21570,'48210',41917,41918,4,0),(21571,'48212',41839,41840,4,0),(21572,'48213',41785,41786,4,0),(21573,'48215',41781,41782,4,0),(21574,'48220',41481,41482,4,0),(21575,'48230',41669,41670,4,0),(21576,'48240',41603,41604,4,0),(21577,'48249',41605,41606,4,0),(21578,'48250',41989,41990,4,0),(21579,'48260',41681,41682,4,0),(21580,'48269',41835,41836,4,0),(21581,'48270',41843,41844,4,0),(21582,'48276',41845,41846,4,0),(21583,'48277',41693,41694,4,0),(21584,'48278',42021,42022,4,0),(21585,'48278',41847,41848,4,0),(21586,'48280',41815,41816,4,0),(21587,'48287',41659,41660,4,0),(21588,'48288',41777,41778,4,0),(21589,'48289',41505,41506,4,0),(21590,'48289',41863,41864,4,0),(21591,'48289',41745,41746,4,0),(21592,'48291',41553,41554,4,0),(21593,'48292',41555,41556,4,0),(21594,'48300',41729,41730,4,0),(21595,'48309',41685,41686,4,0),(21596,'48310',41665,41666,4,0),(21597,'48311',41661,41662,4,0),(21598,'48311',41769,41770,4,0),(21599,'48312',41899,41900,4,0),(21600,'48313',41677,41678,4,0),(21601,'48314',41725,41726,4,0),(21602,'48315',41795,41796,4,0),(21603,'48320',41491,41492,4,0),(21604,'48330',41819,41820,4,0),(21605,'48340',41499,41500,4,0),(21606,'48348',41501,41502,4,0),(21607,'48350',41641,41642,4,0),(21608,'48360',41871,41872,4,0),(21609,'48370',41595,41596,4,0),(21610,'48380',41559,41560,4,0),(21611,'48381',41881,41882,4,0),(21612,'48382',41859,41860,4,0),(21613,'48383',41527,41528,4,0),(21614,'48390',41529,41530,4,0),(21615,'48390',41587,41588,4,0),(21616,'48391',41531,41532,4,0),(21617,'48391',41893,41894,4,0),(21618,'48392',41895,41896,4,0),(21619,'48393',41697,41698,4,0),(21620,'48394',41885,41886,4,0),(21621,'48395',41955,41956,4,0),(21622,'48410',41907,41908,4,0),(21623,'48419',41909,41910,4,0),(21624,'48450',41689,41690,4,0),(21625,'48460',41977,41978,4,0),(21626,'48480',42005,42006,4,0),(21627,'48480',41541,41542,4,0),(21628,'48490',41967,41968,4,0),(21629,'48498',41521,41522,4,0),(21630,'48498',41509,41510,4,0),(21631,'48498',41979,41980,4,0),(21632,'48499',41523,41524,4,0),(21633,'48499',42013,42014,4,0),(21634,'48500',41485,41486,4,0),(21635,'48508',42017,42018,4,0),(21636,'48510',41983,41984,4,0),(21637,'48520',41985,41986,4,0),(21638,'48530',41913,41914,4,0),(21639,'48540',41487,41488,4,0),(21640,'48550',41889,41890,4,0),(21641,'48600',41941,41942,4,0),(21642,'48610',41973,41974,4,0),(21643,'48620',41921,41922,4,0),(21644,'48620',41755,41756,4,0),(21645,'48620',41823,41824,4,0),(21646,'48630',41757,41758,4,0),(21647,'48640',41591,41592,4,0),(21648,'48650',41579,41580,4,0),(21649,'48700',41903,41904,4,0),(21650,'48710',41599,41600,4,0),(21651,'48800',41567,41568,4,0),(21652,'48810',41495,41496,4,0),(21653,'48820',41761,41762,4,0),(21654,'48830',41763,41764,4,0),(21655,'48840',41765,41766,4,0),(21656,'48850',41993,41994,4,0),(21657,'48860',41995,41996,4,0),(21658,'48869',41949,41950,4,0),(21659,'48869',41997,41998,4,0),(21660,'48870',41951,41952,4,0),(21661,'48879',41549,41550,4,0),(21662,'48880',41959,41960,4,0),(21663,'48890',41789,41790,4,0),(21664,'48891',41791,41792,4,0),(21665,'48895',41799,41800,4,0),(21666,'48901',41571,41572,4,0),(21667,'48902',41573,41574,4,0),(21668,'48903',41575,41576,4,0),(21669,'48910',41933,41934,4,0),(21670,'48920',41925,41926,4,0),(21671,'48930',41733,41734,4,0),(21672,'48940',41811,41812,4,0),(21673,'48950',41673,41674,4,0),(21674,'48960',41705,41706,4,0),(21675,'48970',41583,41584,4,0),(21676,'48980',41929,41930,4,0),(21677,'48990',41735,41736,4,0),(21678,'48991',41737,41738,4,0),(21679,'48992',41739,41740,4,0),(21680,'48993',41741,41742,4,0),(21681,'49001',43261,43262,4,0),(21682,'49002',43263,43264,4,0),(21683,'49003',43265,43266,4,0),(21684,'49004',43267,43268,4,0),(21685,'49005',43269,43270,4,0),(21686,'49006',43271,43272,4,0),(21687,'49007',43273,43274,4,0),(21688,'49008',43275,43276,4,0),(21689,'49009',43277,43278,4,0),(21690,'49010',43279,43280,4,0),(21691,'49011',43281,43282,4,0),(21692,'49012',43283,43284,4,0),(21693,'49013',43285,43286,4,0),(21694,'49014',43287,43288,4,0),(21695,'49015',43289,43290,4,0),(21696,'49016',43291,43292,4,0),(21697,'49017',43293,43294,4,0),(21698,'49018',43295,43296,4,0),(21699,'49019',43297,43298,4,0),(21700,'49020',43299,43300,4,0),(21701,'49021',43301,43302,4,0),(21702,'49022',43303,43304,4,0),(21703,'49023',43305,43306,4,0),(21704,'49024',43307,43308,4,0),(21705,'49025',43309,43310,4,0),(21706,'49026',43311,43312,4,0),(21707,'49027',43313,43314,4,0),(21708,'49028',43315,43316,4,0),(21709,'49029',43317,43318,4,0),(21710,'49030',43319,43320,4,0),(21711,'49031',43321,43322,4,0),(21712,'49032',43323,43324,4,0),(21713,'49100',43193,43194,4,0),(21714,'49110',42215,42216,4,0),(21715,'49120',42567,42568,4,0),(21716,'49121',42575,42576,4,0),(21717,'49121',42583,42584,4,0),(21718,'49122',43025,43026,4,0),(21719,'49123',42121,42122,4,0),(21720,'49124',42091,42092,4,0),(21721,'49125',42227,42228,4,0),(21722,'49126',43139,43140,4,0),(21723,'49126',42083,42084,4,0),(21724,'49127',42755,42756,4,0),(21725,'49127',42211,42212,4,0),(21726,'49128',42183,42184,4,0),(21727,'49129',43225,43226,4,0),(21728,'49129',42913,42914,4,0),(21729,'49130',42517,42518,4,0),(21730,'49131',43163,43164,4,0),(21731,'49132',43197,43198,4,0),(21732,'49133',43077,43078,4,0),(21733,'49134',43147,43148,4,0),(21734,'49135',42885,42886,4,0),(21735,'49135',43093,43094,4,0),(21736,'49135',42829,42830,4,0),(21737,'49136',43121,43122,4,0),(21738,'49137',43233,43234,4,0),(21739,'49137',43123,43124,4,0),(21740,'49140',43003,43004,4,0),(21741,'49141',42315,42316,4,0),(21742,'49142',42671,42672,4,0),(21743,'49143',42743,42744,4,0),(21744,'49144',42889,42890,4,0),(21745,'49145',42733,42734,4,0),(21746,'49145',42963,42964,4,0),(21747,'49146',42657,42658,4,0),(21748,'49147',42659,42660,4,0),(21749,'49148',42771,42772,4,0),(21750,'49148',42629,42630,4,0),(21751,'49149',42587,42588,4,0),(21752,'49150',42599,42600,4,0),(21753,'49151',42067,42068,4,0),(21754,'49151',42199,42200,4,0),(21755,'49151',42427,42428,4,0),(21756,'49152',42999,43000,4,0),(21757,'49153',43085,43086,4,0),(21758,'49154',42283,42284,4,0),(21759,'49155',42463,42464,4,0),(21760,'49156',42443,42444,4,0),(21761,'49157',42497,42498,4,0),(21762,'49158',43135,43136,4,0),(21763,'49159',43211,43212,4,0),(21764,'49160',42187,42188,4,0),(21765,'49161',42965,42966,4,0),(21766,'49162',42683,42684,4,0),(21767,'49162',42063,42064,4,0),(21768,'49163',42539,42540,4,0),(21769,'49164',42641,42642,4,0),(21770,'49164',43097,43098,4,0),(21771,'49165',42643,42644,4,0),(21772,'49165',43099,43100,4,0),(21773,'49166',43143,43144,4,0),(21774,'49167',42645,42646,4,0),(21775,'49170',42287,42288,4,0),(21776,'49171',42713,42714,4,0),(21777,'49172',42715,42716,4,0),(21778,'49173',42717,42718,4,0),(21779,'49174',42719,42720,4,0),(21780,'49174',42363,42364,4,0),(21781,'49176',42701,42702,4,0),(21782,'49177',42045,42046,4,0),(21783,'49177',42595,42596,4,0),(21784,'49177',42703,42704,4,0),(21785,'49177',42057,42058,4,0),(21786,'49178',42705,42706,4,0),(21787,'49180',42053,42054,4,0),(21788,'49181',43237,43238,4,0),(21789,'49182',42929,42930,4,0),(21790,'49183',42931,42932,4,0),(21791,'49190',42615,42616,4,0),(21792,'49191',42219,42220,4,0),(21793,'49191',42453,42454,4,0),(21794,'49191',42697,42698,4,0),(21795,'49191',42617,42618,4,0),(21796,'49192',42467,42468,4,0),(21797,'49192',42847,42848,4,0),(21798,'49192',43053,43054,4,0),(21799,'49193',43325,43326,4,0),(21800,'49200',42125,42126,4,0),(21801,'49210',42059,42060,4,0),(21802,'49211',42127,42128,4,0),(21803,'49211',42191,42192,4,0),(21804,'49211',42877,42878,4,0),(21805,'49211',42861,42862,4,0),(21806,'49212',42649,42650,4,0),(21807,'49213',42319,42320,4,0),(21808,'49214',42321,42322,4,0),(21809,'49215',42129,42130,4,0),(21810,'49215',42493,42494,4,0),(21811,'49216',42131,42132,4,0),(21812,'49216',42365,42366,4,0),(21813,'49220',42325,42326,4,0),(21814,'49230',43201,43202,4,0),(21815,'49231',43203,43204,4,0),(21816,'49232',43205,43206,4,0),(21817,'49240',43207,43208,4,0),(21818,'49250',43221,43222,4,0),(21819,'49250',43113,43114,4,0),(21820,'49251',42075,42076,4,0),(21821,'49251',42423,42424,4,0),(21822,'49252',43021,43022,4,0),(21823,'49253',42621,42622,4,0),(21824,'49254',42591,42592,4,0),(21825,'49255',42133,42134,4,0),(21826,'49260',42135,42136,4,0),(21827,'49270',42721,42722,4,0),(21828,'49271',42723,42724,4,0),(21829,'49272',42725,42726,4,0),(21830,'49280',42727,42728,4,0),(21831,'49281',42729,42730,4,0),(21832,'49300',42779,42780,4,0),(21833,'49310',42577,42578,4,0),(21834,'49317',42231,42232,4,0),(21835,'49317',42533,42534,4,0),(21836,'49318',42709,42710,4,0),(21837,'49318',42839,42840,4,0),(21838,'49318',42579,42580,4,0),(21839,'49319',42535,42536,4,0),(21840,'49319',42633,42634,4,0),(21841,'49320',42675,42676,4,0),(21842,'49320',42851,42852,4,0),(21843,'49321',42677,42678,4,0),(21844,'49321',42853,42854,4,0),(21845,'49322',42865,42866,4,0),(21846,'49322',42679,42680,4,0),(21847,'49323',42867,42868,4,0),(21848,'49324',42095,42096,4,0),(21849,'49324',42869,42870,4,0),(21850,'49325',42097,42098,4,0),(21851,'49325',42233,42234,4,0),(21852,'49326',42841,42842,4,0),(21853,'49327',42571,42572,4,0),(21854,'49327',42267,42268,4,0),(21855,'49327',43045,43046,4,0),(21856,'49330',42843,42844,4,0),(21857,'49330',43069,43070,4,0),(21858,'49331',42167,42168,4,0),(21859,'49331',43071,43072,4,0),(21860,'49332',42171,42172,4,0),(21861,'49332',43073,43074,4,0),(21862,'49333',42973,42974,4,0),(21863,'49333',42787,42788,4,0),(21864,'49333',43189,43190,4,0),(21865,'49334',42329,42330,4,0),(21866,'49335',42331,42332,4,0),(21867,'49335',42335,42336,4,0),(21868,'49336',42665,42666,4,0),(21869,'49337',42667,42668,4,0),(21870,'49337',42337,42338,4,0),(21871,'49340',42457,42458,4,0),(21872,'49341',42303,42304,4,0),(21873,'49341',42635,42636,4,0),(21874,'49342',42305,42306,4,0),(21875,'49342',42871,42872,4,0),(21876,'49343',42459,42460,4,0),(21877,'49344',42637,42638,4,0),(21878,'49345',42307,42308,4,0),(21879,'49346',42309,42310,4,0),(21880,'49347',42311,42312,4,0),(21881,'49348',42099,42100,4,0),(21882,'49349',42873,42874,4,0),(21883,'49350',42397,42398,4,0),(21884,'49352',42399,42400,4,0),(21885,'49357',42855,42856,4,0),(21886,'49357',42905,42906,4,0),(21887,'49358',43039,43040,4,0),(21888,'49358',42907,42908,4,0),(21889,'49359',43041,43042,4,0),(21890,'49359',42909,42910,4,0),(21891,'49360',42401,42402,4,0),(21892,'49361',42403,42404,4,0),(21893,'49362',42405,42406,4,0),(21894,'49390',42857,42858,4,0),(21895,'49390',42781,42782,4,0),(21896,'49391',42687,42688,4,0),(21897,'49392',42689,42690,4,0),(21898,'49393',42783,42784,4,0),(21899,'49394',42237,42238,4,0),(21900,'49394',42825,42826,4,0),(21901,'49395',42239,42240,4,0),(21902,'49395',42407,42408,4,0),(21903,'49396',42241,42242,4,0),(21904,'49400',42385,42386,4,0),(21905,'49410',42377,42378,4,0),(21906,'49419',42203,42204,4,0),(21907,'49420',43049,43050,4,0),(21908,'49430',43117,43118,4,0),(21909,'49440',42179,42180,4,0),(21910,'49450',43065,43066,4,0),(21911,'49500',42031,42032,4,0),(21912,'49510',37685,37686,4,0),(21913,'49511',37687,37688,4,0),(21914,'49512',37689,37690,4,0),(21915,'49512',42415,42416,4,0),(21916,'49512',42811,42812,4,0),(21917,'49513',37691,37692,4,0),(21918,'49513',42881,42882,4,0),(21919,'49514',37693,37694,4,0),(21920,'49514',42033,42034,4,0),(21921,'49514',42751,42752,4,0),(21922,'49515',43253,43254,4,0),(21923,'49515',42817,42818,4,0),(21924,'49516',43029,43030,4,0),(21925,'49517',43031,43032,4,0),(21926,'49517',43255,43256,4,0),(21927,'49517',42035,42036,4,0),(21928,'49518',42037,42038,4,0),(21929,'49518',42819,42820,4,0),(21930,'49518',43033,43034,4,0),(21931,'49519',43035,43036,4,0),(21932,'49519',42813,42814,4,0),(21933,'49520',42347,42348,4,0),(21934,'49521',42349,42350,4,0),(21935,'49522',42501,42502,4,0),(21936,'49523',42939,42940,4,0),(21937,'49524',42941,42942,4,0),(21938,'49524',43257,43258,4,0),(21939,'49525',42821,42822,4,0),(21940,'49525',42943,42944,4,0),(21941,'49530',42249,42250,4,0),(21942,'49539',42411,42412,4,0),(21943,'49539',43159,43160,4,0),(21944,'49539',42049,42050,4,0),(21945,'49540',42341,42342,4,0),(21946,'49540',42481,42482,4,0),(21947,'49540',42661,42662,4,0),(21948,'49541',42475,42476,4,0),(21949,'49542',43081,43082,4,0),(21950,'49542',42417,42418,4,0),(21951,'49543',42477,42478,4,0),(21952,'49550',42343,42344,4,0),(21953,'49559',42419,42420,4,0),(21954,'49560',42503,42504,4,0),(21955,'49561',42505,42506,4,0),(21956,'49562',43215,43216,4,0),(21957,'49563',43217,43218,4,0),(21958,'49570',42485,42486,4,0),(21959,'49571',42447,42448,4,0),(21960,'49572',42449,42450,4,0),(21961,'49573',42487,42488,4,0),(21962,'49574',42489,42490,4,0),(21963,'49580',42737,42738,4,0),(21964,'49582',42739,42740,4,0),(21965,'49583',42763,42764,4,0),(21966,'49590',42547,42548,4,0),(21967,'49590',42359,42360,4,0),(21968,'49591',42833,42834,4,0),(21969,'49592',42935,42936,4,0),(21970,'49592',42835,42836,4,0),(21971,'49593',42527,42528,4,0),(21972,'49594',42529,42530,4,0),(21973,'49600',42117,42118,4,0),(21974,'49610',42983,42984,4,0),(21975,'49610',42103,42104,4,0),(21976,'49618',42373,42374,4,0),(21977,'49618',43131,43132,4,0),(21978,'49618',42985,42986,4,0),(21979,'49619',42105,42106,4,0),(21980,'49619',42987,42988,4,0),(21981,'49620',42955,42956,4,0),(21982,'49621',42437,42438,4,0),(21983,'49621',42989,42990,4,0),(21984,'49622',42991,42992,4,0),(21985,'49622',42793,42794,4,0),(21986,'49622',42805,42806,4,0),(21987,'49622',42151,42152,4,0),(21988,'49622',42439,42440,4,0),(21989,'49623',42807,42808,4,0),(21990,'49623',43171,43172,4,0),(21991,'49624',42977,42978,4,0),(21992,'49624',42559,42560,4,0),(21993,'49625',42979,42980,4,0),(21994,'49626',42173,42174,4,0),(21995,'49626',42959,42960,4,0),(21996,'49626',42555,42556,4,0),(21997,'49627',42175,42176,4,0),(21998,'49628',42925,42926,4,0),(21999,'49629',42147,42148,4,0),(22000,'49630',43155,43156,4,0),(22001,'49638',42801,42802,4,0),(22002,'49638',42775,42776,4,0),(22003,'49639',42259,42260,4,0),(22004,'49639',43007,43008,4,0),(22005,'49639',42797,42798,4,0),(22006,'49640',42223,42224,4,0),(22007,'49650',42901,42902,4,0),(22008,'49660',43179,43180,4,0),(22009,'49660',42207,42208,4,0),(22010,'49670',42381,42382,4,0),(22011,'49680',43061,43062,4,0),(22012,'49680',42921,42922,4,0),(22013,'49690',42895,42896,4,0),(22014,'49691',42897,42898,4,0),(22015,'49692',42543,42544,4,0),(22016,'49693',42603,42604,4,0),(22017,'49693',42355,42356,4,0),(22018,'49694',42523,42524,4,0),(22019,'49695',43127,43128,4,0),(22020,'49696',42087,42088,4,0),(22021,'49696',42041,42042,4,0),(22022,'49696',42969,42970,4,0),(22023,'49697',43173,43174,4,0),(22024,'49697',42653,42654,4,0),(22025,'49697',42611,42612,4,0),(22026,'49697',43245,43246,4,0),(22027,'49697',42789,42790,4,0),(22028,'49698',42143,42144,4,0),(22029,'49698',42369,42370,4,0),(22030,'49698',43175,43176,4,0),(22031,'49698',42155,42156,4,0),(22032,'49699',42563,42564,4,0),(22033,'49699',42951,42952,4,0),(22034,'49699',43181,43182,4,0),(22035,'49699',42071,42072,4,0),(22036,'49700',42253,42254,4,0),(22037,'49706',42255,42256,4,0),(22038,'49707',42947,42948,4,0),(22039,'49708',42195,42196,4,0),(22040,'49708',43185,43186,4,0),(22041,'49709',42163,42164,4,0),(22042,'49710',42275,42276,4,0),(22043,'49714',42393,42394,4,0),(22044,'49715',42295,42296,4,0),(22045,'49716',42079,42080,4,0),(22046,'49717',42917,42918,4,0),(22047,'49717',42271,42272,4,0),(22048,'49718',42551,42552,4,0),(22049,'49719',43167,43168,4,0),(22050,'49719',42279,42280,4,0),(22051,'49720',42289,42290,4,0),(22052,'49721',42299,42300,4,0),(22053,'49722',42291,42292,4,0),(22054,'49730',42263,42264,4,0),(22055,'49731',42625,42626,4,0),(22056,'49740',42431,42432,4,0),(22057,'49741',42433,42434,4,0),(22058,'49742',42519,42520,4,0),(22059,'49743',42891,42892,4,0),(22060,'49750',42995,42996,4,0),(22061,'49751',42139,42140,4,0),(22062,'49760',42109,42110,4,0),(22063,'49760',43249,43250,4,0),(22064,'49770',43103,43104,4,0),(22065,'49780',42759,42760,4,0),(22066,'49781',42471,42472,4,0),(22067,'49782',43105,43106,4,0),(22068,'49783',42245,42246,4,0),(22069,'49783',42509,42510,4,0),(22070,'49800',43011,43012,4,0),(22071,'49810',42607,42608,4,0),(22072,'49820',43109,43110,4,0),(22073,'49820',43013,43014,4,0),(22074,'49830',42113,42114,4,0),(22075,'49831',42159,42160,4,0),(22076,'49832',42513,42514,4,0),(22077,'49833',42389,42390,4,0),(22078,'49834',42027,42028,4,0),(22079,'49835',42767,42768,4,0),(22080,'49836',43015,43016,4,0),(22081,'49840',43089,43090,4,0),(22082,'49850',42747,42748,4,0),(22083,'49860',43151,43152,4,0),(22084,'49870',43241,43242,4,0),(22085,'49871',43229,43230,4,0),(22086,'49880',42693,42694,4,0),(22087,'49881',43017,43018,4,0),(22088,'49882',43057,43058,4,0),(22089,'50001',44571,44572,4,0),(22090,'50002',44573,44574,4,0),(22091,'50003',44575,44576,4,0),(22092,'50004',44577,44578,4,0),(22093,'50005',44579,44580,4,0),(22094,'50006',44581,44582,4,0),(22095,'50007',44583,44584,4,0),(22096,'50008',44585,44586,4,0),(22097,'50009',44587,44588,4,0),(22098,'50010',44589,44590,4,0),(22099,'50011',44591,44592,4,0),(22100,'50012',44593,44594,4,0),(22101,'50013',44595,44596,4,0),(22102,'50014',44597,44598,4,0),(22103,'50015',44599,44600,4,0),(22104,'50016',44601,44602,4,0),(22105,'50017',44603,44604,4,0),(22106,'50018',44605,44606,4,0),(22107,'50019',44607,44608,4,0),(22108,'50020',44609,44610,4,0),(22109,'50021',44611,44612,4,0),(22110,'50022',44613,44614,4,0),(22111,'50057',44615,44616,4,0),(22112,'50059',44617,44618,4,0),(22113,'50100',43857,43858,4,0),(22114,'50108',43421,43422,4,0),(22115,'50109',43425,43426,4,0),(22116,'50120',44619,44620,4,0),(22117,'50130',43501,43502,4,0),(22118,'50131',43907,43908,4,0),(22119,'50132',43671,43672,4,0),(22120,'50133',43417,43418,4,0),(22121,'50134',43885,43886,4,0),(22122,'50134',44303,44304,4,0),(22123,'50135',44025,44026,4,0),(22124,'50135',43787,43788,4,0),(22125,'50136',43919,43920,4,0),(22126,'50137',44243,44244,4,0),(22127,'50138',44483,44484,4,0),(22128,'50139',44621,44622,4,0),(22129,'50140',43477,43478,4,0),(22130,'50141',43849,43850,4,0),(22131,'50142',43783,43784,4,0),(22132,'50143',44221,44222,4,0),(22133,'50143',44089,44090,4,0),(22134,'50144',44053,44054,4,0),(22135,'50150',43825,43826,4,0),(22136,'50151',43963,43964,4,0),(22137,'50152',44037,44038,4,0),(22138,'50153',44539,44540,4,0),(22139,'50154',44439,44440,4,0),(22140,'50155',43347,43348,4,0),(22141,'50156',44547,44548,4,0),(22142,'50160',43915,43916,4,0),(22143,'50160',43865,43866,4,0),(22144,'50161',44197,44198,4,0),(22145,'50162',44531,44532,4,0),(22146,'50163',43759,43760,4,0),(22147,'50164',44049,44050,4,0),(22148,'50170',43871,43872,4,0),(22149,'50170',44029,44030,4,0),(22150,'50171',43873,43874,4,0),(22151,'50172',43397,43398,4,0),(22152,'50173',44149,44150,4,0),(22153,'50174',44519,44520,4,0),(22154,'50175',44173,44174,4,0),(22155,'50177',43557,43558,4,0),(22156,'50178',43853,43854,4,0),(22157,'50180',44471,44472,4,0),(22158,'50190',44623,44624,4,0),(22159,'50191',44625,44626,4,0),(22160,'50193',44627,44628,4,0),(22161,'50194',44629,44630,4,0),(22162,'50195',44189,44190,4,0),(22163,'50196',43867,43868,4,0),(22164,'50200',43473,43474,4,0),(22165,'50210',44143,44144,4,0),(22166,'50211',43627,43628,4,0),(22167,'50212',43609,43610,4,0),(22168,'50213',44145,44146,4,0),(22169,'50213',43659,43660,4,0),(22170,'50213',44063,44064,4,0),(22171,'50214',43605,43606,4,0),(22172,'50215',44085,44086,4,0),(22173,'50216',44527,44528,4,0),(22174,'50217',44435,44436,4,0),(22175,'50219',43877,43878,4,0),(22176,'50219',44103,44104,4,0),(22177,'50219',44491,44492,4,0),(22178,'50220',43457,43458,4,0),(22179,'50227',44355,44356,4,0),(22180,'50228',43573,43574,4,0),(22181,'50229',43537,43538,4,0),(22182,'50230',43409,43410,4,0),(22183,'50236',43829,43830,4,0),(22184,'50237',43841,43842,4,0),(22185,'50238',43809,43810,4,0),(22186,'50238',43601,43602,4,0),(22187,'50239',43553,43554,4,0),(22188,'50239',43731,43732,4,0),(22189,'50239',43679,43680,4,0),(22190,'50240',44079,44080,4,0),(22191,'50240',43577,43578,4,0),(22192,'50246',43549,43550,4,0),(22193,'50247',44081,44082,4,0),(22194,'50248',44339,44340,4,0),(22195,'50249',44341,44342,4,0),(22196,'50250',43833,43834,4,0),(22197,'50257',43813,43814,4,0),(22198,'50258',44169,44170,4,0),(22199,'50258',43845,43846,4,0),(22200,'50259',43445,43446,4,0),(22201,'50259',44225,44226,4,0),(22202,'50260',44071,44072,4,0),(22203,'50266',43449,43450,4,0),(22204,'50267',44033,44034,4,0),(22205,'50268',44447,44448,4,0),(22206,'50268',43597,43598,4,0),(22207,'50268',44251,44252,4,0),(22208,'50269',44399,44400,4,0),(22209,'50269',43655,43656,4,0),(22210,'50269',44123,44124,4,0),(22211,'50270',44267,44268,4,0),(22212,'50280',43593,43594,4,0),(22213,'50290',43739,43740,4,0),(22214,'50291',44059,44060,4,0),(22215,'50292',43647,43648,4,0),(22216,'50293',44395,44396,4,0),(22217,'50294',43951,43952,4,0),(22218,'50294',44295,44296,4,0),(22219,'50295',44277,44278,4,0),(22220,'50295',43967,43968,4,0),(22221,'50296',43497,43498,4,0),(22222,'50296',44459,44460,4,0),(22223,'50296',44213,44214,4,0),(22224,'50297',43821,43822,4,0),(22225,'50297',44217,44218,4,0),(22226,'50297',43493,43494,4,0),(22227,'50298',44209,44210,4,0),(22228,'50299',44185,44186,4,0),(22229,'50299',43583,43584,4,0),(22230,'50299',44285,44286,4,0),(22231,'50300',43585,43586,4,0),(22232,'50310',44557,44558,4,0),(22233,'50311',44411,44412,4,0),(22234,'50312',43639,43640,4,0),(22235,'50313',43437,43438,4,0),(22236,'50314',43667,43668,4,0),(22237,'50315',43989,43990,4,0),(22238,'50316',44423,44424,4,0),(22239,'50316',43509,43510,4,0),(22240,'50316',43521,43522,4,0),(22241,'50320',43721,43722,4,0),(22242,'50321',43723,43724,4,0),(22243,'50322',43725,43726,4,0),(22244,'50323',43727,43728,4,0),(22245,'50324',44315,44316,4,0),(22246,'50325',44403,44404,4,0),(22247,'50326',43675,43676,4,0),(22248,'50330',44045,44046,4,0),(22249,'50331',44161,44162,4,0),(22250,'50331',44013,44014,4,0),(22251,'50331',44281,44282,4,0),(22252,'50332',43505,43506,4,0),(22253,'50333',44523,44524,4,0),(22254,'50334',44335,44336,4,0),(22255,'50335',43587,43588,4,0),(22256,'50336',43589,43590,4,0),(22257,'50340',44005,44006,4,0),(22258,'50341',44153,44154,4,0),(22259,'50342',44181,44182,4,0),(22260,'50343',44499,44500,4,0),(22261,'50344',44075,44076,4,0),(22262,'50345',43365,43366,4,0),(22263,'50346',43623,43624,4,0),(22264,'50347',43335,43336,4,0),(22265,'50348',43469,43470,4,0),(22266,'50351',43691,43692,4,0),(22267,'50360',43695,43696,4,0),(22268,'50366',44157,44158,4,0),(22269,'50366',44009,44010,4,0),(22270,'50366',43489,43490,4,0),(22271,'50366',44107,44108,4,0),(22272,'50367',44263,44264,4,0),(22273,'50367',43889,43890,4,0),(22274,'50368',43643,43644,4,0),(22275,'50368',44561,44562,4,0),(22276,'50368',43985,43986,4,0),(22277,'50368',44415,44416,4,0),(22278,'50369',43911,43912,4,0),(22279,'50369',43433,43434,4,0),(22280,'50369',44127,44128,4,0),(22281,'50370',44543,44544,4,0),(22282,'50371',44479,44480,4,0),(22283,'50372',44475,44476,4,0),(22284,'50373',43893,43894,4,0),(22285,'50373',43797,43798,4,0),(22286,'50373',44327,44328,4,0),(22287,'50373',43513,43514,4,0),(22288,'50374',44407,44408,4,0),(22289,'50374',43393,43394,4,0),(22290,'50374',44467,44468,4,0),(22291,'50375',43331,43332,4,0),(22292,'50390',43793,43794,4,0),(22293,'50391',44067,44068,4,0),(22294,'50391',44515,44516,4,0),(22295,'50400',43613,43614,4,0),(22296,'50408',43343,43344,4,0),(22297,'50409',43683,43684,4,0),(22298,'50410',43687,43688,4,0),(22299,'50420',43579,43580,4,0),(22300,'50430',44017,44018,4,0),(22301,'50440',44093,44094,4,0),(22302,'50441',43545,43546,4,0),(22303,'50450',44097,44098,4,0),(22304,'50460',43935,43936,4,0),(22305,'50461',43401,43402,4,0),(22306,'50470',43735,43736,4,0),(22307,'50480',44177,44178,4,0),(22308,'50481',43355,43356,4,0),(22309,'50482',44565,44566,4,0),(22310,'50490',44553,44554,4,0),(22311,'50490',44511,44512,4,0),(22312,'50491',43771,43772,4,0),(22313,'50491',43481,43482,4,0),(22314,'50491',44273,44274,4,0),(22315,'50500',44381,44382,4,0),(22316,'50510',44135,44136,4,0),(22317,'50511',44001,44002,4,0),(22318,'50512',44549,44550,4,0),(22319,'50512',44427,44428,4,0),(22320,'50513',44319,44320,4,0),(22321,'50513',44383,44384,4,0),(22322,'50513',44507,44508,4,0),(22323,'50513',43817,43818,4,0),(22324,'50513',43943,43944,4,0),(22325,'50514',44385,44386,4,0),(22326,'50520',43981,43982,4,0),(22327,'50529',43779,43780,4,0),(22328,'50529',44233,44234,4,0),(22329,'50529',43369,43370,4,0),(22330,'50530',44139,44140,4,0),(22331,'50540',44099,44100,4,0),(22332,'50540',43541,43542,4,0),(22333,'50546',44377,44378,4,0),(22334,'50546',43429,43430,4,0),(22335,'50546',43561,43562,4,0),(22336,'50547',43565,43566,4,0),(22337,'50547',44373,44374,4,0),(22338,'50548',43713,43714,4,0),(22339,'50549',43993,43994,4,0),(22340,'50549',43373,43374,4,0),(22341,'50550',43997,43998,4,0),(22342,'50560',43339,43340,4,0),(22343,'50561',43529,43530,4,0),(22344,'50562',43775,43776,4,0),(22345,'50570',43351,43352,4,0),(22346,'50580',44503,44504,4,0),(22347,'50581',43927,43928,4,0),(22348,'50582',43923,43924,4,0),(22349,'50582',44567,44568,4,0),(22350,'50583',44443,44444,4,0),(22351,'50584',44307,44308,4,0),(22352,'50590',43741,43742,4,0),(22353,'50590',43441,43442,4,0),(22354,'50591',43385,43386,4,0),(22355,'50600',43699,43700,4,0),(22356,'50610',43971,43972,4,0),(22357,'50610',43897,43898,4,0),(22358,'50611',43717,43718,4,0),(22359,'50611',43745,43746,4,0),(22360,'50612',44345,44346,4,0),(22361,'50612',43899,43900,4,0),(22362,'50613',43631,43632,4,0),(22363,'50614',43453,43454,4,0),(22364,'50614',44247,44248,4,0),(22365,'50615',43973,43974,4,0),(22366,'50615',44487,44488,4,0),(22367,'50616',44201,44202,4,0),(22368,'50616',44021,44022,4,0),(22369,'50617',43701,43702,4,0),(22370,'50619',43703,43704,4,0),(22371,'50619',43517,43518,4,0),(22372,'50619',44165,44166,4,0),(22373,'50619',43959,43960,4,0),(22374,'50619',43465,43466,4,0),(22375,'50620',44631,44632,4,0),(22376,'50629',44359,44360,4,0),(22377,'50630',43359,43360,4,0),(22378,'50637',44259,44260,4,0),(22379,'50638',43569,43570,4,0),(22380,'50639',43767,43768,4,0),(22381,'50640',43955,43956,4,0),(22382,'50641',43533,43534,4,0),(22383,'50650',43801,43802,4,0),(22384,'50660',44389,44390,4,0),(22385,'50667',44237,44238,4,0),(22386,'50668',44239,44240,4,0),(22387,'50669',44391,44392,4,0),(22388,'50670',44289,44290,4,0),(22389,'50678',44451,44452,4,0),(22390,'50679',44291,44292,4,0),(22391,'50679',43903,43904,4,0),(22392,'50680',44363,44364,4,0),(22393,'50682',44349,44350,4,0),(22394,'50683',43461,43462,4,0),(22395,'50683',44041,44042,4,0),(22396,'50683',44351,44352,4,0),(22397,'50684',44299,44300,4,0),(22398,'50685',44117,44118,4,0),(22399,'50685',43947,43948,4,0),(22400,'50685',43485,43486,4,0),(22401,'50685',44463,44464,4,0),(22402,'50686',28987,28988,4,0),(22403,'50686',44119,44120,4,0),(22404,'50687',43837,43838,4,0),(22405,'50687',43931,43932,4,0),(22406,'50688',43939,43940,4,0),(22407,'50689',44455,44456,4,0),(22408,'50689',44365,44366,4,0),(22409,'50690',44193,44194,4,0),(22410,'50691',43381,43382,4,0),(22411,'50692',44633,44634,4,0),(22412,'50692',43861,43862,4,0),(22413,'50693',44431,44432,4,0),(22414,'50694',43705,43706,4,0),(22415,'50695',43525,43526,4,0),(22416,'50696',43635,43636,4,0),(22417,'50696',44367,44368,4,0),(22418,'50697',44369,44370,4,0),(22419,'50700',43617,43618,4,0),(22420,'50709',43619,43620,4,0),(22421,'50710',43977,43978,4,0),(22422,'50720',44635,44636,4,0),(22423,'50720',44269,44270,4,0),(22424,'50730',43709,43710,4,0),(22425,'50740',43789,43790,4,0),(22426,'50750',44205,44206,4,0),(22427,'50760',44495,44496,4,0),(22428,'50770',44255,44256,4,0),(22429,'50780',44331,44332,4,0),(22430,'50781',43377,43378,4,0),(22431,'50782',43663,43664,4,0),(22432,'50783',43405,43406,4,0),(22433,'50784',43881,43882,4,0),(22434,'50786',43805,43806,4,0),(22435,'50790',43749,43750,4,0),(22436,'50791',43751,43752,4,0),(22437,'50792',43651,43652,4,0),(22438,'50793',43755,43756,4,0),(22439,'50794',44131,44132,4,0),(22440,'50795',43763,43764,4,0),(22441,'50800',44643,44644,4,0),(22442,'50810',44645,44646,4,0),(22443,'50820',44637,44638,4,0),(22444,'50830',44535,44536,4,0),(22445,'50830',43361,43362,4,0),(22446,'50830',44647,44648,4,0),(22447,'50840',44311,44312,4,0),(22448,'50850',44113,44114,4,0),(22449,'50850',44323,44324,4,0),(22450,'51001',44867,44868,4,0),(22451,'51002',44869,44870,4,0),(22452,'51003',44871,44872,4,0),(22453,'51004',44873,44874,4,0),(22454,'51005',44875,44876,4,0),(22455,'52001',44895,44896,4,0),(22456,'52002',44897,44898,4,0),(22457,'52003',44899,44900,4,0),(22458,'52004',44901,44902,4,0),(22459,'52005',44903,44904,4,0),(22460,'52006',44905,44906,4,0),(22461,'73820',36547,36548,4,0),(22462,'90007',44639,44640,4,0); +INSERT INTO `zoneGeo` VALUES (1,'Origin',1,47866,0,23932),(2,'España',2,44861,1,22429),(3,'Francia',44862,45563,1,350),(4,'Holanda',45564,45597,1,16),(5,'Portugal',45598,46841,1,621),(6,'Açoures',45599,45600,2,0),(7,'Ain',44863,44868,2,2),(8,'Aisne',44869,44870,2,0),(9,'Álava',3,370,2,183),(10,'Albacete',371,894,2,261),(11,'Alicante',895,1674,2,389),(12,'Allier',44871,44872,2,0),(13,'Almería',1675,2322,2,323),(14,'Alpes-de-Haute-Provence',44873,44890,2,8),(15,'Alpes-Maritimes',44891,44892,2,0),(16,'Ardèche',44893,44894,2,0),(17,'Ardennes',44895,44896,2,0),(18,'Ariège',44897,44898,2,0),(19,'Asturias',2323,3410,2,543),(20,'Aube',44899,44900,2,0),(21,'Aude',44901,44902,2,0),(22,'Aveiro',45601,45698,2,48),(23,'Aveyron',44903,44908,2,2),(24,'Ávila',3411,4498,2,543),(25,'Badajoz',4499,5272,2,386),(26,'Baleares (Formentera)',5273,5274,2,0),(27,'Baleares (Ibiza)',5275,5336,2,30),(28,'Baleares (Mallorca)',5337,5722,2,192),(29,'Baleares (Menorca)',5723,5776,2,26),(30,'Barcelona',5777,7306,2,764),(31,'Bas-Rhin',44909,44910,2,0),(32,'Beja',45699,45708,2,4),(33,'Bouches-du-Rhône',44911,44986,2,37),(34,'Braga',45709,45826,2,58),(35,'Braganza',45827,45832,2,2),(36,'Burgos',7307,9134,2,913),(37,'Cáceres',9135,10186,2,525),(38,'Cádiz',10187,10510,2,161),(39,'Calvados',44987,44992,2,2),(40,'Cantabria',10511,11296,2,392),(41,'Cantal',44993,44994,2,0),(42,'Castellón',11297,11902,2,302),(43,'Castelo Branco',45833,45868,2,17),(44,'Ceuta',45869,45882,2,6),(45,'Charente',44995,45000,2,2),(46,'Charente-Maritime',45001,45006,2,2),(47,'Cher',45007,45008,2,0),(48,'Ciudad Real',11903,12412,2,254),(49,'Coimbra',45883,45948,2,32),(50,'Córdoba',12413,12928,2,257),(51,'Corrèze',45009,45010,2,0),(52,'Corse-du-Sud',45011,45012,2,0),(53,'Côte-d’Or',45013,45014,2,0),(54,'Côtes-d’Armor',45015,45028,2,6),(55,'Creuse',45029,45030,2,0),(56,'Cuenca',12929,13984,2,527),(57,'Deux-Sèvres',45031,45032,2,0),(58,'Dordogne',45033,45034,2,0),(59,'Doubs',45035,45040,2,2),(60,'Drôme',45041,45050,2,4),(61,'Essonne',45051,45052,2,0),(62,'Eure',45053,45062,2,4),(63,'Eure-et-Loir',45063,45064,2,0),(64,'Évora',45949,45956,2,3),(65,'Faro',45957,46042,2,42),(66,'Finistère',45065,45102,2,18),(67,'Funchal',46043,46048,2,2),(68,'Gard',45103,45116,2,6),(69,'Gers',45117,45118,2,0),(70,'Girona',13985,15110,2,562),(71,'Gironde',45119,45124,2,2),(72,'Granada',15111,16000,2,444),(73,'Guadalajara',16001,17354,2,676),(74,'Guarda',46049,46080,2,15),(75,'Guipuzcoa',17355,17798,2,221),(76,'Haut-Rhin',45125,45126,2,0),(77,'Haute-Corse',45127,45128,2,0),(78,'Haute-Garonne',45129,45138,2,4),(79,'Haute-Loire',45139,45140,2,0),(80,'Haute-Marne',45141,45142,2,0),(81,'Haute-Saone',45143,45144,2,0),(82,'Haute-Savoie',45145,45154,2,4),(83,'Haute-Vienne',45155,45156,2,0),(84,'Hautes-Alpes',45157,45158,2,0),(85,'Hautes-Pyrénées',45159,45160,2,0),(86,'Hauts-de-Seine',45161,45166,2,2),(87,'Hérault',45167,45184,2,8),(88,'Honserlersdijk',45565,45566,2,0),(89,'Huelva',17799,18256,2,228),(90,'Huesca',18257,19478,2,610),(91,'Ille-et-Vilaine',45185,45186,2,0),(92,'Indre',45187,45188,2,0),(93,'Indre-et-Loire',45189,45198,2,4),(94,'Isère',45199,45204,2,2),(95,'Jaén',19479,20072,2,296),(96,'Jura',45205,45206,2,0),(97,'La Coruña',20073,21094,2,510),(98,'La Rioja',21095,21854,2,379),(99,'Landes',45207,45222,2,7),(100,'Leiria',46081,46164,2,41),(101,'León',21855,23424,2,784),(102,'Lérida',23425,23426,2,0),(103,'Lisboa',46165,46364,2,99),(104,'Lleida',23427,24710,2,641),(105,'Loir-et-Cher',45223,45224,2,0),(106,'Loire',45225,45226,2,0),(107,'Loire-Atlantique',45227,45232,2,2),(108,'Loiret',45233,45234,2,0),(109,'Lot',45235,45236,2,0),(110,'Lot-et-Garonne',45237,45238,2,0),(111,'Lozère',45239,45240,2,0),(112,'Lugo',24711,25868,2,578),(113,'Madrid',25869,26922,2,526),(114,'Maine-et-Loire',45241,45250,2,4),(115,'Málaga',26923,27524,2,300),(116,'Manche',45251,45256,2,2),(117,'Marne',45257,45262,2,2),(118,'Mayenne',45263,45264,2,0),(119,'Melilla',46365,46380,2,7),(120,'Meurthe-et-Moselle',45265,45266,2,0),(121,'Meuse',45267,45268,2,0),(122,'Morbihan',45269,45278,2,4),(123,'Moselle',45279,45280,2,0),(124,'Murcia',27525,28098,2,286),(125,'Navarra',28099,29400,2,650),(126,'Nièvre',45281,45282,2,0),(127,'Noord Holland',45567,45596,2,14),(128,'Nord',45283,45300,2,8),(129,'Oise',45301,45306,2,2),(130,'Orense',29401,30426,2,512),(131,'Orne',45307,45308,2,0),(132,'Palencia',30427,31362,2,467),(133,'París',45309,45324,2,7),(134,'Pas-de-Calais',45325,45334,2,4),(135,'Pontevedra',31363,32318,2,477),(136,'Portalegre',46381,46394,2,6),(137,'Porto',46395,46624,2,114),(138,'Puy-de-Dôme',45335,45336,2,0),(139,'Pyrénées-Atlantiques',45337,45416,2,39),(140,'Pyrénées-Orientales',45417,45430,2,6),(141,'Rhône',45431,45442,2,5),(142,'Salamanca',32319,34072,2,876),(143,'Santarém',46625,46652,2,13),(144,'Saone-et-Loire',45443,45448,2,2),(145,'Sarthe',45449,45450,2,0),(146,'Savoie',45451,45452,2,0),(147,'Segovia',34073,35054,2,490),(148,'Seine-et-Marne',45453,45454,2,0),(149,'Seine-Maritime',45455,45464,2,4),(150,'Seine-Saint-Denis',45465,45474,2,4),(151,'Setúbal',46653,46730,2,38),(152,'Sevilla',35055,35618,2,281),(153,'Somme',45475,45476,2,0),(154,'Soria',35619,36566,2,473),(155,'Tarn',45477,45490,2,6),(156,'Tarn-et-Garonne',45491,45496,2,2),(157,'Tarragona',36567,37450,2,441),(158,'Territoire de Belfort',45497,45498,2,0),(159,'Teruel',37451,38510,2,529),(160,'Toledo',38511,39422,2,455),(161,'Val-d’Oise',45499,45508,2,4),(162,'Val-de-Marne',45509,45520,2,5),(163,'Valencia',39423,40672,2,624),(164,'Valladolid',40673,41668,2,497),(165,'Var',45521,45534,2,6),(166,'Vaucluse',45535,45540,2,2),(167,'Vendée',45541,45542,2,0),(168,'Viana do Castelo',46731,46756,2,12),(169,'Vienne',45543,45544,2,0),(170,'Vila Real',46757,46778,2,10),(171,'Viseu',46779,46840,2,30),(172,'Vizcaya',41669,42216,2,273),(173,'Vosges',45545,45558,2,6),(174,'Yonne',45559,45560,2,0),(175,'Yvelines',45561,45562,2,0),(176,'Zamora',42217,43536,2,659),(177,'Zaragoza',43537,44860,2,661),(178,'A Arnoia',29402,29405,3,1),(179,'A Baña',20074,20081,3,3),(180,'A Bola',29406,29409,3,1),(181,'A Cañiza',31364,31381,3,8),(182,'A Capela',20082,20085,3,1),(183,'A Coruña',20086,20117,3,15),(184,'A Estrada',31382,31413,3,15),(185,'A Fonsagrada',24712,24739,3,13),(186,'A Guarda',31414,31421,3,3),(187,'A Gudiña',29410,29421,3,5),(188,'A Illa de Arousa',31422,31425,3,1),(189,'A Lama',31426,31443,3,8),(190,'A Laracha',20118,20125,3,3),(191,'A Merca',29422,29431,3,4),(192,'A Mezquita',29432,29441,3,4),(193,'A Pastoriza',24740,24749,3,4),(194,'A Peroxa',29442,29455,3,6),(195,'A Pobra de Trives',29456,29467,3,5),(196,'A Pobra do Brollón',24750,24775,3,12),(197,'A Pobra do Caramiñal',20126,20133,3,3),(198,'A Pontenova',24776,24799,3,11),(199,'A Rúa',29468,29475,3,3),(200,'A Teixeira',29476,29481,3,2),(201,'A Veiga',29482,29497,3,7),(202,'Ababuj',37452,37455,3,1),(203,'Abades',34074,34077,3,1),(204,'Abadía',9136,9139,3,1),(205,'Abadín',24800,24813,3,6),(206,'Abadiño',41670,41673,3,1),(207,'Abáigar',28100,28103,3,1),(208,'Abajas',7308,7313,3,2),(209,'Ábalos',21096,21099,3,1),(210,'Abaltzisketa',17356,17359,3,1),(211,'Abánades',16002,16005,3,1),(212,'Abanilla',27526,27535,3,4),(213,'Abanto',43538,43541,3,1),(214,'Abanto y Ciérvana-Abanto Zierbena',41674,41679,3,2),(215,'Abarán',27536,27541,3,2),(216,'Abarca de Campos',30428,30431,3,1),(217,'Abárzuza/Abartzuza',28104,28107,3,1),(218,'Abaurregaina/Abaurrea Alta',28108,28111,3,1),(219,'Abaurrepea/Abaurrea Baja',28112,28115,3,1),(220,'Abegondo',20134,20137,3,1),(221,'Abejar',35620,35623,3,1),(222,'Abejuela',37456,37459,3,1),(223,'Abella de la Conca',23428,23435,3,3),(224,'Abengibre',372,375,3,1),(225,'Abenójar',11904,11909,3,2),(226,'Aberin',28116,28121,3,2),(227,'Abertura',9140,9143,3,1),(228,'Abezames',42218,42221,3,1),(229,'Abia de la Obispalía',12930,12933,3,1),(230,'Abia de las Torres',30432,30435,3,1),(231,'Abiego',18258,18263,3,2),(232,'Abizanda',18264,18269,3,2),(233,'Abla',1676,1679,3,1),(234,'Ablanque',16006,16009,3,1),(235,'Ablitas',28122,28125,3,1),(236,'Abrera',5778,5781,3,1),(237,'Abrucena',1680,1685,3,2),(238,'Abusejo',32320,32323,3,1),(239,'Acebedo',21856,21861,3,2),(240,'Acebo',9144,9147,3,1),(241,'Acedera',4500,4505,3,2),(242,'Acehúche',9148,9151,3,1),(243,'Aceituna',9152,9155,3,1),(244,'Acered',43542,43545,3,1),(245,'Aceuchal',4506,4511,3,2),(246,'Adahuesca',18270,18273,3,1),(247,'Adalia',40674,40677,3,1),(248,'Adamuz',12414,12421,3,3),(249,'Adanero',3412,3415,3,1),(250,'Ademuz',39424,39427,3,1),(251,'Adiós',28126,28129,3,1),(252,'Adobes',16010,16013,3,1),(253,'Ador',39428,39431,3,1),(254,'Adra',1686,1693,3,3),(255,'Adrada de Haza',7314,7317,3,1),(256,'Adrada de Pirón',34078,34081,3,1),(257,'Adradas',35624,35627,3,1),(258,'Adrados',34082,34085,3,1),(259,'Aduna',17360,17363,3,1),(260,'Adzaneta de Albaida',39432,39435,3,1),(261,'Agallas',32324,32327,3,1),(262,'Àger',23436,23443,3,3),(263,'Agolada',31444,31461,3,8),(264,'Agón',43546,43549,3,1),(265,'Agoncillo',21100,21103,3,1),(266,'Agost',896,899,3,1),(267,'Agramunt',23444,23453,3,4),(268,'Ágreda',35628,35635,3,3),(269,'Agres',900,903,3,1),(270,'Agrón',15112,15115,3,1),(271,'Aguadulce',35056,35059,3,1),(272,'Aguarón',43550,43553,3,1),(273,'Aguas Cándidas',7318,7321,3,1),(274,'Aguasal',40678,40681,3,1),(275,'Aguatón',37460,37463,3,1),(276,'Aguaviva',37464,37467,3,1),(277,'Agudo',11910,11913,3,1),(278,'Agüero',18274,18277,3,1),(279,'Aguilafuente',34086,34089,3,1),(280,'Aguilar de Bureba',7322,7325,3,1),(281,'Aguilar de Campoo',30436,30451,3,7),(282,'Aguilar de Campos',40682,40685,3,1),(283,'Aguilar de Codés',28130,28133,3,1),(284,'Aguilar de la Frontera',12422,12425,3,1),(285,'Aguilar de Segarra',5782,5785,3,1),(286,'Aguilar del Alfambra',37468,37471,3,1),(287,'Aguilar del Río Alhama',21104,21109,3,2),(288,'Águilas',27542,27547,3,2),(289,'Aguilón',43554,43557,3,1),(290,'Agullana',13986,13989,3,1),(291,'Agullent',39436,39439,3,1),(292,'Agurain/Salvatierra',4,9,3,2),(293,'Ahigal',9156,9159,3,1),(294,'Ahigal de los Aceiteros',32328,32331,3,1),(295,'Ahigal de Villarino',32332,32335,3,1),(296,'Ahillones',4512,4515,3,1),(297,'Aia',17364,17369,3,2),(298,'Aibar/Oibar',28134,28137,3,1),(299,'Aiguafreda',5786,5789,3,1),(300,'Aiguamúrcia',36568,36573,3,2),(301,'Aiguaviva',13990,13993,3,1),(302,'Aigües',904,907,3,1),(303,'Aín',11298,11301,3,1),(304,'Aínsa-Sobrarbe',18278,18293,3,7),(305,'Ainzón',43558,43561,3,1),(306,'Aisa',18294,18299,3,2),(307,'Aitona',23454,23457,3,1),(308,'Aizarnazabal',17370,17373,3,1),(309,'Ajalvir',25870,25873,3,1),(310,'Ajamil de Cameros',21110,21113,3,1),(311,'Ajangiz',41680,41683,3,1),(312,'Ajofrín',38512,38515,3,1),(313,'Alacón',37472,37475,3,1),(314,'Alacuás',39440,39443,3,1),(315,'Aladrén',43562,43565,3,1),(316,'Alaejos',40686,40689,3,1),(317,'Alagón',43566,43571,3,2),(318,'Alagón del Río',9160,9163,3,1),(319,'Alaior',5724,5727,3,1),(320,'Alájar',17800,17803,3,1),(321,'Alameda',26924,26927,3,1),(322,'Alameda de la Sagra',38516,38519,3,1),(323,'Alameda del Valle',25874,25877,3,1),(324,'Alamedilla',15116,15121,3,2),(325,'Alamillo',11914,11917,3,1),(326,'Alaminos',16014,16017,3,1),(327,'Alange',4516,4519,3,1),(328,'Alanís',35060,35063,3,1),(329,'Alar del Rey',30452,30459,3,3),(330,'Alaraz',32336,32339,3,1),(331,'Alarba',43572,43575,3,1),(332,'Alarcón',12934,12937,3,1),(333,'Alarilla',16018,16021,3,1),(334,'Alaró',5338,5341,3,1),(335,'Alàs i Cerc',23458,23465,3,3),(336,'Alatoz',376,379,3,1),(337,'Alba',37476,37479,3,1),(338,'Alba de Cerrato',30460,30463,3,1),(339,'Alba de Tormes',32340,32349,3,4),(340,'Alba de Yeltes',32350,32353,3,1),(341,'Albacete',380,413,3,16),(342,'Albaida',39444,39447,3,1),(343,'Albaida del Aljarafe',35064,35067,3,1),(344,'Albal',39448,39451,3,1),(345,'Albalá',9164,9169,3,2),(346,'Albaladejo',11918,11921,3,1),(347,'Albaladejo del Cuende',12938,12941,3,1),(348,'Albalat de la Ribera',39452,39455,3,1),(349,'Albalat dels Sorells',39456,39459,3,1),(350,'Albalat dels Tarongers',39460,39463,3,1),(351,'Albalate de Cinca',18300,18303,3,1),(352,'Albalate de las Nogueras',12942,12945,3,1),(353,'Albalate de Zorita',16022,16027,3,2),(354,'Albalate del Arzobispo',37480,37483,3,1),(355,'Albalatillo',18304,18307,3,1),(356,'Albánchez',1694,1699,3,2),(357,'Albanchez de Mágina',19480,19483,3,1),(358,'Albanyà',13994,13999,3,2),(359,'Albares',16028,16031,3,1),(360,'Albarracín',37484,37491,3,3),(361,'Albarreal de Tajo',38520,38523,3,1),(362,'Albatana',414,417,3,1),(363,'Albatàrrec',23466,23469,3,1),(364,'Albatera',908,911,3,1),(365,'Albelda',18308,18311,3,1),(366,'Albelda de Iregua',21114,21117,3,1),(367,'Albendea',12946,12949,3,1),(368,'Albendiego',16032,16035,3,1),(369,'Albentosa',37492,37497,3,2),(370,'Alberique',39464,39467,3,1),(371,'Alberite',21118,21123,3,2),(372,'Alberite de San Juan',43576,43579,3,1),(373,'Albero Alto',18312,18315,3,1),(374,'Albero Bajo',18316,18319,3,1),(375,'Alberuela de Tubo',18320,18323,3,1),(376,'Albesa',23470,23473,3,1),(377,'Albeta',43580,43583,3,1),(378,'Albillos',7326,7329,3,1),(379,'Albinyana',36574,36579,3,2),(380,'Albiztur',17374,17377,3,1),(381,'Albocàsser',11302,11305,3,1),(382,'Alboloduy',1700,1705,3,2),(383,'Albolote',15122,15127,3,2),(384,'Albondón',15128,15131,3,1),(385,'Albons',14000,14003,3,1),(386,'Alborache',39468,39471,3,1),(387,'Alboraya',39472,39479,3,3),(388,'Alborea',418,421,3,1),(389,'Alborge',43584,43587,3,1),(390,'Albornos',3416,3419,3,1),(391,'Albox',1706,1719,3,6),(392,'Albudeite',27548,27551,3,1),(393,'Albuixech',39480,39483,3,1),(394,'Albuñán',15132,15135,3,1),(395,'Albuñol',15136,15143,3,3),(396,'Albuñuelas',15144,15147,3,1),(397,'Alburquerque',4520,4525,3,2),(398,'Alcabón',38524,38527,3,1),(399,'Alcácer',39484,39489,3,2),(400,'Alcadozo',422,427,3,2),(401,'Alcaine',37498,37501,3,1),(402,'Alcalá de Ebro',43588,43591,3,1),(403,'Alcalá de Guadaíra',35068,35073,3,2),(404,'Alcalá de Gurrea',18324,18329,3,2),(405,'Alcalá de Henares',25878,25893,3,7),(406,'Alcalá de la Selva',37502,37507,3,2),(407,'Alcalá de la Vega',12950,12953,3,1),(408,'Alcalá de los Gazules',10188,10191,3,1),(409,'Alcalá de Moncayo',43592,43595,3,1),(410,'Alcalà de Xivert',11306,11311,3,2),(411,'Alcalá del Júcar',428,437,3,4),(412,'Alcalá del Obispo',18330,18333,3,1),(413,'Alcalá del Río',35074,35081,3,3),(414,'Alcalá del Valle',10192,10195,3,1),(415,'Alcalá la Real',19484,19503,3,9),(416,'Alcalalí',912,917,3,2),(417,'Alcampell',18334,18337,3,1),(418,'Alcanadre',21124,21127,3,1),(419,'Alcanar',36580,36585,3,2),(420,'Alcañices',42222,42231,3,4),(421,'Alcañiz',37508,37515,3,3),(422,'Alcañizo',38528,38531,3,1),(423,'Alcanó',23474,23477,3,1),(424,'Alcántara',9170,9177,3,3),(425,'Alcántara de Júcar',39490,39493,3,1),(426,'Alcantarilla',27552,27555,3,1),(427,'Alcantud',12954,12957,3,1),(428,'Alcaracejos',12426,12429,3,1),(429,'Alcaraz',438,447,3,4),(430,'Alcarràs',23478,23483,3,2),(431,'Alcaucín',26928,26933,3,2),(432,'Alcaudete',19504,19511,3,3),(433,'Alcaudete de la Jara',38532,38535,3,1),(434,'Alcázar de San Juan',11922,11931,3,4),(435,'Alcázar del Rey',12958,12961,3,1),(436,'Alcazarén',40690,40693,3,1),(437,'Alcoba',11932,11937,3,2),(438,'Alcobendas',25894,25901,3,3),(439,'Alcocer',16036,16039,3,1),(440,'Alcocer de Planes',918,921,3,1),(441,'Alcocero de Mola',7330,7333,3,1),(442,'Alcohujate',12962,12965,3,1),(443,'Alcolea',1720,1725,3,2),(444,'Alcolea de Calatrava',11938,11941,3,1),(445,'Alcolea de Cinca',18338,18341,3,1),(446,'Alcolea de las Peñas',16040,16043,3,1),(447,'Alcolea de Tajo',38536,38539,3,1),(448,'Alcolea del Pinar',16044,16051,3,3),(449,'Alcolea del Río',35082,35087,3,2),(450,'Alcoleja',922,925,3,1),(451,'Alcoletge',23484,23489,3,2),(452,'Alcollarín',9178,9181,3,1),(453,'Alconaba',35636,35639,3,1),(454,'Alconada',32354,32357,3,1),(455,'Alconada de Maderuelo',34090,34093,3,1),(456,'Alconchel',4526,4529,3,1),(457,'Alconchel de Ariza',43596,43599,3,1),(458,'Alconchel de la Estrella',12966,12969,3,1),(459,'Alconera',4530,4533,3,1),(460,'Alcóntar',1726,1731,3,2),(461,'Alcorcón',25902,25913,3,5),(462,'Alcorisa',37516,37519,3,1),(463,'Alcoroches',16052,16055,3,1),(464,'Alcover',36586,36589,3,1),(465,'Alcoy/Alcoi',926,939,3,6),(466,'Alcubierre',18342,18345,3,1),(467,'Alcubilla de Avellaneda',35640,35645,3,2),(468,'Alcubilla de las Peñas',35646,35649,3,1),(469,'Alcubilla de Nogales',42232,42235,3,1),(470,'Alcubillas',11942,11945,3,1),(471,'Alcublas',39494,39497,3,1),(472,'Alcúdia',5342,5345,3,1),(473,'Alcudia de Crespins',39498,39501,3,1),(474,'Alcudia de Monteagud',1732,1735,3,1),(475,'Alcudia de Veo',11312,11315,3,1),(476,'Alcuéscar',9182,9185,3,1),(477,'Aldaya',39502,39505,3,1),(478,'Aldea de San Miguel',40694,40697,3,1),(479,'Aldea del Cano',9186,9189,3,1),(480,'Aldea del Fresno',25914,25917,3,1),(481,'Aldea del Obispo',32358,32361,3,1),(482,'Aldea del Rey',11946,11949,3,1),(483,'Aldea en Cabo',38540,38543,3,1),(484,'Aldea Real',34094,34097,3,1),(485,'Aldeacentenera',9190,9193,3,1),(486,'Aldeacipreste',32362,32365,3,1),(487,'Aldeadávila de la Ribera',32366,32373,3,3),(488,'Aldealafuente',35650,35653,3,1),(489,'Aldealcorvo',34098,34101,3,1),(490,'Aldealengua',32374,32377,3,1),(491,'Aldealengua de Pedraza',34102,34105,3,1),(492,'Aldealengua de Santa María',34106,34109,3,1),(493,'Aldealices',35654,35657,3,1),(494,'Aldealpozo',35658,35661,3,1),(495,'Aldealseñor',35662,35665,3,1),(496,'Aldeamayor de San Martín',40698,40703,3,2),(497,'Aldeanueva de Barbarroya',38544,38547,3,1),(498,'Aldeanueva de Ebro',21128,21131,3,1),(499,'Aldeanueva de Figueroa',32378,32381,3,1),(500,'Aldeanueva de Guadalajara',16056,16059,3,1),(501,'Aldeanueva de la Serrezuela',34110,34113,3,1),(502,'Aldeanueva de la Sierra',32382,32385,3,1),(503,'Aldeanueva de la Vera',9194,9197,3,1),(504,'Aldeanueva de San Bartolomé',38548,38551,3,1),(505,'Aldeanueva de Santa Cruz',3420,3423,3,1),(506,'Aldeanueva del Camino',9198,9201,3,1),(507,'Aldeanueva del Codonal',34114,34117,3,1),(508,'Aldeaquemada',19512,19515,3,1),(509,'Aldearrodrigo',32386,32389,3,1),(510,'Aldearrubia',32390,32393,3,1),(511,'Aldeaseca',3424,3427,3,1),(512,'Aldeaseca de Alba',32394,32397,3,1),(513,'Aldeaseca de la Frontera',32398,32401,3,1),(514,'Aldeasoña',34118,34121,3,1),(515,'Aldeatejada',32402,32413,3,5),(516,'Aldeavieja de Tormes',32414,32417,3,1),(517,'Aldehorno',34122,34125,3,1),(518,'Aldehuela de Jerte',9202,9205,3,1),(519,'Aldehuela de la Bóveda',32418,32423,3,2),(520,'Aldehuela de Liestos',43600,43603,3,1),(521,'Aldehuela de Periáñez',35666,35669,3,1),(522,'Aldehuela de Yeltes',32424,32429,3,2),(523,'Aldehuela del Codonal',34126,34129,3,1),(524,'Aldeire',15148,15151,3,1),(525,'Aldeonte',34130,34135,3,2),(526,'Aldover',36590,36593,3,1),(527,'Aledo',27556,27559,3,1),(528,'Alegia',17378,17381,3,1),(529,'Alegría-Dulantzi',10,15,3,2),(530,'Alella',5790,5793,3,1),(531,'Alentisque',35670,35673,3,1),(532,'Alerre',18346,18349,3,1),(533,'Alesanco',21132,21135,3,1),(534,'Alesón',21136,21139,3,1),(535,'Alfacar',15152,15157,3,2),(536,'Alfafar',39506,39509,3,1),(537,'Alfafara',940,943,3,1),(538,'Alfajarín',43604,43607,3,1),(539,'Alfambra',37520,37523,3,1),(540,'Alfamén',43608,43611,3,1),(541,'Alfántega',18350,18353,3,1),(542,'Alfara de Carles',36594,36597,3,1),(543,'Alfara de la Baronia',39510,39513,3,1),(544,'Alfara del Patriarca',39514,39517,3,1),(545,'Alfaraz de Sayago',42236,42239,3,1),(546,'Alfarnate',26934,26937,3,1),(547,'Alfarnatejo',26938,26941,3,1),(548,'Alfaro',21140,21143,3,1),(549,'Alfarp',39518,39521,3,1),(550,'Alfarràs',23490,23493,3,1),(551,'Alfarrasí',39522,39525,3,1),(552,'Alfauir',39526,39529,3,1),(553,'Alfés',23494,23497,3,1),(554,'Alfondeguilla',11316,11319,3,1),(555,'Alforja',36598,36601,3,1),(556,'Alforque',43612,43615,3,1),(557,'Alfoz',24814,24825,3,5),(558,'Alfoz de Bricia',7334,7343,3,4),(559,'Alfoz de Lloredo',10512,10525,3,6),(560,'Alfoz de Quintanadueñas',7344,7349,3,2),(561,'Alfoz de Santa Gadea',7350,7355,3,2),(562,'Algadefe',21862,21865,3,1),(563,'Algaida',5346,5353,3,3),(564,'Algámitas',35088,35091,3,1),(565,'Algar',10196,10199,3,1),(566,'Algar de Mesa',16060,16063,3,1),(567,'Algar de Palancia',39530,39533,3,1),(568,'Algarinejo',15158,15163,3,2),(569,'Algarra',12970,12973,3,1),(570,'Algarrobo',26942,26945,3,1),(571,'Algatocín',26946,26949,3,1),(572,'Algeciras',10200,10219,3,9),(573,'Algemesí',39534,39537,3,1),(574,'Algerri',23498,23501,3,1),(575,'Algete',25918,25923,3,2),(576,'Algimia de Alfara',39538,39541,3,1),(577,'Algimia de Almonacid',11320,11323,3,1),(578,'Alginet',39542,39545,3,1),(579,'Algodonales',10220,10225,3,2),(580,'Algodre',42240,42243,3,1),(581,'Algora',16064,16067,3,1),(582,'Algorfa',944,947,3,1),(583,'Alguaire',23502,23505,3,1),(584,'Alguazas',27560,27565,3,2),(585,'Algueña',948,951,3,1),(586,'Alhabia',1736,1739,3,1),(587,'Alhama de Almería',1740,1743,3,1),(588,'Alhama de Aragón',43616,43619,3,1),(589,'Alhama de Granada',15164,15169,3,2),(590,'Alhama de Murcia',27566,27569,3,1),(591,'Alhambra',11950,11955,3,2),(592,'Alhaurín de la Torre',26950,26953,3,1),(593,'Alhaurín el Grande',26954,26957,3,1),(594,'Alhendín',15170,15173,3,1),(595,'Alhóndiga',16068,16071,3,1),(596,'Alía',9206,9209,3,1),(597,'Aliaga',37524,37531,3,3),(598,'Aliaguilla',12974,12977,3,1),(599,'Alicante/Alacant',952,1005,3,26),(600,'Alicún',1744,1747,3,1),(601,'Alicún de Ortega',15174,15177,3,1),(602,'Alija del Infantado',21866,21871,3,2),(603,'Alins',23506,23513,3,3),(604,'Alió',36602,36605,3,1),(605,'Alique',16072,16075,3,1),(606,'Aliseda',9210,9213,3,1),(607,'Aliud',35674,35677,3,1),(608,'Aljaraque',17804,17813,3,4),(609,'Aljucén',4534,4537,3,1),(610,'Alkiza',17382,17385,3,1),(611,'Allande',2324,2339,3,7),(612,'Allariz',29498,29515,3,8),(613,'Allepuz',37532,37535,3,1),(614,'Aller',2340,2369,3,14),(615,'Allín/Allin',28138,28143,3,2),(616,'Allo',28144,28147,3,1),(617,'Alloza',37536,37539,3,1),(618,'Allueva',37540,37543,3,1),(619,'Almacelles',23514,23517,3,1),(620,'Almácera',39546,39549,3,1),(621,'Almáchar',26958,26961,3,1),(622,'Almadén',11956,11959,3,1),(623,'Almadén de la Plata',35092,35095,3,1),(624,'Almadenejos',11960,11965,3,2),(625,'Almadrones',16076,16079,3,1),(626,'Almagro',11966,11971,3,2),(627,'Almajano',35678,35681,3,1),(628,'Almaluez',35682,35687,3,2),(629,'Almansa',448,451,3,1),(630,'Almanza',21872,21879,3,3),(631,'Almaraz',9214,9217,3,1),(632,'Almaraz de Duero',42244,42247,3,1),(633,'Almargen',26962,26965,3,1),(634,'Almarza',35688,35699,3,5),(635,'Almarza de Cameros',21144,21149,3,2),(636,'Almassora',11324,11327,3,1),(637,'Almatret',23518,23521,3,1),(638,'Almazán',35700,35705,3,2),(639,'Almazul',35706,35711,3,2),(640,'Almedíjar',11328,11331,3,1),(641,'Almedina',11972,11975,3,1),(642,'Almedinilla',12430,12435,3,2),(643,'Almegíjar',15178,15181,3,1),(644,'Almeida de Sayago',42248,42253,3,2),(645,'Almenar',23522,23525,3,1),(646,'Almenar de Soria',35712,35719,3,3),(647,'Almenara',11332,11335,3,1),(648,'Almenara de Adaja',40704,40707,3,1),(649,'Almenara de Tormes',32430,32433,3,1),(650,'Almendra',32434,32437,3,1),(651,'Almendral',4538,4541,3,1),(652,'Almendral de la Cañada',38552,38555,3,1),(653,'Almendralejo',4542,4545,3,1),(654,'Almendros',12978,12981,3,1),(655,'Almensilla',35096,35099,3,1),(656,'Almería',1748,1777,3,14),(657,'Almiserat',39550,39553,3,1),(658,'Almochuel',43620,43623,3,1),(659,'Almócita',1778,1781,3,1),(660,'Almodóvar del Campo',11976,12001,3,12),(661,'Almodóvar del Pinar',12982,12985,3,1),(662,'Almodóvar del Río',12436,12441,3,2),(663,'Almogía',26966,26969,3,1),(664,'Almoguera',16080,16083,3,1),(665,'Almohaja',37544,37547,3,1),(666,'Almoharín',9218,9221,3,1),(667,'Almoines',39554,39557,3,1),(668,'Almonacid de la Cuba',43624,43627,3,1),(669,'Almonacid de la Sierra',43628,43631,3,1),(670,'Almonacid de Toledo',38556,38559,3,1),(671,'Almonacid de Zorita',16084,16089,3,2),(672,'Almonacid del Marquesado',12986,12989,3,1),(673,'Almonaster la Real',17814,17829,3,7),(674,'Almonte',17830,17841,3,5),(675,'Almoradí',1006,1011,3,2),(676,'Almorox',38560,38563,3,1),(677,'Almoster',36606,36609,3,1),(678,'Almudaina',1012,1015,3,1),(679,'Almudévar',18354,18359,3,2),(680,'Almuñécar',15182,15187,3,2),(681,'Almunia de San Juan',18360,18365,3,2),(682,'Almuniente',18366,18371,3,2),(683,'Almuradiel',12002,12007,3,2),(684,'Almusafes',39558,39561,3,1),(685,'Alobras',37548,37551,3,1),(686,'Alocén',16090,16093,3,1),(687,'Alonsotegi',41684,41687,3,1),(688,'Álora',26970,26979,3,4),(689,'Alòs de Balaguer',23526,23529,3,1),(690,'Alosno',17842,17847,3,2),(691,'Alovera',16094,16097,3,1),(692,'Alozaina',26980,26983,3,1),(693,'Alp',14004,14009,3,2),(694,'Alpandeire',26984,26987,3,1),(695,'Alpanseque',35720,35723,3,1),(696,'Alpartir',43632,43635,3,1),(697,'Alpedrete',25924,25929,3,2),(698,'Alpeñés',37552,37555,3,1),(699,'Alpens',5794,5797,3,1),(700,'Alpera',452,455,3,1),(701,'Alpicat',23530,23533,3,1),(702,'Alpuente',39562,39565,3,1),(703,'Alpujarra de la Sierra',15188,15197,3,4),(704,'Alquería de la Condesa',39566,39569,3,1),(705,'Alquézar',18372,18375,3,1),(706,'Alquife',15198,15201,3,1),(707,'Alsodux',1782,1785,3,1),(708,'Alt Àneu',23534,23543,3,4),(709,'Altable',7356,7359,3,1),(710,'Altafulla',36610,36613,3,1),(711,'Altarejos',12990,12995,3,2),(712,'Altea',1016,1021,3,2),(713,'Altorricón',18376,18379,3,1),(714,'Altsasu/Alsasua',28148,28151,3,1),(715,'Altura',11336,11339,3,1),(716,'Altzaga',17386,17389,3,1),(717,'Altzo',17390,17393,3,1),(718,'Alustante',16098,16103,3,2),(719,'Alzira',39570,39577,3,3),(720,'Amavida',3428,3431,3,1),(721,'Amayuelas de Arriba',30464,30467,3,1),(722,'Ambel',43636,43639,3,1),(723,'Ambite',25930,25933,3,1),(724,'Amer',14010,14013,3,1),(725,'Ames',20138,20151,3,6),(726,'Améscoa Baja',28152,28155,3,1),(727,'Ameyugo',7360,7363,3,1),(728,'Amezketa',17394,17397,3,1),(729,'Amieva',2370,2375,3,2),(730,'Amoeiro',29516,29525,3,4),(731,'Amorebieta-Etxano',41688,41693,3,2),(732,'Amoroto',41694,41697,3,1),(733,'Amposta',36614,36621,3,3),(734,'Ampudia',30468,30475,3,3),(735,'Ampuero',10526,10533,3,3),(736,'Amurrio',16,23,3,3),(737,'Amusco',30476,30481,3,2),(738,'Amusquillo',40708,40711,3,1),(739,'Anadón',37556,37559,3,1),(740,'Añana',24,29,3,2),(741,'Anaya',34136,34139,3,1),(742,'Anaya de Alba',32438,32443,3,2),(743,'Anchuelo',25934,25937,3,1),(744,'Anchuras',12008,12013,3,2),(745,'Ancín/Antzin',28156,28161,3,2),(746,'Andavías',42254,42257,3,1),(747,'Andilla',39578,39581,3,1),(748,'Andoain',17398,17401,3,1),(749,'Andorra',37560,37563,3,1),(750,'Andosilla',28162,28165,3,1),(751,'Andratx',5354,5363,3,4),(752,'Andújar',19516,19525,3,4),(753,'Añe',34140,34143,3,1),(754,'Anento',43640,43643,3,1),(755,'Anglès',14014,14017,3,1),(756,'Anglesola',23544,23547,3,1),(757,'Angón',16104,16107,3,1),(758,'Anguciana',21150,21153,3,1),(759,'Angüés',18380,18387,3,3),(760,'Anguiano',21154,21157,3,1),(761,'Anguita',16108,16115,3,3),(762,'Anguix',7364,7367,3,1),(763,'Anievas',10534,10537,3,1),(764,'Aniñón',43644,43647,3,1),(765,'Anna',39582,39585,3,1),(766,'Anoeta',17402,17405,3,1),(767,'Añón de Moncayo',43648,43651,3,1),(768,'Añora',12442,12447,3,2),(769,'Añorbe',28166,28169,3,1),(770,'Añover de Tajo',38564,38567,3,1),(771,'Añover de Tormes',32444,32447,3,1),(772,'Anquela del Ducado',16116,16121,3,2),(773,'Anquela del Pedregal',16122,16125,3,1),(774,'Ansó',18388,18393,3,2),(775,'Ansoáin/Antsoain',28170,28173,3,1),(776,'Antas',1786,1791,3,2),(777,'Antas de Ulla',24826,24837,3,5),(778,'Antella',39586,39589,3,1),(779,'Antequera',26988,27001,3,6),(780,'Antigüedad',30482,30485,3,1),(781,'Antillón',18394,18397,3,1),(782,'Antzuola',17406,17409,3,1),(783,'Anue',28174,28177,3,1),(784,'Aoiz/Agoitz',28178,28181,3,1),(785,'Arabayona de Mógica',32448,32451,3,1),(786,'Aracena',17848,17857,3,4),(787,'Aragüés del Puerto',18398,18401,3,1),(788,'Arahal',35100,35103,3,1),(789,'Arahuetes',34144,34149,3,2),(790,'Araitz',28182,28185,3,1),(791,'Arakaldo',41698,41701,3,1),(792,'Arakil',28186,28195,3,4),(793,'Arama',17410,17413,3,1),(794,'Aramaio',30,37,3,3),(795,'Aranarache/Aranaratxe',28196,28199,3,1),(796,'Arancón',35724,35729,3,2),(797,'Aranda de Duero',7368,7375,3,3),(798,'Aranda de Moncayo',43652,43655,3,1),(799,'Arándiga',43656,43659,3,1),(800,'Arandilla',7376,7379,3,1),(801,'Arandilla del Arroyo',12996,12999,3,1),(802,'Aranga',20152,20155,3,1),(803,'Aranguren',28200,28203,3,1),(804,'Aranjuez',25938,25941,3,1),(805,'Arano',28204,28207,3,1),(806,'Arantza',28208,28211,3,1),(807,'Arantzazu',41702,41705,3,1),(808,'Arañuel',11340,11343,3,1),(809,'Aranzueque',16126,16129,3,1),(810,'Arapiles',32452,32461,3,4),(811,'Aras',28212,28215,3,1),(812,'Aras de los Olmos',39590,39593,3,1),(813,'Arauzo de Miel',7380,7385,3,2),(814,'Arauzo de Salce',7386,7389,3,1),(815,'Arauzo de Torre',7390,7393,3,1),(816,'Arbancón',16130,16133,3,1),(817,'Arbeca',23548,23551,3,1),(818,'Arbeteta',16134,16137,3,1),(819,'Arbizu',28216,28219,3,1),(820,'Arbo',31462,31477,3,7),(821,'Arboleas',1792,1795,3,1),(822,'Arbolí',36622,36625,3,1),(823,'Arbúcies',14018,14023,3,2),(824,'Arcas',13000,13003,3,1),(825,'Arce/Artzi',28220,28227,3,3),(826,'Arcediano',32462,32465,3,1),(827,'Arcenillas',42258,42261,3,1),(828,'Archena',27570,27575,3,2),(829,'Árchez',27002,27005,3,1),(830,'Archidona',27006,27015,3,4),(831,'Arcicóllar',38568,38571,3,1),(832,'Arconada',30486,30489,3,1),(833,'Arcones',34150,34153,3,1),(834,'Arcos',7394,7399,3,2),(835,'Arcos de Jalón',35730,35743,3,6),(836,'Arcos de la Frontera',10226,10233,3,3),(837,'Arcos de la Polvorosa',42262,42265,3,1),(838,'Arcos de la Sierra',13004,13007,3,1),(839,'Arcos de las Salinas',37564,37567,3,1),(840,'Ardales',27016,27021,3,2),(841,'Ardisa',43660,43663,3,1),(842,'Ardón',21880,21887,3,3),(843,'Areatza',41706,41709,3,1),(844,'Arellano',28228,28231,3,1),(845,'Arén',18402,18405,3,1),(846,'Arenales de San Gregorio',12014,12017,3,1),(847,'Arenas',27022,27027,3,2),(848,'Arenas de Iguña',10538,10543,3,2),(849,'Arenas de San Juan',12018,12021,3,1),(850,'Arenas de San Pedro',3432,3437,3,2),(851,'Arenas del Rey',15202,15209,3,3),(852,'Arenillas',35744,35747,3,1),(853,'Arenillas de Riopisuerga',7400,7403,3,1),(854,'Arens de Lledó',37568,37571,3,1),(855,'Arenys de Mar',5798,5801,3,1),(856,'Arenys de Munt',5802,5807,3,2),(857,'Arenzana de Abajo',21158,21161,3,1),(858,'Arenzana de Arriba',21162,21165,3,1),(859,'Ares',20156,20163,3,3),(860,'Ares del Maestrat',11344,11347,3,1),(861,'Areso',28232,28235,3,1),(862,'Aretxabaleta',17414,17417,3,1),(863,'Arevalillo',3438,3441,3,1),(864,'Arevalillo de Cega',34154,34157,3,1),(865,'Arévalo',3442,3445,3,1),(866,'Arévalo de la Sierra',35748,35751,3,1),(867,'Argamasilla de Alba',12022,12025,3,1),(868,'Argamasilla de Calatrava',12026,12029,3,1),(869,'Arganda del Rey',25942,25945,3,1),(870,'Argañín',42266,42269,3,1),(871,'Arganza',21888,21895,3,3),(872,'Argavieso',18406,18409,3,1),(873,'Argecilla',16138,16141,3,1),(874,'Argelaguer',14024,14027,3,1),(875,'Argelita',11348,11351,3,1),(876,'Argençola',5808,5811,3,1),(877,'Argente',37572,37575,3,1),(878,'Argentona',5812,5815,3,1),(879,'Argés',38572,38575,3,1),(880,'Argoños',10544,10547,3,1),(881,'Arguedas',28236,28239,3,1),(882,'Arguis',18410,18413,3,1),(883,'Arguisuelas',13008,13011,3,1),(884,'Argujillo',42270,42273,3,1),(885,'Aria',28240,28243,3,1),(886,'Ariany',5364,5369,3,2),(887,'Aribe',28244,28247,3,1),(888,'Arija',7404,7407,3,1),(889,'Ariño',37576,37579,3,1),(890,'Ariza',43664,43667,3,1),(891,'Arjona',19526,19529,3,1),(892,'Arjonilla',19530,19533,3,1),(893,'Arlanzón',7408,7411,3,1),(894,'Armallones',16142,16145,3,1),(895,'Armañanzas',28248,28251,3,1),(896,'Armenteros',32466,32475,3,4),(897,'Armilla',15210,15213,3,1),(898,'Armiñón',38,43,3,2),(899,'Armuña',34158,34165,3,3),(900,'Armuña de Almanzora',1796,1799,3,1),(901,'Armuña de Tajuña',16146,16149,3,1),(902,'Arnedillo',21166,21171,3,2),(903,'Arnedo',21172,21177,3,2),(904,'Arnes',36626,36629,3,1),(905,'Arnuero',10548,10553,3,2),(906,'Aroche',17858,17869,3,5),(907,'Arquillinos',42274,42277,3,1),(908,'Arquillos',19534,19539,3,2),(909,'Arrabalde',42278,42281,3,1),(910,'Arraia-Maeztu',44,51,3,3),(911,'Arrancacepas',13012,13015,3,1),(912,'Arrankudiaga',41710,41715,3,2),(913,'Arrasate/Mondragón',17418,17423,3,2),(914,'Arratzu',41716,41723,3,3),(915,'Arratzua-Ubarrundia',52,57,3,2),(916,'Arraya de Oca',7412,7415,3,1),(917,'Arredondo',10554,10557,3,1),(918,'Arres',23552,23555,3,1),(919,'Arriate',27028,27031,3,1),(920,'Arrieta',41724,41727,3,1),(921,'Arrigorriaga',41728,41733,3,2),(922,'Arroba de los Montes',12030,12033,3,1),(923,'Arróniz',28252,28255,3,1),(924,'Arroyo de la Encomienda',40712,40715,3,1),(925,'Arroyo de la Luz',9222,9225,3,1),(926,'Arroyo de las Fraguas',16150,16153,3,1),(927,'Arroyo de San Serván',4546,4549,3,1),(928,'Arroyo del Ojanco',19540,19545,3,2),(929,'Arroyomolinos',25946,25949,3,1),(930,'Arroyomolinos',9226,9227,3,0),(931,'Arroyomolinos de la Vera',9228,9231,3,1),(932,'Arroyomolinos de León',17870,17873,3,1),(933,'Arruazu',28256,28259,3,1),(934,'Arrúbal',21178,21181,3,1),(935,'Arsèguel',23556,23559,3,1),(936,'Artà',5370,5375,3,2),(937,'Artajona',28260,28263,3,1),(938,'Artana',11352,11355,3,1),(939,'Artazu',28264,28267,3,1),(940,'Artea',41734,41737,3,1),(941,'Arteixo',20164,20177,3,6),(942,'Artés',5816,5819,3,1),(943,'Artesa de Lleida',23560,23563,3,1),(944,'Artesa de Segre',23564,23575,3,5),(945,'Artieda',43668,43671,3,1),(946,'Artzentales',41738,41741,3,1),(947,'Artziniega',58,63,3,2),(948,'Arzúa',20178,20185,3,3),(949,'As Neves',31478,31489,3,5),(950,'As Nogais',24838,24847,3,4),(951,'As Pontes de García Rodríguez',20186,20203,3,8),(952,'As Somozas',20204,20213,3,4),(953,'Ascó',36630,36633,3,1),(954,'Asín',43672,43675,3,1),(955,'Aspa',23576,23579,3,1),(956,'Aspariegos',42282,42285,3,1),(957,'Asparrena',64,71,3,3),(958,'Aspe',1022,1025,3,1),(959,'Asteasu',17424,17427,3,1),(960,'Astigarraga',17428,17431,3,1),(961,'Astorga',21896,21901,3,2),(962,'Astudillo',30490,30495,3,2),(963,'Asturianos',42286,42293,3,3),(964,'Atajate',27032,27035,3,1),(965,'Atalaya',4550,4553,3,1),(966,'Atalaya del Cañavate',13016,13019,3,1),(967,'Atanzón',16154,16157,3,1),(968,'Atapuerca',7416,7419,3,1),(969,'Ataquines',40716,40719,3,1),(970,'Atarfe',15214,15221,3,3),(971,'Ataun',17432,17435,3,1),(972,'Atea',43676,43679,3,1),(973,'Ateca',43680,43683,3,1),(974,'Atez/Atetz',28268,28273,3,2),(975,'Atienza',16158,16167,3,4),(976,'Atxondo',41742,41747,3,2),(977,'Atzeneta del Maestrat',11356,11361,3,2),(978,'Aulesti',41748,41751,3,1),(979,'Auñón',16168,16173,3,2),(980,'Auritz/Burguete',28274,28277,3,1),(981,'Ausejo',21182,21185,3,1),(982,'Ausejo de la Sierra',35752,35755,3,1),(983,'Autilla del Pino',30496,30499,3,1),(984,'Autillo de Campos',30500,30503,3,1),(985,'Autol',21186,21189,3,1),(986,'Aveinte',3446,3451,3,2),(987,'Avellaneda',3452,3455,3,1),(988,'Avellanosa de Muñó',7420,7423,3,1),(989,'Avià',5820,5825,3,2),(990,'Ávila',3456,3475,3,9),(991,'Avilés',2376,2397,3,10),(992,'Avinyó',5826,5829,3,1),(993,'Avinyonet de Puigventós',14028,14031,3,1),(994,'Avinyonet del Penedès',5830,5839,3,4),(995,'Avión',29526,29529,3,1),(996,'Ayala/Aiara',72,85,3,6),(997,'Ayamonte',17874,17887,3,6),(998,'Ayegui/Aiegi',28278,28283,3,2),(999,'Ayelo de Malferit',39594,39597,3,1),(1000,'Ayelo de Rugat',39598,39601,3,1),(1001,'Ayerbe',18414,18421,3,3),(1002,'Ayllón',34166,34177,3,5),(1003,'Ayna',456,467,3,5),(1004,'Ayódar',11362,11365,3,1),(1005,'Ayoó de Vidriales',42294,42299,3,2),(1006,'Ayora',39602,39605,3,1),(1007,'Ayuela',30504,30507,3,1),(1008,'Azagra',28284,28287,3,1),(1009,'Azaila',37580,37583,3,1),(1010,'Azanuy-Alins',18422,18425,3,1),(1011,'Azara',18426,18429,3,1),(1012,'Azkoitia',17436,17439,3,1),(1013,'Azlor',18430,18433,3,1),(1014,'Aznalcázar',35104,35109,3,2),(1015,'Aznalcóllar',35110,35113,3,1),(1016,'Azofra',21190,21193,3,1),(1017,'Azpeitia',17440,17443,3,1),(1018,'Azuaga',4554,4559,3,2),(1019,'Azuara',43684,43687,3,1),(1020,'Azuébar',11366,11369,3,1),(1021,'Azuelo',28288,28291,3,1),(1022,'Azuqueca de Henares',16174,16177,3,1),(1023,'Azután',38576,38579,3,1),(1024,'Babilafuente',32476,32479,3,1),(1025,'Bacares',1800,1803,3,1),(1026,'Badajoz',4560,4599,3,19),(1027,'Badalona',5840,5859,3,9),(1028,'Badarán',21194,21197,3,1),(1029,'Bádenas',37584,37587,3,1),(1030,'Badia del Vallès',5860,5863,3,1),(1031,'Badolatosa',35114,35119,3,2),(1032,'Badules',43688,43691,3,1),(1033,'Baélls',18434,18437,3,1),(1034,'Baena',12448,12455,3,3),(1035,'Baeza',19546,19557,3,5),(1036,'Bagà',5864,5867,3,1),(1037,'Báguena',37588,37591,3,1),(1038,'Bagüés',43692,43695,3,1),(1039,'Bahabón',40720,40723,3,1),(1040,'Bahabón de Esgueva',7424,7427,3,1),(1041,'Baides',16178,16181,3,1),(1042,'Bailén',19558,19561,3,1),(1043,'Bailo',18438,18445,3,3),(1044,'Baiona',31490,31501,3,5),(1045,'Baix Pallars',23580,23591,3,5),(1046,'Bakaiku',28292,28295,3,1),(1047,'Bakio',41752,41755,3,1),(1048,'Balaguer',23592,23595,3,1),(1049,'Balanegra',1804,1805,3,0),(1050,'Balazote',468,471,3,1),(1051,'Balboa',21902,21905,3,1),(1052,'Balconchán',43696,43699,3,1),(1053,'Baldellou',18446,18449,3,1),(1054,'Baleira',24848,24863,3,7),(1055,'Balenyà',5868,5871,3,1),(1056,'Baliarrain',17444,17447,3,1),(1057,'Ballesteros de Calatrava',12034,12037,3,1),(1058,'Ballobar',18450,18453,3,1),(1059,'Balmaseda',41756,41759,3,1),(1060,'Balones',1026,1029,3,1),(1061,'Balsa de Ves',472,477,3,2),(1062,'Balsareny',5872,5875,3,1),(1063,'Baltanás',30508,30513,3,2),(1064,'Baltar',29530,29537,3,3),(1065,'Bañares',21198,21201,3,1),(1066,'Banastás',18454,18457,3,1),(1067,'Bande',29538,29555,3,8),(1068,'Bañobárez',32480,32483,3,1),(1069,'Bañón',37592,37595,3,1),(1070,'Baños de Ebro/Mañueta',86,89,3,1),(1071,'Baños de la Encina',19562,19567,3,2),(1072,'Baños de Molgas',29556,29567,3,5),(1073,'Baños de Montemayor',9232,9235,3,1),(1074,'Baños de Río Tobía',21202,21205,3,1),(1075,'Baños de Rioja',21206,21209,3,1),(1076,'Baños de Tajo',16182,16185,3,1),(1077,'Baños de Valdearados',7428,7431,3,1),(1078,'Bañuelos',16186,16189,3,1),(1079,'Bañuelos de Bureba',7432,7435,3,1),(1080,'Banyalbufar',5376,5381,3,2),(1081,'Banyeres de Mariola',1030,1033,3,1),(1082,'Banyeres del Penedès',36634,36639,3,2),(1083,'Banyoles',14032,14035,3,1),(1084,'Baquerín de Campos',30514,30517,3,1),(1085,'Barajas de Melo',13020,13025,3,2),(1086,'Barakaldo',41760,41769,3,4),(1087,'Baralla',24864,24883,3,9),(1088,'Barañáin/Barañain',28296,28299,3,1),(1089,'Baraona',35756,35765,3,4),(1090,'Barásoain',28300,28303,3,1),(1091,'Barbadás',29568,29581,3,6),(1092,'Barbadillo',32484,32489,3,2),(1093,'Barbadillo de Herreros',7436,7439,3,1),(1094,'Barbadillo del Mercado',7440,7443,3,1),(1095,'Barbadillo del Pez',7444,7447,3,1),(1096,'Barbalos',32490,32493,3,1),(1097,'Barbarin',28304,28307,3,1),(1098,'Barbastro',18458,18463,3,2),(1099,'Barbate',10234,10243,3,4),(1100,'Barbens',23596,23599,3,1),(1101,'Barberà de la Conca',36640,36647,3,3),(1102,'Barberà del Vallès',5876,5879,3,1),(1103,'Bárboles',43700,43703,3,1),(1104,'Barbolla',34178,34181,3,1),(1105,'Barbués',18464,18467,3,1),(1106,'Barbuñales',18468,18471,3,1),(1107,'Barca',35766,35769,3,1),(1108,'Bárcabo',18472,18481,3,4),(1109,'Barcarrota',4600,4603,3,1),(1110,'Barcelona',5880,5967,3,43),(1111,'Bárcena de Campos',30518,30521,3,1),(1112,'Bárcena de Cicero',10558,10569,3,5),(1113,'Bárcena de Pie de Concha',10570,10573,3,1),(1114,'Barceo',32494,32497,3,1),(1115,'Barcheta',39606,39609,3,1),(1116,'Barchín del Hoyo',13026,13029,3,1),(1117,'Barcial de la Loma',40724,40727,3,1),(1118,'Barcial del Barco',42300,42303,3,1),(1119,'Barcience',38580,38585,3,2),(1120,'Barcones',35770,35773,3,1),(1121,'Bardallur',43704,43707,3,1),(1122,'Bareyo',10574,10581,3,3),(1123,'Bargas',38586,38589,3,1),(1124,'Bargota',28308,28311,3,1),(1125,'Barillas',28312,28315,3,1),(1126,'Barjas',21906,21911,3,2),(1127,'Barracas',11370,11373,3,1),(1128,'Barrachina',37596,37599,3,1),(1129,'Barrado',9236,9239,3,1),(1130,'Barrax',478,481,3,1),(1131,'Barreiros',24884,24895,3,5),(1132,'Barrika',41770,41773,3,1),(1133,'Barrio de Muñó',7448,7451,3,1),(1134,'Barriopedro',16190,16193,3,1),(1135,'Barrios de Colina',7452,7455,3,1),(1136,'Barro',31502,31513,3,5),(1137,'Barromán',3476,3479,3,1),(1138,'Barruecopardo',32498,32501,3,1),(1139,'Barruelo de Santullán',30522,30529,3,3),(1140,'Barruelo del Valle',40728,40731,3,1),(1141,'Barrundia',90,95,3,2),(1142,'Barx',39610,39613,3,1),(1143,'Basaburua',28316,28321,3,2),(1144,'Basardilla',34182,34185,3,1),(1145,'Basauri',41774,41777,3,1),(1146,'Bàscara',14036,14041,3,2),(1147,'Basconcillos del Tozo',7456,7463,3,3),(1148,'Báscones de Ojeda',30530,30533,3,1),(1149,'Bascuñana',7464,7467,3,1),(1150,'Bascuñana de San Pedro',13030,13033,3,1),(1151,'Bassella',23600,23607,3,3),(1152,'Batea',36648,36651,3,1),(1153,'Baterno',4604,4607,3,1),(1154,'Batres',25950,25955,3,2),(1155,'Bausen',23608,23611,3,1),(1156,'Bayárcal',1806,1811,3,2),(1157,'Bayarque',1812,1815,3,1),(1158,'Bayubas de Abajo',35774,35777,3,1),(1159,'Bayubas de Arriba',35778,35781,3,1),(1160,'Baza',15222,15227,3,2),(1161,'Baztan',28322,28341,3,9),(1162,'Bea',37600,37603,3,1),(1163,'Beade',29582,29587,3,2),(1164,'Beamud',13034,13037,3,1),(1165,'Beariz',29588,29591,3,1),(1166,'Beas',17888,17897,3,4),(1167,'Beas de Granada',15228,15231,3,1),(1168,'Beas de Guadix',15232,15235,3,1),(1169,'Beas de Segura',19568,19573,3,2),(1170,'Beasain',17448,17451,3,1),(1171,'Becedas',3480,3485,3,2),(1172,'Becedillas',3486,3489,3,1),(1173,'Beceite',37604,37607,3,1),(1174,'Becerreá',24896,24929,3,16),(1175,'Becerril de Campos',30534,30537,3,1),(1176,'Becerril de la Sierra',25956,25959,3,1),(1177,'Becilla de Valderaduey',40732,40735,3,1),(1178,'Bédar',1816,1821,3,2),(1179,'Bedia',41778,41781,3,1),(1180,'Bedmar y Garcíez',19574,19579,3,2),(1181,'Begíjar',19580,19585,3,2),(1182,'Begonte',24930,24939,3,4),(1183,'Begues',5968,5971,3,1),(1184,'Begur',14042,14047,3,2),(1185,'Beintza-Labaien',28342,28345,3,1),(1186,'Beire',28346,28349,3,1),(1187,'Beires',1822,1825,3,1),(1188,'Beizama',17452,17455,3,1),(1189,'Béjar',32502,32509,3,3),(1190,'Bejís',11374,11377,3,1),(1191,'Belalcázar',12456,12459,3,1),(1192,'Belascoáin',28350,28353,3,1),(1193,'Belauntza',17456,17459,3,1),(1194,'Belbimbre',7468,7471,3,1),(1195,'Belchite',43708,43711,3,1),(1196,'Beleña',32510,32513,3,1),(1197,'Bélgida',39614,39617,3,1),(1198,'Belianes',23612,23615,3,1),(1199,'Belinchón',13038,13043,3,2),(1200,'Bell-lloc d\'Urgell',23616,23619,3,1),(1201,'Bellaguarda',23620,23623,3,1),(1202,'Bellcaire d\'Empordà',14048,14051,3,1),(1203,'Bellcaire d\'Urgell',23624,23627,3,1),(1204,'Bellmunt d\'Urgell',23628,23631,3,1),(1205,'Bellmunt del Priorat',36652,36655,3,1),(1206,'Bello',37608,37611,3,1),(1207,'Bellprat',5972,5975,3,1),(1208,'Bellpuig',23632,23635,3,1),(1209,'Bellreguart',39618,39621,3,1),(1210,'Bellús',39622,39625,3,1),(1211,'Bellvei',36656,36659,3,1),(1212,'Bellver de Cerdanya',23636,23643,3,3),(1213,'Bellvís',23644,23649,3,2),(1214,'Belmez',12460,12471,3,5),(1215,'Bélmez de la Moraleda',19586,19589,3,1),(1216,'Belmonte',13044,13049,3,2),(1217,'Belmonte de Campos',30538,30541,3,1),(1218,'Belmonte de Gracián',43712,43715,3,1),(1219,'Belmonte de Miranda',2398,2423,3,12),(1220,'Belmonte de San José',37612,37615,3,1),(1221,'Belmonte de Tajo',25960,25963,3,1),(1222,'Belmontejo',13050,13053,3,1),(1223,'Belorado',7472,7483,3,5),(1224,'Belver de Cinca',18482,18489,3,3),(1225,'Belver de los Montes',42304,42307,3,1),(1226,'Belvís de la Jara',38590,38593,3,1),(1227,'Belvís de Monroy',9240,9243,3,1),(1228,'Bembibre',21912,21921,3,4),(1229,'Benabarre',18490,18495,3,2),(1230,'Benacazón',35120,35123,3,1),(1231,'Benadalid',27036,27039,3,1),(1232,'Benafarces',40736,40739,3,1),(1233,'Benafer',11378,11381,3,1),(1234,'Benafigos',11382,11385,3,1),(1235,'Benagéber',39626,39629,3,1),(1236,'Benaguacil',39630,39633,3,1),(1237,'Benahadux',1826,1829,3,1),(1238,'Benahavís',27040,27043,3,1),(1239,'Benalauría',27044,27047,3,1),(1240,'Benalmádena',27048,27055,3,3),(1241,'Benalúa',15236,15239,3,1),(1242,'Benalúa de las Villas',15240,15243,3,1),(1243,'Benalup-Casas Viejas',10244,10247,3,1),(1244,'Benamargosa',27056,27059,3,1),(1245,'Benamaurel',15244,15247,3,1),(1246,'Benamejí',12472,12477,3,2),(1247,'Benamocarra',27060,27063,3,1),(1248,'Benaocaz',10248,10251,3,1),(1249,'Benaoján',27064,27067,3,1),(1250,'Benarrabá',27068,27071,3,1),(1251,'Benasau',1034,1037,3,1),(1252,'Benasque',18496,18503,3,3),(1253,'Benassal',11386,11389,3,1),(1254,'Benatae',19590,19593,3,1),(1255,'Benavent de Segrià',23650,23653,3,1),(1256,'Benavente',42308,42311,3,1),(1257,'Benavides',21922,21931,3,4),(1258,'Benavites',39634,39637,3,1),(1259,'Benegiles',42312,42315,3,1),(1260,'Beneigida',39638,39641,3,1),(1261,'Beneixama',1038,1043,3,2),(1262,'Benejúzar',1044,1047,3,1),(1263,'Benetúser',39642,39645,3,1),(1264,'Benferri',1048,1051,3,1),(1265,'Beniarbeig',1052,1055,3,1),(1266,'Beniardá',1056,1059,3,1),(1267,'Beniarjó',39646,39649,3,1),(1268,'Beniarrés',1060,1063,3,1),(1269,'Beniatjar',39650,39653,3,1),(1270,'Benicarló',11390,11395,3,2),(1271,'Benicasim/Benicàssim',11396,11399,3,1),(1272,'Benicolet',39654,39657,3,1),(1273,'Benicull',39658,39661,3,1),(1274,'Benidoleig',1064,1067,3,1),(1275,'Benidorm',1068,1077,3,4),(1276,'Beniel',27576,27579,3,1),(1277,'Benifairó de la Valldigna',39662,39665,3,1),(1278,'Benifairó de les Valls',39666,39669,3,1),(1279,'Benifallet',36660,36663,3,1),(1280,'Benifallim',1078,1081,3,1),(1281,'Benifato',1082,1085,3,1),(1282,'Benifayó',39670,39673,3,1),(1283,'Beniflá',39674,39677,3,1),(1284,'Benigánim',39678,39681,3,1),(1285,'Benigembla',1086,1089,3,1),(1286,'Benijófar',1090,1093,3,1),(1287,'Benilloba',1094,1097,3,1),(1288,'Benillup',1098,1101,3,1),(1289,'Benimantell',1102,1105,3,1),(1290,'Benimarfull',1106,1109,3,1),(1291,'Benimassot',1110,1113,3,1),(1292,'Benimeli',1114,1117,3,1),(1293,'Benimodo',39682,39685,3,1),(1294,'Benimuslem',39686,39689,3,1),(1295,'Beniparrell',39690,39695,3,2),(1296,'Benirredrá',39696,39699,3,1),(1297,'Benisanó',39700,39703,3,1),(1298,'Benisoda',39704,39707,3,1),(1299,'Benissa',1118,1121,3,1),(1300,'Benissanet',36664,36667,3,1),(1301,'Benisuera',39708,39711,3,1),(1302,'Benitachell/el Poble Nou de Benitatxell',1122,1125,3,1),(1303,'Benitagla',1830,1833,3,1),(1304,'Benizalón',1834,1839,3,2),(1305,'Benlloch',11400,11403,3,1),(1306,'Benquerencia',9244,9247,3,1),(1307,'Benquerencia de la Serena',4608,4617,3,4),(1308,'Bentarique',1840,1843,3,1),(1309,'Benuza',21932,21937,3,2),(1310,'Bera',28354,28359,3,2),(1311,'Berango',41782,41785,3,1),(1312,'Berantevilla',96,103,3,3),(1313,'Beranuy',18504,18509,3,2),(1314,'Berastegi',17460,17465,3,2),(1315,'Beratón',35782,35785,3,1),(1316,'Berbegal',18510,18513,3,1),(1317,'Berberana',7484,7489,3,2),(1318,'Berbinzana',28360,28363,3,1),(1319,'Berceo',21210,21213,3,1),(1320,'Bercero',40740,40743,3,1),(1321,'Berceruelo',40744,40747,3,1),(1322,'Bérchules',15248,15251,3,1),(1323,'Bercial',34186,34189,3,1),(1324,'Bercial de Zapardiel',3490,3493,3,1),(1325,'Bercianos del Páramo',21938,21943,3,2),(1326,'Bercianos del Real Camino',21944,21947,3,1),(1327,'Bercimuel',34190,34193,3,1),(1328,'Berdejo',43716,43719,3,1),(1329,'Berga',5976,5979,3,1),(1330,'Bergara',17466,17477,3,5),(1331,'Bergasa',21214,21217,3,1),(1332,'Bergasillas Bajera',21218,21221,3,1),(1333,'Berge',37616,37619,3,1),(1334,'Bergondo',20214,20225,3,5),(1335,'Beriáin',28364,28367,3,1),(1336,'Berja',1844,1853,3,4),(1337,'Berlanga',4618,4621,3,1),(1338,'Berlanga de Duero',35786,35795,3,4),(1339,'Berlanga del Bierzo',21948,21951,3,1),(1340,'Berlangas de Roa',7490,7493,3,1),(1341,'Bermellar',32514,32517,3,1),(1342,'Bermeo',41786,41789,3,1),(1343,'Bermillo de Sayago',42316,42329,3,6),(1344,'Bernardos',34194,34197,3,1),(1345,'Bernedo',104,113,3,4),(1346,'Berninches',16194,16197,3,1),(1347,'Bernuy de Porreros',34198,34201,3,1),(1348,'Bernuy-Zapardiel',3494,3497,3,1),(1349,'Berriatua',41790,41793,3,1),(1350,'Berrioplano/Berriobeiti',28368,28373,3,2),(1351,'Berriozar',28374,28379,3,2),(1352,'Berriz',41794,41799,3,2),(1353,'Berrobi',17478,17481,3,1),(1354,'Berrocal',17898,17901,3,1),(1355,'Berrocal de Huebra',32518,32521,3,1),(1356,'Berrocal de Salvatierra',32522,32525,3,1),(1357,'Berrocalejo',9248,9251,3,1),(1358,'Berrocalejo de Aragona',3498,3501,3,1),(1359,'Berrueces',40748,40751,3,1),(1360,'Berrueco',43720,43723,3,1),(1361,'Bertizarana',28380,28387,3,3),(1362,'Berzocana',9252,9255,3,1),(1363,'Berzosa de Bureba',7494,7497,3,1),(1364,'Berzosa del Lozoya',25964,25967,3,1),(1365,'Berzosilla',30542,30547,3,2),(1366,'Besalú',14052,14055,3,1),(1367,'Bescanó',14056,14063,3,3),(1368,'Betanzos',20226,20231,3,2),(1369,'Betelu',28388,28391,3,1),(1370,'Bétera',39712,39715,3,1),(1371,'Beteta',13054,13061,3,3),(1372,'Betxí',11404,11407,3,1),(1373,'Beuda',14064,14069,3,2),(1374,'Bezares',21222,21225,3,1),(1375,'Bezas',37620,37623,3,1),(1376,'Biar',1126,1129,3,1),(1377,'Bicorp',39716,39719,3,1),(1378,'Bidania-Goiatz',17482,17485,3,1),(1379,'Bidaurreta',28392,28395,3,1),(1380,'Biel',43724,43727,3,1),(1381,'Bielsa',18514,18521,3,3),(1382,'Bienservida',482,485,3,1),(1383,'Bienvenida',4622,4625,3,1),(1384,'Bierge',18522,18527,3,2),(1385,'Biescas',18528,18543,3,7),(1386,'Bigastro',1130,1133,3,1),(1387,'Bigues i Riells',5980,5985,3,2),(1388,'Bijuesca',43728,43731,3,1),(1389,'Bilbao',41800,41831,3,15),(1390,'Bimenes',2424,2429,3,2),(1391,'Binaced',18544,18549,3,2),(1392,'Binéfar',18550,18553,3,1),(1393,'Binissalem',5382,5385,3,1),(1394,'Biosca',23654,23661,3,3),(1395,'Biota',43732,43735,3,1),(1396,'Bisaurri',18554,18559,3,2),(1397,'Biscarrués',18560,18563,3,1),(1398,'Bisimbre',43736,43739,3,1),(1399,'Biure',14070,14073,3,1),(1400,'Biurrun-Olcoz',28396,28399,3,1),(1401,'Blacos',35796,35799,3,1),(1402,'Blanca',27580,27583,3,1),(1403,'Blancafort',36668,36671,3,1),(1404,'Blancas',37624,37627,3,1),(1405,'Blanes',14074,14077,3,1),(1406,'Blascomillán',3502,3507,3,2),(1407,'Blasconuño de Matacabras',3508,3511,3,1),(1408,'Blascosancho',3512,3515,3,1),(1409,'Blecua y Torres',18564,18569,3,2),(1410,'Blesa',37628,37631,3,1),(1411,'Bliecos',35800,35803,3,1),(1412,'Boada',32526,32529,3,1),(1413,'Boada de Campos',30548,30551,3,1),(1414,'Boadella i les Escaules',14078,14081,3,1),(1415,'Boadilla de Rioseco',30552,30555,3,1),(1416,'Boadilla del Camino',30556,30559,3,1),(1417,'Boadilla del Monte',25968,25975,3,3),(1418,'Boal',2430,2451,3,10),(1419,'Bobadilla',21226,21229,3,1),(1420,'Bobadilla del Campo',40752,40755,3,1),(1421,'Boborás',29592,29613,3,10),(1422,'Boca de Huérgano',21952,21961,3,4),(1423,'Bocairente',39720,39723,3,1),(1424,'Boceguillas',34202,34207,3,2),(1425,'Bocigas',40756,40759,3,1),(1426,'Bocos de Duero',40760,40763,3,1),(1427,'Bodonal de la Sierra',4626,4629,3,1),(1428,'Boecillo',40764,40767,3,1),(1429,'Bogajo',32530,32533,3,1),(1430,'Bogarra',486,495,3,4),(1431,'Bohonal de Ibor',9256,9259,3,1),(1432,'Bohoyo',3516,3521,3,2),(1433,'Boimorto',20232,20239,3,3),(1434,'Boiro',20240,20255,3,7),(1435,'Bolaños de Calatrava',12038,12041,3,1),(1436,'Bolaños de Campos',40768,40771,3,1),(1437,'Bolbaite',39724,39727,3,1),(1438,'Bollullos de la Mitación',35124,35127,3,1),(1439,'Bollullos Par del Condado',17902,17907,3,2),(1440,'Boltaña',18570,18581,3,5),(1441,'Bolulla',1134,1137,3,1),(1442,'Bolvir',14082,14085,3,1),(1443,'Bonansa',18582,18585,3,1),(1444,'Boñar',21962,21981,3,9),(1445,'Bonares',17908,17911,3,1),(1446,'Bonastre',36672,36675,3,1),(1447,'Bonete',496,499,3,1),(1448,'Boniches',13062,13065,3,1),(1449,'Bonilla de la Sierra',3522,3527,3,2),(1450,'Bonrepós y Mirambell',39728,39731,3,1),(1451,'Boqueixón',20256,20263,3,3),(1452,'Boquiñeni',43740,43743,3,1),(1453,'Borau',18586,18589,3,1),(1454,'Bordalba',43744,43747,3,1),(1455,'Bordils',14086,14089,3,1),(1456,'Bordón',37632,37635,3,1),(1457,'Borja',43748,43751,3,1),(1458,'Borjabad',35804,35807,3,1),(1459,'Bormujos',35128,35131,3,1),(1460,'Bornos',10252,10257,3,2),(1461,'Borobia',35808,35811,3,1),(1462,'Borox',38594,38597,3,1),(1463,'Borrassà',14090,14095,3,2),(1464,'Borredà',5986,5989,3,1),(1465,'Borrenes',21982,21987,3,2),(1466,'Borriana/Burriana',11408,11411,3,1),(1467,'Borriol',11412,11415,3,1),(1468,'Bossòst',23662,23665,3,1),(1469,'Bot',36676,36679,3,1),(1470,'Botarell',36680,36683,3,1),(1471,'Botija',9260,9263,3,1),(1472,'Botorrita',43752,43755,3,1),(1473,'Bóveda',24940,24953,3,6),(1474,'Bóveda del Río Almar',32534,32537,3,1),(1475,'Bovera',23666,23669,3,1),(1476,'Bozoó',7498,7503,3,2),(1477,'Brabos',3528,3531,3,1),(1478,'Bràfim',36684,36687,3,1),(1479,'Brahojos de Medina',40772,40775,3,1),(1480,'Brañosera',30560,30563,3,1),(1481,'Braojos',25976,25979,3,1),(1482,'Brazacorta',7504,7507,3,1),(1483,'Brazatortas',12042,12047,3,2),(1484,'Brazuelo',21988,21997,3,4),(1485,'Brea de Aragón',43756,43759,3,1),(1486,'Brea de Tajo',25980,25983,3,1),(1487,'Breda',14096,14099,3,1),(1488,'Brenes',35132,35135,3,1),(1489,'Bretó',42330,42333,3,1),(1490,'Bretocino',42334,42337,3,1),(1491,'Brieva',34208,34211,3,1),(1492,'Brieva de Cameros',21230,21233,3,1),(1493,'Brihuega',16198,16213,3,7),(1494,'Brime de Sog',42338,42341,3,1),(1495,'Brime de Urz',42342,42345,3,1),(1496,'Briñas',21234,21237,3,1),(1497,'Brincones',32538,32541,3,1),(1498,'Brión',20264,20271,3,3),(1499,'Briones',21238,21241,3,1),(1500,'Briviesca',7508,7519,3,5),(1501,'Bronchales',37636,37639,3,1),(1502,'Broto',18590,18601,3,5),(1503,'Brozas',9264,9267,3,1),(1504,'Brunete',25984,25987,3,1),(1505,'Brunyola',14100,14103,3,1),(1506,'Buberos',35812,35815,3,1),(1507,'Bubierca',43760,43763,3,1),(1508,'Bubión',15252,15255,3,1),(1509,'Buciegas',13066,13069,3,1),(1510,'Budia',16214,16219,3,2),(1511,'Bueña',37640,37643,3,1),(1512,'Buenache de Alarcón',13070,13073,3,1),(1513,'Buenache de la Sierra',13074,13077,3,1),(1514,'Buenamadre',32542,32547,3,2),(1515,'Buenaventura',38598,38601,3,1),(1516,'Buenavista',32548,32551,3,1),(1517,'Buenavista de Valdavia',30564,30569,3,2),(1518,'Buendía',13078,13081,3,1),(1519,'Bueu',31514,31523,3,4),(1520,'Bufali',39732,39735,3,1),(1521,'Bugarra',39736,39739,3,1),(1522,'Bugedo',7520,7523,3,1),(1523,'Búger',5386,5389,3,1),(1524,'Buitrago',35816,35819,3,1),(1525,'Buitrago del Lozoya',25988,25991,3,1),(1526,'Bujalance',12478,12485,3,3),(1527,'Bujalaro',16220,16223,3,1),(1528,'Bujaraloz',43764,43767,3,1),(1529,'Bularros',3532,3537,3,2),(1530,'Bulbuente',43768,43771,3,1),(1531,'Bullas',27584,27589,3,2),(1532,'Buniel',7524,7527,3,1),(1533,'Buñol',39740,39743,3,1),(1534,'Buñuel',28400,28403,3,1),(1535,'Bunyola',5390,5399,3,4),(1536,'Burbáguena',37644,37647,3,1),(1537,'Burela',24954,24957,3,1),(1538,'Bureta',43772,43775,3,1),(1539,'Burganes de Valverde',42346,42349,3,1),(1540,'Burgo de Osma-Ciudad de Osma',35820,35841,3,10),(1541,'Burgohondo',3538,3543,3,2),(1542,'Burgos',7528,7549,3,10),(1543,'Burgui/Burgi',28404,28407,3,1),(1544,'Burguillos',35136,35141,3,2),(1545,'Burguillos de Toledo',38602,38605,3,1),(1546,'Burguillos del Cerro',4630,4633,3,1),(1547,'Burjasot',39744,39747,3,1),(1548,'Burlada/Burlata',28408,28411,3,1),(1549,'Burón',21998,22005,3,3),(1550,'Burujón',38606,38609,3,1),(1551,'Busot',1138,1141,3,1),(1552,'Busquístar',15256,15259,3,1),(1553,'Bustares',16224,16227,3,1),(1554,'Bustarviejo',25992,25995,3,1),(1555,'Bustillo de Chaves',40776,40779,3,1),(1556,'Bustillo de la Vega',30570,30573,3,1),(1557,'Bustillo del Oro',42350,42353,3,1),(1558,'Bustillo del Páramo',22006,22013,3,3),(1559,'Bustillo del Páramo de Carrión',30574,30577,3,1),(1560,'Busto de Bureba',7550,7553,3,1),(1561,'Busturia',41832,41835,3,1),(1562,'Cabacés',36688,36691,3,1),(1563,'Caballar',34212,34215,3,1),(1564,'Cabana de Bergantiños',20272,20283,3,5),(1565,'Cabanabona',23670,23673,3,1),(1566,'Cabanas',20284,20293,3,4),(1567,'Cabañas de Ebro',43776,43779,3,1),(1568,'Cabañas de la Sagra',38610,38613,3,1),(1569,'Cabañas de Polendos',34216,34219,3,1),(1570,'Cabañas de Sayago',42354,42357,3,1),(1571,'Cabañas de Yepes',38614,38619,3,2),(1572,'Cabañas del Castillo',9268,9273,3,2),(1573,'Cabañas Raras',22014,22019,3,2),(1574,'Cabanelles',14104,14109,3,2),(1575,'Cabanes',11416,11421,3,2),(1576,'Cabanes',14110,14111,3,0),(1577,'Cabañes de Esgueva',7554,7557,3,1),(1578,'Cabanillas',28412,28415,3,1),(1579,'Cabanillas de la Sierra',25996,25999,3,1),(1580,'Cabanillas del Campo',16228,16231,3,1),(1581,'Cabeza del Buey',4634,4639,3,2),(1582,'Cabeza del Caballo',32552,32555,3,1),(1583,'Cabeza la Vaca',4640,4643,3,1),(1584,'Cabezabellosa',9274,9277,3,1),(1585,'Cabezabellosa de la Calzada',32556,32559,3,1),(1586,'Cabezamesada',38620,38623,3,1),(1587,'Cabezarados',12048,12051,3,1),(1588,'Cabezarrubias del Puerto',12052,12055,3,1),(1589,'Cabezas de Alambre',3544,3547,3,1),(1590,'Cabezas del Pozo',3548,3551,3,1),(1591,'Cabezas del Villar',3552,3555,3,1),(1592,'Cabezas Rubias',17912,17915,3,1),(1593,'Cabezón de Cameros',21242,21245,3,1),(1594,'Cabezón de la Sal',10582,10595,3,6),(1595,'Cabezón de la Sierra',7558,7561,3,1),(1596,'Cabezón de Liébana',10596,10603,3,3),(1597,'Cabezón de Pisuerga',40780,40783,3,1),(1598,'Cabezón de Valderaduey',40784,40787,3,1),(1599,'Cabezuela',34220,34223,3,1),(1600,'Cabezuela del Valle',9278,9281,3,1),(1601,'Cabizuela',3556,3559,3,1),(1602,'Cabó',23674,23677,3,1),(1603,'Cabolafuente',43780,43783,3,1),(1604,'Cabra',12486,12495,3,4),(1605,'Cabra de Mora',37648,37651,3,1),(1606,'Cabra del Camp',36692,36695,3,1),(1607,'Cabra del Santo Cristo',19594,19601,3,3),(1608,'Cabrales',2452,2457,3,2),(1609,'Cabranes',2458,2463,3,2),(1610,'Cabredo',28416,28419,3,1),(1611,'Cabrejas del Campo',35842,35845,3,1),(1612,'Cabrejas del Pinar',35846,35851,3,2),(1613,'Cabrera d\'Anoia',5990,5993,3,1),(1614,'Cabrera de Mar',5994,5997,3,1),(1615,'Cabrerizos',32560,32565,3,2),(1616,'Cabrero',9282,9285,3,1),(1617,'Cabreros del Monte',40788,40791,3,1),(1618,'Cabreros del Río',22020,22023,3,1),(1619,'Cabrillanes',22024,22031,3,3),(1620,'Cabrillas',32566,32569,3,1),(1621,'Cabrils',5998,6003,3,2),(1622,'Cabuérniga',10604,10613,3,4),(1623,'Cacabelos',22032,22039,3,3),(1624,'Cáceres',9286,9307,3,10),(1625,'Cachorrilla',9308,9311,3,1),(1626,'Cacín',15260,15263,3,1),(1627,'Cadalso',9312,9315,3,1),(1628,'Cadalso de los Vidrios',26000,26005,3,2),(1629,'Cadaqués',14112,14115,3,1),(1630,'Cádiar',15264,15269,3,2),(1631,'Cádiz',10258,10285,3,13),(1632,'Cadreita',28420,28423,3,1),(1633,'Cadrete',43784,43789,3,2),(1634,'Cájar',15270,15273,3,1),(1635,'Cala',17916,17919,3,1),(1636,'Calabazas de Fuentidueña',34224,34227,3,1),(1637,'Calaceite',37652,37655,3,1),(1638,'Calaf',6004,6007,3,1),(1639,'Calafell',36696,36703,3,3),(1640,'Calahorra',21246,21249,3,1),(1641,'Calahorra de Boedo',30578,30581,3,1),(1642,'Calamocha',37656,37675,3,9),(1643,'Calamonte',4644,4647,3,1),(1644,'Calañas',17920,17929,3,4),(1645,'Calanda',37676,37679,3,1),(1646,'Calasparra',27590,27593,3,1),(1647,'Calatañazor',35852,35855,3,1),(1648,'Calatayud',43790,43799,3,4),(1649,'Calatorao',43800,43803,3,1),(1650,'Calcena',43804,43807,3,1),(1651,'Caldas de Reis',31524,31539,3,7),(1652,'Caldearenas',18602,18609,3,3),(1653,'Calders',6008,6011,3,1),(1654,'Caldes d\'Estrac',6012,6015,3,1),(1655,'Caldes de Malavella',14116,14121,3,2),(1656,'Caldes de Montbui',6016,6019,3,1),(1657,'Calella',6020,6023,3,1),(1658,'Calera de León',4648,4651,3,1),(1659,'Calera y Chozas',38624,38629,3,2),(1660,'Caleruega',7562,7565,3,1),(1661,'Caleruela',38630,38633,3,1),(1662,'Calicasas',15274,15277,3,1),(1663,'Càlig',11422,11425,3,1),(1664,'Calldetenes',6024,6027,3,1),(1665,'Calles',39748,39751,3,1),(1666,'Callosa d\'en Sarrià',1142,1145,3,1),(1667,'Callosa de Segura',1146,1151,3,2),(1668,'Callús',6028,6031,3,1),(1669,'Calmarza',43808,43811,3,1),(1670,'Calomarde',37680,37683,3,1),(1671,'Calonge',14122,14127,3,2),(1672,'Calonge de Segarra',6032,6035,3,1),(1673,'Calp',1152,1155,3,1),(1674,'Caltojar',35856,35859,3,1),(1675,'Calvarrasa de Abajo',32570,32573,3,1),(1676,'Calvarrasa de Arriba',32574,32577,3,1),(1677,'Calvià',5400,5413,3,6),(1678,'Calvos de Randín',29614,29625,3,5),(1679,'Calzada de Calatrava',12056,12063,3,3),(1680,'Calzada de Don Diego',32578,32583,3,2),(1681,'Calzada de los Molinos',30582,30585,3,1),(1682,'Calzada de Oropesa',38634,38637,3,1),(1683,'Calzada de Valdunciel',32584,32587,3,1),(1684,'Calzada del Coto',22040,22043,3,1),(1685,'Calzadilla',9316,9319,3,1),(1686,'Calzadilla de los Barros',4652,4655,3,1),(1687,'Calzadilla de Tera',42358,42361,3,1),(1688,'Camaleño',10614,10625,3,5),(1689,'Camañas',37684,37687,3,1),(1690,'Camarasa',23678,23687,3,4),(1691,'Camarena',38638,38641,3,1),(1692,'Camarena de la Sierra',37688,37693,3,2),(1693,'Camarenilla',38642,38645,3,1),(1694,'Camargo',10626,10633,3,3),(1695,'Camarillas',37694,37697,3,1),(1696,'Camariñas',20294,20301,3,3),(1697,'Camarles',36704,36707,3,1),(1698,'Camarma de Esteruelas',26006,26009,3,1),(1699,'Camarzana de Tera',42362,42369,3,3),(1700,'Camas',35142,35147,3,2),(1701,'Cambados',31540,31551,3,5),(1702,'Cambil',19602,19607,3,2),(1703,'Cambre',20302,20317,3,7),(1704,'Cambrils',36708,36711,3,1),(1705,'Caminomorisco',9320,9331,3,5),(1706,'Caminreal',37698,37703,3,2),(1707,'Camós',14128,14133,3,2),(1708,'Campanario',4656,4661,3,2),(1709,'Campanet',5414,5417,3,1),(1710,'Campaspero',40792,40795,3,1),(1711,'Campazas',22044,22047,3,1),(1712,'Campdevànol',14134,14139,3,2),(1713,'Campelles',14140,14143,3,1),(1714,'Campezo/Kanpezu',114,121,3,3),(1715,'Campillo de Altobuey',13082,13085,3,1),(1716,'Campillo de Aragón',43812,43815,3,1),(1717,'Campillo de Aranda',7566,7569,3,1),(1718,'Campillo de Arenas',19608,19611,3,1),(1719,'Campillo de Azaba',32588,32591,3,1),(1720,'Campillo de Deleitosa',9332,9335,3,1),(1721,'Campillo de Dueñas',16232,16235,3,1),(1722,'Campillo de Llerena',4662,4665,3,1),(1723,'Campillo de Ranas',16236,16241,3,2),(1724,'Campillos',27072,27075,3,1),(1725,'Campillos-Paravientos',13086,13091,3,2),(1726,'Campillos-Sierra',13092,13095,3,1),(1727,'Campins',6036,6041,3,2),(1728,'Campisábalos',16242,16245,3,1),(1729,'Campllong',14144,14147,3,1),(1730,'Campo',18610,18615,3,2),(1731,'Campo de Criptana',12064,12067,3,1),(1732,'Campo de Mirra/el Camp de Mirra',1156,1159,3,1),(1733,'Campo de San Pedro',34228,34235,3,3),(1734,'Campo de Villavidel',22048,22051,3,1),(1735,'Campo Lameiro',31552,31561,3,4),(1736,'Campo Lugar',9336,9339,3,1),(1737,'Campo Real',26010,26013,3,1),(1738,'Campofrío',17930,17933,3,1),(1739,'Campolara',7570,7573,3,1),(1740,'Camponaraya',22052,22055,3,1),(1741,'Campoo de Enmedio',10634,10645,3,5),(1742,'Campoo de Yuso',10646,10657,3,5),(1743,'Camporredondo',40796,40799,3,1),(1744,'Camporrélls',18616,18619,3,1),(1745,'Camporrobles',39752,39755,3,1),(1746,'Campos',5418,5425,3,3),(1747,'Campos del Paraíso',13096,13101,3,2),(1748,'Campos del Río',27594,27599,3,2),(1749,'Campotéjar',15278,15281,3,1),(1750,'Camprodon',14148,14151,3,1),(1751,'Camprovín',21250,21255,3,2),(1752,'Camuñas',38646,38649,3,1),(1753,'Cañada',1160,1163,3,1),(1754,'Cañada de Benatanduz',37704,37707,3,1),(1755,'Cañada de Calatrava',12068,12071,3,1),(1756,'Cañada del Hoyo',13102,13105,3,1),(1757,'Cañada Juncosa',13106,13109,3,1),(1758,'Cañada Rosal',35148,35151,3,1),(1759,'Cañada Vellida',37708,37711,3,1),(1760,'Canal de Berdún',18620,18629,3,4),(1761,'Canalejas de Peñafiel',40800,40803,3,1),(1762,'Canalejas del Arroyo',13110,13113,3,1),(1763,'Canales',3560,3563,3,1),(1764,'Canales de la Sierra',21256,21259,3,1),(1765,'Canals',39756,39763,3,3),(1766,'Cañamaque',35860,35863,3,1),(1767,'Cañamares',13114,13117,3,1),(1768,'Cañamero',9340,9343,3,1),(1769,'Cáñar',15282,15285,3,1),(1770,'Cañas',21260,21263,3,1),(1771,'Cañaveral',9344,9351,3,3),(1772,'Cañaveral de León',17934,17937,3,1),(1773,'Cañaveras',13118,13121,3,1),(1774,'Cañaveruelas',13122,13125,3,1),(1775,'Candamo',2464,2473,3,4),(1776,'Candasnos',18630,18633,3,1),(1777,'Candelario',32592,32595,3,1),(1778,'Candeleda',3564,3571,3,3),(1779,'Candilichera',35864,35867,3,1),(1780,'Candín',22056,22061,3,2),(1781,'Canejan',23688,23691,3,1),(1782,'Canena',19612,19615,3,1),(1783,'Canencia',26014,26017,3,1),(1784,'Canet d\'Adri',14152,14155,3,1),(1785,'Canet de Berenguer',39764,39767,3,1),(1786,'Canet de Mar',6042,6045,3,1),(1787,'Canet lo Roig',11426,11429,3,1),(1788,'Cañete',13126,13129,3,1),(1789,'Cañete de las Torres',12496,12499,3,1),(1790,'Cañete la Real',27076,27079,3,1),(1791,'Canfranc',18634,18639,3,2),(1792,'Cangas',31562,31575,3,6),(1793,'Cangas de Onís',2474,2485,3,5),(1794,'Cangas del Narcea',2486,2505,3,9),(1795,'Canicosa de la Sierra',7574,7577,3,1),(1796,'Caniles',15286,15291,3,2),(1797,'Canillas de Abajo',32596,32603,3,3),(1798,'Canillas de Aceituno',27080,27085,3,2),(1799,'Canillas de Albaida',27086,27089,3,1),(1800,'Canillas de Esgueva',40804,40807,3,1),(1801,'Canillas de Río Tuerto',21264,21267,3,1),(1802,'Cañizal',42370,42373,3,1),(1803,'Cañizar',16246,16249,3,1),(1804,'Cañizar del Olivar',37712,37715,3,1),(1805,'Cañizares',13130,13137,3,3),(1806,'Cañizo',42374,42377,3,1),(1807,'Canjáyar',1854,1857,3,1),(1808,'Canovelles',6046,6049,3,1),(1809,'Cànoves i Samalús',6050,6057,3,3),(1810,'Canredondo',16250,16253,3,1),(1811,'Cantabrana',7578,7581,3,1),(1812,'Cantagallo',32604,32607,3,1),(1813,'Cantalapiedra',32608,32611,3,1),(1814,'Cantalejo',34236,34243,3,3),(1815,'Cantallops',14156,14159,3,1),(1816,'Cantalojas',16254,16259,3,2),(1817,'Cantalpino',32612,32615,3,1),(1818,'Cantaracillo',32616,32619,3,1),(1819,'Cantavieja',37716,37719,3,1),(1820,'Cantillana',35152,35155,3,1),(1821,'Cantimpalos',34244,34247,3,1),(1822,'Cantiveros',3572,3575,3,1),(1823,'Cantoria',1858,1865,3,3),(1824,'Canyelles',6058,6061,3,1),(1825,'Capafonts',36712,36715,3,1),(1826,'Caparroso',28424,28429,3,2),(1827,'Capçanes',36716,36719,3,1),(1828,'Capdepera',5426,5433,3,3),(1829,'Capdesaso',18640,18643,3,1),(1830,'Capella',18644,18649,3,2),(1831,'Capellades',6062,6065,3,1),(1832,'Capileira',15292,15295,3,1),(1833,'Capilla',4666,4669,3,1),(1834,'Capillas',30586,30589,3,1),(1835,'Capmany',14160,14163,3,1),(1836,'Capolat',6066,6069,3,1),(1837,'Carabaña',26018,26021,3,1),(1838,'Carabantes',35868,35871,3,1),(1839,'Carabias',34248,34251,3,1),(1840,'Caracena',35872,35875,3,1),(1841,'Caracuel de Calatrava',12072,12075,3,1),(1842,'Carataunas',15296,15299,3,1),(1843,'Caravaca de la Cruz',27600,27613,3,6),(1844,'Caravia',2506,2511,3,2),(1845,'Carazo',7582,7585,3,1),(1846,'Carbajales de Alba',42378,42381,3,1),(1847,'Carbajo',9352,9355,3,1),(1848,'Carbajosa de la Sagrada',32620,32629,3,4),(1849,'Carballeda de Avia',29626,29637,3,5),(1850,'Carballeda de Valdeorras',29638,29655,3,8),(1851,'Carballedo',24958,24975,3,8),(1852,'Carballo',20318,20333,3,7),(1853,'Carbellino',42382,42385,3,1),(1854,'Carboneras',1866,1871,3,2),(1855,'Carboneras de Guadazaón',13138,13141,3,1),(1856,'Carbonero el Mayor',34252,34255,3,1),(1857,'Carboneros',19616,19619,3,1),(1858,'Carcaboso',9356,9361,3,2),(1859,'Carcabuey',12500,12507,3,3),(1860,'Carcagente',39768,39775,3,3),(1861,'Cárcar',28430,28433,3,1),(1862,'Carcastillo',28434,28439,3,2),(1863,'Carcedo de Bureba',7586,7591,3,2),(1864,'Carcedo de Burgos',7592,7597,3,2),(1865,'Carcelén',500,503,3,1),(1866,'Cárcer',39776,39779,3,1),(1867,'Cárcheles',19620,19625,3,2),(1868,'Cardedeu',6070,6073,3,1),(1869,'Cardeña',12508,12519,3,5),(1870,'Cardeñadijo',7598,7601,3,1),(1871,'Cardeñajimeno',7602,7607,3,2),(1872,'Cárdenas',21268,21271,3,1),(1873,'Cardenete',13142,13145,3,1),(1874,'Cardeñosa',3576,3579,3,1),(1875,'Cardeñosa de Volpejera',30590,30593,3,1),(1876,'Cardeñuela Riopico',7608,7611,3,1),(1877,'Cardiel de los Montes',38650,38653,3,1),(1878,'Cardona',6074,6077,3,1),(1879,'Carenas',43816,43819,3,1),(1880,'Cariñena',43820,43823,3,1),(1881,'Cariño',20334,20343,3,4),(1882,'Carlet',39780,39783,3,1),(1883,'Carme',6078,6081,3,1),(1884,'Carmena',38654,38657,3,1),(1885,'Cármenes',22062,22067,3,2),(1886,'Carmona',35156,35161,3,2),(1887,'Carmonita',4670,4675,3,2),(1888,'Carnota',20344,20353,3,4),(1889,'Carpio',40808,40811,3,1),(1890,'Carpio de Azaba',32630,32633,3,1),(1891,'Carracedelo',22068,22079,3,5),(1892,'Carral',20354,20363,3,4),(1893,'Carranque',38658,38661,3,1),(1894,'Carrascal de Barregas',32634,32647,3,6),(1895,'Carrascal del Obispo',32648,32653,3,2),(1896,'Carrascal del Río',34256,34259,3,1),(1897,'Carrascalejo',9362,9365,3,1),(1898,'Carrascosa',13146,13151,3,2),(1899,'Carrascosa de Abajo',35876,35879,3,1),(1900,'Carrascosa de Haro',13152,13155,3,1),(1901,'Carrascosa de la Sierra',35880,35885,3,2),(1902,'Carratraca',27090,27093,3,1),(1903,'Carreño',2512,2525,3,6),(1904,'Carrias',7612,7615,3,1),(1905,'Carriches',38662,38665,3,1),(1906,'Carrícola',39784,39787,3,1),(1907,'Carrión de Calatrava',12076,12079,3,1),(1908,'Carrión de los Céspedes',35162,35165,3,1),(1909,'Carrión de los Condes',30594,30599,3,2),(1910,'Carrizo',22080,22085,3,2),(1911,'Carrizosa',12080,12083,3,1),(1912,'Carrocera',22086,22089,3,1),(1913,'Cartagena',27614,27695,3,40),(1914,'Cartajima',27094,27097,3,1),(1915,'Cártama',27098,27109,3,5),(1916,'Cartaya',17938,17945,3,3),(1917,'Cartelle',29656,29671,3,7),(1918,'Cartes',10658,10663,3,2),(1919,'Carucedo',22090,22097,3,3),(1920,'Casa de Uceda',16260,16263,3,1),(1921,'Casabermeja',27110,27113,3,1),(1922,'Casafranca',32654,32657,3,1),(1923,'Casalarreina',21272,21275,3,1),(1924,'Casar de Cáceres',9366,9371,3,2),(1925,'Casar de Palomero',9372,9379,3,3),(1926,'Casarabonela',27114,27117,3,1),(1927,'Casarejos',35886,35889,3,1),(1928,'Casares',27118,27123,3,2),(1929,'Casares de las Hurdes',9380,9383,3,1),(1930,'Casariche',35166,35169,3,1),(1931,'Casarrubios del Monte',38666,38669,3,1),(1932,'Casarrubuelos',26022,26025,3,1),(1933,'Casas Altas',39788,39791,3,1),(1934,'Casas Bajas',39792,39795,3,1),(1935,'Casas de Benítez',13156,13161,3,2),(1936,'Casas de Don Antonio',9384,9387,3,1),(1937,'Casas de Don Gómez',9388,9393,3,2),(1938,'Casas de Don Pedro',4676,4679,3,1),(1939,'Casas de Fernando Alonso',13162,13165,3,1),(1940,'Casas de Garcimolina',13166,13169,3,1),(1941,'Casas de Guijarro',13170,13173,3,1),(1942,'Casas de Haro',13174,13177,3,1),(1943,'Casas de Juan Núñez',504,507,3,1),(1944,'Casas de Lázaro',508,511,3,1),(1945,'Casas de los Pinos',13178,13181,3,1),(1946,'Casas de Millán',9394,9397,3,1),(1947,'Casas de Miravete',9398,9401,3,1),(1948,'Casas de Reina',4680,4683,3,1),(1949,'Casas de San Galindo',16264,16267,3,1),(1950,'Casas de Ves',512,515,3,1),(1951,'Casas del Castañar',9402,9405,3,1),(1952,'Casas del Monte',9406,9409,3,1),(1953,'Casas del Puerto',3580,3583,3,1),(1954,'Casas-Ibáñez',516,519,3,1),(1955,'Casasbuenas',38670,38673,3,1),(1956,'Casaseca de Campeán',42386,42389,3,1),(1957,'Casaseca de las Chanas',42390,42393,3,1),(1958,'Casasimarro',13182,13185,3,1),(1959,'Casasola',3584,3587,3,1),(1960,'Casasola de Arión',40812,40815,3,1),(1961,'Casatejada',9410,9413,3,1),(1962,'Casavieja',3588,3591,3,1),(1963,'Casbas de Huesca',18650,18655,3,2),(1964,'Cascajares de Bureba',7616,7619,3,1),(1965,'Cascajares de la Sierra',7620,7623,3,1),(1966,'Cascante',28440,28443,3,1),(1967,'Cascante del Río',37720,37723,3,1),(1968,'Cáseda',28444,28449,3,2),(1969,'Caseres',36720,36723,3,1),(1970,'Casillas',3592,3597,3,2),(1971,'Casillas de Coria',9414,9417,3,1),(1972,'Casillas de Flores',32658,32661,3,1),(1973,'Casinos',39796,39801,3,2),(1974,'Casla',34260,34263,3,1),(1975,'Caso',2526,2533,3,3),(1976,'Caspe',43824,43829,3,2),(1977,'Caspueñas',16268,16271,3,1),(1978,'Cassà de la Selva',14164,14167,3,1),(1979,'Casserres',6082,6085,3,1),(1980,'Castalla',1164,1167,3,1),(1981,'Castañar de Ibor',9418,9421,3,1),(1982,'Castañares de Rioja',21276,21279,3,1),(1983,'Castañeda',10664,10669,3,2),(1984,'Castaño del Robledo',17946,17949,3,1),(1985,'Cástaras',15300,15303,3,1),(1986,'Castejón',13186,13189,3,1),(1987,'Castejón',28450,28451,3,0),(1988,'Castejón de Alarba',43830,43833,3,1),(1989,'Castejón de Henares',16272,16275,3,1),(1990,'Castejón de las Armas',43834,43837,3,1),(1991,'Castejón de Monegros',18656,18659,3,1),(1992,'Castejón de Sos',18660,18667,3,3),(1993,'Castejón de Tornos',37724,37727,3,1),(1994,'Castejón de Valdejasa',43838,43841,3,1),(1995,'Castejón del Puente',18668,18671,3,1),(1996,'Castel de Cabra',37728,37731,3,1),(1997,'Castelflorite',18672,18675,3,1),(1998,'Castell de Cabres',11430,11433,3,1),(1999,'Castell de Castells',1168,1171,3,1),(2000,'Castell de l\'Areny',6086,6089,3,1),(2001,'Castell de Mur',23692,23699,3,3),(2002,'Castell-Platja d\'Aro',14168,14175,3,3),(2003,'Castellanos de Castro',7624,7627,3,1),(2004,'Castellanos de Moriscos',32662,32665,3,1),(2005,'Castellanos de Villiquera',32666,32673,3,3),(2006,'Castellanos de Zapardiel',3598,3601,3,1),(2007,'Castellar',19626,19629,3,1),(2008,'Castellar de la Frontera',10286,10289,3,1),(2009,'Castellar de la Muela',16276,16279,3,1),(2010,'Castellar de la Ribera',23700,23703,3,1),(2011,'Castellar de n\'Hug',6090,6093,3,1),(2012,'Castellar de Santiago',12084,12087,3,1),(2013,'Castellar del Riu',6094,6097,3,1),(2014,'Castellar del Vallès',6098,6101,3,1),(2015,'Castellbell i el Vilar',6102,6105,3,1),(2016,'Castellbisbal',6106,6109,3,1),(2017,'Castellcir',6110,6113,3,1),(2018,'Castelldans',23704,23707,3,1),(2019,'Castelldefels',6114,6117,3,1),(2020,'Castellet i la Gornal',6118,6123,3,2),(2021,'Castellfollit de la Roca',14176,14179,3,1),(2022,'Castellfollit de Riubregós',6124,6127,3,1),(2023,'Castellfollit del Boix',6128,6131,3,1),(2024,'Castellfort',11434,11437,3,1),(2025,'Castellgalí',6132,6135,3,1),(2026,'Castellnou de Bages',6136,6139,3,1),(2027,'Castellnou de Seana',23708,23711,3,1),(2028,'Castellnovo',11438,11441,3,1),(2029,'Castelló d\'Empúries',14180,14185,3,2),(2030,'Castelló de Farfanya',23712,23715,3,1),(2031,'Castellolí',6140,6143,3,1),(2032,'Castellón de la Plana/Castelló de la Plana',11442,11459,3,8),(2033,'Castellón de Rugat',39802,39805,3,1),(2034,'Castellonet',39806,39809,3,1),(2035,'Castellote',37732,37741,3,4),(2036,'Castellserà',23716,23719,3,1),(2037,'Castellterçol',6144,6147,3,1),(2038,'Castellvell del Camp',36724,36727,3,1),(2039,'Castellví de la Marca',6148,6151,3,1),(2040,'Castellví de Rosanes',6152,6155,3,1),(2041,'Castelnou',37742,37745,3,1),(2042,'Castelserás',37746,37749,3,1),(2043,'Castielfabib',39810,39813,3,1),(2044,'Castiello de Jaca',18676,18681,3,2),(2045,'Castigaleu',18682,18687,3,2),(2046,'Castil de Peones',7628,7631,3,1),(2047,'Castil de Vela',30600,30603,3,1),(2048,'Castilblanco',4684,4687,3,1),(2049,'Castilblanco de los Arroyos',35170,35173,3,1),(2050,'Castildelgado',7632,7635,3,1),(2051,'Castilfalé',22098,22101,3,1),(2052,'Castilforte',16280,16283,3,1),(2053,'Castilfrío de la Sierra',35890,35893,3,1),(2054,'Castiliscar',43842,43845,3,1),(2055,'Castillazuelo',18688,18691,3,1),(2056,'Castilleja de Guzmán',35174,35177,3,1),(2057,'Castilleja de la Cuesta',35178,35181,3,1),(2058,'Castilleja del Campo',35182,35185,3,1),(2059,'Castilléjar',15304,15307,3,1),(2060,'Castillejo de Iniesta',13190,13193,3,1),(2061,'Castillejo de Martín Viejo',32674,32679,3,2),(2062,'Castillejo de Mesleón',34264,34267,3,1),(2063,'Castillejo de Robledo',35894,35897,3,1),(2064,'Castillejo-Sierra',13194,13197,3,1),(2065,'Castillo de Bayuela',38674,38677,3,1),(2066,'Castillo de Garcimuñoz',13198,13201,3,1),(2067,'Castillo de Locubín',19630,19635,3,2),(2068,'Castillo de Villamalefa',11460,11463,3,1),(2069,'Castillo-Albaráñez',13202,13205,3,1),(2070,'Castillonroy',18692,18697,3,2),(2071,'Castillonuevo',28452,28455,3,1),(2072,'Castilnuevo',16284,16287,3,1),(2073,'Castilruiz',35898,35903,3,2),(2074,'Castraz',32680,32683,3,1),(2075,'Castrejón de la Peña',30604,30611,3,3),(2076,'Castrejón de Trabancos',40816,40819,3,1),(2077,'Castrelo de Miño',29672,29675,3,1),(2078,'Castrelo do Val',29676,29687,3,5),(2079,'Castril',15308,15311,3,1),(2080,'Castrillo de Cabrera',22102,22107,3,2),(2081,'Castrillo de Don Juan',30612,30615,3,1),(2082,'Castrillo de Duero',40820,40823,3,1),(2083,'Castrillo de la Guareña',42394,42397,3,1),(2084,'Castrillo de la Reina',7636,7639,3,1),(2085,'Castrillo de la Valduerna',22108,22111,3,1),(2086,'Castrillo de la Vega',7640,7643,3,1),(2087,'Castrillo de Onielo',30616,30619,3,1),(2088,'Castrillo de Riopisuerga',7644,7647,3,1),(2089,'Castrillo de Villavega',30620,30623,3,1),(2090,'Castrillo del Val',7648,7653,3,2),(2091,'Castrillo Mota de Judíos',7654,7657,3,1),(2092,'Castrillo-Tejeriego',40824,40827,3,1),(2093,'Castrillón',2534,2553,3,9),(2094,'Castro Caldelas',29688,29703,3,7),(2095,'Castro de Filabres',1872,1875,3,1),(2096,'Castro de Fuentidueña',34268,34271,3,1),(2097,'Castro de Rei',24976,25001,3,12),(2098,'Castro del Río',12520,12527,3,3),(2099,'Castro-Urdiales',10670,10685,3,7),(2100,'Castrobol',40828,40831,3,1),(2101,'Castrocalbón',22112,22115,3,1),(2102,'Castrocontrigo',22116,22123,3,3),(2103,'Castrodeza',40832,40835,3,1),(2104,'Castrogonzalo',42398,42401,3,1),(2105,'Castrojeriz',7658,7665,3,3),(2106,'Castrojimeno',34272,34275,3,1),(2107,'Castromembibre',40836,40839,3,1),(2108,'Castromocho',30624,30627,3,1),(2109,'Castromonte',40840,40843,3,1),(2110,'Castronuevo',42402,42405,3,1),(2111,'Castronuevo de Esgueva',40844,40847,3,1),(2112,'Castronuño',40848,40851,3,1),(2113,'Castropodame',22124,22131,3,3),(2114,'Castropol',2554,2565,3,5),(2115,'Castroponce',40852,40855,3,1),(2116,'Castroserna de Abajo',34276,34279,3,1),(2117,'Castroserracín',34280,34283,3,1),(2118,'Castrotierra de Valmadrigal',22132,22135,3,1),(2119,'Castroverde',25002,25033,3,15),(2120,'Castroverde de Campos',42406,42409,3,1),(2121,'Castroverde de Cerrato',40856,40859,3,1),(2122,'Castroviejo',21280,21283,3,1),(2123,'Castuera',4688,4691,3,1),(2124,'Catadau',39814,39817,3,1),(2125,'Catarroja',39818,39821,3,1),(2126,'Catí',11464,11467,3,1),(2127,'Catoira',31576,31579,3,1),(2128,'Catral',1172,1175,3,1),(2129,'Caudete',520,523,3,1),(2130,'Caudete de las Fuentes',39822,39825,3,1),(2131,'Caudiel',11468,11471,3,1),(2132,'Cava',23720,23723,3,1),(2133,'Cavia',7666,7669,3,1),(2134,'Cayuela',7670,7673,3,1),(2135,'Cazalegas',38678,38681,3,1),(2136,'Cazalilla',19636,19639,3,1),(2137,'Cazalla de la Sierra',35186,35191,3,2),(2138,'Cazorla',19640,19649,3,4),(2139,'Cazurra',42410,42413,3,1),(2140,'Cea',22136,22143,3,3),(2141,'Cebanico',22144,22151,3,3),(2142,'Cebolla',38682,38685,3,1),(2143,'Cebrecos',7674,7677,3,1),(2144,'Cebreros',3602,3605,3,1),(2145,'Cebrones del Río',22152,22155,3,1),(2146,'Ceclavín',9422,9425,3,1),(2147,'Cedeira',20364,20377,3,6),(2148,'Cedillo',9426,9429,3,1),(2149,'Cedillo de la Torre',34284,34287,3,1),(2150,'Cedillo del Condado',38686,38689,3,1),(2151,'Cedrillas',37750,37753,3,1),(2152,'Cee',20378,20387,3,4),(2153,'Cehegín',27696,27707,3,5),(2154,'Ceinos de Campos',40860,40863,3,1),(2155,'Celada del Camino',7678,7681,3,1),(2156,'Celadas',37754,37757,3,1),(2157,'Celanova',29704,29721,3,8),(2158,'Cella',37758,37761,3,1),(2159,'Cellorigo',21284,21287,3,1),(2160,'Celrà',14186,14189,3,1),(2161,'Cendea de Olza/Oltza Zendea',28456,28463,3,3),(2162,'Cendejas de Enmedio',16288,16291,3,1),(2163,'Cendejas de la Torre',16292,16295,3,1),(2164,'Cenes de la Vega',15312,15315,3,1),(2165,'Cenicero',21288,21291,3,1),(2166,'Cenicientos',26026,26029,3,1),(2167,'Cenizate',524,527,3,1),(2168,'Cenlle',29722,29729,3,3),(2169,'Centelles',6156,6159,3,1),(2170,'Centenera',16296,16299,3,1),(2171,'Centenera de Andaluz',35904,35907,3,1),(2172,'Cepeda',32684,32687,3,1),(2173,'Cepeda la Mora',3606,3609,3,1),(2174,'Cerbón',35908,35913,3,2),(2175,'Cerceda',20388,20397,3,4),(2176,'Cercedilla',26030,26033,3,1),(2177,'Cercs',6160,6163,3,1),(2178,'Cerdá',39826,39829,3,1),(2179,'Cerdanyola del Vallès',6164,6169,3,2),(2180,'Cerdedo-Cotobade',31580,31601,3,10),(2181,'Cerdido',20398,20403,3,2),(2182,'Cereceda de la Sierra',32688,32691,3,1),(2183,'Cerecinos de Campos',42414,42417,3,1),(2184,'Cerecinos del Carrizal',42418,42421,3,1),(2185,'Cerezal de Peñahorcada',32692,32695,3,1),(2186,'Cerezo',9430,9433,3,1),(2187,'Cerezo de Abajo',34288,34291,3,1),(2188,'Cerezo de Arriba',34292,34295,3,1),(2189,'Cerezo de Río Tirón',7682,7685,3,1),(2190,'Cernadilla',42422,42427,3,2),(2191,'Cerralbo',32696,32701,3,2),(2192,'Cerratón de Juarros',7686,7689,3,1),(2193,'Cervantes',25034,25051,3,8),(2194,'Cervatos de la Cueza',30628,30631,3,1),(2195,'Cervelló',6170,6173,3,1),(2196,'Cervera',23724,23733,3,4),(2197,'Cervera de Buitrago',26034,26037,3,1),(2198,'Cervera de la Cañada',43846,43849,3,1),(2199,'Cervera de los Montes',38690,38693,3,1),(2200,'Cervera de Pisuerga',30632,30643,3,5),(2201,'Cervera del Llano',13206,13209,3,1),(2202,'Cervera del Maestre',11472,11475,3,1),(2203,'Cervera del Río Alhama',21292,21301,3,4),(2204,'Cerveruela',43850,43853,3,1),(2205,'Cervià de les Garrigues',23734,23737,3,1),(2206,'Cervià de Ter',14190,14193,3,1),(2207,'Cervillego de la Cruz',40864,40867,3,1),(2208,'Cervo',25052,25061,3,4),(2209,'Cespedosa de Tormes',32702,32705,3,1),(2210,'Cetina',43854,43857,3,1),(2212,'Ceutí',27708,27713,3,2),(2213,'Cevico de la Torre',30644,30647,3,1),(2214,'Cevico Navero',30648,30651,3,1),(2215,'Chagarcía Medianero',32706,32709,3,1),(2216,'Chalamera',18698,18701,3,1),(2217,'Chamartín',3610,3613,3,1),(2218,'Chandrexa de Queixa',29730,29741,3,5),(2219,'Chañe',34296,34299,3,1),(2220,'Chantada',25062,25089,3,13),(2221,'Chapinería',26038,26041,3,1),(2222,'Chauchina',15316,15321,3,2),(2223,'Checa',16300,16303,3,1),(2224,'Cheles',4692,4695,3,1),(2225,'Chella',39830,39833,3,1),(2226,'Chelva',39834,39839,3,2),(2227,'Chequilla',16304,16307,3,1),(2228,'Chera',39840,39843,3,1),(2229,'Chercos',1876,1879,3,1),(2230,'Cheste',39844,39849,3,2),(2231,'Chía',18702,18705,3,1),(2232,'Chiclana de la Frontera',10290,10295,3,2),(2233,'Chiclana de Segura',19650,19657,3,3),(2234,'Chilches/Xilxes',11476,11481,3,2),(2235,'Chillarón de Cuenca',13210,13217,3,3),(2236,'Chillarón del Rey',16308,16311,3,1),(2237,'Chillón',12088,12091,3,1),(2238,'Chilluévar',19658,19663,3,2),(2239,'Chiloeches',16312,16319,3,3),(2240,'Chimeneas',15322,15325,3,1),(2241,'Chimillas',18706,18709,3,1),(2242,'Chinchilla de Monte-Aragón',528,541,3,6),(2243,'Chinchón',26042,26045,3,1),(2244,'Chipiona',10296,10299,3,1),(2245,'Chiprana',43858,43861,3,1),(2246,'Chirivel',1880,1883,3,1),(2247,'Chiva',39850,39853,3,1),(2248,'Chodes',43862,43865,3,1),(2249,'Chodos/Xodos',11482,11485,3,1),(2250,'Chóvar',11486,11489,3,1),(2251,'Chozas de Abajo',22156,22167,3,5),(2252,'Chozas de Canales',38694,38697,3,1),(2253,'Chucena',17950,17953,3,1),(2254,'Chueca',38698,38701,3,1),(2255,'Chulilla',39854,39857,3,1),(2256,'Chumillas',13218,13221,3,1),(2257,'Churriana de la Vega',15326,15329,3,1),(2258,'Ciadoncha',7690,7693,3,1),(2259,'Cidamón',21302,21305,3,1),(2260,'Cidones',35914,35917,3,1),(2261,'Ciempozuelos',26046,26049,3,1),(2262,'Cieza',27714,27719,3,2),(2263,'Cieza',10686,10687,3,0),(2264,'Cifuentes',16320,16331,3,5),(2265,'Cigales',40868,40871,3,1),(2266,'Cigudosa',35918,35921,3,1),(2267,'Ciguñuela',40872,40875,3,1),(2268,'Cihuela',35922,35925,3,1),(2269,'Cihuri',21306,21309,3,1),(2270,'Cijuela',15330,15333,3,1),(2271,'Cillán',3614,3617,3,1),(2272,'Cillaperlata',7694,7697,3,1),(2273,'Cilleros',9434,9437,3,1),(2274,'Cilleros de la Bastida',32710,32713,3,1),(2275,'Cilleruelo de Abajo',7698,7701,3,1),(2276,'Cilleruelo de Arriba',7702,7705,3,1),(2277,'Cilleruelo de San Mamés',34300,34303,3,1),(2278,'Cillorigo de Liébana',10688,10697,3,4),(2279,'Cimanes de la Vega',22168,22171,3,1),(2280,'Cimanes del Tejar',22172,22181,3,4),(2281,'Cimballa',43866,43869,3,1),(2282,'Cinco Olivas',43870,43873,3,1),(2283,'Cincovillas',16332,16335,3,1),(2284,'Cinctorres',11490,11493,3,1),(2285,'Cintruénigo',28464,28467,3,1),(2286,'Cipérez',32714,32719,3,2),(2287,'Cirat',11494,11499,3,2),(2288,'Cirauqui/Zirauki',28468,28471,3,1),(2289,'Ciria',35926,35929,3,1),(2290,'Ciriza/Ziritza',28472,28475,3,1),(2291,'Ciruelas',16336,16339,3,1),(2292,'Ciruelos',38702,38705,3,1),(2293,'Ciruelos de Cervera',7706,7709,3,1),(2294,'Ciruelos del Pinar',16340,16343,3,1),(2295,'Cirueña',21310,21313,3,1),(2296,'Cirujales del Río',35930,35933,3,1),(2297,'Cisla',3618,3621,3,1),(2298,'Cisneros',30652,30655,3,1),(2299,'Cistella',14194,14197,3,1),(2300,'Cistérniga',40876,40879,3,1),(2301,'Cistierna',22182,22193,3,5),(2302,'Ciudad Real',12092,12111,3,9),(2303,'Ciudad Rodrigo',32720,32735,3,7),(2304,'Ciutadella de Menorca',5728,5735,3,3),(2305,'Ciutadilla',23738,23741,3,1),(2306,'Cizur',28476,28481,3,2),(2307,'Clarés de Ribota',43874,43877,3,1),(2308,'Clariana de Cardener',23742,23745,3,1),(2309,'Clavijo',21314,21317,3,1),(2310,'Coaña',2566,2579,3,6),(2311,'Cóbdar',1884,1887,3,1),(2312,'Cobeja',38706,38709,3,1),(2313,'Cobeña',26050,26053,3,1),(2314,'Cobeta',16344,16347,3,1),(2315,'Cobisa',38710,38713,3,1),(2316,'Cobos de Cerrato',30656,30659,3,1),(2317,'Cobos de Fuentidueña',34304,34307,3,1),(2318,'Cobreros',42428,42435,3,3),(2319,'Coca',34308,34313,3,2),(2320,'Coca de Alba',32736,32739,3,1),(2321,'Cocentaina',1176,1181,3,2),(2322,'Codo',43878,43881,3,1),(2323,'Codorniz',34314,34319,3,2),(2324,'Codos',43882,43885,3,1),(2325,'Cofrentes',39858,39861,3,1),(2326,'Cogeces de Íscar',40880,40883,3,1),(2327,'Cogeces del Monte',40884,40887,3,1),(2328,'Cogollor',16348,16351,3,1),(2329,'Cogollos',7710,7713,3,1),(2330,'Cogollos de Guadix',15334,15337,3,1),(2331,'Cogollos de la Vega',15338,15341,3,1),(2332,'Cogolludo',16352,16361,3,4),(2333,'Coín',27124,27127,3,1),(2334,'Coirós',20404,20407,3,1),(2335,'Colera',14198,14201,3,1),(2336,'Coles',29742,29751,3,4),(2337,'Colindres',10698,10701,3,1),(2338,'Coll de Nargó',23746,23753,3,3),(2339,'Collado de Contreras',3622,3625,3,1),(2340,'Collado de la Vera',9438,9443,3,2),(2341,'Collado del Mirón',3626,3629,3,1),(2342,'Collado Hermoso',34320,34323,3,1),(2343,'Collado Mediano',26054,26057,3,1),(2344,'Collado Villalba',26058,26061,3,1),(2345,'Collazos de Boedo',30660,30665,3,2),(2346,'Collbató',6174,6177,3,1),(2347,'Colldejou',36728,36731,3,1),(2348,'Collsuspina',6178,6181,3,1),(2349,'Colmenar',27128,27131,3,1),(2350,'Colmenar de Montemayor',32740,32743,3,1),(2351,'Colmenar de Oreja',26062,26065,3,1),(2352,'Colmenar del Arroyo',26066,26069,3,1),(2353,'Colmenar Viejo',26070,26079,3,4),(2354,'Colmenarejo',26080,26085,3,2),(2355,'Colomera',15342,15345,3,1),(2356,'Colomers',14202,14205,3,1),(2357,'Colunga',2580,2603,3,11),(2358,'Colungo',18710,18713,3,1),(2359,'Comares',27132,27135,3,1),(2360,'Comillas',10702,10707,3,2),(2361,'Cómpeta',27136,27139,3,1),(2362,'Conca de Dalt',23754,23761,3,3),(2363,'Condado de Castilnovo',34324,34327,3,1),(2364,'Condado de Treviño',7714,7729,3,7),(2365,'Condemios de Abajo',16362,16365,3,1),(2366,'Condemios de Arriba',16366,16371,3,2),(2367,'Conesa',36732,36737,3,2),(2368,'Confrides',1182,1185,3,1),(2369,'Congosto',22194,22197,3,1),(2370,'Congosto de Valdavia',30666,30671,3,2),(2371,'Congostrina',16372,16375,3,1),(2372,'Conil de la Frontera',10300,10305,3,2),(2373,'Conquista',12528,12531,3,1),(2374,'Conquista de la Sierra',9444,9447,3,1),(2375,'Consell',5434,5437,3,1),(2376,'Constantí',36738,36741,3,1),(2377,'Constantina',35192,35195,3,1),(2378,'Constanzana',3630,3633,3,1),(2379,'Consuegra',38714,38717,3,1),(2380,'Contamina',43886,43889,3,1),(2381,'Contreras',7730,7733,3,1),(2382,'Coomonte',42436,42439,3,1),(2383,'Copernal',16376,16379,3,1),(2384,'Copons',6182,6185,3,1),(2385,'Corbalán',37762,37765,3,1),(2386,'Corbera',39862,39865,3,1),(2387,'Corbera d\'Ebre',36742,36745,3,1),(2388,'Corbera de Llobregat',6186,6189,3,1),(2389,'Corbillos de los Oteros',22198,22201,3,1),(2390,'Corbins',23762,23765,3,1),(2391,'Corçà',14206,14209,3,1),(2392,'Corcos',40888,40893,3,2),(2393,'Corcubión',20408,20413,3,2),(2394,'Córdoba',12532,12591,3,29),(2395,'Cordobilla de Lácara',4696,4699,3,1),(2396,'Cordovilla',32744,32747,3,1),(2397,'Cordovilla la Real',30672,30675,3,1),(2398,'Cordovín',21318,21321,3,1),(2399,'Corduente',16380,16391,3,5),(2400,'Corella',28482,28485,3,1),(2401,'Corera',21322,21325,3,1),(2402,'Coreses',42440,42443,3,1),(2403,'Coria',9448,9453,3,2),(2404,'Coria del Río',35196,35199,3,1),(2405,'Coripe',35200,35203,3,1),(2406,'Coristanco',20414,20419,3,2),(2407,'Cornago',21326,21331,3,2),(2408,'Cornellà de Llobregat',6190,6193,3,1),(2409,'Cornellà del Terri',14210,14213,3,1),(2410,'Cornudella de Montsant',36746,36751,3,2),(2411,'Corpa',26086,26089,3,1),(2412,'Corporales',21332,21335,3,1),(2413,'Corral de Almaguer',38718,38721,3,1),(2414,'Corral de Ayllón',34328,34331,3,1),(2415,'Corral de Calatrava',12112,12115,3,1),(2416,'Corral-Rubio',542,545,3,1),(2417,'Corrales de Duero',40894,40897,3,1),(2418,'Corrales del Vino',42444,42449,3,2),(2419,'Corte de Peleas',4700,4703,3,1),(2420,'Corteconcepción',17954,17957,3,1),(2421,'Cortegada',29752,29759,3,3),(2422,'Cortegana',17958,17965,3,3),(2423,'Cortelazor',17966,17969,3,1),(2424,'Cortes',28486,28489,3,1),(2425,'Cortes de Aragón',37766,37769,3,1),(2426,'Cortes de Arenoso',11500,11505,3,2),(2427,'Cortes de Baza',15346,15353,3,3),(2428,'Cortes de la Frontera',27140,27147,3,3),(2429,'Cortes de Pallás',39866,39869,3,1),(2430,'Cortes y Graena',15354,15357,3,1),(2431,'Corullón',22202,22211,3,4),(2432,'Coruña del Conde',7734,7737,3,1),(2433,'Corvera de Asturias',2604,2615,3,5),(2434,'Corvera de Toranzo',10708,10717,3,4),(2435,'Cosa',37770,37775,3,2),(2436,'Coscurita',35934,35941,3,3),(2437,'Coslada',26090,26099,3,4),(2438,'Cospeito',25090,25101,3,5),(2439,'Costitx',5438,5441,3,1),(2440,'Costur',11506,11509,3,1),(2441,'Cosuenda',43890,43893,3,1),(2442,'Cotanes del Monte',42450,42453,3,1),(2443,'Cotes',39870,39873,3,1),(2444,'Cotillas',546,549,3,1),(2445,'Covaleda',35942,35945,3,1),(2446,'Covarrubias',7738,7743,3,2),(2447,'Covelo',31602,31615,3,6),(2448,'Cox',1186,1189,3,1),(2449,'Cózar',12116,12119,3,1),(2450,'Cozuelos de Fuentidueña',34332,34335,3,1),(2451,'Crecente',31616,31633,3,8),(2452,'Creixell',36752,36757,3,2),(2453,'Crémenes',22212,22225,3,6),(2454,'Crespià',14214,14217,3,1),(2455,'Crespos',3634,3639,3,2),(2456,'Cretas',37776,37779,3,1),(2457,'Crevillent',1190,1197,3,3),(2458,'Cristina',4704,4707,3,1),(2459,'Cristóbal',32748,32751,3,1),(2460,'Crivillén',37780,37783,3,1),(2461,'Cruïlles, Monells i Sant Sadurní de l\'Heura',14218,14229,3,5),(2462,'Cuacos de Yuste',9454,9457,3,1),(2463,'Cuadros',22226,22235,3,4),(2464,'Cualedro',29760,29767,3,3),(2465,'Cuart de les Valls',39874,39877,3,1),(2466,'Cuart de Poblet',39878,39881,3,1),(2467,'Cuarte de Huerva',43894,43897,3,1),(2468,'Cuartell',39882,39885,3,1),(2469,'Cuatretonda',39886,39889,3,1),(2470,'Cubas de la Sagra',26100,26103,3,1),(2471,'Cubel',43898,43901,3,1),(2472,'Cubelles',6194,6197,3,1),(2473,'Cubells',23766,23769,3,1),(2474,'Cubilla',35946,35949,3,1),(2475,'Cubillas de Cerrato',30676,30679,3,1),(2476,'Cubillas de los Oteros',22236,22239,3,1),(2477,'Cubillas de Rueda',22240,22245,3,2),(2478,'Cubillas de Santa Marta',40898,40901,3,1),(2479,'Cubillo',34336,34339,3,1),(2480,'Cubillo del Campo',7744,7747,3,1),(2481,'Cubillos',42454,42457,3,1),(2482,'Cubillos del Sil',22246,22249,3,1),(2483,'Cubla',37784,37787,3,1),(2484,'Cubo de Benavente',42458,42461,3,1),(2485,'Cubo de Bureba',7748,7751,3,1),(2486,'Cubo de la Solana',35950,35955,3,2),(2487,'Cucalón',37788,37791,3,1),(2488,'Cudillero',2616,2629,3,6),(2489,'Cuelgamures',42462,42465,3,1),(2490,'Cuéllar',34340,34359,3,9),(2491,'Cuenca',13222,13239,3,8),(2492,'Cuenca de Campos',40902,40905,3,1),(2493,'Cuerva',38722,38725,3,1),(2494,'Cueva de Ágreda',35956,35959,3,1),(2495,'Cueva del Hierro',13240,13243,3,1),(2496,'Cuevas Bajas',27148,27151,3,1),(2497,'Cuevas de Almudén',37792,37795,3,1),(2498,'Cuevas de Provanco',34360,34363,3,1),(2499,'Cuevas de San Clemente',7752,7755,3,1),(2500,'Cuevas de San Marcos',27152,27155,3,1),(2501,'Cuevas del Almanzora',1888,1903,3,7),(2502,'Cuevas del Becerro',27156,27159,3,1),(2503,'Cuevas del Campo',15358,15361,3,1),(2504,'Cuevas del Valle',3640,3643,3,1),(2505,'Cuevas Labradas',37796,37799,3,1),(2506,'Culla',11510,11513,3,1),(2507,'Cúllar',15362,15371,3,4),(2508,'Cúllar Vega',15372,15375,3,1),(2509,'Cullera',39890,39897,3,3),(2510,'Culleredo',20420,20435,3,7),(2511,'Cumbres de Enmedio',17970,17973,3,1),(2512,'Cumbres de San Bartolomé',17974,17977,3,1),(2513,'Cumbres Mayores',17978,17981,3,1),(2514,'Cunit',36758,36761,3,1),(2515,'Cuntis',31634,31645,3,5),(2516,'Curiel de Duero',40906,40909,3,1),(2517,'Curtis',20436,20441,3,2),(2518,'Cútar',27160,27163,3,1),(2519,'Cuzcurrita de Río Tirón',21336,21339,3,1),(2520,'Daganzo de Arriba',26104,26107,3,1),(2521,'Daimiel',12120,12123,3,1),(2522,'Daimús',39898,39901,3,1),(2523,'Dalías',1904,1907,3,1),(2524,'Darnius',14230,14233,3,1),(2525,'Daroca',43902,43905,3,1),(2526,'Daroca de Rioja',21340,21343,3,1),(2527,'Darro',15376,15379,3,1),(2528,'Das',14234,14237,3,1),(2529,'Daya Nueva',1198,1201,3,1),(2530,'Daya Vieja',1202,1205,3,1),(2531,'Deba',17486,17491,3,2),(2532,'Degaña',2630,2635,3,2),(2533,'Dehesa de Montejo',30680,30687,3,3),(2534,'Dehesa de Romanos',30688,30691,3,1),(2535,'Dehesas de Guadix',15380,15383,3,1),(2536,'Dehesas Viejas',15384,15385,3,0),(2537,'Deià',5442,5445,3,1),(2538,'Deifontes',15386,15389,3,1),(2539,'Deleitosa',9458,9461,3,1),(2540,'Deltebre',36762,36765,3,1),(2541,'Dénia',1206,1217,3,5),(2542,'Derio',41836,41841,3,2),(2543,'Descargamaría',9462,9465,3,1),(2544,'Desojo',28490,28493,3,1),(2545,'Destriana',22250,22253,3,1),(2546,'Dévanos',35960,35963,3,1),(2547,'Deza',35964,35969,3,2),(2548,'Dicastillo',28494,28497,3,1),(2549,'Diego del Carpio',3644,3647,3,1),(2550,'Diezma',15390,15393,3,1),(2551,'Dílar',15394,15397,3,1),(2552,'Dima',41842,41845,3,1),(2553,'Dios le Guarde',32752,32755,3,1),(2554,'Dodro',20442,20449,3,3),(2555,'Dólar',15398,15401,3,1),(2556,'Dolores',1218,1221,3,1),(2557,'Domeño',39902,39905,3,1),(2558,'Domingo García',34364,34367,3,1),(2559,'Domingo Pérez',38726,38729,3,1),(2560,'Domingo Pérez de Granada',15402,15403,3,0),(2561,'Don Álvaro',4708,4711,3,1),(2562,'Don Benito',4712,4723,3,5),(2563,'Doña Mencía',12592,12595,3,1),(2564,'Donamaria',28498,28501,3,1),(2565,'Doneztebe/Santesteban',28502,28505,3,1),(2566,'Donhierro',34368,34371,3,1),(2567,'Doñinos de Ledesma',32756,32763,3,3),(2568,'Doñinos de Salamanca',32764,32771,3,3),(2569,'Donjimeno',3648,3651,3,1),(2570,'Donostia/San Sebastián',17492,17533,3,20),(2571,'Donvidas',3652,3655,3,1),(2572,'Dos Aguas',39906,39909,3,1),(2573,'Dos Hermanas',35204,35223,3,9),(2574,'Dos Torres',12596,12599,3,1),(2575,'Dosbarrios',38730,38733,3,1),(2576,'Dosrius',6198,6203,3,2),(2577,'Dozón',31646,31651,3,2),(2578,'Driebes',16392,16395,3,1),(2579,'Dúdar',15404,15407,3,1),(2580,'Dueñas',30692,30697,3,2),(2581,'Duesaigües',36766,36769,3,1),(2582,'Dumbría',20450,20457,3,3),(2583,'Durango',41846,41849,3,1),(2584,'Dúrcal',15408,15411,3,1),(2585,'Durón',16396,16401,3,2),(2586,'Duruelo',34372,34375,3,1),(2587,'Duruelo de la Sierra',35970,35973,3,1),(2588,'Ea',41850,41855,3,2),(2589,'Echarri/Etxarri',28506,28509,3,1),(2590,'Écija',35224,35233,3,4),(2591,'Eibar',17534,17537,3,1),(2592,'Eivissa',5276,5279,3,1),(2593,'Ejea de los Caballeros',43906,43915,3,4),(2594,'Éjeme',32772,32775,3,1),(2595,'Ejulve',37800,37803,3,1),(2596,'El Acebrón',13244,13247,3,1),(2597,'El Álamo',26108,26113,3,2),(2598,'El Almendro',17982,17985,3,1),(2599,'El Arco',32776,32779,3,1),(2600,'El Arenal',3656,3659,3,1),(2601,'El Astillero',10718,10725,3,3),(2602,'El Atazar',26114,26117,3,1),(2603,'El Ballestero',550,553,3,1),(2604,'El Barco de Ávila',3660,3663,3,1),(2605,'El Barraco',3664,3669,3,2),(2606,'El Berrueco',26118,26121,3,1),(2607,'El Boalo',26122,26129,3,3),(2608,'El Bodón',32780,32783,3,1),(2609,'El Bohodón',3670,3673,3,1),(2610,'El Bonillo',554,559,3,2),(2611,'El Borge',27164,27167,3,1),(2612,'El Bosque',10306,10309,3,1),(2613,'El Bruc',6204,6207,3,1),(2614,'El Brull',6208,6211,3,1),(2615,'El Burgo',27168,27171,3,1),(2616,'El Burgo de Ebro',43916,43919,3,1),(2617,'El Burgo Ranero',22254,22259,3,2),(2618,'El Buste',43920,43923,3,1),(2619,'El Busto',28510,28513,3,1),(2620,'El Cabaco',32784,32787,3,1),(2621,'el Campello',1222,1225,3,1),(2622,'El Campillo',17986,17991,3,2),(2623,'El Campillo',21736,21736,4,-1),(2624,'El Campillo de la Jara',38734,38737,3,1),(2625,'El Campo de Peñaranda',32788,32791,3,1),(2626,'El Cañavate',13248,13251,3,1),(2627,'El Cardoso de la Sierra',16402,16405,3,1),(2628,'El Carpio',12600,12605,3,2),(2629,'El Carpio de Tajo',38738,38741,3,1),(2630,'El Carrascalejo',4724,4727,3,1),(2631,'El Casar',16406,16411,3,2),(2632,'El Casar de Escalona',38742,38745,3,1),(2633,'el Castell de Guadalest',1226,1229,3,1),(2634,'El Castellar',37804,37807,3,1),(2635,'El Castillo de las Guardas',35234,35243,3,4),(2636,'El Catllar',36770,36775,3,2),(2637,'El Cerro',32792,32799,3,3),(2638,'El Cerro de Andévalo',17992,17999,3,3),(2639,'El Cogul',23770,23773,3,1),(2640,'El Coronil',35244,35247,3,1),(2641,'El Cubillo de Uceda',16412,16415,3,1),(2642,'El Cubo de Don Sancho',32800,32805,3,2),(2643,'El Cubo de Tierra del Vino',42466,42469,3,1),(2644,'El Cuervo',37808,37811,3,1),(2645,'El Cuervo de Sevilla',35248,35251,3,1),(2646,'El Ejido',1908,1921,3,6),(2647,'El Escorial',26130,26141,3,5),(2648,'El Espinar',34376,34385,3,4),(2649,'El Far d\'Empordà',14238,14241,3,1),(2650,'el Fondó de les Neus/Hondón de las Nieves',1230,1235,3,2),(2651,'El Frago',43924,43927,3,1),(2652,'El Franco',2636,2647,3,5),(2653,'El Frasno',43928,43937,3,4),(2654,'El Fresno',3674,3677,3,1),(2655,'El Garrobo',35252,35255,3,1),(2656,'El Gastor',10310,10313,3,1),(2657,'El Gordo',9466,9469,3,1),(2658,'El Grado',18714,18719,3,2),(2659,'El Granado',18000,18003,3,1),(2660,'El Guijo',12606,12609,3,1),(2661,'El Herrumblar',13252,13255,3,1),(2662,'El Hito',13256,13259,3,1),(2663,'El Hornillo',3678,3681,3,1),(2664,'El Hoyo de Pinares',3682,3685,3,1),(2665,'El Lloar',36776,36779,3,1),(2666,'El Losar del Barco',3686,3689,3,1),(2667,'El Maderal',42470,42473,3,1),(2668,'El Madroño',35256,35261,3,2),(2669,'El Maíllo',32806,32809,3,1),(2670,'El Manzano',32810,32813,3,1),(2671,'El Masnou',6212,6215,3,1),(2672,'El Masroig',36780,36783,3,1),(2673,'El Milà',36784,36787,3,1),(2674,'El Milano',32814,32817,3,1),(2675,'El Mirón',3690,3695,3,2),(2676,'El Molar',26142,26145,3,1),(2677,'El Molar',36788,36789,3,0),(2678,'El Montmell',36790,36801,3,5),(2679,'El Morell',36802,36805,3,1),(2680,'El Olivar',16416,16419,3,1),(2681,'El Ordial',16420,16425,3,2),(2682,'El Oso',3696,3699,3,1),(2683,'El Palau d\'Anglesola',23774,23777,3,1),(2684,'el Palomar',39910,39913,3,1),(2685,'El Papiol',6216,6219,3,1),(2686,'El Parral',3700,3703,3,1),(2687,'El Payo',32818,32821,3,1),(2688,'El Pedernoso',13260,13263,3,1),(2689,'El Pedregal',16426,16429,3,1),(2690,'El Pedroso',35262,35265,3,1),(2691,'El Pedroso de la Armuña',32822,32825,3,1),(2692,'El Pego',42474,42477,3,1),(2693,'El Peral',13264,13267,3,1),(2694,'El Perdigón',42478,42485,3,3),(2695,'El Perelló',36806,36809,3,1),(2696,'El Picazo',13268,13271,3,1),(2697,'El Pinar',15412,15417,3,2),(2698,'El Pinell de Brai',36810,36813,3,1),(2699,'El Piñero',42486,42489,3,1),(2700,'El Pino de Tormes',32826,32829,3,1),(2701,'el Pinós/Pinoso',1236,1245,3,4),(2702,'El Pla de Santa Maria',36814,36817,3,1),(2703,'El Pla del Penedès',6220,6223,3,1),(2704,'El Poal',23778,23781,3,1),(2705,'El Pobo',37812,37815,3,1),(2706,'El Pobo de Dueñas',16430,16433,3,1),(2707,'El Pont d\'Armentera',36818,36821,3,1),(2708,'El Pont de Bar',23782,23789,3,3),(2709,'El Pont de Suert',23790,23807,3,8),(2710,'El Pont de Vilomara i Rocafort',6224,6227,3,1),(2711,'El Port de la Selva',14242,14245,3,1),(2712,'El Pozuelo',13272,13275,3,1),(2713,'El Prat de Llobregat',6228,6231,3,1),(2714,'El Provencio',13276,13279,3,1),(2715,'El Puente del Arzobispo',38746,38749,3,1),(2716,'El Puerto de Santa María',10314,10317,3,1),(2717,'El Pueyo de Araguás',18720,18723,3,1),(2718,'El Puig',39914,39919,3,2),(2719,'el Ràfol d\'Almúnia',1246,1249,3,1),(2720,'El Rasillo de Cameros',21344,21347,3,1),(2721,'El Real de Gandia',39920,39923,3,1),(2722,'El Real de la Jara',35266,35269,3,1),(2723,'El Real de San Vicente',38750,38755,3,2),(2724,'El Recuenco',16434,16437,3,1),(2725,'El Redal',21348,21351,3,1),(2726,'El Robledo',12124,12127,3,1),(2727,'El Romeral',38756,38759,3,1),(2728,'El Ronquillo',35270,35273,3,1),(2729,'El Rourell',36822,36825,3,1),(2730,'El Royo',35974,35979,3,2),(2731,'El Rubio',35274,35277,3,1),(2732,'El Sahugo',32830,32833,3,1),(2733,'El Saucejo',35278,35283,3,2),(2734,'El Soleràs',23808,23811,3,1),(2735,'El Sotillo',16438,16441,3,1),(2736,'El Tejado',32834,32837,3,1),(2737,'El Tiemblo',3704,3713,3,4),(2738,'El Toboso',38760,38763,3,1),(2739,'El Tornadizo',32838,32841,3,1),(2740,'El Torno',9470,9473,3,1),(2741,'El Toro',11514,11517,3,1),(2742,'El Valle',15418,15421,3,1),(2743,'El Valle de Altomira',13280,13289,3,4),(2744,'El Vallecillo',37816,37819,3,1),(2745,'El Vellón',26146,26149,3,1),(2746,'El Vendrell',36826,36831,3,2),(2747,'el Verger',1250,1253,3,1),(2748,'El Villar de Arnedo',21352,21355,3,1),(2749,'El Vilosell',23812,23817,3,2),(2750,'El Viso',12610,12613,3,1),(2751,'El Viso de San Juan',38764,38767,3,1),(2752,'El Viso del Alcor',35284,35287,3,1),(2753,'Elantxobe',41856,41859,3,1),(2754,'Elburgo/Burgelu',122,127,3,2),(2755,'Elche de la Sierra',560,569,3,4),(2756,'Elche/Elx',1254,1295,3,20),(2757,'Elciego',128,131,3,1),(2758,'Elda',1296,1299,3,1),(2759,'Elduain',17538,17541,3,1),(2760,'Elgeta',17542,17545,3,1),(2761,'Elgoibar',17546,17551,3,2),(2762,'Elgorriaga',28514,28517,3,1),(2763,'Eljas',9474,9477,3,1),(2764,'Elorrio',41860,41863,3,1),(2765,'Els Alamús',23818,23821,3,1),(2766,'Els Garidells',36832,36835,3,1),(2767,'Els Guiamets',36836,36839,3,1),(2768,'Els Hostalets de Pierola',6232,6235,3,1),(2769,'Els Omellons',23822,23825,3,1),(2770,'Els Omells de na Gaia',23826,23829,3,1),(2771,'Els Pallaresos',36840,36843,3,1),(2772,'Els Plans de Sió',23830,23835,3,2),(2773,'els Poblets',1300,1303,3,1),(2774,'Els Prats de Rei',6236,6239,3,1),(2775,'Els Torms',23836,23839,3,1),(2776,'Elvillar/Bilar',132,135,3,1),(2777,'Embid',16442,16445,3,1),(2778,'Embid de Ariza',43938,43941,3,1),(2779,'Emperador',39924,39927,3,1),(2780,'Encina de San Silvestre',32842,32845,3,1),(2781,'Encinacorba',43942,43945,3,1),(2782,'Encinas',34386,34389,3,1),(2783,'Encinas de Abajo',32846,32851,3,2),(2784,'Encinas de Arriba',32852,32855,3,1),(2785,'Encinas de Esgueva',40912,40915,3,1),(2786,'Encinas Reales',12614,12617,3,1),(2787,'Encinasola',18004,18007,3,1),(2788,'Encinasola de los Comendadores',32856,32859,3,1),(2789,'Encinedo',22260,22271,3,5),(2790,'Encinillas',34390,34393,3,1),(2791,'Encío',7756,7761,3,2),(2792,'Enciso',21356,21359,3,1),(2793,'Endrinal',32860,32865,3,2),(2794,'Enériz/Eneritz',28518,28521,3,1),(2795,'Enguera',39928,39933,3,2),(2796,'Enguídanos',13290,13293,3,1),(2797,'Enix',1922,1925,3,1),(2798,'Énova',39934,39937,3,1),(2799,'Entrala',42490,42493,3,1),(2800,'Entrambasaguas',10726,10733,3,3),(2801,'Entrena',21360,21363,3,1),(2802,'Entrimo',29768,29777,3,4),(2803,'Entrín Bajo',4728,4731,3,1),(2804,'Épila',43946,43951,3,2),(2805,'Erandio',41864,41867,3,1),(2806,'Eratsun',28522,28525,3,1),(2807,'Ereño',41868,41871,3,1),(2808,'Ergoiena',28526,28529,3,1),(2809,'Erla',43952,43955,3,1),(2810,'Ermua',41872,41875,3,1),(2811,'Errenteria',17552,17555,3,1),(2812,'Errezil',17556,17559,3,1),(2813,'Erriberagoitia/Ribera Alta',136,149,3,6),(2814,'Errigoiti',41876,41879,3,1),(2815,'Erro',28530,28545,3,7),(2816,'Erustes',38768,38771,3,1),(2817,'Es Bòrdes',23840,23843,3,1),(2818,'es Castell',5736,5739,3,1),(2819,'Es Mercadal',5740,5745,3,2),(2820,'Es Migjorn Gran',5746,5749,3,1),(2821,'Escacena del Campo',18008,18011,3,1),(2822,'Escalante',10734,10739,3,2),(2823,'Escalona',38772,38775,3,1),(2824,'Escalona del Prado',34394,34397,3,1),(2825,'Escalonilla',38776,38779,3,1),(2826,'Escamilla',16446,16449,3,1),(2827,'Escañuela',19664,19667,3,1),(2828,'Escarabajosa de Cabezas',34398,34401,3,1),(2829,'Escariche',16450,16453,3,1),(2830,'Escatrón',43956,43961,3,2),(2831,'Escobar de Campos',22272,22275,3,1),(2832,'Escobar de Polendos',34402,34407,3,2),(2833,'Escobosa de Almazán',35980,35983,3,1),(2834,'Escopete',16454,16457,3,1),(2835,'Escorca',5446,5449,3,1),(2836,'Escorihuela',37820,37823,3,1),(2837,'Escucha',37824,37829,3,2),(2838,'Escurial',9478,9481,3,1),(2839,'Escurial de la Sierra',32866,32869,3,1),(2840,'Escúzar',15422,15425,3,1),(2841,'Esgos',29778,29783,3,2),(2842,'Esguevillas de Esgueva',40916,40919,3,1),(2843,'Eskoriatza',17560,17565,3,2),(2844,'Eslava',28546,28549,3,1),(2845,'Eslida',11518,11521,3,1),(2846,'Espadaña',32870,32873,3,1),(2847,'Espadañedo',42494,42505,3,5),(2848,'Espadilla',11522,11525,3,1),(2849,'Esparragalejo',4732,4735,3,1),(2850,'Esparragosa de la Serena',4736,4739,3,1),(2851,'Esparragosa de Lares',4740,4743,3,1),(2852,'Esparreguera',6240,6243,3,1),(2853,'Espartinas',35288,35291,3,1),(2854,'Esparza de Salazar/Espartza Zaraitzu',28550,28553,3,1),(2855,'Espeja',32874,32877,3,1),(2856,'Espeja de San Marcelino',35984,35989,3,2),(2857,'Espejo',12618,12621,3,1),(2858,'Espejón',35990,35993,3,1),(2859,'Espeluy',19668,19673,3,2),(2860,'Espera',10318,10321,3,1),(2861,'Espiel',12622,12629,3,3),(2862,'Espinelves',14246,14249,3,1),(2863,'Espino de la Orbada',32878,32881,3,1),(2864,'Espinosa de Cerrato',30698,30701,3,1),(2865,'Espinosa de Cervera',7762,7765,3,1),(2866,'Espinosa de Henares',16458,16463,3,2),(2867,'Espinosa de los Caballeros',3714,3717,3,1),(2868,'Espinosa de los Monteros',7766,7775,3,4),(2869,'Espinosa de Villagonzalo',30702,30707,3,2),(2870,'Espinosa del Camino',7776,7779,3,1),(2871,'Espinoso del Rey',38780,38783,3,1),(2872,'Espirdo',34408,34411,3,1),(2873,'Esplegares',16464,16467,3,1),(2874,'Esplugues de Llobregat',6244,6247,3,1),(2875,'Esplús',18724,18727,3,1),(2876,'Espolla',14250,14253,3,1),(2877,'Esponellà',14254,14257,3,1),(2878,'Esporles',5450,5453,3,1),(2879,'Espot',23844,23847,3,1),(2880,'Espronceda',28554,28557,3,1),(2881,'Esquivias',38784,38787,3,1),(2882,'Establés',16468,16471,3,1),(2883,'Estada',18728,18731,3,1),(2884,'Estadilla',18732,18735,3,1),(2885,'Estamariu',23848,23851,3,1),(2886,'Estaràs',23852,23859,3,3),(2887,'Estella-Lizarra',28558,28561,3,1),(2888,'Estellencs',5454,5457,3,1),(2889,'Estepa',35292,35295,3,1),(2890,'Estepa de San Juan',35994,35997,3,1),(2891,'Estépar',7780,7785,3,2),(2892,'Estepona',27172,27183,3,5),(2893,'Estercuel',37830,37833,3,1),(2894,'Esteribar',28562,28573,3,5),(2895,'Esterri d\'Àneu',23860,23863,3,1),(2896,'Esterri de Cardós',23864,23867,3,1),(2897,'Estivella',39938,39941,3,1),(2898,'Estollo',21364,21367,3,1),(2899,'Estopiñán del Castillo',18736,18741,3,2),(2900,'Estremera',26150,26153,3,1),(2901,'Estriégana',16472,16475,3,1),(2902,'Estubeny',39942,39945,3,1),(2903,'Etayo',28574,28577,3,1),(2904,'Etxalar',28578,28581,3,1),(2905,'Etxarri Aranatz',28582,28585,3,1),(2906,'Etxauri',28586,28589,3,1),(2907,'Etxebarri',41880,41883,3,1),(2908,'Etxebarria',41884,41887,3,1),(2909,'Eulate',28590,28593,3,1),(2910,'Ezcabarte',28594,28599,3,2),(2911,'Ezcaray',21368,21373,3,2),(2912,'Ezcároz/Ezkaroze',28600,28603,3,1),(2913,'Ezkio-Itsaso',17566,17571,3,2),(2914,'Ezkurra',28604,28609,3,2),(2915,'Ezprogui',28610,28615,3,2),(2916,'Fabara',43962,43965,3,1),(2917,'Fabero',22276,22285,3,4),(2918,'Facheca',1304,1307,3,1),(2919,'Fago',18742,18745,3,1),(2920,'Falces',28616,28619,3,1),(2921,'Falset',36844,36847,3,1),(2922,'Famorca',1308,1311,3,1),(2923,'Fanlo',18746,18749,3,1),(2924,'Fanzara',11526,11529,3,1),(2925,'Faraján',27184,27187,3,1),(2926,'Faramontanos de Tábara',42506,42509,3,1),(2927,'Fariza',42510,42515,3,2),(2928,'Farlete',43966,43969,3,1),(2929,'Farrera',23868,23871,3,1),(2930,'Faura',39946,39949,3,1),(2931,'Favara',39950,39953,3,1),(2932,'Fayón',43970,43973,3,1),(2933,'Felanitx',5458,5469,3,5),(2934,'Felix',1926,1929,3,1),(2935,'Fene',20458,20469,3,5),(2936,'Férez',570,573,3,1),(2937,'Feria',4744,4747,3,1),(2938,'Fermoselle',42516,42519,3,1),(2939,'Fernán Caballero',12128,12131,3,1),(2940,'Fernán-Núñez',12630,12633,3,1),(2941,'Ferreira',15426,15429,3,1),(2942,'Ferreras de Abajo',42520,42525,3,2),(2943,'Ferreras de Arriba',42526,42531,3,2),(2944,'Ferreries',5750,5753,3,1),(2945,'Ferreruela',42532,42537,3,2),(2946,'Ferreruela de Huerva',37834,37837,3,1),(2947,'Ferrol',20470,20497,3,13),(2948,'Figaró-Montmany',6248,6251,3,1),(2949,'Fígols',6252,6255,3,1),(2950,'Fígols i Alinyà',23872,23875,3,1),(2951,'Figueres',14258,14263,3,2),(2952,'Figuerola del Camp',36848,36851,3,1),(2953,'Figueroles',11530,11533,3,1),(2954,'Figueruela de Arriba',42538,42543,3,2),(2955,'Figueruelas',43974,43977,3,1),(2956,'Fiñana',1930,1933,3,1),(2957,'Fines',1934,1937,3,1),(2958,'Finestrat',1312,1315,3,1),(2959,'Fiscal',18750,18757,3,3),(2960,'Fisterra',20498,20505,3,3),(2961,'Fitero',28620,28623,3,1),(2962,'Flaçà',14264,14267,3,1),(2963,'Flix',36852,36855,3,1),(2964,'Flores de Ávila',3718,3721,3,1),(2965,'Florida de Liébana',32882,32885,3,1),(2966,'Fogars de la Selva',6256,6259,3,1),(2967,'Fogars de Montclús',6260,6265,3,2),(2968,'Foios',39954,39957,3,1),(2969,'Foixà',14268,14275,3,3),(2970,'Folgoso de la Ribera',22286,22295,3,4),(2971,'Folgoso do Courel',25102,25115,3,6),(2972,'Folgueroles',6266,6269,3,1),(2973,'Fombellida',40920,40923,3,1),(2974,'Fombuena',43978,43981,3,1),(2975,'Fompedraza',40924,40927,3,1),(2976,'Foncea',21374,21377,3,1),(2977,'Fondarella',23876,23879,3,1),(2978,'Fondón',1938,1943,3,2),(2979,'Fonelas',15430,15433,3,1),(2980,'Fonfría',37838,37849,3,5),(2981,'Fonfría',42544,42545,3,0),(2982,'Fonollosa',6270,6273,3,1),(2983,'Font-rubí',6274,6279,3,2),(2984,'Fontanals de Cerdanya',14276,14279,3,1),(2985,'Fontanar',16476,16479,3,1),(2986,'Fontanarejo',12132,12135,3,1),(2987,'Fontanares',39958,39961,3,1),(2988,'Fontanilles',14280,14283,3,1),(2989,'Fontcoberta',14284,14287,3,1),(2990,'Fontellas',28624,28627,3,1),(2991,'Fontihoyuelo',40928,40931,3,1),(2992,'Fontioso',7786,7789,3,1),(2993,'Fontiveros',3722,3725,3,1),(2994,'Fonz',18758,18763,3,2),(2995,'Fonzaleche',21378,21383,3,2),(2996,'Foradada',23880,23883,3,1),(2997,'Foradada del Toscar',18764,18775,3,5),(2998,'Forallac',14288,14295,3,3),(2999,'Forcall',11534,11537,3,1),(3000,'Forcarei',31652,31671,3,9),(3001,'Forès',36856,36859,3,1),(3002,'Forfoleda',32886,32889,3,1),(3003,'Formentera',5280,5289,3,4),(3004,'Formentera del Segura',1316,1321,3,2),(3005,'Formiche Alto',37850,37855,3,2),(3006,'Fornalutx',5470,5473,3,1),(3007,'Fornells de la Selva',14296,14299,3,1),(3008,'Fornelos de Montes',31672,31689,3,8),(3009,'Fórnoles',37856,37859,3,1),(3010,'Fortaleny',39962,39965,3,1),(3011,'Fortanete',37860,37863,3,1),(3012,'Fortià',14300,14303,3,1),(3013,'Fortuna',27720,27729,3,4),(3014,'Forua',41888,41891,3,1),(3015,'Foz',25116,25133,3,8),(3016,'Foz-Calanda',37864,37867,3,1),(3017,'Frades',20506,20511,3,2),(3018,'Frades de la Sierra',32890,32893,3,1),(3019,'Fraga',18776,18783,3,3),(3020,'Frailes',19674,19683,3,4),(3021,'Frandovínez',7790,7793,3,1),(3022,'Frechilla',30708,30711,3,1),(3023,'Frechilla de Almazán',35998,36001,3,1),(3024,'Fregenal de la Sierra',4748,4751,3,1),(3025,'Freginals',36860,36863,3,1),(3026,'Freila',15434,15437,3,1),(3027,'Fréscano',43982,43985,3,1),(3028,'Fresneda de Altarejos',13294,13299,3,2),(3029,'Fresneda de Cuéllar',34412,34415,3,1),(3030,'Fresneda de la Sierra',13300,13303,3,1),(3031,'Fresneda de la Sierra Tirón',7794,7797,3,1),(3032,'Fresnedilla',3726,3729,3,1),(3033,'Fresnedillas de la Oliva',26154,26157,3,1),(3034,'Fresnedoso',32894,32897,3,1),(3035,'Fresnedoso de Ibor',9482,9485,3,1),(3036,'Fresneña',7798,7801,3,1),(3037,'Fresnillo de las Dueñas',7802,7805,3,1),(3038,'Fresno Alhándiga',32898,32901,3,1),(3039,'Fresno de Cantespino',34416,34425,3,4),(3040,'Fresno de Caracena',36002,36005,3,1),(3041,'Fresno de la Fuente',34426,34429,3,1),(3042,'Fresno de la Polvorosa',42546,42549,3,1),(3043,'Fresno de la Ribera',42550,42553,3,1),(3044,'Fresno de la Vega',22296,22299,3,1),(3045,'Fresno de Río Tirón',7806,7809,3,1),(3046,'Fresno de Rodilla',7810,7813,3,1),(3047,'Fresno de Sayago',42554,42559,3,2),(3048,'Fresno de Torote',26158,26161,3,1),(3049,'Fresno del Río',30712,30715,3,1),(3050,'Fresno el Viejo',40932,40935,3,1),(3051,'Frías',7814,7817,3,1),(3052,'Frías de Albarracín',37868,37871,3,1),(3053,'Friera de Valverde',42560,42563,3,1),(3054,'Frigiliana',27188,27193,3,2),(3055,'Friol',25134,25151,3,8),(3056,'Frómista',30716,30719,3,1),(3057,'Fruiz',41892,41895,3,1),(3058,'Frumales',34430,34433,3,1),(3059,'Fuembellida',16480,16483,3,1),(3060,'Fuencaliente',12136,12139,3,1),(3061,'Fuencemillán',16484,16487,3,1),(3062,'Fuendejalón',43986,43989,3,1),(3063,'Fuendetodos',43990,43993,3,1),(3064,'Fuenferrada',37872,37875,3,1),(3065,'Fuengirola',27194,27197,3,1),(3066,'Fuenlabrada',26162,26179,3,8),(3067,'Fuenlabrada de los Montes',4752,4755,3,1),(3068,'Fuenllana',12140,12143,3,1),(3069,'Fuenmayor',21384,21387,3,1),(3070,'Fuensaldaña',40936,40939,3,1),(3071,'Fuensalida',38788,38793,3,2),(3072,'Fuensanta',574,577,3,1),(3073,'Fuensanta de Martos',19684,19689,3,2),(3074,'Fuente Álamo de Murcia',27730,27743,3,6),(3075,'Fuente de Cantos',4756,4759,3,1),(3076,'Fuente de Pedro Naharro',13304,13307,3,1),(3077,'Fuente de Piedra',27198,27201,3,1),(3078,'Fuente de Santa Cruz',34434,34437,3,1),(3079,'Fuente del Arco',4760,4763,3,1),(3080,'Fuente del Maestre',4764,4767,3,1),(3081,'Fuente el Fresno',12144,12149,3,2),(3082,'Fuente el Olmo de Fuentidueña',34438,34441,3,1),(3083,'Fuente el Olmo de Íscar',34442,34445,3,1),(3084,'Fuente el Saúz',3730,3733,3,1),(3085,'Fuente el Saz de Jarama',26180,26183,3,1),(3086,'Fuente el Sol',40940,40943,3,1),(3087,'Fuente Encalada',42564,42567,3,1),(3088,'Fuente Encarroz',39966,39969,3,1),(3089,'Fuente la Higuera',39970,39975,3,2),(3090,'Fuente la Lancha',12634,12637,3,1),(3091,'Fuente la Reina',11538,11541,3,1),(3092,'Fuente Obejuna',12638,12653,3,7),(3093,'Fuente Palmera',12654,12669,3,7),(3094,'Fuente Vaqueros',15438,15441,3,1),(3095,'Fuente-Álamo',578,581,3,1),(3096,'Fuente-Olmedo',40944,40947,3,1),(3097,'Fuente-Tójar',12670,12673,3,1),(3098,'Fuentealbilla',582,589,3,3),(3099,'Fuentearmegil',36006,36011,3,2),(3100,'Fuentebureba',7818,7821,3,1),(3101,'Fuentecambrón',36012,36015,3,1),(3102,'Fuentecantos',36016,36019,3,1),(3103,'Fuentecén',7822,7825,3,1),(3104,'Fuenteguinaldo',32902,32905,3,1),(3105,'Fuenteheridos',18012,18015,3,1),(3106,'Fuentelahiguera de Albatages',16488,16491,3,1),(3107,'Fuentelapeña',42568,42571,3,1),(3108,'Fuentelcésped',7826,7829,3,1),(3109,'Fuentelencina',16492,16495,3,1),(3110,'Fuentelespino de Haro',13308,13311,3,1),(3111,'Fuentelespino de Moya',13312,13315,3,1),(3112,'Fuenteliante',32906,32909,3,1),(3113,'Fuentelisendo',7830,7833,3,1),(3114,'Fuentelmonge',36020,36023,3,1),(3115,'Fuentelsaz',16496,16499,3,1),(3116,'Fuentelsaz de Soria',36024,36029,3,2),(3117,'Fuentelviejo',16500,16503,3,1),(3118,'Fuentemolinos',7834,7837,3,1),(3119,'Fuentenava de Jábaga',13316,13323,3,3),(3120,'Fuentenebro',7838,7841,3,1),(3121,'Fuentenovilla',16504,16509,3,2),(3122,'Fuentepelayo',34446,34449,3,1),(3123,'Fuentepiñel',34450,34453,3,1),(3124,'Fuentepinilla',36030,36035,3,2),(3125,'Fuenterrebollo',34454,34457,3,1),(3126,'Fuenterroble de Salvatierra',32910,32913,3,1),(3127,'Fuenterrobles',39976,39979,3,1),(3128,'Fuentes',13324,13327,3,1),(3129,'Fuentes Calientes',37876,37879,3,1),(3130,'Fuentes Claras',37880,37883,3,1),(3131,'Fuentes de Andalucía',35296,35301,3,2),(3132,'Fuentes de Año',3734,3737,3,1),(3133,'Fuentes de Ayódar',11542,11545,3,1),(3134,'Fuentes de Béjar',32914,32917,3,1),(3135,'Fuentes de Carbajal',22300,22303,3,1),(3136,'Fuentes de Ebro',43994,43999,3,2),(3137,'Fuentes de Jiloca',44000,44003,3,1),(3138,'Fuentes de León',4768,4771,3,1),(3139,'Fuentes de Magaña',36036,36039,3,1),(3140,'Fuentes de Nava',30720,30723,3,1),(3141,'Fuentes de Oñoro',32918,32923,3,2),(3142,'Fuentes de Ropel',42572,42575,3,1),(3143,'Fuentes de Rubielos',37884,37887,3,1),(3144,'Fuentes de Valdepero',30724,30727,3,1),(3145,'Fuentesaúco',42576,42579,3,1),(3146,'Fuentesaúco de Fuentidueña',34458,34461,3,1),(3147,'Fuentesecas',42580,42583,3,1),(3148,'Fuentesoto',34462,34465,3,1),(3149,'Fuentespalda',37888,37891,3,1),(3150,'Fuentespina',7842,7845,3,1),(3151,'Fuentespreadas',42584,42587,3,1),(3152,'Fuentestrún',36040,36043,3,1),(3153,'Fuentidueña',34466,34469,3,1),(3154,'Fuentidueña de Tajo',26184,26187,3,1),(3155,'Fuerte del Rey',19690,19693,3,1),(3156,'Fuertescusa',13328,13331,3,1),(3157,'Fulleda',23884,23887,3,1),(3158,'Funes',28628,28631,3,1),(3159,'Fustiñana',28632,28635,3,1),(3160,'Gabaldón',13332,13335,3,1),(3161,'Gabiria',17572,17575,3,1),(3162,'Gádor',1944,1947,3,1),(3163,'Gaià',6280,6287,3,3),(3164,'Gaianes',1322,1325,3,1),(3165,'Gaibiel',11546,11549,3,1),(3166,'Gaintza',17576,17579,3,1),(3167,'Gajanejos',16510,16513,3,1),(3168,'Gajates',32924,32931,3,3),(3169,'Galapagar',26188,26201,3,6),(3170,'Galápagos',16514,16517,3,1),(3171,'Galar',28636,28639,3,1),(3172,'Galaroza',18016,18019,3,1),(3173,'Galbarros',7846,7849,3,1),(3174,'Galbárruli',21388,21391,3,1),(3175,'Galdakao',41896,41899,3,1),(3176,'Galdames',41900,41903,3,1),(3177,'Galende',42588,42601,3,6),(3178,'Galera',15442,15447,3,2),(3179,'Galilea',21392,21395,3,1),(3180,'Galindo y Perahuy',32932,32937,3,2),(3181,'Galinduste',32938,32943,3,2),(3182,'Galisancho',32944,32947,3,1),(3183,'Galisteo',9486,9491,3,2),(3184,'Gallegos',34470,34473,3,1),(3185,'Gallegos de Altamiros',3738,3741,3,1),(3186,'Gallegos de Argañán',32948,32951,3,1),(3187,'Gallegos de Hornija',40948,40951,3,1),(3188,'Gallegos de Sobrinos',3742,3745,3,1),(3189,'Gallegos de Solmirón',32952,32955,3,1),(3190,'Gallegos del Pan',42602,42605,3,1),(3191,'Gallegos del Río',42606,42613,3,3),(3192,'Gallifa',6288,6291,3,1),(3193,'Gallinero de Cameros',21396,21399,3,1),(3194,'Gallipienzo/Galipentzu',28640,28643,3,1),(3195,'Gallocanta',44004,44007,3,1),(3196,'Gallués/Galoze',28644,28647,3,1),(3197,'Gallur',44008,44011,3,1),(3198,'Galve',37892,37895,3,1),(3199,'Galve de Sorbe',16518,16521,3,1),(3200,'Gálvez',38794,38797,3,1),(3201,'Gamiz-Fika',41904,41907,3,1),(3202,'Gamones',42614,42617,3,1),(3203,'Gandesa',36864,36867,3,1),(3204,'Gandia',39980,39993,3,6),(3205,'Garaballa',13336,13339,3,1),(3206,'Garai',41908,41911,3,1),(3207,'Garaioa',28648,28651,3,1),(3208,'Garbayuela',4772,4775,3,1),(3209,'Garcia',36868,36871,3,1),(3210,'Garciaz',9492,9495,3,1),(3211,'Garcibuey',32956,32959,3,1),(3212,'Garcihernández',32960,32965,3,2),(3213,'Garcillán',34474,34477,3,1),(3214,'Garciotum',38798,38801,3,1),(3215,'Garcirrey',32966,32971,3,2),(3216,'Garde',28652,28655,3,1),(3217,'Gargallo',37896,37899,3,1),(3218,'Garganta de los Montes',26202,26207,3,2),(3219,'Garganta del Villar',3746,3749,3,1),(3220,'Garganta la Olla',9496,9499,3,1),(3221,'Gargantilla',9500,9503,3,1),(3222,'Gargantilla del Lozoya y Pinilla de Buitrago',26208,26211,3,1),(3223,'Gargüera',9504,9507,3,1),(3224,'Garínoain',28656,28659,3,1),(3225,'Garlitos',4776,4779,3,1),(3226,'Garrafe de Torío',22304,22311,3,3),(3227,'Garralda',28660,28663,3,1),(3228,'Garray',36044,36049,3,2),(3229,'Garrigàs',14304,14307,3,1),(3230,'Garrigoles',14308,14311,3,1),(3231,'Garriguella',14312,14315,3,1),(3232,'Garrovillas de Alconétar',9508,9511,3,1),(3233,'Garrucha',1948,1951,3,1),(3234,'Garvín',9512,9515,3,1),(3235,'Gascones',26212,26215,3,1),(3236,'Gascueña',13340,13343,3,1),(3237,'Gascueña de Bornova',16522,16525,3,1),(3238,'Gata',9516,9521,3,2),(3239,'Gata de Gorgos',1326,1329,3,1),(3240,'Gatika',41912,41915,3,1),(3241,'Gatón de Campos',40952,40955,3,1),(3242,'Gátova',39994,39997,3,1),(3243,'Gaucín',27202,27205,3,1),(3244,'Gautegiz Arteaga',41916,41919,3,1),(3245,'Gavà',6292,6295,3,1),(3246,'Gavarda',39998,40001,3,1),(3247,'Gavet de la Conca',23888,23895,3,3),(3248,'Gavilanes',3750,3755,3,2),(3249,'Gaztelu',17580,17583,3,1),(3250,'Gea de Albarracín',37900,37903,3,1),(3251,'Gejuelo del Barro',32972,32975,3,1),(3252,'Geldo',11550,11555,3,2),(3253,'Gelida',6296,6299,3,1),(3254,'Gelsa',44012,44015,3,1),(3255,'Gelves',35302,35307,3,2),(3256,'Gema',42618,42621,3,1),(3257,'Gemuño',3756,3759,3,1),(3258,'Genalguacil',27206,27209,3,1),(3259,'Génave',19694,19697,3,1),(3260,'Genevilla',28664,28667,3,1),(3261,'Genovés',40002,40005,3,1),(3262,'Ger',14316,14319,3,1),(3263,'Gerena',35308,35311,3,1),(3264,'Gérgal',1952,1961,3,4),(3265,'Geria',40956,40959,3,1),(3266,'Gerindote',38802,38805,3,1),(3267,'Gernika-Lumo',41920,41923,3,1),(3268,'Gestalgar',40006,40009,3,1),(3269,'Getafe',26216,26233,3,8),(3270,'Getaria',17584,17587,3,1),(3271,'Getxo',41924,41935,3,5),(3272,'Gibraleón',18020,18023,3,1),(3273,'Gijón',2648,2701,3,26),(3274,'Gil García',3760,3763,3,1),(3275,'Gilbuena',3764,3767,3,1),(3276,'Gilena',35312,35315,3,1),(3277,'Gilet',40010,40013,3,1),(3278,'Gimenells i el Pla de la Font',23896,23901,3,2),(3279,'Gimialcón',3768,3771,3,1),(3280,'Gimileo',21400,21403,3,1),(3281,'Gines',35316,35319,3,1),(3282,'Ginestar',36872,36875,3,1),(3283,'Girona',14320,14337,3,8),(3284,'Gironella',6300,6303,3,1),(3285,'Gisclareny',6304,6307,3,1),(3286,'Gistaín',18784,18787,3,1),(3287,'Gizaburuaga',41936,41939,3,1),(3288,'Gobernador',15448,15453,3,2),(3289,'Godall',36876,36879,3,1),(3290,'Godella',40014,40017,3,1),(3291,'Godelleta',40018,40021,3,1),(3292,'Godojos',44016,44019,3,1),(3293,'Goizueta',28668,28671,3,1),(3294,'Gójar',15454,15457,3,1),(3295,'Golmayo',36050,36061,3,5),(3296,'Golmés',23902,23905,3,1),(3297,'Golosalvo',590,593,3,1),(3298,'Golpejas',32976,32979,3,1),(3299,'Gómara',36062,36069,3,3),(3300,'Gombrèn',14338,14341,3,1),(3301,'Gomecello',32980,32983,3,1),(3302,'Gomesende',29784,29787,3,1),(3303,'Gomezserracín',34478,34481,3,1),(3304,'Gondomar',31690,31709,3,9),(3305,'Goñi',28672,28675,3,1),(3306,'Gor',15458,15461,3,1),(3307,'Gorafe',15462,15465,3,1),(3308,'Gordaliza del Pino',22312,22315,3,1),(3309,'Gordexola',41940,41945,3,2),(3310,'Gordoncillo',22316,22319,3,1),(3311,'Gorga',1330,1333,3,1),(3312,'Gorliz',41946,41951,3,2),(3313,'Gormaz',36070,36073,3,1),(3314,'Gósol',23906,23909,3,1),(3315,'Gotarrendura',3772,3775,3,1),(3316,'Gotor',44020,44023,3,1),(3317,'Gozón',2702,2715,3,6),(3318,'Gradefes',22320,22333,3,6),(3319,'Grado',2716,2729,3,6),(3320,'Graja de Campalbo',13344,13347,3,1),(3321,'Graja de Iniesta',13348,13351,3,1),(3322,'Grajal de Campos',22334,22337,3,1),(3323,'Grajera',34482,34485,3,1),(3324,'Granada',15466,15505,3,19),(3325,'Granátula de Calatrava',12150,12153,3,1),(3326,'Grandas de Salime',2730,2733,3,1),(3327,'Grandes y San Martín',3776,3779,3,1),(3328,'Grañén',18788,18799,3,5),(3329,'Granera',6308,6311,3,1),(3330,'Granja de Moreruela',42622,42627,3,2),(3331,'Granja de Rocamora',1334,1337,3,1),(3332,'Granja de Torrehermosa',4780,4783,3,1),(3333,'Granollers',6312,6321,3,4),(3334,'Grañón',21404,21407,3,1),(3335,'Granucillo',42628,42633,3,2),(3336,'Granyanella',23910,23913,3,1),(3337,'Granyena de les Garrigues',23914,23917,3,1),(3338,'Granyena de Segarra',23918,23921,3,1),(3339,'Gratallops',36880,36883,3,1),(3340,'Graus',18800,18819,3,9),(3341,'Grávalos',21408,21411,3,1),(3342,'Grazalema',10322,10327,3,2),(3343,'Griegos',37904,37907,3,1),(3344,'Grijalba',7850,7853,3,1),(3345,'Grijota',30728,30731,3,1),(3346,'Griñón',26234,26237,3,1),(3347,'Grisaleña',7854,7857,3,1),(3348,'Grisel',44024,44027,3,1),(3349,'Grisén',44028,44031,3,1),(3350,'Guadahortuna',15506,15509,3,1),(3351,'Guadalajara',16526,16549,3,11),(3352,'Guadalaviar',37908,37911,3,1),(3353,'Guadalcanal',35320,35323,3,1),(3354,'Guadalcázar',12674,12677,3,1),(3355,'Guadalix de la Sierra',26238,26241,3,1),(3356,'Guadalmez',12154,12159,3,2),(3357,'Guadalupe',9522,9525,3,1),(3358,'Guadamur',38806,38809,3,1),(3359,'Guadarrama',26242,26249,3,3),(3360,'Guadasequies',40022,40025,3,1),(3361,'Guadasuar',40026,40031,3,2),(3362,'Guadiana del Caudillo',4784,4787,3,1),(3363,'Guadix',15510,15521,3,5),(3364,'Guadramiro',32984,32987,3,1),(3365,'Gualba',6322,6325,3,1),(3366,'Gualchos',15522,15527,3,2),(3367,'Gualta',14342,14345,3,1),(3368,'Guardamar de la Safor',40032,40035,3,1),(3369,'Guardamar del Segura',1338,1341,3,1),(3370,'Guardiola de Berguedà',6326,6329,3,1),(3371,'Guardo',30732,30741,3,4),(3372,'Guareña',4788,4793,3,2),(3373,'Guaro',27210,27213,3,1),(3374,'Guarrate',42634,42637,3,1),(3375,'Guarromán',19698,19701,3,1),(3376,'Guaza de Campos',30742,30745,3,1),(3377,'Gúdar',37912,37915,3,1),(3378,'Güéjar Sierra',15528,15533,3,2),(3379,'Güeñes',41952,41959,3,3),(3380,'Güesa/Gorza',28676,28679,3,1),(3381,'Guesálaz/Gesalatz',28680,28687,3,3),(3382,'Güevéjar',15534,15537,3,1),(3383,'Guijo de Ávila',32988,32991,3,1),(3384,'Guijo de Coria',9526,9529,3,1),(3385,'Guijo de Galisteo',9530,9537,3,3),(3386,'Guijo de Granadilla',9538,9545,3,3),(3387,'Guijo de Santa Bárbara',9546,9549,3,1),(3388,'Guijuelo',32992,33001,3,4),(3389,'Guillena',35324,35331,3,3),(3390,'Guils de Cerdanya',14346,14349,3,1),(3391,'Guimerà',23922,23925,3,1),(3392,'Guirguillano',28688,28693,3,2),(3393,'Guisando',3780,3783,3,1),(3394,'Guissona',23926,23929,3,1),(3395,'Guitiriz',25152,25175,3,11),(3396,'Guixers',23930,23933,3,1),(3397,'Gumiel de Izán',7858,7861,3,1),(3398,'Gumiel de Mercado',7862,7865,3,1),(3399,'Guntín',25176,25197,3,10),(3400,'Gurb',6330,6333,3,1),(3401,'Guriezo',10740,10753,3,6),(3402,'Gurrea de Gállego',18820,18825,3,2),(3403,'Gusendos de los Oteros',22338,22341,3,1),(3404,'Gutierre-Muñoz',3784,3787,3,1),(3405,'Hacinas',7866,7869,3,1),(3406,'Harana/Valle de Arana',150,153,3,1),(3407,'Haro',21412,21417,3,2),(3408,'Haza',7870,7875,3,2),(3409,'Hazas de Cesto',10754,10761,3,3),(3410,'Helechosa de los Montes',4794,4797,3,1),(3411,'Hellín',594,607,3,6),(3412,'Henarejos',13352,13355,3,1),(3413,'Henche',16550,16553,3,1),(3414,'Heras de Ayuso',16554,16557,3,1),(3415,'Herbés',11556,11559,3,1),(3416,'Herce',21418,21421,3,1),(3417,'Herencia',12160,12163,3,1),(3418,'Herguijuela',9550,9555,3,2),(3419,'Herguijuela de Ciudad Rodrigo',33002,33007,3,2),(3420,'Herguijuela de la Sierra',33008,33013,3,2),(3421,'Herguijuela del Campo',33014,33017,3,1),(3422,'Hermandad de Campoo de Suso',10762,10771,3,4),(3423,'Hérmedes de Cerrato',30746,30749,3,1),(3424,'Hermisende',42638,42643,3,2),(3425,'Hernán-Pérez',9556,9561,3,2),(3426,'Hernani',17588,17593,3,2),(3427,'Hernansancho',3788,3791,3,1),(3428,'Hernialde',17594,17597,3,1),(3429,'Herradón de Pinares',3792,3799,3,3),(3430,'Herramélluri',21422,21425,3,1),(3431,'Herrera',35332,35335,3,1),(3432,'Herrera de Alcántara',9562,9565,3,1),(3433,'Herrera de los Navarros',44032,44035,3,1),(3434,'Herrera de Pisuerga',30750,30757,3,3),(3435,'Herrera de Soria',36074,36077,3,1),(3436,'Herrera de Valdecañas',30758,30761,3,1),(3437,'Herrera del Duque',4798,4803,3,2),(3438,'Herrería',16558,16561,3,1),(3439,'Herrerías',10772,10781,3,4),(3440,'Herreros de Suso',3800,3803,3,1),(3441,'Herreruela',9566,9569,3,1),(3442,'Herreruela de Oropesa',38810,38813,3,1),(3443,'Herrín de Campos',40960,40963,3,1),(3444,'Hervás',9570,9573,3,1),(3445,'Hervías',21426,21429,3,1),(3446,'Hiendelaencina',16562,16565,3,1),(3447,'Higuera',9574,9577,3,1),(3448,'Higuera de Calatrava',19702,19705,3,1),(3449,'Higuera de la Serena',4804,4807,3,1),(3450,'Higuera de la Sierra',18024,18027,3,1),(3451,'Higuera de las Dueñas',3804,3807,3,1),(3452,'Higuera de Llerena',4808,4811,3,1),(3453,'Higuera de Vargas',4812,4815,3,1),(3454,'Higuera la Real',4816,4819,3,1),(3455,'Higueras',11560,11563,3,1),(3456,'Higueruela',608,613,3,2),(3457,'Higueruelas',40036,40039,3,1),(3458,'Híjar',37916,37919,3,1),(3459,'Hijes',16566,16569,3,1),(3460,'Hinojal',9578,9581,3,1),(3461,'Hinojales',18028,18031,3,1),(3462,'Hinojares',19706,19709,3,1),(3463,'Hinojos',18032,18035,3,1),(3464,'Hinojosa de Duero',33018,33021,3,1),(3465,'Hinojosa de Jarque',37920,37923,3,1),(3466,'Hinojosa de San Vicente',38814,38817,3,1),(3467,'Hinojosa del Campo',36078,36081,3,1),(3468,'Hinojosa del Duque',12678,12681,3,1),(3469,'Hinojosa del Valle',4820,4823,3,1),(3470,'Hinojosas de Calatrava',12164,12167,3,1),(3471,'Hiriberri/Villanueva de Aezkoa',28694,28697,3,1),(3472,'Hita',16570,16573,3,1),(3473,'Holguera',9582,9587,3,2),(3474,'Hombrados',16574,16577,3,1),(3475,'Hondarribia',17598,17601,3,1),(3476,'Hondón de los Frailes',1342,1345,3,1),(3477,'Honrubia',13356,13359,3,1),(3478,'Honrubia de la Cuesta',34486,34489,3,1),(3479,'Hontalbilla',34490,34493,3,1),(3480,'Hontanar',38818,38821,3,1),(3481,'Hontanares de Eresma',34494,34497,3,1),(3482,'Hontanas',7876,7879,3,1),(3483,'Hontanaya',13360,13363,3,1),(3484,'Hontangas',7880,7883,3,1),(3485,'Hontecillas',13364,13367,3,1),(3486,'Hontoba',16578,16581,3,1),(3487,'Hontoria de Cerrato',30762,30765,3,1),(3488,'Hontoria de la Cantera',7884,7887,3,1),(3489,'Hontoria de Valdearados',7888,7891,3,1),(3490,'Hontoria del Pinar',7892,7897,3,2),(3491,'Horcajo de la Sierra-Aoslos',26250,26253,3,1),(3492,'Horcajo de las Torres',3808,3811,3,1),(3493,'Horcajo de los Montes',12168,12171,3,1),(3494,'Horcajo de Montemayor',33022,33025,3,1),(3495,'Horcajo de Santiago',13368,13371,3,1),(3496,'Horcajo Medianero',33026,33033,3,3),(3497,'Horcajuelo de la Sierra',26254,26257,3,1),(3498,'Horche',16582,16589,3,3),(3499,'Hormigos',38822,38825,3,1),(3500,'Hormilla',21430,21433,3,1),(3501,'Hormilleja',21434,21437,3,1),(3502,'Hornachos',4824,4827,3,1),(3503,'Hornachuelos',12682,12693,3,5),(3504,'Hornillos de Cameros',21438,21441,3,1),(3505,'Hornillos de Cerrato',30766,30769,3,1),(3506,'Hornillos de Eresma',40964,40967,3,1),(3507,'Hornillos del Camino',7898,7901,3,1),(3508,'Hornos',19710,19719,3,4),(3509,'Hornos de Moncalvillo',21442,21445,3,1),(3510,'Horta de Sant Joan',36884,36887,3,1),(3511,'Hortezuela de Océn',16590,16593,3,1),(3512,'Hortigüela',7902,7905,3,1),(3513,'Hospital de Órbigo',22342,22345,3,1),(3514,'Hostalric',14350,14353,3,1),(3515,'Hoya-Gonzalo',614,617,3,1),(3516,'Hoyales de Roa',7906,7909,3,1),(3517,'Hoyo de Manzanares',26258,26263,3,2),(3518,'Hoyocasero',3812,3815,3,1),(3519,'Hoyorredondo',3816,3819,3,1),(3520,'Hoyos',9588,9591,3,1),(3521,'Hoyos de Miguel Muñoz',3820,3823,3,1),(3522,'Hoyos del Collado',3824,3827,3,1),(3523,'Hoyos del Espino',3828,3833,3,2),(3524,'Hoz de Jaca',18826,18829,3,1),(3525,'Hoz y Costean',18830,18835,3,2),(3526,'Huarte/Uharte',28698,28701,3,1),(3527,'Huecas',38826,38829,3,1),(3528,'Huécija',1962,1965,3,1),(3529,'Huélaga',9592,9595,3,1),(3530,'Huélago',15538,15541,3,1),(3531,'Huélamo',13372,13375,3,1),(3532,'Huelma',19720,19725,3,2),(3533,'Huelva',18036,18053,3,8),(3534,'Huelves',13376,13379,3,1),(3535,'Huéneja',15542,15545,3,1),(3536,'Huércal de Almería',1966,1969,3,1),(3537,'Huércal-Overa',1970,1987,3,8),(3538,'Huércanos',21446,21449,3,1),(3539,'Huérguina',13380,13383,3,1),(3540,'Huérmeces',7910,7915,3,2),(3541,'Huérmeces del Cerro',16594,16597,3,1),(3542,'Huerta',33034,33037,3,1),(3543,'Huerta de Arriba',7916,7919,3,1),(3544,'Huerta de la Obispalía',13384,13387,3,1),(3545,'Huerta de Rey',7920,7925,3,2),(3546,'Huerta de Valdecarábanos',38830,38833,3,1),(3547,'Huerta del Marquesado',13388,13391,3,1),(3548,'Huertahernando',16598,16601,3,1),(3549,'Huerto',18836,18841,3,2),(3550,'Huesa',19726,19729,3,1),(3551,'Huesa del Común',37924,37929,3,2),(3552,'Huesca',18842,18875,3,16),(3553,'Huéscar',15546,15549,3,1),(3554,'Huete',13392,13407,3,7),(3555,'Huétor de Santillán',15550,15555,3,2),(3556,'Huétor Tájar',15556,15559,3,1),(3557,'Huétor Vega',15560,15563,3,1),(3558,'Hueva',16602,16605,3,1),(3559,'Huévar del Aljarafe',35336,35339,3,1),(3560,'Humada',7926,7931,3,2),(3561,'Humanes',16606,16613,3,3),(3562,'Humanes de Madrid',26264,26267,3,1),(3563,'Humilladero',27214,27219,3,2),(3564,'Hurones',7932,7935,3,1),(3565,'Hurtumpascual',3834,3837,3,1),(3566,'Husillos',30770,30773,3,1),(3567,'Ibahernando',9596,9599,3,1),(3568,'Ibargoiti',28702,28707,3,2),(3569,'Ibarra',17602,17605,3,1),(3570,'Ibarrangelu',41960,41963,3,1),(3571,'Ibdes',44036,44039,3,1),(3572,'Ibeas de Juarros',7936,7943,3,3),(3573,'Ibi',1346,1349,3,1),(3574,'Ibias',2734,2741,3,3),(3575,'Ibieca',18876,18879,3,1),(3576,'Ibrillos',7944,7947,3,1),(3577,'Ibros',19730,19735,3,2),(3578,'Idiazabal',17606,17609,3,1),(3579,'Igantzi',28708,28711,3,1),(3580,'Igea',21450,21453,3,1),(3581,'Iglesiarrubia',7948,7953,3,2),(3582,'Iglesias',7954,7957,3,1),(3583,'Igorre',41964,41967,3,1),(3584,'Igriés',18880,18883,3,1),(3585,'Igualada',6334,6337,3,1),(3586,'Igualeja',27220,27223,3,1),(3587,'Igüeña',22346,22361,3,7),(3588,'Igúzquiza',28712,28717,3,2),(3589,'Ikaztegieta',17610,17613,3,1),(3590,'Ilche',18884,18887,3,1),(3591,'Illán de Vacas',38834,38837,3,1),(3592,'Illana',16614,16617,3,1),(3593,'Illano',2742,2749,3,3),(3594,'Íllar',1988,1991,3,1),(3595,'Illas',2750,2757,3,3),(3596,'Illescas',38838,38841,3,1),(3597,'Íllora',15564,15579,3,7),(3598,'Illueca',44040,44043,3,1),(3599,'Imotz',28718,28723,3,2),(3600,'Inca',5474,5477,3,1),(3601,'Iniesta',13408,13415,3,3),(3602,'Iniéstola',16618,16621,3,1),(3603,'Instinción',1992,1995,3,1),(3604,'Irañeta',28724,28727,3,1),(3605,'Irixoa',20512,20515,3,1),(3606,'Iruelos',33038,33041,3,1),(3607,'Irueste',16622,16625,3,1),(3608,'Irun',17614,17625,3,5),(3609,'Iruña Oka/Iruña de Oca',154,163,3,4),(3610,'Irura',17626,17629,3,1),(3611,'Iruraiz-Gauna',164,171,3,3),(3612,'Irurtzun',28728,28731,3,1),(3613,'Isaba/Izaba',28732,28735,3,1),(3614,'Isábena',18888,18895,3,3),(3615,'Isar',7958,7965,3,3),(3616,'Íscar',40968,40971,3,1),(3617,'Isla Cristina',18054,18065,3,5),(3618,'Isla Mayor',35340,35345,3,2),(3619,'Isona i Conca Dellà',23934,23949,3,7),(3620,'Isòvol',14354,14357,3,1),(3621,'Ispaster',41968,41971,3,1),(3622,'Istán',27224,27227,3,1),(3623,'Isuerre',44044,44047,3,1),(3624,'Itero de la Vega',30774,30777,3,1),(3625,'Itero del Castillo',7966,7969,3,1),(3626,'Ítrabo',15580,15583,3,1),(3627,'Itsasondo',17630,17633,3,1),(3628,'Ituero de Azaba',33042,33045,3,1),(3629,'Ituero y Lama',34498,34501,3,1),(3630,'Ituren',28736,28739,3,1),(3631,'Iturmendi',28740,28743,3,1),(3632,'Iurreta',41972,41975,3,1),(3633,'Ivars d\'Urgell',23950,23955,3,2),(3634,'Ivars de Noguera',23956,23959,3,1),(3635,'Ivorra',23960,23963,3,1),(3636,'Iza/Itza',28744,28755,3,5),(3637,'Izagaondoa',28756,28759,3,1),(3638,'Izagre',22362,22365,3,1),(3639,'Izalzu/Itzaltzu',28760,28763,3,1),(3640,'Iznájar',12694,12703,3,4),(3641,'Iznalloz',15584,15589,3,2),(3642,'Iznate',27228,27231,3,1),(3643,'Iznatoraf',19736,19739,3,1),(3644,'Izurtza',41976,41979,3,1),(3645,'Jabaloyas',37930,37935,3,2),(3646,'Jabalquinto',19740,19745,3,2),(3647,'Jabugo',18066,18071,3,2),(3648,'Jaca',18896,18923,3,13),(3649,'Jacarilla',1350,1353,3,1),(3650,'Jadraque',16626,16631,3,2),(3651,'Jaén',19746,19771,3,12),(3652,'Jafre',14358,14361,3,1),(3653,'Jalance',40040,40043,3,1),(3654,'Jalón de Cameros',21454,21457,3,1),(3655,'Jambrina',42644,42647,3,1),(3656,'Jamilena',19772,19775,3,1),(3657,'Jaraba',44048,44051,3,1),(3658,'Jaraco',40044,40047,3,1),(3659,'Jarafuel',40048,40051,3,1),(3660,'Jaraicejo',9600,9605,3,2),(3661,'Jaraíz de la Vera',9606,9609,3,1),(3662,'Jaramillo de la Fuente',7970,7973,3,1),(3663,'Jaramillo Quemado',7974,7977,3,1),(3664,'Jarandilla de la Vera',9610,9613,3,1),(3665,'Jarilla',9614,9617,3,1),(3666,'Jarque',44052,44055,3,1),(3667,'Jarque de la Val',37936,37939,3,1),(3668,'Jasa',18924,18927,3,1),(3669,'Játar',15590,15591,3,0),(3670,'Jatiel',37940,37943,3,1),(3671,'Játiva',40052,40057,3,2),(3672,'Jaulín',44056,44059,3,1),(3673,'Jaurrieta',28764,28767,3,1),(3674,'Jávea/Xàbia',1354,1363,3,4),(3675,'Javier',28768,28773,3,2),(3676,'Jayena',15592,15595,3,1),(3677,'Jeresa',40058,40061,3,1),(3678,'Jerez de la Frontera',10328,10365,3,18),(3679,'Jerez de los Caballeros',4828,4833,3,2),(3680,'Jerez del Marquesado',15596,15599,3,1),(3681,'Jérica',11564,11567,3,1),(3682,'Jerte',9618,9621,3,1),(3683,'Jete',15600,15603,3,1),(3684,'Jijona/Xixona',1364,1367,3,1),(3685,'Jimena',19776,19779,3,1),(3686,'Jimena de la Frontera',10366,10375,3,4),(3687,'Jimera de Líbar',27232,27235,3,1),(3688,'Jirueque',16632,16635,3,1),(3689,'Joarilla de las Matas',22366,22369,3,1),(3690,'Jódar',19780,19783,3,1),(3691,'Jorba',6338,6343,3,2),(3692,'Jorcas',37944,37947,3,1),(3693,'Jorquera',618,623,3,2),(3694,'Josa',37948,37951,3,1),(3695,'Josa i Tuixén',23964,23969,3,2),(3696,'Juarros de Riomoros',34502,34505,3,1),(3697,'Juarros de Voltoya',34506,34509,3,1),(3698,'Jubrique',27236,27239,3,1),(3699,'Juià',14362,14365,3,1),(3700,'Jumilla',27744,27753,3,4),(3701,'Jun',15604,15607,3,1),(3702,'Junciana',3838,3841,3,1),(3703,'Juncosa',23970,23973,3,1),(3704,'Juneda',23974,23977,3,1),(3705,'Junta de Traslaloma',7978,7983,3,2),(3706,'Junta de Villalba de Losa',7984,7987,3,1),(3707,'Jurisdicción de Lara',7988,7993,3,2),(3708,'Jurisdicción de San Zadornil',7994,7997,3,1),(3709,'Juslapeña',28774,28781,3,3),(3710,'Justel',42648,42653,3,2),(3711,'Juviles',15608,15611,3,1),(3712,'Juzbado',33046,33049,3,1),(3713,'Júzcar',27240,27243,3,1),(3714,'Karrantza Harana/Valle de Carranza',41980,41985,3,2),(3715,'Kortezubi',41986,41989,3,1),(3716,'Kripan',172,175,3,1),(3717,'Kuartango',176,181,3,2),(3718,'L\'Albagés',23978,23981,3,1),(3719,'L\'Albi',23982,23985,3,1),(3720,'L\'Albiol',36888,36891,3,1),(3721,'l\'Alcora',11568,11575,3,3),(3722,'L\'Aldea',36892,36895,3,1),(3723,'L\'Aleixar',36896,36899,3,1),(3724,'l\'Alfàs del Pi',1368,1373,3,2),(3725,'l\'Alqueria d\'Asnar',1374,1377,3,1),(3726,'L\'Ametlla de Mar',36900,36903,3,1),(3727,'L\'Ametlla del Vallès',6344,6347,3,1),(3728,'L\'Ampolla',36904,36907,3,1),(3729,'L\'Arboç',36908,36911,3,1),(3730,'L\'Argentera',36912,36915,3,1),(3731,'L\'Armentera',14366,14369,3,1),(3732,'l\'Atzúbia',1378,1381,3,1),(3733,'L\'Escala',14370,14373,3,1),(3734,'L\'Espluga Calba',23986,23989,3,1),(3735,'L\'Espluga de Francolí',36916,36919,3,1),(3736,'L\'Espunyola',6348,6351,3,1),(3737,'L\'Esquirol',6352,6357,3,2),(3738,'L\'Estany',6358,6363,3,2),(3739,'L\'Hospitalet de Llobregat',6364,6381,3,8),(3740,'La Acebeda',26268,26271,3,1),(3741,'La Adrada',3842,3845,3,1),(3742,'La Alameda de Gardón',33050,33053,3,1),(3743,'La Alamedilla',33054,33057,3,1),(3744,'La Alberca',33058,33061,3,1),(3745,'La Alberca de Záncara',13416,13419,3,1),(3746,'La Alberguería de Argañán',33062,33065,3,1),(3747,'La Albuera',4834,4837,3,1),(3748,'La Alcudia',40062,40065,3,1),(3749,'La Aldea del Obispo',9622,9625,3,1),(3750,'La Aldehuela',3846,3849,3,1),(3751,'La Algaba',35346,35351,3,2),(3752,'La Almarcha',13420,13423,3,1),(3753,'La Almolda',44060,44063,3,1),(3754,'La Almunia de Doña Godina',44064,44067,3,1),(3755,'La Antigua',22370,22373,3,1),(3756,'La Atalaya',33066,33069,3,1),(3757,'La Bañeza',22374,22381,3,3),(3758,'La Baronia de Rialb',23990,23993,3,1),(3759,'La Bastida',33070,33073,3,1),(3760,'La Bisbal d\'Empordà',14374,14377,3,1),(3761,'La Bisbal de Falset',36920,36923,3,1),(3762,'La Bisbal del Penedès',36924,36927,3,1),(3763,'La Bodera',16636,16639,3,1),(3764,'La Bouza',33074,33077,3,1),(3765,'La Bóveda de Toro',42654,42657,3,1),(3766,'La Cabeza de Béjar',33078,33081,3,1),(3767,'La Cabrera',26272,26275,3,1),(3768,'La Calahorra',15612,15615,3,1),(3769,'La Calzada de Béjar',33082,33085,3,1),(3770,'La Campana',35352,35355,3,1),(3771,'La Cañada de Verich',37952,37955,3,1),(3772,'La Canonja',36928,36933,3,2),(3773,'La Carlota',12704,12713,3,4),(3774,'La Carolina',19784,19791,3,3),(3775,'La Carrera',3850,3853,3,1),(3776,'La Cellera de Ter',14378,14383,3,2),(3777,'La Cerollera',37956,37959,3,1),(3778,'La Cierva',13424,13427,3,1),(3779,'La Codoñera',37960,37963,3,1),(3780,'La Codosera',4838,4841,3,1),(3781,'La Colilla',3854,3857,3,1),(3782,'La Coma i la Pedra',23994,23997,3,1),(3783,'La Coronada',4842,4845,3,1),(3784,'La Cuba',37964,37967,3,1),(3785,'La Cueva de Roa',7998,8001,3,1),(3786,'La Cumbre',9626,9629,3,1),(3787,'La Eliana',40066,40069,3,1),(3788,'La Encina',33086,33089,3,1),(3789,'La Ercina',22382,22391,3,4),(3790,'La Estrella',38842,38845,3,1),(3791,'La Fatarella',36934,36937,3,1),(3792,'La Febró',36938,36941,3,1),(3793,'La Figuera',36942,36945,3,1),(3794,'La Floresta',23998,24001,3,1),(3795,'La Fregeneda',33090,33093,3,1),(3796,'La Fresneda',37968,37971,3,1),(3797,'La Frontera',13428,13431,3,1),(3798,'La Fuente de San Esteban',33094,33105,3,5),(3799,'La Fueva',18928,18939,3,5),(3800,'La Fuliola',24002,24005,3,1),(3801,'La Galera',36946,36949,3,1),(3802,'La Gallega',8002,8005,3,1),(3803,'La Garganta',9630,9633,3,1),(3804,'La Garriga',6382,6385,3,1),(3805,'La Garrovilla',4846,4849,3,1),(3806,'La Ginebrosa',37972,37975,3,1),(3807,'La Gineta',624,627,3,1),(3808,'La Granada',6386,6389,3,1),(3809,'La Granada de Río-Tinto',18072,18075,3,1),(3810,'La Granadella',24006,24009,3,1),(3811,'La Granja',9634,9637,3,1),(3812,'La Granja d\'Escarp',24010,24013,3,1),(3813,'La Granja de la Costera',40070,40073,3,1),(3814,'La Granjuela',12714,12717,3,1),(3815,'La Guardia',38846,38849,3,1),(3816,'La Guardia de Jaén',19792,19795,3,1),(3817,'La Guingueta d\'Àneu',24014,24023,3,4),(3818,'La Haba',4850,4855,3,2),(3819,'La Herrera',628,631,3,1),(3820,'La Hija de Dios',3858,3861,3,1),(3821,'La Hiniesta',42658,42661,3,1),(3822,'La Hinojosa',13432,13435,3,1),(3823,'La Hiruela',26276,26279,3,1),(3824,'La Horcajada',3862,3867,3,2),(3825,'La Horra',8006,8009,3,1),(3826,'La Hoya',33106,33109,3,1),(3827,'La Hoz de la Vieja',37976,37979,3,1),(3828,'La Huerce',16640,16643,3,1),(3829,'La Iglesuela',38850,38853,3,1),(3830,'La Iglesuela del Cid',37980,37983,3,1),(3831,'La Iruela',19796,19801,3,2),(3832,'la Jana',11576,11579,3,1),(3833,'La Jonquera',14384,14389,3,2),(3834,'La Joyosa',44068,44071,3,1),(3835,'La Lapa',4856,4859,3,1),(3836,'La Lastrilla',34510,34513,3,1),(3837,'La Línea de la Concepción',10376,10379,3,1),(3838,'La Llacuna',6390,6393,3,1),(3839,'La Llagosta',6394,6397,3,1),(3840,'la Llosa',11580,11583,3,1),(3841,'la Llosa de Ranes',40074,40077,3,1),(3842,'La Losa',34514,34517,3,1),(3843,'La Losilla',36082,36085,3,1),(3844,'La Luisiana',35356,35361,3,2),(3845,'La Malahá',15616,15619,3,1),(3846,'La Masó',36950,36953,3,1),(3847,'La Mata',38854,38857,3,1),(3848,'La Mata de Ledesma',33110,33117,3,3),(3849,'La Mata de los Olmos',37984,37987,3,1),(3850,'la Mata de Morella',11584,11587,3,1),(3851,'La Matilla',34518,34521,3,1),(3852,'La Maya',33118,33121,3,1),(3853,'La Mierla',16644,16647,3,1),(3854,'La Miñosa',16648,16653,3,2),(3855,'La Mojonera',1996,2001,3,2),(3856,'La Molsosa',24024,24027,3,1),(3857,'La Morera',4860,4863,3,1),(3858,'La Morera de Montsant',36954,36959,3,2),(3859,'La Mudarra',40972,40975,3,1),(3860,'La Muela',44072,44077,3,2),(3861,'La Nava',18076,18079,3,1),(3862,'La Nava de Ricomalillo',38858,38861,3,1),(3863,'La Nava de Santiago',4864,4867,3,1),(3864,'La Nou de Berguedà',6398,6401,3,1),(3865,'La Nou de Gaià',36960,36963,3,1),(3866,'la Nucia',1382,1385,3,1),(3867,'La Olmeda de Jadraque',16654,16657,3,1),(3868,'La Orbada',33122,33127,3,2),(3869,'La Palma d\'Ebre',36964,36967,3,1),(3870,'La Palma de Cervelló',6402,6405,3,1),(3871,'La Palma del Condado',18080,18083,3,1),(3872,'La Parra',4868,4871,3,1),(3873,'La Parra de las Vegas',13436,13439,3,1),(3874,'La Parrilla',40976,40979,3,1),(3875,'La Pedraja de Portillo',40980,40983,3,1),(3876,'La Peña',33128,33131,3,1),(3877,'La Pera',14390,14393,3,1),(3878,'La Peraleja',13440,13443,3,1),(3879,'La Pernía',30778,30785,3,3),(3880,'La Pesga',9638,9641,3,1),(3881,'La Pesquera',13444,13447,3,1),(3882,'La Peza',15620,15625,3,2),(3883,'la Pobla de Benifassà',11588,11591,3,1),(3884,'La Pobla de Cérvoles',24028,24031,3,1),(3885,'La Pobla de Claramunt',6406,6409,3,1),(3886,'La Pobla de Lillet',6410,6413,3,1),(3887,'La Pobla de Mafumet',36968,36971,3,1),(3888,'La Pobla de Massaluca',36972,36975,3,1),(3889,'La Pobla de Montornès',36976,36979,3,1),(3890,'La Pobla de Segur',24032,24039,3,3),(3891,'la Pobla Tornesa',11592,11595,3,1),(3892,'La Pola de Gordón',22392,22409,3,8),(3893,'La Portella',24040,24043,3,1),(3894,'La Portellada',37988,37991,3,1),(3895,'La Póveda de Soria',36086,36089,3,1),(3896,'La Puebla de Alfindén',44078,44083,3,2),(3897,'La Puebla de Almoradiel',38862,38865,3,1),(3898,'La Puebla de Arganzón',8010,8013,3,1),(3899,'La Puebla de Castro',18940,18943,3,1),(3900,'La Puebla de Cazalla',35362,35365,3,1),(3901,'La Puebla de Híjar',37992,37997,3,2),(3902,'La Puebla de los Infantes',35366,35371,3,2),(3903,'La Puebla de Montalbán',38866,38871,3,2),(3904,'La Puebla de Valdavia',30786,30789,3,1),(3905,'La Puebla de Valverde',37998,38001,3,1),(3906,'La Puebla del Río',35372,35375,3,1),(3907,'La Pueblanueva',38872,38877,3,2),(3908,'La Puerta de Segura',19802,19807,3,2),(3909,'La Quar',6414,6417,3,1),(3910,'La Rambla',12718,12721,3,1),(3911,'La Recueja',632,635,3,1),(3912,'La Redonda',33132,33135,3,1),(3913,'La Revilla y Ahedo',8014,8017,3,1),(3914,'La Riba',36980,36983,3,1),(3915,'La Riba de Escalote',36090,36093,3,1),(3916,'La Riera de Gaià',36984,36987,3,1),(3917,'La Rinconada',35376,35381,3,2),(3918,'La Rinconada de la Sierra',33136,33139,3,1),(3919,'La Robla',22410,22417,3,3),(3920,'La Roca de la Sierra',4872,4875,3,1),(3921,'La Roca del Vallès',6418,6421,3,1),(3922,'La Roda',636,641,3,2),(3923,'La Roda de Andalucía',35382,35387,3,2),(3924,'la Romana',1386,1389,3,1),(3925,'La Sagrada',33140,33143,3,1),(3926,'la Salzadella',11596,11599,3,1),(3927,'La Seca',40984,40987,3,1),(3928,'La Secuita',36988,36993,3,2),(3929,'La Selva de Mar',14394,14397,3,1),(3930,'La Selva del Camp',36994,36997,3,1),(3931,'La Sénia',36998,37001,3,1),(3932,'La Sentiu de Sió',24044,24047,3,1),(3933,'La Sequera de Haza',8018,8021,3,1),(3934,'La Serna',30790,30793,3,1),(3935,'La Serna del Monte',26280,26283,3,1),(3936,'La Serrada',3868,3871,3,1),(3937,'la Serratella',11600,11603,3,1),(3938,'La Seu d\'Urgell',24048,24053,3,2),(3939,'La Sierpe',33144,33147,3,1),(3940,'La Solana',12172,12175,3,1),(3941,'La Sotonera',18944,18953,3,4),(3942,'La Taha',15626,15631,3,2),(3943,'La Tala',33148,33151,3,1),(3944,'La Tallada d\'Empordà',14398,14403,3,2),(3945,'La Toba',16658,16661,3,1),(3946,'La Torre',3872,3877,3,2),(3947,'la Torre d\'En Besora',11604,11607,3,1),(3948,'la Torre d\'en Doménec',11608,11611,3,1),(3949,'La Torre de Cabdella',24054,24065,3,5),(3950,'La Torre de Claramunt',6422,6425,3,1),(3951,'La Torre de Esteban Hambrán',38878,38881,3,1),(3952,'La Torre de Fontaubella',37002,37005,3,1),(3953,'La Torre de l\'Espanyol',37006,37009,3,1),(3954,'La Torre del Valle',42662,42665,3,1),(3955,'La Unión',27754,27763,3,4),(3956,'La Unión de Campos',40988,40991,3,1),(3957,'La Vajol',14404,14407,3,1),(3958,'la Vall d\'Alcalà',1390,1393,3,1),(3959,'la Vall d\'Ebo',1394,1397,3,1),(3960,'La Vall d\'en Bas',14408,14417,3,4),(3961,'la Vall d\'Uixó',11612,11615,3,1),(3962,'La Vall de Bianya',14418,14423,3,2),(3963,'La Vall de Boí',24066,24075,3,4),(3964,'la Vall de Laguar',1398,1401,3,1),(3965,'La Vansa i Fórnols',24076,24079,3,1),(3966,'La Vecilla',22418,22425,3,3),(3967,'La Vellés',33152,33155,3,1),(3968,'La Victoria',12722,12725,3,1),(3969,'La Vid de Bureba',8022,8025,3,1),(3970,'La Vid de Ojeda',30794,30797,3,1),(3971,'La Vid y Barrios',8026,8031,3,2),(3972,'La Vídola',33156,33159,3,1),(3973,'la Vilavella',11616,11619,3,1),(3974,'La Vilella Alta',37010,37013,3,1),(3975,'La Vilella Baixa',37014,37017,3,1),(3976,'La Villa de Don Fadrique',38882,38885,3,1),(3977,'La Vilueña',44084,44087,3,1),(3978,'La Yesa',40078,40081,3,1),(3979,'La Yunta',16662,16665,3,1),(3980,'La Zaida',44088,44091,3,1),(3981,'La Zarza',40992,40995,3,1),(3982,'La Zarza',4876,4877,3,0),(3983,'La Zarza de Pumareda',33160,33163,3,1),(3984,'La Zoma',38002,38005,3,1),(3985,'La Zubia',15632,15635,3,1),(3986,'Labajos',34522,34525,3,1),(3987,'Labastida/Bastida',182,189,3,3),(3988,'Labuerda',18954,18957,3,1),(3989,'Láchar',15636,15641,3,2),(3990,'Ladrillar',9642,9647,3,2),(3991,'Lagartera',38886,38889,3,1),(3992,'Lagartos',30798,30803,3,2),(3993,'Lagata',44092,44095,3,1),(3994,'Lagrán',190,195,3,2),(3995,'Laguardia',196,205,3,4),(3996,'Lagueruela',38006,38009,3,1),(3997,'Laguna Dalga',22426,22433,3,3),(3998,'Laguna de Cameros',21458,21461,3,1),(3999,'Laguna de Contreras',34526,34529,3,1),(4000,'Laguna de Duero',40996,41001,3,2),(4001,'Laguna de Negrillos',22434,22437,3,1),(4002,'Laguna del Marquesado',13448,13451,3,1),(4003,'Lagunaseca',13452,13455,3,1),(4004,'Lagunilla',33164,33167,3,1),(4005,'Lagunilla del Jubera',21462,21465,3,1),(4006,'Lahiguera',19808,19811,3,1),(4007,'Lakuntza',28782,28785,3,1),(4008,'Lalín',31710,31737,3,13),(4009,'Laluenga',18958,18961,3,1),(4010,'Lalueza',18962,18969,3,3),(4011,'Lamasón',10782,10785,3,1),(4012,'Lana',28786,28789,3,1),(4013,'Lanaja',18970,18977,3,3),(4014,'Láncara',25198,25221,3,11),(4015,'Lanciego/Lantziego',206,209,3,1),(4016,'Landete',13456,13461,3,2),(4017,'Lanestosa',41990,41993,3,1),(4018,'Langa',3878,3881,3,1),(4019,'Langa de Duero',36094,36101,3,3),(4020,'Langa del Castillo',44096,44099,3,1),(4021,'Langayo',41002,41005,3,1),(4022,'Langreo',2758,2775,3,8),(4023,'Languilla',34530,34533,3,1),(4024,'Lanjarón',15642,15645,3,1),(4025,'Lantadilla',30804,30807,3,1),(4026,'Lantarón',210,215,3,2),(4027,'Lanteira',15646,15649,3,1),(4028,'Lantejuela',35388,35391,3,1),(4029,'Lantz',28790,28793,3,1),(4030,'Lanzahíta',3882,3885,3,1),(4031,'Lanzuela',38010,38013,3,1),(4032,'Laperdiguera',18978,18981,3,1),(4033,'Lapoblación',28794,28797,3,1),(4034,'Lapuebla de Labarca',216,219,3,1),(4035,'Lardero',21466,21469,3,1),(4036,'Laredo',10786,10791,3,2),(4037,'Larouco',29788,29797,3,4),(4038,'Laroya',2002,2005,3,1),(4039,'Larrabetzu',41994,41997,3,1),(4040,'Larraga',28798,28801,3,1),(4041,'Larraona',28802,28805,3,1),(4042,'Larraul',17634,17637,3,1),(4043,'Larraun',28806,28815,3,4),(4044,'Larrodrigo',33168,33171,3,1),(4045,'Larva',19812,19815,3,1),(4046,'Las Aldehuelas',36102,36107,3,2),(4047,'Las Berlanas',3886,3889,3,1),(4048,'Las Cabezas de San Juan',35392,35397,3,2),(4049,'Las Casas del Conde',33172,33175,3,1),(4050,'Las Cuerlas',44100,44103,3,1),(4051,'Las Gabias',15650,15655,3,2),(4052,'Las Herencias',38890,38895,3,2),(4053,'Las Hormazas',8032,8037,3,2),(4054,'Las Inviernas',16666,16669,3,1),(4055,'Las Labores',12176,12179,3,1),(4056,'Las Majadas',13462,13465,3,1),(4057,'Las Mesas',13466,13469,3,1),(4058,'Las Navas de Jadraque',16670,16673,3,1),(4059,'Las Navas de la Concepción',35398,35401,3,1),(4060,'Las Navas del Marqués',3890,3895,3,2),(4061,'Las Omañas',22438,22441,3,1),(4062,'Las Parras de Castellote',38014,38017,3,1),(4063,'Las Pedroñeras',13470,13473,3,1),(4064,'Las Pedrosas',44104,44109,3,2),(4065,'Las Peñas de Riglos',18982,18995,3,6),(4066,'Las Quintanillas',8038,8041,3,1),(4067,'Las Regueras',2776,2785,3,4),(4068,'Las Rozas de Madrid',26284,26293,3,4),(4069,'Las Rozas de Valdearroyo',10792,10797,3,2),(4070,'Las Torres de Cotillas',27764,27767,3,1),(4071,'Las Tres Villas',2006,2011,3,2),(4072,'Las Valeras',13474,13479,3,2),(4073,'Las Veguillas',33176,33185,3,4),(4074,'Las Ventas con Peña Aguilera',38896,38899,3,1),(4075,'Las Ventas de Retamosa',38900,38903,3,1),(4076,'Las Ventas de San Julián',38904,38907,3,1),(4077,'Lasarte-Oria',17638,17641,3,1),(4078,'Lascellas-Ponzano',18996,18999,3,1),(4079,'Lascuarre',19000,19003,3,1),(4080,'Laspaúles',19004,19013,3,4),(4081,'Laspuña',19014,19017,3,1),(4082,'Lastras de Cuéllar',34534,34537,3,1),(4083,'Lastras del Pozo',34538,34541,3,1),(4084,'Laudio/Llodio',220,223,3,1),(4085,'Láujar de Andarax',2012,2015,3,1),(4086,'Laukiz',41998,42001,3,1),(4087,'Laviana',2786,2803,3,8),(4088,'Laxe',20516,20521,3,2),(4089,'Layana',44110,44113,3,1),(4090,'Layos',38908,38911,3,1),(4091,'Laza',29798,29807,3,4),(4092,'Lazagurría',28816,28819,3,1),(4093,'Lazkao',17642,17645,3,1),(4094,'Leaburu',17646,17649,3,1),(4095,'Leache/Leatxe',28820,28823,3,1),(4096,'Lebrija',35402,35405,3,1),(4097,'Lécera',44114,44117,3,1),(4098,'Lechón',44118,44121,3,1),(4099,'Leciñena',44122,44125,3,1),(4100,'Lecrín',15656,15663,3,3),(4101,'Ledaña',13480,13483,3,1),(4102,'Ledanca',16674,16677,3,1),(4103,'Ledesma',33186,33195,3,4),(4104,'Ledesma de la Cogolla',21470,21473,3,1),(4105,'Ledigos',30808,30811,3,1),(4106,'Ledrada',33196,33199,3,1),(4107,'Leganés',26294,26313,3,9),(4108,'Leganiel',13484,13487,3,1),(4109,'Legarda',28824,28827,3,1),(4110,'Legaria',28828,28831,3,1),(4111,'Legazpi',17650,17655,3,2),(4112,'Legorreta',17656,17659,3,1),(4113,'Legutio',224,231,3,3),(4114,'Leintz-Gatzaga',17660,17663,3,1),(4115,'Leioa',42002,42005,3,1),(4116,'Leiro',29808,29821,3,6),(4117,'Leitza',28832,28835,3,1),(4118,'Leiva',21474,21477,3,1),(4119,'Lekeitio',42006,42009,3,1),(4120,'Lekunberri',28836,28839,3,1),(4121,'Lemoa',42010,42013,3,1),(4122,'Lemoiz',42014,42017,3,1),(4123,'Lena',2804,2829,3,12),(4124,'Lentegí',15664,15667,3,1),(4125,'León',22442,22469,3,13),(4126,'Leoz/Leotz',28840,28845,3,2),(4127,'Lepe',18084,18091,3,3),(4128,'Lerga',28846,28849,3,1),(4129,'Lerín',28850,28853,3,1),(4130,'Lerma',8042,8053,3,5),(4131,'Les',24080,24083,3,1),(4132,'les Alqueries/Alquerías del Niño Perdido',11620,11623,3,1),(4133,'Les Avellanes i Santa Linya',24084,24089,3,2),(4134,'Les Borges Blanques',24090,24093,3,1),(4135,'Les Borges del Camp',37018,37021,3,1),(4136,'Les Cabanyes',6426,6429,3,1),(4137,'les Coves de Vinromà',11624,11627,3,1),(4138,'Les Franqueses del Vallès',6430,6435,3,2),(4139,'Les Llosses',14424,14431,3,3),(4140,'Les Masies de Roda',6436,6439,3,1),(4141,'Les Masies de Voltregà',6440,6445,3,2),(4142,'Les Oluges',24094,24097,3,1),(4143,'Les Piles',37022,37027,3,2),(4144,'Les Planes d\'Hostoles',14432,14437,3,2),(4145,'Les Preses',14438,14441,3,1),(4146,'Les Valls d\'Aguilar',24098,24103,3,2),(4147,'Les Valls de Valira',24104,24107,3,1),(4148,'Lesaka',28854,28859,3,2),(4149,'Letur',642,645,3,1),(4150,'Letux',44126,44129,3,1),(4151,'Leza',232,235,3,1),(4152,'Leza de Río Leza',21478,21481,3,1),(4153,'Lezama',42018,42021,3,1),(4154,'Lezáun',28860,28863,3,1),(4155,'Lezo',17664,17669,3,2),(4156,'Lezuza',646,651,3,2),(4157,'Librilla',27768,27771,3,1),(4158,'Libros',38018,38021,3,1),(4159,'Liceras',36108,36111,3,1),(4160,'Lidón',38022,38025,3,1),(4161,'Liédena',28864,28867,3,1),(4162,'Liendo',10798,10801,3,1),(4163,'Liérganes',10802,10809,3,3),(4164,'Liétor',652,659,3,3),(4165,'Líjar',2016,2019,3,1),(4166,'Lillo',38912,38915,3,1),(4167,'Limpias',10810,10815,3,2),(4168,'Linares',19816,19823,3,3),(4169,'Linares de la Sierra',18092,18095,3,1),(4170,'Linares de Mora',38026,38029,3,1),(4171,'Linares de Riofrío',33200,33203,3,1),(4172,'Linyola',24108,24111,3,1),(4173,'Liria',40082,40085,3,1),(4174,'Litago',44130,44133,3,1),(4175,'Lituénigo',44134,44137,3,1),(4176,'Lizartza',17670,17673,3,1),(4177,'Lizoáin-Arriasgoiti',28868,28877,3,4),(4178,'Lladó',14442,14445,3,1),(4179,'Lladorre',24112,24119,3,3),(4180,'Lladurs',24120,24125,3,2),(4181,'Llagostera',14446,14449,3,1),(4182,'Llamas de la Ribera',22470,22473,3,1),(4183,'Llambilles',14450,14453,3,1),(4184,'Llanars',14454,14457,3,1),(4185,'Llançà',14458,14461,3,1),(4186,'Llanera',2830,2851,3,10),(4187,'Llanera de Ranes',40086,40089,3,1),(4188,'Llanes',2852,2873,3,10),(4189,'Llano de Bureba',8054,8057,3,1),(4190,'Llano de Olmedo',41006,41009,3,1),(4191,'Llanos del Caudillo',12180,12183,3,1),(4192,'Llardecans',24126,24129,3,1),(4193,'Llaurí',40090,40093,3,1),(4194,'Llavorsí',24130,24135,3,2),(4195,'Lledó',38030,38033,3,1),(4196,'Lleida',24136,24177,3,20),(4197,'Llera',4878,4881,3,1),(4198,'Llerena',4882,4885,3,1),(4199,'Llers',14462,14465,3,1),(4200,'Lles de Cerdanya',24178,24181,3,1),(4201,'Llíber',1402,1405,3,1),(4202,'Lliçà d\'Amunt',6446,6449,3,1),(4203,'Lliçà de Vall',6450,6453,3,1),(4204,'Llimiana',24182,24187,3,2),(4205,'Llinars del Vallès',6454,6457,3,1),(4206,'Llívia',14466,14469,3,1),(4207,'Llobera',24188,24191,3,1),(4208,'Llombay',40094,40097,3,1),(4209,'Llorac',37028,37031,3,1),(4210,'Llorenç del Penedès',37032,37037,3,2),(4211,'Lloret de Mar',14470,14475,3,2),(4212,'Lloret de Vistalegre',5478,5481,3,1),(4213,'Lloseta',5482,5485,3,1),(4214,'Llubí',5486,5489,3,1),(4215,'Lluçà',6458,6461,3,1),(4216,'Llucena/Lucena del Cid',11628,11631,3,1),(4217,'Llucmajor',5490,5499,3,4),(4218,'Loarre',19018,19021,3,1),(4219,'Lobeira',29822,29835,3,6),(4220,'Lobera de Onsella',44138,44141,3,1),(4221,'Lobios',29836,29851,3,7),(4222,'Lobón',4886,4891,3,2),(4223,'Lobras',15668,15671,3,1),(4224,'Lodosa',28878,28881,3,1),(4225,'Loeches',26314,26317,3,1),(4226,'Logroño',21482,21501,3,9),(4227,'Logrosán',9648,9651,3,1),(4228,'Loiu',42022,42025,3,1),(4229,'Loja',15672,15683,3,5),(4230,'Loma de Ucieza',30812,30821,3,4),(4231,'Lomas',30822,30825,3,1),(4232,'Lominchar',38916,38919,3,1),(4233,'Lomoviejo',41010,41013,3,1),(4234,'Longares',44142,44145,3,1),(4235,'Longás',44146,44149,3,1),(4236,'Lónguida/Longida',28882,28889,3,3),(4237,'Lopera',19824,19827,3,1),(4238,'Loporzano',19022,19029,3,3),(4239,'Lora de Estepa',35406,35409,3,1),(4240,'Lora del Río',35410,35413,3,1),(4241,'Loranca de Tajuña',16678,16681,3,1),(4242,'Lorca',27772,27809,3,18),(4243,'Lorcha/l\'Orxa',1406,1409,3,1),(4244,'Loriguilla',40098,40101,3,1),(4245,'Lorquí',27810,27813,3,1),(4246,'Los Alcázares',27814,27817,3,1),(4247,'Los Altos',8058,8065,3,3),(4248,'Los Arcos',28890,28893,3,1),(4249,'Los Ausines',8066,8073,3,3),(4250,'Los Balbases',8074,8077,3,1),(4251,'Los Barrios',10380,10385,3,2),(4252,'Los Barrios de Bureba',8078,8083,3,2),(4253,'Los Barrios de Luna',22474,22479,3,2),(4254,'Los Blázquez',12726,12729,3,1),(4255,'Los Cerralbos',38920,38923,3,1),(4256,'Los Corrales',35414,35417,3,1),(4257,'Los Corrales de Buelna',10816,10823,3,3),(4258,'Los Cortijos',12184,12187,3,1),(4259,'Los Fayos',44150,44153,3,1),(4260,'Los Gallardos',2020,2027,3,3),(4261,'Los Guájares',15684,15687,3,1),(4262,'Los Hinojosos',13488,13491,3,1),(4263,'Los Huertos',34542,34545,3,1),(4264,'Los Llanos de Tormes',3896,3899,3,1),(4265,'Los Marines',18096,18099,3,1),(4266,'Los Molares',35418,35421,3,1),(4267,'Los Molinos',26318,26321,3,1),(4268,'Los Montesinos',1410,1413,3,1),(4269,'Los Navalmorales',38924,38927,3,1),(4270,'Los Navalucillos',38928,38935,3,3),(4271,'Los Olmos',38034,38037,3,1),(4272,'Los Palacios y Villafranca',35422,35429,3,3),(4273,'Los Pintanos',44154,44157,3,1),(4274,'Los Pozuelos de Calatrava',12188,12191,3,1),(4275,'Los Rábanos',36112,36117,3,2),(4276,'Los Santos',33204,33207,3,1),(4277,'Los Santos de la Humosa',26322,26325,3,1),(4278,'Los Santos de Maimona',4892,4895,3,1),(4279,'Los Tojos',10824,10829,3,2),(4280,'Los Valdecolmenas',13492,13495,3,1),(4281,'Los Villares',19828,19831,3,1),(4282,'Los Villares de Soria',36118,36123,3,2),(4283,'Los Yébenes',38936,38941,3,2),(4284,'Losa del Obispo',40102,40105,3,1),(4285,'Losacino',42666,42671,3,2),(4286,'Losacio',42672,42675,3,1),(4287,'Losar de la Vera',9652,9657,3,2),(4288,'Loscorrales',19030,19033,3,1),(4289,'Loscos',38038,38043,3,2),(4290,'Lourenzá',25222,25229,3,3),(4291,'Lousame',20522,20533,3,5),(4292,'Lozoya',26326,26329,3,1),(4293,'Lozoyuela-Navas-Sieteiglesias',26330,26337,3,3),(4294,'Lubián',42676,42683,3,3),(4295,'Lubrín',2028,2031,3,1),(4296,'Lucainena de las Torres',2032,2039,3,3),(4297,'Lúcar',2040,2045,3,2),(4298,'Lucena',12730,12743,3,6),(4299,'Lucena de Jalón',44158,44161,3,1),(4300,'Lucena del Puerto',18100,18103,3,1),(4301,'Luceni',44162,44165,3,1),(4302,'Luchente',40106,40109,3,1),(4303,'Luciana',12192,12195,3,1),(4304,'Lucillo',22480,22487,3,3),(4305,'Lucillos',38942,38945,3,1),(4306,'Ludiente',11632,11635,3,1),(4307,'Luelmo',42684,42687,3,1),(4308,'Luena',10830,10837,3,3),(4309,'Luesia',44166,44169,3,1),(4310,'Luesma',44170,44173,3,1),(4311,'Lugar Nuevo de Fenollet',40110,40113,3,1),(4312,'Lugar Nuevo de la Corona',40114,40117,3,1),(4313,'Lugar Nuevo de San Jerónimo',40118,40121,3,1),(4314,'Lugo',25230,25293,3,31),(4315,'Lugros',15688,15691,3,1),(4316,'Lújar',15692,15695,3,1),(4317,'Lumbier',28894,28897,3,1),(4318,'Lumbrales',33208,33211,3,1),(4319,'Lumbreras',21502,21505,3,1),(4320,'Lumpiaque',44174,44177,3,1),(4321,'Luna',44178,44183,3,2),(4322,'Lupiana',16682,16685,3,1),(4323,'Lupiñén-Ortilla',19034,19039,3,2),(4324,'Lupión',19832,19837,3,2),(4325,'Luque',12744,12751,3,3),(4326,'Luquin',28898,28901,3,1),(4327,'Luyego',22488,22493,3,2),(4328,'Luzaga',16686,16689,3,1),(4329,'Luzaide/Valcarlos',28902,28907,3,2),(4330,'Luzón',16690,16693,3,1),(4331,'Macael',2046,2049,3,1),(4332,'Maçanet de Cabrenys',14476,14481,3,2),(4333,'Maçanet de la Selva',14482,14485,3,1),(4334,'Macastre',40122,40125,3,1),(4335,'Maceda',29852,29867,3,7),(4336,'Machacón',33212,33215,3,1),(4337,'Macharaviaya',27244,27247,3,1),(4338,'Macotera',33216,33219,3,1),(4339,'Madarcos',26338,26341,3,1),(4340,'Maderuelo',34546,34549,3,1),(4341,'Madremanya',14486,14489,3,1),(4342,'Madrid',26342,26457,3,57),(4343,'Madridanos',42688,42691,3,1),(4344,'Madridejos',38946,38949,3,1),(4345,'Madrigal de la Vera',9658,9661,3,1),(4346,'Madrigal de las Altas Torres',3900,3903,3,1),(4347,'Madrigal del Monte',8084,8087,3,1),(4348,'Madrigalejo',9662,9665,3,1),(4349,'Madrigalejo del Monte',8088,8093,3,2),(4350,'Madrigueras',660,663,3,1),(4351,'Madroñal',33220,33223,3,1),(4352,'Madroñera',9666,9669,3,1),(4353,'Maella',44184,44187,3,1),(4354,'Maello',3904,3907,3,1),(4355,'Magacela',4896,4899,3,1),(4356,'Magallón',44188,44191,3,1),(4357,'Magán',38950,38953,3,1),(4358,'Magaña',36124,36127,3,1),(4359,'Magaz de Cepeda',22494,22499,3,2),(4360,'Magaz de Pisuerga',30826,30829,3,1),(4361,'Maguilla',4900,4903,3,1),(4362,'Mahamud',8094,8097,3,1),(4363,'Mahide',42692,42699,3,3),(4364,'Mahora',664,667,3,1),(4365,'Maià de Montcal',14490,14493,3,1),(4366,'Maials',24192,24195,3,1),(4367,'Maicas',38044,38047,3,1),(4368,'Mainar',44192,44195,3,1),(4369,'Maire de Castroponce',42700,42703,3,1),(4370,'Mairena del Alcor',35430,35433,3,1),(4371,'Mairena del Aljarafe',35434,35441,3,3),(4372,'Majadahonda',26458,26465,3,3),(4373,'Majadas',9670,9673,3,1),(4374,'Majaelrayo',16694,16697,3,1),(4375,'Maján',36128,36131,3,1),(4376,'Málaga',27248,27305,3,28),(4377,'Málaga del Fresno',16698,16701,3,1),(4378,'Malagón',12196,12205,3,4),(4379,'Malaguilla',16702,16705,3,1),(4380,'Malanquilla',44196,44199,3,1),(4381,'Malcocinado',4904,4907,3,1),(4382,'Maldà',24196,24199,3,1),(4383,'Maleján',44200,44203,3,1),(4384,'Malgrat de Mar',6462,6465,3,1),(4385,'Malla',6466,6469,3,1),(4386,'Mallabia',42026,42029,3,1),(4387,'Mallén',44204,44207,3,1),(4388,'Malón',44208,44211,3,1),(4389,'Malpartida',33224,33227,3,1),(4390,'Malpartida de Cáceres',9674,9679,3,2),(4391,'Malpartida de Corneja',3908,3911,3,1),(4392,'Malpartida de la Serena',4908,4911,3,1),(4393,'Malpartida de Plasencia',9680,9689,3,4),(4394,'Malpica de Bergantiños',20534,20541,3,3),(4395,'Malpica de Tajo',38954,38959,3,2),(4396,'Maluenda',44212,44215,3,1),(4397,'Malva',42704,42707,3,1),(4398,'Mamblas',3912,3915,3,1),(4399,'Mambrilla de Castrejón',8098,8101,3,1),(4400,'Mambrillas de Lara',8102,8107,3,2),(4401,'Mamolar',8108,8111,3,1),(4402,'Manacor',5500,5513,3,6),(4403,'Mañaria',42030,42033,3,1),(4404,'Mancera de Abajo',33228,33231,3,1),(4405,'Mancera de Arriba',3916,3919,3,1),(4406,'Mancha Real',19838,19843,3,2),(4407,'Manchita',4912,4915,3,1),(4408,'Manchones',44216,44219,3,1),(4409,'Manciles',8112,8115,3,1),(4410,'Mancor de la Vall',5514,5517,3,1),(4411,'Mandayona',16706,16709,3,1),(4412,'Mañeru',28908,28911,3,1),(4413,'Manganeses de la Lampreana',42708,42713,3,2),(4414,'Manganeses de la Polvorosa',42714,42717,3,1),(4415,'Manilva',27306,27311,3,2),(4416,'Manises',40126,40129,3,1),(4417,'Manjabálago y Ortigosa de Rioalmar',3920,3923,3,1),(4418,'Manjarrés',21506,21509,3,1),(4419,'Manlleu',6470,6473,3,1),(4420,'Mañón',20542,20547,3,2),(4421,'Manquillos',30830,30833,3,1),(4422,'Manresa',6474,6483,3,4),(4423,'Mansilla de la Sierra',21510,21513,3,1),(4424,'Mansilla de las Mulas',22500,22505,3,2),(4425,'Mansilla Mayor',22506,22509,3,1),(4426,'Mantiel',16710,16713,3,1),(4427,'Mantinos',30834,30837,3,1),(4428,'Manuel',40130,40133,3,1),(4429,'Manzanal de Arriba',42718,42723,3,2),(4430,'Manzanal de los Infantes',42724,42729,3,2),(4431,'Manzanal del Barco',42730,42733,3,1),(4432,'Manzanares',12206,12209,3,1),(4433,'Manzanares de Rioja',21514,21517,3,1),(4434,'Manzanares el Real',26466,26473,3,3),(4435,'Manzaneda',29868,29881,3,6),(4436,'Manzaneque',38960,38963,3,1),(4437,'Manzanera',38048,38055,3,3),(4438,'Manzanilla',18104,18107,3,1),(4439,'Manzanillo',41014,41017,3,1),(4440,'Maó-Mahón',5754,5767,3,6),(4441,'Maqueda',38964,38967,3,1),(4442,'Mara',44220,44223,3,1),(4443,'Maracena',15696,15699,3,1),(4444,'Maraña',22510,22513,3,1),(4445,'Maranchón',16714,16721,3,3),(4446,'Marañón',28912,28915,3,1),(4447,'Marazoleja',34550,34553,3,1),(4448,'Marazuela',34554,34557,3,1),(4449,'Marbella',27312,27329,3,8),(4450,'Marçà',37038,37043,3,2),(4451,'Marchagaz',9690,9693,3,1),(4452,'Marchal',15700,15703,3,1),(4453,'Marchamalo',16722,16725,3,1),(4454,'Marchena',35442,35445,3,1),(4455,'Marcilla',28916,28919,3,1),(4456,'Marcilla de Campos',30838,30841,3,1),(4457,'Margalef',37044,37047,3,1),(4458,'Marganell',6484,6487,3,1),(4459,'María',2050,2055,3,2),(4460,'María de Huerva',44224,44227,3,1),(4461,'Maria de la Salut',5518,5521,3,1),(4462,'Mariana',13496,13501,3,2),(4463,'Marín',31738,31753,3,7),(4464,'Marina de Cudeyo',10838,10847,3,4),(4465,'Marinaleda',35446,35449,3,1),(4466,'Marines',40134,40137,3,1),(4467,'Marjaliza',38968,38971,3,1),(4468,'Markina-Xemein',42034,42041,3,3),(4469,'Marlín',3924,3927,3,1),(4470,'Marmolejo',19844,19847,3,1),(4471,'Marracos',44228,44231,3,1),(4472,'Marratxí',5522,5525,3,1),(4473,'Marrupe',38972,38975,3,1),(4474,'Martiago',33232,33235,3,1),(4475,'Martiherrero',3928,3931,3,1),(4476,'Martín de la Jara',35450,35453,3,1),(4477,'Martín de Yeltes',33236,33241,3,2),(4478,'Martín del Río',38056,38061,3,2),(4479,'Martín Miguel',34558,34561,3,1),(4480,'Martín Muñoz de la Dehesa',34562,34565,3,1),(4481,'Martín Muñoz de las Posadas',34566,34569,3,1),(4482,'Martinamor',33242,33245,3,1),(4483,'Martínez',3932,3937,3,2),(4484,'Martorell',6488,6491,3,1),(4485,'Martorelles',6492,6495,3,1),(4486,'Martos',19848,19855,3,3),(4487,'Marugán',34570,34573,3,1),(4488,'Maruri-Jatabe',42042,42045,3,1),(4489,'Marzales',41018,41021,3,1),(4490,'Mas de Barberans',37048,37051,3,1),(4491,'Mas de las Matas',38062,38065,3,1),(4492,'Masalavés',40138,40141,3,1),(4493,'Masalfasar',40142,40145,3,1),(4494,'Masamagrell',40146,40149,3,1),(4495,'Masanasa',40150,40153,3,1),(4496,'Masarac',14494,14499,3,2),(4497,'Mascaraque',38976,38979,3,1),(4498,'Masdenverge',37052,37057,3,2),(4499,'Masegosa',13502,13505,3,1),(4500,'Masegoso',668,671,3,1),(4501,'Masegoso de Tajuña',16726,16729,3,1),(4502,'Maside',29882,29899,3,8),(4503,'Masllorenç',37058,37061,3,1),(4504,'Maspujols',37062,37065,3,1),(4505,'Masquefa',6496,6501,3,2),(4506,'Massalcoreig',24200,24203,3,1),(4507,'Massanes',14500,14503,3,1),(4508,'Massoteres',24204,24207,3,1),(4509,'Masueco',33246,33249,3,1),(4510,'Mata de Alcántara',9694,9697,3,1),(4511,'Mata de Cuéllar',34574,34577,3,1),(4512,'Matabuena',34578,34581,3,1),(4513,'Matadeón de los Oteros',22514,22517,3,1),(4514,'Matadepera',6502,6505,3,1),(4515,'Matalebreras',36132,36135,3,1),(4516,'Matallana de Torío',22518,22531,3,6),(4517,'Matamala de Almazán',36136,36139,3,1),(4518,'Matanza',22532,22535,3,1),(4519,'Matapozuelos',41022,41027,3,2),(4520,'Mataró',6506,6515,3,4),(4521,'Matarrubia',16730,16733,3,1),(4522,'Matet',11636,11639,3,1),(4523,'Matilla de Arzón',42734,42737,3,1),(4524,'Matilla de los Caños',41028,41031,3,1),(4525,'Matilla de los Caños del Río',33250,33255,3,2),(4526,'Matilla la Seca',42738,42741,3,1),(4527,'Matillas',16734,16737,3,1),(4528,'Matute',21518,21521,3,1),(4529,'Mayalde',42742,42745,3,1),(4530,'Mayorga',41032,41035,3,1),(4531,'Mazaleón',38066,38069,3,1),(4532,'Mazarambroz',38980,38985,3,2),(4533,'Mazarete',16738,16741,3,1),(4534,'Mazaricos',20548,20553,3,2),(4535,'Mazariegos',30842,30845,3,1),(4536,'Mazarrón',27818,27839,3,10),(4537,'Mazcuerras',10848,10853,3,2),(4538,'Mazuecos',16742,16745,3,1),(4539,'Mazuecos de Valdeginate',30846,30849,3,1),(4540,'Mazuela',8116,8119,3,1),(4541,'Meaño',31754,31763,3,4),(4542,'Mecerreyes',8120,8123,3,1),(4543,'Meco',26474,26477,3,1),(4544,'Medellín',4916,4919,3,1),(4545,'Mediana de Aragón',44232,44235,3,1),(4546,'Mediana de Voltoya',3938,3941,3,1),(4547,'Medina de las Torres',4920,4923,3,1),(4548,'Medina de Pomar',8124,8135,3,5),(4549,'Medina de Rioseco',41036,41041,3,2),(4550,'Medina del Campo',41042,41049,3,3),(4551,'Medina-Sidonia',10386,10391,3,2),(4552,'Medinaceli',36140,36149,3,4),(4553,'Medinilla',3942,3945,3,1),(4554,'Medio Cudeyo',10854,10865,3,5),(4555,'Mediona',6516,6519,3,1),(4556,'Medranda',16746,16749,3,1),(4557,'Medrano',21522,21525,3,1),(4558,'Megeces',41050,41053,3,1),(4559,'Megina',16750,16753,3,1),(4560,'Meira',25294,25301,3,3),(4561,'Meis',31764,31771,3,3),(4562,'Mejorada',38986,38991,3,2),(4563,'Mejorada del Campo',26478,26481,3,1),(4564,'Melgar de Abajo',41054,41057,3,1),(4565,'Melgar de Arriba',41058,41061,3,1),(4566,'Melgar de Fernamental',8136,8143,3,3),(4567,'Melgar de Tera',42746,42749,3,1),(4568,'Melgar de Yuso',30850,30853,3,1),(4569,'Meliana',40154,40157,3,1),(4570,'Mélida',28920,28923,3,1),(4571,'Melide',20554,20563,3,4),(4573,'Melón',29900,29905,3,2),(4574,'Melque de Cercos',34582,34585,3,1),(4575,'Membibre de la Hoz',34586,34589,3,1),(4576,'Membribe de la Sierra',33256,33259,3,1),(4577,'Membrilla',12210,12213,3,1),(4578,'Membrillera',16754,16757,3,1),(4579,'Membrío',9698,9701,3,1),(4580,'Meñaka',42046,42049,3,1),(4581,'Menàrguens',24208,24211,3,1),(4582,'Menasalbas',38992,38999,3,3),(4583,'Mendaro',17674,17677,3,1),(4584,'Mendata',42050,42053,3,1),(4585,'Mendavia',28924,28927,3,1),(4586,'Mendaza',28928,28933,3,2),(4587,'Mendexa',42054,42057,3,1),(4588,'Mendigorría',28934,28937,3,1),(4589,'Meneses de Campos',30854,30857,3,1),(4590,'Mengabril',4924,4927,3,1),(4591,'Mengamuñoz',3946,3949,3,1),(4592,'Mengíbar',19856,19859,3,1),(4593,'Méntrida',39000,39003,3,1),(4594,'Mequinenza',44236,44239,3,1),(4595,'Meranges',14504,14507,3,1),(4596,'Mérida',4928,4931,3,1),(4597,'Merindad de Cuesta-Urria',8144,8153,3,4),(4598,'Merindad de Montija',8154,8159,3,2),(4599,'Merindad de Río Ubierna',8160,8171,3,5),(4600,'Merindad de Sotoscueva',8172,8179,3,3),(4601,'Merindad de Valdeporres',8180,8187,3,3),(4602,'Merindad de Valdivielso',8188,8191,3,1),(4603,'Meruelo',10866,10869,3,1),(4604,'Mesas de Ibor',9702,9705,3,1),(4605,'Mesegar de Corneja',3950,3953,3,1),(4606,'Mesegar de Tajo',39004,39007,3,1),(4607,'Mesía',20564,20571,3,3),(4608,'Mesones de Isuela',44240,44243,3,1),(4609,'Mestanza',12214,12219,3,2),(4610,'Metauten',28938,28941,3,1),(4611,'Mezalocha',44244,44247,3,1),(4612,'Mezquita de Jarque',38070,38073,3,1),(4613,'Miajadas',9706,9711,3,2),(4614,'Mianos',44248,44251,3,1),(4615,'Micereces de Tera',42750,42753,3,1),(4616,'Micieces de Ojeda',30858,30861,3,1),(4617,'Miedes de Aragón',44252,44255,3,1),(4618,'Miedes de Atienza',16758,16761,3,1),(4619,'Miengo',10870,10877,3,3),(4620,'Miera',10878,10885,3,3),(4621,'Mieres',14508,14569,3,30),(4622,'Mieres',2874,2907,3,16),(4623,'Mieza',33260,33263,3,1),(4624,'Miguel Esteban',39008,39013,3,2),(4625,'Migueláñez',34590,34593,3,1),(4626,'Miguelturra',12220,12225,3,2),(4627,'Mijares',3954,3957,3,1),(4628,'Mijas',27330,27341,3,5),(4629,'Milagro',28942,28945,3,1),(4630,'Milagros',8192,8195,3,1),(4631,'Millana',16762,16765,3,1),(4632,'Millanes',9712,9715,3,1),(4633,'Millares',40158,40161,3,1),(4634,'Millena',1414,1417,3,1),(4635,'Milles de la Polvorosa',42754,42757,3,1),(4636,'Milmarcos',16766,16769,3,1),(4637,'Minas de Riotinto',18108,18113,3,2),(4638,'Minaya',672,675,3,1),(4639,'Minglanilla',13506,13509,3,1),(4640,'Mingorría',3958,3963,3,2),(4641,'Miño',20572,20581,3,4),(4642,'Miño de Medinaceli',36150,36155,3,2),(4643,'Miño de San Esteban',36156,36159,3,1),(4644,'Mira',13510,13513,3,1),(4645,'Mirabel',9716,9719,3,1),(4646,'Mirabueno',16770,16773,3,1),(4647,'Miraflores de la Sierra',26482,26485,3,1),(4648,'Mirafuentes',28946,28949,3,1),(4649,'Miralcamp',24212,24215,3,1),(4650,'Miralrío',16774,16777,3,1),(4651,'Miramar',40162,40165,3,1),(4652,'Mirambel',38074,38077,3,1),(4653,'Miranda de Arga',28950,28955,3,2),(4654,'Miranda de Azán',33264,33267,3,1),(4655,'Miranda de Ebro',8196,8209,3,6),(4656,'Miranda del Castañar',33268,33271,3,1),(4657,'Mirandilla',4932,4935,3,1),(4658,'Miraveche',8210,8213,3,1),(4659,'Miravet',37066,37069,3,1),(4660,'Miravete de la Sierra',38078,38081,3,1),(4661,'Mironcillo',3964,3967,3,1),(4662,'Mirueña de los Infanzones',3968,3971,3,1),(4663,'Mislata',40166,40169,3,1),(4664,'Moaña',31772,31785,3,6),(4665,'Mocejón',39014,39017,3,1),(4666,'Mochales',16778,16781,3,1),(4667,'Moclín',15704,15711,3,3),(4668,'Moclinejo',27342,27345,3,1),(4669,'Modúbar de la Emparedada',8214,8217,3,1),(4670,'Moeche',20582,20587,3,2),(4671,'Mogarraz',33272,33275,3,1),(4672,'Mogente',40170,40173,3,1),(4673,'Moguer',18114,18119,3,2),(4674,'Mohedas de Granadilla',9720,9723,3,1),(4675,'Mohedas de la Jara',39018,39023,3,2),(4676,'Mohernando',16782,16785,3,1),(4677,'Moià',6520,6523,3,1),(4678,'Mojácar',2056,2061,3,2),(4679,'Mojados',41062,41065,3,1),(4680,'Molacillos',42758,42761,3,1),(4681,'Molezuelas de la Carballeda',42762,42765,3,1),(4682,'Molina de Aragón',16786,16797,3,5),(4683,'Molina de Segura',27840,27851,3,5),(4684,'Molinaseca',22536,22541,3,2),(4685,'Molinicos',676,683,3,3),(4686,'Molinillo',33276,33279,3,1),(4687,'Molinos',38082,38085,3,1),(4688,'Molinos de Duero',36160,36165,3,2),(4689,'Molins de Rei',6524,6527,3,1),(4690,'Molledo',10886,10895,3,4),(4691,'Mollerussa',24216,24219,3,1),(4692,'Mollet de Peralada',14570,14573,3,1),(4693,'Mollet del Vallès',6528,6533,3,2),(4694,'Mollina',27346,27349,3,1),(4695,'Molló',14574,14577,3,1),(4696,'Molvízar',15712,15715,3,1),(4697,'Mombeltrán',3972,3977,3,2),(4698,'Momblona',36166,36169,3,1),(4699,'Mombuey',42766,42773,3,3),(4700,'Monachil',15716,15721,3,2),(4701,'Monasterio',16798,16801,3,1),(4702,'Monasterio de la Sierra',8218,8221,3,1),(4703,'Monasterio de Rodilla',8222,8225,3,1),(4704,'Monasterio de Vega',41066,41069,3,1),(4705,'Moncada',40174,40177,3,1),(4706,'Moncalvillo',8226,8229,3,1),(4707,'Moncofa',11640,11643,3,1),(4708,'Monda',27350,27353,3,1),(4709,'Mondariz',31786,31801,3,7),(4710,'Mondariz-Balneario',31802,31805,3,1),(4711,'Mondéjar',16802,16805,3,1),(4712,'Mondoñedo',25302,25317,3,7),(4713,'Monegrillo',44256,44259,3,1),(4714,'Monesma y Cajigar',19040,19043,3,1),(4715,'Monesterio',4936,4939,3,1),(4716,'Moneva',44260,44263,3,1),(4717,'Monfarracinos',42774,42777,3,1),(4718,'Monfero',20588,20597,3,4),(4719,'Monflorite-Lascasas',19044,19049,3,2),(4720,'Monforte de la Sierra',33280,33283,3,1),(4721,'Monforte de Lemos',25318,25349,3,15),(4722,'Monforte de Moyuela',38086,38089,3,1),(4723,'Monforte del Cid',1418,1423,3,2),(4724,'Monistrol de Calders',6534,6537,3,1),(4725,'Monistrol de Montserrat',6538,6541,3,1),(4726,'Monleón',33284,33287,3,1),(4727,'Monleras',33288,33291,3,1),(4728,'Monóvar/Monòver',1424,1429,3,2),(4729,'Monreal de Ariza',44264,44269,3,2),(4730,'Monreal del Campo',38090,38093,3,1),(4731,'Monreal del Llano',13514,13517,3,1),(4732,'Monreal/Elo',28956,28959,3,1),(4733,'Monroy',9724,9727,3,1),(4734,'Monroyo',38094,38097,3,1),(4735,'Monsagro',33292,33295,3,1),(4736,'Monsalupe',3978,3981,3,1),(4737,'Mont-ral',37070,37075,3,2),(4738,'Mont-ras',14578,14581,3,1),(4739,'Mont-roig del Camp',37076,37083,3,3),(4740,'Montagut i Oix',14582,14587,3,2),(4741,'Montalbán',38098,38103,3,2),(4742,'Montalbán de Córdoba',12752,12755,3,1),(4743,'Montalbanejo',13518,13521,3,1),(4744,'Montalbo',13522,13525,3,1),(4745,'Montalvos',684,687,3,1),(4746,'Montamarta',42778,42781,3,1),(4747,'Montán',11644,11647,3,1),(4748,'Montánchez',9728,9731,3,1),(4749,'Montanejos',11648,11651,3,1),(4750,'Montanuy',19050,19059,3,4),(4751,'Montarrón',16806,16809,3,1),(4752,'Montaverner',40178,40181,3,1),(4753,'Montblanc',37084,37095,3,5),(4754,'Montbrió del Camp',37096,37099,3,1),(4755,'Montcada i Reixac',6542,6545,3,1),(4756,'Montclar',6546,6549,3,1),(4757,'Monteagudo',28960,28963,3,1),(4758,'Monteagudo de las Salinas',13526,13529,3,1),(4759,'Monteagudo de las Vicarías',36170,36173,3,1),(4760,'Monteagudo del Castillo',38104,38107,3,1),(4761,'Montealegre de Campos',41070,41075,3,2),(4762,'Montealegre del Castillo',688,691,3,1),(4763,'Montearagón',39024,39027,3,1),(4764,'Montecorto',27354,27355,3,0),(4765,'Montederramo',29906,29915,3,4),(4766,'Montefrío',15722,15725,3,1),(4767,'Montehermoso',9732,9735,3,1),(4768,'Montejaque',27356,27359,3,1),(4769,'Montejícar',15726,15729,3,1),(4770,'Montejo',33296,33299,3,1),(4771,'Montejo de Arévalo',34594,34597,3,1),(4772,'Montejo de la Sierra',26486,26489,3,1),(4773,'Montejo de la Vega de la Serrezuela',34598,34601,3,1),(4774,'Montejo de Tiermes',36174,36187,3,6),(4775,'Montellà i Martinet',24220,24225,3,2),(4776,'Montellano',35454,35457,3,1),(4777,'Montemayor',12756,12761,3,2),(4778,'Montemayor de Pililla',41076,41079,3,1),(4779,'Montemayor del Río',33300,33303,3,1),(4780,'Montemolín',4940,4947,3,3),(4781,'Montenegro de Cameros',36188,36191,3,1),(4782,'Monterde',44270,44273,3,1),(4783,'Monterde de Albarracín',38108,38111,3,1),(4784,'Monterrei',29916,29923,3,3),(4785,'Monterroso',25350,25361,3,5),(4786,'Monterrubio',34602,34605,3,1),(4787,'Monterrubio de Armuña',33304,33307,3,1),(4788,'Monterrubio de la Demanda',8230,8233,3,1),(4789,'Monterrubio de la Serena',4948,4951,3,1),(4790,'Monterrubio de la Sierra',33308,33311,3,1),(4791,'Montesa',40182,40185,3,1),(4792,'Montesclaros',39028,39031,3,1),(4793,'Montesquiu',6550,6553,3,1),(4794,'Montferrer i Castellbò',24226,24233,3,3),(4795,'Montferri',37100,37103,3,1),(4796,'Montgai',24234,24239,3,2),(4797,'Montgat',6554,6557,3,1),(4798,'Montichelvo',40186,40189,3,1),(4799,'Montiel',12226,12229,3,1),(4800,'Montijo',4952,4965,3,6),(4801,'Montilla',12762,12765,3,1),(4802,'Montillana',15730,15733,3,1),(4803,'Montizón',19860,19867,3,3),(4804,'Montmajor',6558,6561,3,1),(4805,'Montmaneu',6562,6565,3,1),(4806,'Montmeló',6566,6569,3,1),(4807,'Montoliu de Lleida',24240,24243,3,1),(4808,'Montoliu de Segarra',24244,24247,3,1),(4809,'Montón',44274,44277,3,1),(4810,'Montorio',8234,8237,3,1),(4811,'Montornès de Segarra',24248,24251,3,1),(4812,'Montornès del Vallès',6570,6573,3,1),(4813,'Montoro',12766,12769,3,1),(4814,'Montroy',40190,40193,3,1),(4815,'Montseny',6574,6577,3,1),(4816,'Montserrat',40194,40197,3,1),(4817,'Montuïri',5526,5529,3,1),(4818,'Monturque',12770,12773,3,1),(4819,'Monzón',19060,19067,3,3),(4820,'Monzón de Campos',30862,30867,3,2),(4821,'Mora',39032,39035,3,1),(4822,'Móra d\'Ebre',37104,37107,3,1),(4823,'Mora de Rubielos',38112,38115,3,1),(4824,'Móra la Nova',37108,37111,3,1),(4825,'Moradillo de Roa',8238,8241,3,1),(4826,'Moral de Calatrava',12230,12233,3,1),(4827,'Moral de Hornuez',34606,34609,3,1),(4828,'Moral de la Reina',41080,41083,3,1),(4829,'Moral de Sayago',42782,42785,3,1),(4830,'Moraleda de Zafayona',15734,15737,3,1),(4831,'Moraleja',9736,9739,3,1),(4832,'Moraleja de Enmedio',26490,26493,3,1),(4833,'Moraleja de las Panaderas',41084,41087,3,1),(4834,'Moraleja de Matacabras',3982,3985,3,1),(4835,'Moraleja de Sayago',42786,42789,3,1),(4836,'Moraleja del Vino',42790,42793,3,1),(4837,'Morales de Campos',41088,41091,3,1),(4838,'Morales de Rey',42794,42797,3,1),(4839,'Morales de Toro',42798,42801,3,1),(4840,'Morales de Valverde',42802,42805,3,1),(4841,'Morales del Vino',42806,42811,3,2),(4842,'Moralina',42812,42815,3,1),(4843,'Moralzarzal',26494,26497,3,1),(4844,'Moraña',31806,31813,3,3),(4845,'Morasverdes',33312,33315,3,1),(4846,'Morata de Jalón',44278,44281,3,1),(4847,'Morata de Jiloca',44282,44285,3,1),(4848,'Morata de Tajuña',26498,26501,3,1),(4849,'Moratalla',27852,27871,3,9),(4850,'Moratilla de los Meleros',16810,16813,3,1),(4851,'Moratinos',30868,30871,3,1),(4852,'Morcillo',9740,9743,3,1),(4853,'Morcín',2908,2915,3,3),(4854,'Moreda de Álava/Moreda Araba',236,239,3,1),(4855,'Morelábor',15738,15741,3,1),(4856,'Morella',11652,11655,3,1),(4857,'Morenilla',16814,16817,3,1),(4858,'Morentin',28964,28967,3,1),(4859,'Moreruela de los Infanzones',42816,42819,3,1),(4860,'Moreruela de Tábara',42820,42823,3,1),(4861,'Morés',44286,44291,3,2),(4862,'Morga',42058,42061,3,1),(4863,'Moriles',12774,12777,3,1),(4864,'Morille',33316,33319,3,1),(4865,'Moríñigo',33320,33323,3,1),(4866,'Moriscos',33324,33327,3,1),(4867,'Morón de Almazán',36192,36197,3,2),(4868,'Morón de la Frontera',35458,35461,3,1),(4869,'Moronta',33328,33335,3,3),(4870,'Moros',44292,44295,3,1),(4871,'Mos',31814,31827,3,6),(4872,'Moscardón',38116,38119,3,1),(4873,'Mosqueruela',38120,38123,3,1),(4874,'Móstoles',26502,26521,3,9),(4875,'Mota de Altarejos',13530,13533,3,1),(4876,'Mota del Cuervo',13534,13537,3,1),(4877,'Mota del Marqués',41092,41095,3,1),(4878,'Motilla del Palancar',13538,13541,3,1),(4879,'Motilleja',692,695,3,1),(4880,'Motril',15742,15757,3,7),(4882,'Moyuela',44296,44299,3,1),(4883,'Mozárbez',33336,33345,3,4),(4884,'Mozoncillo',34610,34613,3,1),(4885,'Mozota',44300,44303,3,1),(4886,'Mucientes',41096,41099,3,1),(4887,'Mudá',30872,30875,3,1),(4888,'Muduex',16818,16821,3,1),(4889,'Muel',44304,44309,3,2),(4890,'Muelas de los Caballeros',42824,42831,3,3),(4891,'Muelas del Pan',42832,42839,3,3),(4892,'Mues',28968,28971,3,1),(4893,'Muga de Sayago',42840,42843,3,1),(4894,'Mugardos',20598,20605,3,3),(4895,'Muíños',29924,29933,3,4),(4896,'Mula',27872,27881,3,4),(4897,'Muñana',3986,3989,3,1),(4898,'Mundaka',42062,42065,3,1),(4899,'Munébrega',44310,44313,3,1),(4900,'Munera',696,699,3,1),(4901,'Mungia',42066,42071,3,2),(4902,'Muñico',3990,3993,3,1),(4903,'Muniesa',38124,38127,3,1),(4904,'Munilla',21526,21529,3,1),(4905,'Munitibar-Arbatzegi Gerrikaitz',42072,42075,3,1),(4906,'Muñogalindo',3994,3997,3,1),(4907,'Muñogrande',3998,4003,3,2),(4908,'Muñomer del Peco',4004,4007,3,1),(4909,'Muñopedro',34614,34617,3,1),(4910,'Muñopepe',4008,4011,3,1),(4911,'Muñosancho',4012,4015,3,1),(4912,'Muñotello',4016,4019,3,1),(4913,'Muñoveros',34618,34621,3,1),(4914,'Muntanyola',6578,6583,3,2),(4915,'Mura',6584,6587,3,1),(4916,'Muras',25362,25371,3,4),(4917,'Murchante',28972,28975,3,1),(4918,'Murcia',27882,28005,3,61),(4919,'Murero',44314,44317,3,1),(4920,'Murias de Paredes',22542,22555,3,6),(4921,'Muriel',41100,41103,3,1),(4922,'Muriel de la Fuente',36198,36201,3,1),(4923,'Muriel Viejo',36202,36205,3,1),(4924,'Murieta',28976,28979,3,1),(4925,'Murillo de Gállego',44318,44323,3,2),(4926,'Murillo de Río Leza',21530,21533,3,1),(4927,'Murillo el Cuende',28980,28987,3,3),(4928,'Murillo el Fruto',28988,28991,3,1),(4929,'Murla',1430,1433,3,1),(4930,'Muro',5530,5535,3,2),(4931,'Muro de Aguas',21534,21537,3,1),(4932,'Muro de Alcoy',1434,1439,3,2),(4933,'Muro en Cameros',21538,21541,3,1),(4934,'Muros',20606,20619,3,6),(4935,'Muros de Nalón',2916,2921,3,2),(4936,'Murtas',15758,15763,3,2),(4937,'Murueta',42076,42079,3,1),(4938,'Muruzábal',28992,28995,3,1),(4939,'Museros',40198,40201,3,1),(4940,'Muskiz',42080,42083,3,1),(4941,'Mutiloa',17678,17681,3,1),(4942,'Mutriku',17682,17685,3,1),(4943,'Mutxamel',1440,1443,3,1),(4944,'Muxía',20620,20627,3,3),(4945,'Muxika',42084,42089,3,2),(4946,'Nabarniz',42090,42093,3,1),(4947,'Nacimiento',2062,2065,3,1),(4948,'Nafría de Ucero',36206,36209,3,1),(4949,'Nájera',21542,21547,3,2),(4950,'Nalda',21548,21553,3,2),(4951,'Nalec',24252,24255,3,1),(4952,'Nambroca',39036,39041,3,2),(4953,'Náquera',40202,40205,3,1),(4954,'Narboneta',13544,13547,3,1),(4955,'Narón',20628,20647,3,9),(4956,'Narrillos del Álamo',4020,4023,3,1),(4957,'Narrillos del Rebollar',4024,4027,3,1),(4958,'Narros',36210,36213,3,1),(4959,'Narros de Matalayegua',33346,33351,3,2),(4960,'Narros de Saldueña',4028,4031,3,1),(4961,'Narros del Castillo',4032,4035,3,1),(4962,'Narros del Puerto',4036,4039,3,1),(4963,'Naut Aran',24256,24263,3,3),(4964,'Nava',2922,2933,3,5),(4965,'Nava de Arévalo',4040,4043,3,1),(4966,'Nava de Béjar',33352,33355,3,1),(4967,'Nava de Francia',33356,33359,3,1),(4968,'Nava de la Asunción',34622,34627,3,2),(4969,'Nava de Roa',8242,8245,3,1),(4970,'Nava de Sotrobal',33360,33363,3,1),(4971,'Nava del Barco',4044,4047,3,1),(4972,'Nava del Rey',41104,41107,3,1),(4973,'Navacarros',33364,33367,3,1),(4974,'Navacepedilla de Corneja',4048,4051,3,1),(4975,'Navacerrada',26522,26525,3,1),(4976,'Navaconcejo',9744,9747,3,1),(4977,'Navadijos',4052,4055,3,1),(4978,'Navaescurial',4056,4059,3,1),(4979,'Navafría',34628,34631,3,1),(4980,'Navahermosa',39042,39047,3,2),(4981,'Navahondilla',4060,4063,3,1),(4982,'Navajas',11656,11659,3,1),(4983,'Navajún',21554,21557,3,1),(4984,'Naval',19068,19073,3,2),(4985,'Navalacruz',4064,4067,3,1),(4986,'Navalafuente',26526,26529,3,1),(4987,'Navalagamella',26530,26537,3,3),(4988,'Navalcán',39048,39051,3,1),(4989,'Navalcarnero',26538,26541,3,1),(4990,'Navaleno',36214,36217,3,1),(4991,'Navales',33368,33371,3,1),(4992,'Navalilla',34632,34635,3,1),(4993,'Navalmanzano',34636,34639,3,1),(4994,'Navalmoral',4068,4071,3,1),(4995,'Navalmoral de Béjar',33372,33375,3,1),(4996,'Navalmoral de la Mata',9748,9751,3,1),(4997,'Navalmoralejo',39052,39055,3,1),(4998,'Navalonguilla',4072,4075,3,1),(4999,'Navalosa',4076,4079,3,1),(5000,'Navalperal de Pinares',4080,4083,3,1),(5001,'Navalperal de Tormes',4084,4089,3,2),(5002,'Navalpino',12234,12237,3,1),(5003,'Navaluenga',4090,4093,3,1),(5004,'Navalvillar de Ibor',9752,9755,3,1),(5005,'Navalvillar de Pela',4966,4973,3,3),(5006,'Navamorales',33376,33379,3,1),(5007,'Navamorcuende',39056,39059,3,1),(5008,'Navaquesera',4094,4097,3,1),(5009,'Navarcles',6588,6591,3,1),(5010,'Navardún',44324,44329,3,2),(5011,'Navares de Ayuso',34640,34645,3,2),(5012,'Navares de Enmedio',34646,34649,3,1),(5013,'Navares de las Cuevas',34650,34653,3,1),(5014,'Navaridas',240,243,3,1),(5015,'Navarredonda de Gredos',4098,4101,3,1),(5016,'Navarredonda de la Rinconada',33380,33383,3,1),(5017,'Navarredonda y San Mamés',26542,26545,3,1),(5018,'Navarredondilla',4102,4105,3,1),(5019,'Navarrés',40206,40209,3,1),(5020,'Navarrete',21558,21561,3,1),(5021,'Navarrevisca',4106,4109,3,1),(5022,'Navàs',6592,6597,3,2),(5023,'Navas de Bureba',8246,8249,3,1),(5024,'Navas de Estena',12238,12241,3,1),(5025,'Navas de Jorquera',700,703,3,1),(5026,'Navas de Oro',34654,34657,3,1),(5027,'Navas de Riofrío',34658,34661,3,1),(5028,'Navas de San Antonio',34662,34665,3,1),(5029,'Navas de San Juan',19868,19871,3,1),(5030,'Navas del Madroño',9756,9759,3,1),(5031,'Navas del Rey',26546,26549,3,1),(5032,'Navascués/Nabaskoze',28996,29003,3,3),(5033,'Navasfrías',33384,33387,3,1),(5034,'Navata',14588,14591,3,1),(5035,'Navatalgordo',4110,4113,3,1),(5036,'Navatejares',4114,4117,3,1),(5037,'Navès',24264,24267,3,1),(5038,'Navezuelas',9760,9763,3,1),(5039,'Navia',2934,2943,3,4),(5040,'Navia de Suarna',25372,25393,3,10),(5041,'Navianos de Valverde',42844,42847,3,1),(5042,'Nazar',29004,29007,3,1),(5043,'Nebreda',8250,8253,3,1),(5044,'Neda',20648,20655,3,3),(5045,'Negredo',16822,16825,3,1),(5046,'Negreira',20656,20665,3,4),(5047,'Negrilla de Palencia',33388,33391,3,1),(5048,'Negueira de Muñiz',25394,25397,3,1),(5049,'Neila',8254,8257,3,1),(5050,'Neila de San Miguel',4118,4121,3,1),(5051,'Nepas',36218,36221,3,1),(5052,'Nerja',27360,27365,3,2),(5053,'Nerpio',704,719,3,7),(5054,'Nerva',18120,18123,3,1),(5055,'Nestares',21562,21565,3,1),(5056,'Nevada',15764,15769,3,2),(5057,'Niebla',18124,18127,3,1),(5058,'Nieva',34666,34669,3,1),(5059,'Nieva de Cameros',21566,21569,3,1),(5060,'Nigrán',31828,31841,3,6),(5061,'Nigüelas',15770,15773,3,1),(5062,'Nigüella',44330,44333,3,1),(5063,'Niharra',4122,4125,3,1),(5064,'Níjar',2066,2093,3,13),(5065,'Nívar',15774,15777,3,1),(5066,'Noáin (Valle de Elorz)/Noain (Elortzibar)',29008,29015,3,3),(5067,'Noalejo',19872,19875,3,1),(5068,'Noblejas',39060,39063,3,1),(5069,'Noceda del Bierzo',22556,22561,3,2),(5070,'Noez',39064,39067,3,1),(5071,'Nogal de las Huertas',30876,30879,3,1),(5072,'Nogales',4974,4977,3,1),(5073,'Nogueira de Ramuín',29934,29953,3,9),(5074,'Noguera de Albarracín',38128,38131,3,1),(5075,'Nogueras',38132,38135,3,1),(5076,'Nogueruelas',38136,38139,3,1),(5077,'Noia',20666,20677,3,5),(5078,'Noja',10896,10899,3,1),(5079,'Nolay',36222,36225,3,1),(5080,'Nombela',39068,39071,3,1),(5081,'Nombrevilla',44334,44337,3,1),(5082,'Nonaspe',44338,44341,3,1),(5083,'Noreña',2944,2947,3,1),(5084,'Novales',19074,19077,3,1),(5085,'Novallas',44342,44345,3,1),(5086,'Novelda',1444,1447,3,1),(5087,'Novelé',40210,40213,3,1),(5088,'Novés',39072,39075,3,1),(5089,'Noviercas',36226,36231,3,2),(5090,'Novillas',44346,44349,3,1),(5091,'Nueno',19078,19083,3,2),(5092,'Nueva Carteya',12778,12783,3,2),(5093,'Nueva Villa de las Torres',41108,41111,3,1),(5094,'Nuévalos',44350,44355,3,2),(5095,'Nuevo Baztán',26550,26553,3,1),(5096,'Nuez de Ebro',44356,44359,3,1),(5097,'Nules',11660,11665,3,2),(5098,'Nulles',37112,37115,3,1),(5099,'Numancia de la Sagra',39076,39079,3,1),(5100,'Nuño Gómez',39080,39083,3,1),(5101,'Nuñomoral',9764,9775,3,5),(5102,'O Barco de Valdeorras',29954,29967,3,6),(5103,'O Bolo',29968,29979,3,5),(5104,'O Carballiño',29980,29997,3,8),(5105,'O Corgo',25398,25411,3,6),(5106,'O Grove',31842,31851,3,4),(5107,'O Incio',25412,25425,3,6),(5108,'O Irixo',29998,30013,3,7),(5109,'O Páramo',25426,25437,3,5),(5110,'O Pereiro de Aguiar',30014,30023,3,4),(5111,'O Pino',20678,20689,3,5),(5112,'O Porriño',31852,31869,3,8),(5113,'O Rosal',31870,31877,3,3),(5114,'O Saviñao',25438,25459,3,10),(5115,'O Valadouro',25460,25471,3,5),(5116,'O Vicedo',25472,25479,3,3),(5117,'Obanos',29016,29019,3,1),(5118,'Obejo',12784,12791,3,3),(5119,'Obón',38140,38143,3,1),(5120,'Ocaña',39084,39087,3,1),(5121,'Ocentejo',16826,16829,3,1),(5122,'Ochagavía/Otsagabia',29020,29023,3,1),(5123,'Ochánduri',21570,21573,3,1),(5124,'Oco',29024,29027,3,1),(5125,'Ocón',21574,21583,3,4),(5126,'Odèn',24268,24273,3,2),(5127,'Òdena',6598,6601,3,1),(5128,'Odieta',29028,29033,3,2),(5129,'Odón',38144,38147,3,1),(5130,'Oencia',22562,22571,3,4),(5131,'Ogassa',14592,14595,3,1),(5132,'Ogíjares',15778,15781,3,1),(5133,'Ohanes',2094,2097,3,1),(5134,'Oia',31878,31885,3,3),(5135,'Oiartzun',17686,17689,3,1),(5136,'Oímbra',30024,30029,3,2),(5137,'Oiz',29034,29037,3,1),(5138,'Ojacastro',21584,21587,3,1),(5139,'Ojén',27366,27371,3,2),(5140,'Ojós',28006,28009,3,1),(5141,'Ojos Negros',38148,38153,3,2),(5142,'Ojos-Albos',4126,4129,3,1),(5143,'Okondo',244,247,3,1),(5144,'Olaberria',17690,17693,3,1),(5145,'Olaibar',29038,29041,3,1),(5146,'Olazti/Olazagutía',29042,29045,3,1),(5147,'Olba',38154,38159,3,2),(5148,'Olea de Boedo',30880,30883,3,1),(5149,'Oleiros',20690,20705,3,7),(5150,'Olejua',29046,29049,3,1),(5151,'Olèrdola',6602,6607,3,2),(5152,'Olesa de Bonesvalls',6608,6611,3,1),(5153,'Olesa de Montserrat',6612,6615,3,1),(5154,'Oliana',24274,24277,3,1),(5155,'Olías del Rey',39088,39091,3,1),(5156,'Oliete',38160,38163,3,1),(5157,'Oliola',24278,24285,3,3),(5158,'Olite/Erriberri',29050,29053,3,1),(5159,'Olius',24286,24293,3,3),(5160,'Oliva',40214,40219,3,2),(5161,'Oliva de la Frontera',4978,4981,3,1),(5162,'Oliva de Mérida',4982,4985,3,1),(5163,'Oliva de Plasencia',9776,9781,3,2),(5164,'Olivares',35462,35465,3,1),(5165,'Olivares de Duero',41112,41115,3,1),(5166,'Olivares de Júcar',13548,13551,3,1),(5167,'Olivella',6616,6619,3,1),(5168,'Olivenza',4986,4997,3,5),(5169,'Ollauri',21588,21591,3,1),(5170,'Ollería',40220,40223,3,1),(5171,'Olmeda de Cobeta',16830,16835,3,2),(5172,'Olmeda de la Cuesta',13552,13555,3,1),(5173,'Olmeda de las Fuentes',26554,26557,3,1),(5174,'Olmeda del Rey',13556,13559,3,1),(5175,'Olmedilla de Alarcón',13560,13563,3,1),(5176,'Olmedilla de Eliz',13564,13567,3,1),(5177,'Olmedillo de Roa',8258,8261,3,1),(5178,'Olmedo',41116,41121,3,2),(5179,'Olmedo de Camaces',33392,33397,3,2),(5180,'Olmillos de Castro',42848,42855,3,3),(5181,'Olmillos de Muñó',8262,8265,3,1),(5182,'Olmos de Esgueva',41122,41125,3,1),(5183,'Olmos de Ojeda',30884,30891,3,3),(5184,'Olmos de Peñafiel',41126,41129,3,1),(5185,'Olocau',40224,40227,3,1),(5186,'Olocau del Rey',11666,11669,3,1),(5187,'Olombrada',34670,34675,3,2),(5188,'Olóriz/Oloritz',29054,29059,3,2),(5189,'Olost',6620,6623,3,1),(5190,'Olot',14596,14603,3,3),(5191,'Olula de Castro',2098,2101,3,1),(5192,'Olula del Río',2102,2105,3,1),(5193,'Olvan',6624,6629,3,2),(5194,'Ólvega',36232,36237,3,2),(5195,'Olvena',19084,19087,3,1),(5196,'Olvera',10392,10395,3,1),(5197,'Olvés',44360,44363,3,1),(5198,'Oña',8266,8281,3,7),(5199,'Oñati',17694,17703,3,4),(5200,'Oncala',36238,36241,3,1),(5201,'Onda',11670,11675,3,2),(5202,'Ondara',1448,1451,3,1),(5203,'Ondarroa',42094,42097,3,1),(5204,'Onil',1452,1455,3,1),(5205,'Onís',2948,2951,3,1),(5206,'Onteniente',40228,40231,3,1),(5207,'Ontígola',39092,39095,3,1),(5208,'Ontiñena',19088,19091,3,1),(5209,'Ontur',720,723,3,1),(5210,'Onzonilla',22572,22581,3,4),(5211,'Oquillas',8282,8285,3,1),(5212,'Orba',1456,1465,3,4),(5213,'Orbaizeta',29060,29063,3,1),(5214,'Orbaneja Riopico',8286,8289,3,1),(5215,'Orbara',29064,29067,3,1),(5216,'Orbita',4130,4133,3,1),(5217,'Orcajo',44364,44367,3,1),(5218,'Orce',15782,15785,3,1),(5219,'Orcera',19876,19879,3,1),(5220,'Ordes',20706,20717,3,5),(5221,'Ordis',14604,14607,3,1),(5222,'Ordizia',17704,17707,3,1),(5223,'Orea',16836,16839,3,1),(5224,'Orejana',34676,34679,3,1),(5225,'Orellana de la Sierra',4998,5001,3,1),(5226,'Orellana la Vieja',5002,5005,3,1),(5227,'Orendain',17708,17711,3,1),(5228,'Orera',44368,44371,3,1),(5229,'Orés',44372,44375,3,1),(5230,'Orexa',17712,17715,3,1),(5231,'Organyà',24294,24297,3,1),(5232,'Orgaz',39096,39101,3,2),(5233,'Órgiva',15786,15795,3,4),(5234,'Oria',2106,2117,3,5),(5235,'Orihuela',1466,1493,3,13),(5236,'Orihuela del Tremedal',38164,38167,3,1),(5237,'Orio',17716,17719,3,1),(5238,'Orís',6630,6633,3,1),(5239,'Orísoain',29068,29071,3,1),(5240,'Oristà',6634,6637,3,1),(5241,'Orkoien',29072,29075,3,1),(5242,'Ormaiztegi',17720,17723,3,1),(5243,'Oronz/Orontze',29076,29079,3,1),(5244,'Oropesa',39102,39109,3,3),(5245,'Oropesa del Mar/Orpesa',11676,11679,3,1),(5246,'Oroso',20718,20725,3,3),(5247,'Oroz-Betelu/Orotz-Betelu',29080,29083,3,1),(5248,'Orozko',42098,42103,3,2),(5249,'Orpí',6638,6641,3,1),(5250,'Orreaga/Roncesvalles',29084,29087,3,1),(5251,'Orrios',38168,38171,3,1),(5252,'Òrrius',6642,6645,3,1),(5253,'Ortigosa de Cameros',21592,21595,3,1),(5254,'Ortigosa de Pestaño',34680,34683,3,1),(5255,'Ortigosa del Monte',34684,34687,3,1),(5256,'Ortigueira',20726,20743,3,8),(5257,'Ortuella',42104,42107,3,1),(5258,'Orusco de Tajuña',26558,26561,3,1),(5259,'Orxeta',1494,1497,3,1),(5260,'Os Blancos',30030,30035,3,2),(5261,'Os de Balaguer',24298,24307,3,4),(5262,'Osa de la Vega',13568,13571,3,1),(5263,'Oseja',44376,44379,3,1),(5264,'Oseja de Sajambre',22582,22585,3,1),(5265,'Osera de Ebro',44380,44383,3,1),(5266,'Osor',14608,14611,3,1),(5267,'Osornillo',30892,30895,3,1),(5268,'Osorno la Mayor',30896,30901,3,2),(5269,'Ossa de Montiel',724,727,3,1),(5270,'Osso de Cinca',19092,19097,3,2),(5271,'Ossó de Sió',24308,24311,3,1),(5272,'Osuna',35466,35469,3,1),(5273,'Oteiza',29088,29091,3,1),(5274,'Otero',39110,39113,3,1),(5275,'Otero de Bodas',42856,42861,3,2),(5276,'Otero de Herreros',34688,34691,3,1),(5277,'Otívar',15796,15799,3,1),(5278,'Otos',40232,40235,3,1),(5279,'Otxandio',42108,42111,3,1),(5280,'Ourense',30036,30069,3,16),(5281,'Ourol',25480,25487,3,3),(5282,'Outeiro de Rei',25488,25507,3,9),(5283,'Outes',20744,20759,3,7),(5284,'Oviedo',2952,3021,3,34),(5285,'Oyón-Oion',248,253,3,2),(5286,'Oza-Cesuras',20760,20775,3,7),(5287,'Pacs del Penedès',6646,6649,3,1),(5288,'Paderne',20776,20781,3,2),(5289,'Paderne de Allariz',30070,30077,3,3),(5290,'Padiernos',4134,4137,3,1),(5291,'Padilla de Abajo',8290,8293,3,1),(5292,'Padilla de Arriba',8294,8297,3,1),(5293,'Padrenda',30078,30091,3,6),(5294,'Padrón',20782,20795,3,6),(5295,'Padrones de Bureba',8298,8301,3,1),(5296,'Padul',15800,15803,3,1),(5297,'Padules',2118,2121,3,1),(5298,'Paiporta',40236,40239,3,1),(5299,'Pajarejos',34692,34695,3,1),(5300,'Pajares de Adaja',4138,4141,3,1),(5301,'Pajares de la Laguna',33398,33403,3,2),(5302,'Pajares de la Lampreana',42862,42865,3,1),(5303,'Pajares de los Oteros',22586,22595,3,4),(5304,'Pajarón',13572,13575,3,1),(5305,'Pajaroncillo',13576,13579,3,1),(5306,'Palacios de Goda',4142,4145,3,1),(5307,'Palacios de la Sierra',8302,8305,3,1),(5308,'Palacios de la Valduerna',22596,22601,3,2),(5309,'Palacios de Riopisuerga',8306,8309,3,1),(5310,'Palacios de Sanabria',42866,42873,3,3),(5311,'Palacios del Arzobispo',33404,33407,3,1),(5312,'Palacios del Pan',42874,42877,3,1),(5313,'Palacios del Sil',22602,22615,3,6),(5314,'Palaciosrubios',33408,33411,3,1),(5315,'Palafolls',6650,6653,3,1),(5316,'Palafrugell',14612,14625,3,6),(5317,'Palamós',14626,14631,3,2),(5318,'Palanques',11680,11683,3,1),(5319,'Palas de Rei',25508,25529,3,10),(5320,'Palau de Santa Eulàlia',14632,14635,3,1),(5321,'Palau-sator',14636,14639,3,1),(5322,'Palau-saverdera',14640,14643,3,1),(5323,'Palau-solità i Plegamans',6654,6657,3,1),(5324,'Palazuelo de Vedija',41130,41133,3,1),(5325,'Palazuelos de Eresma',34696,34699,3,1),(5326,'Palazuelos de la Sierra',8310,8313,3,1),(5327,'Palazuelos de Muñó',8314,8317,3,1),(5328,'Palencia',30902,30917,3,7),(5329,'Palencia de Negrilla',33412,33415,3,1),(5330,'Palenciana',12792,12795,3,1),(5331,'Palenzuela',30918,30921,3,1),(5332,'Pallejà',6658,6663,3,2),(5333,'Palma',5536,5583,3,23),(5334,'Palma de Gandía',40240,40243,3,1),(5335,'Palma del Río',12796,12805,3,4),(5336,'Pálmaces de Jadraque',16840,16843,3,1),(5337,'Palmera',40244,40247,3,1),(5338,'Palo',19098,19101,3,1),(5339,'Palol de Revardit',14644,14647,3,1),(5340,'Palomar de Arroyos',38172,38175,3,1),(5341,'Palomares del Campo',13580,13583,3,1),(5342,'Palomares del Río',35470,35473,3,1),(5343,'Palomas',5006,5009,3,1),(5344,'Palomeque',39114,39117,3,1),(5345,'Palomera',13584,13587,3,1),(5346,'Palomero',9782,9785,3,1),(5347,'Palos de la Frontera',18128,18137,3,4),(5348,'Pals',14648,14651,3,1),(5349,'Pampaneira',15804,15807,3,1),(5350,'Pampliega',8318,8325,3,3),(5351,'Pamplona/Iruña',29092,29123,3,15),(5352,'Pancorbo',8326,8329,3,1),(5353,'Pancrudo',38176,38181,3,2),(5354,'Paniza',44384,44387,3,1),(5355,'Panticosa',19102,19109,3,3),(5356,'Pantoja',39118,39121,3,1),(5357,'Pantón',25530,25551,3,10),(5358,'Papatrigo',4146,4149,3,1),(5359,'Paracuellos',13588,13593,3,2),(5360,'Paracuellos de Jarama',26562,26569,3,3),(5361,'Paracuellos de Jiloca',44388,44391,3,1),(5362,'Paracuellos de la Ribera',44392,44395,3,1),(5363,'Parada de Arriba',33416,33421,3,2),(5364,'Parada de Rubiales',33422,33425,3,1),(5365,'Parada de Sil',30092,30107,3,7),(5366,'Paradas',35474,35477,3,1),(5367,'Paradela',25552,25557,3,2),(5368,'Paradinas de San Juan',33426,33429,3,1),(5369,'Páramo de Boedo',30922,30925,3,1),(5370,'Páramo del Sil',22616,22629,3,6),(5371,'Parauta',27372,27375,3,1),(5372,'Parcent',1498,1501,3,1),(5373,'Pardilla',8330,8333,3,1),(5374,'Pardines',14652,14655,3,1),(5375,'Pardos',16844,16847,3,1),(5376,'Paredes',13594,13599,3,2),(5377,'Paredes de Escalona',39122,39125,3,1),(5378,'Paredes de Nava',30926,30929,3,1),(5379,'Paredes de Sigüenza',16848,16853,3,2),(5380,'Pareja',16854,16861,3,3),(5381,'Parets del Vallès',6664,6667,3,1),(5382,'Parla',26570,26581,3,5),(5383,'Parlavà',14656,14659,3,1),(5384,'Parres',3022,3041,3,9),(5385,'Parrillas',39126,39129,3,1),(5386,'Partaloa',2122,2125,3,1),(5387,'Partido de la Sierra en Tobalina',8334,8337,3,1),(5388,'Pasaia',17724,17727,3,1),(5389,'Pasarón de la Vera',9786,9789,3,1),(5390,'Pascualcobo',4150,4153,3,1),(5391,'Passanant i Belltall',37116,37121,3,2),(5392,'Pastores',33430,33433,3,1),(5393,'Pastrana',16862,16865,3,1),(5394,'Pastriz',44396,44399,3,1),(5395,'Paterna',40248,40257,3,4),(5396,'Paterna de Rivera',10396,10399,3,1),(5397,'Paterna del Campo',18138,18143,3,2),(5398,'Paterna del Madera',728,737,3,4),(5399,'Paterna del Río',2126,2131,3,2),(5400,'Patones',26582,26585,3,1),(5401,'Pau',14660,14663,3,1),(5402,'Paüls',37122,37125,3,1),(5403,'Pavías',11684,11687,3,1),(5404,'Paymogo',18144,18147,3,1),(5405,'Payo de Ojeda',30930,30933,3,1),(5406,'Pazos de Borbén',31886,31899,3,6),(5407,'Pazuengos',21596,21599,3,1),(5408,'Peal de Becerro',19880,19887,3,3),(5409,'Pechina',2132,2137,3,2),(5410,'Pedrafita do Cebreiro',25558,25567,3,4),(5411,'Pedrajas de San Esteban',41134,41137,3,1),(5412,'Pedralba',40258,40261,3,1),(5413,'Pedralba de la Pradería',42878,42883,3,2),(5414,'Pedraza',34700,34705,3,2),(5415,'Pedraza de Alba',33434,33437,3,1),(5416,'Pedraza de Campos',30934,30937,3,1),(5417,'Pedreguer',1502,1505,3,1),(5418,'Pedrera',35478,35481,3,1),(5419,'Pedret i Marzà',14664,14667,3,1),(5420,'Pedrezuela',26586,26589,3,1),(5421,'Pedro Abad',12806,12809,3,1),(5422,'Pedro Bernardo',4154,4157,3,1),(5423,'Pedro Martínez',15808,15811,3,1),(5424,'Pedro Muñoz',12242,12245,3,1),(5425,'Pedro-Rodríguez',4158,4161,3,1),(5426,'Pedroche',12810,12813,3,1),(5427,'Pedrola',44400,44403,3,1),(5428,'Pedrosa de Duero',8338,8343,3,2),(5429,'Pedrosa de la Vega',30938,30943,3,2),(5430,'Pedrosa de Río Úrbel',8344,8347,3,1),(5431,'Pedrosa del Páramo',8348,8351,3,1),(5432,'Pedrosa del Príncipe',8352,8355,3,1),(5433,'Pedrosa del Rey',41138,41141,3,1),(5434,'Pedrosillo de Alba',33438,33441,3,1),(5435,'Pedrosillo de los Aires',33442,33451,3,4),(5436,'Pedrosillo el Ralo',33452,33455,3,1),(5437,'Pedroso',21600,21603,3,1),(5438,'Pedroso de Acim',9790,9793,3,1),(5439,'Pegalajar',19888,19893,3,2),(5440,'Pego',1506,1511,3,2),(5441,'Peguerinos',4162,4165,3,1),(5442,'Pelabravo',33456,33459,3,1),(5443,'Pelahustán',39130,39133,3,1),(5444,'Pelarrodríguez',33460,33465,3,2),(5445,'Pelayos',33466,33471,3,2),(5446,'Pelayos de la Presa',26590,26593,3,1),(5447,'Pelayos del Arroyo',34706,34711,3,2),(5448,'Peleagonzalo',42884,42887,3,1),(5449,'Peleas de Abajo',42888,42891,3,1),(5450,'Peligros',15812,15815,3,1),(5451,'Peñacaballera',33472,33475,3,1),(5452,'Peñacerrada-Urizaharra',254,261,3,3),(5453,'Peñafiel',41142,41163,3,10),(5454,'Peñaflor',35482,35485,3,1),(5455,'Peñaflor de Hornija',41164,41167,3,1),(5456,'Penagos',10900,10903,3,1),(5457,'Penàguila',1512,1515,3,1),(5458,'Peñalba',19110,19113,3,1),(5459,'Peñalba de Ávila',4166,4169,3,1),(5460,'Peñalén',16866,16869,3,1),(5461,'Peñalsordo',5010,5013,3,1),(5462,'Peñalver',16870,16873,3,1),(5463,'Peñamellera Alta',3042,3049,3,3),(5464,'Peñamellera Baja',3050,3053,3,1),(5465,'Peñaparda',33476,33479,3,1),(5466,'Peñaranda de Bracamonte',33480,33483,3,1),(5467,'Peñaranda de Duero',8356,8361,3,2),(5468,'Peñarandilla',33484,33487,3,1),(5469,'Peñarroya de Tastavins',38182,38185,3,1),(5470,'Peñarroya-Pueblonuevo',12814,12817,3,1),(5471,'Peñarrubia',10904,10907,3,1),(5472,'Peñas de San Pedro',738,745,3,3),(5473,'Peñascosa',746,753,3,3),(5474,'Peñausende',42892,42899,3,3),(5475,'Penelles',24312,24321,3,4),(5476,'Peníscola/Peñíscola',11688,11691,3,1),(5477,'Pepino',39134,39137,3,1),(5478,'Peque',42900,42903,3,1),(5479,'Peracense',38186,38189,3,1),(5480,'Perafita',6668,6671,3,1),(5481,'Perafort',37126,37131,3,2),(5482,'Peral de Arlanza',8362,8365,3,1),(5483,'Peralada',14668,14673,3,2),(5484,'Peraleda de la Mata',9794,9797,3,1),(5485,'Peraleda de San Román',9798,9801,3,1),(5486,'Peraleda del Zaucejo',5014,5017,3,1),(5487,'Peralejos',38190,38193,3,1),(5488,'Peralejos de Abajo',33488,33491,3,1),(5489,'Peralejos de Arriba',33492,33495,3,1),(5490,'Peralejos de las Truchas',16874,16877,3,1),(5491,'Perales',30944,30949,3,2),(5492,'Perales de Tajuña',26594,26597,3,1),(5493,'Perales del Alfambra',38194,38199,3,2),(5494,'Perales del Puerto',9802,9805,3,1),(5495,'Peralta de Alcofea',19114,19121,3,3),(5496,'Peralta de Calasanz',19122,19129,3,3),(5497,'Peralta/Azkoien',29124,29127,3,1),(5498,'Peraltilla',19130,19133,3,1),(5499,'Peralveche',16878,16881,3,1),(5500,'Peramola',24322,24325,3,1),(5501,'Peranzanes',22630,22633,3,1),(5502,'Perarrúa',19134,19137,3,1),(5503,'Perdiguera',44404,44407,3,1),(5504,'Pereña de la Ribera',33496,33499,3,1),(5505,'Pereruela',42904,42923,3,9),(5506,'Periana',27376,27379,3,1),(5507,'Perilla de Castro',42924,42927,3,1),(5508,'Peromingo',33500,33503,3,1),(5509,'Perosillo',34712,34715,3,1),(5510,'Pertusa',19138,19141,3,1),(5511,'Pesaguero',10908,10913,3,2),(5512,'Pescueza',9806,9809,3,1),(5513,'Pesoz',3054,3061,3,3),(5514,'Pesquera',10914,10917,3,1),(5515,'Pesquera de Duero',41168,41171,3,1),(5516,'Petilla de Aragón',29128,29131,3,1),(5517,'Petín',30108,30117,3,4),(5518,'Petra',5584,5587,3,1),(5519,'Petrer',1516,1519,3,1),(5520,'Petrés',40262,40265,3,1),(5521,'Pétrola',754,757,3,1),(5522,'Pezuela de las Torres',26598,26601,3,1),(5523,'Pías',42928,42933,3,2),(5524,'Picanya',40266,40269,3,1),(5525,'Picasent',40270,40275,3,2),(5526,'Picón',12246,12249,3,1),(5527,'Piedrabuena',12250,12255,3,2),(5528,'Piedrahíta',4170,4175,3,2),(5529,'Piedrahita de Castro',42934,42937,3,1),(5530,'Piedralaves',4176,4181,3,2),(5531,'Piedramillera',29132,29135,3,1),(5532,'Piedras Albas',9810,9813,3,1),(5533,'Piedratajada',44408,44411,3,1),(5534,'Piélagos',10918,10931,3,6),(5535,'Piera',6672,6675,3,1),(5536,'Piérnigas',8366,8369,3,1),(5537,'Pilar de la Horadada',1520,1525,3,2),(5538,'Pilas',35486,35489,3,1),(5539,'Piles',40276,40279,3,1),(5540,'Piloña',3062,3081,3,9),(5541,'Piña de Campos',30950,30953,3,1),(5542,'Pina de Ebro',44412,44415,3,1),(5543,'Piña de Esgueva',41172,41175,3,1),(5544,'Pina de Montalgrao',11692,11695,3,1),(5545,'Píñar',15816,15821,3,2),(5546,'Pinarejo',13600,13603,3,1),(5547,'Pinarejos',34716,34719,3,1),(5548,'Pinarnegrillo',34720,34723,3,1),(5549,'Pineda de Gigüela',13604,13607,3,1),(5550,'Pineda de la Sierra',8370,8373,3,1),(5551,'Pineda de Mar',6676,6679,3,1),(5552,'Pineda Trasmonte',8374,8377,3,1),(5553,'Pinedas',33504,33507,3,1),(5554,'Piñel de Abajo',41176,41179,3,1),(5555,'Piñel de Arriba',41180,41183,3,1),(5556,'Pinell de Solsonès',24326,24329,3,1),(5557,'Pinet',40280,40283,3,1),(5558,'Pinilla de Jadraque',16882,16885,3,1),(5559,'Pinilla de los Barruecos',8378,8381,3,1),(5560,'Pinilla de los Moros',8382,8385,3,1),(5561,'Pinilla de Molina',16886,16889,3,1),(5562,'Pinilla de Toro',42938,42941,3,1),(5563,'Pinilla del Campo',36242,36245,3,1),(5564,'Pinilla del Valle',26602,26605,3,1),(5565,'Pinilla Trasmonte',8386,8389,3,1),(5566,'Pinillos',21604,21607,3,1),(5567,'Pino del Oro',42942,42945,3,1),(5568,'Pino del Río',30954,30959,3,2),(5569,'Pinofranqueado',9814,9821,3,3),(5570,'Piñor',30118,30125,3,3),(5571,'Pinós',24330,24333,3,1),(5572,'Pinos Genil',15822,15825,3,1),(5573,'Pinos Puente',15826,15835,3,4),(5574,'Pinseque',44416,44419,3,1),(5575,'Pinto',26606,26609,3,1),(5576,'Piñuécar-Gandullas',26610,26613,3,1),(5577,'Piornal',9822,9825,3,1),(5578,'Pioz',16890,16895,3,2),(5579,'Piqueras',16896,16899,3,1),(5580,'Piqueras del Castillo',13608,13611,3,1),(5581,'Pira',37132,37135,3,1),(5582,'Piracés',19142,19145,3,1),(5583,'Pitarque',38200,38203,3,1),(5584,'Pitiegua',33508,33511,3,1),(5585,'Pitillas',29136,29139,3,1),(5586,'Pizarra',27380,27387,3,3),(5587,'Pizarral',33512,33515,3,1),(5588,'Plan',19146,19151,3,2),(5589,'Planes',1526,1529,3,1),(5590,'Planoles',14674,14677,3,1),(5591,'Plasencia',9826,9833,3,3),(5592,'Plasencia de Jalón',44420,44423,3,1),(5593,'Plasenzuela',9834,9837,3,1),(5594,'Pleitas',44424,44427,3,1),(5595,'Plenas',44428,44431,3,1),(5596,'Plentzia',42112,42115,3,1),(5597,'Pliego',28010,28015,3,2),(5598,'Plou',38204,38207,3,1),(5599,'Población de Arroyo',30960,30963,3,1),(5600,'Población de Campos',30964,30967,3,1),(5601,'Población de Cerrato',30968,30971,3,1),(5602,'Pobladura de Pelayo García',22634,22637,3,1),(5603,'Pobladura de Valderaduey',42946,42949,3,1),(5604,'Pobladura del Valle',42950,42953,3,1),(5605,'Poblete',12256,12259,3,1),(5606,'Poboleda',37136,37139,3,1),(5607,'Poio',31900,31911,3,5),(5608,'Pol',25568,25587,3,9),(5609,'Polaciones',10932,10937,3,2),(5610,'Polán',39138,39141,3,1),(5611,'Polanco',10938,10943,3,2),(5612,'Poleñino',19152,19155,3,1),(5613,'Polentinos',30972,30975,3,1),(5614,'Polícar',15836,15839,3,1),(5615,'Poliñá de Júcar',40284,40287,3,1),(5616,'Polinyà',6680,6683,3,1),(5617,'Pollença',5588,5595,3,3),(5618,'Pollos',41184,41187,3,1),(5619,'Polop',1530,1533,3,1),(5620,'Polopos',15840,15845,3,2),(5621,'Pomar de Valdivia',30976,30985,3,4),(5622,'Pomer',44432,44435,3,1),(5623,'Ponferrada',22638,22669,3,15),(5624,'Ponga',3082,3087,3,2),(5625,'Pont de Molins',14678,14681,3,1),(5626,'Ponte Caldelas',31912,31927,3,7),(5627,'Ponteareas',31928,31959,3,15),(5628,'Ponteceso',20796,20801,3,2),(5629,'Pontecesures',31960,31965,3,2),(5630,'Pontedeume',20802,20813,3,5),(5631,'Pontedeva',30126,30129,3,1),(5632,'Pontevedra',31966,32009,3,21),(5633,'Pontils',37140,37143,3,1),(5634,'Pontons',6684,6687,3,1),(5635,'Pontós',14682,14685,3,1),(5636,'Ponts',24334,24341,3,3),(5637,'Porcuna',19894,19897,3,1),(5638,'Porqueira',30130,30139,3,4),(5639,'Porqueres',14686,14691,3,2),(5640,'Porrera',37144,37147,3,1),(5641,'Porreres',5596,5599,3,1),(5642,'Portaje',9838,9841,3,1),(5643,'Portalrubio de Guadamejud',13612,13615,3,1),(5644,'Portas',32010,32017,3,3),(5645,'Portbou',14692,14695,3,1),(5646,'Portell de Morella',11696,11699,3,1),(5647,'Portezuelo',9842,9845,3,1),(5648,'Portilla',13616,13619,3,1),(5649,'Portillo',41188,41191,3,1),(5650,'Portillo de Soria',36246,36249,3,1),(5651,'Portillo de Toledo',39142,39145,3,1),(5652,'Porto',42954,42973,3,9),(5653,'Porto do Son',20814,20833,3,9),(5654,'Portomarín',25588,25607,3,9),(5655,'Portugalete',42116,42119,3,1),(5656,'Pórtugos',15846,15849,3,1),(5657,'Porzuna',12260,12269,3,4),(5658,'Posada de Valdeón',22670,22675,3,2),(5659,'Posadas',12818,12823,3,2),(5660,'Potes',10944,10947,3,1),(5661,'Potries',40288,40291,3,1),(5662,'Poveda',4182,4185,3,1),(5663,'Poveda de la Sierra',16900,16903,3,1),(5664,'Poveda de las Cintas',33516,33519,3,1),(5665,'Povedilla',758,761,3,1),(5666,'Poyales del Hoyo',4186,4189,3,1),(5667,'Poyatos',13620,13623,3,1),(5668,'Poza de la Sal',8390,8395,3,2),(5669,'Poza de la Vega',30986,30989,3,1),(5670,'Pozal de Gallinas',41192,41195,3,1),(5671,'Pozaldez',41196,41199,3,1),(5672,'Pozalmuro',36250,36253,3,1),(5673,'Pozán de Vero',19156,19159,3,1),(5674,'Pozanco',4190,4193,3,1),(5675,'Pozo Alcón',19898,19903,3,2),(5676,'Pozo Cañada',762,767,3,2),(5677,'Pozo de Almoguera',16904,16907,3,1),(5678,'Pozo de Guadalajara',16908,16913,3,2),(5679,'Pozo de Urama',30990,30993,3,1),(5680,'Pozo-Lorente',768,771,3,1),(5681,'Pozoamargo',13624,13627,3,1),(5682,'Pozoantiguo',42974,42977,3,1),(5683,'Pozoblanco',12824,12827,3,1),(5684,'Pozohondo',772,779,3,3),(5685,'Pozondón',38208,38211,3,1),(5686,'Pozorrubielos de la Mancha',13628,13631,3,1),(5687,'Pozorrubio de Santiago',13632,13635,3,1),(5688,'Pozos de Hinojo',33520,33523,3,1),(5689,'Pozuel de Ariza',44436,44439,3,1),(5690,'Pozuel del Campo',38212,38215,3,1),(5691,'Pozuelo',780,783,3,1),(5692,'Pozuelo de Alarcón',26614,26619,3,2),(5693,'Pozuelo de Aragón',44440,44443,3,1),(5694,'Pozuelo de Calatrava',12270,12273,3,1),(5695,'Pozuelo de la Orden',41200,41203,3,1),(5696,'Pozuelo de Tábara',42978,42981,3,1),(5697,'Pozuelo de Zarzón',9846,9849,3,1),(5698,'Pozuelo del Páramo',22676,22681,3,2),(5699,'Pozuelo del Rey',26620,26623,3,1),(5700,'Prádanos de Bureba',8396,8399,3,1),(5701,'Prádanos de Ojeda',30994,30997,3,1),(5702,'Pradejón',21608,21611,3,1),(5703,'Pradell de la Teixeta',37148,37151,3,1),(5704,'Prádena',34724,34729,3,2),(5705,'Prádena de Atienza',16914,16919,3,2),(5706,'Prádena del Rincón',26624,26627,3,1),(5707,'Prades',37152,37155,3,1),(5708,'Pradilla de Ebro',44444,44449,3,2),(5709,'Pradillo',21612,21615,3,1),(5710,'Prado',42982,42985,3,1),(5711,'Prado de la Guzpeña',22682,22685,3,1),(5712,'Prado del Rey',10400,10403,3,1),(5713,'Pradoluengo',8400,8405,3,2),(5714,'Prados Redondos',16920,16929,3,4),(5715,'Pradosegar',4194,4197,3,1),(5716,'Prat de Comte',37156,37159,3,1),(5717,'Pratdip',37160,37165,3,2),(5718,'Prats de Lluçanès',6688,6691,3,1),(5719,'Prats i Sansor',24342,24345,3,1),(5720,'Pravia',3088,3097,3,4),(5721,'Preixana',24346,24349,3,1),(5722,'Preixens',24350,24353,3,1),(5723,'Préjano',21616,21619,3,1),(5724,'Premià de Dalt',6692,6695,3,1),(5725,'Premià de Mar',6696,6699,3,1),(5726,'Presencio',8406,8409,3,1),(5727,'Priaranza del Bierzo',22686,22695,3,4),(5728,'Priego',13636,13639,3,1),(5729,'Priego de Córdoba',12828,12841,3,6),(5730,'Prioro',22696,22699,3,1),(5731,'Proaza',3098,3105,3,3),(5732,'Prullans',24354,24357,3,1),(5733,'Pruna',35490,35493,3,1),(5734,'Puçol',40292,40295,3,1),(5735,'Puebla de Albortón',44450,44453,3,1),(5736,'Puebla de Alcocer',5018,5021,3,1),(5737,'Puebla de Almenara',13640,13643,3,1),(5738,'Puebla de Arenoso',11700,11703,3,1),(5739,'Puebla de Azaba',33524,33529,3,2),(5740,'Puebla de Beleña',16930,16933,3,1),(5741,'Puebla de Don Fadrique',15850,15853,3,1),(5742,'Puebla de Don Rodrigo',12274,12277,3,1),(5743,'Puebla de Farnals',40296,40301,3,2),(5744,'Puebla de Guzmán',18148,18153,3,2),(5745,'Puebla de la Calzada',5022,5025,3,1),(5746,'Puebla de la Reina',5026,5029,3,1),(5747,'Puebla de la Sierra',26628,26631,3,1),(5748,'Puebla de Lillo',22700,22705,3,2),(5749,'Puebla de Obando',5030,5033,3,1),(5750,'Puebla de Pedraza',34730,34733,3,1),(5751,'Puebla de San Medel',33530,33533,3,1),(5752,'Puebla de San Miguel',40302,40305,3,1),(5753,'Puebla de Sanabria',42986,42993,3,3),(5754,'Puebla de Sancho Pérez',5034,5039,3,2),(5755,'Puebla de Vallbona',40306,40309,3,1),(5756,'Puebla de Valles',16934,16937,3,1),(5757,'Puebla de Yeltes',33534,33537,3,1),(5758,'Puebla del Duc',40310,40313,3,1),(5759,'Puebla del Maestre',5040,5043,3,1),(5760,'Puebla del Príncipe',12278,12281,3,1),(5761,'Puebla del Prior',5044,5047,3,1),(5762,'Puebla del Salvador',13644,13647,3,1),(5763,'Puebla Larga',40314,40317,3,1),(5764,'Pueblica de Valverde',42994,42999,3,2),(5765,'Pueblonuevo de Miramontes',9850,9851,3,0),(5766,'Pueblonuevo del Guadiana',5048,5051,3,1),(5767,'Puendeluna',44454,44457,3,1),(5768,'Puente de Domingo Flórez',22706,22719,3,6),(5769,'Puente de Génave',19904,19909,3,2),(5770,'Puente de Montañana',19160,19163,3,1),(5771,'Puente del Congosto',33538,33543,3,2),(5772,'Puente Genil',12842,12847,3,2),(5773,'Puente la Reina de Jaca',19164,19171,3,3),(5774,'Puente la Reina/Gares',29140,29143,3,1),(5775,'Puente Viesgo',10948,10953,3,2),(5776,'Puentedura',8410,8413,3,1),(5777,'Puentes Viejas',26632,26639,3,3),(5778,'Puertas',33544,33547,3,1),(5779,'Puerto Castilla',4198,4201,3,1),(5780,'Puerto de Béjar',33548,33553,3,2),(5781,'Puerto de San Vicente',39146,39149,3,1),(5782,'Puerto de Santa Cruz',9852,9855,3,1),(5783,'Puerto Lápice',12282,12285,3,1),(5784,'Puerto Lumbreras',28016,28021,3,2),(5785,'Puerto Moral',18154,18157,3,1),(5786,'Puerto Real',10404,10411,3,3),(5787,'Puerto Seguro',33554,33557,3,1),(5788,'Puerto Serrano',10412,10417,3,2),(5789,'Puértolas',19172,19177,3,2),(5790,'Puertollano',12286,12291,3,2),(5791,'Puertomingalvo',38216,38219,3,1),(5792,'Pueyo',29144,29147,3,1),(5793,'Pueyo de Santa Cruz',19178,19181,3,1),(5794,'Puig-reig',6700,6703,3,1),(5795,'Puigcerdà',14696,14701,3,2),(5796,'Puigdàlber',6704,6707,3,1),(5797,'Puiggròs',24358,24361,3,1),(5798,'Puigpelat',37166,37169,3,1),(5799,'Puigpunyent',5600,5605,3,2),(5800,'Puigverd d\'Agramunt',24362,24365,3,1),(5801,'Puigverd de Lleida',24366,24369,3,1),(5802,'Pujalt',6708,6711,3,1),(5803,'Pujerra',27388,27391,3,1),(5804,'Pulgar',39150,39153,3,1),(5805,'Pulianas',15854,15859,3,2),(5806,'Pulpí',2138,2147,3,4),(5807,'Punta Umbría',18158,18165,3,3),(5808,'Punxín',30140,30151,3,5),(5809,'Puras',41204,41207,3,1),(5810,'Purchena',2148,2151,3,1),(5811,'Purujosa',44458,44461,3,1),(5812,'Purullena',15860,15865,3,2),(5813,'Quart',14702,14707,3,2),(5814,'Quatretondeta',1534,1537,3,1),(5815,'Quel',21620,21623,3,1),(5816,'Quemada',8414,8417,3,1),(5817,'Quéntar',15866,15871,3,2),(5818,'Quer',16938,16941,3,1),(5819,'Queralbs',14708,14711,3,1),(5820,'Quero',39154,39157,3,1),(5821,'Querol',37170,37175,3,2),(5822,'Quesa',40318,40321,3,1),(5823,'Quesada',19910,19917,3,3),(5824,'Quicena',19182,19185,3,1),(5825,'Quijorna',26640,26643,3,1),(5826,'Quiñonería',36254,36257,3,1),(5827,'Quintana de la Serena',5052,5055,3,1),(5828,'Quintana del Castillo',22720,22725,3,2),(5829,'Quintana del Marco',22726,22731,3,2),(5830,'Quintana del Pidio',8418,8421,3,1),(5831,'Quintana del Puente',30998,31001,3,1),(5832,'Quintana Redonda',36258,36267,3,4),(5833,'Quintana y Congosto',22732,22737,3,2),(5834,'Quintanabureba',8422,8425,3,1),(5835,'Quintanaélez',8426,8429,3,1),(5836,'Quintanaortuño',8430,8433,3,1),(5837,'Quintanapalla',8434,8437,3,1),(5838,'Quintanar de la Orden',39158,39163,3,2),(5839,'Quintanar de la Sierra',8438,8441,3,1),(5840,'Quintanar del Rey',13648,13651,3,1),(5841,'Quintanas de Gormaz',36268,36271,3,1),(5842,'Quintanavides',8442,8445,3,1),(5843,'Quintanilla de Arriba',41208,41211,3,1),(5844,'Quintanilla de la Mata',8446,8449,3,1),(5845,'Quintanilla de Onésimo',41212,41215,3,1),(5846,'Quintanilla de Onsoña',31002,31007,3,2),(5847,'Quintanilla de Trigueros',41216,41219,3,1),(5848,'Quintanilla de Urz',43000,43003,3,1),(5849,'Quintanilla del Agua y Tordueles',8450,8453,3,1),(5850,'Quintanilla del Coco',8454,8457,3,1),(5851,'Quintanilla del Molar',41220,41223,3,1),(5852,'Quintanilla del Monte',43004,43007,3,1),(5853,'Quintanilla del Olmo',43008,43011,3,1),(5854,'Quintanilla San García',8458,8461,3,1),(5855,'Quintanilla Vivar',8462,8465,3,1),(5856,'Quintela de Leirado',30152,30155,3,1),(5857,'Quinto',44462,44465,3,1),(5858,'Quiroga',25608,25619,3,5),(5859,'Quirós',3106,3115,3,4),(5860,'Quiruelas de Vidriales',43012,43017,3,2),(5861,'Quismondo',39164,39167,3,1),(5862,'Rábade',25620,25623,3,1),(5863,'Rabanales',43018,43023,3,2),(5864,'Rabanera',21624,21627,3,1),(5865,'Rabanera del Pinar',8466,8469,3,1),(5866,'Rábano',41224,41227,3,1),(5867,'Rábano de Aliste',43024,43031,3,3),(5868,'Rábanos',8470,8477,3,3),(5869,'Rabé de las Calzadas',8478,8481,3,1),(5870,'Rabós',14712,14717,3,2),(5871,'Rada de Haro',13652,13655,3,1),(5872,'Rafal',1538,1541,3,1),(5873,'Ráfales',38220,38223,3,1),(5874,'Rafelbuñol',40322,40325,3,1),(5875,'Rafelcofer',40326,40329,3,1),(5876,'Rafelguaraf',40330,40333,3,1),(5877,'Ráfol de Salem',40334,40337,3,1),(5878,'Rágama',33558,33561,3,1),(5879,'Rágol',2152,2155,3,1),(5880,'Rairiz de Veiga',30156,30165,3,4),(5881,'Rajadell',6712,6715,3,1),(5882,'Ramales de la Victoria',10954,10965,3,5),(5883,'Ramirás',30166,30173,3,3),(5884,'Ramiro',41228,41231,3,1),(5885,'Rapariegos',34734,34737,3,1),(5886,'Rascafría',26644,26649,3,2),(5887,'Rasines',10966,10969,3,1),(5888,'Rasquera',37176,37179,3,1),(5889,'Rasueros',4202,4205,3,1),(5890,'Real',40338,40341,3,1),(5891,'Real Sitio de San Ildefonso',34738,34745,3,3),(5892,'Rebollar',36272,36275,3,1),(5893,'Rebollar',9856,9857,3,0),(5894,'Rebolledo de la Torre',8482,8485,3,1),(5895,'Rebollo',34746,34749,3,1),(5896,'Rebollosa de Jadraque',16942,16945,3,1),(5897,'Recas',39168,39171,3,1),(5898,'Recuerda',36276,36283,3,3),(5899,'Redecilla del Camino',8486,8489,3,1),(5900,'Redecilla del Campo',8490,8495,3,2),(5901,'Redondela',32018,32043,3,12),(5902,'Redován',1542,1545,3,1),(5903,'Redueña',26650,26653,3,1),(5904,'Regencós',14718,14721,3,1),(5905,'Regueras de Arriba',22738,22741,3,1),(5906,'Regumiel de la Sierra',8496,8499,3,1),(5907,'Reíllo',13656,13659,3,1),(5908,'Reina',5056,5059,3,1),(5909,'Reinosa',10970,10973,3,1),(5910,'Reinoso',8500,8503,3,1),(5911,'Reinoso de Cerrato',31008,31011,3,1),(5912,'Relleu',1546,1549,3,1),(5913,'Rellinars',6716,6719,3,1),(5914,'Rello',36284,36287,3,1),(5915,'Remolinos',44466,44469,3,1),(5916,'Remondo',34750,34753,3,1),(5917,'Rena',5060,5063,3,1),(5918,'Renau',37180,37183,3,1),(5919,'Renedo de Esgueva',41232,41235,3,1),(5920,'Renedo de la Vega',31012,31015,3,1),(5921,'Renera',16946,16949,3,1),(5922,'Renieblas',36288,36293,3,2),(5923,'Reocín',10974,10985,3,5),(5924,'Requejo',43032,43035,3,1),(5925,'Requena',40342,40365,3,11),(5926,'Requena de Campos',31016,31019,3,1),(5927,'Respenda de la Peña',31020,31027,3,3),(5928,'Retamal de Llerena',5064,5067,3,1),(5929,'Retamoso de la Jara',39172,39175,3,1),(5930,'Retascón',44470,44473,3,1),(5931,'Retiendas',16950,16955,3,2),(5932,'Retortillo',33562,33567,3,2),(5933,'Retortillo de Soria',36294,36301,3,3),(5934,'Retuerta',8504,8507,3,1),(5935,'Retuerta del Bullaque',12292,12295,3,1),(5936,'Reus',37184,37197,3,6),(5937,'Revellinos',43036,43039,3,1),(5938,'Revenga de Campos',31028,31031,3,1),(5939,'Revilla de Collazos',31032,31035,3,1),(5940,'Revilla del Campo',8508,8513,3,2),(5941,'Revilla Vallejera',8514,8517,3,1),(5942,'Revillarruz',8518,8521,3,1),(5943,'Reyero',22742,22745,3,1),(5944,'Rezmondo',8522,8525,3,1),(5945,'Reznos',36302,36305,3,1),(5946,'Riaguas de San Bartolomé',34754,34757,3,1),(5947,'Rialp',24370,24373,3,1),(5948,'Riaño',22746,22751,3,2),(5949,'Rianxo',20834,20845,3,5),(5950,'Riaza',34758,34769,3,5),(5951,'Riba de Saelices',16956,16959,3,1),(5952,'Riba-roja d\'Ebre',37198,37201,3,1),(5953,'Ribadavia',30174,30189,3,7),(5954,'Ribadedeva',3116,3121,3,2),(5955,'Ribadeo',25624,25643,3,9),(5956,'Ribadesella',3122,3141,3,9),(5957,'Ribadumia',32044,32051,3,3),(5958,'Ribaforada',29148,29151,3,1),(5959,'Ribafrecha',21628,21631,3,1),(5960,'Ribamontán al Mar',10986,10995,3,4),(5961,'Ribamontán al Monte',10996,11001,3,2),(5962,'Ribarroja del Turia',40366,40371,3,2),(5963,'Ribas de Campos',31036,31039,3,1),(5964,'Ribas de Sil',25644,25651,3,3),(5965,'Ribatejada',26654,26657,3,1),(5966,'Ribeira',20846,20865,3,9),(5967,'Ribeira de Piquín',25652,25659,3,3),(5968,'Ribera Baja/Erribera Beitia',262,267,3,2),(5969,'Ribera d\'Ondara',24374,24379,3,2),(5970,'Ribera d\'Urgellet',24380,24391,3,5),(5971,'Ribera de Arriba',3142,3153,3,5),(5972,'Ribera del Fresno',5068,5071,3,1),(5973,'Riberos de la Cueza',31040,31043,3,1),(5974,'Ribes de Freser',14722,14725,3,1),(5975,'Ribesalbes',11704,11707,3,1),(5976,'Ribota',34770,34773,3,1),(5977,'Ricla',44474,44479,3,2),(5978,'Ricote',28022,28025,3,1),(5979,'Riego de la Vega',22752,22759,3,3),(5980,'Riello',22760,22773,3,6),(5981,'Riells i Viabrea',14726,14729,3,1),(5982,'Rielves',39176,39179,3,1),(5983,'Rillo',38224,38229,3,2),(5984,'Rillo de Gallo',16960,16963,3,1),(5985,'Rincón de la Victoria',27392,27399,3,3),(5986,'Rincón de Soto',21632,21635,3,1),(5987,'Riner',24392,24397,3,2),(5988,'Riocabado',4206,4211,3,2),(5989,'Riocavado de la Sierra',8526,8529,3,1),(5990,'Riodeva',38230,38233,3,1),(5991,'Riofrío',4212,4215,3,1),(5992,'Riofrío de Aliste',43040,43045,3,2),(5993,'Riofrío de Riaza',34774,34777,3,1),(5994,'Riofrío del Llano',16964,16967,3,1),(5995,'Riogordo',27400,27403,3,1),(5996,'Rioja',2156,2159,3,1),(5997,'Riola',40372,40375,3,1),(5998,'Riolobos',9858,9863,3,2),(5999,'Rionansa',11002,11009,3,3),(6000,'Rionegro del Puente',43046,43053,3,3),(6001,'Riópar',784,791,3,3),(6002,'Riós',30190,30197,3,3),(6003,'Riosa',3154,3157,3,1),(6004,'Rioseco de Soria',36306,36309,3,1),(6005,'Rioseco de Tapia',22774,22779,3,2),(6006,'Riotorto',25660,25667,3,3),(6007,'Riotuerto',11010,11015,3,2),(6008,'Ripoll',14730,14733,3,1),(6009,'Ripollet',6720,6723,3,1),(6010,'Risco',5072,5075,3,1),(6011,'Riu de Cerdanya',24398,24401,3,1),(6012,'Riudarenes',14734,14737,3,1),(6013,'Riudaura',14738,14741,3,1),(6014,'Riudecanyes',37202,37205,3,1),(6015,'Riudecols',37206,37209,3,1),(6016,'Riudellots de la Selva',14742,14745,3,1),(6017,'Riudoms',37210,37213,3,1),(6018,'Riumors',14746,14749,3,1),(6019,'Rivas-Vaciamadrid',26658,26669,3,5),(6020,'Rivilla de Barajas',4216,4219,3,1),(6021,'Roa',8530,8533,3,1),(6022,'Roales',43054,43057,3,1),(6023,'Roales de Campos',41236,41239,3,1),(6024,'Robladillo',41240,41243,3,1),(6025,'Robleda',33568,33571,3,1),(6026,'Robleda-Cervantes',43058,43067,3,4),(6027,'Robledillo de Gata',9864,9867,3,1),(6028,'Robledillo de la Jara',26670,26673,3,1),(6029,'Robledillo de la Vera',9868,9871,3,1),(6030,'Robledillo de Mohernando',16968,16971,3,1),(6031,'Robledillo de Trujillo',9872,9877,3,2),(6032,'Robledo',792,799,3,3),(6033,'Robledo de Chavela',26674,26677,3,1),(6034,'Robledo de Corpes',16972,16975,3,1),(6035,'Robledo del Mazo',39180,39191,3,5),(6036,'Robledollano',9878,9881,3,1),(6037,'Robliza de Cojos',33572,33577,3,2),(6038,'Robregordo',26678,26681,3,1),(6039,'Robres',19186,19189,3,1),(6040,'Robres del Castillo',21636,21639,3,1),(6041,'Rocafort',40376,40379,3,1),(6042,'Rocafort de Queralt',37214,37217,3,1),(6043,'Rociana del Condado',18166,18169,3,1),(6044,'Roda de Berà',37218,37221,3,1),(6045,'Roda de Eresma',34778,34781,3,1),(6046,'Roda de Ter',6724,6727,3,1),(6047,'Rodeiro',32052,32063,3,5),(6048,'Ródenas',38234,38237,3,1),(6049,'Rodezno',21640,21645,3,2),(6050,'Rodonyà',37222,37225,3,1),(6051,'Roelos de Sayago',43068,43071,3,1),(6052,'Rois',20866,20879,3,6),(6053,'Rojales',1550,1553,3,1),(6054,'Rojas',8534,8537,3,1),(6055,'Rollamienta',36310,36313,3,1),(6056,'Rollán',33578,33581,3,1),(6057,'Romangordo',9882,9885,3,1),(6058,'Romanillos de Atienza',16976,16979,3,1),(6059,'Romanones',16980,16983,3,1),(6060,'Romanos',44480,44483,3,1),(6061,'Romanzado',29152,29155,3,1),(6062,'Roncal/Erronkari',29156,29159,3,1),(6063,'Ronda',27404,27413,3,4),(6064,'Roperuelos del Páramo',22780,22785,3,2),(6065,'Roquetas de Mar',2160,2169,3,4),(6066,'Roquetes',37226,37231,3,2),(6067,'Rosal de la Frontera',18170,18173,3,1),(6068,'Rosalejo',9886,9889,3,1),(6069,'Roses',14750,14753,3,1),(6070,'Rosinos de la Requejada',43072,43083,3,5),(6071,'Rossell',11708,11715,3,3),(6072,'Rosselló',24402,24405,3,1),(6073,'Rota',10418,10421,3,1),(6074,'Rotglá y Corbera',40380,40383,3,1),(6075,'Rótova',40384,40387,3,1),(6076,'Roturas',41244,41247,3,1),(6077,'Royuela',38238,38241,3,1),(6078,'Royuela de Río Franco',8538,8543,3,2),(6079,'Rozalén del Monte',13660,13665,3,2),(6080,'Rozas de Puerto Real',26682,26685,3,1),(6081,'Ruanes',9890,9893,3,1),(6082,'Rubena',8544,8547,3,1),(6083,'Rubí',6728,6733,3,2),(6084,'Rubí de Bracamonte',41248,41251,3,1),(6085,'Rubiá',30198,30209,3,5),(6086,'Rubiales',38242,38245,3,1),(6087,'Rubielos de la Cérida',38246,38249,3,1),(6088,'Rubielos de Mora',38250,38253,3,1),(6089,'Rubió',6734,6737,3,1),(6090,'Rubite',15872,15875,3,1),(6091,'Rublacedo de Abajo',8548,8551,3,1),(6092,'Rucandio',8552,8555,3,1),(6093,'Rueda',41252,41259,3,3),(6094,'Rueda de Jalón',44484,44487,3,1),(6095,'Rueda de la Sierra',16984,16987,3,1),(6096,'Ruente',11016,11021,3,2),(6097,'Ruesca',44488,44491,3,1),(6098,'Ruesga',11022,11029,3,3),(6099,'Rugat',40388,40391,3,1),(6100,'Ruidera',12296,12299,3,1),(6101,'Ruiloba',11030,11033,3,1),(6102,'Rupià',14754,14757,3,1),(6103,'Rupit i Pruit',6738,6741,3,1),(6104,'Rus',19918,19923,3,2),(6105,'Rute',12848,12853,3,2),(6106,'Sa Pobla',5606,5609,3,1),(6107,'Sabadell',6742,6759,3,8),(6108,'Sabero',22786,22797,3,5),(6109,'Sabiñán',44492,44495,3,1),(6110,'Sabiñánigo',19190,19219,3,14),(6111,'Sabiote',19924,19927,3,1),(6112,'Sacañet',11716,11719,3,1),(6113,'Sacecorbo',16988,16991,3,1),(6114,'Saceda-Trasierra',13666,13669,3,1),(6115,'Sacedón',16992,16999,3,3),(6116,'Saceruela',12300,12303,3,1),(6117,'Sacramenia',34782,34785,3,1),(6118,'Sada',20880,20887,3,3),(6119,'Sada',29160,29161,3,0),(6120,'Sádaba',44496,44501,3,2),(6121,'Saelices',13670,13673,3,1),(6122,'Saelices de la Sal',17000,17003,3,1),(6123,'Saelices de Mayorga',41260,41263,3,1),(6124,'Saelices el Chico',33582,33585,3,1),(6125,'Sagàs',6760,6763,3,1),(6126,'Sagra',1554,1557,3,1),(6127,'Sagunto/Sagunt',40392,40401,3,4),(6128,'Sahagún',22798,22807,3,4),(6129,'Sahún',19220,19227,3,3),(6130,'Sajazarra',21646,21649,3,1),(6131,'Salamanca',33586,33605,3,9),(6132,'Salar',15876,15879,3,1),(6133,'Salares',27414,27417,3,1),(6134,'Salas',3158,3189,3,15),(6135,'Salas Altas',19228,19233,3,2),(6136,'Salas Bajas',19234,19237,3,1),(6137,'Salas de Bureba',8556,8559,3,1),(6138,'Salas de los Infantes',8560,8567,3,3),(6139,'Salàs de Pallars',24406,24409,3,1),(6140,'Salce',43084,43087,3,1),(6141,'Salceda de Caselas',32064,32079,3,7),(6142,'Salcedillo',38254,38257,3,1),(6143,'Saldaña',31044,31053,3,4),(6144,'Saldaña de Burgos',8568,8571,3,1),(6145,'Saldeana',33606,33609,3,1),(6146,'Saldes',6764,6769,3,2),(6147,'Saldías',29162,29165,3,1),(6148,'Saldón',38258,38261,3,1),(6149,'Salduero',36314,36317,3,1),(6150,'Salem',40402,40405,3,1),(6151,'Sales de Llierca',14758,14761,3,1),(6152,'Salillas',19238,19241,3,1),(6153,'Salillas de Jalón',44502,44505,3,1),(6154,'Salinas',1558,1565,3,3),(6155,'Salinas de Oro/Jaitz',29166,29169,3,1),(6156,'Salinas de Pisuerga',31054,31061,3,3),(6157,'Salinas del Manzano',13674,13677,3,1),(6158,'Salinillas de Bureba',8572,8575,3,1),(6159,'Sallent',6770,6773,3,1),(6160,'Sallent de Gállego',19242,19251,3,4),(6161,'Salmerón',17004,17007,3,1),(6162,'Salmeroncillos',13678,13681,3,1),(6163,'Salmoral',33610,33613,3,1),(6164,'Salobral',4220,4223,3,1),(6165,'Salobre',800,803,3,1),(6166,'Salobreña',15880,15889,3,4),(6167,'Salomó',37232,37235,3,1),(6168,'Salorino',9894,9897,3,1),(6169,'Salou',37236,37239,3,1),(6170,'Salt',14762,14765,3,1),(6171,'Salteras',35494,35497,3,1),(6172,'Salvacañete',13682,13685,3,1),(6173,'Salvadiós',4224,4227,3,1),(6174,'Salvador de Zapardiel',41264,41267,3,1),(6175,'Salvaleón',5076,5079,3,1),(6176,'Salvaterra de Miño',32080,32093,3,6),(6177,'Salvatierra de Esca',44506,44509,3,1),(6178,'Salvatierra de los Barros',5080,5083,3,1),(6179,'Salvatierra de Santiago',9898,9901,3,1),(6180,'Salvatierra de Tormes',33614,33617,3,1),(6181,'Samaniego',268,271,3,1),(6182,'Samboal',34786,34791,3,2),(6183,'Samir de los Caños',43088,43091,3,1),(6184,'Samos',25668,25693,3,12),(6185,'Samper de Calanda',38262,38265,3,1),(6186,'Samper del Salz',44510,44513,3,1),(6187,'San Adrián',29170,29173,3,1),(6188,'San Adrián de Juarros',8576,8579,3,1),(6189,'San Adrián del Valle',22808,22811,3,1),(6190,'San Agustín',38266,38269,3,1),(6191,'San Agustín del Guadalix',26686,26689,3,1),(6192,'San Agustín del Pozo',43092,43095,3,1),(6193,'San Amaro',30210,30217,3,3),(6194,'San Andrés del Congosto',17008,17011,3,1),(6195,'San Andrés del Rabanedo',22812,22823,3,5),(6196,'San Andrés del Rey',17012,17015,3,1),(6197,'San Antonio de Benagéber',40406,40409,3,1),(6198,'San Asensio',21650,21653,3,1),(6199,'San Bartolomé de Béjar',4228,4231,3,1),(6200,'San Bartolomé de Corneja',4232,4235,3,1),(6201,'San Bartolomé de la Torre',18174,18179,3,2),(6202,'San Bartolomé de las Abiertas',39192,39195,3,1),(6203,'San Bartolomé de Pinares',4236,4239,3,1),(6204,'San Carlos del Valle',12304,12307,3,1),(6205,'San Cebrián de Campos',31062,31065,3,1),(6206,'San Cebrián de Castro',43096,43101,3,2),(6207,'San Cebrián de Mazote',41268,41271,3,1),(6208,'San Cebrián de Mudá',31066,31071,3,2),(6209,'San Cibrao das Viñas',30218,30229,3,5),(6210,'San Clemente',13686,13689,3,1),(6211,'San Cristóbal de Boedo',31072,31075,3,1),(6212,'San Cristóbal de Cuéllar',34792,34795,3,1),(6213,'San Cristóbal de Entreviñas',43102,43107,3,2),(6214,'San Cristóbal de la Cuesta',33618,33621,3,1),(6215,'San Cristóbal de la Polantera',22824,22829,3,2),(6216,'San Cristóbal de la Vega',34796,34799,3,1),(6217,'San Cristóbal de Segovia',34800,34803,3,1),(6218,'San Cristovo de Cea',30230,30247,3,8),(6219,'San Emiliano',22830,22837,3,3),(6220,'San Esteban de Gormaz',36318,36333,3,7),(6221,'San Esteban de la Sierra',33622,33625,3,1),(6222,'San Esteban de Litera',19252,19255,3,1),(6223,'San Esteban de los Patos',4240,4243,3,1),(6224,'San Esteban de Nogales',22838,22841,3,1),(6225,'San Esteban de Zapardiel',4244,4247,3,1),(6226,'San Esteban del Molar',43108,43111,3,1),(6227,'San Esteban del Valle',4248,4251,3,1),(6228,'San Felices',36334,36337,3,1),(6229,'San Felices de Buelna',11034,11037,3,1),(6230,'San Felices de los Gallegos',33626,33629,3,1),(6231,'San Fernando',10422,10425,3,1),(6232,'San Fernando de Henares',26690,26695,3,2),(6233,'San Fulgencio',1566,1569,3,1),(6234,'San García de Ingelmos',4252,4255,3,1),(6235,'San Isidro',1570,1573,3,1),(6236,'San Javier',28026,28043,3,8),(6237,'San José del Valle',10426,10431,3,2),(6238,'San Juan de Aznalfarache',35498,35501,3,1),(6239,'San Juan de Gredos',4256,4261,3,2),(6240,'San Juan de la Encinilla',4262,4267,3,2),(6241,'San Juan de la Nava',4268,4271,3,1),(6242,'San Juan de Plan',19256,19259,3,1),(6243,'San Juan del Molinillo',4272,4275,3,1),(6244,'San Juan del Monte',8580,8583,3,1),(6245,'San Juan del Olmo',4276,4279,3,1),(6246,'San Juan del Puerto',18180,18185,3,2),(6247,'San Justo',43112,43119,3,3),(6248,'San Justo de la Vega',22842,22849,3,3),(6249,'San Leonardo de Yagüe',36338,36341,3,1),(6250,'San Llorente',41272,41275,3,1),(6251,'San Lorenzo de Calatrava',12308,12311,3,1),(6252,'San Lorenzo de El Escorial',26696,26701,3,2),(6253,'San Lorenzo de la Parrilla',13690,13693,3,1),(6254,'San Lorenzo de Tormes',4280,4283,3,1),(6255,'San Mamés de Burgos',8584,8587,3,1),(6256,'San Mamés de Campos',31076,31079,3,1),(6257,'San Martín de Boniches',13694,13697,3,1),(6258,'San Martín de la Vega',26702,26705,3,1),(6259,'San Martín de la Vega del Alberche',4284,4287,3,1),(6260,'San Martín de la Virgen de Moncayo',44514,44517,3,1),(6261,'San Martín de Montalbán',39196,39199,3,1),(6262,'San Martín de Oscos',3190,3193,3,1),(6263,'San Martín de Pusa',39200,39203,3,1),(6264,'San Martín de Rubiales',8588,8591,3,1),(6265,'San Martín de Trevejo',9902,9905,3,1),(6266,'San Martín de Unx',29174,29177,3,1),(6267,'San Martín de Valdeiglesias',26706,26709,3,1),(6268,'San Martín de Valderaduey',43120,43123,3,1),(6269,'San Martín de Valvení',41276,41279,3,1),(6270,'San Martín del Castañar',33630,33633,3,1),(6271,'San Martín del Pimpollar',4288,4291,3,1),(6272,'San Martín del Rey Aurelio',3194,3217,3,11),(6273,'San Martín del Río',38270,38273,3,1),(6274,'San Martín y Mudrián',34804,34807,3,1),(6275,'San Mateo de Gállego',44518,44521,3,1),(6276,'San Miguel de Aguayo',11038,11041,3,1),(6277,'San Miguel de Bernuy',34808,34811,3,1),(6278,'San Miguel de Corneja',4292,4295,3,1),(6279,'San Miguel de la Ribera',43124,43127,3,1),(6280,'San Miguel de Salinas',1574,1577,3,1),(6281,'San Miguel de Serrezuela',4296,4299,3,1),(6282,'San Miguel de Valero',33634,33637,3,1),(6283,'San Miguel del Arroyo',41280,41283,3,1),(6284,'San Miguel del Cinca',19260,19267,3,3),(6285,'San Miguel del Pino',41284,41287,3,1),(6286,'San Miguel del Robledo',33638,33643,3,2),(6287,'San Miguel del Valle',43128,43131,3,1),(6288,'San Millán de la Cogolla',21654,21657,3,1),(6289,'San Millán de Lara',8592,8595,3,1),(6290,'San Millán de los Caballeros',22850,22853,3,1),(6291,'San Millán de Yécora',21658,21661,3,1),(6292,'San Millán/Donemiliaga',272,277,3,2),(6293,'San Morales',33644,33647,3,1),(6294,'San Muñoz',33648,33653,3,2),(6295,'San Nicolás del Puerto',35502,35509,3,3),(6296,'San Pablo de la Moraleja',41288,41291,3,1),(6297,'San Pablo de los Montes',39204,39207,3,1),(6298,'San Pascual',4300,4303,3,1),(6299,'San Pedro',804,807,3,1),(6300,'San Pedro Bercianos',22854,22857,3,1),(6301,'San Pedro de Ceque',43132,43135,3,1),(6302,'San Pedro de Gaíllos',34812,34815,3,1),(6303,'San Pedro de la Nave-Almendra',43136,43141,3,2),(6304,'San Pedro de Latarce',41292,41295,3,1),(6305,'San Pedro de Mérida',5084,5087,3,1),(6306,'San Pedro de Rozados',33654,33667,3,6),(6307,'San Pedro del Arroyo',4304,4307,3,1),(6308,'San Pedro del Pinatar',28044,28049,3,2),(6309,'San Pedro del Romeral',11042,11047,3,2),(6310,'San Pedro del Valle',33668,33671,3,1),(6311,'San Pedro Manrique',36342,36347,3,2),(6312,'San Pedro Palmiches',13698,13701,3,1),(6313,'San Pelayo',41296,41299,3,1),(6314,'San Pelayo de Guareña',33672,33679,3,3),(6315,'San Rafael del Río',11720,11725,3,2),(6316,'San Román de Cameros',21662,21665,3,1),(6317,'San Román de Hornija',41300,41303,3,1),(6318,'San Román de la Cuba',31080,31083,3,1),(6319,'San Román de los Montes',39208,39211,3,1),(6320,'San Roque',10432,10449,3,8),(6321,'San Roque de Riomiera',11048,11053,3,2),(6322,'San Sadurniño',20888,20901,3,6),(6323,'San Salvador',41304,41307,3,1),(6324,'San Sebastián de los Ballesteros',12854,12857,3,1),(6325,'San Sebastián de los Reyes',26710,26727,3,8),(6326,'San Silvestre de Guzmán',18186,18189,3,1),(6327,'San Tirso de Abres',3218,3221,3,1),(6328,'San Torcuato',21666,21669,3,1),(6329,'San Vicente de Alcántara',5088,5091,3,1),(6330,'San Vicente de Arévalo',4308,4311,3,1),(6331,'San Vicente de la Barquera',11054,11063,3,4),(6332,'San Vicente de la Cabeza',43142,43145,3,1),(6333,'San Vicente de la Sonsierra',21670,21675,3,2),(6334,'San Vicente del Palacio',41308,41311,3,1),(6335,'San Vicente del Raspeig/Sant Vicent del Raspeig',1578,1581,3,1),(6336,'San Vicente del Valle',8596,8599,3,1),(6337,'San Vitero',43146,43153,3,3),(6338,'San Xoán de Río',30248,30255,3,3),(6339,'Sanaüja',24410,24413,3,1),(6340,'Sancedo',22858,22863,3,2),(6341,'Sanchidrián',4312,4315,3,1),(6342,'Sanchón de la Ribera',33680,33683,3,1),(6343,'Sanchón de la Sagrada',33684,33687,3,1),(6344,'Sanchonuño',34816,34819,3,1),(6345,'Sanchorreja',4316,4319,3,1),(6346,'Sanchotello',33688,33691,3,1),(6347,'Sancti-Spíritus',33692,33697,3,2),(6348,'Sancti-Spíritus',5092,5093,3,0),(6349,'Sandiás',30256,30261,3,2),(6350,'Sando',33698,33705,3,3),(6351,'Sanet y Negrals',1582,1585,3,1),(6352,'Sangarcía',34820,34825,3,2),(6353,'Sangarrén',19268,19271,3,1),(6354,'Sangüesa/Zangoza',29178,29183,3,2),(6355,'Sanlúcar de Barrameda',10450,10459,3,4),(6356,'Sanlúcar de Guadiana',18190,18193,3,1),(6357,'Sanlúcar la Mayor',35510,35513,3,1),(6358,'Sansol',29184,29187,3,1),(6359,'Sant Adrià de Besòs',6774,6777,3,1),(6360,'Sant Agustí de Lluçanès',6778,6781,3,1),(6361,'Sant Andreu de la Barca',6782,6785,3,1),(6362,'Sant Andreu de Llavaneres',6786,6789,3,1),(6363,'Sant Andreu Salou',14766,14769,3,1),(6364,'Sant Aniol de Finestres',14770,14775,3,2),(6365,'Sant Antoni de Portmany',5290,5299,3,4),(6366,'Sant Antoni de Vilamajor',6790,6793,3,1),(6367,'Sant Bartomeu del Grau',6794,6797,3,1),(6368,'Sant Boi de Llobregat',6798,6803,3,2),(6369,'Sant Boi de Lluçanès',6804,6807,3,1),(6370,'Sant Carles de la Ràpita',37240,37245,3,2),(6371,'Sant Cebrià de Vallalta',6808,6811,3,1),(6372,'Sant Celoni',6812,6819,3,3),(6373,'Sant Climent de Llobregat',6820,6823,3,1),(6374,'Sant Climent Sescebes',14776,14779,3,1),(6375,'Sant Cugat del Vallès',6824,6843,3,9),(6376,'Sant Cugat Sesgarrigues',6844,6847,3,1),(6377,'Sant Esteve de la Sarga',24414,24417,3,1),(6378,'Sant Esteve de Palautordera',6848,6853,3,2),(6379,'Sant Esteve Sesrovires',6854,6859,3,2),(6380,'Sant Feliu de Buixalleu',14780,14783,3,1),(6381,'Sant Feliu de Codines',6860,6863,3,1),(6382,'Sant Feliu de Guíxols',14784,14789,3,2),(6383,'Sant Feliu de Llobregat',6864,6867,3,1),(6384,'Sant Feliu de Pallerols',14790,14793,3,1),(6385,'Sant Feliu Sasserra',6868,6871,3,1),(6386,'Sant Ferriol',14794,14799,3,2),(6387,'Sant Fost de Campsentelles',6872,6875,3,1),(6388,'Sant Fruitós de Bages',6876,6879,3,1),(6389,'Sant Gregori',14800,14809,3,4),(6390,'Sant Guim de Freixenet',24418,24425,3,3),(6391,'Sant Guim de la Plana',24426,24429,3,1),(6392,'Sant Hilari Sacalm',14810,14813,3,1),(6393,'Sant Hipòlit de Voltregà',6880,6883,3,1),(6394,'Sant Iscle de Vallalta',6884,6887,3,1),(6395,'Sant Jaume d\'Enveja',37246,37251,3,2),(6396,'Sant Jaume de Frontanyà',6888,6891,3,1),(6397,'Sant Jaume de Llierca',14814,14817,3,1),(6398,'Sant Jaume dels Domenys',37252,37255,3,1),(6399,'Sant Joan',5610,5615,3,2),(6400,'Sant Joan d\'Alacant',1586,1589,3,1),(6401,'Sant Joan de Labritja',5300,5309,3,4),(6402,'Sant Joan de les Abadesses',14818,14821,3,1),(6403,'Sant Joan de Mollet',14822,14825,3,1),(6404,'Sant Joan de Moró',11726,11729,3,1),(6405,'Sant Joan de Vilatorrada',6892,6895,3,1),(6406,'Sant Joan Despí',6896,6899,3,1),(6407,'Sant Joan les Fonts',14826,14829,3,1),(6408,'Sant Joanet',40410,40413,3,1),(6409,'Sant Jordi Desvalls',14830,14833,3,1),(6410,'Sant Jordi/San Jorge',11730,11733,3,1),(6411,'Sant Josep de sa Talaia',5310,5321,3,5),(6412,'Sant Julià de Cerdanyola',6900,6903,3,1),(6413,'Sant Julià de Ramis',14834,14839,3,2),(6414,'Sant Julià de Vilatorta',6904,6907,3,1),(6415,'Sant Julià del Llor i Bonmatí',14840,14843,3,1),(6416,'Sant Just Desvern',6908,6911,3,1),(6417,'Sant Llorenç d\'Hortons',6912,6915,3,1),(6418,'Sant Llorenç de la Muga',14844,14847,3,1),(6419,'Sant Llorenç de Morunys',24430,24435,3,2),(6420,'Sant Llorenç des Cardassar',5616,5625,3,4),(6421,'Sant Llorenç Savall',6916,6921,3,2),(6422,'Sant Lluís',5768,5775,3,3),(6423,'Sant Martí d\'Albars',6922,6925,3,1),(6424,'Sant Martí de Centelles',6926,6929,3,1),(6425,'Sant Martí de Llémena',14848,14855,3,3),(6426,'Sant Martí de Riucorb',24436,24443,3,3),(6427,'Sant Martí de Tous',6930,6933,3,1),(6428,'Sant Martí Sarroca',6934,6937,3,1),(6429,'Sant Martí Sesgueioles',6938,6941,3,1),(6430,'Sant Martí Vell',14856,14859,3,1),(6431,'Sant Mateu',11734,11737,3,1),(6432,'Sant Mateu de Bages',6942,6947,3,2),(6433,'Sant Miquel de Campmajor',14860,14863,3,1),(6434,'Sant Miquel de Fluvià',14864,14867,3,1),(6435,'Sant Mori',14868,14871,3,1),(6436,'Sant Pau de Segúries',14872,14877,3,2),(6437,'Sant Pere de Ribes',6948,6953,3,2),(6438,'Sant Pere de Riudebitlles',6954,6957,3,1),(6439,'Sant Pere de Torelló',6958,6961,3,1),(6440,'Sant Pere de Vilamajor',6962,6969,3,3),(6441,'Sant Pere Pescador',14878,14881,3,1),(6442,'Sant Pere Sallavinera',6970,6973,3,1),(6443,'Sant Pol de Mar',6974,6977,3,1),(6444,'Sant Quintí de Mediona',6978,6981,3,1),(6445,'Sant Quirze de Besora',6982,6987,3,2),(6446,'Sant Quirze del Vallès',6988,6995,3,3),(6447,'Sant Quirze Safaja',6996,6999,3,1),(6448,'Sant Ramon',24444,24449,3,2),(6449,'Sant Sadurní d\'Anoia',7000,7003,3,1),(6450,'Sant Sadurní d\'Osormort',7004,7007,3,1),(6451,'Sant Salvador de Guardiola',7008,7011,3,1),(6452,'Sant Vicenç de Castellet',7012,7015,3,1),(6453,'Sant Vicenç de Montalt',7016,7019,3,1),(6454,'Sant Vicenç de Torelló',7020,7023,3,1),(6455,'Sant Vicenç dels Horts',7024,7027,3,1),(6456,'Santa Amalia',5094,5097,3,1),(6457,'Santa Ana',9906,9909,3,1),(6458,'Santa Ana de Pusa',39212,39215,3,1),(6459,'Santa Ana la Real',18194,18199,3,2),(6460,'Santa Bàrbara',37256,37259,3,1),(6461,'Santa Bárbara de Casa',18200,18203,3,1),(6462,'Santa Cecilia',8600,8603,3,1),(6463,'Santa Cecília de Voltregà',7028,7031,3,1),(6464,'Santa Cecilia del Alcor',31084,31087,3,1),(6465,'Santa Cilia',19272,19277,3,2),(6466,'Santa Clara de Avedillo',43154,43157,3,1),(6467,'Santa Coloma',21676,21679,3,1),(6468,'Santa Coloma de Cervelló',7032,7035,3,1),(6469,'Santa Coloma de Farners',14882,14885,3,1),(6470,'Santa Coloma de Gramenet',7036,7045,3,4),(6471,'Santa Coloma de Queralt',37260,37265,3,2),(6472,'Santa Colomba de Curueño',22864,22871,3,3),(6473,'Santa Colomba de las Monjas',43158,43161,3,1),(6474,'Santa Colomba de Somoza',22872,22877,3,2),(6475,'Santa Comba',20902,20921,3,9),(6476,'Santa Cristina d\'Aro',14886,14893,3,3),(6477,'Santa Cristina de la Polvorosa',43162,43165,3,1),(6478,'Santa Cristina de Valmadrigal',22878,22881,3,1),(6479,'Santa Croya de Tera',43166,43169,3,1),(6480,'Santa Cruz de Bezana',11064,11071,3,3),(6481,'Santa Cruz de Boedo',31088,31093,3,2),(6482,'Santa Cruz de Grío',44522,44525,3,1),(6483,'Santa Cruz de la Salceda',8604,8607,3,1),(6484,'Santa Cruz de la Serós',19278,19283,3,2),(6485,'Santa Cruz de la Sierra',9910,9913,3,1),(6486,'Santa Cruz de la Zarza',39216,39219,3,1),(6487,'Santa Cruz de los Cáñamos',12312,12315,3,1),(6488,'Santa Cruz de Marchena',2170,2173,3,1),(6489,'Santa Cruz de Moncayo',44526,44529,3,1),(6490,'Santa Cruz de Moya',13702,13707,3,2),(6491,'Santa Cruz de Mudela',12316,12319,3,1),(6492,'Santa Cruz de Nogueras',38274,38277,3,1),(6493,'Santa Cruz de Paniagua',9914,9919,3,2),(6494,'Santa Cruz de Pinares',4320,4323,3,1),(6495,'Santa Cruz de Yanguas',36348,36353,3,2),(6496,'Santa Cruz del Comercio',15890,15893,3,1),(6497,'Santa Cruz del Retamar',39220,39225,3,2),(6498,'Santa Cruz del Valle',4324,4327,3,1),(6499,'Santa Cruz del Valle Urbión',8608,8611,3,1),(6500,'Santa Elena',19928,19931,3,1),(6501,'Santa Elena de Jamuz',22882,22887,3,2),(6502,'Santa Engracia del Jubera',21680,21685,3,2),(6503,'Santa Eufemia',12858,12863,3,2),(6504,'Santa Eufemia del Arroyo',41312,41315,3,1),(6505,'Santa Eufemia del Barco',43170,43175,3,2),(6506,'Santa Eugènia',5626,5629,3,1),(6507,'Santa Eugènia de Berga',7046,7049,3,1),(6508,'Santa Eulalia',38278,38281,3,1),(6509,'Santa Eulalia Bajera',21686,21689,3,1),(6510,'Santa Eulalia de Gállego',44530,44533,3,1),(6511,'Santa Eulalia de Oscos',3222,3227,3,2),(6512,'Santa Eulàlia de Riuprimer',7050,7053,3,1),(6513,'Santa Eulàlia de Ronçana',7054,7057,3,1),(6514,'Santa Eulària des Riu',5322,5335,3,6),(6515,'Santa Fe',15894,15903,3,4),(6516,'Santa Fe de Mondújar',2174,2177,3,1),(6517,'Santa Fe del Penedès',7058,7061,3,1),(6518,'Santa Gadea del Cid',8612,8615,3,1),(6519,'Santa Inés',8616,8619,3,1),(6520,'Santa Llogaia d\'Àlguema',14894,14897,3,1),(6521,'Santa Magdalena de Pulpis',11738,11741,3,1),(6522,'Santa Margalida',5630,5637,3,3),(6523,'Santa Margarida de Montbui',7062,7065,3,1),(6524,'Santa Margarida i els Monjos',7066,7069,3,1),(6525,'Santa Maria d\'Oló',7070,7073,3,1),(6526,'Santa Maria de Besora',7074,7079,3,2),(6527,'Santa María de Cayón',11072,11083,3,5),(6528,'Santa María de Dulcis',19284,19289,3,2),(6529,'Santa María de Huerta',36354,36357,3,1),(6530,'Santa María de la Alameda',26728,26733,3,2),(6531,'Santa María de la Isla',22888,22891,3,1),(6532,'Santa María de la Vega',43176,43179,3,1),(6533,'Santa María de las Hoyas',36358,36361,3,1),(6534,'Santa María de los Caballeros',4328,4333,3,2),(6535,'Santa María de los Llanos',13708,13711,3,1),(6536,'Santa Maria de Martorelles',7080,7083,3,1),(6537,'Santa Maria de Merlès',7084,7089,3,2),(6538,'Santa Maria de Miralles',7090,7093,3,1),(6539,'Santa María de Ordás',22892,22901,3,4),(6540,'Santa Maria de Palautordera',7094,7097,3,1),(6541,'Santa María de Sando',33706,33709,3,1),(6542,'Santa María de Valverde',43180,43183,3,1),(6543,'Santa María del Arroyo',4334,4337,3,1),(6544,'Santa María del Berrocal',4338,4343,3,2),(6545,'Santa María del Camí',5638,5641,3,1),(6546,'Santa María del Campo',8620,8623,3,1),(6547,'Santa María del Campo Rus',13712,13715,3,1),(6548,'Santa María del Cubillo',4344,4347,3,1),(6549,'Santa María del Invierno',8624,8627,3,1),(6550,'Santa María del Mercadillo',8628,8631,3,1),(6551,'Santa María del Monte de Cea',22902,22907,3,2),(6552,'Santa María del Páramo',22908,22911,3,1),(6553,'Santa María del Tiétar',4348,4351,3,1),(6554,'Santa María del Val',13716,13719,3,1),(6555,'Santa María la Real de Nieva',34826,34843,3,8),(6556,'Santa María Rivarredonda',8632,8635,3,1),(6557,'Santa Marina del Rey',22912,22915,3,1),(6558,'Santa Marta',5098,5101,3,1),(6559,'Santa Marta de Magasca',9920,9923,3,1),(6560,'Santa Marta de Tormes',33710,33715,3,2),(6561,'Santa Marta del Cerro',34844,34847,3,1),(6562,'Santa Olalla',39226,39229,3,1),(6563,'Santa Olalla de Bureba',8636,8639,3,1),(6564,'Santa Olalla del Cala',18204,18209,3,2),(6565,'Santa Oliva',37266,37271,3,2),(6566,'Santa Pau',14898,14901,3,1),(6567,'Santa Perpètua de Mogoda',7098,7101,3,1),(6568,'Santa Pola',1590,1593,3,1),(6569,'Santa Susanna',7102,7105,3,1),(6570,'Santacara',29188,29191,3,1),(6571,'Santaella',12864,12871,3,3),(6572,'Santaliestra y San Quílez',19290,19295,3,2),(6573,'Santander',11084,11109,3,12),(6574,'Santanyí',5642,5661,3,9),(6575,'Santas Martas',22916,22923,3,3),(6576,'Santed',44534,44537,3,1),(6577,'Santervás de Campos',41316,41319,3,1),(6578,'Santervás de la Vega',31094,31097,3,1),(6579,'Santiago de Alcántara',9924,9929,3,2),(6580,'Santiago de Calatrava',19932,19935,3,1),(6581,'Santiago de Compostela',20922,20961,3,19),(6582,'Santiago de la Puebla',33716,33719,3,1),(6583,'Santiago del Campo',9930,9933,3,1),(6584,'Santiago del Collado',4352,4355,3,1),(6585,'Santiago del Tormes',4356,4359,3,1),(6586,'Santiago Millas',22924,22933,3,4),(6587,'Santiago-Pontones',19936,19951,3,7),(6588,'Santibáñez de Béjar',33720,33723,3,1),(6589,'Santibáñez de Ecla',31098,31101,3,1),(6590,'Santibáñez de Esgueva',8640,8643,3,1),(6591,'Santibáñez de la Peña',31102,31113,3,5),(6592,'Santibáñez de la Sierra',33724,33729,3,2),(6593,'Santibáñez de Tera',43184,43189,3,2),(6594,'Santibáñez de Valcorba',41320,41325,3,2),(6595,'Santibáñez de Vidriales',43190,43201,3,5),(6596,'Santibáñez del Val',8644,8649,3,2),(6597,'Santibáñez el Alto',9934,9937,3,1),(6598,'Santibáñez el Bajo',9938,9941,3,1),(6599,'Santillana del Mar',11110,11121,3,5),(6600,'Santiponce',35514,35517,3,1),(6601,'Santiso',20962,20965,3,1),(6602,'Santisteban del Puerto',19952,19955,3,1),(6603,'Santiurde de Reinosa',11122,11127,3,2),(6604,'Santiurde de Toranzo',11128,11135,3,3),(6605,'Santiuste',17016,17019,3,1),(6606,'Santiuste de Pedraza',34848,34855,3,3),(6607,'Santiuste de San Juan Bautista',34856,34859,3,1),(6608,'Santiz',33730,33733,3,1),(6609,'Santo Adriano',3228,3231,3,1),(6610,'Santo Domingo de la Calzada',21690,21693,3,1),(6611,'Santo Domingo de las Posadas',4360,4363,3,1),(6612,'Santo Domingo de Pirón',34860,34863,3,1),(6613,'Santo Domingo de Silos',8650,8653,3,1),(6614,'Santo Domingo-Caudilla',39230,39233,3,1),(6615,'Santo Tomé',19956,19959,3,1),(6616,'Santo Tomé de Zabarcos',4364,4367,3,1),(6617,'Santo Tomé del Puerto',34864,34867,3,1),(6618,'Santomera',28050,28059,3,4),(6619,'Santoña',11136,11143,3,3),(6620,'Santorcaz',26734,26737,3,1),(6621,'Santovenia',43202,43205,3,1),(6622,'Santovenia de la Valdoncina',22934,22939,3,2),(6623,'Santovenia de Pisuerga',41326,41329,3,1),(6624,'Santoyo',31114,31117,3,1),(6625,'Santpedor',7106,7109,3,1),(6626,'Santurde de Rioja',21694,21697,3,1),(6627,'Santurdejo',21698,21701,3,1),(6628,'Santurtzi',42120,42123,3,1),(6629,'Sanxenxo',32094,32107,3,6),(6630,'Sanzoles',43206,43209,3,1),(6631,'Sardón de Duero',41330,41333,3,1),(6632,'Sardón de los Frailes',33734,33737,3,1),(6633,'Sargentes de la Lora',8654,8661,3,3),(6634,'Sariego',3232,3235,3,1),(6635,'Sariegos',22940,22945,3,2),(6636,'Sariñena',19296,19305,3,4),(6637,'Saro',11144,11147,3,1),(6638,'Sarracín',8662,8665,3,1),(6639,'Sarral',37272,37279,3,3),(6640,'Sarreaus',30262,30269,3,3),(6641,'Sarria',25694,25721,3,13),(6642,'Sarrià de Ter',14902,14905,3,1),(6643,'Sarriés/Sartze',29192,29195,3,1),(6644,'Sarrión',38282,38287,3,2),(6645,'Sarroca de Bellera',24450,24453,3,1),(6646,'Sarroca de Lleida',24454,24457,3,1),(6647,'Sartaguda',29196,29199,3,1),(6648,'Sartajada',39234,39237,3,1),(6649,'Sasamón',8666,8671,3,2),(6650,'Sástago',44538,44541,3,1),(6651,'Saúca',17020,17023,3,1),(6652,'Saucedilla',9942,9945,3,1),(6653,'Saucelle',33738,33741,3,1),(6654,'Sauquillo de Cabezas',34868,34871,3,1),(6655,'Saus, Camallera i Llampaies',14906,14911,3,2),(6656,'Savallà del Comtat',37280,37283,3,1),(6657,'Sax',1594,1597,3,1),(6658,'Sayalonga',27418,27423,3,2),(6659,'Sayatón',17024,17027,3,1),(6660,'Sebúlcor',34872,34877,3,2),(6661,'Secastilla',19306,19311,3,2),(6662,'Sedaví',40414,40417,3,1),(6663,'Sedella',27424,27429,3,2),(6664,'Sediles',44542,44545,3,1),(6665,'Segart',40418,40421,3,1),(6666,'Segorbe',11742,11749,3,3),(6667,'Segovia',34878,34899,3,10),(6668,'Segura',17728,17731,3,1),(6669,'Segura de la Sierra',19960,19971,3,5),(6670,'Segura de León',5102,5105,3,1),(6671,'Segura de los Baños',38288,38291,3,1),(6672,'Segura de Toro',9946,9949,3,1),(6673,'Segurilla',39238,39241,3,1),(6674,'Seira',19312,19317,3,2),(6675,'Selas',17028,17031,3,1),(6676,'Selaya',11148,11151,3,1),(6677,'Sella',1598,1601,3,1),(6678,'Sellent',40422,40425,3,1),(6679,'Selva',5662,5671,3,4),(6680,'Semillas',17032,17035,3,1),(6681,'Sempere',40426,40429,3,1),(6682,'Sena',19318,19321,3,1),(6683,'Sena de Luna',22946,22951,3,2),(6684,'Senan',37284,37287,3,1),(6685,'Sencelles',5672,5681,3,4),(6686,'Señera',40430,40433,3,1),(6687,'Senés',2178,2181,3,1),(6688,'Senés de Alcubierre',19322,19325,3,1),(6689,'Senija',1602,1605,3,1),(6690,'Seno',38292,38295,3,1),(6691,'Senterada',24458,24465,3,3),(6692,'Sentmenat',7110,7113,3,1),(6693,'Sepulcro-Hilario',33742,33745,3,1),(6694,'Sepúlveda',34900,34913,3,6),(6695,'Sequera de Fresno',34914,34917,3,1),(6696,'Sequeros',33746,33749,3,1),(6697,'Serinyà',14912,14915,3,1),(6698,'Serón',2182,2191,3,4),(6699,'Serón de Nágima',36362,36365,3,1),(6700,'Seròs',24466,24469,3,1),(6701,'Serra',40434,40437,3,1),(6702,'Serra de Daró',14916,14919,3,1),(6703,'Serrada',41334,41337,3,1),(6704,'Serradilla',9950,9955,3,2),(6705,'Serradilla del Arroyo',33750,33755,3,2),(6706,'Serradilla del Llano',33756,33759,3,1),(6707,'Serranillos',4368,4373,3,2),(6708,'Serranillos del Valle',26738,26741,3,1),(6709,'Serrato',27430,27431,3,0),(6710,'Serrejón',9956,9959,3,1),(6711,'ses Salines',5682,5687,3,2),(6712,'Sesa',19326,19329,3,1),(6713,'Seseña',39242,39249,3,3),(6714,'Sesma',29200,29203,3,1),(6715,'Sestao',42124,42127,3,1),(6716,'Sestrica',44546,44551,3,2),(6717,'Sesué',19330,19333,3,1),(6718,'Setcases',14920,14923,3,1),(6719,'Setenil de las Bodegas',10460,10463,3,1),(6720,'Setiles',17036,17039,3,1),(6721,'Seva',7114,7119,3,2),(6722,'Sevilla',35518,35561,3,21),(6723,'Sevilla la Nueva',26742,26745,3,1),(6724,'Sevilleja de la Jara',39250,39257,3,3),(6725,'Sidamon',24470,24473,3,1),(6726,'Sienes',17040,17043,3,1),(6727,'Siero',3236,3267,3,15),(6728,'Sierra de Fuentes',9960,9963,3,1),(6729,'Sierra de Luna',44552,44555,3,1),(6730,'Sierra de Yeguas',27432,27437,3,2),(6731,'Sierra Engarcerán',11750,11759,3,4),(6732,'Sierro',2192,2195,3,1),(6733,'Siétamo',19334,19341,3,3),(6734,'Siete Aguas',40438,40443,3,2),(6735,'Siete Iglesias de Trabancos',41338,41341,3,1),(6736,'Sieteiglesias de Tormes',33760,33763,3,1),(6737,'Sigeres',4374,4377,3,1),(6738,'Sigüenza',17044,17065,3,10),(6739,'Sigüés',44556,44561,3,2),(6740,'Siles',19972,19975,3,1),(6741,'Silla',40444,40447,3,1),(6742,'Silleda',32108,32133,3,12),(6743,'Sils',14924,14929,3,2),(6744,'Simancas',41342,41345,3,1),(6745,'Simat de la Valldigna',40448,40451,3,1),(6746,'Sinarcas',40452,40455,3,1),(6747,'Sineu',5688,5691,3,1),(6748,'Singra',38296,38299,3,1),(6749,'Sinlabajos',4378,4381,3,1),(6750,'Siruela',5106,5109,3,1),(6751,'Sisamón',44562,44565,3,1),(6752,'Sisante',13720,13723,3,1),(6753,'Sitges',7120,7125,3,2),(6754,'Siurana',14930,14933,3,1),(6755,'Soba',11152,11165,3,6),(6756,'Sober',25722,25743,3,10),(6757,'Sobradiel',44566,44569,3,1),(6758,'Sobradillo',33764,33767,3,1),(6759,'Sobrado',20966,20973,3,3),(6760,'Sobrado',22952,22953,3,0),(6761,'Sobremunt',7126,7129,3,1),(6762,'Sobrescobio',3268,3271,3,1),(6763,'Socovos',808,813,3,2),(6764,'Socuéllamos',12320,12323,3,1),(6765,'Sojuela',21702,21705,3,1),(6766,'Solana de Ávila',4382,4387,3,2),(6767,'Solana de los Barros',5110,5117,3,3),(6768,'Solana de Rioalmar',4388,4391,3,1),(6769,'Solana del Pino',12324,12327,3,1),(6770,'Solanillos del Extremo',17066,17069,3,1),(6771,'Solarana',8672,8675,3,1),(6772,'Solera de Gabaldón',13724,13727,3,1),(6773,'Soliedra',36366,36371,3,2),(6774,'Solivella',37288,37291,3,1),(6775,'Sollana',40456,40461,3,2),(6776,'Sóller',5692,5701,3,4),(6777,'Solórzano',11166,11173,3,3),(6778,'Solosancho',4392,4395,3,1),(6779,'Solsona',24474,24477,3,1),(6780,'Somiedo',3272,3279,3,3),(6781,'Somolinos',17070,17073,3,1),(6782,'Somontín',2196,2199,3,1),(6783,'Somosierra',26746,26749,3,1),(6784,'Son Servera',5702,5711,3,4),(6785,'Sondika',42128,42131,3,1),(6786,'Soneja',11760,11763,3,1),(6787,'Sonseca',39258,39263,3,2),(6788,'Sopeira',19342,19345,3,1),(6789,'Sopela',42132,42135,3,1),(6790,'Soportújar',15904,15907,3,1),(6791,'Sopuerta',42136,42145,3,4),(6792,'Sora',7130,7133,3,1),(6793,'Soraluze-Placencia de las Armas',17732,17735,3,1),(6794,'Sorbas',2200,2217,3,8),(6795,'Sordillos',8676,8679,3,1),(6796,'Soria',36372,36387,3,7),(6797,'Soriguera',24478,24485,3,3),(6798,'Sorihuela',33768,33771,3,1),(6799,'Sorihuela del Guadalimar',19976,19979,3,1),(6800,'Sorlada',29204,29207,3,1),(6801,'Sort',24486,24495,3,4),(6802,'Sorvilán',15908,15915,3,3),(6803,'Sorzano',21706,21709,3,1),(6804,'Sos del Rey Católico',44570,44579,3,4),(6805,'Soses',24496,24499,3,1),(6806,'Sot de Chera',40462,40467,3,2),(6807,'Sot de Ferrer',11764,11767,3,1),(6808,'Sotalbo',4396,4399,3,1),(6809,'Sotés',21710,21713,3,1),(6810,'Sotillo',34918,34921,3,1),(6811,'Sotillo de la Adrada',4400,4403,3,1),(6812,'Sotillo de la Ribera',8680,8685,3,2),(6813,'Sotillo de las Palomas',39264,39267,3,1),(6814,'Sotillo del Rincón',36388,36393,3,2),(6815,'Soto de Cerrato',31118,31121,3,1),(6816,'Soto de la Vega',22954,22961,3,3),(6817,'Soto del Barco',3280,3289,3,4),(6818,'Soto del Real',26750,26753,3,1),(6819,'Soto en Cameros',21714,21717,3,1),(6820,'Soto y Amío',22962,22971,3,4),(6821,'Sotobañado y Priorato',31122,31125,3,1),(6822,'Sotodosos',17074,17077,3,1),(6823,'Sotorribas',13728,13735,3,3),(6824,'Sotosalbos',34922,34925,3,1),(6825,'Sotoserrano',33772,33775,3,1),(6826,'Sotragero',8686,8691,3,2),(6827,'Sotresgudo',8692,8699,3,3),(6828,'Soutomaior',32134,32139,3,2),(6829,'Suances',11174,11181,3,3),(6830,'Subirats',7134,7137,3,1),(6831,'Sudanell',24500,24503,3,1),(6832,'Sueca',40468,40475,3,3),(6833,'Suellacabras',36394,36397,3,1),(6834,'Sueras/Suera',11768,11771,3,1),(6835,'Suflí',2218,2221,3,1),(6836,'Sukarrieta',42146,42149,3,1),(6837,'Sumacárcer',40476,40479,3,1),(6838,'Sunbilla',29208,29211,3,1),(6839,'Sunyer',24504,24507,3,1),(6840,'Súria',7138,7141,3,1),(6841,'Susinos del Páramo',8700,8703,3,1),(6842,'Susqueda',14934,14939,3,2),(6843,'Tabanera de Cerrato',31126,31129,3,1),(6844,'Tabanera de Valdavia',31130,31133,3,1),(6845,'Tabanera la Luenga',34926,34929,3,1),(6846,'Tábara',43210,43213,3,1),(6847,'Tabera de Abajo',33776,33783,3,3),(6848,'Tabernas',2222,2227,3,2),(6849,'Taberno',2228,2233,3,2),(6850,'Taboada',25744,25761,3,8),(6851,'Taboadela',30270,30275,3,2),(6852,'Tabuenca',44580,44583,3,1),(6853,'Tafalla',29212,29215,3,1),(6854,'Tagamanent',7142,7145,3,1),(6855,'Tahal',2234,2239,3,2),(6856,'Tajahuerce',36398,36401,3,1),(6857,'Tajueco',36402,36405,3,1),(6858,'Talamanca',7146,7149,3,1),(6859,'Talamanca de Jarama',26754,26757,3,1),(6860,'Talamantes',44584,44587,3,1),(6861,'Talarn',24508,24511,3,1),(6862,'Talarrubias',5118,5121,3,1),(6863,'Talaván',9964,9967,3,1),(6864,'Talavera',24512,24517,3,2),(6865,'Talavera de la Reina',39268,39277,3,4),(6866,'Talavera la Real',5122,5125,3,1),(6867,'Talaveruela de la Vera',9968,9971,3,1),(6868,'Talayuela',9972,9979,3,3),(6869,'Talayuelas',13736,13741,3,2),(6870,'Tales',11772,11775,3,1),(6871,'Táliga',5126,5129,3,1),(6872,'Talveila',36406,36411,3,2),(6873,'Tamajón',17078,17085,3,3),(6874,'Tamames',33784,33791,3,3),(6875,'Támara de Campos',31134,31137,3,1),(6876,'Tamarite de Litera',19346,19353,3,3),(6877,'Tamariz de Campos',41346,41349,3,1),(6878,'Tamarón',8704,8707,3,1),(6879,'Tamurejo',5130,5133,3,1),(6880,'Tapia de Casariego',3290,3301,3,5),(6881,'Tapioles',43214,43217,3,1),(6882,'Taradell',7150,7153,3,1),(6883,'Taragudo',17086,17089,3,1),(6884,'Taramundi',3302,3305,3,1),(6885,'Tarancón',13742,13745,3,1),(6886,'Taravilla',17090,17093,3,1),(6887,'Tarazona',44588,44595,3,3),(6888,'Tarazona de Guareña',33792,33795,3,1),(6889,'Tarazona de la Mancha',814,819,3,2),(6890,'Tàrbena',1606,1609,3,1),(6891,'Tardáguila',33796,33799,3,1),(6892,'Tardajos',8708,8711,3,1),(6893,'Tardelcuende',36412,36415,3,1),(6894,'Tardienta',19354,19357,3,1),(6895,'Tariego de Cerrato',31138,31141,3,1),(6896,'Tarifa',10464,10475,3,5),(6897,'Taroda',36416,36419,3,1),(6898,'Tarragona',37292,37313,3,10),(6899,'Tàrrega',24518,24533,3,7),(6900,'Tarrés',24534,24537,3,1),(6901,'Tarroja de Segarra',24538,24541,3,1),(6902,'Tartanedo',17094,17103,3,4),(6903,'Tauste',44596,44601,3,2),(6904,'Tavernes Blanques',40480,40483,3,1),(6905,'Tavernes de la Valldigna',40484,40487,3,1),(6906,'Tavèrnoles',7154,7157,3,1),(6907,'Tavertet',7158,7161,3,1),(6908,'Teba',27438,27441,3,1),(6909,'Tébar',13746,13749,3,1),(6910,'Teià',7162,7165,3,1),(6911,'Tejada',8712,8715,3,1),(6912,'Tejadillos',13750,13753,3,1),(6913,'Tejado',36420,36425,3,2),(6914,'Tejeda de Tiétar',9980,9985,3,2),(6915,'Tejeda y Segoyuela',33800,33803,3,1),(6916,'Tella-Sin',19358,19365,3,3),(6917,'Tembleque',39278,39281,3,1),(6918,'Tendilla',17104,17107,3,1),(6919,'Tenebrón',33804,33807,3,1),(6920,'Teo',20974,20983,3,4),(6921,'Teresa',11776,11779,3,1),(6922,'Teresa de Cofrentes',40488,40493,3,2),(6923,'Térmens',24542,24545,3,1),(6924,'Terque',2240,2245,3,2),(6925,'Terrades',14940,14943,3,1),(6926,'Terradillos',33808,33815,3,3),(6927,'Terradillos de Esgueva',8716,8719,3,1),(6928,'Terrassa',7166,7185,3,9),(6929,'Terrateig',40494,40497,3,1),(6930,'Terrer',44602,44605,3,1),(6931,'Terriente',38300,38303,3,1),(6932,'Terrinches',12328,12331,3,1),(6933,'Terroba',21718,21721,3,1),(6934,'Teruel',38304,38327,3,11),(6935,'Terzaga',17108,17111,3,1),(6936,'Teulada',1610,1615,3,2),(6937,'Teverga',3306,3311,3,2),(6938,'Tiana',7186,7189,3,1),(6939,'Tibi',1616,1619,3,1),(6940,'Tiebas-Muruarte de Reta',29216,29221,3,2),(6941,'Tiedra',41350,41353,3,1),(6942,'Tielmes',26758,26761,3,1),(6943,'Tierga',44606,44609,3,1),(6944,'Tierz',19366,19369,3,1),(6945,'Tierzo',17112,17115,3,1),(6946,'Tiétar',9986,9987,3,0),(6947,'Tíjola',2246,2255,3,4),(6948,'Tinajas',13754,13757,3,1),(6949,'Tineo',3312,3329,3,8),(6950,'Tinieblas de la Sierra',8720,8725,3,2),(6951,'Tiñosillos',4404,4407,3,1),(6952,'Tirapu',29222,29225,3,1),(6953,'Tirgo',21722,21727,3,2),(6954,'Tírig',11780,11783,3,1),(6955,'Tírvia',24546,24549,3,1),(6956,'Titaguas',40498,40501,3,1),(6957,'Titulcia',26762,26765,3,1),(6958,'Tiurana',24550,24553,3,1),(6959,'Tivenys',37314,37317,3,1),(6960,'Tivissa',37318,37323,3,2),(6961,'Tobar',8726,8729,3,1),(6962,'Tobarra',820,827,3,3),(6963,'Tobed',44610,44613,3,1),(6964,'Tobía',21728,21731,3,1),(6965,'Tocina',35562,35567,3,2),(6966,'Todolella',11784,11787,3,1),(6967,'Toén',30276,30285,3,4),(6968,'Toga',11788,11791,3,1),(6969,'Tolbaños',4408,4413,3,2),(6970,'Toledo',39282,39299,3,8),(6971,'Tollos',1620,1623,3,1),(6972,'Tolocirio',34930,34933,3,1),(6973,'Tolosa',17736,17745,3,4),(6974,'Tolox',27442,27445,3,1),(6975,'Tolva',19370,19373,3,1),(6976,'Tomares',35568,35571,3,1),(6977,'Tomelloso',12332,12337,3,2),(6978,'Tomiño',32140,32165,3,12),(6979,'Tona',7190,7193,3,1),(6980,'Topas',33816,33819,3,1),(6981,'Toques',20984,20987,3,1),(6982,'Torà',24554,24559,3,2),(6983,'Toral de los Guzmanes',22972,22975,3,1),(6984,'Toral de los Vados',22976,22989,3,6),(6985,'Torás',11792,11795,3,1),(6986,'Tordehumos',41354,41357,3,1),(6987,'Tordellego',17116,17119,3,1),(6988,'Tordelrábano',17120,17123,3,1),(6989,'Tordera',7194,7197,3,1),(6990,'Tordesillas',41358,41365,3,3),(6991,'Tordesilos',17124,17127,3,1),(6992,'Tordillos',33820,33823,3,1),(6993,'Tordoia',20988,20995,3,3),(6994,'Tordómar',8730,8733,3,1),(6995,'Torelló',7198,7201,3,1),(6996,'Toreno',22990,23005,3,7),(6997,'Torija',17128,17133,3,2),(6998,'Toril',9988,9997,3,4),(6999,'Toril y Masegoso',38328,38331,3,1),(7000,'Torla-Ordesa',19374,19381,3,3),(7001,'Torlengua',36426,36429,3,1),(7002,'Tormantos',21732,21735,3,1),(7003,'Tormellas',4414,4417,3,1),(7004,'Tormón',38332,38335,3,1),(7005,'Tormos',1624,1627,3,1),(7006,'Tornabous',24560,24563,3,1),(7007,'Tornadizos de Ávila',4418,4421,3,1),(7008,'Tornavacas',9998,10001,3,1),(7009,'Tornos',38336,38339,3,1),(7010,'Toro',43218,43227,3,4),(7011,'Torquemada',31142,31145,3,1),(7012,'Torralba',13758,13761,3,1),(7013,'Torralba de Aragón',19382,19385,3,1),(7014,'Torralba de Calatrava',12338,12341,3,1),(7015,'Torralba de los Frailes',44614,44617,3,1),(7016,'Torralba de los Sisones',38340,38343,3,1),(7017,'Torralba de Oropesa',39300,39303,3,1),(7018,'Torralba de Ribota',44618,44621,3,1),(7019,'Torralba del Pinar',11796,11799,3,1),(7020,'Torralba del Río',29226,29231,3,2),(7021,'Torralbilla',44622,44625,3,1),(7022,'Torre Alháquime',10476,10479,3,1),(7023,'Torre de Arcas',38344,38347,3,1),(7024,'Torre de Don Miguel',10002,10005,3,1),(7025,'Torre de Esgueva',41366,41369,3,1),(7026,'Torre de Juan Abad',12342,12345,3,1),(7027,'Torre de las Arcas',38348,38351,3,1),(7028,'Torre de Miguel Sesmero',5134,5137,3,1),(7029,'Torre de Peñafiel',41370,41375,3,2),(7030,'Torre de Santa María',10006,10009,3,1),(7031,'Torre del Bierzo',23006,23021,3,7),(7032,'Torre del Burgo',17134,17137,3,1),(7033,'Torre del Compte',38352,38355,3,1),(7034,'Torre en Cameros',21736,21739,4,1),(7035,'Torre la Ribera',19386,19393,3,3),(7036,'Torre los Negros',38356,38359,3,1),(7037,'Torre Val de San Pedro',34934,34937,3,1),(7038,'Torre-Cardela',15916,15919,3,1),(7039,'Torre-Pacheco',28060,28075,3,7),(7040,'Torre-serona',24564,24567,3,1),(7041,'Torreadrada',34938,34941,3,1),(7042,'Torrebaja',40502,40505,3,1),(7043,'Torrebesses',24568,24571,3,1),(7044,'Torreblacos',36430,36435,3,2),(7045,'Torreblanca',11800,11803,3,1),(7046,'Torreblascopedro',19980,19985,3,2),(7047,'Torrecaballeros',34942,34945,3,1),(7048,'Torrecampo',12872,12875,3,1),(7049,'Torrechiva',11804,11807,3,1),(7050,'Torrecilla de Alcañiz',38360,38363,3,1),(7051,'Torrecilla de la Abadesa',41376,41379,3,1),(7052,'Torrecilla de la Jara',39304,39307,3,1),(7053,'Torrecilla de la Orden',41380,41383,3,1),(7054,'Torrecilla de la Torre',41384,41387,3,1),(7055,'Torrecilla de los Ángeles',10010,10013,3,1),(7056,'Torrecilla del Monte',8734,8737,3,1),(7057,'Torrecilla del Pinar',34946,34949,3,1),(7058,'Torrecilla del Rebollar',38364,38369,3,2),(7059,'Torrecilla en Cameros',21740,21743,3,1),(7060,'Torrecilla sobre Alesanco',21744,21747,3,1),(7061,'Torrecillas de la Tiesa',10014,10017,3,1),(7062,'Torrecuadrada de Molina',17138,17141,3,1),(7063,'Torrecuadradilla',17142,17145,3,1),(7064,'Torredelcampo',19986,19989,3,1),(7065,'Torredembarra',37324,37327,3,1),(7066,'Torredonjimeno',19990,19993,3,1),(7067,'Torrefarrera',24572,24579,3,3),(7068,'Torrefeta i Florejacs',24580,24585,3,2),(7069,'Torregalindo',8738,8741,3,1),(7070,'Torregamones',43228,43231,3,1),(7071,'Torregrossa',24586,24589,3,1),(7072,'Torrehermosa',44626,44629,3,1),(7073,'Torreiglesias',34950,34955,3,2),(7074,'Torrejón de Ardoz',26766,26769,3,1),(7075,'Torrejón de la Calzada',26770,26773,3,1),(7076,'Torrejón de Velasco',26774,26777,3,1),(7077,'Torrejón del Rey',17146,17149,3,1),(7078,'Torrejón el Rubio',10018,10021,3,1),(7079,'Torrejoncillo',10022,10027,3,2),(7080,'Torrejoncillo del Rey',13762,13769,3,3),(7081,'Torrelacárcel',38370,38373,3,1),(7082,'Torrelaguna',26778,26781,3,1),(7083,'Torrelameu',24590,24593,3,1),(7084,'Torrelapaja',44630,44633,3,1),(7085,'Torrelara',8742,8745,3,1),(7086,'Torrelavega',11182,11191,3,4),(7087,'Torrelavit',7202,7205,3,1),(7088,'Torrella',40506,40509,3,1),(7089,'Torrellas',44634,44637,3,1),(7090,'Torrelles de Foix',7206,7209,3,1),(7091,'Torrelles de Llobregat',7210,7213,3,1),(7092,'Torrelobatón',41388,41391,3,1),(7093,'Torrelodones',26782,26785,3,1),(7094,'Torremanzanas/la Torre de les Maçanes',1628,1631,3,1),(7095,'Torremayor',5138,5141,3,1),(7096,'Torremejía',5142,5145,3,1),(7097,'Torremenga',10028,10031,3,1),(7098,'Torremocha',10032,10035,3,1),(7099,'Torremocha de Jadraque',17150,17153,3,1),(7100,'Torremocha de Jarama',26786,26789,3,1),(7101,'Torremocha de Jiloca',38374,38377,3,1),(7102,'Torremocha del Campo',17154,17161,3,3),(7103,'Torremocha del Pinar',17162,17165,3,1),(7104,'Torremochuela',17166,17169,3,1),(7105,'Torremolinos',27446,27449,3,1),(7106,'Torremontalbo',21748,21751,3,1),(7107,'Torremormojón',31146,31149,3,1),(7108,'Torrent',14944,14957,3,6),(7109,'Torrent',40510,40523,3,6),(7110,'Torrente de Cinca',19394,19397,3,1),(7111,'Torrenueva',12346,12349,3,1),(7112,'Torreorgaz',10036,10039,3,1),(7113,'Torrepadre',8746,8751,3,2),(7114,'Torreperogil',19994,19997,3,1),(7115,'Torrequemada',10040,10043,3,1),(7116,'Torres',19998,20001,3,1),(7117,'Torres de Albánchez',20002,20005,3,1),(7118,'Torres de Albarracín',38378,38381,3,1),(7119,'Torres de Alcanadre',19398,19401,3,1),(7120,'Torres de Barbués',19402,19405,3,1),(7121,'Torres de Berrellén',44638,44641,3,1),(7122,'Torres de la Alameda',26790,26793,3,1),(7123,'Torres de Segre',24594,24597,3,1),(7124,'Torres del Carrizal',43232,43235,3,1),(7125,'Torres del Río',29232,29235,3,1),(7126,'Torres Torres',40524,40527,3,1),(7127,'Torresandino',8752,8755,3,1),(7128,'Torrescárcela',41392,41395,3,1),(7129,'Torresmenudas',33824,33827,3,1),(7130,'Torrevelilla',38382,38385,3,1),(7131,'Torrevieja',1632,1649,3,8),(7132,'Torrico',39308,39311,3,1),(7133,'Torrijas',38386,38389,3,1),(7134,'Torrijo de la Cañada',44642,44645,3,1),(7135,'Torrijo del Campo',38390,38393,3,1),(7136,'Torrijos',39312,39315,3,1),(7137,'Torroella de Fluvià',14958,14961,3,1),(7138,'Torroella de Montgrí',14962,14973,3,5),(7139,'Torroja del Priorat',37328,37331,3,1),(7140,'Torrox',27450,27457,3,3),(7141,'Torrubia',17170,17173,3,1),(7142,'Torrubia de Soria',36436,36439,3,1),(7143,'Torrubia del Campo',13770,13773,3,1),(7144,'Torrubia del Castillo',13774,13777,3,1),(7145,'Tortellà',14974,14977,3,1),(7146,'Tórtola de Henares',17174,17177,3,1),(7147,'Tórtoles',4422,4425,3,1),(7148,'Tórtoles de Esgueva',8756,8761,3,2),(7149,'Tortosa',37332,37345,3,6),(7150,'Tortuera',17178,17181,3,1),(7151,'Tortuero',17182,17185,3,1),(7152,'Torvizcón',15920,15923,3,1),(7153,'Tosantos',8762,8765,3,1),(7154,'Toses',14978,14981,3,1),(7155,'Tosos',44646,44649,3,1),(7156,'Tossa de Mar',14982,14985,3,1),(7157,'Totalán',27458,27461,3,1),(7158,'Totana',28076,28083,3,3),(7159,'Totanés',39316,39319,3,1),(7160,'Touro',20996,21005,3,4),(7161,'Tous',40528,40531,3,1),(7162,'Trabada',25762,25771,3,4),(7163,'Trabadelo',23022,23027,3,2),(7164,'Trabanca',33828,33831,3,1),(7165,'Trabazos',43236,43245,3,4),(7166,'Tragacete',13778,13781,3,1),(7167,'Traíd',17186,17189,3,1),(7168,'Traiguera',11808,11811,3,1),(7169,'Tramacastiel',38394,38399,3,2),(7170,'Tramacastilla',38400,38403,3,1),(7171,'Tramaced',19406,19409,3,1),(7172,'Trasierra',5146,5149,3,1),(7173,'Trasmiras',30286,30295,3,4),(7174,'Trasmoz',44650,44653,3,1),(7175,'Trasobares',44654,44657,3,1),(7176,'Traspinedo',41396,41399,3,1),(7177,'Trazo',21006,21011,3,2),(7178,'Trebujena',10480,10483,3,1),(7179,'Trefacio',43246,43251,3,2),(7180,'Tremedal de Tormes',33832,33837,3,2),(7181,'Tremp',24598,24623,3,12),(7182,'Tres Cantos',26794,26799,3,2),(7183,'Trescasas',34956,34959,3,1),(7184,'Tresjuncos',13782,13785,3,1),(7185,'Trespaderne',8766,8773,3,3),(7186,'Tresviso',11192,11195,3,1),(7187,'Trévago',36440,36443,3,1),(7188,'Trevélez',15924,15927,3,1),(7189,'Treviana',21752,21755,3,1),(7190,'Triacastela',25772,25783,3,5),(7191,'Tribaldos',13786,13789,3,1),(7192,'Tricio',21756,21759,3,1),(7193,'Trigueros',18210,18213,3,1),(7194,'Trigueros del Valle',41400,41403,3,1),(7195,'Trijueque',17190,17193,3,1),(7196,'Trillo',17194,17201,3,3),(7197,'Triollo',31150,31153,3,1),(7198,'Tronchón',38404,38407,3,1),(7199,'Truchas',23028,23035,3,3),(7200,'Trucios-Turtzioz',42150,42153,3,1),(7201,'Trujillanos',5150,5153,3,1),(7202,'Trujillo',10044,10055,3,5),(7203,'Tubilla del Agua',8774,8779,3,2),(7204,'Tubilla del Lago',8780,8783,3,1),(7205,'Tudanca',11196,11199,3,1),(7206,'Tudela',29236,29239,3,1),(7207,'Tudela de Duero',41404,41411,3,3),(7208,'Tudelilla',21760,21763,3,1),(7209,'Tuéjar',40532,40535,3,1),(7210,'Tui',32166,32187,3,10),(7211,'Tulebras',29240,29243,3,1),(7212,'Turcia',23036,23041,3,2),(7213,'Turégano',34960,34965,3,2),(7214,'Turís',40536,40539,3,1),(7215,'Turleque',39320,39323,3,1),(7216,'Turón',15928,15931,3,1),(7217,'Turre',2256,2259,3,1),(7218,'Turrillas',2260,2263,3,1),(7219,'Úbeda',20006,20017,3,5),(7220,'Ubide',42154,42157,3,1),(7221,'Ubrique',10484,10487,3,1),(7222,'Ucar',29244,29247,3,1),(7223,'Uceda',17202,17205,3,1),(7224,'Ucero',36444,36447,3,1),(7225,'Uclés',13790,13793,3,1),(7226,'Udías',11200,11203,3,1),(7227,'Ugao-Miraballes',42158,42161,3,1),(7228,'Ugena',39324,39327,3,1),(7229,'Ugíjar',15932,15939,3,3),(7230,'Uharte Arakil',29248,29251,3,1),(7231,'Ujados',17206,17209,3,1),(7232,'Ujué',29252,29255,3,1),(7233,'Ulea',28084,28087,3,1),(7234,'Uleila del Campo',2264,2269,3,2),(7235,'Ullà',14986,14989,3,1),(7236,'Ullastrell',7214,7217,3,1),(7237,'Ullastret',14990,14993,3,1),(7238,'Ulldecona',37346,37353,3,3),(7239,'Ulldemolins',37354,37357,3,1),(7240,'Ultramort',14994,14997,3,1),(7241,'Ultzama',29256,29261,3,2),(7242,'Umbrete',35572,35575,3,1),(7243,'Umbrías',4426,4429,3,1),(7244,'Uña',13794,13797,3,1),(7245,'Uña de Quintana',43252,43255,3,1),(7246,'Uncastillo',44658,44661,3,1),(7247,'Unciti',29262,29267,3,2),(7248,'Undués de Lerda',44662,44665,3,1),(7249,'Unzué/Untzue',29268,29271,3,1),(7250,'Úrbel del Castillo',8784,8787,3,1),(7251,'Urda',39328,39331,3,1),(7252,'Urdazubi/Urdax',29272,29277,3,2),(7253,'Urdiain',29278,29281,3,1),(7254,'Urdiales del Páramo',23042,23047,3,2),(7255,'Urduliz',42162,42167,3,2),(7256,'Urduña/Orduña',42168,42173,3,2),(7257,'Urkabustaiz',278,285,3,3),(7258,'Urnieta',17746,17749,3,1),(7259,'Urones de Castroponce',41412,41415,3,1),(7260,'Urrácal',2270,2273,3,1),(7261,'Urraul Alto',29282,29287,3,2),(7262,'Urraul Bajo',29288,29295,3,3),(7263,'Urrea de Gaén',38408,38411,3,1),(7264,'Urrea de Jalón',44666,44669,3,1),(7265,'Urretxu',17750,17753,3,1),(7266,'Urriés',44670,44673,3,1),(7267,'Urroz',29296,29299,3,1),(7268,'Urroz-Villa',29300,29303,3,1),(7269,'Urueña',41416,41419,3,1),(7270,'Urueñas',34966,34969,3,1),(7271,'Uruñuela',21764,21767,3,1),(7272,'Urús',14998,15001,3,1),(7273,'Urzainqui/Urzainki',29304,29307,3,1),(7274,'Usagre',5154,5157,3,1),(7275,'Used',44674,44677,3,1),(7276,'Useras/les Useres',11812,11819,3,3),(7277,'Usurbil',17754,17759,3,2),(7278,'Utande',17210,17213,3,1),(7279,'Utebo',44678,44681,3,1),(7280,'Uterga',29308,29311,3,1),(7281,'Utiel',40540,40549,3,4),(7282,'Utrera',35576,35589,3,6),(7283,'Utrillas',38412,38419,3,3),(7284,'Uztárroz/Uztarroze',29312,29315,3,1),(7285,'Vacarisses',7218,7221,3,1),(7286,'Vadillo',36448,36451,3,1),(7287,'Vadillo de la Guareña',43256,43259,3,1),(7288,'Vadillo de la Sierra',4430,4433,3,1),(7289,'Vadocondes',8788,8791,3,1),(7290,'Val de San Lorenzo',23048,23051,3,1),(7291,'Val de San Martín',44682,44685,3,1),(7292,'Val de San Vicente',11204,11215,3,5),(7293,'Val do Dubra',21012,21021,3,4),(7294,'Valacloche',38420,38423,3,1),(7295,'Valbona',38424,38427,3,1),(7296,'Valbuena de Duero',41420,41423,3,1),(7297,'Valbuena de Pisuerga',31154,31157,3,1),(7298,'Valcabado',43260,43263,3,1),(7299,'Valdáliga',11216,11223,3,3),(7300,'Valdaracete',26800,26803,3,1),(7301,'Valdarachas',17214,17217,3,1),(7302,'Valdastillas',10056,10059,3,1),(7303,'Valde-Ucieza',31158,31161,3,1),(7304,'Valdealgorfa',38428,38431,3,1),(7305,'Valdeande',8792,8795,3,1),(7306,'Valdearcos de la Vega',41424,41427,3,1),(7307,'Valdearenas',17218,17221,3,1),(7308,'Valdeavellano',17222,17225,3,1),(7309,'Valdeavellano de Tera',36452,36455,3,1),(7310,'Valdeavero',26804,26807,3,1),(7311,'Valdeaveruelo',17226,17231,3,2),(7312,'Valdecaballeros',5158,5161,3,1),(7313,'Valdecañas de Tajo',10060,10065,3,2),(7314,'Valdecarros',33838,33841,3,1),(7315,'Valdecasa',4434,4437,3,1),(7316,'Valdeconcha',17232,17235,3,1),(7317,'Valdecuenca',38432,38435,3,1),(7318,'Valdefinjas',43264,43267,3,1),(7319,'Valdefresno',23052,23061,3,4),(7320,'Valdefuentes',10066,10071,3,2),(7321,'Valdefuentes de Sangusín',33842,33845,3,1),(7322,'Valdefuentes del Páramo',23062,23065,3,1),(7323,'Valdeganga',828,831,3,1),(7324,'Valdegeña',36456,36459,3,1),(7325,'Valdegovía/Gaubea',286,295,3,4),(7326,'Valdegrudas',17236,17239,3,1),(7327,'Valdehijaderos',33846,33849,3,1),(7328,'Valdehorna',44686,44689,3,1),(7329,'Valdehúncar',10072,10075,3,1),(7330,'Valdelacalzada',5162,5165,3,1),(7331,'Valdelacasa',33850,33853,3,1),(7332,'Valdelacasa de Tajo',10076,10079,3,1),(7333,'Valdelageve',33854,33857,3,1),(7334,'Valdelagua del Cerro',36460,36463,3,1),(7335,'Valdelaguna',26808,26811,3,1),(7336,'Valdelarco',18214,18217,3,1),(7337,'Valdelcubo',17240,17243,3,1),(7338,'Valdelinares',38436,38439,3,1),(7339,'Valdelosa',33858,33861,3,1),(7340,'Valdeltormo',38440,38443,3,1),(7341,'Valdelugueros',23066,23075,3,4),(7342,'Valdemadera',21768,21771,3,1),(7343,'Valdemaluque',36464,36469,3,2),(7344,'Valdemanco',26812,26815,3,1),(7345,'Valdemanco del Esteras',12350,12353,3,1),(7346,'Valdemaqueda',26816,26819,3,1),(7347,'Valdemeca',13798,13801,3,1),(7348,'Valdemierque',33862,33865,3,1),(7349,'Valdemora',23076,23079,3,1),(7350,'Valdemorales',10080,10083,3,1),(7351,'Valdemorillo',26820,26823,3,1),(7352,'Valdemorillo de la Sierra',13802,13805,3,1),(7353,'Valdemoro',26824,26833,3,4),(7354,'Valdemoro-Sierra',13806,13809,3,1),(7355,'Valdenebro',36470,36477,3,3),(7356,'Valdenebro de los Valles',41428,41431,3,1),(7357,'Valdenuño Fernández',17244,17247,3,1),(7358,'Valdeobispo',10084,10087,3,1),(7359,'Valdeolea',11224,11229,3,2),(7360,'Valdeolivas',13810,13813,3,1),(7361,'Valdeolmillos',31162,31165,3,1),(7362,'Valdeolmos-Alalpardo',26834,26837,3,1),(7363,'Valdepeñas',12354,12359,3,2),(7364,'Valdepeñas de Jaén',20018,20025,3,3),(7365,'Valdepeñas de la Sierra',17248,17251,3,1),(7366,'Valdepiélago',23080,23087,3,3),(7367,'Valdepiélagos',26838,26841,3,1),(7368,'Valdepolo',23088,23095,3,3),(7369,'Valdeprado',36478,36483,3,2),(7370,'Valdeprado del Río',11230,11237,3,3),(7371,'Valdeprados',34970,34973,3,1),(7372,'Valderas',23096,23099,3,1),(7373,'Valderrábano',31166,31171,3,2),(7374,'Valderrebollo',17252,17255,3,1),(7375,'Valderredible',11238,11251,3,6),(7376,'Valderrey',23100,23109,3,4),(7377,'Valderrobres',38444,38447,3,1),(7378,'Valderrodilla',36484,36487,3,1),(7379,'Valderrodrigo',33866,33869,3,1),(7380,'Valderrubio',15940,15941,3,0),(7381,'Valderrueda',23110,23127,3,8),(7382,'Valdés',3330,3361,3,15),(7383,'Valdesamario',23128,23131,3,1),(7384,'Valdescorriel',43268,43271,3,1),(7385,'Valdesotos',17256,17259,3,1),(7386,'Valdestillas',41432,41435,3,1),(7387,'Valdetorres',5166,5169,3,1),(7388,'Valdetorres de Jarama',26842,26845,3,1),(7389,'Valdetórtola',13814,13817,3,1),(7390,'Valdevacas de Montejo',34974,34977,3,1),(7391,'Valdevacas y Guijar',34978,34981,3,1),(7392,'Valdeverdeja',39332,39335,3,1),(7393,'Valdevimbre',23132,23137,3,2),(7394,'Valdezate',8796,8799,3,1),(7395,'Valdilecha',26846,26849,3,1),(7396,'Valdorros',8800,8803,3,1),(7397,'Valdoviño',21022,21037,3,7),(7398,'Valdunciel',33870,33875,3,2),(7399,'Valdunquillo',41436,41439,3,1),(7400,'Valencia',40550,40613,3,31),(7401,'Valencia de Alcántara',10088,10103,3,7),(7402,'Valencia de Don Juan',23138,23143,3,2),(7403,'Valencia de las Torres',5170,5173,3,1),(7404,'Valencia del Mombuey',5174,5177,3,1),(7405,'Valencia del Ventoso',5178,5181,3,1),(7406,'Valencina de la Concepción',35590,35593,3,1),(7407,'Valenzuela',12876,12879,3,1),(7408,'Valenzuela de Calatrava',12360,12363,3,1),(7409,'Valero',33876,33879,3,1),(7410,'Valfarta',19410,19413,3,1),(7411,'Valfermoso de Tajuña',17260,17263,3,1),(7412,'Valga',32188,32195,3,3),(7413,'Valgañón',21772,21775,3,1),(7414,'Valhermoso',17264,17267,3,1),(7415,'Valhermoso de la Fuente',13818,13821,3,1),(7416,'Valjunquera',38448,38451,3,1),(7417,'Vall d\'Alba',11820,11825,3,2),(7418,'Vall de Almonacid',11826,11829,3,1),(7419,'Vall de Cardós',24624,24635,3,5),(7420,'Vall de Gallinera',1650,1655,3,2),(7421,'Vall-llobrega',15002,15005,3,1),(7422,'Vallada',40614,40617,3,1),(7423,'Valladolid',41440,41489,3,24),(7424,'Vallanca',40618,40621,3,1),(7425,'Vallarta de Bureba',8804,8807,3,1),(7426,'Vallat',11830,11833,3,1),(7427,'Vallbona d\'Anoia',7222,7225,3,1),(7428,'Vallbona de les Monges',24636,24641,3,2),(7429,'Vallcebre',7226,7229,3,1),(7430,'Vallclara',37358,37361,3,1),(7431,'Valldemossa',5712,5717,3,2),(7432,'Valle de Abdalajís',27462,27465,3,1),(7433,'Valle de Bardají',19414,19417,3,1),(7434,'Valle de Cerrato',31172,31175,3,1),(7435,'Valle de Egüés/Eguesibar',29316,29325,3,4),(7436,'Valle de Hecho',19418,19427,3,4),(7437,'Valle de la Serena',5182,5185,3,1),(7438,'Valle de las Navas',8808,8813,3,2),(7439,'Valle de Lierp',19428,19433,3,2),(7440,'Valle de Losa',8814,8821,3,3),(7441,'Valle de Manzanedo',8822,8827,3,2),(7442,'Valle de Matamoros',5186,5189,3,1),(7443,'Valle de Mena',8828,8847,3,9),(7444,'Valle de Oca',8848,8851,3,1),(7445,'Valle de Ollo/Ollaran',29326,29329,3,1),(7446,'Valle de Santa Ana',5190,5193,3,1),(7447,'Valle de Santibáñez',8852,8859,3,3),(7448,'Valle de Sedano',8860,8869,3,4),(7449,'Valle de Tabladillo',34982,34985,3,1),(7450,'Valle de Tobalina',8870,8881,3,5),(7451,'Valle de Trápaga-Trapagaran',42174,42179,3,2),(7452,'Valle de Valdebezana',8882,8887,3,2),(7453,'Valle de Valdelaguna',8888,8891,3,1),(7454,'Valle de Valdelucio',8892,8895,3,1),(7455,'Valle de Villaverde',11252,11255,3,1),(7456,'Valle de Yerri/Deierri',29330,29341,3,5),(7457,'Valle de Zamanzas',8896,8899,3,1),(7458,'Valle del Retortillo',31176,31179,3,1),(7459,'Valle del Zalabí',15942,15945,3,1),(7460,'Vallecillo',23144,23147,3,1),(7461,'Vallejera',8900,8903,3,1),(7462,'Vallejera de Riofrío',33880,33883,3,1),(7463,'Vallelado',34986,34989,3,1),(7464,'Valleruela de Pedraza',34990,34993,3,1),(7465,'Valleruela de Sepúlveda',34994,34997,3,1),(7466,'Vallés',40622,40625,3,1),(7467,'Valles de Palenzuela',8904,8907,3,1),(7468,'Vallesa de la Guareña',43272,43275,3,1),(7469,'Vallfogona de Balaguer',24642,24647,3,2),(7470,'Vallfogona de Ripollès',15006,15009,3,1),(7471,'Vallfogona de Riucorb',37362,37365,3,1),(7472,'Vallgorguina',7230,7235,3,2),(7473,'Vallibona',11834,11837,3,1),(7474,'Vallirana',7236,7239,3,1),(7475,'Vallmoll',37366,37369,3,1),(7476,'Vallromanes',7240,7243,3,1),(7477,'Valls',37370,37377,3,3),(7478,'Valluércanes',8908,8911,3,1),(7479,'Valmadrid',44690,44693,3,1),(7480,'Valmala',8912,8915,3,1),(7481,'Valmojado',39336,39339,3,1),(7482,'Válor',15946,15949,3,1),(7483,'Valoria la Buena',41490,41493,3,1),(7484,'Valpalmas',44694,44697,3,1),(7485,'Valsalabroso',33884,33889,3,2),(7486,'Valsalobre',13822,13825,3,1),(7487,'Valseca',34998,35001,3,1),(7488,'Valsequillo',12880,12883,3,1),(7489,'Valtablado del Río',17268,17271,3,1),(7490,'Valtajeros',36488,36491,3,1),(7491,'Valtiendas',35002,35007,3,2),(7492,'Valtierra',29342,29345,3,1),(7493,'Valtorres',44698,44701,3,1),(7494,'Valverde de Alcalá',26850,26853,3,1),(7495,'Valverde de Burguillos',5194,5197,3,1),(7496,'Valverde de Campos',41494,41497,3,1),(7497,'Valverde de Júcar',13826,13829,3,1),(7498,'Valverde de la Vera',10104,10107,3,1),(7499,'Valverde de la Virgen',23148,23155,3,3),(7500,'Valverde de Leganés',5198,5201,3,1),(7501,'Valverde de Llerena',5202,5205,3,1),(7502,'Valverde de los Arroyos',17272,17275,3,1),(7503,'Valverde de Mérida',5206,5209,3,1),(7504,'Valverde de Valdelacasa',33890,33893,3,1),(7505,'Valverde del Camino',18218,18221,3,1),(7506,'Valverde del Fresno',10108,10111,3,1),(7507,'Valverde del Majano',35008,35011,3,1),(7508,'Valverde-Enrique',23156,23161,3,2),(7509,'Valverdejo',13830,13833,3,1),(7510,'Valverdón',33894,33899,3,2),(7511,'Vandellòs i l\'Hospitalet de l\'Infant',37378,37383,3,2),(7512,'Vara de Rey',13834,13837,3,1),(7513,'Veciana',7244,7247,3,1),(7514,'Vecinos',33900,33907,3,3),(7515,'Vedra',21038,21045,3,3),(7516,'Vega de Espinareda',23162,23175,3,6),(7517,'Vega de Infanzones',23176,23181,3,2),(7518,'Vega de Liébana',11256,11261,3,2),(7519,'Vega de Pas',11262,11269,3,3),(7520,'Vega de Ruiponce',41498,41501,3,1),(7521,'Vega de Santa María',4438,4441,3,1),(7522,'Vega de Tera',43276,43283,3,3),(7523,'Vega de Tirados',33908,33913,3,2),(7524,'Vega de Valcarce',23182,23191,3,4),(7525,'Vega de Valdetronco',41502,41505,3,1),(7526,'Vega de Villalobos',43284,43287,3,1),(7527,'Vega del Codorno',13838,13841,3,1),(7528,'Vegacervera',23192,23197,3,2),(7529,'Vegadeo',3362,3371,3,4),(7530,'Vegalatrave',43288,43291,3,1),(7531,'Veganzones',35012,35015,3,1),(7532,'Vegaquemada',23198,23207,3,4),(7533,'Vegas de Matute',35016,35019,3,1),(7534,'Vegas del Condado',23208,23219,3,5),(7535,'Vegas del Genil',15950,15955,3,2),(7536,'Vegaviana',10112,10117,3,2),(7537,'Veguillas de la Sierra',38452,38455,3,1),(7538,'Vejer de la Frontera',10488,10497,3,4),(7539,'Velada',39340,39343,3,1),(7540,'Velamazán',36492,36495,3,1),(7541,'Velascálvaro',41506,41509,3,1),(7542,'Velayos',4442,4445,3,1),(7543,'Velefique',2274,2277,3,1),(7544,'Vélez de Benaudalla',15956,15963,3,3),(7545,'Vélez-Blanco',2278,2285,3,3),(7546,'Vélez-Málaga',27466,27487,3,10),(7547,'Vélez-Rubio',2286,2297,3,5),(7548,'Velilla',41510,41513,3,1),(7549,'Velilla de Cinca',19434,19437,3,1),(7550,'Velilla de Ebro',44702,44705,3,1),(7551,'Velilla de Jiloca',44706,44709,3,1),(7552,'Velilla de la Sierra',36496,36499,3,1),(7553,'Velilla de los Ajos',36500,36503,3,1),(7554,'Velilla de San Antonio',26854,26857,3,1),(7555,'Velilla del Río Carrión',31180,31187,3,3),(7556,'Vellisca',13842,13845,3,1),(7557,'Velliza',41514,41517,3,1),(7558,'Vencillón',19438,19441,3,1),(7559,'Venialbo',43292,43295,3,1),(7560,'Venta de Baños',31188,31193,3,2),(7561,'Venta del Moro',40626,40631,3,2),(7562,'Ventalló',15010,15019,3,4),(7563,'Ventas de Huelma',15964,15967,3,1),(7564,'Ventosa',21776,21779,3,1),(7565,'Ventosa de la Cuesta',41518,41521,3,1),(7566,'Ventosa del Río Almar',33914,33917,3,1),(7567,'Ventosilla y Tejadilla',35020,35023,3,1),(7568,'Ventrosa',21780,21783,3,1),(7569,'Venturada',26858,26861,3,1),(7570,'Vera',2298,2301,3,1),(7571,'Vera de Moncayo',44710,44713,3,1),(7572,'Verdú',24648,24651,3,1),(7573,'Verea',30296,30299,3,1),(7574,'Verges',15020,15023,3,1),(7575,'Verín',30300,30317,3,8),(7576,'Vertavillo',31194,31197,3,1),(7577,'Vespella de Gaià',37384,37387,3,1),(7578,'Vezdemarbán',43296,43299,3,1),(7579,'Viacamp y Litera',19442,19447,3,2),(7580,'Viana',29346,29349,3,1),(7581,'Viana de Cega',41522,41525,3,1),(7582,'Viana de Duero',36504,36507,3,1),(7583,'Viana de Jadraque',17276,17279,3,1),(7584,'Viana do Bolo',30318,30339,3,10),(7585,'Viandar de la Vera',10118,10121,3,1),(7586,'Vianos',832,835,3,1),(7587,'Viator',2302,2305,3,1),(7588,'Vic',7248,7253,3,2),(7589,'Vícar',2306,2313,3,3),(7590,'Vicién',19448,19451,3,1),(7591,'Vidángoz/Bidankoze',29350,29353,3,1),(7592,'Vidayanes',43300,43303,3,1),(7593,'Videmala',43304,43309,3,2),(7594,'Vidrà',15024,15027,3,1),(7595,'Vidreres',15028,15031,3,1),(7596,'Vielha e Mijaran',24652,24661,3,4),(7597,'Vierlas',44714,44717,3,1),(7598,'Vigo',32196,32251,3,27),(7599,'Viguera',21784,21787,3,1),(7600,'Vila de Cruces',32252,32277,3,12),(7601,'Vila-real',11838,11841,3,1),(7602,'Vila-rodona',37388,37391,3,1),(7603,'Vila-sacra',15032,15035,3,1),(7604,'Vila-sana',24662,24665,3,1),(7605,'Vila-seca',37392,37399,3,3),(7606,'Vilabella',37400,37403,3,1),(7607,'Vilabertran',15036,15039,3,1),(7608,'Vilablareix',15040,15043,3,1),(7609,'Vilaboa',32278,32285,3,3),(7610,'Vilada',7254,7257,3,1),(7611,'Viladamat',15044,15047,3,1),(7612,'Viladasens',15048,15051,3,1),(7613,'Viladecans',7258,7261,3,1),(7614,'Viladecavalls',7262,7265,3,1),(7615,'Vilademuls',15052,15057,3,2),(7616,'Viladrau',15058,15061,3,1),(7617,'Vilafamés',11842,11845,3,1),(7618,'Vilafant',15062,15065,3,1),(7619,'Vilafranca de Bonany',5718,5721,3,1),(7620,'Vilafranca del Penedès',7266,7269,3,1),(7621,'Vilagarcía de Arousa',32286,32303,3,8),(7622,'Vilagrassa',24666,24669,3,1),(7623,'Vilajuïga',15066,15069,3,1),(7624,'Vilalba',25784,25825,3,20),(7625,'Vilalba dels Arcs',37404,37407,3,1),(7626,'Vilalba Sasserra',7270,7273,3,1),(7627,'Vilaller',24670,24675,3,2),(7628,'Vilallonga de Ter',15070,15073,3,1),(7629,'Vilallonga del Camp',37408,37411,3,1),(7630,'Vilamacolum',15074,15077,3,1),(7631,'Vilamalla',15078,15081,3,1),(7632,'Vilamaniscle',15082,15085,3,1),(7633,'Vilamarín',30340,30351,3,5),(7634,'Vilamartín de Valdeorras',30352,30363,3,5),(7635,'Vilamòs',24676,24679,3,1),(7636,'Vilanant',15086,15091,3,2),(7637,'Vilanova d\'Alcolea',11846,11849,3,1),(7638,'Vilanova d\'Escornalbou',37412,37417,3,2),(7639,'Vilanova de Arousa',32304,32317,3,6),(7640,'Vilanova de Bellpuig',24680,24683,3,1),(7641,'Vilanova de l\'Aguda',24684,24689,3,2),(7642,'Vilanova de la Barca',24690,24693,3,1),(7643,'Vilanova de Meià',24694,24701,3,3),(7644,'Vilanova de Prades',37418,37421,3,1),(7645,'Vilanova de Sau',7274,7277,3,1),(7646,'Vilanova de Segrià',24702,24705,3,1),(7647,'Vilanova del Camí',7278,7281,3,1),(7648,'Vilanova del Vallès',7282,7285,3,1),(7649,'Vilanova i la Geltrú',7286,7289,3,1),(7650,'Vilaplana',37422,37425,3,1),(7651,'Vilar de Barrio',30364,30369,3,2),(7652,'Vilar de Canes',11850,11853,3,1),(7653,'Vilar de Santos',30370,30375,3,2),(7654,'Vilardevós',30376,30385,3,4),(7655,'Vilariño de Conso',30386,30393,3,3),(7656,'Vilarmaior',21046,21055,3,4),(7657,'Vilasantar',21056,21059,3,1),(7658,'Vilassar de Dalt',7290,7293,3,1),(7659,'Vilassar de Mar',7294,7297,3,1),(7660,'Vilaür',15092,15095,3,1),(7661,'Vilaverd',37426,37429,3,1),(7662,'Vilches',20026,20033,3,3),(7663,'Vileña',8916,8919,3,1),(7664,'Villa de Otura',15968,15971,3,1),(7665,'Villa de Ves',836,839,3,1),(7666,'Villa del Campo',10122,10125,3,1),(7667,'Villa del Prado',26862,26865,3,1),(7668,'Villa del Rey',10126,10129,3,1),(7669,'Villa del Río',12884,12889,3,2),(7670,'Villabáñez',41526,41529,3,1),(7671,'Villabaruz de Campos',41530,41533,3,1),(7672,'Villabasta de Valdavia',31198,31201,3,1),(7673,'Villablanca',18222,18225,3,1),(7674,'Villablino',23220,23241,3,10),(7675,'Villabona',17760,17763,3,1),(7676,'Villabrágima',41534,41537,3,1),(7677,'Villabraz',23242,23247,3,2),(7678,'Villabrázaro',43310,43315,3,2),(7679,'Villabuena de Álava/Eskuernaga',296,299,3,1),(7680,'Villabuena del Puente',43316,43319,3,1),(7681,'Villacañas',39344,39349,3,2),(7682,'Villacarralón',41538,41541,3,1),(7683,'Villacarriedo',11270,11277,3,3),(7684,'Villacarrillo',20034,20043,3,4),(7685,'Villacastín',35024,35027,3,1),(7686,'Villacid de Campos',41542,41545,3,1),(7687,'Villacidaler',31202,31207,3,2),(7688,'Villaciervos',36508,36511,3,1),(7689,'Villaco',41546,41549,3,1),(7690,'Villaconancio',31208,31211,3,1),(7691,'Villaconejos',26866,26869,3,1),(7692,'Villaconejos de Trabaque',13846,13849,3,1),(7693,'Villada',31212,31217,3,2),(7694,'Villadangos del Páramo',23248,23251,3,1),(7695,'Villademor de la Vega',23252,23255,3,1),(7696,'Villadepera',43320,43323,3,1),(7697,'Villadiego',8920,8933,3,6),(7698,'Villadoz',44718,44721,3,1),(7699,'Villaeles de Valdavia',31218,31221,3,1),(7700,'Villaescusa',43324,43327,3,1),(7701,'Villaescusa',11278,11279,3,0),(7702,'Villaescusa de Haro',13850,13853,3,1),(7703,'Villaescusa de Roa',8934,8937,3,1),(7704,'Villaescusa la Sombría',8938,8943,3,2),(7705,'Villaespasa',8944,8949,3,2),(7706,'Villafáfila',43328,43333,3,2),(7707,'Villafeliche',44722,44725,3,1),(7708,'Villaferrueña',43334,43337,3,1),(7709,'Villaflor',4446,4449,3,1),(7710,'Villaflores',33918,33921,3,1),(7711,'Villafrades de Campos',41550,41553,3,1),(7712,'Villafranca',29354,29357,3,1),(7713,'Villafranca de Córdoba',12890,12895,3,2),(7714,'Villafranca de Duero',41554,41557,3,1),(7715,'Villafranca de Ebro',44726,44729,3,1),(7716,'Villafranca de la Sierra',4450,4453,3,1),(7717,'Villafranca de los Barros',5210,5213,3,1),(7718,'Villafranca de los Caballeros',39350,39353,3,1),(7719,'Villafranca del Bierzo',23256,23273,3,8),(7720,'Villafranca del Campo',38456,38459,3,1),(7721,'Villafranca del Cid/Vilafranca',11854,11857,3,1),(7722,'Villafranca Montes de Oca',8950,8955,3,2),(7723,'Villafrechós',41558,41561,3,1),(7724,'Villafruela',8956,8959,3,1),(7725,'Villafuerte',41562,41565,3,1),(7726,'Villafufre',11280,11285,3,2),(7727,'Villagalijo',8960,8963,3,1),(7728,'Villagarcía de Campos',41566,41569,3,1),(7729,'Villagarcía de la Torre',5214,5217,3,1),(7730,'Villagarcía del Llano',13854,13859,3,2),(7731,'Villagatón',23274,23285,3,5),(7732,'Villageriz',43338,43341,3,1),(7733,'Villagómez la Nueva',41570,41573,3,1),(7734,'Villagonzalo',5218,5221,3,1),(7735,'Villagonzalo de Tormes',33922,33925,3,1),(7736,'Villagonzalo Pedernales',8964,8967,3,1),(7737,'Villahán',31222,31225,3,1),(7738,'Villaharta',12896,12899,3,1),(7739,'Villahermosa',12364,12369,3,2),(7740,'Villahermosa del Campo',38460,38463,3,1),(7741,'Villahermosa del Río',11858,11861,3,1),(7742,'Villaherreros',31226,31231,3,2),(7743,'Villahoz',8968,8971,3,1),(7744,'Villajoyosa/la Vila Joiosa',1656,1659,3,1),(7745,'Villalaco',31232,31235,3,1),(7746,'Villalán de Campos',41574,41577,3,1),(7747,'Villalar de los Comuneros',41578,41581,3,1),(7748,'Villalazán',43342,43345,3,1),(7749,'Villalba de Duero',8972,8975,3,1),(7750,'Villalba de Guardo',31236,31239,3,1),(7751,'Villalba de la Lampreana',43346,43349,3,1),(7752,'Villalba de la Loma',41582,41585,3,1),(7753,'Villalba de la Sierra',13860,13863,3,1),(7754,'Villalba de los Alcores',41586,41589,3,1),(7755,'Villalba de los Barros',5222,5225,3,1),(7756,'Villalba de los Llanos',33926,33929,3,1),(7757,'Villalba de Perejil',44730,44733,3,1),(7758,'Villalba de Rioja',21788,21791,3,1),(7759,'Villalba del Alcor',18226,18229,3,1),(7760,'Villalba del Rey',13864,13867,3,1),(7761,'Villalbarba',41590,41593,3,1),(7762,'Villalbilla',26870,26873,3,1),(7763,'Villalbilla de Burgos',8976,8981,3,2),(7764,'Villalbilla de Gumiel',8982,8985,3,1),(7765,'Villalcampo',43350,43353,3,1),(7766,'Villalcázar de Sirga',31240,31243,3,1),(7767,'Villalcón',31244,31247,3,1),(7768,'Villaldemiro',8986,8989,3,1),(7769,'Villalengua',44734,44737,3,1),(7770,'Villalgordo del Júcar',840,843,3,1),(7771,'Villalgordo del Marquesado',13868,13871,3,1),(7772,'Villalmanzo',8990,8993,3,1),(7773,'Villalobar de Rioja',21792,21795,3,1),(7774,'Villalobón',31248,31251,3,1),(7775,'Villalobos',43354,43357,3,1),(7776,'Villalón de Campos',41594,41597,3,1),(7777,'Villalonga',40632,40635,3,1),(7778,'Villalonso',43358,43361,3,1),(7779,'Villalpando',43362,43365,3,1),(7780,'Villalpardo',13872,13875,3,1),(7781,'Villalube',43366,43369,3,1),(7782,'Villaluenga de la Sagra',39354,39357,3,1),(7783,'Villaluenga de la Vega',31252,31259,3,3),(7784,'Villaluenga del Rosario',10498,10501,3,1),(7785,'Villamalea',844,847,3,1),(7786,'Villamalur',11862,11865,3,1),(7787,'Villamañán',23286,23291,3,2),(7788,'Villamandos',23292,23295,3,1),(7789,'Villamanín',23296,23309,3,6),(7790,'Villamanrique',12370,12373,3,1),(7791,'Villamanrique de la Condesa',35594,35597,3,1),(7792,'Villamanrique de Tajo',26874,26877,3,1),(7793,'Villamanta',26878,26881,3,1),(7794,'Villamantilla',26882,26885,3,1),(7795,'Villamarchante',40636,40639,3,1),(7796,'Villamartín',10502,10505,3,1),(7797,'Villamartín de Campos',31260,31263,3,1),(7798,'Villamartín de Don Sancho',23310,23313,3,1),(7799,'Villamayor',33930,33933,3,1),(7800,'Villamayor de Calatrava',12374,12377,3,1),(7801,'Villamayor de Campos',43370,43373,3,1),(7802,'Villamayor de Gállego',44738,44741,3,1),(7803,'Villamayor de los Montes',8994,8997,3,1),(7804,'Villamayor de Monjardín',29358,29361,3,1),(7805,'Villamayor de Santiago',13876,13879,3,1),(7806,'Villamayor de Treviño',8998,9001,3,1),(7807,'Villambistia',9002,9005,3,1),(7808,'Villamediana',31264,31267,3,1),(7809,'Villamediana de Iregua',21796,21801,3,2),(7810,'Villamedianilla',9006,9009,3,1),(7811,'Villamejil',23314,23321,3,3),(7812,'Villamena',15972,15975,3,1),(7813,'Villameriel',31268,31275,3,3),(7814,'Villamesías',10130,10133,3,1),(7815,'Villamiel',10134,10139,3,2),(7816,'Villamiel de la Sierra',9010,9013,3,1),(7817,'Villamiel de Toledo',39358,39361,3,1),(7818,'Villaminaya',39362,39365,3,1),(7819,'Villamol',23322,23327,3,2),(7820,'Villamontán de la Valduerna',23328,23333,3,2),(7821,'Villamor de los Escuderos',43374,43377,3,1),(7822,'Villamoratiel de las Matas',23334,23337,3,1),(7823,'Villamoronta',31276,31279,3,1),(7824,'Villamuelas',39366,39369,3,1),(7825,'Villamuera de la Cueza',31280,31283,3,1),(7826,'Villamuriel de Campos',41598,41601,3,1),(7827,'Villamuriel de Cerrato',31284,31287,3,1),(7828,'Villán de Tordesillas',41602,41605,3,1),(7829,'Villanázar',43378,43385,3,3),(7830,'Villangómez',9014,9017,3,1),(7831,'Villanova',19452,19455,3,1),(7832,'Villanúa',19456,19459,3,1),(7833,'Villanubla',41606,41609,3,1),(7834,'Villanueva de Alcardete',39370,39373,3,1),(7835,'Villanueva de Alcorón',17280,17283,3,1),(7836,'Villanueva de Algaidas',27488,27493,3,2),(7837,'Villanueva de Argaño',9018,9021,3,1),(7838,'Villanueva de Argecilla',17284,17287,3,1),(7839,'Villanueva de Ávila',4454,4457,3,1),(7840,'Villanueva de Azoague',43386,43391,3,2),(7841,'Villanueva de Bogas',39374,39377,3,1),(7842,'Villanueva de Cameros',21802,21805,3,1),(7843,'Villanueva de Campeán',43392,43395,3,1),(7844,'Villanueva de Carazo',9022,9025,3,1),(7845,'Villanueva de Castellón',40640,40643,3,1),(7846,'Villanueva de Córdoba',12900,12903,3,1),(7847,'Villanueva de Duero',41610,41613,3,1),(7848,'Villanueva de Gállego',44742,44745,3,1),(7849,'Villanueva de Gómez',4458,4461,3,1),(7850,'Villanueva de Gormaz',36512,36515,3,1),(7851,'Villanueva de Guadamejud',13880,13883,3,1),(7852,'Villanueva de Gumiel',9026,9029,3,1),(7853,'Villanueva de Huerva',44746,44749,3,1),(7854,'Villanueva de Jiloca',44750,44753,3,1),(7855,'Villanueva de la Cañada',26886,26891,3,2),(7856,'Villanueva de la Concepción',27494,27497,3,1),(7857,'Villanueva de la Condesa',41614,41617,3,1),(7858,'Villanueva de la Fuente',12378,12381,3,1),(7859,'Villanueva de la Jara',13884,13891,3,3),(7860,'Villanueva de la Reina',20044,20049,3,2),(7861,'Villanueva de la Serena',5226,5237,3,5),(7862,'Villanueva de la Sierra',10140,10145,3,2),(7863,'Villanueva de la Torre',17288,17293,3,2),(7864,'Villanueva de la Vera',10146,10151,3,2),(7865,'Villanueva de las Cruces',18230,18233,3,1),(7866,'Villanueva de las Manzanas',23338,23341,3,1),(7867,'Villanueva de las Peras',43396,43399,3,1),(7868,'Villanueva de las Torres',15976,15979,3,1),(7869,'Villanueva de los Caballeros',41618,41621,3,1),(7870,'Villanueva de los Castillejos',18234,18237,3,1),(7871,'Villanueva de los Infantes',12382,12385,3,1),(7872,'Villanueva de los Infantes',41622,41623,3,0),(7873,'Villanueva de Oscos',3372,3375,3,1),(7874,'Villanueva de Perales',26892,26895,3,1),(7875,'Villanueva de San Carlos',12386,12389,3,1),(7876,'Villanueva de San Juan',35598,35601,3,1),(7877,'Villanueva de San Mancio',41624,41627,3,1),(7878,'Villanueva de Sigena',19460,19463,3,1),(7879,'Villanueva de Tapia',27498,27501,3,1),(7880,'Villanueva de Teba',9030,9033,3,1),(7881,'Villanueva de Viver',11866,11869,3,1),(7882,'Villanueva del Aceral',4462,4465,3,1),(7883,'Villanueva del Ariscal',35602,35605,3,1),(7884,'Villanueva del Arzobispo',20050,20055,3,2),(7885,'Villanueva del Campillo',4466,4469,3,1),(7886,'Villanueva del Campo',43400,43403,3,1),(7887,'Villanueva del Conde',33934,33937,3,1),(7888,'Villanueva del Duque',12904,12907,3,1),(7889,'Villanueva del Fresno',5238,5241,3,1),(7890,'Villanueva del Pardillo',26896,26899,3,1),(7891,'Villanueva del Rebollar',31288,31291,3,1),(7892,'Villanueva del Rebollar de la Sierra',38464,38467,3,1),(7893,'Villanueva del Rey',12908,12911,3,1),(7894,'Villanueva del Río Segura',28088,28091,3,1),(7895,'Villanueva del Río y Minas',35606,35613,3,3),(7896,'Villanueva del Rosario',27502,27505,3,1),(7897,'Villanueva del Trabuco',27506,27511,3,2),(7898,'Villanueva Mesía',15980,15983,3,1),(7899,'Villanuño de Valdavia',31292,31295,3,1),(7900,'Villaobispo de Otero',23342,23347,3,2),(7901,'Villaornate y Castro',23348,23351,3,1),(7902,'Villapalacios',848,851,3,1),(7903,'Villaprovedo',31296,31299,3,1),(7904,'Villaquejida',23352,23357,3,2),(7905,'Villaquilambre',23358,23367,3,4),(7906,'Villaquirán de la Puebla',9034,9037,3,1),(7907,'Villaquirán de los Infantes',9038,9041,3,1),(7908,'Villar de Argañán',33938,33941,3,1),(7909,'Villar de Cañas',13892,13895,3,1),(7910,'Villar de Ciervo',33942,33945,3,1),(7911,'Villar de Corneja',4470,4473,3,1),(7912,'Villar de Domingo García',13896,13901,3,2),(7913,'Villar de Fallaves',43404,43407,3,1),(7914,'Villar de Gallimazo',33946,33949,3,1),(7915,'Villar de la Encina',13902,13905,3,1),(7916,'Villar de la Yegua',33950,33955,3,2),(7917,'Villar de los Navarros',44754,44759,3,2),(7918,'Villar de Olalla',13906,13911,3,2),(7919,'Villar de Peralonso',33956,33961,3,2),(7920,'Villar de Plasencia',10152,10155,3,1),(7921,'Villar de Rena',5242,5247,3,2),(7922,'Villar de Samaniego',33962,33965,3,1),(7923,'Villar de Torre',21806,21809,3,1),(7924,'Villar del Ala',36516,36519,3,1),(7925,'Villar del Arzobispo',40644,40647,3,1),(7926,'Villar del Buey',43408,43417,3,4),(7927,'Villar del Campo',36520,36523,3,1),(7928,'Villar del Cobo',38468,38471,3,1),(7929,'Villar del Humo',13912,13915,3,1),(7930,'Villar del Infantado',13916,13919,3,1),(7931,'Villar del Olmo',26900,26905,3,2),(7932,'Villar del Pedroso',10156,10161,3,2),(7933,'Villar del Pozo',12390,12393,3,1),(7934,'Villar del Rey',5248,5251,3,1),(7935,'Villar del Río',36524,36531,3,3),(7936,'Villar del Salz',38472,38475,3,1),(7937,'Villar y Velasco',13920,13923,3,1),(7938,'Villaralbo',43418,43421,3,1),(7939,'Villaralto',12912,12915,3,1),(7940,'Villarcayo de Merindad de Castilla la Vieja',9042,9061,3,9),(7941,'Villardeciervos',43422,43427,3,2),(7942,'Villardefrades',41628,41631,3,1),(7943,'Villardiegua de la Ribera',43428,43431,3,1),(7944,'Villárdiga',43432,43435,3,1),(7945,'Villardompardo',20056,20059,3,1),(7946,'Villardondiego',43436,43439,3,1),(7947,'Villarejo',21810,21813,3,1),(7948,'Villarejo de Fuentes',13924,13927,3,1),(7949,'Villarejo de la Peñuela',13928,13931,3,1),(7950,'Villarejo de Montalbán',39378,39381,3,1),(7951,'Villarejo de Órbigo',23368,23375,3,3),(7952,'Villarejo de Salvanés',26906,26909,3,1),(7953,'Villarejo del Valle',4474,4477,3,1),(7954,'Villarejo-Periesteban',13932,13935,3,1),(7955,'Villares de Jadraque',17294,17297,3,1),(7956,'Villares de la Reina',33966,33973,3,3),(7957,'Villares de Órbigo',23376,23381,3,2),(7958,'Villares de Yeltes',33974,33977,3,1),(7959,'Villares del Saz',13936,13939,3,1),(7960,'Villargordo del Cabriel',40648,40653,3,2),(7961,'Villariezo',9062,9065,3,1),(7962,'Villarino de los Aires',33978,33985,3,3),(7963,'Villarluengo',38476,38479,3,1),(7964,'Villarmayor',33986,33993,3,3),(7965,'Villarmentero de Campos',31300,31303,3,1),(7966,'Villarmentero de Esgueva',41632,41635,3,1),(7967,'Villarmuerto',33994,33997,3,1),(7968,'Villarquemado',38480,38483,3,1),(7969,'Villarrabé',31304,31309,3,2),(7970,'Villarramiel',31310,31313,3,1),(7971,'Villarrasa',18238,18241,3,1),(7972,'Villarreal de Huerva',44760,44763,3,1),(7973,'Villarrín de Campos',43440,43443,3,1),(7974,'Villarrobledo',852,857,3,2),(7975,'Villarrodrigo',20060,20063,3,1),(7976,'Villarroya',21814,21817,3,1),(7977,'Villarroya de la Sierra',44764,44767,3,1),(7978,'Villarroya de los Pinares',38484,38487,3,1),(7979,'Villarroya del Campo',44768,44771,3,1),(7980,'Villarrubia de los Ojos',12394,12397,3,1),(7981,'Villarrubia de Santiago',39382,39387,3,2),(7982,'Villarrubio',13940,13943,3,1),(7983,'Villarta',13944,13947,3,1),(7984,'Villarta de los Montes',5252,5255,3,1),(7985,'Villarta de San Juan',12398,12401,3,1),(7986,'Villarta-Quintana',21818,21821,3,1),(7987,'Villas de la Ventosa',13948,13951,3,1),(7988,'Villasabariego',23382,23391,3,4),(7989,'Villasandino',9066,9069,3,1),(7990,'Villasarracino',31314,31317,3,1),(7991,'Villasayas',36532,36535,3,1),(7992,'Villasbuenas',33998,34001,3,1),(7993,'Villasbuenas de Gata',10162,10165,3,1),(7994,'Villasdardo',34002,34005,3,1),(7995,'Villaseca de Arciel',36536,36539,3,1),(7996,'Villaseca de Henares',17298,17301,3,1),(7997,'Villaseca de la Sagra',39388,39393,3,2),(7998,'Villaseca de Uceda',17302,17305,3,1),(7999,'Villaseco de los Gamitos',34006,34009,3,1),(8000,'Villaseco de los Reyes',34010,34021,3,5),(8001,'Villaseco del Pan',43444,43447,3,1),(8002,'Villaselán',23392,23397,3,2),(8003,'Villasequilla',39394,39397,3,1),(8004,'Villasexmir',41636,41639,3,1),(8005,'Villasila de Valdavia',31318,31321,3,1),(8006,'Villasrubias',34022,34025,3,1),(8007,'Villastar',38488,38491,3,1),(8008,'Villasur de Herreros',9070,9073,3,1),(8009,'Villatobas',39398,39401,3,1),(8010,'Villatoro',4478,4481,3,1),(8011,'Villatorres',20064,20071,3,3),(8012,'Villatoya',858,861,3,1),(8013,'Villatuelda',9074,9077,3,1),(8014,'Villatuerta',29362,29367,3,2),(8015,'Villaturde',31322,31325,3,1),(8016,'Villaturiel',23398,23403,3,2),(8017,'Villaumbrales',31326,31331,3,2),(8018,'Villava/Atarrabia',29368,29371,3,1),(8019,'Villavaliente',862,865,3,1),(8020,'Villavaquerín',41640,41643,3,1),(8021,'Villavelayo',21822,21825,3,1),(8022,'Villavellid',41644,41647,3,1),(8023,'Villavendimio',43448,43451,3,1),(8024,'Villaverde de Guadalimar',866,871,3,2),(8025,'Villaverde de Guareña',34026,34029,3,1),(8026,'Villaverde de Íscar',35028,35031,3,1),(8027,'Villaverde de Medina',41648,41651,3,1),(8028,'Villaverde de Montejo',35032,35037,3,2),(8029,'Villaverde de Rioja',21826,21829,3,1),(8030,'Villaverde del Monte',9078,9083,3,2),(8031,'Villaverde del Río',35614,35617,3,1),(8032,'Villaverde y Pasaconsol',13952,13955,3,1),(8033,'Villaverde-Mogina',9084,9087,3,1),(8034,'Villaveza de Valverde',43452,43455,3,1),(8035,'Villaveza del Agua',43456,43459,3,1),(8036,'Villavicencio de los Caballeros',41652,41655,3,1),(8037,'Villaviciosa',3376,3399,3,11),(8038,'Villaviciosa de Córdoba',12916,12923,3,3),(8039,'Villaviciosa de Odón',26910,26913,3,1),(8040,'Villavieja de Yeltes',34030,34033,3,1),(8041,'Villavieja del Lozoya',26914,26917,3,1),(8042,'Villaviudas',31332,31335,3,1),(8043,'Villayerno Morquillas',9088,9091,3,1),(8044,'Villayón',3400,3405,3,2),(8045,'Villazala',23404,23409,3,2),(8046,'Villazanzo de Valderaduey',23410,23417,3,3),(8047,'Villazopeque',9092,9095,3,1),(8048,'Villegas',9096,9099,3,1),(8049,'Villeguillo',35038,35041,3,1),(8050,'Villel',38492,38495,3,1),(8051,'Villel de Mesa',17306,17309,3,1),(8052,'Villena',1660,1669,3,4),(8053,'Villerías de Campos',31336,31339,3,1),(8054,'Villodre',31340,31343,3,1),(8055,'Villodrigo',31344,31347,3,1),(8056,'Villoldo',31348,31351,3,1),(8057,'Víllora',13956,13959,3,1),(8058,'Villores',11870,11873,3,1),(8059,'Villoria',34034,34037,3,1),(8060,'Villoruebo',9100,9105,3,2),(8061,'Villoruela',34038,34041,3,1),(8062,'Villoslada de Cameros',21830,21833,3,1),(8063,'Villota del Páramo',31352,31357,3,2),(8064,'Villovieco',31358,31361,3,1),(8065,'Vilobí d\'Onyar',15096,15103,3,3),(8066,'Vilobí del Penedès',7298,7301,3,1),(8067,'Vilopriu',15104,15109,3,2),(8068,'Viloria',41656,41659,3,1),(8069,'Viloria de Rioja',9106,9109,3,1),(8070,'Vilvestre',34042,34045,3,1),(8071,'Vilviestre del Pinar',9110,9113,3,1),(8072,'Vimbodí i Poblet',37430,37437,3,3),(8073,'Vimianzo',21060,21073,3,6),(8074,'Vinaceite',38496,38499,3,1),(8075,'Vinaixa',24706,24709,3,1),(8076,'Vinalesa',40654,40657,3,1),(8077,'Vinaròs',11874,11877,3,1),(8078,'Viñas',43460,43467,3,3),(8079,'Vindel',13960,13963,3,1),(8080,'Vinebre',37438,37441,3,1),(8081,'Viñegra de Moraña',4482,4485,3,1),(8082,'Viniegra de Abajo',21834,21837,3,1),(8083,'Viniegra de Arriba',21838,21841,3,1),(8084,'Viñuela',27512,27519,3,3),(8085,'Viñuelas',17310,17313,3,1),(8086,'Vinuesa',36540,36545,3,2),(8087,'Vinyols i els Arcs',37442,37445,3,1),(8088,'Visiedo',38500,38503,3,1),(8089,'Viso del Marqués',12402,12411,3,4),(8090,'Vistabella',44772,44777,3,2),(8091,'Vistabella del Maestrat',11878,11881,3,1),(8092,'Vita',4486,4489,3,1),(8093,'Vitigudino',34046,34051,3,2),(8094,'Vitoria-Gasteiz',300,343,3,21),(8095,'Viveiro',25826,25841,3,7),(8096,'Vivel del Río Martín',38504,38509,3,2),(8097,'Viver',11882,11887,3,2),(8098,'Viver i Serrateix',7302,7305,3,1),(8099,'Viveros',872,875,3,1),(8100,'Vizcaínos',9114,9117,3,1),(8101,'Vizmanos',36546,36549,3,1),(8102,'Víznar',15984,15987,3,1),(8103,'Voto',11286,11295,3,4),(8104,'Vozmediano',36550,36553,3,1),(8105,'Wamba',41660,41663,3,1),(8106,'Xaló',1670,1673,3,1),(8107,'Xermade',25842,25855,3,6),(8108,'Xert',11888,11893,3,2),(8109,'Xerta',37446,37449,3,1),(8110,'Xinzo de Limia',30394,30409,3,7),(8111,'Xirivella',40658,40663,3,2),(8112,'Xove',25856,25867,3,5),(8113,'Xunqueira de Ambía',30410,30417,3,3),(8114,'Xunqueira de Espadanedo',30418,30425,3,3),(8115,'Yanguas',36554,36559,3,2),(8116,'Yanguas de Eresma',35042,35045,3,1),(8117,'Yátova',40664,40667,3,1),(8118,'Yebes',17314,17321,3,3),(8119,'Yebra',17322,17325,3,1),(8120,'Yebra de Basa',19464,19469,3,2),(8121,'Yecla',28092,28097,3,2),(8122,'Yecla de Yeltes',34052,34055,3,1),(8123,'Yécora/Iekora',344,347,3,1),(8124,'Yélamos de Abajo',17326,17329,3,1),(8125,'Yélamos de Arriba',17330,17333,3,1),(8126,'Yeles',39402,39405,3,1),(8127,'Yelo',36560,36565,3,2),(8128,'Yémeda',13964,13967,3,1),(8129,'Yepes',39406,39409,3,1),(8130,'Yernes y Tameza',3406,3409,3,1),(8131,'Yesa',29372,29375,3,1),(8132,'Yésero',19470,19473,3,1),(8133,'Yeste',876,893,3,8),(8134,'Yuncler',39410,39413,3,1),(8135,'Yunclillos',39414,39417,3,1),(8136,'Yuncos',39418,39421,3,1),(8137,'Yunquera',27520,27523,3,1),(8138,'Yunquera de Henares',17334,17337,3,1),(8139,'Zabalza/Zabaltza',29376,29379,3,1),(8140,'Zael',9118,9121,3,1),(8141,'Zafarraya',15988,15991,3,1),(8142,'Zafra',5256,5259,3,1),(8143,'Zafra de Záncara',13968,13971,3,1),(8144,'Zafrilla',13972,13975,3,1),(8145,'Zagra',15992,15995,3,1),(8146,'Zahara',10506,10509,3,1),(8147,'Zahínos',5260,5263,3,1),(8148,'Zaidín',19474,19477,3,1),(8149,'Zalamea de la Serena',5264,5267,3,1),(8150,'Zalamea la Real',18242,18251,3,4),(8151,'Zaldibar',42180,42183,3,1),(8152,'Zaldibia',17764,17767,3,1),(8153,'Zalduondo',348,351,3,1),(8154,'Zalla',42184,42191,3,3),(8155,'Zamarra',34056,34059,3,1),(8156,'Zamayón',34060,34063,3,1),(8157,'Zambrana',352,355,3,1),(8158,'Zamora',43468,43535,3,33),(8159,'Zamudio',42192,42195,3,1),(8160,'Zaorejas',17338,17345,3,3),(8161,'Zapardiel de la Cañada',4490,4493,3,1),(8162,'Zapardiel de la Ribera',4494,4497,3,1),(8163,'Zaragoza',44778,44851,3,36),(8164,'Zarapicos',34064,34067,3,1),(8165,'Zaratamo',42196,42199,3,1),(8166,'Zaratán',41664,41667,3,1),(8167,'Zarautz',17768,17771,3,1),(8168,'Zarra',40668,40671,3,1),(8169,'Zarratón',21842,21845,3,1),(8170,'Zarza de Granadilla',10166,10171,3,2),(8171,'Zarza de Montánchez',10172,10177,3,2),(8172,'Zarza de Tajo',13976,13979,3,1),(8173,'Zarza la Mayor',10178,10181,3,1),(8174,'Zarza-Capilla',5268,5271,3,1),(8175,'Zarzalejo',26918,26921,3,1),(8176,'Zarzosa',21846,21849,3,1),(8177,'Zarzosa de Río Pisuerga',9122,9125,3,1),(8178,'Zarzuela',13980,13983,3,1),(8179,'Zarzuela de Jadraque',17346,17349,3,1),(8180,'Zarzuela del Monte',35046,35049,3,1),(8181,'Zarzuela del Pinar',35050,35053,3,1),(8182,'Zas',21074,21093,3,9),(8183,'Zazuar',9126,9129,3,1),(8184,'Zeanuri',42200,42203,3,1),(8185,'Zeberio',42204,42207,3,1),(8186,'Zegama',17772,17775,3,1),(8187,'Zerain',17776,17779,3,1),(8188,'Zestoa',17780,17785,3,2),(8189,'Zierbena',42208,42211,3,1),(8190,'Zigoitia',356,361,3,2),(8191,'Ziordia',29380,29383,3,1),(8192,'Ziortza-Bolibar',42212,42215,3,1),(8193,'Zizur Mayor/Zizur Nagusia',29384,29387,3,1),(8194,'Zizurkil',17786,17789,3,1),(8195,'Zorita',10182,10185,3,1),(8196,'Zorita de la Frontera',34068,34071,3,1),(8197,'Zorita de los Canes',17350,17353,3,1),(8198,'Zorita del Maestrazgo',11894,11897,3,1),(8199,'Zorraquín',21850,21853,3,1),(8200,'Zotes del Páramo',23418,23423,3,2),(8201,'Zubieta',29388,29391,3,1),(8202,'Zucaina',11898,11901,3,1),(8203,'Zuera',44852,44859,3,3),(8204,'Zufre',18252,18255,3,1),(8205,'Zugarramurdi',29392,29395,3,1),(8206,'Zuheros',12924,12927,3,1),(8207,'Zuia',362,369,3,3),(8208,'Zújar',15996,15999,3,1),(8209,'Zumaia',17790,17793,3,1),(8210,'Zumarraga',17794,17797,3,1),(8211,'Zuñeda',9130,9133,3,1),(8212,'Zúñiga',29396,29399,3,1),(8213,'Zurgena',2314,2321,3,3),(8214,'00240',11,12,4,0),(8215,'00548',3565,3566,4,0),(8216,'01001',301,302,4,0),(8217,'01002',303,304,4,0),(8218,'01003',305,306,4,0),(8219,'01004',307,308,4,0),(8220,'01005',309,310,4,0),(8221,'01006',311,312,4,0),(8222,'01007',313,314,4,0),(8223,'01008',315,316,4,0),(8224,'01009',317,318,4,0),(8225,'01010',319,320,4,0),(8226,'01012',183,184,4,0),(8227,'01012',321,322,4,0),(8228,'01013',323,324,4,0),(8229,'01015',325,326,4,0),(8230,'01110',115,116,4,0),(8231,'01117',117,118,4,0),(8232,'01117',151,152,4,0),(8233,'01118',105,106,4,0),(8234,'01118',191,192,4,0),(8235,'01118',7715,7716,4,0),(8236,'01120',45,46,4,0),(8237,'01128',119,120,4,0),(8238,'01128',107,108,4,0),(8239,'01128',47,48,4,0),(8240,'01129',49,50,4,0),(8241,'01130',363,364,4,0),(8242,'01138',357,358,4,0),(8243,'01139',365,366,4,0),(8244,'01160',31,32,4,0),(8245,'01165',33,34,4,0),(8246,'01169',35,36,4,0),(8247,'01170',225,226,4,0),(8248,'01171',227,228,4,0),(8249,'01191',327,328,4,0),(8250,'01191',155,156,4,0),(8251,'01192',123,124,4,0),(8252,'01192',329,330,4,0),(8253,'01193',13,14,4,0),(8254,'01193',125,126,4,0),(8255,'01193',331,332,4,0),(8256,'01193',165,166,4,0),(8257,'01194',109,110,4,0),(8258,'01194',333,334,4,0),(8259,'01195',335,336,4,0),(8260,'01195',157,158,4,0),(8261,'01196',337,338,4,0),(8262,'01196',359,360,4,0),(8263,'01200',5,6,4,0),(8264,'01206',167,168,4,0),(8265,'01206',91,92,4,0),(8266,'01207',273,274,4,0),(8267,'01207',169,170,4,0),(8268,'01207',7,8,4,0),(8269,'01208',65,66,4,0),(8270,'01208',275,276,4,0),(8271,'01208',93,94,4,0),(8272,'01208',349,350,4,0),(8273,'01211',193,194,4,0),(8274,'01211',7717,7718,4,0),(8275,'01211',39,40,4,0),(8276,'01211',255,256,4,0),(8277,'01211',97,98,4,0),(8278,'01212',99,100,4,0),(8279,'01212',185,186,4,0),(8280,'01212',257,258,4,0),(8281,'01212',353,354,4,0),(8282,'01213',263,264,4,0),(8283,'01213',137,138,4,0),(8284,'01213',211,212,4,0),(8285,'01216',111,112,4,0),(8286,'01216',259,260,4,0),(8287,'01220',265,266,4,0),(8288,'01220',101,102,4,0),(8289,'01220',139,140,4,0),(8290,'01220',41,42,4,0),(8291,'01230',159,160,4,0),(8292,'01250',67,68,4,0),(8293,'01260',69,70,4,0),(8294,'01300',197,198,4,0),(8295,'01306',217,218,4,0),(8296,'01307',269,270,4,0),(8297,'01307',87,88,4,0),(8298,'01307',297,298,4,0),(8299,'01308',199,200,4,0),(8300,'01308',207,208,4,0),(8301,'01308',173,174,4,0),(8302,'01309',241,242,4,0),(8303,'01309',233,234,4,0),(8304,'01309',201,202,4,0),(8305,'01309',133,134,4,0),(8306,'01320',249,250,4,0),(8307,'01321',203,204,4,0),(8308,'01322',251,252,4,0),(8309,'01322',345,346,4,0),(8310,'01322',237,238,4,0),(8311,'01330',187,188,4,0),(8312,'01340',129,130,4,0),(8313,'01400',221,222,4,0),(8314,'01408',73,74,4,0),(8315,'01409',245,246,4,0),(8316,'01420',141,142,4,0),(8317,'01423',213,214,4,0),(8318,'01423',25,26,4,0),(8319,'01423',143,144,4,0),(8320,'01423',287,288,4,0),(8321,'01426',289,290,4,0),(8322,'01426',27,28,4,0),(8323,'01426',145,146,4,0),(8324,'01427',7485,7486,4,0),(8325,'01427',291,292,4,0),(8326,'01427',7995,7996,4,0),(8327,'01428',161,162,4,0),(8328,'01428',293,294,4,0),(8329,'01428',147,148,4,0),(8330,'01430',177,178,4,0),(8331,'01439',179,180,4,0),(8332,'01440',279,280,4,0),(8333,'01449',281,282,4,0),(8334,'01450',17,18,4,0),(8335,'01450',367,368,4,0),(8336,'01450',283,284,4,0),(8337,'01468',19,20,4,0),(8338,'01470',21,22,4,0),(8339,'01470',75,76,4,0),(8340,'01474',59,60,4,0),(8341,'01476',77,78,4,0),(8342,'01477',79,80,4,0),(8343,'01478',81,82,4,0),(8344,'01478',61,62,4,0),(8345,'01479',83,84,4,0),(8346,'01510',229,230,4,0),(8347,'01510',339,340,4,0),(8348,'01510',53,54,4,0),(8349,'01520',341,342,4,0),(8350,'01520',55,56,4,0),(8351,'02001',381,382,4,0),(8352,'02002',383,384,4,0),(8353,'02003',385,386,4,0),(8354,'02004',387,388,4,0),(8355,'02005',389,390,4,0),(8356,'02006',391,392,4,0),(8357,'02008',393,394,4,0),(8358,'02049',395,396,4,0),(8359,'02071',397,398,4,0),(8360,'02099',399,400,4,0),(8361,'02099',763,764,4,0),(8362,'02100',815,816,4,0),(8363,'02100',17665,17666,4,0),(8364,'02110',625,626,4,0),(8365,'02110',817,818,4,0),(8366,'02120',739,740,4,0),(8367,'02124',457,458,4,0),(8368,'02124',423,424,4,0),(8369,'02124',653,654,4,0),(8370,'02125',459,460,4,0),(8371,'02126',461,462,4,0),(8372,'02127',741,742,4,0),(8373,'02128',425,426,4,0),(8374,'02128',743,744,4,0),(8375,'02129',773,774,4,0),(8376,'02130',487,488,4,0),(8377,'02136',729,730,4,0),(8378,'02137',731,732,4,0),(8379,'02138',747,748,4,0),(8380,'02138',489,490,4,0),(8381,'02138',733,734,4,0),(8382,'02139',491,492,4,0),(8383,'02139',463,464,4,0),(8384,'02140',401,402,4,0),(8385,'02141',775,776,4,0),(8386,'02142',777,778,4,0),(8387,'02142',655,656,4,0),(8388,'02150',829,830,4,0),(8389,'02151',505,506,4,0),(8390,'02152',377,378,4,0),(8391,'02153',501,502,4,0),(8392,'02154',863,864,4,0),(8393,'02154',769,770,4,0),(8394,'02155',403,404,4,0),(8395,'02156',529,530,4,0),(8396,'02160',647,648,4,0),(8397,'02161',649,650,4,0),(8398,'02162',629,630,4,0),(8399,'02170',17903,17904,4,0),(8400,'02200',517,518,4,0),(8401,'02210',429,430,4,0),(8402,'02211',431,432,4,0),(8403,'02212',513,514,4,0),(8404,'02213',837,838,4,0),(8405,'02213',473,474,4,0),(8406,'02214',433,434,4,0),(8407,'02214',475,476,4,0),(8408,'02215',859,860,4,0),(8409,'02215',419,420,4,0),(8410,'02220',693,694,4,0),(8411,'02230',661,662,4,0),(8412,'02240',665,666,4,0),(8413,'02246',701,702,4,0),(8414,'02247',525,526,4,0),(8415,'02248',619,620,4,0),(8416,'02249',621,622,4,0),(8417,'02249',633,634,4,0),(8418,'02249',583,584,4,0),(8419,'02250',373,374,4,0),(8420,'02251',585,586,4,0),(8421,'02252',435,436,4,0),(8422,'02253',591,592,4,0),(8423,'02260',587,588,4,0),(8424,'02270',845,846,4,0),(8425,'02300',439,440,4,0),(8426,'02310',873,874,4,0),(8427,'02311',759,760,4,0),(8428,'02312',441,442,4,0),(8429,'02313',749,750,4,0),(8430,'02314',751,752,4,0),(8431,'02314',669,670,4,0),(8432,'02314',443,444,4,0),(8433,'02315',833,834,4,0),(8434,'02316',801,802,4,0),(8435,'02320',469,470,4,0),(8436,'02326',805,806,4,0),(8437,'02327',781,782,4,0),(8438,'02328',405,406,4,0),(8439,'02329',509,510,4,0),(8440,'02330',445,446,4,0),(8441,'02331',793,794,4,0),(8442,'02332',795,796,4,0),(8443,'02340',797,798,4,0),(8444,'02350',849,850,4,0),(8445,'02360',483,484,4,0),(8446,'02400',595,596,4,0),(8447,'02409',597,598,4,0),(8448,'02410',657,658,4,0),(8449,'02420',599,600,4,0),(8450,'02430',561,562,4,0),(8451,'02434',643,644,4,0),(8452,'02435',809,810,4,0),(8453,'02436',571,572,4,0),(8454,'02437',811,812,4,0),(8455,'02438',27853,27854,4,0),(8456,'02439',563,564,4,0),(8457,'02440',677,678,4,0),(8458,'02448',493,494,4,0),(8459,'02448',679,680,4,0),(8460,'02449',681,682,4,0),(8461,'02449',565,566,4,0),(8462,'02450',785,786,4,0),(8463,'02459',787,788,4,0),(8464,'02459',735,736,4,0),(8465,'02460',867,868,4,0),(8466,'02461',547,548,4,0),(8467,'02462',789,790,4,0),(8468,'02462',869,870,4,0),(8469,'02470',567,568,4,0),(8470,'02480',877,878,4,0),(8471,'02482',879,880,4,0),(8472,'02484',881,882,4,0),(8473,'02485',883,884,4,0),(8474,'02486',885,886,4,0),(8475,'02487',887,888,4,0),(8476,'02488',889,890,4,0),(8477,'02489',891,892,4,0),(8478,'02490',601,602,4,0),(8479,'02498',603,604,4,0),(8480,'02499',605,606,4,0),(8481,'02500',821,822,4,0),(8482,'02510',765,766,4,0),(8483,'02510',531,532,4,0),(8484,'02511',407,408,4,0),(8485,'02512',409,410,4,0),(8486,'02513',823,824,4,0),(8487,'02514',825,826,4,0),(8488,'02520',533,534,4,0),(8489,'02529',535,536,4,0),(8490,'02530',705,706,4,0),(8491,'02534',707,708,4,0),(8492,'02535',709,710,4,0),(8493,'02536',711,712,4,0),(8494,'02537',713,714,4,0),(8495,'02538',715,716,4,0),(8496,'02539',717,718,4,0),(8497,'02600',853,854,4,0),(8498,'02610',555,556,4,0),(8499,'02611',725,726,4,0),(8500,'02612',855,856,4,0),(8501,'02612',697,698,4,0),(8502,'02613',557,558,4,0),(8503,'02614',551,552,4,0),(8504,'02620',673,674,4,0),(8505,'02630',637,638,4,0),(8506,'02636',13157,13158,4,0),(8507,'02636',841,842,4,0),(8508,'02637',575,576,4,0),(8509,'02638',685,686,4,0),(8510,'02639',639,640,4,0),(8511,'02639',479,480,4,0),(8512,'02640',449,450,4,0),(8513,'02650',689,690,4,0),(8514,'02651',579,580,4,0),(8515,'02652',721,722,4,0),(8516,'02653',415,416,4,0),(8517,'02660',521,522,4,0),(8518,'02690',453,454,4,0),(8519,'02690',609,610,4,0),(8520,'02691',497,498,4,0),(8521,'02692',755,756,4,0),(8522,'02692',537,538,4,0),(8523,'02693',543,544,4,0),(8524,'02694',611,612,4,0),(8525,'02695',539,540,4,0),(8526,'02696',615,616,4,0),(8527,'02999',465,466,4,0),(8528,'03001',953,954,4,0),(8529,'03002',955,956,4,0),(8530,'03003',957,958,4,0),(8531,'03004',959,960,4,0),(8532,'03005',961,962,4,0),(8533,'03006',963,964,4,0),(8534,'03007',965,966,4,0),(8535,'03008',967,968,4,0),(8536,'03009',969,970,4,0),(8537,'03010',971,972,4,0),(8538,'03010',27883,27884,4,0),(8539,'03011',973,974,4,0),(8540,'03012',975,976,4,0),(8541,'03013',977,978,4,0),(8542,'03014',979,980,4,0),(8543,'03015',981,982,4,0),(8544,'03016',983,984,4,0),(8545,'03100',1365,1366,4,0),(8546,'03108',1629,1630,4,0),(8547,'03109',1617,1618,4,0),(8548,'03110',1441,1442,4,0),(8549,'03111',1139,1140,4,0),(8550,'03112',985,986,4,0),(8551,'03113',987,988,4,0),(8552,'03114',989,990,4,0),(8553,'03115',991,992,4,0),(8554,'03130',1591,1592,4,0),(8555,'03138',993,994,4,0),(8556,'03139',1255,1256,4,0),(8557,'03140',1339,1340,4,0),(8558,'03150',1219,1220,4,0),(8559,'03158',1191,1192,4,0),(8560,'03158',1173,1174,4,0),(8561,'03159',1199,1200,4,0),(8562,'03160',1007,1008,4,0),(8563,'03169',945,946,4,0),(8564,'03170',1551,1552,4,0),(8565,'03177',1317,1318,4,0),(8566,'03177',1203,1204,4,0),(8567,'03177',1567,1568,4,0),(8568,'03178',1091,1092,4,0),(8569,'03179',1319,1320,4,0),(8570,'03179',1009,1010,4,0),(8571,'03180',1633,1634,4,0),(8572,'03181',1635,1636,4,0),(8573,'03182',1637,1638,4,0),(8574,'03183',1639,1640,4,0),(8575,'03184',1641,1642,4,0),(8576,'03185',1643,1644,4,0),(8577,'03186',1645,1646,4,0),(8578,'03187',1411,1412,4,0),(8579,'03188',1647,1648,4,0),(8580,'03189',1467,1468,4,0),(8581,'03190',1521,1522,4,0),(8582,'03191',1523,1524,4,0),(8583,'03191',1469,1470,4,0),(8584,'03192',1471,1472,4,0),(8585,'03193',1575,1576,4,0),(8586,'03194',1257,1258,4,0),(8587,'03195',1259,1260,4,0),(8588,'03201',1261,1262,4,0),(8589,'03202',1263,1264,4,0),(8590,'03203',1265,1266,4,0),(8591,'03204',1267,1268,4,0),(8592,'03205',1269,1270,4,0),(8593,'03206',1271,1272,4,0),(8594,'03207',1273,1274,4,0),(8595,'03208',1275,1276,4,0),(8596,'03290',1277,1278,4,0),(8597,'03291',1279,1280,4,0),(8598,'03292',1281,1282,4,0),(8599,'03293',1283,1284,4,0),(8600,'03294',1285,1286,4,0),(8601,'03295',1287,1288,4,0),(8602,'03296',1289,1290,4,0),(8603,'03300',1473,1474,4,0),(8604,'03310',1475,1476,4,0),(8605,'03310',1351,1352,4,0),(8606,'03311',1477,1478,4,0),(8607,'03312',1479,1480,4,0),(8608,'03313',1481,1482,4,0),(8609,'03314',1483,1484,4,0),(8610,'03315',1485,1486,4,0),(8611,'03316',1049,1050,4,0),(8612,'03316',1487,1488,4,0),(8613,'03317',1147,1148,4,0),(8614,'03320',1291,1292,4,0),(8615,'03330',1193,1194,4,0),(8616,'03339',1195,1196,4,0),(8617,'03340',909,910,4,0),(8618,'03348',1335,1336,4,0),(8619,'03349',1571,1572,4,0),(8620,'03350',1187,1188,4,0),(8621,'03360',1149,1150,4,0),(8622,'03369',1489,1490,4,0),(8623,'03369',1539,1540,4,0),(8624,'03370',1543,1544,4,0),(8625,'03380',1131,1132,4,0),(8626,'03390',1045,1046,4,0),(8627,'03392',2649,2650,4,0),(8628,'03400',1661,1662,4,0),(8629,'03408',1663,1664,4,0),(8630,'03409',1161,1162,4,0),(8631,'03409',1665,1666,4,0),(8632,'03409',1559,1560,4,0),(8633,'03409',995,996,4,0),(8634,'03410',1127,1128,4,0),(8635,'03420',1165,1166,4,0),(8636,'03430',1453,1454,4,0),(8637,'03440',1347,1348,4,0),(8638,'03450',1031,1032,4,0),(8639,'03460',1039,1040,4,0),(8640,'03469',1157,1158,4,0),(8641,'03469',1041,1042,4,0),(8642,'03501',1069,1070,4,0),(8643,'03502',1071,1072,4,0),(8644,'03503',1073,1074,4,0),(8645,'03509',1313,1314,4,0),(8646,'03510',1143,1144,4,0),(8647,'03516',1103,1104,4,0),(8648,'03517',1083,1084,4,0),(8649,'03517',1183,1184,4,0),(8650,'03517',1057,1058,4,0),(8651,'03517',1227,1228,4,0),(8652,'03518',1135,1136,4,0),(8653,'03518',1607,1608,4,0),(8654,'03520',1531,1532,4,0),(8655,'03530',1383,1384,4,0),(8656,'03540',997,998,4,0),(8657,'03550',1587,1588,4,0),(8658,'03559',999,1000,4,0),(8659,'03560',1223,1224,4,0),(8660,'03569',905,906,4,0),(8661,'03570',1657,1658,4,0),(8662,'03578',1547,1548,4,0),(8663,'03579',1599,1600,4,0),(8664,'03579',1495,1496,4,0),(8665,'03580',1369,1370,4,0),(8666,'03581',1371,1372,4,0),(8667,'03590',1017,1018,4,0),(8668,'03599',1019,1020,4,0),(8669,'03600',1297,1298,4,0),(8670,'03610',1517,1518,4,0),(8671,'03630',1595,1596,4,0),(8672,'03638',1561,1562,4,0),(8673,'03639',1667,1668,4,0),(8674,'03640',1425,1426,4,0),(8675,'03649',1427,1428,4,0),(8676,'03650',1237,1238,4,0),(8677,'03657',1239,1240,4,0),(8678,'03657',28093,28094,4,0),(8679,'03658',1241,1242,4,0),(8680,'03658',1563,1564,4,0),(8681,'03659',1243,1244,4,0),(8682,'03659',27745,27746,4,0),(8683,'03660',1445,1446,4,0),(8684,'03668',949,950,4,0),(8685,'03669',1387,1388,4,0),(8686,'03670',1419,1420,4,0),(8687,'03679',1421,1422,4,0),(8688,'03680',1023,1024,4,0),(8689,'03688',1231,1232,4,0),(8690,'03689',1233,1234,4,0),(8691,'03689',1343,1344,4,0),(8692,'03689',1491,1492,4,0),(8693,'03690',1579,1580,4,0),(8694,'03698',897,898,4,0),(8695,'03699',1001,1002,4,0),(8696,'03700',1207,1208,4,0),(8697,'03709',1209,1210,4,0),(8698,'03710',1153,1154,4,0),(8699,'03720',1119,1120,4,0),(8700,'03723',913,914,4,0),(8701,'03724',1611,1612,4,0),(8702,'03725',1613,1614,4,0),(8703,'03726',1123,1124,4,0),(8704,'03727',1671,1672,4,0),(8705,'03728',915,916,4,0),(8706,'03729',1403,1404,4,0),(8707,'03729',1603,1604,4,0),(8708,'03730',1355,1356,4,0),(8709,'03737',1357,1358,4,0),(8710,'03738',1359,1360,4,0),(8711,'03739',1361,1362,4,0),(8712,'03740',1327,1328,4,0),(8713,'03749',1211,1212,4,0),(8714,'03750',1503,1504,4,0),(8715,'03759',1065,1066,4,0),(8716,'03760',1449,1450,4,0),(8717,'03769',1247,1248,4,0),(8718,'03769',1115,1116,4,0),(8719,'03769',1583,1584,4,0),(8720,'03770',1251,1252,4,0),(8721,'03770',1213,1214,4,0),(8722,'03778',1053,1054,4,0),(8723,'03779',1301,1302,4,0),(8724,'03780',1215,1216,4,0),(8725,'03780',1507,1508,4,0),(8726,'03786',1379,1380,4,0),(8727,'03787',1651,1652,4,0),(8728,'03788',1391,1392,4,0),(8729,'03788',1653,1654,4,0),(8730,'03789',1395,1396,4,0),(8731,'03790',1457,1458,4,0),(8732,'03791',1459,1460,4,0),(8733,'03791',1399,1400,4,0),(8734,'03792',1499,1500,4,0),(8735,'03792',1431,1432,4,0),(8736,'03792',1461,1462,4,0),(8737,'03793',1169,1170,4,0),(8738,'03794',1087,1088,4,0),(8739,'03795',1625,1626,4,0),(8740,'03795',1555,1556,4,0),(8741,'03795',1463,1464,4,0),(8742,'03800',927,928,4,0),(8743,'03801',929,930,4,0),(8744,'03802',931,932,4,0),(8745,'03803',933,934,4,0),(8746,'03804',935,936,4,0),(8747,'03810',1095,1096,4,0),(8748,'03811',1535,1536,4,0),(8749,'03811',1331,1332,4,0),(8750,'03812',1111,1112,4,0),(8751,'03812',1415,1416,4,0),(8752,'03812',1027,1028,4,0),(8753,'03813',1621,1622,4,0),(8754,'03813',1305,1306,4,0),(8755,'03813',1309,1310,4,0),(8756,'03814',923,924,4,0),(8757,'03814',1035,1036,4,0),(8758,'03815',1513,1514,4,0),(8759,'03816',1079,1080,4,0),(8760,'03818',937,938,4,0),(8761,'03820',1177,1178,4,0),(8762,'03827',1099,1100,4,0),(8763,'03827',1013,1014,4,0),(8764,'03827',1107,1108,4,0),(8765,'03828',1527,1528,4,0),(8766,'03829',1375,1376,4,0),(8767,'03829',1179,1180,4,0),(8768,'03830',1435,1436,4,0),(8769,'03837',901,902,4,0),(8770,'03838',941,942,4,0),(8771,'03839',1437,1438,4,0),(8772,'03840',1323,1324,4,0),(8773,'03841',919,920,4,0),(8774,'03850',1061,1062,4,0),(8775,'03860',1407,1408,4,0),(8776,'04001',1749,1750,4,0),(8777,'04002',1751,1752,4,0),(8778,'04003',1753,1754,4,0),(8779,'04004',1755,1756,4,0),(8780,'04005',1757,1758,4,0),(8781,'04006',1759,1760,4,0),(8782,'04007',1761,1762,4,0),(8783,'04008',1763,1764,4,0),(8784,'04009',1765,1766,4,0),(8785,'04100',2067,2068,4,0),(8786,'04110',2069,2070,4,0),(8787,'04113',2071,2072,4,0),(8788,'04114',2033,2034,4,0),(8789,'04114',2073,2074,4,0),(8790,'04115',2075,2076,4,0),(8791,'04116',2077,2078,4,0),(8792,'04117',2079,2080,4,0),(8793,'04118',2081,2082,4,0),(8794,'04119',2083,2084,4,0),(8795,'04120',1767,1768,4,0),(8796,'04130',1769,1770,4,0),(8797,'04131',1771,1772,4,0),(8798,'04140',1867,1868,4,0),(8799,'04147',2085,2086,4,0),(8800,'04149',2201,2202,4,0),(8801,'04149',1869,1870,4,0),(8802,'04149',2087,2088,4,0),(8803,'04150',1773,1774,4,0),(8804,'04151',2089,2090,4,0),(8805,'04160',1775,1776,4,0),(8806,'04188',2091,2092,4,0),(8807,'04200',2223,2224,4,0),(8808,'04210',2035,2036,4,0),(8809,'04211',2037,2038,4,0),(8810,'04211',2261,2262,4,0),(8811,'04211',2225,2226,4,0),(8812,'04212',2099,2100,4,0),(8813,'04212',2275,2276,4,0),(8814,'04212',1873,1874,4,0),(8815,'04213',2179,2180,4,0),(8816,'04230',1967,1968,4,0),(8817,'04240',2303,2304,4,0),(8818,'04248',2203,2204,4,0),(8819,'04250',2133,2134,4,0),(8820,'04259',2135,2136,4,0),(8821,'04260',2157,2158,4,0),(8822,'04270',2205,2206,4,0),(8823,'04271',2207,2208,4,0),(8824,'04271',2029,2030,4,0),(8825,'04274',2265,2266,4,0),(8826,'04274',1835,1836,4,0),(8827,'04275',2247,2248,4,0),(8828,'04275',2235,2236,4,0),(8829,'04276',1837,1838,4,0),(8830,'04276',1733,1734,4,0),(8831,'04276',1831,1832,4,0),(8832,'04277',2209,2210,4,0),(8833,'04278',2211,2212,4,0),(8834,'04279',2267,2268,4,0),(8835,'04279',2213,2214,4,0),(8836,'04279',2237,2238,4,0),(8837,'04280',2021,2022,4,0),(8838,'04288',2023,2024,4,0),(8839,'04288',1817,1818,4,0),(8840,'04289',2025,2026,4,0),(8841,'04289',1819,1820,4,0),(8842,'04289',2215,2216,4,0),(8843,'04400',1741,1742,4,0),(8844,'04409',1963,1964,4,0),(8845,'04409',1745,1746,4,0),(8846,'04410',1827,1828,4,0),(8847,'04420',2175,2176,4,0),(8848,'04430',1993,1994,4,0),(8849,'04431',1989,1990,4,0),(8850,'04440',2153,2154,4,0),(8851,'04450',1855,1856,4,0),(8852,'04458',1823,1824,4,0),(8853,'04458',1779,1780,4,0),(8854,'04458',2119,2120,4,0),(8855,'04459',2095,2096,4,0),(8856,'04460',1939,1940,4,0),(8857,'04470',2013,2014,4,0),(8858,'04479',2127,2128,4,0),(8859,'04479',1941,1942,4,0),(8860,'04479',1807,1808,4,0),(8861,'04480',1721,1722,4,0),(8862,'04500',1931,1932,4,0),(8863,'04510',1677,1678,4,0),(8864,'04520',1681,1682,4,0),(8865,'04530',2007,2008,4,0),(8866,'04531',1701,1702,4,0),(8867,'04532',2009,2010,4,0),(8868,'04533',1683,1684,4,0),(8869,'04540',2063,2064,4,0),(8870,'04549',1953,1954,4,0),(8871,'04550',1955,1956,4,0),(8872,'04558',1703,1704,4,0),(8873,'04558',1957,1958,4,0),(8874,'04559',1959,1960,4,0),(8875,'04560',1945,1946,4,0),(8876,'04567',1737,1738,4,0),(8877,'04568',2171,2172,4,0),(8878,'04568',1783,1784,4,0),(8879,'04569',2241,2242,4,0),(8880,'04569',1841,1842,4,0),(8881,'04600',1707,1708,4,0),(8882,'04600',1971,1972,4,0),(8883,'04610',1889,1890,4,0),(8884,'04616',1891,1892,4,0),(8885,'04617',1893,1894,4,0),(8886,'04618',1895,1896,4,0),(8887,'04619',1897,1898,4,0),(8888,'04620',2299,2300,4,0),(8889,'04628',1787,1788,4,0),(8890,'04629',1789,1790,4,0),(8891,'04630',1949,1950,4,0),(8892,'04638',2057,2058,4,0),(8893,'04639',2257,2258,4,0),(8894,'04639',2059,2060,4,0),(8895,'04640',2139,2140,4,0),(8896,'04640',2107,2108,4,0),(8897,'04647',1899,1900,4,0),(8898,'04647',2141,2142,4,0),(8899,'04648',1901,1902,4,0),(8900,'04648',2143,2144,4,0),(8901,'04649',2145,2146,4,0),(8902,'04650',2315,2316,4,0),(8903,'04659',2243,2244,4,0),(8904,'04660',1793,1794,4,0),(8905,'04661',2317,2318,4,0),(8906,'04661',2229,2230,4,0),(8907,'04662',2319,2320,4,0),(8908,'04662',1973,1974,4,0),(8909,'04690',1975,1976,4,0),(8910,'04691',1977,1978,4,0),(8911,'04692',1979,1980,4,0),(8912,'04692',1709,1710,4,0),(8913,'04692',2231,2232,4,0),(8914,'04693',1981,1982,4,0),(8915,'04694',1983,1984,4,0),(8916,'04700',1909,1910,4,0),(8917,'04710',1911,1912,4,0),(8918,'04711',1913,1914,4,0),(8919,'04712',1915,1916,4,0),(8920,'04713',1845,1846,4,0),(8921,'04715',1917,1918,4,0),(8922,'04716',1919,1920,4,0),(8923,'04720',2161,2162,4,0),(8924,'04727',2307,2308,4,0),(8925,'04728',1927,1928,4,0),(8926,'04729',1923,1924,4,0),(8927,'04738',2309,2310,4,0),(8928,'04740',2163,2164,4,0),(8929,'04741',2165,2166,4,0),(8930,'04743',2167,2168,4,0),(8931,'04745',1997,1998,4,0),(8932,'04746',1999,2000,4,0),(8933,'04750',1905,1906,4,0),(8934,'04760',1847,1848,4,0),(8935,'04768',1723,1724,4,0),(8936,'04768',1849,1850,4,0),(8937,'04769',1851,1852,4,0),(8938,'04770',1687,1688,4,0),(8939,'04778',1689,1690,4,0),(8940,'04779',2129,2130,4,0),(8941,'04779',1691,1692,4,0),(8942,'04779',1809,1810,4,0),(8943,'04800',1711,1712,4,0),(8944,'04810',2109,2110,4,0),(8945,'04810',2123,2124,4,0),(8946,'04811',2111,2112,4,0),(8947,'04812',1713,1714,4,0),(8948,'04813',2113,2114,4,0),(8949,'04813',1715,1716,4,0),(8950,'04814',1717,1718,4,0),(8951,'04815',1859,1860,4,0),(8952,'04820',2287,2288,4,0),(8953,'04825',1881,1882,4,0),(8954,'04826',2289,2290,4,0),(8955,'04827',2291,2292,4,0),(8956,'04828',2293,2294,4,0),(8957,'04829',2295,2296,4,0),(8958,'04829',2279,2280,4,0),(8959,'04830',2281,2282,4,0),(8960,'04838',2051,2052,4,0),(8961,'04839',2283,2284,4,0),(8962,'04839',2053,2054,4,0),(8963,'04850',1861,1862,4,0),(8964,'04857',1695,1696,4,0),(8965,'04858',1863,1864,4,0),(8966,'04858',1697,1698,4,0),(8967,'04859',1885,1886,4,0),(8968,'04859',1877,1878,4,0),(8969,'04859',2017,2018,4,0),(8970,'04860',2103,2104,4,0),(8971,'04867',2047,2048,4,0),(8972,'04868',2003,2004,4,0),(8973,'04869',1935,1936,4,0),(8974,'04870',2149,2150,4,0),(8975,'04877',2041,2042,4,0),(8976,'04877',2197,2198,4,0),(8977,'04878',2219,2220,4,0),(8978,'04878',2193,2194,4,0),(8979,'04879',2271,2272,4,0),(8980,'04880',2249,2250,4,0),(8981,'04887',2043,2044,4,0),(8982,'04887',2251,2252,4,0),(8983,'04888',1813,1814,4,0),(8984,'04888',1797,1798,4,0),(8985,'04889',1801,1802,4,0),(8986,'04889',2253,2254,4,0),(8987,'04890',2183,2184,4,0),(8988,'04897',1727,1728,4,0),(8989,'04897',2185,2186,4,0),(8990,'04898',2187,2188,4,0),(8991,'04898',1729,1730,4,0),(8992,'04899',2189,2190,4,0),(8993,'04899',2115,2116,4,0),(8994,'04964',1985,1986,4,0),(8995,'05001',3457,3458,4,0),(8996,'05002',3459,3460,4,0),(8997,'05003',3461,3462,4,0),(8998,'05004',3463,3464,4,0),(8999,'05005',3465,3466,4,0),(9000,'05100',4091,4092,4,0),(9001,'05110',3665,3666,4,0),(9002,'05111',4269,4270,4,0),(9003,'05113',3539,3540,4,0),(9004,'05114',4455,4456,4,0),(9005,'05115',4369,4370,4,0),(9006,'05115',4107,4108,4,0),(9007,'05116',4371,4372,4,0),(9008,'05120',4069,4070,4,0),(9009,'05120',4273,4274,4,0),(9010,'05120',4103,4104,4,0),(9011,'05122',4111,4112,4,0),(9012,'05122',4095,4096,4,0),(9013,'05123',4077,4078,4,0),(9014,'05123',3813,3814,4,0),(9015,'05130',4393,4394,4,0),(9016,'05131',3859,3860,4,0),(9017,'05131',4037,4038,4,0),(9018,'05131',3947,3948,4,0),(9019,'05132',3607,3608,4,0),(9020,'05132',4289,4290,4,0),(9021,'05132',3821,3822,4,0),(9022,'05133',4285,4286,4,0),(9023,'05134',4065,4066,4,0),(9024,'05134',3747,3748,4,0),(9025,'05134',4053,4054,4,0),(9026,'05140',3929,3930,4,0),(9027,'05140',3585,3586,4,0),(9028,'05140',3533,3534,4,0),(9029,'05140',3925,3926,4,0),(9030,'05141',3739,3740,4,0),(9031,'05141',4025,4026,4,0),(9032,'05141',3611,3612,4,0),(9033,'05141',4317,4318,4,0),(9034,'05143',4435,4436,4,0),(9035,'05145',3991,3992,4,0),(9036,'05145',4277,4278,4,0),(9037,'05145',3921,3922,4,0),(9038,'05146',3503,3504,4,0),(9039,'05146',3969,3970,4,0),(9040,'05146',4487,4488,4,0),(9041,'05146',3917,3918,4,0),(9042,'05146',4253,4254,4,0),(9043,'05146',3801,3802,4,0),(9044,'05146',3701,3702,4,0),(9045,'05147',3835,3836,4,0),(9046,'05147',3743,3744,4,0),(9047,'05148',3553,3554,4,0),(9048,'05149',3615,3616,4,0),(9049,'05149',4389,4390,4,0),(9050,'05150',4151,4152,4,0),(9051,'05150',4297,4298,4,0),(9052,'05150',4207,4208,4,0),(9053,'05151',3933,3934,4,0),(9054,'05151',3645,3646,4,0),(9055,'05152',3935,3936,4,0),(9056,'05153',3439,3440,4,0),(9057,'05153',3487,3488,4,0),(9058,'05153',3909,3910,4,0),(9059,'05153',3691,3692,4,0),(9060,'05153',3627,3628,4,0),(9061,'05154',4021,4022,4,0),(9062,'05154',4491,4492,4,0),(9063,'05154',3693,3694,4,0),(9064,'05160',3467,3468,4,0),(9065,'05161',3959,3960,4,0),(9066,'05162',3887,3888,4,0),(9067,'05163',3979,3980,4,0),(9068,'05163',3773,3774,4,0),(9069,'05163',4167,4168,4,0),(9070,'05164',3697,3698,4,0),(9071,'05164',4459,4460,4,0),(9072,'05164',3789,3790,4,0),(9073,'05164',4301,4302,4,0),(9074,'05164',4209,4210,4,0),(9075,'05165',4159,4160,4,0),(9076,'05165',3671,3672,4,0),(9077,'05165',3557,3558,4,0),(9078,'05165',4405,4406,4,0),(9079,'05170',3705,3706,4,0),(9080,'05190',4213,4214,4,0),(9081,'05191',4123,4124,4,0),(9082,'05191',3965,3966,4,0),(9083,'05192',3869,3870,4,0),(9084,'05192',3855,3856,4,0),(9085,'05192',4009,4010,4,0),(9086,'05193',4345,4346,4,0),(9087,'05193',4127,4128,4,0),(9088,'05194',3939,3940,4,0),(9089,'05194',3469,3470,4,0),(9090,'05194',3499,3500,4,0),(9091,'05195',3471,3472,4,0),(9092,'05196',3793,3794,4,0),(9093,'05196',4419,4420,4,0),(9094,'05197',3473,3474,4,0),(9095,'05197',3675,3676,4,0),(9096,'05197',3757,3758,4,0),(9097,'05198',4397,4398,4,0),(9098,'05200',3443,3444,4,0),(9099,'05210',3809,3810,4,0),(9100,'05210',4263,4264,4,0),(9101,'05211',3619,3620,4,0),(9102,'05211',3549,3550,4,0),(9103,'05211',3573,3574,4,0),(9104,'05211',3495,3496,4,0),(9105,'05212',3735,3736,4,0),(9106,'05212',3425,3426,4,0),(9107,'05212',4463,4464,4,0),(9108,'05212',3561,3562,4,0),(9109,'05212',3731,3732,4,0),(9110,'05213',3879,3880,4,0),(9111,'05215',4379,4380,4,0),(9112,'05215',4143,4144,4,0),(9113,'05215',3653,3654,4,0),(9114,'05216',4041,4042,4,0),(9115,'05217',3631,3632,4,0),(9116,'05217',3545,3546,4,0),(9117,'05217',4309,4310,4,0),(9118,'05217',3649,3650,4,0),(9119,'05220',3901,3902,4,0),(9120,'05229',3491,3492,4,0),(9121,'05229',4245,4246,4,0),(9122,'05229',3599,3600,4,0),(9123,'05229',3477,3478,4,0),(9124,'05230',3891,3892,4,0),(9125,'05239',3893,3894,4,0),(9126,'05239',4163,4164,4,0),(9127,'05240',4081,4082,4,0),(9128,'05250',3683,3684,4,0),(9129,'05260',3603,3604,4,0),(9130,'05267',4237,4238,4,0),(9131,'05268',3795,3796,4,0),(9132,'05268',4321,4322,4,0),(9133,'05270',3707,3708,4,0),(9134,'05278',3709,3710,4,0),(9135,'05278',3667,3668,4,0),(9136,'05279',3711,3712,4,0),(9137,'05280',3961,3962,4,0),(9138,'05289',4409,4410,4,0),(9139,'05289',4241,4242,4,0),(9140,'05290',3513,3514,4,0),(9141,'05290',4313,4314,4,0),(9142,'05291',3905,3906,4,0),(9143,'05292',4361,4362,4,0),(9144,'05292',4139,4140,4,0),(9145,'05292',4439,4440,4,0),(9146,'05292',4443,4444,4,0),(9147,'05292',4191,4192,4,0),(9148,'05294',3797,3798,4,0),(9149,'05296',3785,3786,4,0),(9150,'05296',3715,3716,4,0),(9151,'05296',3413,3414,4,0),(9152,'05296',4131,4132,4,0),(9153,'05298',4411,4412,4,0),(9154,'05298',4203,4204,4,0),(9155,'05298',3913,3914,4,0),(9156,'05299',3509,3510,4,0),(9157,'05299',3983,3984,4,0),(9158,'05300',3635,3636,4,0),(9159,'05309',4483,4484,4,0),(9160,'05309',3637,3638,4,0),(9161,'05309',3999,4000,4,0),(9162,'05309',3623,3624,4,0),(9163,'05309',4217,4218,4,0),(9164,'05310',3723,3724,4,0),(9165,'05320',3577,3578,4,0),(9166,'05340',3447,3448,4,0),(9167,'05340',3535,3536,4,0),(9168,'05350',4305,4306,4,0),(9169,'05357',4365,4366,4,0),(9170,'05357',3529,3530,4,0),(9171,'05357',4001,4002,4,0),(9172,'05357',3449,3450,4,0),(9173,'05357',3777,3778,4,0),(9174,'05357',4447,4448,4,0),(9175,'05357',4375,4376,4,0),(9176,'05358',4005,4006,4,0),(9177,'05358',4147,4148,4,0),(9178,'05358',3417,3418,4,0),(9179,'05358',4029,4030,4,0),(9180,'05358',4265,4266,4,0),(9181,'05364',3829,3830,4,0),(9182,'05370',3719,3720,4,0),(9183,'05370',4033,4034,4,0),(9184,'05380',4225,4226,4,0),(9185,'05380',3505,3506,4,0),(9186,'05380',3769,3770,4,0),(9187,'05380',4013,4014,4,0),(9188,'05400',3433,3434,4,0),(9189,'05410',3973,3974,4,0),(9190,'05412',4249,4250,4,0),(9191,'05413',4325,4326,4,0),(9192,'05413',4475,4476,4,0),(9193,'05414',3641,3642,4,0),(9194,'05415',3679,3680,4,0),(9195,'05416',3657,3658,4,0),(9196,'05417',3781,3782,4,0),(9197,'05418',3435,3436,4,0),(9198,'05420',4401,4402,4,0),(9199,'05427',3805,3806,4,0),(9200,'05427',3727,3728,4,0),(9201,'05428',3593,3594,4,0),(9202,'05429',3595,3596,4,0),(9203,'05429',4349,4350,4,0),(9204,'05429',4061,4062,4,0),(9205,'05430',3843,3844,4,0),(9206,'05440',4177,4178,4,0),(9207,'05450',3589,3590,4,0),(9208,'05460',3751,3752,4,0),(9209,'05461',3955,3956,4,0),(9210,'05470',4155,4156,4,0),(9211,'05480',3567,3568,4,0),(9212,'05489',3569,3570,4,0),(9213,'05490',3883,3884,4,0),(9214,'05491',3975,3976,4,0),(9215,'05492',4187,4188,4,0),(9216,'05500',4171,4172,4,0),(9217,'05510',4339,4340,4,0),(9218,'05511',4341,4342,4,0),(9219,'05513',3541,3542,4,0),(9220,'05514',3951,3952,4,0),(9221,'05514',4293,4294,4,0),(9222,'05514',3523,3524,4,0),(9223,'05514',4423,4424,4,0),(9224,'05514',4057,4058,4,0),(9225,'05515',4173,4174,4,0),(9226,'05516',3817,3818,4,0),(9227,'05516',4233,4234,4,0),(9228,'05516',4471,4472,4,0),(9229,'05519',2651,2652,4,0),(9230,'05520',4221,4222,4,0),(9231,'05520',4135,4136,4,0),(9232,'05520',3873,3874,4,0),(9233,'05530',3995,3996,4,0),(9234,'05530',4335,4336,4,0),(9235,'05540',4179,4180,4,0),(9236,'05540',3987,3988,4,0),(9237,'05540',3875,3876,4,0),(9238,'05560',4017,4018,4,0),(9239,'05560',4431,4432,4,0),(9240,'05560',4183,4184,4,0),(9241,'05560',3429,3430,4,0),(9242,'05560',4195,4196,4,0),(9243,'05560',4479,4480,4,0),(9244,'05570',3525,3526,4,0),(9245,'05571',4451,4452,4,0),(9246,'05571',4049,4050,4,0),(9247,'05571',3581,3582,4,0),(9248,'05580',3421,3422,4,0),(9249,'05580',4329,4330,4,0),(9250,'05580',3453,3454,4,0),(9251,'05581',4331,4332,4,0),(9252,'05591',4467,4468,4,0),(9253,'05592',4353,4354,4,0),(9254,'05593',3847,3848,4,0),(9255,'05600',3661,3662,4,0),(9256,'05610',3481,3482,4,0),(9257,'05619',3765,3766,4,0),(9258,'05619',4229,4230,4,0),(9259,'05619',4119,4120,4,0),(9260,'05619',3943,3944,4,0),(9261,'05620',3851,3852,4,0),(9262,'05621',4199,4200,4,0),(9263,'05621',4383,4384,4,0),(9264,'05630',4357,4358,4,0),(9265,'05630',3517,3518,4,0),(9266,'05631',4495,4496,4,0),(9267,'05631',4085,4086,4,0),(9268,'05632',4257,4258,4,0),(9269,'05632',4087,4088,4,0),(9270,'05633',4259,4260,4,0),(9271,'05634',3825,3826,4,0),(9272,'05634',3831,3832,4,0),(9273,'05635',4099,4100,4,0),(9274,'05640',3753,3754,4,0),(9275,'05690',3519,3520,4,0),(9276,'05690',3897,3898,4,0),(9277,'05691',4385,4386,4,0),(9278,'05692',3687,3688,4,0),(9279,'05693',4427,4428,4,0),(9280,'05693',3761,3762,4,0),(9281,'05694',3483,3484,4,0),(9282,'05694',3839,3840,4,0),(9283,'05695',3863,3864,4,0),(9284,'05696',3865,3866,4,0),(9285,'05696',4281,4282,4,0),(9286,'05697',4073,4074,4,0),(9287,'05697',4415,4416,4,0),(9288,'05697',4115,4116,4,0),(9289,'05697',4045,4046,4,0),(9290,'06001',4561,4562,4,0),(9291,'06002',4563,4564,4,0),(9292,'06003',4565,4566,4,0),(9293,'06004',4567,4568,4,0),(9294,'06005',4569,4570,4,0),(9295,'06006',4571,4572,4,0),(9296,'06007',4573,4574,4,0),(9297,'06008',4575,4576,4,0),(9298,'06009',4577,4578,4,0),(9299,'06010',4579,4580,4,0),(9300,'06011',4581,4582,4,0),(9301,'06100',4987,4988,4,0),(9302,'06105',4693,4694,4,0),(9303,'06106',4989,4990,4,0),(9304,'06107',4991,4992,4,0),(9305,'06108',4993,4994,4,0),(9306,'06109',4995,4996,4,0),(9307,'06110',5239,5240,4,0),(9308,'06120',4979,4980,4,0),(9309,'06129',5261,5262,4,0),(9310,'06130',5199,5200,4,0),(9311,'06131',4527,4528,4,0),(9312,'06132',4813,4814,4,0),(9313,'06133',5127,5128,4,0),(9314,'06134',5175,5176,4,0),(9315,'06140',5123,5124,4,0),(9316,'06150',5099,5100,4,0),(9317,'06160',4601,4602,4,0),(9318,'06170',4583,4584,4,0),(9319,'06170',4835,4836,4,0),(9320,'06171',4539,4540,4,0),(9321,'06172',5135,5136,4,0),(9322,'06173',4975,4976,4,0),(9323,'06174',5077,5078,4,0),(9324,'06174',4851,4852,4,0),(9325,'06175',5081,5082,4,0),(9326,'06176',4869,4870,4,0),(9327,'06176',4861,4862,4,0),(9328,'06177',5187,5188,4,0),(9329,'06178',5191,5192,4,0),(9330,'06180',4585,4586,4,0),(9331,'06181',4587,4588,4,0),(9332,'06182',4589,4590,4,0),(9333,'06183',4591,4592,4,0),(9334,'06184',5049,5050,4,0),(9335,'06185',5163,5164,4,0),(9336,'06186',4785,4786,4,0),(9337,'06187',4887,4888,4,0),(9338,'06190',4873,4874,4,0),(9339,'06191',5031,5032,4,0),(9340,'06192',5249,5250,4,0),(9341,'06193',4593,4594,4,0),(9342,'06194',4595,4596,4,0),(9343,'06195',4597,4598,4,0),(9344,'06196',4701,4702,4,0),(9345,'06196',5111,5112,4,0),(9346,'06197',4729,4730,4,0),(9347,'06198',5113,5114,4,0),(9348,'06200',4543,4544,4,0),(9349,'06207',4507,4508,4,0),(9350,'06208',5223,5224,4,0),(9351,'06209',5115,5116,4,0),(9352,'06210',5143,5144,4,0),(9353,'06220',5211,5212,4,0),(9354,'06225',5069,5070,4,0),(9355,'06226',4821,4822,4,0),(9356,'06227',4879,4880,4,0),(9357,'06228',4825,4826,4,0),(9358,'06229',5045,5046,4,0),(9359,'06230',4893,4894,4,0),(9360,'06240',4757,4758,4,0),(9361,'06249',4671,4672,4,0),(9362,'06249',4653,4654,4,0),(9363,'06250',4623,4624,4,0),(9364,'06260',4937,4938,4,0),(9365,'06270',5103,5104,4,0),(9366,'06280',4769,4770,4,0),(9367,'06290',5155,5156,4,0),(9368,'06291',4941,4942,4,0),(9369,'06292',4649,4650,4,0),(9370,'06293',4641,4642,4,0),(9371,'06300',5257,5258,4,0),(9372,'06310',5035,5036,4,0),(9373,'06320',4921,4922,4,0),(9374,'06329',4551,4552,4,0),(9375,'06330',5179,5180,4,0),(9376,'06340',4749,4750,4,0),(9377,'06350',4817,4818,4,0),(9378,'06360',4765,4766,4,0),(9379,'06370',4631,4632,4,0),(9380,'06378',5195,5196,4,0),(9381,'06380',4829,4830,4,0),(9382,'06389',4831,4832,4,0),(9383,'06390',4745,4746,4,0),(9384,'06391',4857,4858,4,0),(9385,'06392',5037,5038,4,0),(9386,'06393',4531,4532,4,0),(9387,'06394',4627,4628,4,0),(9388,'06400',4713,4714,4,0),(9389,'06410',4509,4510,4,0),(9390,'06410',5095,5096,4,0),(9391,'06410',4789,4790,4,0),(9392,'06410',4715,4716,4,0),(9393,'06411',4917,4918,4,0),(9394,'06412',4717,4718,4,0),(9395,'06413',4925,4926,4,0),(9396,'06420',4689,4690,4,0),(9397,'06427',4949,4950,4,0),(9398,'06428',4609,4610,4,0),(9399,'06429',4611,4612,4,0),(9400,'06430',5265,5266,4,0),(9401,'06439',4737,4738,4,0),(9402,'06440',4909,4910,4,0),(9403,'06441',4805,4806,4,0),(9404,'06442',5065,5066,4,0),(9405,'06443',4663,4664,4,0),(9406,'06444',5171,5172,4,0),(9407,'06445',4809,4810,4,0),(9408,'06450',5053,5054,4,0),(9409,'06458',5183,5184,4,0),(9410,'06459',4657,4658,4,0),(9411,'06460',4659,4660,4,0),(9412,'06468',4897,4898,4,0),(9413,'06469',4843,4844,4,0),(9414,'06470',4791,4792,4,0),(9415,'06473',5219,5220,4,0),(9416,'06474',5167,5168,4,0),(9417,'06475',4983,4984,4,0),(9418,'06476',5007,5008,4,0),(9419,'06477',5027,5028,4,0),(9420,'06478',4913,4914,4,0),(9421,'06479',4705,4706,4,0),(9422,'06480',4953,4954,4,0),(9423,'06486',4865,4866,4,0),(9424,'06487',4697,4698,4,0),(9425,'06488',4673,4674,4,0),(9426,'06489',4955,4956,4,0),(9427,'06490',5023,5024,4,0),(9428,'06498',4889,4890,4,0),(9429,'06499',4957,4958,4,0),(9430,'06500',5089,5090,4,0),(9431,'06510',4521,4522,4,0),(9432,'06518',4839,4840,4,0),(9433,'06519',4523,4524,4,0),(9434,'06600',4635,4636,4,0),(9435,'06610',5011,5012,4,0),(9436,'06611',5269,5270,4,0),(9437,'06612',4667,4668,4,0),(9438,'06613',4613,4614,4,0),(9439,'06614',4637,4638,4,0),(9440,'06615',4615,4616,4,0),(9441,'06620',4741,4742,4,0),(9442,'06630',5019,5020,4,0),(9443,'06640',5119,5120,4,0),(9444,'06650',5107,5108,4,0),(9445,'06656',4777,4778,4,0),(9446,'06657',5073,5074,4,0),(9447,'06658',5131,5132,4,0),(9448,'06659',4605,4606,4,0),(9449,'06660',4753,4754,4,0),(9450,'06670',4799,4800,4,0),(9451,'06678',5253,5254,4,0),(9452,'06679',4801,4802,4,0),(9453,'06680',4685,4686,4,0),(9454,'06689',5159,5160,4,0),(9455,'06690',4773,4774,4,0),(9456,'06692',4795,4796,4,0),(9457,'06700',5227,5228,4,0),(9458,'06710',5229,5230,4,0),(9459,'06711',4719,4720,4,0),(9460,'06712',5231,5232,4,0),(9461,'06713',4501,4502,4,0),(9462,'06714',4853,4854,4,0),(9463,'06715',5061,5062,4,0),(9464,'06716',5243,5244,4,0),(9465,'06717',5245,5246,4,0),(9466,'06717',4721,4722,4,0),(9467,'06718',5233,5234,4,0),(9468,'06720',5235,5236,4,0),(9469,'06730',4967,4968,4,0),(9470,'06730',4503,4504,4,0),(9471,'06731',4969,4970,4,0),(9472,'06740',5003,5004,4,0),(9473,'06750',4999,5000,4,0),(9474,'06760',4971,4972,4,0),(9475,'06770',4677,4678,4,0),(9476,'06800',4929,4930,4,0),(9477,'06810',4645,4646,4,0),(9478,'06820',4709,4710,4,0),(9479,'06830',40993,40994,4,0),(9480,'06840',4517,4518,4,0),(9481,'06850',4547,4548,4,0),(9482,'06860',4733,4734,4,0),(9483,'06870',4847,4848,4,0),(9484,'06880',5139,5140,4,0),(9485,'06890',5207,5208,4,0),(9486,'06891',4933,4934,4,0),(9487,'06892',5151,5152,4,0),(9488,'06893',5085,5086,4,0),(9489,'06894',4535,4536,4,0),(9490,'06894',4725,4726,4,0),(9491,'06900',4883,4884,4,0),(9492,'06906',5041,5042,4,0),(9493,'06907',4943,4944,4,0),(9494,'06908',4945,4946,4,0),(9495,'06909',5147,5148,4,0),(9496,'06910',4781,4782,4,0),(9497,'06919',5015,5016,4,0),(9498,'06920',4555,4556,4,0),(9499,'06927',5203,5204,4,0),(9500,'06928',4905,4906,4,0),(9501,'06929',4557,4558,4,0),(9502,'06930',4619,4620,4,0),(9503,'06939',4901,4902,4,0),(9504,'06940',4513,4514,4,0),(9505,'06950',5215,5216,4,0),(9506,'06960',4681,4682,4,0),(9507,'06970',5057,5058,4,0),(9508,'06980',4761,4762,4,0),(9509,'07001',5537,5538,4,0),(9510,'07002',5539,5540,4,0),(9511,'07003',5541,5542,4,0),(9512,'07004',5543,5544,4,0),(9513,'07005',5545,5546,4,0),(9514,'07006',5547,5548,4,0),(9515,'07007',5549,5550,4,0),(9516,'07008',5551,5552,4,0),(9517,'07009',5553,5554,4,0),(9518,'07010',5391,5392,4,0),(9519,'07010',5555,5556,4,0),(9520,'07011',5557,5558,4,0),(9521,'07012',5559,5560,4,0),(9522,'07013',5561,5562,4,0),(9523,'07014',5563,5564,4,0),(9524,'07015',5565,5566,4,0),(9525,'07071',5567,5568,4,0),(9526,'07100',5693,5694,4,0),(9527,'07101',5695,5696,4,0),(9528,'07108',5697,5698,4,0),(9529,'07109',5471,5472,4,0),(9530,'07110',5393,5394,4,0),(9531,'07120',5569,5570,4,0),(9532,'07140',5673,5674,4,0),(9533,'07141',5523,5524,4,0),(9534,'07142',5627,5628,4,0),(9535,'07143',5675,5676,4,0),(9536,'07144',5677,5678,4,0),(9537,'07144',5439,5440,4,0),(9538,'07150',5355,5356,4,0),(9539,'07157',5357,5358,4,0),(9540,'07159',5359,5360,4,0),(9541,'07160',5401,5402,4,0),(9542,'07160',5361,5362,4,0),(9543,'07170',5713,5714,4,0),(9544,'07179',5699,5700,4,0),(9545,'07179',5443,5444,4,0),(9546,'07180',5403,5404,4,0),(9547,'07181',5405,5406,4,0),(9548,'07183',5407,5408,4,0),(9549,'07184',5409,5410,4,0),(9550,'07190',5451,5452,4,0),(9551,'07190',5377,5378,4,0),(9552,'07190',5715,5716,4,0),(9553,'07191',5379,5380,4,0),(9554,'07192',5455,5456,4,0),(9555,'07193',5395,5396,4,0),(9556,'07194',5601,5602,4,0),(9557,'07195',5603,5604,4,0),(9558,'07196',5411,5412,4,0),(9559,'07198',5571,5572,4,0),(9560,'07199',5573,5574,4,0),(9561,'07200',5459,5460,4,0),(9562,'07208',5461,5462,4,0),(9563,'07209',5463,5464,4,0),(9564,'07210',5347,5348,4,0),(9565,'07220',5349,5350,4,0),(9566,'07230',5527,5528,4,0),(9567,'07240',5611,5612,4,0),(9568,'07250',5719,5720,4,0),(9569,'07259',5365,5366,4,0),(9570,'07260',5597,5598,4,0),(9571,'07300',5475,5476,4,0),(9572,'07310',5415,5416,4,0),(9573,'07311',5387,5388,4,0),(9574,'07312',5515,5516,4,0),(9575,'07313',5663,5664,4,0),(9576,'07314',5665,5666,4,0),(9577,'07315',5447,5448,4,0),(9578,'07316',5667,5668,4,0),(9579,'07320',5639,5640,4,0),(9580,'07330',5435,5436,4,0),(9581,'07340',5339,5340,4,0),(9582,'07349',5397,5398,4,0),(9583,'07350',5383,5384,4,0),(9584,'07360',5483,5484,4,0),(9585,'07369',5669,5670,4,0),(9586,'07400',5343,5344,4,0),(9587,'07420',5607,5608,4,0),(9588,'07430',5487,5488,4,0),(9589,'07440',5531,5532,4,0),(9590,'07450',5631,5632,4,0),(9591,'07458',5633,5634,4,0),(9592,'07458',5533,5534,4,0),(9593,'07459',5635,5636,4,0),(9594,'07460',5589,5590,4,0),(9595,'07469',5591,5592,4,0),(9596,'07470',5593,5594,4,0),(9597,'07500',5501,5502,4,0),(9598,'07509',5503,5504,4,0),(9599,'07510',5689,5690,4,0),(9600,'07511',5679,5680,4,0),(9601,'07518',5479,5480,4,0),(9602,'07519',5519,5520,4,0),(9603,'07520',5585,5586,4,0),(9604,'07529',5367,5368,4,0),(9605,'07530',5617,5618,4,0),(9606,'07540',5619,5620,4,0),(9607,'07550',5703,5704,4,0),(9608,'07559',5705,5706,4,0),(9609,'07560',5707,5708,4,0),(9610,'07560',5621,5622,4,0),(9611,'07560',5643,5644,4,0),(9612,'07570',5371,5372,4,0),(9613,'07579',5373,5374,4,0),(9614,'07580',5427,5428,4,0),(9615,'07589',5429,5430,4,0),(9616,'07590',5431,5432,4,0),(9617,'07600',5491,5492,4,0),(9618,'07600',5575,5576,4,0),(9619,'07608',5577,5578,4,0),(9620,'07609',5493,5494,4,0),(9621,'07610',5579,5580,4,0),(9622,'07620',5495,5496,4,0),(9623,'07629',5351,5352,4,0),(9624,'07630',5419,5420,4,0),(9625,'07638',5683,5684,4,0),(9626,'07638',5421,5422,4,0),(9627,'07639',5423,5424,4,0),(9628,'07639',5497,5498,4,0),(9629,'07640',5685,5686,4,0),(9630,'07650',5645,5646,4,0),(9631,'07659',5647,5648,4,0),(9632,'07660',5649,5650,4,0),(9633,'07669',5465,5466,4,0),(9634,'07669',5651,5652,4,0),(9635,'07670',5467,5468,4,0),(9636,'07680',5505,5506,4,0),(9637,'07687',5507,5508,4,0),(9638,'07687',5623,5624,4,0),(9639,'07688',5509,5510,4,0),(9640,'07689',5511,5512,4,0),(9641,'07690',5653,5654,4,0),(9642,'07691',5655,5656,4,0),(9643,'07700',5755,5756,4,0),(9644,'07701',5757,5758,4,0),(9645,'07702',5759,5760,4,0),(9646,'07703',5761,5762,4,0),(9647,'07710',5769,5770,4,0),(9648,'07711',5771,5772,4,0),(9649,'07712',5763,5764,4,0),(9650,'07713',5773,5774,4,0),(9651,'07714',5765,5766,4,0),(9652,'07720',5613,5614,4,0),(9653,'07720',5737,5738,4,0),(9654,'07730',5725,5726,4,0),(9655,'07740',5741,5742,4,0),(9656,'07748',5743,5744,4,0),(9657,'07749',5747,5748,4,0),(9658,'07750',5709,5710,4,0),(9659,'07750',5729,5730,4,0),(9660,'07750',5751,5752,4,0),(9661,'07760',5731,5732,4,0),(9663,'07769',5733,5734,4,0),(9664,'07800',5277,5278,4,0),(9665,'07800',5291,5292,4,0),(9666,'07800',5323,5324,4,0),(9667,'07810',5301,5302,4,0),(9668,'07811',5303,5304,4,0),(9669,'07812',5305,5306,4,0),(9670,'07814',5325,5326,4,0),(9671,'07815',5307,5308,4,0),(9672,'07816',5293,5294,4,0),(9673,'07817',5311,5312,4,0),(9674,'07818',5313,5314,4,0),(9675,'07819',5327,5328,4,0),(9676,'07820',5295,5296,4,0),(9677,'07828',5297,5298,4,0),(9678,'07829',5315,5316,4,0),(9679,'07830',5317,5318,4,0),(9680,'07839',5319,5320,4,0),(9681,'07840',5329,5330,4,0),(9682,'07849',5331,5332,4,0),(9683,'07850',5333,5334,4,0),(9684,'07850',5659,5660,4,0),(9685,'07860',5281,5282,4,0),(9686,'07870',5283,5284,4,0),(9687,'07871',5285,5286,4,0),(9688,'07872',5287,5288,4,0),(9689,'08001',5881,5882,4,0),(9690,'08002',5883,5884,4,0),(9691,'08003',5885,5886,4,0),(9692,'08004',5887,5888,4,0),(9693,'08005',5889,5890,4,0),(9694,'08006',5891,5892,4,0),(9695,'08007',5893,5894,4,0),(9696,'08008',5895,5896,4,0),(9697,'08009',5897,5898,4,0),(9698,'08010',5899,5900,4,0),(9699,'08011',5901,5902,4,0),(9700,'08012',5903,5904,4,0),(9701,'08013',5905,5906,4,0),(9702,'08014',5907,5908,4,0),(9703,'08015',5909,5910,4,0),(9704,'08016',5911,5912,4,0),(9705,'08017',5913,5914,4,0),(9706,'08018',5915,5916,4,0),(9707,'08019',5917,5918,4,0),(9708,'08020',5919,5920,4,0),(9709,'08021',5921,5922,4,0),(9710,'08022',5923,5924,4,0),(9711,'08023',5925,5926,4,0),(9712,'08024',5927,5928,4,0),(9713,'08025',5929,5930,4,0),(9714,'08026',5931,5932,4,0),(9715,'08027',5933,5934,4,0),(9716,'08028',5935,5936,4,0),(9717,'08029',5937,5938,4,0),(9718,'08030',5939,5940,4,0),(9719,'08031',5941,5942,4,0),(9720,'08032',5943,5944,4,0),(9721,'08033',5945,5946,4,0),(9722,'08034',5947,5948,4,0),(9723,'08035',5949,5950,4,0),(9724,'08036',5951,5952,4,0),(9725,'08037',5953,5954,4,0),(9726,'08038',5955,5956,4,0),(9727,'08039',5957,5958,4,0),(9728,'08040',5959,5960,4,0),(9729,'08041',5961,5962,4,0),(9730,'08042',5963,5964,4,0),(9731,'08100',6529,6530,4,0),(9732,'08104',6531,6532,4,0),(9733,'08105',6873,6874,4,0),(9734,'08106',7081,7082,4,0),(9735,'08107',6493,6494,4,0),(9736,'08110',6543,6544,4,0),(9737,'08120',6395,6396,4,0),(9738,'08130',7099,7100,4,0),(9739,'08140',6017,6018,4,0),(9740,'08146',6289,6290,4,0),(9741,'08148',6359,6360,4,0),(9742,'08150',6665,6666,4,0),(9743,'08160',6567,6568,4,0),(9744,'08161',6729,6730,4,0),(9745,'08170',6571,6572,4,0),(9746,'08172',6825,6826,4,0),(9747,'08173',6827,6828,4,0),(9748,'08174',6829,6830,4,0),(9749,'08175',6831,6832,4,0),(9750,'08178',6179,6180,4,0),(9751,'08180',6521,6522,4,0),(9752,'08181',7111,7112,4,0),(9753,'08182',6861,6862,4,0),(9754,'08183',6145,6146,4,0),(9755,'08183',6111,6112,4,0),(9756,'08183',6309,6310,4,0),(9757,'08184',6361,6362,4,0),(9758,'08184',6655,6656,4,0),(9759,'08185',6451,6452,4,0),(9760,'08186',6447,6448,4,0),(9761,'08187',7055,7056,4,0),(9762,'08188',7241,7242,4,0),(9763,'08189',6997,6998,4,0),(9764,'08190',6833,6834,4,0),(9765,'08191',6731,6732,4,0),(9766,'08192',6989,6990,4,0),(9767,'08193',6165,6166,4,0),(9768,'08194',6991,6992,4,0),(9769,'08195',6835,6836,4,0),(9770,'08196',6837,6838,4,0),(9771,'08197',6839,6840,4,0),(9772,'08198',6841,6842,4,0),(9773,'08201',6743,6744,4,0),(9774,'08202',6745,6746,4,0),(9775,'08203',6747,6748,4,0),(9776,'08204',6749,6750,4,0),(9777,'08205',6751,6752,4,0),(9778,'08206',6753,6754,4,0),(9779,'08207',6755,6756,4,0),(9780,'08208',6757,6758,4,0),(9781,'08210',5877,5878,4,0),(9782,'08211',6099,6100,4,0),(9783,'08212',6917,6918,4,0),(9784,'08213',6681,6682,4,0),(9785,'08214',5861,5862,4,0),(9786,'08220',6799,6800,4,0),(9787,'08221',7167,7168,4,0),(9788,'08222',7169,7170,4,0),(9789,'08223',7171,7172,4,0),(9790,'08224',7173,7174,4,0),(9791,'08225',7175,7176,4,0),(9792,'08226',7177,7178,4,0),(9793,'08227',7179,7180,4,0),(9794,'08228',7181,7182,4,0),(9795,'08228',6993,6994,4,0),(9796,'08230',6503,6504,4,0),(9797,'08231',7215,7216,4,0),(9798,'08232',7263,7264,4,0),(9799,'08233',7219,7220,4,0),(9800,'08240',6475,6476,4,0),(9801,'08241',6477,6478,4,0),(9802,'08242',6479,6480,4,0),(9803,'08243',6481,6482,4,0),(9804,'08250',6893,6894,4,0),(9805,'08251',7107,7108,4,0),(9806,'08251',6137,6138,4,0),(9807,'08253',7009,7010,4,0),(9808,'08254',6225,6226,4,0),(9809,'08255',6129,6130,4,0),(9810,'08256',5783,5784,4,0),(9811,'08256',6713,6714,4,0),(9812,'08259',6271,6272,4,0),(9813,'08260',7139,7140,4,0),(9814,'08261',6075,6076,4,0),(9815,'08262',6029,6030,4,0),(9816,'08263',6943,6944,4,0),(9817,'08269',6593,6594,4,0),(9818,'08269',6945,6946,4,0),(9819,'08270',6589,6590,4,0),(9820,'08271',5817,5818,4,0),(9821,'08272',6877,6878,4,0),(9822,'08273',7071,7072,4,0),(9823,'08274',6869,6870,4,0),(9824,'08275',6009,6010,4,0),(9825,'08275',6535,6536,4,0),(9826,'08278',7147,7148,4,0),(9827,'08278',6585,6586,4,0),(9828,'08279',5827,5828,4,0),(9829,'08280',6005,6006,4,0),(9830,'08281',6971,6972,4,0),(9831,'08281',6033,6034,4,0),(9832,'08281',6237,6238,4,0),(9833,'08281',24025,24026,4,0),(9834,'08281',6125,6126,4,0),(9835,'08282',6939,6940,4,0),(9836,'08282',6709,6710,4,0),(9837,'08289',6183,6184,4,0),(9838,'08289',7245,7246,4,0),(9839,'08289',24419,24420,4,0),(9840,'08290',6167,6168,4,0),(9841,'08291',6721,6722,4,0),(9842,'08292',6241,6242,4,0),(9843,'08293',6175,6176,4,0),(9844,'08294',6205,6206,4,0),(9845,'08295',7013,7014,4,0),(9846,'08296',6103,6104,4,0),(9847,'08297',6133,6134,4,0),(9848,'08298',6485,6486,4,0),(9849,'08299',6717,6718,4,0),(9850,'08301',6507,6508,4,0),(9851,'08302',6509,6510,4,0),(9852,'08303',6511,6512,4,0),(9853,'08304',6513,6514,4,0),(9854,'08310',5813,5814,4,0),(9855,'08317',6643,6644,4,0),(9856,'08318',6199,6200,4,0),(9857,'08319',6201,6202,4,0),(9858,'08320',6213,6214,4,0),(9859,'08328',5791,5792,4,0),(9860,'08329',7163,7164,4,0),(9861,'08330',6697,6698,4,0),(9862,'08338',6693,6694,4,0),(9863,'08339',7291,7292,4,0),(9864,'08340',7295,7296,4,0),(9865,'08348',5999,6000,4,0),(9866,'08349',5995,5996,4,0),(9867,'08350',5799,5800,4,0),(9868,'08350',5803,5804,4,0),(9869,'08358',5805,5806,4,0),(9870,'08359',6885,6886,4,0),(9871,'08360',6043,6044,4,0),(9872,'08370',6021,6022,4,0),(9873,'08380',6463,6464,4,0),(9874,'08384',6001,6002,4,0),(9875,'08389',6651,6652,4,0),(9876,'08390',6555,6556,4,0),(9877,'08391',7187,7188,4,0),(9878,'08392',6787,6788,4,0),(9879,'08393',6013,6014,4,0),(9880,'08394',7017,7018,4,0),(9881,'08395',6975,6976,4,0),(9882,'08396',6809,6810,4,0),(9883,'08397',6677,6678,4,0),(9884,'08398',7103,7104,4,0),(9885,'08401',6313,6314,4,0),(9886,'08402',6315,6316,4,0),(9887,'08403',6317,6318,4,0),(9888,'08410',7283,7284,4,0),(9889,'08415',5981,5982,4,0),(9890,'08416',5983,5984,4,0),(9891,'08420',6047,6048,4,0),(9892,'08430',6419,6420,4,0),(9893,'08440',6071,6072,4,0),(9894,'08440',6051,6052,4,0),(9895,'08445',6053,6054,4,0),(9896,'08450',6455,6456,4,0),(9897,'08455',7271,7272,4,0),(9898,'08458',6919,6920,4,0),(9899,'08458',6963,6964,4,0),(9900,'08459',6791,6792,4,0),(9901,'08459',6965,6966,4,0),(9902,'08460',6967,6968,4,0),(9903,'08460',7095,7096,4,0),(9904,'08460',6849,6850,4,0),(9905,'08461',6851,6852,4,0),(9906,'08469',6575,6576,4,0),(9907,'08470',6261,6262,4,0),(9908,'08470',6813,6814,4,0),(9909,'08470',6037,6038,4,0),(9910,'08470',7231,7232,4,0),(9911,'08471',7233,7234,4,0),(9912,'08472',6039,6040,4,0),(9913,'08474',6323,6324,4,0),(9914,'08476',6815,6816,4,0),(9915,'08479',6263,6264,4,0),(9916,'08480',6345,6346,4,0),(9917,'08490',7195,7196,4,0),(9918,'08495',6257,6258,4,0),(9919,'08500',7249,7250,4,0),(9920,'08503',6331,6332,4,0),(9921,'08504',6905,6906,4,0),(9922,'08505',6579,6580,4,0),(9923,'08505',7051,7052,4,0),(9924,'08506',6025,6026,4,0),(9925,'08507',7047,7048,4,0),(9926,'08508',6441,6442,4,0),(9927,'08508',6983,6984,4,0),(9928,'08509',6443,6444,4,0),(9929,'08509',7029,7030,4,0),(9930,'08510',6437,6438,4,0),(9931,'08510',6725,6726,4,0),(9932,'08511',6353,6354,4,0),(9933,'08511',7159,7160,4,0),(9934,'08512',6881,6882,4,0),(9935,'08513',6689,6690,4,0),(9936,'08514',6459,6460,4,0),(9937,'08515',6923,6924,4,0),(9938,'08516',6621,6622,4,0),(9939,'08517',7085,7086,4,0),(9940,'08518',6635,6636,4,0),(9941,'08519',7275,7276,4,0),(9942,'08519',7155,7156,4,0),(9943,'08519',6339,6340,4,0),(9944,'08519',7251,7252,4,0),(9945,'08519',6267,6268,4,0),(9946,'08519',7005,7006,4,0),(9947,'08519',6467,6468,4,0),(9948,'08519',6795,6796,4,0),(9949,'08520',6431,6432,4,0),(9950,'08521',6433,6434,4,0),(9951,'08529',6581,6582,4,0),(9952,'08530',6055,6056,4,0),(9953,'08530',6383,6384,4,0),(9954,'08540',6157,6158,4,0),(9955,'08550',5869,5870,4,0),(9956,'08551',7191,7192,4,0),(9957,'08552',7151,7152,4,0),(9958,'08553',7115,7116,4,0),(9959,'08554',7117,7118,4,0),(9960,'08559',6209,6210,4,0),(9961,'08560',6471,6472,4,0),(9962,'08569',6739,6740,4,0),(9963,'08569',6355,6356,4,0),(9964,'08570',7199,7200,4,0),(9965,'08571',7021,7022,4,0),(9966,'08572',6959,6960,4,0),(9967,'08573',6631,6632,4,0),(9968,'08580',6985,6986,4,0),(9969,'08584',7075,7076,4,0),(9970,'08587',5795,5796,4,0),(9971,'08588',7131,7132,4,0),(9972,'08589',7077,7078,4,0),(9973,'08589',6779,6780,4,0),(9974,'08589',6805,6806,4,0),(9975,'08589',6551,6552,4,0),(9976,'08589',6669,6670,4,0),(9977,'08589',7127,7128,4,0),(9978,'08590',6249,6250,4,0),(9979,'08591',5787,5788,4,0),(9980,'08592',6927,6928,4,0),(9981,'08593',7143,7144,4,0),(9982,'08600',5977,5978,4,0),(9983,'08604',6087,6088,4,0),(9984,'08605',6547,6548,4,0),(9985,'08610',5821,5822,4,0),(9986,'08611',6625,6626,4,0),(9987,'08612',6559,6560,4,0),(9988,'08613',7255,7256,4,0),(9989,'08614',6349,6350,4,0),(9990,'08619',5987,5988,4,0),(9991,'08619',6415,6416,4,0),(9992,'08619',6889,6890,4,0),(9993,'08619',6095,6096,4,0),(9994,'08619',7087,7088,4,0),(9995,'08619',6761,6762,4,0),(9996,'08619',6067,6068,4,0),(9997,'08620',7025,7026,4,0),(9998,'08629',7211,7212,4,0),(9999,'08630',5779,5780,4,0),(10000,'08635',6855,6856,4,0),(10001,'08640',6613,6614,4,0),(10002,'08650',6771,6772,4,0),(10003,'08660',5873,5874,4,0),(10004,'08670',6595,6596,4,0),(10005,'08672',6281,6282,4,0),(10006,'08673',7303,7304,4,0),(10007,'08680',6301,6302,4,0),(10008,'08690',7033,7034,4,0),(10009,'08691',6539,6540,4,0),(10010,'08692',6701,6702,4,0),(10011,'08693',6083,6084,4,0),(10012,'08694',6901,6902,4,0),(10013,'08694',6327,6328,4,0),(10014,'08695',5865,5866,4,0),(10015,'08695',6305,6306,4,0),(10016,'08696',6091,6092,4,0),(10017,'08696',6411,6412,4,0),(10018,'08697',23965,23966,4,0),(10019,'08697',6765,6766,4,0),(10020,'08698',6399,6400,4,0),(10021,'08698',6161,6162,4,0),(10022,'08699',6767,6768,4,0),(10023,'08699',7227,7228,4,0),(10024,'08699',6627,6628,4,0),(10025,'08699',5823,5824,4,0),(10026,'08699',6253,6254,4,0),(10027,'08700',6335,6336,4,0),(10028,'08710',7063,7064,4,0),(10029,'08711',6599,6600,4,0),(10030,'08712',6931,6932,4,0),(10031,'08717',5809,5810,4,0),(10032,'08717',24513,24514,4,0),(10033,'08717',6563,6564,4,0),(10034,'08718',5991,5992,4,0),(10035,'08719',6735,6736,4,0),(10036,'08719',6341,6342,4,0),(10037,'08719',6141,6142,4,0),(10038,'08720',7267,7268,4,0),(10039,'08729',6119,6120,4,0),(10040,'08730',7067,7068,4,0),(10041,'08731',5831,5832,4,0),(10042,'08731',6935,6936,4,0),(10043,'08732',6121,6122,4,0),(10044,'08732',6149,6150,4,0),(10045,'08733',6221,6222,4,0),(10046,'08734',5833,5834,4,0),(10047,'08734',6603,6604,4,0),(10048,'08735',7299,7300,4,0),(10049,'08736',6275,6276,4,0),(10050,'08737',7207,7208,4,0),(10051,'08738',6685,6686,4,0),(10052,'08739',6277,6278,4,0),(10053,'08739',7135,7136,4,0),(10054,'08740',6783,6784,4,0),(10055,'08750',6525,6526,4,0),(10056,'08753',6659,6660,4,0),(10057,'08754',6217,6218,4,0),(10058,'08755',6107,6108,4,0),(10059,'08756',6403,6404,4,0),(10060,'08757',6187,6188,4,0),(10061,'08758',6171,6172,4,0),(10062,'08759',7237,7238,4,0),(10063,'08760',6489,6490,4,0),(10064,'08769',6153,6154,4,0),(10065,'08770',7001,7002,4,0),(10066,'08770',6817,6818,4,0),(10067,'08773',6517,6518,4,0),(10068,'08775',7203,7204,4,0),(10069,'08776',6955,6956,4,0),(10070,'08777',6979,6980,4,0),(10071,'08779',6391,6392,4,0),(10072,'08780',6661,6662,4,0),(10073,'08781',6233,6234,4,0),(10074,'08782',6857,6858,4,0),(10075,'08782',6497,6498,4,0),(10076,'08783',6499,6500,4,0),(10077,'08784',6673,6674,4,0),(10078,'08785',7223,7224,4,0),(10079,'08786',6063,6064,4,0),(10080,'08787',7091,7092,4,0),(10081,'08787',6639,6640,4,0),(10082,'08787',6407,6408,4,0),(10083,'08787',6079,6080,4,0),(10084,'08788',7279,7280,4,0),(10085,'08789',6423,6424,4,0),(10086,'08790',6297,6298,4,0),(10087,'08791',6913,6914,4,0),(10088,'08792',7059,7060,4,0),(10089,'08792',6387,6388,4,0),(10090,'08793',5835,5836,4,0),(10091,'08794',6427,6428,4,0),(10092,'08795',6609,6610,4,0),(10093,'08796',6647,6648,4,0),(10094,'08797',6705,6706,4,0),(10095,'08798',6845,6846,4,0),(10096,'08798',5837,5838,4,0),(10097,'08799',6605,6606,4,0),(10098,'08800',7287,7288,4,0),(10099,'08801',7183,7184,4,0),(10100,'08810',6949,6950,4,0),(10101,'08811',6059,6060,4,0),(10102,'08812',6951,6952,4,0),(10103,'08818',6617,6618,4,0),(10104,'08820',6229,6230,4,0),(10105,'08830',6801,6802,4,0),(10106,'08840',7259,7260,4,0),(10107,'08849',6821,6822,4,0),(10108,'08850',6293,6294,4,0),(10109,'08859',5969,5970,4,0),(10110,'08860',6115,6116,4,0),(10111,'08870',7121,7122,4,0),(10112,'08871',7123,7124,4,0),(10113,'08880',6195,6196,4,0),(10114,'08901',6365,6366,4,0),(10115,'08902',6367,6368,4,0),(10116,'08903',6369,6370,4,0),(10117,'08904',6371,6372,4,0),(10118,'08905',6373,6374,4,0),(10119,'08906',6375,6376,4,0),(10120,'08907',6377,6378,4,0),(10121,'08908',6379,6380,4,0),(10122,'08911',5841,5842,4,0),(10123,'08912',5843,5844,4,0),(10124,'08913',5845,5846,4,0),(10125,'08914',5847,5848,4,0),(10126,'08915',5849,5850,4,0),(10127,'08916',5851,5852,4,0),(10128,'08917',5853,5854,4,0),(10129,'08918',5855,5856,4,0),(10130,'08921',7037,7038,4,0),(10131,'08922',7039,7040,4,0),(10132,'08923',7041,7042,4,0),(10133,'08924',7043,7044,4,0),(10134,'08930',6775,6776,4,0),(10135,'08940',6191,6192,4,0),(10136,'08950',6245,6246,4,0),(10137,'08960',6909,6910,4,0),(10138,'08970',6897,6898,4,0),(10139,'08980',6865,6866,4,0),(10140,'09001',7529,7530,4,0),(10141,'09002',7531,7532,4,0),(10142,'09003',7533,7534,4,0),(10143,'09004',8687,8688,4,0),(10144,'09004',7535,7536,4,0),(10145,'09005',7537,7538,4,0),(10146,'09006',7539,7540,4,0),(10147,'09007',7541,7542,4,0),(10148,'09100',8137,8138,4,0),(10149,'09107',7967,7968,4,0),(10150,'09107',7655,7656,4,0),(10151,'09107',7401,7402,4,0),(10152,'09107',8307,8308,4,0),(10153,'09108',8139,8140,4,0),(10154,'09108',7645,7646,4,0),(10155,'09108',8295,8296,4,0),(10156,'09108',8523,8524,4,0),(10157,'09108',9123,9124,4,0),(10158,'09109',8291,8292,4,0),(10159,'09109',8667,8668,4,0),(10160,'09109',7659,7660,4,0),(10161,'09109',9067,9068,4,0),(10162,'09110',7661,7662,4,0),(10163,'09119',7663,7664,4,0),(10164,'09119',8075,8076,4,0),(10165,'09119',9035,9036,4,0),(10166,'09119',8353,8354,4,0),(10167,'09120',8921,8922,4,0),(10168,'09121',8141,8142,4,0),(10169,'09123',8669,8670,4,0),(10170,'09124',7927,7928,4,0),(10171,'09124',8923,8924,4,0),(10172,'09125',8785,8786,4,0),(10173,'09125',8925,8926,4,0),(10174,'09125',7911,7912,4,0),(10175,'09125',8235,8236,4,0),(10176,'09125',7457,7458,4,0),(10177,'09126',7929,7930,4,0),(10178,'09126',7459,7460,4,0),(10179,'09127',7461,7462,4,0),(10180,'09127',8893,8894,4,0),(10181,'09128',8677,8678,4,0),(10182,'09128',7851,7852,4,0),(10183,'09128',8927,8928,4,0),(10184,'09128',7937,7938,4,0),(10185,'09128',8999,9000,4,0),(10186,'09128',9097,9098,4,0),(10187,'09129',8929,8930,4,0),(10188,'09130',8479,8480,4,0),(10189,'09130',8709,8710,4,0),(10190,'09131',8039,8040,4,0),(10191,'09131',8853,8854,4,0),(10192,'09131',8345,8346,4,0),(10193,'09131',7345,7346,4,0),(10194,'09133',8701,8702,4,0),(10195,'09133',8033,8034,4,0),(10196,'09133',8727,8728,4,0),(10197,'09133',8349,8350,4,0),(10198,'09133',7959,7960,4,0),(10199,'09133',8113,8114,4,0),(10200,'09133',8931,8932,4,0),(10201,'09135',8693,8694,4,0),(10202,'09136',8695,8696,4,0),(10203,'09140',8161,8162,4,0),(10204,'09140',8431,8432,4,0),(10205,'09140',8463,8464,4,0),(10206,'09141',7309,7310,4,0),(10207,'09141',8163,8164,4,0),(10208,'09142',8165,8166,4,0),(10209,'09142',8861,8862,4,0),(10210,'09143',8775,8776,4,0),(10211,'09143',8655,8656,4,0),(10212,'09144',8657,8658,4,0),(10213,'09145',8659,8660,4,0),(10214,'09145',8863,8864,4,0),(10215,'09145',8777,8778,4,0),(10216,'09146',8059,8060,4,0),(10217,'09146',8897,8898,4,0),(10218,'09146',8865,8866,4,0),(10219,'09150',8855,8856,4,0),(10220,'09150',7913,7914,4,0),(10221,'09150',8035,8036,4,0),(10222,'09159',8857,8858,4,0),(10223,'09191',8809,8810,4,0),(10224,'09191',7933,7934,4,0),(10225,'09191',9089,9090,4,0),(10226,'09192',8287,8288,4,0),(10227,'09192',7543,7544,4,0),(10228,'09192',7609,7610,4,0),(10229,'09193',7649,7650,4,0),(10230,'09193',7603,7604,4,0),(10231,'09193',7545,7546,4,0),(10232,'09193',7593,7594,4,0),(10233,'09194',7595,7596,4,0),(10234,'09194',7599,7600,4,0),(10235,'09194',8067,8068,4,0),(10236,'09194',8509,8510,4,0),(10237,'09194',7939,7940,4,0),(10238,'09195',7395,7396,4,0),(10239,'09195',8965,8966,4,0),(10240,'09195',9063,9064,4,0),(10241,'09195',8977,8978,4,0),(10242,'09197',8979,8980,4,0),(10243,'09197',7347,7348,4,0),(10244,'09197',8939,8940,4,0),(10245,'09197',8167,8168,4,0),(10246,'09197',8689,8690,4,0),(10247,'09198',7651,7652,4,0),(10248,'09198',8577,8578,4,0),(10249,'09198',7941,7942,4,0),(10250,'09199',7417,7418,4,0),(10251,'09199',8545,8546,4,0),(10252,'09199',7605,7606,4,0),(10253,'09199',7453,7454,4,0),(10254,'09199',8371,8372,4,0),(10255,'09199',7547,7548,4,0),(10256,'09199',9071,9072,4,0),(10257,'09199',7409,7410,4,0),(10258,'09199',8471,8472,4,0),(10259,'09200',8197,8198,4,0),(10260,'09210',8871,8872,4,0),(10261,'09211',8335,8336,4,0),(10262,'09211',8873,8874,4,0),(10263,'09211',8267,8268,4,0),(10264,'09211',7815,7816,4,0),(10265,'09212',8875,8876,4,0),(10266,'09212',8145,8146,4,0),(10267,'09212',8199,8200,4,0),(10268,'09213',7695,7696,4,0),(10269,'09213',8767,8768,4,0),(10270,'09213',8877,8878,4,0),(10271,'09214',7499,7500,4,0),(10272,'09215',7719,7720,4,0),(10273,'09216',7721,7722,4,0),(10274,'09217',7723,7724,4,0),(10275,'09218',8201,8202,4,0),(10276,'09218',7725,7726,4,0),(10277,'09219',8613,8614,4,0),(10278,'09219',7501,7502,4,0),(10279,'09219',7357,7358,4,0),(10280,'09219',9031,9032,4,0),(10281,'09219',8203,8204,4,0),(10282,'09219',7757,7758,4,0),(10283,'09219',7361,7362,4,0),(10284,'09219',8633,8634,4,0),(10285,'09219',8909,8910,4,0),(10286,'09220',8319,8320,4,0),(10287,'09226',7449,7450,4,0),(10288,'09226',8315,8316,4,0),(10289,'09226',7469,7470,4,0),(10290,'09226',9039,9040,4,0),(10291,'09226',7679,7680,4,0),(10292,'09226',9085,9086,4,0),(10293,'09226',8321,8322,4,0),(10294,'09226',9093,9094,4,0),(10295,'09227',7625,7626,4,0),(10296,'09227',8987,8988,4,0),(10297,'09227',7877,7878,4,0),(10298,'09227',8705,8706,4,0),(10299,'09227',7955,7956,4,0),(10300,'09228',8095,8096,4,0),(10301,'09228',9079,9080,4,0),(10302,'09228',8407,8408,4,0),(10303,'09228',8263,8264,4,0),(10304,'09228',7691,7692,4,0),(10305,'09228',8117,8118,4,0),(10306,'09230',8585,8586,4,0),(10307,'09230',7525,7526,4,0),(10308,'09230',7781,7782,4,0),(10309,'09230',7899,7900,4,0),(10310,'09230',7791,7792,4,0),(10311,'09233',7335,7336,4,0),(10312,'09239',7671,7672,4,0),(10313,'09239',7397,7398,4,0),(10314,'09239',7667,7668,4,0),(10315,'09239',7783,7784,4,0),(10316,'09239',7327,7328,4,0),(10317,'09240',7509,7510,4,0),(10318,'09244',7551,7552,4,0),(10319,'09244',7819,7820,4,0),(10320,'09244',8427,8428,4,0),(10321,'09245',9131,9132,4,0),(10322,'09245',8805,8806,4,0),(10323,'09245',7511,7512,4,0),(10324,'09245',7855,7856,4,0),(10325,'09245',7495,7496,4,0),(10326,'09246',8269,8270,4,0),(10327,'09246',8079,8080,4,0),(10328,'09246',8055,8056,4,0),(10329,'09246',8391,8392,4,0),(10330,'09246',8367,8368,4,0),(10331,'09246',7587,7588,4,0),(10332,'09246',8423,8424,4,0),(10333,'09246',8535,8536,4,0),(10334,'09247',7847,7848,4,0),(10335,'09247',8573,8574,4,0),(10336,'09248',8501,8502,4,0),(10337,'09248',7433,7434,4,0),(10338,'09248',7473,7474,4,0),(10339,'09248',7513,7514,4,0),(10340,'09248',8397,8398,4,0),(10341,'09248',7613,7614,4,0),(10342,'09249',8247,8248,4,0),(10343,'09249',8271,8272,4,0),(10344,'09249',8081,8082,4,0),(10345,'09249',8023,8024,4,0),(10346,'09249',8917,8918,4,0),(10347,'09249',7323,7324,4,0),(10348,'09249',7515,7516,4,0),(10349,'09250',7475,7476,4,0),(10350,'09251',7749,7750,4,0),(10351,'09252',8211,8212,4,0),(10352,'09257',8951,8952,4,0),(10353,'09258',8763,8764,4,0),(10354,'09258',7629,7630,4,0),(10355,'09258',7777,7778,4,0),(10356,'09258',7477,7478,4,0),(10357,'09258',8849,8850,4,0),(10358,'09258',8953,8954,4,0),(10359,'09258',7331,7332,4,0),(10360,'09258',9003,9004,4,0),(10361,'09259',7945,7946,4,0),(10362,'09259',7465,7466,4,0),(10363,'09259',7799,7800,4,0),(10364,'09259',7633,7634,4,0),(10365,'09259',8487,8488,4,0),(10366,'09259',9107,9108,4,0),(10367,'09259',8491,8492,4,0),(10368,'09260',8401,8402,4,0),(10369,'09267',7795,7796,4,0),(10370,'09267',7479,7480,4,0),(10371,'09268',8473,8474,4,0),(10372,'09268',8403,8404,4,0),(10373,'09268',8961,8962,4,0),(10374,'09268',8597,8598,4,0),(10375,'09268',8609,8610,4,0),(10376,'09268',8913,8914,4,0),(10377,'09269',8475,8476,4,0),(10378,'09270',8493,8494,4,0),(10379,'09270',7683,7684,4,0),(10380,'09271',8459,8460,4,0),(10381,'09272',7481,7482,4,0),(10382,'09272',7807,7808,4,0),(10383,'09280',7759,7760,4,0),(10384,'09280',8327,8328,4,0),(10385,'09280',7617,7618,4,0),(10386,'09285',8829,8830,4,0),(10387,'09290',8435,8436,4,0),(10388,'09290',7811,7812,4,0),(10389,'09292',7413,7414,4,0),(10390,'09292',8223,8224,4,0),(10391,'09292',8941,8942,4,0),(10392,'09292',8625,8626,4,0),(10393,'09292',7687,7688,4,0),(10394,'09292',8443,8444,4,0),(10395,'09292',8637,8638,4,0),(10396,'09292',7517,7518,4,0),(10397,'09293',7521,7522,4,0),(10398,'09293',8205,8206,4,0),(10399,'09294',8011,8012,4,0),(10400,'09294',7727,7728,4,0),(10401,'09300',8531,8532,4,0),(10402,'09310',9075,9076,4,0),(10403,'09310',8753,8754,4,0),(10404,'09310',8757,8758,4,0),(10405,'09311',8259,8260,4,0),(10406,'09311',8007,8008,4,0),(10407,'09312',7365,7366,4,0),(10408,'09312',8759,8760,4,0),(10409,'09314',8935,8936,4,0),(10410,'09314',8339,8340,4,0),(10411,'09315',7823,7824,4,0),(10412,'09315',7835,7836,4,0),(10413,'09315',7999,8000,4,0),(10414,'09316',7907,7908,4,0),(10415,'09316',7491,7492,4,0),(10416,'09317',8099,8100,4,0),(10417,'09317',8589,8590,4,0),(10418,'09317',8341,8342,4,0),(10419,'09318',7831,7832,4,0),(10420,'09318',8797,8798,4,0),(10421,'09318',8243,8244,4,0),(10422,'09320',8085,8086,4,0),(10423,'09320',7711,7712,4,0),(10424,'09320',8801,8802,4,0),(10425,'09330',8089,8090,4,0),(10426,'09338',8905,8906,4,0),(10427,'09339',9081,9082,4,0),(10428,'09339',9015,9016,4,0),(10429,'09339',9119,9120,4,0),(10430,'09339',8995,8996,4,0),(10431,'09340',8043,8044,4,0),(10432,'09341',8601,8602,4,0),(10433,'09341',8731,8732,4,0),(10434,'09341',8045,8046,4,0),(10435,'09342',8747,8748,4,0),(10436,'09342',8621,8622,4,0),(10437,'09342',8363,8364,4,0),(10438,'09343',8969,8970,4,0),(10439,'09344',8539,8540,4,0),(10440,'09344',8957,8958,4,0),(10441,'09345',8541,8542,4,0),(10442,'09345',7949,7950,4,0),(10443,'09345',8749,8750,4,0),(10444,'09345',7421,7422,4,0),(10445,'09346',8121,8122,4,0),(10446,'09346',7739,7740,4,0),(10447,'09347',8451,8452,4,0),(10448,'09347',7741,7742,4,0),(10449,'09347',8505,8506,4,0),(10450,'09347',8411,8412,4,0),(10451,'09347',8047,8048,4,0),(10452,'09348',8049,8050,4,0),(10453,'09348',8455,8456,4,0),(10454,'09348',8251,8252,4,0),(10455,'09348',7675,7676,4,0),(10456,'09348',8673,8674,4,0),(10457,'09349',7699,7700,4,0),(10458,'09349',8051,8052,4,0),(10459,'09349',7703,7704,4,0),(10460,'09349',7787,7788,4,0),(10461,'09349',8375,8376,4,0),(10462,'09349',8447,8448,4,0),(10463,'09350',8641,8642,4,0),(10464,'09350',7555,7556,4,0),(10465,'09350',8283,8284,4,0),(10466,'09350',7425,7426,4,0),(10467,'09351',8069,8070,4,0),(10468,'09351',7885,7886,4,0),(10469,'09352',7745,7746,4,0),(10470,'09353',8629,8630,4,0),(10471,'09354',8387,8388,4,0),(10472,'09370',7369,7370,4,0),(10473,'09370',8419,8420,4,0),(10474,'09370',7859,7860,4,0),(10475,'09390',8617,8618,4,0),(10476,'09390',8991,8992,4,0),(10477,'09390',8735,8736,4,0),(10478,'09390',8091,8092,4,0),(10479,'09391',7641,7642,4,0),(10480,'09400',7371,7372,4,0),(10481,'09410',8357,8358,4,0),(10482,'09410',7735,7736,4,0),(10483,'09410',7377,7378,4,0),(10484,'09430',7921,7922,4,0),(10485,'09436',7871,7872,4,0),(10486,'09440',8681,8682,4,0),(10487,'09441',8683,8684,4,0),(10488,'09442',8717,8718,4,0),(10489,'09443',8973,8974,4,0),(10490,'09443',7863,7864,4,0),(10491,'09450',7429,7430,4,0),(10492,'09450',7373,7374,4,0),(10493,'09450',7889,7890,4,0),(10494,'09450',9027,9028,4,0),(10495,'09451',7391,7392,4,0),(10496,'09451',7381,7382,4,0),(10497,'09451',7563,7564,4,0),(10498,'09451',7387,7388,4,0),(10499,'09453',8983,8984,4,0),(10500,'09453',8793,8794,4,0),(10501,'09453',8781,8782,4,0),(10502,'09454',7923,7924,4,0),(10503,'09454',8415,8416,4,0),(10504,'09460',8193,8194,4,0),(10505,'09461',7839,7840,4,0),(10506,'09462',7315,7316,4,0),(10507,'09462',7881,7882,4,0),(10508,'09462',8239,8240,4,0),(10509,'09462',8019,8020,4,0),(10510,'09462',8331,8332,4,0),(10511,'09463',7873,7874,4,0),(10512,'09471',8027,8028,4,0),(10513,'09471',7827,7828,4,0),(10514,'09471',8605,8606,4,0),(10515,'09471',7843,7844,4,0),(10516,'09490',7505,7506,4,0),(10517,'09490',8359,8360,4,0),(10518,'09490',9127,9128,4,0),(10519,'09490',8581,8582,4,0),(10520,'09491',8789,8790,4,0),(10521,'09491',8029,8030,4,0),(10522,'09491',7803,7804,4,0),(10523,'09493',7567,7568,4,0),(10524,'09493',8739,8740,4,0),(10525,'09500',8125,8126,4,0),(10526,'09510',8815,8816,4,0),(10527,'09510',7979,7980,4,0),(10528,'09511',7985,7986,4,0),(10529,'09511',7487,7488,4,0),(10530,'09511',8817,8818,4,0),(10531,'09512',8127,8128,4,0),(10532,'09512',8819,8820,4,0),(10533,'09513',8129,8130,4,0),(10534,'09513',9043,9044,4,0),(10535,'09514',8155,8156,4,0),(10536,'09514',8131,8132,4,0),(10537,'09514',7981,7982,4,0),(10538,'09515',8147,8148,4,0),(10539,'09515',8133,8134,4,0),(10540,'09530',8273,8274,4,0),(10541,'09540',8769,8770,4,0),(10542,'09545',8831,8832,4,0),(10543,'09549',8771,8772,4,0),(10544,'09549',8879,8880,4,0),(10545,'09549',8149,8150,4,0),(10546,'09549',9045,9046,4,0),(10547,'09550',9047,9048,4,0),(10548,'09551',8867,8868,4,0),(10549,'09551',8061,8062,4,0),(10550,'09553',9049,9050,4,0),(10551,'09554',9051,9052,4,0),(10552,'09554',8275,8276,4,0),(10553,'09555',9053,9054,4,0),(10554,'09556',9055,9056,4,0),(10555,'09557',8173,8174,4,0),(10556,'09557',9057,9058,4,0),(10557,'09557',8181,8182,4,0),(10558,'09558',9059,9060,4,0),(10559,'09558',8823,8824,4,0),(10560,'09559',8189,8190,4,0),(10561,'09559',8063,8064,4,0),(10562,'09559',8277,8278,4,0),(10563,'09560',7767,7768,4,0),(10564,'09566',7769,7770,4,0),(10565,'09567',7771,7772,4,0),(10566,'09567',8175,8176,4,0),(10567,'09568',8177,8178,4,0),(10568,'09569',7773,7774,4,0),(10569,'09569',8157,8158,4,0),(10570,'09569',8833,8834,4,0),(10571,'09570',7405,7406,4,0),(10572,'09570',7351,7352,4,0),(10573,'09571',7337,7338,4,0),(10574,'09571',8883,8884,4,0),(10575,'09571',7353,7354,4,0),(10576,'09572',8885,8886,4,0),(10577,'09572',8825,8826,4,0),(10578,'09572',7339,7340,4,0),(10579,'09573',8183,8184,4,0),(10580,'09574',8185,8186,4,0),(10581,'09580',8835,8836,4,0),(10582,'09585',8837,8838,4,0),(10583,'09586',8839,8840,4,0),(10584,'09587',8841,8842,4,0),(10585,'09588',8843,8844,4,0),(10586,'09589',8323,8324,4,0),(10587,'09589',8845,8846,4,0),(10588,'09591',8811,8812,4,0),(10589,'09591',8169,8170,4,0),(10590,'09592',7311,7312,4,0),(10591,'09592',8549,8550,4,0),(10592,'09592',8393,8394,4,0),(10593,'09592',7589,7590,4,0),(10594,'09593',7579,7580,4,0),(10595,'09593',7319,7320,4,0),(10596,'09593',8299,8300,4,0),(10597,'09593',8553,8554,4,0),(10598,'09593',8279,8280,4,0),(10599,'09593',8557,8558,4,0),(10600,'09594',8151,8152,4,0),(10601,'09600',8561,8562,4,0),(10602,'09610',7763,7764,4,0),(10603,'09610',7707,7708,4,0),(10604,'09610',8651,8652,4,0),(10605,'09611',7867,7868,4,0),(10606,'09611',7583,7584,4,0),(10607,'09611',9023,9024,4,0),(10608,'09612',8379,8380,4,0),(10609,'09612',8003,8004,4,0),(10610,'09612',7559,7560,4,0),(10611,'09612',8109,8110,4,0),(10612,'09613',8563,8564,4,0),(10613,'09613',8383,8384,4,0),(10614,'09613',9115,9116,4,0),(10615,'09613',8015,8016,4,0),(10616,'09613',7441,7442,4,0),(10617,'09613',7731,7732,4,0),(10618,'09613',8219,8220,4,0),(10619,'09614',8889,8890,4,0),(10620,'09614',7917,7918,4,0),(10621,'09614',7445,7446,4,0),(10622,'09615',8565,8566,4,0),(10623,'09615',8231,8232,4,0),(10624,'09615',8527,8528,4,0),(10625,'09615',7437,7438,4,0),(10626,'09616',8713,8714,4,0),(10627,'09617',8645,8646,4,0),(10628,'09618',8647,8648,4,0),(10629,'09619',7893,7894,4,0),(10630,'09620',8519,8520,4,0),(10631,'09620',8663,8664,4,0),(10632,'09620',8569,8570,4,0),(10633,'09620',8215,8216,4,0),(10634,'09631',7383,7384,4,0),(10635,'09640',7903,7904,4,0),(10636,'09640',9101,9102,4,0),(10637,'09640',7621,7622,4,0),(10638,'09640',7989,7990,4,0),(10639,'09640',8721,8722,4,0),(10640,'09640',8103,8104,4,0),(10641,'09640',7971,7972,4,0),(10642,'09640',8593,8594,4,0),(10643,'09640',8945,8946,4,0),(10644,'09640',7975,7976,4,0),(10645,'09641',7753,7754,4,0),(10646,'09642',8105,8106,4,0),(10647,'09642',8071,8072,4,0),(10648,'09645',8743,8744,4,0),(10649,'09646',9103,9104,4,0),(10650,'09647',8511,8512,4,0),(10651,'09649',8311,8312,4,0),(10652,'09649',9011,9012,4,0),(10653,'09649',8723,8724,4,0),(10654,'09650',8947,8948,4,0),(10655,'09650',7571,7572,4,0),(10656,'09651',7991,7992,4,0),(10657,'09652',9019,9020,4,0),(10658,'09653',7961,7962,4,0),(10659,'09654',7963,7964,4,0),(10660,'09660',7895,7896,4,0),(10661,'09660',8467,8468,4,0),(10662,'09670',8439,8440,4,0),(10663,'09678',7951,7952,4,0),(10664,'09679',8255,8256,4,0),(10665,'09680',8303,8304,4,0),(10666,'09690',9111,9112,4,0),(10667,'09691',8227,8228,4,0),(10668,'09691',7637,7638,4,0),(10669,'09692',7575,7576,4,0),(10670,'09693',8497,8498,4,0),(10671,'10000',9287,9288,4,0),(10672,'10001',9289,9290,4,0),(10673,'10002',9291,9292,4,0),(10674,'10003',9293,9294,4,0),(10675,'10004',9295,9296,4,0),(10676,'10005',9297,9298,4,0),(10677,'10100',9707,9708,4,0),(10678,'10109',9709,9710,4,0),(10679,'10110',9653,9654,4,0),(10680,'10110',9663,9664,4,0),(10681,'10120',9649,9650,4,0),(10682,'10129',9253,9254,4,0),(10683,'10130',10183,10184,4,0),(10684,'10131',10081,10082,4,0),(10685,'10132',9219,9220,4,0),(10686,'10133',9479,9480,4,0),(10687,'10134',9337,9338,4,0),(10688,'10135',9179,9180,4,0),(10689,'10136',9341,9342,4,0),(10690,'10137',9207,9208,4,0),(10691,'10140',9523,9524,4,0),(10692,'10160',9183,9184,4,0),(10693,'10162',9385,9386,4,0),(10694,'10163',9187,9188,4,0),(10695,'10164',9299,9300,4,0),(10696,'10169',10173,10174,4,0),(10697,'10170',10167,10168,4,0),(10698,'10170',9729,9730,4,0),(10699,'10180',10067,10068,4,0),(10700,'10181',9961,9962,4,0),(10701,'10182',10141,10142,4,0),(10702,'10182',10037,10038,4,0),(10703,'10183',10041,10042,4,0),(10704,'10184',10033,10034,4,0),(10705,'10185',9245,9246,4,0),(10706,'10185',9261,9262,4,0),(10707,'10186',10007,10008,4,0),(10708,'10187',9165,9166,4,0),(10709,'10189',9899,9900,4,0),(10710,'10189',9907,9908,4,0),(10711,'10189',9891,9892,4,0),(10712,'10189',10175,10176,4,0),(10713,'10190',9675,9676,4,0),(10714,'10190',9367,9368,4,0),(10715,'10191',9931,9932,4,0),(10716,'10192',9579,9580,4,0),(10717,'10193',9965,9966,4,0),(10718,'10194',9725,9726,4,0),(10719,'10195',9301,9302,4,0),(10720,'10197',9167,9168,4,0),(10721,'10198',9921,9922,4,0),(10722,'10198',9925,9926,4,0),(10723,'10199',9303,9304,4,0),(10724,'10200',10045,10046,4,0),(10725,'10210',9667,9668,4,0),(10726,'10220',10047,10048,4,0),(10727,'10230',9551,9552,4,0),(10728,'10240',9445,9446,4,0),(10729,'10250',9493,9494,4,0),(10730,'10251',9191,9192,4,0),(10731,'10252',10015,10016,4,0),(10732,'10260',9911,9912,4,0),(10733,'10261',9873,9874,4,0),(10734,'10261',9853,9854,4,0),(10735,'10262',9141,9142,4,0),(10736,'10263',10131,10132,4,0),(10737,'10269',9875,9876,4,0),(10738,'10270',9627,9628,4,0),(10739,'10271',9835,9836,4,0),(10740,'10280',9597,9598,4,0),(10741,'10290',10049,10050,4,0),(10742,'10291',9623,9624,4,0),(10743,'10291',10051,10052,4,0),(10744,'10292',10053,10054,4,0),(10745,'10300',9749,9750,4,0),(10746,'10310',9973,9974,4,0),(10747,'10317',9439,9440,4,0),(10748,'10318',9975,9976,4,0),(10749,'10319',9977,9978,4,0),(10750,'10320',9257,9258,4,0),(10751,'10328',9483,9484,4,0),(10752,'10329',9703,9704,4,0),(10753,'10329',9333,9334,4,0),(10754,'10329',10061,10062,4,0),(10755,'10330',10157,10158,4,0),(10756,'10331',9363,9364,4,0),(10757,'10331',10159,10160,4,0),(10758,'10332',10077,10078,4,0),(10759,'10332',10063,10064,4,0),(10760,'10333',9513,9514,4,0),(10761,'10334',9799,9800,4,0),(10762,'10335',9795,9796,4,0),(10763,'10340',9419,9420,4,0),(10764,'10341',9753,9754,4,0),(10765,'10350',9215,9216,4,0),(10766,'10359',9883,9884,4,0),(10767,'10359',9575,9576,4,0),(10768,'10360',9399,9400,4,0),(10769,'10370',9459,9460,4,0),(10770,'10370',9557,9558,4,0),(10771,'10371',9879,9880,4,0),(10772,'10372',9269,9270,4,0),(10773,'10373',9271,9272,4,0),(10774,'10374',9761,9762,4,0),(10775,'10380',9601,9602,4,0),(10776,'10390',9943,9944,4,0),(10777,'10391',9887,9888,4,0),(10778,'10392',9249,9250,4,0),(10779,'10392',9467,9468,4,0),(10780,'10393',10073,10074,4,0),(10781,'10394',9713,9714,4,0),(10782,'10394',9241,9242,4,0),(10783,'10400',9607,9608,4,0),(10784,'10410',9229,9230,4,0),(10785,'10411',9787,9788,4,0),(10786,'10412',9497,9498,4,0),(10787,'10413',10029,10030,4,0),(10788,'10414',9441,9442,4,0),(10789,'10415',10089,10090,4,0),(10790,'10420',9981,9982,4,0),(10791,'10430',9455,9456,4,0),(10792,'10440',9195,9196,4,0),(10793,'10450',9611,9612,4,0),(10794,'10459',9547,9548,4,0),(10795,'10460',9655,9656,4,0),(10796,'10470',10147,10148,4,0),(10797,'10480',9659,9660,4,0),(10798,'10484',10113,10114,4,0),(10799,'10490',10105,10106,4,0),(10800,'10490',10149,10150,4,0),(10801,'10491',9969,9970,4,0),(10802,'10492',10119,10120,4,0),(10803,'10493',9869,9870,4,0),(10804,'10500',10091,10092,4,0),(10805,'10509',10093,10094,4,0),(10806,'10510',9927,9928,4,0),(10807,'10511',9353,9354,4,0),(10808,'10512',9563,9564,4,0),(10809,'10513',9427,9428,4,0),(10810,'10514',10095,10096,4,0),(10811,'10515',10097,10098,4,0),(10812,'10516',10099,10100,4,0),(10813,'10519',10101,10102,4,0),(10814,'10520',9989,9990,4,0),(10815,'10520',9411,9412,4,0),(10816,'10528',9957,9958,4,0),(10817,'10529',9671,9672,4,0),(10818,'10530',9951,9952,4,0),(10819,'10540',9717,9718,4,0),(10820,'10550',9211,9212,4,0),(10821,'10560',9567,9568,4,0),(10822,'10570',9895,9896,4,0),(10823,'10580',9699,9700,4,0),(10824,'10590',9681,9682,4,0),(10825,'10591',9991,9992,4,0),(10826,'10591',9683,9684,4,0),(10827,'10591',9553,9554,4,0),(10828,'10592',9395,9396,4,0),(10829,'10593',9369,9370,4,0),(10830,'10600',9827,9828,4,0),(10831,'10610',9279,9280,4,0),(10832,'10611',9999,10000,4,0),(10833,'10612',9619,9620,4,0),(10834,'10613',9745,9746,4,0),(10835,'10614',10057,10058,4,0),(10836,'10615',9823,9824,4,0),(10837,'10616',9539,9540,4,0),(10838,'10616',9403,9404,4,0),(10839,'10616',9283,9284,4,0),(10840,'10617',36273,36274,4,0),(10841,'10617',9471,9472,4,0),(10842,'10620',9321,9322,4,0),(10843,'10623',9323,9324,4,0),(10844,'10623',9765,9766,4,0),(10845,'10624',9325,9326,4,0),(10846,'10624',9643,9644,4,0),(10847,'10625',9645,9646,4,0),(10848,'10626',9767,9768,4,0),(10849,'10627',9769,9770,4,0),(10850,'10628',9771,9772,4,0),(10851,'10628',9381,9382,4,0),(10852,'10629',9327,9328,4,0),(10853,'10629',9773,9774,4,0),(10854,'10630',9329,9330,4,0),(10855,'10630',9373,9374,4,0),(10856,'10630',9815,9816,4,0),(10857,'10638',9817,9818,4,0),(10858,'10639',9819,9820,4,0),(10859,'10640',9375,9376,4,0),(10860,'10649',9639,9640,4,0),(10861,'10649',9377,9378,4,0),(10862,'10650',9157,9158,4,0),(10863,'10660',9783,9784,4,0),(10864,'10660',9915,9916,4,0),(10865,'10660',9777,9778,4,0),(10866,'10661',9917,9918,4,0),(10867,'10662',9691,9692,4,0),(10868,'10663',9431,9432,4,0),(10869,'10663',9603,9604,4,0),(10870,'10664',9721,9722,4,0),(10871,'10665',9541,9542,4,0),(10872,'10666',9153,9154,4,0),(10873,'10666',9939,9940,4,0),(10874,'10667',9779,9780,4,0),(10875,'10670',9357,9358,4,0),(10876,'10671',9829,9830,4,0),(10877,'10671',9203,9204,4,0),(10878,'10671',9359,9360,4,0),(10879,'10672',10085,10086,4,0),(10880,'10680',9685,9686,4,0),(10881,'10690',9487,9488,4,0),(10882,'10690',9831,9832,4,0),(10883,'10690',9161,9162,4,0),(10884,'10691',9489,9490,4,0),(10885,'10692',9531,9532,4,0),(10886,'10693',9859,9860,4,0),(10887,'10694',9993,9994,4,0),(10888,'10694',10019,10020,4,0),(10889,'10695',9953,9954,4,0),(10890,'10696',9505,9506,4,0),(10891,'10696',9237,9238,4,0),(10892,'10697',9995,9996,4,0),(10893,'10697',9983,9984,4,0),(10894,'10697',9687,9688,4,0),(10895,'10700',9571,9572,4,0),(10896,'10701',35205,35206,4,0),(10897,'10710',10169,10170,4,0),(10898,'10711',9635,9636,4,0),(10899,'10712',9543,9544,4,0),(10900,'10720',10153,10154,4,0),(10901,'10728',9615,9616,4,0),(10902,'10729',9275,9276,4,0),(10903,'10730',9407,9408,4,0),(10904,'10739',9947,9948,4,0),(10905,'10740',9199,9200,4,0),(10906,'10748',9137,9138,4,0),(10907,'10749',9501,9502,4,0),(10908,'10750',9233,9234,4,0),(10909,'10759',9631,9632,4,0),(10910,'10800',9449,9450,4,0),(10911,'10810',10069,10070,4,0),(10912,'10810',9733,9734,4,0),(10913,'10811',9741,9742,4,0),(10914,'10811',9533,9534,4,0),(10915,'10811',9451,9452,4,0),(10916,'10812',10143,10144,4,0),(10917,'10813',9847,9848,4,0),(10918,'10814',10123,10124,4,0),(10919,'10815',9527,9528,4,0),(10920,'10816',9389,9390,4,0),(10921,'10816',9535,9536,4,0),(10922,'10817',9317,9318,4,0),(10923,'10818',9415,9416,4,0),(10924,'10818',9391,9392,4,0),(10925,'10820',9345,9346,4,0),(10926,'10824',9583,9584,4,0),(10927,'10828',9843,9844,4,0),(10928,'10829',9585,9586,4,0),(10929,'10829',9347,9348,4,0),(10930,'10829',9791,9792,4,0),(10931,'10829',9861,9862,4,0),(10932,'10830',10023,10024,4,0),(10933,'10839',10025,10026,4,0),(10934,'10840',9737,9738,4,0),(10935,'10848',10115,10116,4,0),(10936,'10849',9593,9594,4,0),(10937,'10849',9517,9518,4,0),(10938,'10850',9589,9590,4,0),(10939,'10857',9145,9146,4,0),(10940,'10858',10163,10164,4,0),(10941,'10859',9935,9936,4,0),(10942,'10860',9519,9520,4,0),(10943,'10864',10003,10004,4,0),(10944,'10865',9313,9314,4,0),(10945,'10866',9463,9464,4,0),(10946,'10867',9865,9866,4,0),(10947,'10868',9559,9560,4,0),(10948,'10869',10011,10012,4,0),(10949,'10870',9423,9424,4,0),(10950,'10879',9149,9150,4,0),(10951,'10880',10179,10180,4,0),(10952,'10881',9309,9310,4,0),(10953,'10882',9807,9808,4,0),(10954,'10883',9839,9840,4,0),(10955,'10890',10109,10110,4,0),(10956,'10891',9475,9476,4,0),(10957,'10892',9903,9904,4,0),(10958,'10893',10135,10136,4,0),(10959,'10894',10137,10138,4,0),(10960,'10895',9435,9436,4,0),(10961,'10896',9803,9804,4,0),(10962,'10897',9349,9350,4,0),(10963,'10900',9223,9224,4,0),(10964,'10910',9677,9678,4,0),(10965,'10920',9305,9306,4,0),(10966,'10930',9757,9758,4,0),(10967,'10940',9509,9510,4,0),(10968,'10950',9265,9266,4,0),(10969,'10960',10127,10128,4,0),(10970,'10970',9695,9696,4,0),(10971,'10980',9171,9172,4,0),(10972,'10989',9173,9174,4,0),(10973,'10990',9175,9176,4,0),(10974,'10991',9811,9812,4,0),(10975,'11001',10259,10260,4,0),(10976,'11002',10261,10262,4,0),(10977,'11003',10263,10264,4,0),(10978,'11004',10265,10266,4,0),(10979,'11005',10267,10268,4,0),(10980,'11006',10269,10270,4,0),(10981,'11007',10271,10272,4,0),(10982,'11008',10273,10274,4,0),(10983,'11009',10275,10276,4,0),(10984,'11010',10277,10278,4,0),(10985,'11011',10279,10280,4,0),(10986,'11012',10281,10282,4,0),(10987,'11100',10423,10424,4,0),(10988,'11130',10291,10292,4,0),(10989,'11139',10293,10294,4,0),(10990,'11140',10301,10302,4,0),(10991,'11149',10303,10304,4,0),(10992,'11150',10489,10490,4,0),(10993,'11150',10235,10236,4,0),(10994,'11158',10491,10492,4,0),(10995,'11159',10237,10238,4,0),(10996,'11159',10493,10494,4,0),(10997,'11160',10239,10240,4,0),(10998,'11170',10387,10388,4,0),(10999,'11178',10397,10398,4,0),(11000,'11179',10495,10496,4,0),(11001,'11179',10389,10390,4,0),(11002,'11180',10189,10190,4,0),(11003,'11190',10245,10246,4,0),(11004,'11201',10201,10202,4,0),(11005,'11202',10203,10204,4,0),(11006,'11203',10205,10206,4,0),(11007,'11204',10207,10208,4,0),(11008,'11205',10209,10210,4,0),(11009,'11206',10211,10212,4,0),(11010,'11207',10213,10214,4,0),(11011,'11300',10377,10378,4,0),(11012,'11300',10413,10414,4,0),(11013,'11310',10433,10434,4,0),(11014,'11311',10435,10436,4,0),(11015,'11311',10451,10452,4,0),(11016,'11312',10437,10438,4,0),(11017,'11313',10439,10440,4,0),(11018,'11314',10441,10442,4,0),(11019,'11320',10367,10368,4,0),(11020,'11330',10369,10370,4,0),(11021,'11339',10371,10372,4,0),(11022,'11340',10373,10374,4,0),(11023,'11350',10287,10288,4,0),(11024,'11360',10443,10444,4,0),(11025,'11368',10445,10446,4,0),(11026,'11369',10447,10448,4,0),(11027,'11369',10453,10454,4,0),(11028,'11370',10381,10382,4,0),(11029,'11379',10383,10384,4,0),(11030,'11380',10465,10466,4,0),(11031,'11390',10467,10468,4,0),(11032,'11390',10215,10216,4,0),(11033,'11391',10469,10470,4,0),(11034,'11391',10217,10218,4,0),(11035,'11392',10471,10472,4,0),(11036,'11393',10473,10474,4,0),(11037,'11393',10241,10242,4,0),(11038,'11400',10329,10330,4,0),(11039,'11401',10331,10332,4,0),(11040,'11402',10333,10334,4,0),(11041,'11403',10335,10336,4,0),(11042,'11404',10337,10338,4,0),(11043,'11405',10339,10340,4,0),(11044,'11406',10341,10342,4,0),(11045,'11407',10343,10344,4,0),(11046,'11408',10345,10346,4,0),(11047,'11500',10315,10316,4,0),(11048,'11510',10405,10406,4,0),(11049,'11518',10407,10408,4,0),(11050,'11519',10409,10410,4,0),(11051,'11520',10419,10420,4,0),(11052,'11540',10455,10456,4,0),(11053,'11549',10457,10458,4,0),(11054,'11550',10297,10298,4,0),(11055,'11560',10481,10482,4,0),(11056,'11570',10347,10348,4,0),(11057,'11579',10349,10350,4,0),(11058,'11580',10427,10428,4,0),(11059,'11589',10429,10430,4,0),(11060,'11590',10351,10352,4,0),(11061,'11591',10353,10354,4,0),(11062,'11592',10355,10356,4,0),(11063,'11593',10357,10358,4,0),(11064,'11594',10359,10360,4,0),(11065,'11595',10361,10362,4,0),(11066,'11596',10363,10364,4,0),(11067,'11600',10485,10486,4,0),(11068,'11610',10323,10324,4,0),(11069,'11611',10499,10500,4,0),(11070,'11612',10249,10250,4,0),(11071,'11620',10227,10228,4,0),(11072,'11630',10229,10230,4,0),(11073,'11638',10231,10232,4,0),(11074,'11639',10197,10198,4,0),(11075,'11640',10253,10254,4,0),(11076,'11648',10319,10320,4,0),(11077,'11649',10255,10256,4,0),(11078,'11650',10503,10504,4,0),(11079,'11659',10415,10416,4,0),(11080,'11660',10401,10402,4,0),(11081,'11670',10307,10308,4,0),(11082,'11679',10325,10326,4,0),(11083,'11680',10221,10222,4,0),(11084,'11687',10311,10312,4,0),(11085,'11688',10507,10508,4,0),(11086,'11689',10223,10224,4,0),(11087,'11690',10393,10394,4,0),(11088,'11691',10477,10478,4,0),(11089,'11692',10461,10462,4,0),(11090,'11693',10193,10194,4,0),(11091,'12001',11443,11444,4,0),(11092,'12002',11445,11446,4,0),(11093,'12003',11447,11448,4,0),(11094,'12004',11449,11450,4,0),(11095,'12005',11451,11452,4,0),(11096,'12006',11453,11454,4,0),(11097,'12100',11455,11456,4,0),(11098,'12110',11569,11570,4,0),(11099,'12118',11813,11814,4,0),(11100,'12119',11507,11508,4,0),(11101,'12119',11571,11572,4,0),(11102,'12120',11629,11630,4,0),(11103,'12121',11573,11574,4,0),(11104,'12122',11531,11532,4,0),(11105,'12122',11815,11816,4,0),(11106,'12123',11461,11462,4,0),(11107,'12123',11633,11634,4,0),(11108,'12124',11859,11860,4,0),(11109,'12125',11899,11900,4,0),(11110,'12126',11501,11502,4,0),(11111,'12127',11503,11504,4,0),(11112,'12130',11727,11728,4,0),(11113,'12131',11817,11818,4,0),(11114,'12132',11357,11358,4,0),(11115,'12133',11359,11360,4,0),(11116,'12134',11383,11384,4,0),(11117,'12134',11483,11484,4,0),(11118,'12135',11551,11552,4,0),(11119,'12135',11879,11880,4,0),(11120,'12140',11303,11304,4,0),(11121,'12150',11855,11856,4,0),(11122,'12159',11435,11436,4,0),(11123,'12160',11387,11388,4,0),(11124,'12161',11605,11606,4,0),(11125,'12162',11851,11852,4,0),(11126,'12163',11511,11512,4,0),(11127,'12164',11751,11752,4,0),(11128,'12165',11345,11346,4,0),(11129,'12166',11753,11754,4,0),(11130,'12170',11735,11736,4,0),(11131,'12179',11781,11782,4,0),(11132,'12180',11417,11418,4,0),(11133,'12181',11401,11402,4,0),(11134,'12182',11755,11756,4,0),(11135,'12183',11847,11848,4,0),(11136,'12184',11609,11610,4,0),(11137,'12184',11601,11602,4,0),(11138,'12185',11625,11626,4,0),(11139,'12186',11597,11598,4,0),(11140,'12190',11413,11414,4,0),(11141,'12191',11593,11594,4,0),(11142,'12192',11843,11844,4,0),(11143,'12193',11821,11822,4,0),(11144,'12193',11757,11758,4,0),(11145,'12194',11823,11824,4,0),(11146,'12200',11671,11672,4,0),(11147,'12210',11705,11706,4,0),(11148,'12220',11673,11674,4,0),(11149,'12221',11773,11774,4,0),(11150,'12222',11313,11314,4,0),(11151,'12222',11299,11300,4,0),(11152,'12223',11769,11770,4,0),(11153,'12224',11863,11864,4,0),(11154,'12224',11363,11364,4,0),(11155,'12225',11543,11544,4,0),(11156,'12225',11797,11798,4,0),(11157,'12230',11831,11832,4,0),(11158,'12230',11789,11790,4,0),(11159,'12230',11523,11524,4,0),(11160,'12230',11527,11528,4,0),(11161,'12230',11349,11350,4,0),(11162,'12231',11495,11496,4,0),(11163,'12232',11341,11342,4,0),(11164,'12232',11497,11498,4,0),(11165,'12232',11805,11806,4,0),(11166,'12300',11653,11654,4,0),(11167,'12310',11535,11536,4,0),(11168,'12311',11895,11896,4,0),(11169,'12311',11871,11872,4,0),(11170,'12311',11681,11682,4,0),(11171,'12312',11667,11668,4,0),(11172,'12312',11585,11586,4,0),(11173,'12312',11785,11786,4,0),(11174,'12315',11835,11836,4,0),(11175,'12317',11557,11558,4,0),(11176,'12318',11697,11698,4,0),(11177,'12318',11491,11492,4,0),(11178,'12319',11431,11432,4,0),(11179,'12320',11731,11732,4,0),(11180,'12330',11721,11722,4,0),(11181,'12330',11809,11810,4,0),(11182,'12340',11577,11578,4,0),(11183,'12350',11427,11428,4,0),(11184,'12360',11889,11890,4,0),(11185,'12370',11891,11892,4,0),(11186,'12400',11743,11744,4,0),(11187,'12410',11337,11338,4,0),(11188,'12412',11745,11746,4,0),(11189,'12412',11553,11554,4,0),(11190,'12413',11329,11330,4,0),(11191,'12413',11439,11440,4,0),(11192,'12414',11747,11748,4,0),(11193,'12414',11321,11322,4,0),(11194,'12414',11827,11828,4,0),(11195,'12415',11547,11548,4,0),(11196,'12415',11637,11638,4,0),(11197,'12420',11371,11372,4,0),(11198,'12428',11701,11702,4,0),(11199,'12428',11867,11868,4,0),(11200,'12428',11539,11540,4,0),(11201,'12429',11693,11694,4,0),(11202,'12429',11515,11516,4,0),(11203,'12430',11375,11376,4,0),(11204,'12431',11793,11794,4,0),(11205,'12440',11469,11470,4,0),(11206,'12447',11645,11646,4,0),(11207,'12448',11649,11650,4,0),(11208,'12449',11379,11380,4,0),(11209,'12449',11561,11562,4,0),(11210,'12449',11685,11686,4,0),(11211,'12450',11565,11566,4,0),(11212,'12460',11883,11884,4,0),(11213,'12469',11777,11778,4,0),(11214,'12469',11717,11718,4,0),(11215,'12469',11885,11886,4,0),(11216,'12470',11657,11658,4,0),(11217,'12480',11761,11762,4,0),(11218,'12489',11765,11766,4,0),(11219,'12490',11367,11368,4,0),(11220,'12499',11487,11488,4,0),(11221,'12500',11875,11876,4,0),(11222,'12510',11723,11724,4,0),(11223,'12511',11709,11710,4,0),(11224,'12512',11711,11712,4,0),(11225,'12513',11465,11466,4,0),(11226,'12520',11661,11662,4,0),(11227,'12526',11617,11618,4,0),(11228,'12527',11353,11354,4,0),(11229,'12528',11519,11520,4,0),(11230,'12529',11663,11664,4,0),(11231,'12530',11391,11392,4,0),(11232,'12530',11409,11410,4,0),(11233,'12539',11621,11622,4,0),(11234,'12540',11839,11840,4,0),(11235,'12549',11405,11406,4,0),(11236,'12550',11325,11326,4,0),(11237,'12560',11457,11458,4,0),(11238,'12560',11397,11398,4,0),(11239,'12570',11307,11308,4,0),(11240,'12578',11473,11474,4,0),(11241,'12579',11309,11310,4,0),(11242,'12580',11393,11394,4,0),(11243,'12589',11423,11424,4,0),(11244,'12590',11333,11334,4,0),(11245,'12591',11581,11582,4,0),(11246,'12592',11477,11478,4,0),(11247,'12593',11641,11642,4,0),(11248,'12594',11677,11678,4,0),(11249,'12595',11419,11420,4,0),(11250,'12596',11801,11802,4,0),(11251,'12597',11739,11740,4,0),(11252,'12598',11689,11690,4,0),(11253,'12599',11713,11714,4,0),(11254,'12599',11589,11590,4,0),(11255,'12600',11613,11614,4,0),(11256,'12609',11317,11318,4,0),(11257,'12952',11479,11480,4,0),(11258,'13001',12093,12094,4,0),(11259,'13002',12095,12096,4,0),(11260,'13003',12097,12098,4,0),(11261,'13004',12099,12100,4,0),(11262,'13005',12101,12102,4,0),(11263,'13097',12103,12104,4,0),(11264,'13100',12251,12252,4,0),(11265,'13107',11939,11940,4,0),(11266,'13108',12193,12194,4,0),(11267,'13109',12275,12276,4,0),(11268,'13110',12169,12170,4,0),(11269,'13114',12125,12126,4,0),(11270,'13115',11933,11934,4,0),(11271,'13116',11935,11936,4,0),(11272,'13117',12009,12010,4,0),(11273,'13118',12261,12262,4,0),(11274,'13118',12011,12012,4,0),(11275,'13120',12263,12264,4,0),(11276,'13129',12265,12266,4,0),(11277,'13130',12137,12138,4,0),(11278,'13140',12129,12130,4,0),(11279,'13150',12077,12078,4,0),(11280,'13160',12339,12340,4,0),(11281,'13170',12221,12222,4,0),(11282,'13179',12271,12272,4,0),(11283,'13180',11905,11906,4,0),(11284,'13189',11977,11978,4,0),(11285,'13190',12113,12114,4,0),(11286,'13190',12223,12224,4,0),(11287,'13191',12073,12074,4,0),(11288,'13191',12189,12190,4,0),(11289,'13192',11979,11980,4,0),(11290,'13192',12049,12050,4,0),(11291,'13193',12133,12134,4,0),(11292,'13193',12031,12032,4,0),(11293,'13193',12235,12236,4,0),(11294,'13194',12197,12198,4,0),(11295,'13194',12239,12240,4,0),(11296,'13194',12267,12268,4,0),(11297,'13194',12293,12294,4,0),(11298,'13195',12105,12106,4,0),(11299,'13195',12257,12258,4,0),(11300,'13196',12247,12248,4,0),(11301,'13196',12253,12254,4,0),(11302,'13196',12107,12108,4,0),(11303,'13197',12109,12110,4,0),(11304,'13200',12207,12208,4,0),(11305,'13210',12399,12400,4,0),(11306,'13220',12181,12182,4,0),(11307,'13230',12211,12212,4,0),(11308,'13240',12173,12174,4,0),(11309,'13247',12305,12306,4,0),(11310,'13248',11951,11952,4,0),(11311,'13249',12297,12298,4,0),(11312,'13250',12121,12122,4,0),(11313,'13260',12039,12040,4,0),(11314,'13260',11967,11968,4,0),(11315,'13270',11969,11970,4,0),(11316,'13279',12361,12362,4,0),(11317,'13300',12355,12356,4,0),(11318,'13300',11923,11924,4,0),(11319,'13310',12357,12358,4,0),(11320,'13320',12383,12384,4,0),(11321,'13326',12227,12228,4,0),(11322,'13327',12313,12314,4,0),(11323,'13328',11973,11974,4,0),(11324,'13329',12081,12082,4,0),(11325,'13330',12379,12380,4,0),(11326,'13331',12365,12366,4,0),(11327,'13332',12367,12368,4,0),(11328,'13333',12141,12142,4,0),(11329,'13340',11919,11920,4,0),(11330,'13341',12329,12330,4,0),(11331,'13342',12279,12280,4,0),(11332,'13343',12371,12372,4,0),(11333,'13344',12343,12344,4,0),(11334,'13345',12117,12118,4,0),(11335,'13350',12231,12232,4,0),(11336,'13360',12151,12152,4,0),(11337,'13370',12057,12058,4,0),(11338,'13379',12387,12388,4,0),(11339,'13380',11947,11948,4,0),(11340,'13390',11953,11954,4,0),(11341,'13391',11943,11944,4,0),(11342,'13400',11957,11958,4,0),(11343,'13410',11911,11912,4,0),(11344,'13411',12351,12352,4,0),(11345,'13412',12089,12090,4,0),(11346,'13413',11915,11916,4,0),(11347,'13414',11961,11962,4,0),(11348,'13414',12301,12302,4,0),(11349,'13415',11981,11982,4,0),(11350,'13420',12199,12200,4,0),(11351,'13427',12185,12186,4,0),(11352,'13428',12201,12202,4,0),(11353,'13428',12145,12146,4,0),(11354,'13429',12203,12204,4,0),(11355,'13430',12069,12070,4,0),(11356,'13431',12391,12392,4,0),(11357,'13432',12035,12036,4,0),(11358,'13440',12027,12028,4,0),(11359,'13449',12043,12044,4,0),(11360,'13450',12045,12046,4,0),(11361,'13459',11983,11984,4,0),(11362,'13460',11985,11986,4,0),(11363,'13470',11987,11988,4,0),(11364,'13473',11989,11990,4,0),(11365,'13473',11907,11908,4,0),(11366,'13480',11963,11964,4,0),(11367,'13490',12155,12156,4,0),(11368,'13499',12157,12158,4,0),(11369,'13500',12287,12288,4,0),(11370,'13580',11991,11992,4,0),(11371,'13590',12165,12166,4,0),(11372,'13591',12053,12054,4,0),(11373,'13592',12215,12216,4,0),(11374,'13593',12325,12326,4,0),(11375,'13594',12217,12218,4,0),(11376,'13595',12375,12376,4,0),(11377,'13596',11993,11994,4,0),(11378,'13597',12289,12290,4,0),(11379,'13598',11995,11996,4,0),(11380,'13600',11925,11926,4,0),(11381,'13610',12065,12066,4,0),(11382,'13619',12015,12016,4,0),(11383,'13620',12243,12244,4,0),(11384,'13629',12333,12334,4,0),(11385,'13630',12321,12322,4,0),(11386,'13640',12161,12162,4,0),(11387,'13640',11997,11998,4,0),(11388,'13650',12283,12284,4,0),(11389,'13660',12177,12178,4,0),(11390,'13670',12395,12396,4,0),(11391,'13679',12019,12020,4,0),(11392,'13680',12147,12148,4,0),(11393,'13690',11927,11928,4,0),(11394,'13700',12335,12336,4,0),(11395,'13710',12023,12024,4,0),(11396,'13720',11929,11930,4,0),(11397,'13730',12317,12318,4,0),(11398,'13738',12403,12404,4,0),(11399,'13739',12059,12060,4,0),(11400,'13739',12405,12406,4,0),(11401,'13740',12347,12348,4,0),(11402,'13750',12085,12086,4,0),(11403,'13760',12003,12004,4,0),(11404,'13768',12005,12006,4,0),(11405,'13768',12407,12408,4,0),(11406,'13770',12409,12410,4,0),(11407,'13779',12309,12310,4,0),(11408,'13779',12061,12062,4,0),(11409,'14001',12533,12534,4,0),(11410,'14002',12535,12536,4,0),(11411,'14003',12537,12538,4,0),(11412,'14004',12539,12540,4,0),(11413,'14005',12541,12542,4,0),(11414,'14006',12543,12544,4,0),(11415,'14007',12545,12546,4,0),(11416,'14008',12547,12548,4,0),(11417,'14009',12549,12550,4,0),(11418,'14010',12551,12552,4,0),(11419,'14011',12553,12554,4,0),(11420,'14012',12555,12556,4,0),(11421,'14013',12557,12558,4,0),(11422,'14014',12559,12560,4,0),(11423,'14015',12561,12562,4,0),(11424,'14016',12563,12564,4,0),(11425,'14029',12565,12566,4,0),(11426,'14045',12509,12510,4,0),(11427,'14071',12891,12892,4,0),(11428,'14100',12705,12706,4,0),(11429,'14110',12655,12656,4,0),(11430,'14111',12707,12708,4,0),(11431,'14112',12657,12658,4,0),(11432,'14113',12659,12660,4,0),(11433,'14115',12601,12602,4,0),(11434,'14115',12661,12662,4,0),(11435,'14120',12663,12664,4,0),(11436,'14129',12683,12684,4,0),(11437,'14129',12665,12666,4,0),(11438,'14130',12675,12676,4,0),(11439,'14140',12723,12724,4,0),(11440,'14150',12855,12856,4,0),(11441,'14190',12567,12568,4,0),(11442,'14191',12709,12710,4,0),(11443,'14192',12569,12570,4,0),(11444,'14193',12711,12712,4,0),(11445,'14193',12571,12572,4,0),(11446,'14199',12731,12732,4,0),(11447,'14200',12815,12816,4,0),(11448,'14206',12881,12882,4,0),(11449,'14207',12715,12716,4,0),(11450,'14208',12727,12728,4,0),(11451,'14209',12639,12640,4,0),(11452,'14209',12685,12686,4,0),(11453,'14209',12461,12462,4,0),(11454,'14210',12667,12668,4,0),(11455,'14210',12623,12624,4,0),(11456,'14210',12897,12898,4,0),(11457,'14220',12625,12626,4,0),(11458,'14230',12909,12910,4,0),(11459,'14240',12463,12464,4,0),(11460,'14248',12465,12466,4,0),(11461,'14248',12641,12642,4,0),(11462,'14249',12467,12468,4,0),(11463,'14249',12643,12644,4,0),(11464,'14250',12905,12906,4,0),(11465,'14260',12635,12636,4,0),(11466,'14270',12679,12680,4,0),(11467,'14280',12573,12574,4,0),(11468,'14280',12457,12458,4,0),(11469,'14290',12645,12646,4,0),(11470,'14297',12647,12648,4,0),(11471,'14298',12649,12650,4,0),(11472,'14299',12651,12652,4,0),(11473,'14300',12917,12918,4,0),(11474,'14310',12785,12786,4,0),(11475,'14320',12919,12920,4,0),(11476,'14320',12787,12788,4,0),(11477,'14320',12627,12628,4,0),(11478,'14340',12575,12576,4,0),(11479,'14350',12577,12578,4,0),(11480,'14350',12789,12790,4,0),(11481,'14400',12825,12826,4,0),(11482,'14410',12873,12874,4,0),(11483,'14412',12811,12812,4,0),(11484,'14413',12607,12608,4,0),(11485,'14420',12893,12894,4,0),(11486,'14430',12415,12416,4,0),(11487,'14439',12417,12418,4,0),(11488,'14440',12901,12902,4,0),(11489,'14440',12511,12512,4,0),(11490,'14445',12513,12514,4,0),(11491,'14445',12469,12470,4,0),(11492,'14446',12515,12516,4,0),(11493,'14447',12517,12518,4,0),(11494,'14448',12529,12530,4,0),(11495,'14449',11999,12000,4,0),(11496,'14450',12443,12444,4,0),(11497,'14460',12597,12598,4,0),(11498,'14470',12921,12922,4,0),(11499,'14470',12611,12612,4,0),(11500,'14480',12427,12428,4,0),(11501,'14490',12913,12914,4,0),(11502,'14491',12859,12860,4,0),(11503,'14500',12843,12844,4,0),(11504,'14510',12775,12776,4,0),(11505,'14511',12733,12734,4,0),(11506,'14512',12845,12846,4,0),(11507,'14520',12757,12758,4,0),(11508,'14520',12631,12632,4,0),(11509,'14530',12759,12760,4,0),(11510,'14540',12719,12720,4,0),(11511,'14546',12865,12866,4,0),(11512,'14547',12867,12868,4,0),(11513,'14548',12753,12754,4,0),(11514,'14549',12869,12870,4,0),(11515,'14550',12445,12446,4,0),(11516,'14550',12763,12764,4,0),(11517,'14600',12767,12768,4,0),(11518,'14610',12579,12580,4,0),(11519,'14610',12419,12420,4,0),(11520,'14620',12603,12604,4,0),(11521,'14630',12807,12808,4,0),(11522,'14640',12885,12886,4,0),(11523,'14650',12479,12480,4,0),(11524,'14656',12481,12482,4,0),(11525,'14659',12483,12484,4,0),(11526,'14660',12497,12498,4,0),(11527,'14670',12877,12878,4,0),(11528,'14700',12797,12798,4,0),(11529,'14709',12799,12800,4,0),(11530,'14709',12687,12688,4,0),(11531,'14710',12581,12582,4,0),(11532,'14711',12583,12584,4,0),(11533,'14719',12585,12586,4,0),(11534,'14720',12437,12438,4,0),(11535,'14729',12439,12440,4,0),(11536,'14730',12819,12820,4,0),(11537,'14730',12801,12802,4,0),(11538,'14739',12821,12822,4,0),(11539,'14740',12689,12690,4,0),(11540,'14749',12803,12804,4,0),(11541,'14800',12745,12746,4,0),(11542,'14800',12829,12830,4,0),(11543,'14810',12501,12502,4,0),(11544,'14811',12503,12504,4,0),(11545,'14811',12487,12488,4,0),(11546,'14811',12831,12832,4,0),(11547,'14812',12431,12432,4,0),(11548,'14813',12433,12434,4,0),(11549,'14814',12833,12834,4,0),(11550,'14815',12671,12672,4,0),(11551,'14815',12835,12836,4,0),(11552,'14816',12837,12838,4,0),(11553,'14816',12505,12506,4,0),(11554,'14817',12839,12840,4,0),(11555,'14820',12587,12588,4,0),(11556,'14830',12619,12620,4,0),(11557,'14840',12521,12522,4,0),(11558,'14850',12449,12450,4,0),(11559,'14850',12735,12736,4,0),(11560,'14852',12779,12780,4,0),(11561,'14857',12781,12782,4,0),(11562,'14857',12523,12524,4,0),(11563,'14858',12525,12526,4,0),(11564,'14859',12451,12452,4,0),(11565,'14860',12593,12594,4,0),(11566,'14870',12925,12926,4,0),(11567,'14880',12747,12748,4,0),(11568,'14889',12749,12750,4,0),(11569,'14900',12737,12738,4,0),(11570,'14910',12473,12474,4,0),(11571,'14911',12739,12740,4,0),(11572,'14912',12589,12590,4,0),(11573,'14913',12615,12616,4,0),(11574,'14913',12741,12742,4,0),(11575,'14914',12793,12794,4,0),(11576,'14915',12475,12476,4,0),(11577,'14920',12423,12424,4,0),(11578,'14930',12771,12772,4,0),(11579,'14930',12489,12490,4,0),(11580,'14940',12491,12492,4,0),(11581,'14940',12887,12888,4,0),(11582,'14941',12861,12862,4,0),(11583,'14949',12493,12494,4,0),(11584,'14950',12453,12454,4,0),(11585,'14950',12691,12692,4,0),(11586,'14950',12849,12850,4,0),(11587,'14960',12851,12852,4,0),(11588,'14970',12695,12696,4,0),(11589,'14978',12697,12698,4,0),(11590,'14979',12699,12700,4,0),(11591,'15001',20087,20088,4,0),(11592,'15002',20089,20090,4,0),(11593,'15003',20091,20092,4,0),(11594,'15004',20093,20094,4,0),(11595,'15005',20095,20096,4,0),(11596,'15006',20097,20098,4,0),(11597,'15007',20099,20100,4,0),(11598,'15008',20165,20166,4,0),(11599,'15008',20101,20102,4,0),(11600,'15009',20103,20104,4,0),(11601,'15010',20105,20106,4,0),(11602,'15011',20107,20108,4,0),(11603,'15100',20319,20320,4,0),(11604,'15102',20321,20322,4,0),(11605,'15105',20323,20324,4,0),(11606,'15105',20119,20120,4,0),(11607,'15106',20325,20326,4,0),(11608,'15107',20327,20328,4,0),(11609,'15108',20329,20330,4,0),(11610,'15109',20331,20332,4,0),(11611,'15110',20797,20798,4,0),(11612,'15110',20273,20274,4,0),(11613,'15111',20535,20536,4,0),(11614,'15112',20537,20538,4,0),(11615,'15113',20539,20540,4,0),(11616,'15114',20799,20800,4,0),(11617,'15115',20275,20276,4,0),(11618,'15116',20277,20278,4,0),(11619,'15117',20517,20518,4,0),(11620,'15118',20519,20520,4,0),(11621,'15119',20279,20280,4,0),(11622,'15121',20295,20296,4,0),(11623,'15121',21061,21062,4,0),(11624,'15122',20297,20298,4,0),(11625,'15123',20299,20300,4,0),(11626,'15124',20621,20622,4,0),(11627,'15125',20623,20624,4,0),(11628,'15126',20625,20626,4,0),(11629,'15126',21063,21064,4,0),(11630,'15127',21065,21066,4,0),(11631,'15128',21067,21068,4,0),(11632,'15129',21069,21070,4,0),(11633,'15130',20409,20410,4,0),(11634,'15137',20411,20412,4,0),(11635,'15138',20379,20380,4,0),(11636,'15139',20421,20422,4,0),(11637,'15140',20167,20168,4,0),(11638,'15141',20169,20170,4,0),(11639,'15142',20171,20172,4,0),(11640,'15144',20173,20174,4,0),(11641,'15145',20121,20122,4,0),(11642,'15146',20123,20124,4,0),(11643,'15147',20415,20416,4,0),(11644,'15148',20417,20418,4,0),(11645,'15149',20281,20282,4,0),(11646,'15150',21071,21072,4,0),(11647,'15150',21075,21076,4,0),(11648,'15151',20451,20452,4,0),(11649,'15152',20453,20454,4,0),(11650,'15153',20499,20500,4,0),(11651,'15154',20501,20502,4,0),(11652,'15155',20503,20504,4,0),(11653,'15160',20881,20882,4,0),(11654,'15165',20215,20216,4,0),(11655,'15166',20217,20218,4,0),(11656,'15167',20219,20220,4,0),(11657,'15168',20883,20884,4,0),(11658,'15169',20885,20886,4,0),(11659,'15170',20109,20110,4,0),(11660,'15171',20691,20692,4,0),(11661,'15172',20693,20694,4,0),(11662,'15173',20695,20696,4,0),(11663,'15174',20423,20424,4,0),(11664,'15175',20355,20356,4,0),(11665,'15176',20697,20698,4,0),(11666,'15177',20699,20700,4,0),(11667,'15178',20701,20702,4,0),(11668,'15179',20703,20704,4,0),(11669,'15180',20425,20426,4,0),(11670,'15181',20303,20304,4,0),(11671,'15182',20357,20358,4,0),(11672,'15183',20359,20360,4,0),(11673,'15184',20361,20362,4,0),(11674,'15185',20389,20390,4,0),(11675,'15186',20391,20392,4,0),(11676,'15187',20393,20394,4,0),(11677,'15188',20395,20396,4,0),(11678,'15189',20427,20428,4,0),(11679,'15190',20111,20112,4,0),(11680,'15191',20113,20114,4,0),(11681,'15192',20115,20116,4,0),(11682,'15198',20429,20430,4,0),(11683,'15199',20431,20432,4,0),(11684,'15200',20667,20668,4,0),(11685,'15201',27885,27886,4,0),(11686,'15210',20669,20670,4,0),(11687,'15211',20671,20672,4,0),(11688,'15212',20523,20524,4,0),(11689,'15213',20673,20674,4,0),(11690,'15214',20525,20526,4,0),(11691,'15215',20527,20528,4,0),(11692,'15216',20529,20530,4,0),(11693,'15218',20815,20816,4,0),(11694,'15218',20675,20676,4,0),(11695,'15218',20531,20532,4,0),(11696,'15220',20139,20140,4,0),(11697,'15228',20141,20142,4,0),(11698,'15229',20143,20144,4,0),(11699,'15230',20745,20746,4,0),(11700,'15236',20747,20748,4,0),(11701,'15237',20749,20750,4,0),(11702,'15239',20751,20752,4,0),(11703,'15240',20607,20608,4,0),(11704,'15250',20609,20610,4,0),(11705,'15256',20549,20550,4,0),(11706,'15258',20551,20552,4,0),(11707,'15259',20611,20612,4,0),(11708,'15270',20381,20382,4,0),(11709,'15280',20265,20266,4,0),(11710,'15281',20867,20868,4,0),(11711,'15282',20869,20870,4,0),(11712,'15284',20613,20614,4,0),(11713,'15286',20753,20754,4,0),(11714,'15287',20755,20756,4,0),(11715,'15288',20757,20758,4,0),(11716,'15290',20615,20616,4,0),(11717,'15291',20617,20618,4,0),(11718,'15292',20345,20346,4,0),(11719,'15293',20347,20348,4,0),(11720,'15295',20349,20350,4,0),(11721,'15296',20351,20352,4,0),(11722,'15297',20455,20456,4,0),(11723,'15298',20383,20384,4,0),(11724,'15299',20385,20386,4,0),(11725,'15300',20227,20228,4,0),(11726,'15310',20437,20438,4,0),(11727,'15313',20513,20514,4,0),(11728,'15314',20777,20778,4,0),(11729,'15315',20589,20590,4,0),(11730,'15316',20405,20406,4,0),(11731,'15317',20153,20154,4,0),(11732,'15318',20135,20136,4,0),(11733,'15319',20229,20230,4,0),(11734,'15319',20779,20780,4,0),(11735,'15319',20221,20222,4,0),(11736,'15320',20187,20188,4,0),(11737,'15324',20189,20190,4,0),(11738,'15325',20191,20192,4,0),(11739,'15326',20193,20194,4,0),(11740,'15327',20195,20196,4,0),(11741,'15328',20197,20198,4,0),(11742,'15329',20199,20200,4,0),(11743,'15330',20727,20728,4,0),(11744,'15332',20729,20730,4,0),(11745,'15337',20543,20544,4,0),(11746,'15338',20731,20732,4,0),(11747,'15339',20545,20546,4,0),(11748,'15339',20733,20734,4,0),(11749,'15340',20735,20736,4,0),(11750,'15347',20365,20366,4,0),(11751,'15349',20737,20738,4,0),(11752,'15350',20367,20368,4,0),(11753,'15357',20369,20370,4,0),(11754,'15358',20371,20372,4,0),(11755,'15359',20373,20374,4,0),(11756,'15360',20335,20336,4,0),(11757,'15365',20337,20338,4,0),(11758,'15366',20339,20340,4,0),(11759,'15367',20739,20740,4,0),(11760,'15368',20741,20742,4,0),(11761,'15369',20341,20342,4,0),(11762,'15379',20439,20440,4,0),(11763,'15380',20761,20762,4,0),(11764,'15386',20763,20764,4,0),(11765,'15387',20765,20766,4,0),(11766,'15388',20767,20768,4,0),(11767,'15389',20769,20770,4,0),(11768,'15390',20771,20772,4,0),(11769,'15391',20773,20774,4,0),(11770,'15401',20471,20472,4,0),(11771,'15402',20473,20474,4,0),(11772,'15403',20475,20476,4,0),(11773,'15404',20477,20478,4,0),(11774,'15405',20479,20480,4,0),(11775,'15406',20481,20482,4,0),(11776,'15407',20483,20484,4,0),(11777,'15489',15467,15468,4,0),(11778,'15500',20459,20460,4,0),(11779,'15509',20461,20462,4,0),(11780,'15510',20649,20650,4,0),(11781,'15520',20463,20464,4,0),(11782,'15528',20465,20466,4,0),(11783,'15530',20399,20400,4,0),(11784,'15540',20629,20630,4,0),(11785,'15541',20631,20632,4,0),(11786,'15542',21023,21024,4,0),(11787,'15543',21025,21026,4,0),(11788,'15550',21027,21028,4,0),(11789,'15551',21029,21030,4,0),(11790,'15552',21031,21032,4,0),(11791,'15553',21033,21034,4,0),(11792,'15554',21035,21036,4,0),(11793,'15555',20375,20376,4,0),(11794,'15560',20889,20890,4,0),(11795,'15561',20891,20892,4,0),(11796,'15562',20893,20894,4,0),(11797,'15563',20583,20584,4,0),(11798,'15564',20585,20586,4,0),(11799,'15565',20205,20206,4,0),(11800,'15566',20207,20208,4,0),(11801,'15567',20209,20210,4,0),(11802,'15568',20211,20212,4,0),(11803,'15569',20401,20402,4,0),(11804,'15570',20633,20634,4,0),(11805,'15572',20635,20636,4,0),(11806,'15573',20637,20638,4,0),(11807,'15576',20895,20896,4,0),(11808,'15577',20639,20640,4,0),(11809,'15577',20651,20652,4,0),(11810,'15578',20641,20642,4,0),(11811,'15579',20653,20654,4,0),(11812,'15580',20897,20898,4,0),(11813,'15582',20201,20202,4,0),(11814,'15582',20257,20258,4,0),(11815,'15587',20643,20644,4,0),(11816,'15590',20485,20486,4,0),(11817,'15591',20487,20488,4,0),(11818,'15592',20489,20490,4,0),(11819,'15593',20491,20492,4,0),(11820,'15594',20493,20494,4,0),(11821,'15595',20495,20496,4,0),(11822,'15596',20645,20646,4,0),(11823,'15598',20899,20900,4,0),(11824,'15600',20803,20804,4,0),(11825,'15607',20805,20806,4,0),(11826,'15608',20807,20808,4,0),(11827,'15608',20573,20574,4,0),(11828,'15609',20809,20810,4,0),(11829,'15609',20591,20592,4,0),(11830,'15611',20285,20286,4,0),(11831,'15612',20287,20288,4,0),(11832,'15613',20083,20084,4,0),(11833,'15614',20811,20812,4,0),(11834,'15615',21047,21048,4,0),(11835,'15616',21049,21050,4,0),(11836,'15617',20593,20594,4,0),(11837,'15619',20595,20596,4,0),(11838,'15620',20599,20600,4,0),(11839,'15621',20289,20290,4,0),(11840,'15622',20291,20292,4,0),(11841,'15623',20157,20158,4,0),(11842,'15624',20159,20160,4,0),(11843,'15625',20161,20162,4,0),(11844,'15626',20601,20602,4,0),(11845,'15627',20603,20604,4,0),(11846,'15627',20467,20468,4,0),(11847,'15630',20575,20576,4,0),(11848,'15635',20577,20578,4,0),(11849,'15637',21051,21052,4,0),(11850,'15638',21053,21054,4,0),(11851,'15639',20579,20580,4,0),(11852,'15640',20223,20224,4,0),(11853,'15650',20305,20306,4,0),(11854,'15656',21077,21078,4,0),(11855,'15659',20307,20308,4,0),(11856,'15660',20309,20310,4,0),(11857,'15668',20311,20312,4,0),(11858,'15669',20313,20314,4,0),(11859,'15670',20433,20434,4,0),(11860,'15679',20315,20316,4,0),(11861,'15680',20707,20708,4,0),(11862,'15683',20989,20990,4,0),(11863,'15684',20719,20720,4,0),(11864,'15684',20991,20992,4,0),(11865,'15684',20709,20710,4,0),(11866,'15685',20565,20566,4,0),(11867,'15685',20507,20508,4,0),(11868,'15685',20711,20712,4,0),(11869,'15686',21007,21008,4,0),(11870,'15686',20567,20568,4,0),(11871,'15686',20509,20510,4,0),(11872,'15687',20713,20714,4,0),(11873,'15687',21009,21010,4,0),(11874,'15688',20923,20924,4,0),(11875,'15688',20721,20722,4,0),(11876,'15689',20715,20716,4,0),(11877,'15689',20993,20994,4,0),(11878,'15689',20569,20570,4,0),(11879,'15690',20175,20176,4,0),(11880,'15701',20925,20926,4,0),(11881,'15702',20927,20928,4,0),(11882,'15703',20929,20930,4,0),(11883,'15704',20931,20932,4,0),(11884,'15705',20933,20934,4,0),(11885,'15706',20935,20936,4,0),(11886,'15707',20937,20938,4,0),(11887,'15800',20555,20556,4,0),(11888,'15805',20557,20558,4,0),(11889,'15806',20985,20986,4,0),(11890,'15807',21057,21058,4,0),(11891,'15808',20963,20964,4,0),(11892,'15809',20559,20560,4,0),(11893,'15810',20179,20180,4,0),(11894,'15813',20967,20968,4,0),(11895,'15814',20969,20970,4,0),(11896,'15815',20971,20972,4,0),(11897,'15816',20233,20234,4,0),(11898,'15817',20235,20236,4,0),(11899,'15818',20237,20238,4,0),(11900,'15819',20561,20562,4,0),(11901,'15819',20181,20182,4,0),(11902,'15820',20939,20940,4,0),(11903,'15821',20679,20680,4,0),(11904,'15822',20997,20998,4,0),(11905,'15823',20681,20682,4,0),(11906,'15823',20999,21000,4,0),(11907,'15824',21001,21002,4,0),(11908,'15824',20683,20684,4,0),(11909,'15825',20685,20686,4,0),(11910,'15826',20183,20184,4,0),(11911,'15828',21003,21004,4,0),(11912,'15830',20657,20658,4,0),(11913,'15837',20903,20904,4,0),(11914,'15838',20659,20660,4,0),(11915,'15839',20661,20662,4,0),(11916,'15839',20267,20268,4,0),(11917,'15839',20075,20076,4,0),(11918,'15840',20905,20906,4,0),(11919,'15841',20907,20908,4,0),(11920,'15845',20909,20910,4,0),(11921,'15846',20911,20912,4,0),(11922,'15847',20913,20914,4,0),(11923,'15848',20915,20916,4,0),(11924,'15850',21079,21080,4,0),(11925,'15851',21081,21082,4,0),(11926,'15855',21083,21084,4,0),(11927,'15856',21085,21086,4,0),(11928,'15857',21087,21088,4,0),(11929,'15858',21089,21090,4,0),(11930,'15859',21091,21092,4,0),(11931,'15860',20917,20918,4,0),(11932,'15861',20919,20920,4,0),(11933,'15862',20077,20078,4,0),(11934,'15863',20079,20080,4,0),(11935,'15863',20663,20664,4,0),(11936,'15864',20145,20146,4,0),(11937,'15865',20269,20270,4,0),(11938,'15866',20975,20976,4,0),(11939,'15870',20147,20148,4,0),(11940,'15871',21013,21014,4,0),(11941,'15872',21015,21016,4,0),(11942,'15873',21017,21018,4,0),(11943,'15874',21019,21020,4,0),(11944,'15880',21039,21040,4,0),(11945,'15881',20259,20260,4,0),(11946,'15881',21041,21042,4,0),(11947,'15882',20261,20262,4,0),(11948,'15883',20977,20978,4,0),(11949,'15884',20941,20942,4,0),(11950,'15885',21043,21044,4,0),(11951,'15886',20979,20980,4,0),(11952,'15887',20687,20688,4,0),(11953,'15888',20723,20724,4,0),(11954,'15890',20943,20944,4,0),(11955,'15891',20945,20946,4,0),(11956,'15892',20947,20948,4,0),(11957,'15893',20949,20950,4,0),(11958,'15894',20981,20982,4,0),(11959,'15895',20149,20150,4,0),(11960,'15896',20951,20952,4,0),(11961,'15897',20953,20954,4,0),(11962,'15898',20955,20956,4,0),(11963,'15899',20957,20958,4,0),(11964,'15900',20783,20784,4,0),(11965,'15910',20785,20786,4,0),(11966,'15911',20871,20872,4,0),(11967,'15912',20873,20874,4,0),(11968,'15913',20875,20876,4,0),(11969,'15914',20787,20788,4,0),(11970,'15915',20789,20790,4,0),(11971,'15916',20443,20444,4,0),(11972,'15917',20791,20792,4,0),(11973,'15920',20835,20836,4,0),(11974,'15928',20837,20838,4,0),(11975,'15930',20241,20242,4,0),(11976,'15937',20243,20244,4,0),(11977,'15938',20245,20246,4,0),(11978,'15939',20247,20248,4,0),(11979,'15940',20127,20128,4,0),(11980,'15948',20129,20130,4,0),(11981,'15949',20131,20132,4,0),(11982,'15950',20847,20848,4,0),(11983,'15959',20849,20850,4,0),(11984,'15960',20851,20852,4,0),(11985,'15965',20853,20854,4,0),(11986,'15966',20855,20856,4,0),(11987,'15967',20857,20858,4,0),(11988,'15968',20859,20860,4,0),(11989,'15969',20861,20862,4,0),(11990,'15970',20817,20818,4,0),(11991,'15978',20819,20820,4,0),(11992,'15979',20821,20822,4,0),(11993,'15980',20793,20794,4,0),(11994,'15980',20877,20878,4,0),(11995,'15981',20445,20446,4,0),(11996,'15982',20447,20448,4,0),(11997,'15983',20839,20840,4,0),(11998,'15984',20841,20842,4,0),(11999,'15985',20843,20844,4,0),(12000,'15990',20249,20250,4,0),(12001,'15991',20251,20252,4,0),(12002,'15992',20253,20254,4,0),(12003,'15993',20863,20864,4,0),(12004,'15994',20823,20824,4,0),(12005,'15995',20825,20826,4,0),(12006,'15996',20827,20828,4,0),(12007,'15998',20829,20830,4,0),(12008,'15999',20831,20832,4,0),(12009,'16001',13223,13224,4,0),(12010,'16002',13225,13226,4,0),(12011,'16003',13227,13228,4,0),(12012,'16004',13229,13230,4,0),(12013,'16043',13087,13088,4,0),(12014,'16100',13827,13828,4,0),(12015,'16111',13953,13954,4,0),(12016,'16111',12939,12940,4,0),(12017,'16113',13437,13438,4,0),(12018,'16114',13071,13072,4,0),(12019,'16118',13365,13366,4,0),(12020,'16118',13027,13028,4,0),(12021,'16118',13609,13610,4,0),(12022,'16118',13561,13562,4,0),(12023,'16120',13475,13476,4,0),(12024,'16122',13295,13296,4,0),(12025,'16122',13815,13816,4,0),(12026,'16123',13001,13002,4,0),(12027,'16140',13861,13862,4,0),(12028,'16141',13005,13006,4,0),(12029,'16141',13301,13302,4,0),(12030,'16141',13195,13196,4,0),(12031,'16141',13617,13618,4,0),(12032,'16142',13463,13464,4,0),(12033,'16143',13729,13730,4,0),(12034,'16143',13497,13498,4,0),(12035,'16144',13731,13732,4,0),(12036,'16144',13429,13430,4,0),(12037,'16145',13733,13734,4,0),(12038,'16146',13981,13982,4,0),(12039,'16146',13231,13232,4,0),(12040,'16147',13499,13500,4,0),(12041,'16150',13779,13780,4,0),(12042,'16150',13839,13840,4,0),(12043,'16152',13373,13374,4,0),(12044,'16152',13795,13796,4,0),(12045,'16152',13035,13036,4,0),(12046,'16152',13799,13800,4,0),(12047,'16160',13581,13582,4,0),(12048,'16160',16313,16314,4,0),(12049,'16161',13763,13764,4,0),(12050,'16162',13765,13766,4,0),(12051,'16190',13317,13318,4,0),(12052,'16190',13211,13212,4,0),(12053,'16191',13233,13234,4,0),(12054,'16191',13319,13320,4,0),(12055,'16191',13213,13214,4,0),(12056,'16191',13031,13032,4,0),(12057,'16191',13897,13898,4,0),(12058,'16192',13585,13586,4,0),(12059,'16192',13075,13076,4,0),(12060,'16193',13325,13326,4,0),(12061,'16193',13235,13236,4,0),(12062,'16194',13237,13238,4,0),(12063,'16194',13321,13322,4,0),(12064,'16194',13215,13216,4,0),(12065,'16195',13385,13386,4,0),(12066,'16195',13907,13908,4,0),(12067,'16195',13767,13768,4,0),(12068,'16195',12991,12992,4,0),(12069,'16195',12931,12932,4,0),(12070,'16196',13909,13910,4,0),(12071,'16200',13539,13540,4,0),(12072,'16210',13083,13084,4,0),(12073,'16211',13269,13270,4,0),(12074,'16212',13629,13630,4,0),(12075,'16214',13831,13832,4,0),(12076,'16214',12935,12936,4,0),(12077,'16214',13333,13334,4,0),(12078,'16214',13819,13820,4,0),(12079,'16215',12983,12984,4,0),(12080,'16216',13725,13726,4,0),(12081,'16216',13557,13558,4,0),(12082,'16216',13219,13220,4,0),(12083,'16216',13477,13478,4,0),(12084,'16220',13649,13650,4,0),(12085,'16230',13885,13886,4,0),(12086,'16235',13409,13410,4,0),(12087,'16236',13887,13888,4,0),(12088,'16236',13411,13412,4,0),(12089,'16236',13855,13856,4,0),(12090,'16237',13481,13482,4,0),(12091,'16238',13857,13858,4,0),(12092,'16238',13889,13890,4,0),(12093,'16239',13183,13184,4,0),(12094,'16240',13265,13266,4,0),(12095,'16250',13191,13192,4,0),(12096,'16251',13349,13350,4,0),(12097,'16260',13507,13508,4,0),(12098,'16269',13445,13446,4,0),(12099,'16269',13645,13646,4,0),(12100,'16270',13873,13874,4,0),(12101,'16280',13945,13946,4,0),(12102,'16290',13253,13254,4,0),(12103,'16290',13413,13414,4,0),(12104,'16300',13127,13128,4,0),(12105,'16311',13063,13064,4,0),(12106,'16311',13089,13090,4,0),(12107,'16311',13381,13382,4,0),(12108,'16311',13313,13314,4,0),(12109,'16312',13353,13354,4,0),(12110,'16312',13337,13338,4,0),(12111,'16313',12975,12976,4,0),(12112,'16315',12951,12952,4,0),(12113,'16316',13389,13390,4,0),(12114,'16316',13807,13808,4,0),(12115,'16316',13093,13094,4,0),(12116,'16316',13449,13450,4,0),(12117,'16317',13675,13676,4,0),(12118,'16317',13973,13974,4,0),(12119,'16317',13751,13752,4,0),(12120,'16318',13683,13684,4,0),(12121,'16320',13737,13738,4,0),(12122,'16321',13739,13740,4,0),(12123,'16330',13457,13458,4,0),(12124,'16336',13703,13704,4,0),(12125,'16338',13167,13168,4,0),(12126,'16338',12971,12972,4,0),(12127,'16339',13705,13706,4,0),(12128,'16339',13459,13460,4,0),(12129,'16339',13345,13346,4,0),(12130,'16340',13803,13804,4,0),(12131,'16340',13425,13426,4,0),(12132,'16340',13103,13104,4,0),(12133,'16350',13139,13140,4,0),(12134,'16360',13527,13528,4,0),(12135,'16360',13009,13010,4,0),(12136,'16370',13913,13914,4,0),(12137,'16370',13695,13696,4,0),(12138,'16371',13545,13546,4,0),(12139,'16371',13957,13958,4,0),(12140,'16372',13589,13590,4,0),(12141,'16372',13291,13292,4,0),(12142,'16373',13143,13144,4,0),(12143,'16373',13965,13966,4,0),(12144,'16373',13591,13592,4,0),(12145,'16390',13573,13574,4,0),(12146,'16390',13577,13578,4,0),(12147,'16390',13657,13658,4,0),(12148,'16393',13511,13512,4,0),(12149,'16400',13743,13744,4,0),(12150,'16410',13369,13370,4,0),(12151,'16411',13305,13306,4,0),(12152,'16412',13245,13246,4,0),(12153,'16413',13771,13772,4,0),(12154,'16414',13633,13634,4,0),(12155,'16415',13877,13878,4,0),(12156,'16417',13489,13490,4,0),(12157,'16420',12979,12980,4,0),(12158,'16420',13941,13942,4,0),(12159,'16421',13641,13642,4,0),(12160,'16421',13361,13362,4,0),(12161,'16422',13783,13784,4,0),(12162,'16423',13569,13570,4,0),(12163,'16430',13671,13672,4,0),(12164,'16431',12987,12988,4,0),(12165,'16432',13661,13662,4,0),(12166,'16432',13925,13926,4,0),(12167,'16433',12967,12968,4,0),(12168,'16433',13893,13894,4,0),(12169,'16434',13519,13520,4,0),(12170,'16435',13433,13434,4,0),(12171,'16440',13523,13524,4,0),(12172,'16441',13257,13258,4,0),(12173,'16442',13937,13938,4,0),(12174,'16444',13207,13208,4,0),(12175,'16452',13787,13788,4,0),(12176,'16452',13663,13664,4,0),(12177,'16452',13791,13792,4,0),(12178,'16460',13021,13022,4,0),(12179,'16461',13485,13486,4,0),(12180,'16463',13667,13668,4,0),(12181,'16464',12959,12960,4,0),(12182,'16465',13595,13596,4,0),(12183,'16465',13377,13378,4,0),(12184,'16470',13039,13040,4,0),(12185,'16470',13023,13024,4,0),(12186,'16470',13977,13978,4,0),(12187,'16500',13393,13394,4,0),(12188,'16510',13281,13282,4,0),(12189,'16510',13843,13844,4,0),(12190,'16512',13283,13284,4,0),(12191,'16512',13079,13080,4,0),(12192,'16514',13285,13286,4,0),(12193,'16520',13395,13396,4,0),(12194,'16521',13397,13398,4,0),(12195,'16522',13755,13756,4,0),(12196,'16522',13613,13614,4,0),(12197,'16532',13881,13882,4,0),(12198,'16532',13341,13342,4,0),(12199,'16532',13399,13400,4,0),(12200,'16532',13441,13442,4,0),(12201,'16535',13865,13866,4,0),(12202,'16537',12963,12964,4,0),(12203,'16537',13123,13124,4,0),(12204,'16540',13401,13402,4,0),(12205,'16541',13929,13930,4,0),(12206,'16541',13403,13404,4,0),(12207,'16541',13605,13606,4,0),(12208,'16541',13493,13494,4,0),(12209,'16542',13921,13922,4,0),(12210,'16550',13097,13098,4,0),(12211,'16550',13405,13406,4,0),(12212,'16555',13099,13100,4,0),(12213,'16600',13687,13688,4,0),(12214,'16610',13163,13164,4,0),(12215,'16611',13175,13176,4,0),(12216,'16612',13179,13180,4,0),(12217,'16620',13417,13418,4,0),(12218,'16621',13713,13714,4,0),(12219,'16622',13601,13602,4,0),(12220,'16623',13199,13200,4,0),(12221,'16630',13535,13536,4,0),(12222,'16638',13261,13262,4,0),(12223,'16639',13709,13710,4,0),(12224,'16640',13045,13046,4,0),(12225,'16646',13869,13870,4,0),(12226,'16647',13309,13310,4,0),(12227,'16647',13851,13852,4,0),(12228,'16648',13903,13904,4,0),(12229,'16649',13653,13654,4,0),(12230,'16649',13153,13154,4,0),(12231,'16649',13515,13516,4,0),(12232,'16650',13467,13468,4,0),(12233,'16660',13471,13472,4,0),(12234,'16670',13277,13278,4,0),(12235,'16700',13721,13722,4,0),(12236,'16707',13159,13160,4,0),(12237,'16708',13625,13626,4,0),(12238,'16708',13171,13172,4,0),(12239,'16709',13835,13836,4,0),(12240,'16710',13017,13018,4,0),(12241,'16710',13747,13748,4,0),(12242,'16720',13107,13108,4,0),(12243,'16730',13357,13358,4,0),(12244,'16738',13249,13250,4,0),(12245,'16739',13775,13776,4,0),(12246,'16740',13421,13422,4,0),(12247,'16740',13041,13042,4,0),(12248,'16760',13549,13550,4,0),(12249,'16770',13691,13692,4,0),(12250,'16771',13933,13934,4,0),(12251,'16771',13969,13970,4,0),(12252,'16779',13051,13052,4,0),(12253,'16780',13531,13532,4,0),(12254,'16780',12993,12994,4,0),(12255,'16781',13297,13298,4,0),(12256,'16800',13637,13638,4,0),(12257,'16812',12997,12998,4,0),(12258,'16812',12955,12956,4,0),(12259,'16812',13961,13962,4,0),(12260,'16812',13273,13274,4,0),(12261,'16812',12947,12948,4,0),(12262,'16813',13699,13700,4,0),(12263,'16813',13679,13680,4,0),(12264,'16813',13811,13812,4,0),(12265,'16813',13917,13918,4,0),(12266,'16840',13899,13900,4,0),(12267,'16841',12943,12944,4,0),(12268,'16842',13759,13760,4,0),(12269,'16843',13949,13950,4,0),(12270,'16850',13119,13120,4,0),(12271,'16851',13067,13068,4,0),(12272,'16852',13553,13554,4,0),(12273,'16853',13565,13566,4,0),(12274,'16854',13203,13204,4,0),(12275,'16855',13013,13014,4,0),(12276,'16857',13111,13112,4,0),(12277,'16860',13847,13848,4,0),(12278,'16870',13055,13056,4,0),(12279,'16878',13453,13454,4,0),(12280,'16878',13621,13622,4,0),(12281,'16878',13503,13504,4,0),(12282,'16878',13717,13718,4,0),(12283,'16879',13241,13242,4,0),(12284,'16879',13147,13148,4,0),(12285,'16879',13823,13824,4,0),(12286,'16879',13057,13058,4,0),(12287,'16890',13115,13116,4,0),(12288,'16890',13329,13330,4,0),(12289,'16890',13131,13132,4,0),(12290,'16891',13133,13134,4,0),(12291,'16891',13149,13150,4,0),(12292,'16892',13135,13136,4,0),(12293,'16893',13059,13060,4,0),(12294,'17001',14321,14322,4,0),(12295,'17002',14323,14324,4,0),(12296,'17003',14325,14326,4,0),(12297,'17004',14327,14328,4,0),(12298,'17005',14329,14330,4,0),(12299,'17006',14331,14332,4,0),(12300,'17007',14333,14334,4,0),(12301,'17100',14375,14376,4,0),(12302,'17110',14289,14290,4,0),(12303,'17111',14291,14292,4,0),(12304,'17113',14293,14294,4,0),(12305,'17114',14991,14992,4,0),(12306,'17116',14219,14220,4,0),(12307,'17117',14221,14222,4,0),(12308,'17118',14223,14224,4,0),(12309,'17120',14391,14392,4,0),(12310,'17121',14225,14226,4,0),(12311,'17121',14207,14208,4,0),(12312,'17124',14613,14614,4,0),(12313,'17130',14371,14372,4,0),(12314,'17130',14963,14964,4,0),(12315,'17131',14755,14756,4,0),(12316,'17132',14269,14270,4,0),(12317,'17133',14657,14658,4,0),(12318,'17133',14271,14272,4,0),(12319,'17133',14995,14996,4,0),(12320,'17133',14917,14918,4,0),(12321,'17134',14399,14400,4,0),(12322,'17135',14401,14402,4,0),(12323,'17136',14001,14002,4,0),(12324,'17137',15011,15012,4,0),(12325,'17137',15045,15046,4,0),(12326,'17140',14965,14966,4,0),(12327,'17140',14987,14988,4,0),(12328,'17141',14967,14968,4,0),(12329,'17141',14049,14050,4,0),(12330,'17142',15021,15022,4,0),(12331,'17143',14359,14360,4,0),(12332,'17144',14203,14204,4,0),(12333,'17144',15105,15106,4,0),(12334,'17150',14801,14802,4,0),(12335,'17151',14803,14804,4,0),(12336,'17152',14849,14850,4,0),(12337,'17153',14851,14852,4,0),(12338,'17154',14771,14772,4,0),(12339,'17160',14015,14016,4,0),(12340,'17161',14609,14610,4,0),(12341,'17162',14057,14058,4,0),(12342,'17163',14059,14060,4,0),(12343,'17164',14841,14842,4,0),(12344,'17164',14805,14806,4,0),(12345,'17164',14853,14854,4,0),(12346,'17165',14379,14380,4,0),(12347,'17166',14935,14936,4,0),(12348,'17166',14381,14382,4,0),(12349,'17170',14011,14012,4,0),(12350,'17171',14773,14774,4,0),(12351,'17171',14937,14938,4,0),(12352,'17172',14433,14434,4,0),(12353,'17173',14435,14436,4,0),(12354,'17174',14791,14792,4,0),(12355,'17176',14409,14410,4,0),(12356,'17177',14411,14412,4,0),(12357,'17178',14439,14440,4,0),(12358,'17178',14413,14414,4,0),(12359,'17179',14739,14740,4,0),(12360,'17179',14415,14416,4,0),(12361,'17180',15041,15042,4,0),(12362,'17181',13991,13992,4,0),(12363,'17182',14061,14062,4,0),(12364,'17183',15097,15098,4,0),(12365,'17184',15099,15100,4,0),(12366,'17185',15101,15102,4,0),(12367,'17190',14763,14764,4,0),(12368,'17199',14807,14808,4,0),(12369,'17199',14153,14154,4,0),(12370,'17200',14615,14616,4,0),(12371,'17210',14617,14618,4,0),(12372,'17211',14619,14620,4,0),(12373,'17212',14621,14622,4,0),(12374,'17213',14623,14624,4,0),(12375,'17213',14043,14044,4,0),(12376,'17214',14719,14720,4,0),(12377,'17220',14785,14786,4,0),(12378,'17230',14627,14628,4,0),(12379,'17240',14887,14888,4,0),(12380,'17240',14447,14448,4,0),(12381,'17241',14703,14704,4,0),(12382,'17242',14705,14706,4,0),(12383,'17243',14451,14452,4,0),(12384,'17244',14165,14166,4,0),(12385,'17244',14227,14228,4,0),(12386,'17245',14889,14890,4,0),(12387,'17246',14891,14892,4,0),(12388,'17248',14169,14170,4,0),(12389,'17248',14787,14788,4,0),(12390,'17249',14171,14172,4,0),(12391,'17250',14173,14174,4,0),(12392,'17251',14123,14124,4,0),(12393,'17252',14125,14126,4,0),(12394,'17253',15003,15004,4,0),(12395,'17253',14579,14580,4,0),(12396,'17255',14045,14046,4,0),(12397,'17256',14637,14638,4,0),(12398,'17256',14649,14650,4,0),(12399,'17257',14343,14344,4,0),(12400,'17257',14969,14970,4,0),(12401,'17257',14281,14282,4,0),(12402,'17258',14971,14972,4,0),(12403,'17300',14075,14076,4,0),(12404,'17310',14471,14472,4,0),(12405,'17320',14983,14984,4,0),(12406,'17320',14629,14630,4,0),(12407,'17400',14097,14098,4,0),(12408,'17401',14019,14020,4,0),(12409,'17402',14021,14022,4,0),(12410,'17403',14811,14812,4,0),(12411,'17404',14727,14728,4,0),(12412,'17405',14247,14248,4,0),(12413,'17406',15059,15060,4,0),(12414,'17410',14925,14926,4,0),(12415,'17411',15029,15030,4,0),(12416,'17412',14483,14484,4,0),(12417,'17420',14927,14928,4,0),(12418,'17421',14735,14736,4,0),(12419,'17430',14883,14884,4,0),(12420,'17430',14473,14474,4,0),(12421,'17441',14101,14102,4,0),(12422,'17450',14351,14352,4,0),(12423,'17451',14781,14782,4,0),(12424,'17452',14501,14502,4,0),(12425,'17454',14767,14768,4,0),(12426,'17455',14117,14118,4,0),(12427,'17456',14119,14120,4,0),(12428,'17457',14743,14744,4,0),(12429,'17458',14297,14298,4,0),(12430,'17459',14145,14146,4,0),(12431,'17460',14187,14188,4,0),(12432,'17461',14335,14336,4,0),(12433,'17462',14857,14858,4,0),(12434,'17462',14087,14088,4,0),(12435,'17462',14363,14364,4,0),(12436,'17462',14487,14488,4,0),(12437,'17463',14273,14274,4,0),(12438,'17463',14823,14824,4,0),(12439,'17463',14265,14266,4,0),(12440,'17464',14191,14192,4,0),(12441,'17464',14831,14832,4,0),(12442,'17464',15049,15050,4,0),(12443,'17465',14907,14908,4,0),(12444,'17466',15107,15108,4,0),(12445,'17466',14309,14310,4,0),(12446,'17467',14869,14870,4,0),(12447,'17467',14909,14910,4,0),(12448,'17468',14037,14038,4,0),(12449,'17468',15053,15054,4,0),(12450,'17469',15079,15080,4,0),(12451,'17469',14301,14302,4,0),(12452,'17469',14239,14240,4,0),(12453,'17469',14747,14748,4,0),(12454,'17469',14931,14932,4,0),(12455,'17470',14879,14880,4,0),(12456,'17472',15013,15014,4,0),(12457,'17472',14367,14368,4,0),(12458,'17473',15015,15016,4,0),(12459,'17474',15075,15076,4,0),(12460,'17474',14959,14960,4,0),(12461,'17475',14865,14866,4,0),(12462,'17475',15017,15018,4,0),(12463,'17476',14633,14634,4,0),(12464,'17476',14305,14306,4,0),(12465,'17480',14751,14752,4,0),(12466,'17481',14835,14836,4,0),(12467,'17482',14837,14838,4,0),(12468,'17483',15093,15094,4,0),(12469,'17483',14039,14040,4,0),(12470,'17484',14259,14260,4,0),(12471,'17485',15033,15034,4,0),(12472,'17486',14181,14182,4,0),(12473,'17487',14183,14184,4,0),(12474,'17488',14113,14114,4,0),(12475,'17489',14395,14396,4,0),(12476,'17489',14243,14244,4,0),(12477,'17490',14459,14460,4,0),(12478,'17491',14669,14670,4,0),(12479,'17492',14671,14672,4,0),(12480,'17493',14665,14666,4,0),(12481,'17493',15067,15068,4,0),(12482,'17494',14661,14662,4,0),(12483,'17495',14641,14642,4,0),(12484,'17496',14199,14200,4,0),(12485,'17497',14693,14694,4,0),(12486,'17500',14731,14732,4,0),(12487,'17512',14425,14426,4,0),(12488,'17513',14427,14428,4,0),(12489,'17515',15025,15026,4,0),(12490,'17520',14697,14698,4,0),(12491,'17527',14467,14468,4,0),(12492,'17528',14347,14348,4,0),(12493,'17529',14699,14700,4,0),(12494,'17530',14135,14136,4,0),(12495,'17531',14339,14340,4,0),(12496,'17531',14137,14138,4,0),(12497,'17532',14429,14430,4,0),(12498,'17534',14709,14710,4,0),(12499,'17534',14141,14142,4,0),(12500,'17534',14723,14724,4,0),(12501,'17534',14653,14654,4,0),(12502,'17535',14675,14676,4,0),(12503,'17536',14979,14980,4,0),(12504,'17537',14005,14006,4,0),(12505,'17538',14277,14278,4,0),(12506,'17538',14007,14008,4,0),(12507,'17538',14235,14236,4,0),(12508,'17538',14999,15000,4,0),(12509,'17539',14083,14084,4,0),(12510,'17539',14317,14318,4,0),(12511,'17539',14505,14506,4,0),(12512,'17539',14355,14356,4,0),(12513,'17600',14261,14262,4,0),(12514,'17700',14385,14386,4,0),(12515,'17700',14091,14092,4,0),(12516,'17706',14679,14680,4,0),(12517,'17707',14405,14406,4,0),(12518,'17707',13987,13988,4,0),(12519,'17708',14157,14158,4,0),(12520,'17709',14387,14388,4,0),(12521,'17720',14477,14478,4,0),(12522,'17721',14479,14480,4,0),(12523,'17722',14231,14232,4,0),(12524,'17723',14079,14080,4,0),(12525,'17723',14071,14072,4,0),(12526,'17730',14463,14464,4,0),(12527,'17731',14941,14942,4,0),(12528,'17732',14845,14846,4,0),(12529,'17733',13995,13996,4,0),(12530,'17734',13997,13998,4,0),(12531,'17740',15063,15064,4,0),(12532,'17741',15087,15088,4,0),(12533,'17741',14195,14196,4,0),(12534,'17742',14029,14030,4,0),(12535,'17743',15089,15090,4,0),(12536,'17744',14589,14590,4,0),(12537,'17745',14443,14444,4,0),(12538,'17746',14105,14106,4,0),(12539,'17747',14107,14108,4,0),(12540,'17750',14161,14162,4,0),(12541,'17751',14777,14778,4,0),(12542,'17752',14571,14572,4,0),(12543,'17753',14251,14252,4,0),(12544,'17754',14713,14714,4,0),(12545,'17755',14715,14716,4,0),(12546,'17760',15037,15038,4,0),(12547,'17762',14495,14496,4,0),(12548,'17763',14497,14498,4,0),(12549,'17770',14093,14094,4,0),(12550,'17771',14895,14896,4,0),(12551,'17772',14605,14606,4,0),(12552,'17773',14683,14684,4,0),(12553,'17780',14313,14314,4,0),(12554,'17781',15083,15084,4,0),(12555,'17800',14597,14598,4,0),(12556,'17810',14599,14600,4,0),(12557,'17811',14899,14900,4,0),(12558,'17812',14601,14602,4,0),(12559,'17813',14419,14420,4,0),(12560,'17820',14033,14034,4,0),(12561,'17830',14795,14796,4,0),(12562,'17831',14861,14862,4,0),(12563,'17832',14255,14256,4,0),(12564,'17832',14215,14216,4,0),(12565,'17833',15055,15056,4,0),(12566,'17833',14285,14286,4,0),(12567,'17834',14129,14130,4,0),(12568,'17834',14687,14688,4,0),(12569,'17840',14903,14904,4,0),(12570,'17843',14645,14646,4,0),(12571,'17844',14211,14212,4,0),(12572,'17846',14689,14690,4,0),(12573,'17850',14053,14054,4,0),(12574,'17850',14797,14798,4,0),(12575,'17850',14065,14066,4,0),(12576,'17851',14491,14492,4,0),(12577,'17851',14067,14068,4,0),(12578,'17852',14913,14914,4,0),(12579,'17853',14759,14760,4,0),(12580,'17853',14975,14976,4,0),(12581,'17853',14025,14026,4,0),(12582,'17854',14815,14816,4,0),(12583,'17854',14131,14132,4,0),(12584,'17855',14583,14584,4,0),(12585,'17856',14177,14178,4,0),(12586,'17856',14585,14586,4,0),(12587,'17857',14827,14828,4,0),(12588,'17858',14421,14422,4,0),(12589,'17860',14819,14820,4,0),(12590,'17861',14593,14594,4,0),(12591,'17862',15007,15008,4,0),(12592,'17864',14873,14874,4,0),(12593,'17865',14875,14876,4,0),(12594,'17867',14149,14150,4,0),(12595,'17868',14575,14576,4,0),(12596,'17869',14455,14456,4,0),(12597,'17869',14921,14922,4,0),(12598,'17869',15071,15072,4,0),(12599,'18001',15469,15470,4,0),(12600,'18002',15471,15472,4,0),(12601,'18003',15473,15474,4,0),(12602,'18004',15475,15476,4,0),(12603,'18005',15477,15478,4,0),(12604,'18006',15479,15480,4,0),(12605,'18007',15481,15482,4,0),(12606,'18008',15483,15484,4,0),(12607,'18009',15485,15486,4,0),(12608,'18010',15487,15488,4,0),(12609,'18011',15489,15490,4,0),(12610,'18012',15491,15492,4,0),(12611,'18013',15493,15494,4,0),(12612,'18014',15495,15496,4,0),(12613,'18015',15497,15498,4,0),(12614,'18053',15347,15348,4,0),(12615,'18100',15211,15212,4,0),(12616,'18101',15951,15952,4,0),(12617,'18102',15953,15954,4,0),(12618,'18110',15651,15652,4,0),(12619,'18120',15165,15166,4,0),(12620,'18126',15203,15204,4,0),(12621,'18127',15593,15594,4,0),(12622,'18127',15205,15206,4,0),(12623,'18128',15989,15990,4,0),(12624,'18128',15167,15168,4,0),(12625,'18129',15891,15892,4,0),(12626,'18129',15207,15208,4,0),(12627,'18129',15261,15262,4,0),(12628,'18130',15617,15618,4,0),(12629,'18130',15423,15424,4,0),(12630,'18131',15965,15966,4,0),(12631,'18132',15113,15114,4,0),(12632,'18140',15633,15634,4,0),(12633,'18140',16583,16584,4,0),(12634,'18150',15455,15456,4,0),(12635,'18151',15779,15780,4,0),(12636,'18152',15395,15396,4,0),(12637,'18160',15529,15530,4,0),(12638,'18170',15153,15154,4,0),(12639,'18179',15155,15156,4,0),(12640,'18179',15985,15986,4,0),(12641,'18180',15391,15392,4,0),(12642,'18181',15621,15622,4,0),(12643,'18181',15377,15378,4,0),(12644,'18182',15499,15500,4,0),(12645,'18183',15551,15552,4,0),(12646,'18184',15229,15230,4,0),(12647,'18185',15553,15554,4,0),(12648,'18190',15501,15502,4,0),(12649,'18190',15313,15314,4,0),(12650,'18191',15531,15532,4,0),(12651,'18191',15823,15824,4,0),(12652,'18192',15405,15406,4,0),(12653,'18192',15867,15868,4,0),(12654,'18193',15717,15718,4,0),(12655,'18194',15327,15328,4,0),(12656,'18194',15653,15654,4,0),(12657,'18195',15373,15374,4,0),(12658,'18196',15719,15720,4,0),(12659,'18197',15855,15856,4,0),(12660,'18198',15561,15562,4,0),(12661,'18199',15271,15272,4,0),(12662,'18200',15697,15698,4,0),(12663,'18210',15857,15858,4,0),(12664,'18210',15813,15814,4,0),(12665,'18211',15339,15340,4,0),(12666,'18212',15535,15536,4,0),(12667,'18213',15605,15606,4,0),(12668,'18214',15775,15776,4,0),(12669,'18220',15123,15124,4,0),(12670,'18230',15215,15216,4,0),(12671,'18240',15827,15828,4,0),(12672,'18247',15705,15706,4,0),(12673,'18248',15707,15708,4,0),(12674,'18249',15709,15710,4,0),(12675,'18250',15117,15118,4,0),(12676,'18250',15829,15830,4,0),(12677,'18260',15565,15566,4,0),(12678,'18270',15723,15724,4,0),(12679,'18280',15159,15160,4,0),(12680,'18290',15275,15276,4,0),(12681,'18290',15217,15218,4,0),(12682,'18290',15125,15126,4,0),(12683,'18291',15831,15832,4,0),(12684,'18292',15895,15896,4,0),(12685,'18293',15567,15568,4,0),(12686,'18294',15569,15570,4,0),(12687,'18295',15161,15162,4,0),(12688,'18300',15673,15674,4,0),(12689,'18310',15877,15878,4,0),(12690,'18311',15993,15994,4,0),(12691,'18311',15675,15676,4,0),(12692,'18312',12701,12702,4,0),(12693,'18312',15677,15678,4,0),(12694,'18313',15679,15680,4,0),(12695,'18314',15681,15682,4,0),(12696,'18320',15897,15898,4,0),(12697,'18327',15637,15638,4,0),(12698,'18328',15833,15834,4,0),(12699,'18328',15639,15640,4,0),(12700,'18329',15323,15324,4,0),(12701,'18329',15899,15900,4,0),(12702,'18330',15317,15318,4,0),(12703,'18330',15901,15902,4,0),(12704,'18330',15219,15220,4,0),(12705,'18339',15331,15332,4,0),(12706,'18339',15319,15320,4,0),(12707,'18340',15439,15440,4,0),(12708,'18350',15571,15572,4,0),(12709,'18360',15557,15558,4,0),(12710,'18369',15981,15982,4,0),(12711,'18370',15735,15736,4,0),(12712,'18380',15573,15574,4,0),(12713,'18381',15575,15576,4,0),(12714,'18400',15787,15788,4,0),(12715,'18410',15297,15298,4,0),(12716,'18410',15789,15790,4,0),(12717,'18410',15905,15906,4,0),(12718,'18411',15805,15806,4,0),(12719,'18412',15253,15254,4,0),(12720,'18413',15293,15294,4,0),(12721,'18414',15627,15628,4,0),(12722,'18415',15847,15848,4,0),(12723,'18416',15629,15630,4,0),(12724,'18416',15257,15258,4,0),(12725,'18417',15925,15926,4,0),(12726,'18418',15743,15744,4,0),(12727,'18418',15791,15792,4,0),(12728,'18418',15283,15284,4,0),(12729,'18420',15189,15190,4,0),(12730,'18420',15643,15644,4,0),(12731,'18430',15921,15922,4,0),(12732,'18438',15179,15180,4,0),(12733,'18439',15301,15302,4,0),(12734,'18440',15265,15266,4,0),(12735,'18448',15267,15268,4,0),(12736,'18449',15669,15670,4,0),(12737,'18450',15191,15192,4,0),(12738,'18451',15249,15250,4,0),(12739,'18452',15609,15610,4,0),(12740,'18460',15193,15194,4,0),(12741,'18470',15947,15948,4,0),(12742,'18480',15933,15934,4,0),(12743,'18490',15759,15760,4,0),(12744,'18491',15929,15930,4,0),(12745,'18492',15935,15936,4,0),(12746,'18492',15761,15762,4,0),(12747,'18493',15765,15766,4,0),(12748,'18494',15937,15938,4,0),(12749,'18494',15767,15768,4,0),(12750,'18500',15511,15512,4,0),(12751,'18510',15237,15238,4,0),(12752,'18511',15943,15944,4,0),(12753,'18512',15399,15400,4,0),(12754,'18512',15543,15544,4,0),(12755,'18512',15613,15614,4,0),(12756,'18513',15427,15428,4,0),(12757,'18514',15149,15150,4,0),(12758,'18515',15431,15432,4,0),(12759,'18515',15861,15862,4,0),(12760,'18515',15513,15514,4,0),(12761,'18516',15689,15690,4,0),(12762,'18516',15837,15838,4,0),(12763,'18516',15233,15234,4,0),(12764,'18516',15701,15702,4,0),(12765,'18517',15869,15870,4,0),(12766,'18517',15355,15356,4,0),(12767,'18517',15623,15624,4,0),(12768,'18518',15597,15598,4,0),(12769,'18518',15335,15336,4,0),(12770,'18518',15133,15134,4,0),(12771,'18518',15647,15648,4,0),(12772,'18518',15199,15200,4,0),(12773,'18519',15515,15516,4,0),(12774,'18519',15863,15864,4,0),(12775,'18520',15119,15120,4,0),(12776,'18530',15809,15810,4,0),(12777,'18538',15175,15176,4,0),(12778,'18538',15381,15382,4,0),(12779,'18539',15977,15978,4,0),(12780,'18540',15449,15450,4,0),(12781,'18540',15539,15540,4,0),(12782,'18540',15739,15740,4,0),(12783,'18540',15195,15196,4,0),(12784,'18550',15585,15586,4,0),(12785,'18560',15507,15508,4,0),(12786,'18561',15727,15728,4,0),(12787,'18562',15817,15818,4,0),(12788,'18563',15451,15452,4,0),(12789,'18563',15917,15918,4,0),(12790,'18564',15343,15344,4,0),(12791,'18565',15279,15280,4,0),(12792,'18566',15241,15242,4,0),(12793,'18567',15587,15588,4,0),(12794,'18568',15819,15820,4,0),(12795,'18569',15731,15732,4,0),(12796,'18570',15387,15388,4,0),(12797,'18600',15745,15746,4,0),(12798,'18610',15881,15882,4,0),(12799,'18611',15713,15714,4,0),(12800,'18612',15581,15582,4,0),(12801,'18613',15747,15748,4,0),(12802,'18614',15693,15694,4,0),(12803,'18614',15523,15524,4,0),(12804,'18614',15749,15750,4,0),(12805,'18615',15685,15686,4,0),(12806,'18615',15957,15958,4,0),(12807,'18616',15959,15960,4,0),(12808,'18620',15171,15172,4,0),(12809,'18620',15751,15752,4,0),(12810,'18630',15969,15970,4,0),(12811,'18640',15801,15802,4,0),(12812,'18650',15409,15410,4,0),(12813,'18656',15657,15658,4,0),(12814,'18657',15659,15660,4,0),(12815,'18657',15771,15772,4,0),(12816,'18658',15419,15420,4,0),(12817,'18658',15413,15414,4,0),(12818,'18659',15973,15974,4,0),(12819,'18659',15145,15146,4,0),(12820,'18660',15415,15416,4,0),(12821,'18660',15661,15662,4,0),(12822,'18670',15961,15962,4,0),(12823,'18680',15883,15884,4,0),(12824,'18690',15183,15184,4,0),(12825,'18690',15885,15886,4,0),(12826,'18697',15185,15186,4,0),(12827,'18698',15797,15798,4,0),(12828,'18699',15665,15666,4,0),(12829,'18699',15601,15602,4,0),(12830,'18700',15137,15138,4,0),(12831,'18708',15129,15130,4,0),(12832,'18710',15909,15910,4,0),(12833,'18710',15841,15842,4,0),(12834,'18710',15793,15794,4,0),(12835,'18711',15873,15874,4,0),(12836,'18713',15911,15912,4,0),(12837,'18720',15753,15754,4,0),(12838,'18730',15755,15756,4,0),(12839,'18740',15525,15526,4,0),(12840,'18750',15913,15914,4,0),(12841,'18750',15843,15844,4,0),(12842,'18760',15139,15140,4,0),(12843,'18770',15141,15142,4,0),(12844,'18800',15223,15224,4,0),(12845,'18810',15287,15288,4,0),(12846,'18811',15997,15998,4,0),(12847,'18812',15435,15436,4,0),(12848,'18813',15359,15360,4,0),(12849,'18814',15349,15350,4,0),(12850,'18815',15351,15352,4,0),(12851,'18816',15309,15310,4,0),(12852,'18817',15245,15246,4,0),(12853,'18818',15305,15306,4,0),(12854,'18819',15289,15290,4,0),(12855,'18820',15851,15852,4,0),(12856,'18830',15577,15578,4,0),(12857,'18830',15547,15548,4,0),(12858,'18840',15443,15444,4,0),(12859,'18849',15445,15446,4,0),(12860,'18850',15363,15364,4,0),(12861,'18857',15365,15366,4,0),(12862,'18858',15783,15784,4,0),(12863,'18859',15367,15368,4,0),(12864,'18860',15517,15518,4,0),(12865,'18860',15225,15226,4,0),(12866,'18870',15459,15460,4,0),(12867,'18880',15519,15520,4,0),(12868,'18890',15463,15464,4,0),(12869,'18891',15369,15370,4,0),(12870,'19001',16527,16528,4,0),(12871,'19002',16529,16530,4,0),(12872,'19003',16531,16532,4,0),(12873,'19004',16533,16534,4,0),(12874,'19005',16535,16536,4,0),(12875,'19080',16537,16538,4,0),(12876,'19080',17315,17316,4,0),(12877,'19100',16863,16864,4,0),(12878,'19110',16803,16804,4,0),(12879,'19111',17323,17324,4,0),(12880,'19112',16905,16906,4,0),(12881,'19112',16029,16030,4,0),(12882,'19113',16505,16506,4,0),(12883,'19114',16743,16744,4,0),(12884,'19115',16081,16082,4,0),(12885,'19116',16393,16394,4,0),(12886,'19117',16023,16024,4,0),(12887,'19118',16085,16086,4,0),(12888,'19119',16579,16580,4,0),(12889,'19119',16451,16452,4,0),(12890,'19119',16087,16088,4,0),(12891,'19119',16455,16456,4,0),(12892,'19119',16603,16604,4,0),(12893,'19119',16025,16026,4,0),(12894,'19119',17025,17026,4,0),(12895,'19119',17351,17352,4,0),(12896,'19119',16615,16616,4,0),(12897,'19120',16993,16994,4,0),(12898,'19125',16037,16038,4,0),(12899,'19126',17005,17006,4,0),(12900,'19127',16447,16448,4,0),(12901,'19127',16995,16996,4,0),(12902,'19127',16281,16282,4,0),(12903,'19127',16763,16764,4,0),(12904,'19128',16309,16310,4,0),(12905,'19128',16711,16712,4,0),(12906,'19128',16997,16998,4,0),(12907,'19128',16855,16856,4,0),(12908,'19129',16857,16858,4,0),(12909,'19129',16073,16074,4,0),(12910,'19130',16169,16170,4,0),(12911,'19131',16171,16172,4,0),(12912,'19132',16069,16070,4,0),(12913,'19132',17233,17234,4,0),(12914,'19133',16195,16196,4,0),(12915,'19133',16417,16418,4,0),(12916,'19133',16091,16092,4,0),(12917,'19133',16215,16216,4,0),(12918,'19133',16397,16398,4,0),(12919,'19134',17105,17106,4,0),(12920,'19134',16871,16872,4,0),(12921,'19135',16151,16152,4,0),(12922,'19135',16147,16148,4,0),(12923,'19139',17317,17318,4,0),(12924,'19140',16585,16586,4,0),(12925,'19141',17215,17216,4,0),(12926,'19141',16127,16128,4,0),(12927,'19141',16679,16680,4,0),(12928,'19141',17319,17320,4,0),(12929,'19142',17223,17224,4,0),(12930,'19142',16683,16684,4,0),(12931,'19143',16981,16982,4,0),(12932,'19143',16623,16624,4,0),(12933,'19143',17013,17014,4,0),(12934,'19143',16587,16588,4,0),(12935,'19143',16399,16400,4,0),(12936,'19143',17327,17328,4,0),(12937,'19143',17331,17332,4,0),(12938,'19144',16501,16502,4,0),(12939,'19144',16811,16812,4,0),(12940,'19144',16493,16494,4,0),(12941,'19145',16947,16948,4,0),(12942,'19150',16539,16540,4,0),(12943,'19151',16297,16298,4,0),(12944,'19152',16057,16058,4,0),(12945,'19153',16155,16156,4,0),(12946,'19160',16315,16316,4,0),(12947,'19161',16909,16910,4,0),(12948,'19162',16891,16892,4,0),(12949,'19170',16407,16408,4,0),(12950,'19171',16229,16230,4,0),(12951,'19174',17147,17148,4,0),(12952,'19174',17227,17228,4,0),(12953,'19174',16515,16516,4,0),(12954,'19180',16723,16724,4,0),(12955,'19181',16541,16542,4,0),(12956,'19182',16543,16544,4,0),(12957,'19182',16489,16490,4,0),(12958,'19184',17249,17250,4,0),(12959,'19184',17183,17184,4,0),(12960,'19184',17303,17304,4,0),(12961,'19184',16261,16262,4,0),(12962,'19184',17311,17312,4,0),(12963,'19185',17245,17246,4,0),(12964,'19185',17229,17230,4,0),(12965,'19185',16409,16410,4,0),(12966,'19186',16413,16414,4,0),(12967,'19187',17203,17204,4,0),(12968,'19190',16317,16318,4,0),(12969,'19190',17129,17130,4,0),(12970,'19191',17131,17132,4,0),(12971,'19191',16911,16912,4,0),(12972,'19192',16511,16512,4,0),(12973,'19192',16893,16894,4,0),(12974,'19192',17191,17192,4,0),(12975,'19193',16545,16546,4,0),(12976,'19194',16547,16548,4,0),(12977,'19196',16675,16676,4,0),(12978,'19196',17219,17220,4,0),(12979,'19196',16139,16140,4,0),(12980,'19196',16819,16820,4,0),(12981,'19196',17211,17212,4,0),(12982,'19197',16555,16556,4,0),(12983,'19197',16247,16248,4,0),(12984,'19197',16337,16338,4,0),(12985,'19197',17135,17136,4,0),(12986,'19198',17175,17176,4,0),(12987,'19200',16175,16176,4,0),(12988,'19208',16095,16096,4,0),(12989,'19209',16939,16940,4,0),(12990,'19209',17289,17290,4,0),(12991,'19210',17335,17336,4,0),(12992,'19219',16699,16700,4,0),(12993,'19219',17291,17292,4,0),(12994,'19219',16703,16704,4,0),(12995,'19220',16607,16608,4,0),(12996,'19222',17079,17080,4,0),(12997,'19223',16237,16238,4,0),(12998,'19223',16951,16952,4,0),(12999,'19223',16695,16696,4,0),(13000,'19224',17273,17274,4,0),(13001,'19224',16239,16240,4,0),(13002,'19224',17081,17082,4,0),(13003,'19225',16935,16936,4,0),(13004,'19225',16645,16646,4,0),(13005,'19225',17257,17258,4,0),(13006,'19225',16953,16954,4,0),(13007,'19226',17083,17084,4,0),(13008,'19226',16609,16610,4,0),(13009,'19226',16783,16784,4,0),(13010,'19227',17087,17088,4,0),(13011,'19227',16019,16020,4,0),(13012,'19227',16731,16732,4,0),(13013,'19227',16969,16970,4,0),(13014,'19229',16353,16354,4,0),(13015,'19229',16807,16808,4,0),(13016,'19229',16611,16612,4,0),(13017,'19229',16931,16932,4,0),(13018,'19230',16355,16356,4,0),(13019,'19237',16131,16132,4,0),(13020,'19237',17009,17010,4,0),(13021,'19237',16357,16358,4,0),(13022,'19237',16485,16486,4,0),(13023,'19237',17347,17348,4,0),(13024,'19238',16641,16642,4,0),(13025,'19238',16421,16422,4,0),(13026,'19239',16359,16360,4,0),(13027,'19239',16799,16800,4,0),(13028,'19240',16627,16628,4,0),(13029,'19242',16563,16564,4,0),(13030,'19243',16523,16524,4,0),(13031,'19243',16373,16374,4,0),(13032,'19243',17295,17296,4,0),(13033,'19243',16659,16660,4,0),(13034,'19243',16973,16974,4,0),(13035,'19243',16225,16226,4,0),(13036,'19243',16915,16916,4,0),(13037,'19244',16423,16424,4,0),(13038,'19244',16671,16672,4,0),(13039,'19244',16367,16368,4,0),(13040,'19245',16105,16106,4,0),(13041,'19245',16289,16290,4,0),(13042,'19245',17151,17152,4,0),(13043,'19245',16293,16294,4,0),(13044,'19245',16841,16842,4,0),(13045,'19245',16943,16944,4,0),(13046,'19245',17017,17018,4,0),(13047,'19245',16633,16634,4,0),(13048,'19245',16823,16824,4,0),(13049,'19246',16747,16748,4,0),(13050,'19246',16265,16266,4,0),(13051,'19246',16883,16884,4,0),(13052,'19246',16775,16776,4,0),(13053,'19246',16629,16630,4,0),(13054,'19246',17285,17286,4,0),(13055,'19247',16755,16756,4,0),(13056,'19247',16459,16460,4,0),(13057,'19247',16221,16222,4,0),(13058,'19248',16571,16572,4,0),(13059,'19250',17045,17046,4,0),(13060,'19260',16045,16046,4,0),(13061,'19261',16047,16048,4,0),(13062,'19261',16687,16688,4,0),(13063,'19262',16473,16474,4,0),(13064,'19262',17047,17048,4,0),(13065,'19262',17021,17022,4,0),(13066,'19263',17049,17050,4,0),(13067,'19264',17051,17052,4,0),(13068,'19265',17053,17054,4,0),(13069,'19266',17055,17056,4,0),(13070,'19266',16655,16656,4,0),(13071,'19267',17057,17058,4,0),(13072,'19268',16065,16066,4,0),(13073,'19268',17155,17156,4,0),(13074,'19268',16771,16772,4,0),(13075,'19268',17059,17060,4,0),(13076,'19269',17241,17242,4,0),(13077,'19269',17041,17042,4,0),(13078,'19269',16965,16966,4,0),(13079,'19269',16849,16850,4,0),(13080,'19269',17061,17062,4,0),(13081,'19270',16159,16160,4,0),(13082,'19273',16917,16918,4,0),(13083,'19274',16255,16256,4,0),(13084,'19274',16649,16650,4,0),(13085,'19274',16161,16162,4,0),(13086,'19275',16369,16370,4,0),(13087,'19275',16257,16258,4,0),(13088,'19275',17071,17072,4,0),(13089,'19275',16243,16244,4,0),(13090,'19275',16363,16364,4,0),(13091,'19275',16033,16034,4,0),(13092,'19275',16519,16520,4,0),(13093,'19276',16759,16760,4,0),(13094,'19276',16567,16568,4,0),(13095,'19276',16163,16164,4,0),(13096,'19276',17207,17208,4,0),(13097,'19276',16187,16188,4,0),(13098,'19276',16977,16978,4,0),(13099,'19277',16041,16042,4,0),(13100,'19277',16333,16334,4,0),(13101,'19277',17121,17122,4,0),(13102,'19277',16165,16166,4,0),(13103,'19277',16851,16852,4,0),(13104,'19278',16637,16638,4,0),(13105,'19278',16651,16652,4,0),(13106,'19280',16715,16716,4,0),(13107,'19281',16717,16718,4,0),(13108,'19282',16109,16110,4,0),(13109,'19283',16619,16620,4,0),(13110,'19283',16111,16112,4,0),(13111,'19284',16049,16050,4,0),(13112,'19285',16341,16342,4,0),(13113,'19285',16691,16692,4,0),(13114,'19286',16117,16118,4,0),(13115,'19286',16739,16740,4,0),(13116,'19287',16497,16498,4,0),(13117,'19287',17095,17096,4,0),(13118,'19287',16119,16120,4,0),(13119,'19287',16767,16768,4,0),(13120,'19287',16469,16470,4,0),(13121,'19287',16719,16720,4,0),(13122,'19290',16477,16478,4,0),(13123,'19292',16377,16378,4,0),(13124,'19292',16461,16462,4,0),(13125,'19294',16707,16708,4,0),(13126,'19294',16273,16274,4,0),(13127,'19294',17299,17300,4,0),(13128,'19294',16735,16736,4,0),(13129,'19295',16595,16596,4,0),(13130,'19295',16179,16180,4,0),(13131,'19295',17277,17278,4,0),(13132,'19295',17063,17064,4,0),(13133,'19300',16787,16788,4,0),(13134,'19310',16301,16302,4,0),(13135,'19310',16305,16306,4,0),(13136,'19310',16053,16054,4,0),(13137,'19311',16837,16838,4,0),(13138,'19312',17109,17110,4,0),(13139,'19312',16887,16888,4,0),(13140,'19312',17187,17188,4,0),(13141,'19313',16875,16876,4,0),(13142,'19314',17091,17092,4,0),(13143,'19315',16751,16752,4,0),(13144,'19320',16099,16100,4,0),(13145,'19321',16101,16102,4,0),(13146,'19323',17125,17126,4,0),(13147,'19324',17037,17038,4,0),(13148,'19325',16897,16898,4,0),(13149,'19325',16011,16012,4,0),(13150,'19325',17117,17118,4,0),(13151,'19326',16431,16432,4,0),(13152,'19327',16427,16428,4,0),(13153,'19328',16815,16816,4,0),(13154,'19328',16277,16278,4,0),(13155,'19328',16575,16576,4,0),(13156,'19332',16061,16062,4,0),(13157,'19332',17097,17098,4,0),(13158,'19332',16779,16780,4,0),(13159,'19332',17307,17308,4,0),(13160,'19333',17099,17100,4,0),(13161,'19334',17101,17102,4,0),(13162,'19334',16381,16382,4,0),(13163,'19336',16845,16846,4,0),(13164,'19337',17171,17172,4,0),(13165,'19338',17179,17180,4,0),(13166,'19339',16985,16986,4,0),(13167,'19339',16443,16444,4,0),(13168,'19340',16961,16962,4,0),(13169,'19341',16383,16384,4,0),(13170,'19342',16559,16560,4,0),(13171,'19343',16385,16386,4,0),(13172,'19345',17163,17164,4,0),(13173,'19346',17029,17030,4,0),(13174,'19346',17033,17034,4,0),(13175,'19350',16789,16790,4,0),(13176,'19351',16791,16792,4,0),(13177,'19352',16921,16922,4,0),(13178,'19353',16923,16924,4,0),(13179,'19354',16925,16926,4,0),(13180,'19355',17139,17140,4,0),(13181,'19357',16123,16124,4,0),(13182,'19360',16233,16234,4,0),(13183,'19361',16663,16664,4,0),(13184,'19362',16793,16794,4,0),(13185,'19363',16795,16796,4,0),(13186,'19390',17265,17266,4,0),(13187,'19390',16481,16482,4,0),(13188,'19390',17113,17114,4,0),(13189,'19390',16507,16508,4,0),(13190,'19390',16183,16184,4,0),(13191,'19390',16387,16388,4,0),(13192,'19391',16927,16928,4,0),(13193,'19391',16285,16286,4,0),(13194,'19391',17167,17168,4,0),(13195,'19392',16389,16390,4,0),(13196,'19400',16199,16200,4,0),(13197,'19410',16201,16202,4,0),(13198,'19411',16203,16204,4,0),(13199,'19411',17261,17262,4,0),(13200,'19412',16269,16270,4,0),(13201,'19412',16205,16206,4,0),(13202,'19412',17237,17238,4,0),(13203,'19413',16207,16208,4,0),(13204,'19414',16209,16210,4,0),(13205,'19420',16321,16322,4,0),(13206,'19428',16323,16324,4,0),(13207,'19429',16325,16326,4,0),(13208,'19431',16327,16328,4,0),(13209,'19431',17143,17144,4,0),(13210,'19431',16251,16252,4,0),(13211,'19432',16827,16828,4,0),(13212,'19432',16989,16990,4,0),(13213,'19432',17157,17158,4,0),(13214,'19432',16003,16004,4,0),(13215,'19441',16957,16958,4,0),(13216,'19441',16599,16600,4,0),(13217,'19442',16007,16008,4,0),(13218,'19443',17001,17002,4,0),(13219,'19443',16831,16832,4,0),(13220,'19443',16345,16346,4,0),(13221,'19444',17339,17340,4,0),(13222,'19444',16833,16834,4,0),(13223,'19445',16113,16114,4,0),(13224,'19445',17075,17076,4,0),(13225,'19445',16591,16592,4,0),(13226,'19445',16465,16466,4,0),(13227,'19450',17195,17196,4,0),(13228,'19458',17197,17198,4,0),(13229,'19459',16329,16330,4,0),(13230,'19459',16217,16218,4,0),(13231,'19460',17281,17282,4,0),(13232,'19461',17341,17342,4,0),(13233,'19461',16143,16144,4,0),(13234,'19462',16867,16868,4,0),(13235,'19463',16901,16902,4,0),(13236,'19490',16015,16016,4,0),(13237,'19490',16727,16728,4,0),(13238,'19490',16211,16212,4,0),(13239,'19490',17253,17254,4,0),(13240,'19490',16077,16078,4,0),(13241,'19490',16191,16192,4,0),(13242,'19490',16349,16350,4,0),(13243,'19491',16551,16552,4,0),(13244,'19491',17067,17068,4,0),(13245,'19491',16667,16668,4,0),(13246,'19491',16439,16440,4,0),(13247,'19491',17159,17160,4,0),(13248,'19492',17269,17270,4,0),(13249,'19492',16859,16860,4,0),(13250,'19492',17199,17200,4,0),(13251,'19492',16135,16136,4,0),(13252,'19492',16435,16436,4,0),(13253,'19493',16879,16880,4,0),(13254,'19495',17343,17344,4,0),(13255,'19680',15887,15888,4,0),(13256,'20001',17493,17494,4,0),(13257,'20002',17495,17496,4,0),(13258,'20003',17497,17498,4,0),(13259,'20004',17499,17500,4,0),(13260,'20005',17501,17502,4,0),(13261,'20006',17503,17504,4,0),(13262,'20007',17505,17506,4,0),(13263,'20008',17507,17508,4,0),(13264,'20009',17509,17510,4,0),(13265,'20010',17511,17512,4,0),(13266,'20011',17513,17514,4,0),(13267,'20012',17515,17516,4,0),(13268,'20013',17517,17518,4,0),(13269,'20014',17519,17520,4,0),(13270,'20015',17521,17522,4,0),(13271,'20016',17523,17524,4,0),(13272,'20017',17525,17526,4,0),(13273,'20018',17527,17528,4,0),(13274,'20100',17553,17554,4,0),(13275,'20100',17529,17530,4,0),(13276,'20100',17667,17668,4,0),(13277,'20110',17725,17726,4,0),(13278,'20115',17429,17430,4,0),(13279,'20120',17589,17590,4,0),(13280,'20128',17591,17592,4,0),(13281,'20130',17747,17748,4,0),(13282,'20130',17755,17756,4,0),(13283,'20140',17399,17400,4,0),(13284,'20150',17361,17362,4,0),(13285,'20150',17761,17762,4,0),(13286,'20159',17425,17426,4,0),(13287,'20159',17635,17636,4,0),(13288,'20159',17787,17788,4,0),(13289,'20160',17531,17532,4,0),(13290,'20160',17639,17640,4,0),(13291,'20170',17757,17758,4,0),(13292,'20180',17687,17688,4,0),(13293,'20200',17449,17450,4,0),(13294,'20210',17643,17644,4,0),(13295,'20211',17433,17434,4,0),(13296,'20212',17691,17692,4,0),(13297,'20213',17607,17608,4,0),(13298,'20214',17679,17680,4,0),(13299,'20214',17777,17778,4,0),(13300,'20214',17729,17730,4,0),(13301,'20215',17773,17774,4,0),(13302,'20216',17721,17722,4,0),(13303,'20217',17573,17574,4,0),(13304,'20218',17567,17568,4,0),(13305,'20220',17651,17652,4,0),(13306,'20230',17653,17654,4,0),(13307,'20240',17705,17706,4,0),(13308,'20247',17765,17766,4,0),(13309,'20248',17387,17388,4,0),(13310,'20248',17577,17578,4,0),(13311,'20248',17411,17412,4,0),(13312,'20249',17631,17632,4,0),(13313,'20250',17657,17658,4,0),(13314,'20259',17445,17446,4,0),(13315,'20260',17379,17380,4,0),(13316,'20267',17611,17612,4,0),(13317,'20267',17737,17738,4,0),(13318,'20268',17739,17740,4,0),(13319,'20268',17391,17392,4,0),(13320,'20268',17395,17396,4,0),(13321,'20269',17357,17358,4,0),(13322,'20269',17709,17710,4,0),(13323,'20270',17403,17404,4,0),(13324,'20271',17627,17628,4,0),(13325,'20280',17599,17600,4,0),(13326,'20301',17615,17616,4,0),(13327,'20302',17617,17618,4,0),(13328,'20303',17619,17620,4,0),(13329,'20304',17621,17622,4,0),(13330,'20305',17623,17624,4,0),(13331,'20400',17741,17742,4,0),(13332,'20400',17603,17604,4,0),(13333,'20490',17713,17714,4,0),(13334,'20490',17671,17672,4,0),(13335,'20491',17457,17458,4,0),(13336,'20491',17581,17582,4,0),(13337,'20491',17647,17648,4,0),(13338,'20492',17461,17462,4,0),(13339,'20493',17479,17480,4,0),(13340,'20493',17539,17540,4,0),(13341,'20493',17463,17464,4,0),(13342,'20494',17383,17384,4,0),(13343,'20494',17743,17744,4,0),(13344,'20494',17595,17596,4,0),(13345,'20495',17375,17376,4,0),(13346,'20496',17483,17484,4,0),(13347,'20500',17419,17420,4,0),(13348,'20509',17421,17422,4,0),(13349,'20530',17561,17562,4,0),(13350,'20530',17661,17662,4,0),(13351,'20540',17563,17564,4,0),(13352,'20550',17415,17416,4,0),(13353,'20560',17695,17696,4,0),(13354,'20567',17697,17698,4,0),(13355,'20568',17699,17700,4,0),(13356,'20569',17467,17468,4,0),(13357,'20569',17701,17702,4,0),(13358,'20570',17469,17470,4,0),(13359,'20577',17407,17408,4,0),(13360,'20578',17471,17472,4,0),(13361,'20580',17473,17474,4,0),(13362,'20590',17733,17734,4,0),(13363,'20600',17535,17536,4,0),(13364,'20690',17543,17544,4,0),(13365,'20700',17751,17752,4,0),(13366,'20700',17795,17796,4,0),(13367,'20709',17569,17570,4,0),(13368,'20720',17437,17438,4,0),(13369,'20730',17441,17442,4,0),(13370,'20737',17557,17558,4,0),(13371,'20739',17453,17454,4,0),(13372,'20740',17781,17782,4,0),(13373,'20749',17371,17372,4,0),(13374,'20749',17783,17784,4,0),(13375,'20750',17791,17792,4,0),(13376,'20800',17769,17770,4,0),(13377,'20808',17585,17586,4,0),(13378,'20809',17365,17366,4,0),(13379,'20810',17717,17718,4,0),(13380,'20810',17367,17368,4,0),(13381,'20820',17487,17488,4,0),(13382,'20829',17489,17490,4,0),(13383,'20830',17683,17684,4,0),(13384,'20850',17675,17676,4,0),(13385,'20860',17547,17548,4,0),(13386,'20870',17549,17550,4,0),(13387,'21000',18037,18038,4,0),(13388,'21001',18039,18040,4,0),(13389,'21002',18041,18042,4,0),(13390,'21003',18043,18044,4,0),(13391,'21004',18045,18046,4,0),(13392,'21005',18047,18048,4,0),(13393,'21006',18049,18050,4,0),(13394,'21007',18051,18052,4,0),(13395,'21009',17875,17876,4,0),(13396,'21100',17805,17806,4,0),(13397,'21100',18159,18160,4,0),(13398,'21110',17807,17808,4,0),(13399,'21110',18161,18162,4,0),(13400,'21120',17809,17810,4,0),(13401,'21122',17811,17812,4,0),(13402,'21130',18129,18130,4,0),(13403,'21130',18115,18116,4,0),(13404,'21193',23359,23360,4,0),(13405,'21200',17849,17850,4,0),(13406,'21207',17851,17852,4,0),(13407,'21207',18093,18094,4,0),(13408,'21208',17853,17854,4,0),(13409,'21208',18097,18098,4,0),(13410,'21208',17967,17968,4,0),(13411,'21209',17955,17956,4,0),(13412,'21209',18155,18156,4,0),(13413,'21209',17855,17856,4,0),(13414,'21210',18253,18254,4,0),(13415,'21220',18025,18026,4,0),(13416,'21230',17959,17960,4,0),(13417,'21239',18195,18196,4,0),(13418,'21239',17961,17962,4,0),(13419,'21239',17859,17860,4,0),(13420,'21240',17861,17862,4,0),(13421,'21248',17863,17864,4,0),(13422,'21250',18171,18172,4,0),(13423,'21260',18205,18206,4,0),(13424,'21270',17917,17918,4,0),(13425,'21280',17871,17872,4,0),(13426,'21290',18067,18068,4,0),(13427,'21290',17815,17816,4,0),(13428,'21291',18077,18078,4,0),(13429,'21291',17889,17890,4,0),(13430,'21291',18017,18018,4,0),(13431,'21291',18215,18216,4,0),(13432,'21292',17947,17948,4,0),(13433,'21292',18013,18014,4,0),(13434,'21300',17921,17922,4,0),(13435,'21309',17923,17924,4,0),(13436,'21310',17925,17926,4,0),(13437,'21319',17927,17928,4,0),(13438,'21320',17993,17994,4,0),(13439,'21330',17963,17964,4,0),(13440,'21330',17995,17996,4,0),(13441,'21330',17817,17818,4,0),(13442,'21340',17865,17866,4,0),(13443,'21340',17801,17802,4,0),(13444,'21342',17819,17820,4,0),(13445,'21350',17821,17822,4,0),(13446,'21359',18197,18198,4,0),(13447,'21359',17823,17824,4,0),(13448,'21360',18069,18070,4,0),(13449,'21380',17979,17980,4,0),(13450,'21386',17975,17976,4,0),(13451,'21387',17971,17972,4,0),(13452,'21388',18029,18030,4,0),(13453,'21388',17935,17936,4,0),(13454,'21390',18005,18006,4,0),(13455,'21400',18055,18056,4,0),(13456,'21400',18085,18086,4,0),(13457,'21400',17877,17878,4,0),(13458,'21409',17879,17880,4,0),(13459,'21410',18057,18058,4,0),(13460,'21420',17881,17882,4,0),(13461,'21420',18059,18060,4,0),(13462,'21430',18061,18062,4,0),(13463,'21440',17883,17884,4,0),(13464,'21440',18087,18088,4,0),(13465,'21449',18089,18090,4,0),(13466,'21450',17939,17940,4,0),(13467,'21459',17941,17942,4,0),(13468,'21459',18163,18164,4,0),(13469,'21460',18063,18064,4,0),(13470,'21500',18021,18022,4,0),(13471,'21510',18175,18176,4,0),(13472,'21520',18177,18178,4,0),(13473,'21520',17843,17844,4,0),(13474,'21530',17845,17846,4,0),(13475,'21540',17943,17944,4,0),(13476,'21540',18235,18236,4,0),(13477,'21550',18149,18150,4,0),(13478,'21559',18151,18152,4,0),(13479,'21560',18145,18146,4,0),(13480,'21570',18201,18202,4,0),(13481,'21580',17867,17868,4,0),(13482,'21580',17913,17914,4,0),(13483,'21580',17997,17998,4,0),(13484,'21590',18223,18224,4,0),(13485,'21591',18187,18188,4,0),(13486,'21592',18231,18232,4,0),(13487,'21593',17983,17984,4,0),(13488,'21594',18001,18002,4,0),(13489,'21595',18191,18192,4,0),(13490,'21600',18219,18220,4,0),(13491,'21609',17891,17892,4,0),(13492,'21610',18181,18182,4,0),(13493,'21620',18207,18208,4,0),(13494,'21620',18211,18212,4,0),(13495,'21630',17893,17894,4,0),(13496,'21639',18183,18184,4,0),(13497,'21639',17895,17896,4,0),(13498,'21640',18243,18244,4,0),(13499,'21646',17825,17826,4,0),(13500,'21647',17899,17900,4,0),(13501,'21647',18245,18246,4,0),(13502,'21649',18247,18248,4,0),(13503,'21660',18109,18110,4,0),(13504,'21667',18111,18112,4,0),(13505,'21668',18073,18074,4,0),(13506,'21668',18249,18250,4,0),(13507,'21668',17931,17932,4,0),(13508,'21669',17827,17828,4,0),(13509,'21670',18121,18122,4,0),(13510,'21700',18081,18082,4,0),(13511,'21710',17905,17906,4,0),(13512,'21710',17831,17832,4,0),(13513,'21720',18167,18168,4,0),(13514,'21730',17833,17834,4,0),(13515,'21739',17835,17836,4,0),(13516,'21740',18033,18034,4,0),(13517,'21750',17837,17838,4,0),(13518,'21760',17839,17840,4,0),(13519,'21800',18131,18132,4,0),(13520,'21800',18117,18118,4,0),(13521,'21810',18133,18134,4,0),(13522,'21819',18135,18136,4,0),(13523,'21820',18101,18102,4,0),(13524,'21830',17909,17910,4,0),(13525,'21840',18125,18126,4,0),(13526,'21850',18239,18240,4,0),(13527,'21860',18227,18228,4,0),(13528,'21870',18009,18010,4,0),(13529,'21880',18139,18140,4,0),(13530,'21888',18141,18142,4,0),(13531,'21890',18105,18106,4,0),(13532,'21891',17951,17952,4,0),(13533,'22000',18843,18844,4,0),(13534,'22001',18845,18846,4,0),(13535,'22002',18847,18848,4,0),(13536,'22003',18849,18850,4,0),(13537,'22004',18851,18852,4,0),(13538,'22005',18853,18854,4,0),(13539,'22006',18855,18856,4,0),(13540,'22080',18857,18858,4,0),(13541,'22090',18859,18860,4,0),(13542,'22092',18861,18862,4,0),(13543,'22094',18863,18864,4,0),(13544,'22097',18865,18866,4,0),(13545,'22100',19269,19270,4,0),(13546,'22110',19327,19328,4,0),(13547,'22110',19239,19240,4,0),(13548,'22111',19045,19046,4,0),(13549,'22112',18313,18314,4,0),(13550,'22113',19075,19076,4,0),(13551,'22120',19335,19336,4,0),(13552,'22121',19337,19338,4,0),(13553,'22122',18877,18878,4,0),(13554,'22122',19339,19340,4,0),(13555,'22122',18381,18382,4,0),(13556,'22123',18383,18384,4,0),(13557,'22124',18997,18998,4,0),(13558,'22125',18959,18960,4,0),(13559,'22126',18979,18980,4,0),(13560,'22130',19115,19116,4,0),(13561,'22131',19117,19118,4,0),(13562,'22131',18511,18512,4,0),(13563,'22132',19399,19400,4,0),(13564,'22132',19139,19140,4,0),(13565,'22132',18469,18470,4,0),(13566,'22133',18395,18396,4,0),(13567,'22133',18565,18566,4,0),(13568,'22133',18385,18386,4,0),(13569,'22134',18567,18568,4,0),(13570,'22135',18331,18332,4,0),(13571,'22135',18407,18408,4,0),(13572,'22140',19023,19024,4,0),(13573,'22141',19025,19026,4,0),(13574,'22141',18523,18524,4,0),(13575,'22141',18651,18652,4,0),(13576,'22142',18653,18654,4,0),(13577,'22143',18259,18260,4,0),(13578,'22144',18525,18526,4,0),(13579,'22145',18373,18374,4,0),(13580,'22146',19285,19286,4,0),(13581,'22147',18261,18262,4,0),(13582,'22147',18271,18272,4,0),(13583,'22148',18711,18712,4,0),(13584,'22148',18473,18474,4,0),(13585,'22149',18279,18280,4,0),(13586,'22149',18475,18476,4,0),(13587,'22150',18411,18412,4,0),(13588,'22160',18945,18946,4,0),(13589,'22161',18947,18948,4,0),(13590,'22162',18949,18950,4,0),(13591,'22190',19449,19450,4,0),(13592,'22191',19183,19184,4,0),(13593,'22192',19027,19028,4,0),(13594,'22192',19367,19368,4,0),(13595,'22193',18881,18882,4,0),(13596,'22193',19079,19080,4,0),(13597,'22194',18707,18708,4,0),(13598,'22194',18867,18868,4,0),(13599,'22194',18347,18348,4,0),(13600,'22194',18455,18456,4,0),(13601,'22195',18869,18870,4,0),(13602,'22196',18871,18872,4,0),(13603,'22196',19047,19048,4,0),(13604,'22197',18873,18874,4,0),(13605,'22200',19297,19298,4,0),(13606,'22210',18837,18838,4,0),(13607,'22211',18839,18840,4,0),(13608,'22212',18963,18964,4,0),(13609,'22212',18641,18642,4,0),(13610,'22212',18321,18322,4,0),(13611,'22213',18971,18972,4,0),(13612,'22213',19299,19300,4,0),(13613,'22214',18965,18966,4,0),(13614,'22215',19301,19302,4,0),(13615,'22215',18673,18674,4,0),(13616,'22215',19119,19120,4,0),(13617,'22216',19153,19154,4,0),(13618,'22216',18973,18974,4,0),(13619,'22220',18305,18306,4,0),(13620,'22221',19303,19304,4,0),(13621,'22222',18657,18658,4,0),(13622,'22223',19411,19412,4,0),(13623,'22225',18789,18790,4,0),(13624,'22230',19319,19320,4,0),(13625,'22231',19461,19462,4,0),(13626,'22232',19089,19090,4,0),(13627,'22233',18699,18700,4,0),(13628,'22234',18451,18452,4,0),(13629,'22240',19355,19356,4,0),(13630,'22250',18975,18976,4,0),(13631,'22251',18343,18344,4,0),(13632,'22252',19187,19188,4,0),(13633,'22253',19323,19324,4,0),(13634,'22254',19383,19384,4,0),(13635,'22255',19403,19404,4,0),(13636,'22255',18465,18466,4,0),(13637,'22255',18317,18318,4,0),(13638,'22255',18791,18792,4,0),(13639,'22255',18367,18368,4,0),(13640,'22260',18793,18794,4,0),(13641,'22268',18795,18796,4,0),(13642,'22268',19407,19408,4,0),(13643,'22268',19143,19144,4,0),(13644,'22268',18967,18968,4,0),(13645,'22269',18369,18370,4,0),(13646,'22269',18797,18798,4,0),(13647,'22270',18355,18356,4,0),(13648,'22280',18821,18822,4,0),(13649,'22281',18823,18824,4,0),(13650,'22282',18325,18326,4,0),(13651,'22283',18327,18328,4,0),(13652,'22283',18357,18358,4,0),(13653,'22300',18459,18460,4,0),(13654,'22310',18669,18670,4,0),(13655,'22311',19131,19132,4,0),(13656,'22311',18427,18428,4,0),(13657,'22311',18431,18432,4,0),(13658,'22312',18831,18832,4,0),(13659,'22312',18715,18716,4,0),(13660,'22313',18689,18690,4,0),(13661,'22313',19157,19158,4,0),(13662,'22313',19287,19288,4,0),(13663,'22314',19229,19230,4,0),(13664,'22314',19235,19236,4,0),(13665,'22315',18461,18462,4,0),(13666,'22315',18833,18834,4,0),(13667,'22320',18477,18478,4,0),(13668,'22320',19069,19070,4,0),(13669,'22330',18281,18282,4,0),(13670,'22336',18283,18284,4,0),(13671,'22336',18929,18930,4,0),(13672,'22337',18765,18766,4,0),(13673,'22337',19099,19100,4,0),(13674,'22337',18931,18932,4,0),(13675,'22338',18721,18722,4,0),(13676,'22339',18285,18286,4,0),(13677,'22340',18571,18572,4,0),(13678,'22347',18573,18574,4,0),(13679,'22348',18575,18576,4,0),(13680,'22349',18897,18898,4,0),(13681,'22349',18577,18578,4,0),(13682,'22349',18287,18288,4,0),(13683,'22350',18515,18516,4,0),(13684,'22351',18517,18518,4,0),(13685,'22360',18955,18956,4,0),(13686,'22361',19015,19016,4,0),(13687,'22362',19173,19174,4,0),(13688,'22363',19175,19176,4,0),(13689,'22364',19359,19360,4,0),(13690,'22365',18519,18520,4,0),(13691,'22365',19361,19362,4,0),(13692,'22366',19363,19364,4,0),(13693,'22366',19147,19148,4,0),(13694,'22367',18785,18786,4,0),(13695,'22367',19257,19258,4,0),(13696,'22367',19149,19150,4,0),(13697,'22370',18591,18592,4,0),(13698,'22371',18751,18752,4,0),(13699,'22372',18593,18594,4,0),(13700,'22372',18753,18754,4,0),(13701,'22373',18595,18596,4,0),(13702,'22373',18755,18756,4,0),(13703,'22374',18597,18598,4,0),(13704,'22375',18747,18748,4,0),(13705,'22375',18599,18600,4,0),(13706,'22376',19375,19376,4,0),(13707,'22377',19377,19378,4,0),(13708,'22378',19379,19380,4,0),(13709,'22390',18717,18718,4,0),(13710,'22391',19307,19308,4,0),(13711,'22392',18265,18266,4,0),(13712,'22392',19191,19192,4,0),(13713,'22393',19071,19072,4,0),(13714,'22393',18267,18268,4,0),(13715,'22394',18933,18934,4,0),(13716,'22394',18289,18290,4,0),(13717,'22395',18291,18292,4,0),(13718,'22400',17885,17886,4,0),(13719,'22400',19061,19062,4,0),(13720,'22410',18339,18340,4,0),(13721,'22411',19261,19262,4,0),(13722,'22412',19263,19264,4,0),(13723,'22413',19265,19266,4,0),(13724,'22414',19063,19064,4,0),(13725,'22415',18885,18886,4,0),(13726,'22415',19065,19066,4,0),(13727,'22416',18351,18352,4,0),(13728,'22416',19179,19180,4,0),(13729,'22417',18361,18362,4,0),(13730,'22417',18759,18760,4,0),(13731,'22420',18363,18364,4,0),(13732,'22421',18423,18424,4,0),(13733,'22422',18761,18762,4,0),(13734,'22423',18733,18734,4,0),(13735,'22424',18729,18730,4,0),(13736,'22430',18801,18802,4,0),(13737,'22435',18941,18942,4,0),(13738,'22436',18983,18984,4,0),(13739,'22436',18803,18804,4,0),(13740,'22437',18805,18806,4,0),(13741,'22438',18935,18936,4,0),(13742,'22438',18807,18808,4,0),(13743,'22439',19309,19310,4,0),(13744,'22439',19085,19086,4,0),(13745,'22440',18497,18498,4,0),(13746,'22449',18499,18500,4,0),(13747,'22450',18611,18612,4,0),(13748,'22450',18767,18768,4,0),(13749,'22451',18613,18614,4,0),(13750,'22451',18769,18770,4,0),(13751,'22451',19387,19388,4,0),(13752,'22451',19415,19416,4,0),(13753,'22451',19429,19430,4,0),(13754,'22452',18937,18938,4,0),(13755,'22452',18771,18772,4,0),(13756,'22460',19135,19136,4,0),(13757,'22460',19291,19292,4,0),(13758,'22461',18809,18810,4,0),(13759,'22461',18579,18580,4,0),(13760,'22461',19293,19294,4,0),(13761,'22462',18889,18890,4,0),(13762,'22462',18773,18774,4,0),(13763,'22463',19313,19314,4,0),(13764,'22464',19315,19316,4,0),(13765,'22465',18661,18662,4,0),(13766,'22465',18703,18704,4,0),(13767,'22466',18663,18664,4,0),(13768,'22466',18555,18556,4,0),(13769,'22467',19453,19454,4,0),(13770,'22467',18665,18666,4,0),(13771,'22467',19331,19332,4,0),(13772,'22467',19221,19222,4,0),(13773,'22468',19223,19224,4,0),(13774,'22469',19225,19226,4,0),(13775,'22469',18501,18502,4,0),(13776,'22470',18557,18558,4,0),(13777,'22471',19005,19006,4,0),(13778,'22472',19007,19008,4,0),(13779,'22473',19009,19010,4,0),(13780,'22473',19051,19052,4,0),(13781,'22474',19053,19054,4,0),(13782,'22474',19011,19012,4,0),(13783,'22480',18811,18812,4,0),(13784,'22480',18645,18646,4,0),(13785,'22481',18813,18814,4,0),(13786,'22482',18891,18892,4,0),(13787,'22483',19431,19432,4,0),(13788,'22483',19389,19390,4,0),(13789,'22483',18893,18894,4,0),(13790,'22484',18505,18506,4,0),(13791,'22484',19391,19392,4,0),(13792,'22485',18507,18508,4,0),(13793,'22486',19055,19056,4,0),(13794,'22486',18583,18584,4,0),(13795,'22487',19057,19058,4,0),(13796,'22500',18551,18552,4,0),(13797,'22510',18545,18546,4,0),(13798,'22511',18547,18548,4,0),(13799,'22512',19253,19254,4,0),(13800,'22513',19123,19124,4,0),(13801,'22514',19125,19126,4,0),(13802,'22520',18777,18778,4,0),(13803,'22528',19435,19436,4,0),(13804,'22529',18779,18780,4,0),(13805,'22530',19475,19476,4,0),(13806,'22531',19093,19094,4,0),(13807,'22532',19095,19096,4,0),(13808,'22533',18483,18484,4,0),(13809,'22534',18301,18302,4,0),(13810,'22535',18725,18726,4,0),(13811,'22536',18485,18486,4,0),(13812,'22540',18377,18378,4,0),(13813,'22549',19347,19348,4,0),(13814,'22549',19439,19440,4,0),(13815,'22549',18487,18488,4,0),(13816,'22550',19349,19350,4,0),(13817,'22558',18309,18310,4,0),(13818,'22559',19351,19352,4,0),(13819,'22560',18335,18336,4,0),(13820,'22569',18435,18436,4,0),(13821,'22569',19127,19128,4,0),(13822,'22570',18693,18694,4,0),(13823,'22570',18617,18618,4,0),(13824,'22571',18447,18448,4,0),(13825,'22572',18695,18696,4,0),(13826,'22572',18737,18738,4,0),(13827,'22580',18491,18492,4,0),(13828,'22583',19343,19344,4,0),(13829,'22583',24599,24600,4,0),(13830,'22583',18403,18404,4,0),(13831,'22584',19161,19162,4,0),(13832,'22584',19443,19444,4,0),(13833,'22584',24601,24602,4,0),(13834,'22585',18479,18480,4,0),(13835,'22585',18781,18782,4,0),(13836,'22585',19231,19232,4,0),(13837,'22585',19371,19372,4,0),(13838,'22585',19445,19446,4,0),(13839,'22585',18683,18684,4,0),(13840,'22586',19001,19002,4,0),(13841,'22587',18685,18686,4,0),(13842,'22587',18647,18648,4,0),(13843,'22587',19041,19042,4,0),(13844,'22588',18815,18816,4,0),(13845,'22589',18493,18494,4,0),(13846,'22589',18739,18740,4,0),(13847,'22590',19395,19396,4,0),(13848,'22591',18631,18632,4,0),(13849,'22592',19111,19112,4,0),(13850,'22600',19193,19194,4,0),(13851,'22609',19195,19196,4,0),(13852,'22610',19197,19198,4,0),(13853,'22610',19465,19466,4,0),(13854,'22611',19467,19468,4,0),(13855,'22612',19199,19200,4,0),(13856,'22613',19201,19202,4,0),(13857,'22613',18529,18530,4,0),(13858,'22620',18899,18900,4,0),(13859,'22620',19203,19204,4,0),(13860,'22621',18901,18902,4,0),(13861,'22621',19205,19206,4,0),(13862,'22622',19081,19082,4,0),(13863,'22622',19207,19208,4,0),(13864,'22623',19209,19210,4,0),(13865,'22624',18603,18604,4,0),(13866,'22625',18605,18606,4,0),(13867,'22630',18531,18532,4,0),(13868,'22636',19211,19212,4,0),(13869,'22636',18533,18534,4,0),(13870,'22637',18535,18536,4,0),(13871,'22638',18537,18538,4,0),(13872,'22639',18539,18540,4,0),(13873,'22639',19471,19472,4,0),(13874,'22640',19243,19244,4,0),(13875,'22650',19103,19104,4,0),(13876,'22660',19245,19246,4,0),(13877,'22661',19105,19106,4,0),(13878,'22662',18827,18828,4,0),(13879,'22662',19107,19108,4,0),(13880,'22663',19247,19248,4,0),(13881,'22664',19249,19250,4,0),(13882,'22665',18541,18542,4,0),(13883,'22666',19213,19214,4,0),(13884,'22700',18903,18904,4,0),(13885,'22710',18677,18678,4,0),(13886,'22710',18905,18906,4,0),(13887,'22711',18907,18908,4,0),(13888,'22712',18909,18910,4,0),(13889,'22713',18911,18912,4,0),(13890,'22714',18913,18914,4,0),(13891,'22714',19215,19216,4,0),(13892,'22715',18915,18916,4,0),(13893,'22720',19419,19420,4,0),(13894,'22725',18389,18390,4,0),(13895,'22728',18391,18392,4,0),(13896,'22729',18743,18744,4,0),(13897,'22730',18399,18400,4,0),(13898,'22731',18925,18926,4,0),(13899,'22732',19421,19422,4,0),(13900,'22740',19423,19424,4,0),(13901,'22750',19165,19166,4,0),(13902,'22751',19167,19168,4,0),(13903,'22751',18439,18440,4,0),(13904,'22752',19273,19274,4,0),(13905,'22753',19169,19170,4,0),(13906,'22760',18441,18442,4,0),(13907,'22761',18443,18444,4,0),(13908,'22770',18621,18622,4,0),(13909,'22771',18623,18624,4,0),(13910,'22772',18625,18626,4,0),(13911,'22773',18627,18628,4,0),(13912,'22790',19425,19426,4,0),(13913,'22791',19275,19276,4,0),(13914,'22791',19279,19280,4,0),(13915,'22792',19281,19282,4,0),(13916,'22800',18415,18416,4,0),(13917,'22807',18417,18418,4,0),(13918,'22807',18561,18562,4,0),(13919,'22808',44319,44320,4,0),(13920,'22808',18985,18986,4,0),(13921,'22808',18275,18276,4,0),(13922,'22809',19031,19032,4,0),(13923,'22809',18419,18420,4,0),(13924,'22809',19019,19020,4,0),(13925,'22810',18951,18952,4,0),(13926,'22810',19035,19036,4,0),(13927,'22811',19037,19038,4,0),(13928,'22820',18987,18988,4,0),(13929,'22821',18989,18990,4,0),(13930,'22822',18991,18992,4,0),(13931,'22830',18993,18994,4,0),(13932,'22830',18607,18608,4,0),(13933,'22830',18917,18918,4,0),(13934,'22830',18817,18818,4,0),(13935,'22850',19217,19218,4,0),(13936,'22850',18919,18920,4,0),(13937,'22860',18679,18680,4,0),(13938,'22860',18295,18296,4,0),(13939,'22860',18587,18588,4,0),(13940,'22870',19457,19458,4,0),(13941,'22880',18635,18636,4,0),(13942,'22888',18637,18638,4,0),(13943,'22889',18921,18922,4,0),(13944,'22889',18297,18298,4,0),(13945,'23001',19747,19748,4,0),(13946,'23002',19749,19750,4,0),(13947,'23003',19751,19752,4,0),(13948,'23004',19753,19754,4,0),(13949,'23005',19755,19756,4,0),(13950,'23006',19757,19758,4,0),(13951,'23007',19759,19760,4,0),(13952,'23008',19761,19762,4,0),(13953,'23009',19763,19764,4,0),(13954,'23100',19839,19840,4,0),(13955,'23110',19889,19890,4,0),(13956,'23120',19603,19604,4,0),(13957,'23130',19609,19610,4,0),(13958,'23140',19873,19874,4,0),(13959,'23150',20019,20020,4,0),(13960,'23159',20021,20022,4,0),(13961,'23160',19829,19830,4,0),(13962,'23170',19793,19794,4,0),(13963,'23180',19691,19692,4,0),(13964,'23190',19891,19892,4,0),(13965,'23191',19621,19622,4,0),(13966,'23192',19623,19624,4,0),(13967,'23193',19605,19606,4,0),(13968,'23194',19765,19766,4,0),(13969,'23196',19767,19768,4,0),(13970,'23196',20023,20024,4,0),(13971,'23200',19785,19786,4,0),(13972,'23210',19699,19700,4,0),(13973,'23211',19617,19618,4,0),(13974,'23212',19787,19788,4,0),(13975,'23213',19929,19930,4,0),(13976,'23214',19789,19790,4,0),(13977,'23214',19563,19564,4,0),(13978,'23215',19513,19514,4,0),(13979,'23220',20027,20028,4,0),(13980,'23230',19535,19536,4,0),(13981,'23239',19537,19538,4,0),(13982,'23240',19869,19870,4,0),(13983,'23250',19953,19954,4,0),(13984,'23260',19627,19628,4,0),(13985,'23264',19651,19652,4,0),(13986,'23265',19861,19862,4,0),(13987,'23266',19863,19864,4,0),(13988,'23267',19865,19866,4,0),(13989,'23268',19653,19654,4,0),(13990,'23269',19655,19656,4,0),(13991,'23270',19977,19978,4,0),(13992,'23280',19569,19570,4,0),(13993,'23289',19541,19542,4,0),(13994,'23289',19571,19572,4,0),(13995,'23290',19937,19938,4,0),(13996,'23291',19939,19940,4,0),(13997,'23292',19711,19712,4,0),(13998,'23293',19961,19962,4,0),(13999,'23293',19713,19714,4,0),(14000,'23294',19941,19942,4,0),(14001,'23294',19963,19964,4,0),(14002,'23295',19965,19966,4,0),(14003,'23296',19943,19944,4,0),(14004,'23297',19945,19946,4,0),(14005,'23298',19947,19948,4,0),(14006,'23300',20035,20036,4,0),(14007,'23310',20037,20038,4,0),(14008,'23311',19957,19958,4,0),(14009,'23312',20039,20040,4,0),(14010,'23314',20007,20008,4,0),(14011,'23315',20041,20042,4,0),(14012,'23320',19995,19996,4,0),(14013,'23330',20051,20052,4,0),(14014,'23337',19715,19716,4,0),(14015,'23338',19737,19738,4,0),(14016,'23339',20053,20054,4,0),(14017,'23340',19967,19968,4,0),(14018,'23340',19543,19544,4,0),(14019,'23350',19905,19906,4,0),(14020,'23359',19907,19908,4,0),(14021,'23360',19803,19804,4,0),(14022,'23369',19805,19806,4,0),(14023,'23370',19877,19878,4,0),(14024,'23379',19969,19970,4,0),(14025,'23380',19973,19974,4,0),(14026,'23390',19591,19592,4,0),(14027,'23391',20003,20004,4,0),(14028,'23392',19695,19696,4,0),(14029,'23393',20061,20062,4,0),(14030,'23400',20009,20010,4,0),(14031,'23410',19925,19926,4,0),(14032,'23411',19547,19548,4,0),(14033,'23412',19919,19920,4,0),(14034,'23413',20011,20012,4,0),(14035,'23420',19613,19614,4,0),(14036,'23430',19921,19922,4,0),(14037,'23440',19549,19550,4,0),(14038,'23450',19731,19732,4,0),(14039,'23460',19881,19882,4,0),(14040,'23468',19883,19884,4,0),(14041,'23469',20013,20014,4,0),(14042,'23469',19641,19642,4,0),(14043,'23470',19659,19660,4,0),(14044,'23470',19643,19644,4,0),(14045,'23476',19797,19798,4,0),(14046,'23477',19661,19662,4,0),(14047,'23478',19949,19950,4,0),(14048,'23479',19799,19800,4,0),(14049,'23479',19645,19646,4,0),(14050,'23480',19911,19912,4,0),(14051,'23485',19647,19648,4,0),(14052,'23485',19899,19900,4,0),(14053,'23485',19885,19886,4,0),(14054,'23486',19901,19902,4,0),(14055,'23486',19707,19708,4,0),(14056,'23487',19727,19728,4,0),(14057,'23488',19913,19914,4,0),(14058,'23488',19675,19676,4,0),(14059,'23489',19915,19916,4,0),(14060,'23490',19817,19818,4,0),(14061,'23490',19733,19734,4,0),(14062,'23499',20029,20030,4,0),(14063,'23500',19781,19782,4,0),(14064,'23509',20015,20016,4,0),(14065,'23510',19981,19982,4,0),(14066,'23519',19833,19834,4,0),(14067,'23519',19983,19984,4,0),(14068,'23520',19581,19582,4,0),(14069,'23528',19835,19836,4,0),(14070,'23529',19841,19842,4,0),(14071,'23529',19551,19552,4,0),(14072,'23529',19583,19584,4,0),(14073,'23529',20065,20066,4,0),(14074,'23530',19777,19778,4,0),(14075,'23537',19575,19576,4,0),(14076,'23538',19481,19482,4,0),(14077,'23539',19553,19554,4,0),(14078,'23539',19577,19578,4,0),(14079,'23540',19999,20000,4,0),(14080,'23550',19595,19596,4,0),(14081,'23560',19721,19722,4,0),(14082,'23568',19587,19588,4,0),(14083,'23569',19723,19724,4,0),(14084,'23569',19717,19718,4,0),(14085,'23590',19597,19598,4,0),(14086,'23591',19813,19814,4,0),(14087,'23591',19599,19600,4,0),(14088,'23600',19849,19850,4,0),(14089,'23610',19685,19686,4,0),(14090,'23611',19703,19704,4,0),(14091,'23612',19933,19934,4,0),(14092,'23614',19851,19852,4,0),(14093,'23615',19853,19854,4,0),(14094,'23616',19687,19688,4,0),(14095,'23620',19857,19858,4,0),(14096,'23628',19669,19670,4,0),(14097,'23628',19637,19638,4,0),(14098,'23629',19741,19742,4,0),(14099,'23630',20067,20068,4,0),(14100,'23638',20069,20070,4,0),(14101,'23639',19769,19770,4,0),(14102,'23640',19987,19988,4,0),(14103,'23650',19991,19992,4,0),(14104,'23657',19665,19666,4,0),(14105,'23658',19773,19774,4,0),(14106,'23659',20057,20058,4,0),(14107,'23660',19505,19506,4,0),(14108,'23669',19507,19508,4,0),(14109,'23670',19631,19632,4,0),(14110,'23680',19485,19486,4,0),(14111,'23684',19487,19488,4,0),(14112,'23685',19489,19490,4,0),(14113,'23685',19509,19510,4,0),(14114,'23686',19491,19492,4,0),(14115,'23686',19677,19678,4,0),(14116,'23687',19493,19494,4,0),(14117,'23688',19495,19496,4,0),(14118,'23689',19497,19498,4,0),(14119,'23690',19679,19680,4,0),(14120,'23691',19499,19500,4,0),(14121,'23691',19681,19682,4,0),(14122,'23692',19501,19502,4,0),(14123,'23693',19633,19634,4,0),(14124,'23700',19819,19820,4,0),(14125,'23710',19559,19560,4,0),(14126,'23711',19565,19566,4,0),(14127,'23712',19743,19744,4,0),(14128,'23713',20031,20032,4,0),(14129,'23713',19821,19822,4,0),(14130,'23720',19671,19672,4,0),(14131,'23730',20045,20046,4,0),(14132,'23740',19517,19518,4,0),(14133,'23746',19809,19810,4,0),(14134,'23747',19555,19556,4,0),(14135,'23747',19519,19520,4,0),(14136,'23748',19521,19522,4,0),(14137,'23749',19523,19524,4,0),(14138,'23749',20047,20048,4,0),(14139,'23750',19531,19532,4,0),(14140,'23760',19527,19528,4,0),(14141,'23770',19845,19846,4,0),(14142,'23780',19825,19826,4,0),(14143,'23790',19895,19896,4,0),(14144,'24001',22443,22444,4,0),(14145,'24002',22445,22446,4,0),(14146,'24003',22447,22448,4,0),(14147,'24003',22639,22640,4,0),(14148,'24004',22449,22450,4,0),(14149,'24005',22451,22452,4,0),(14150,'24006',22453,22454,4,0),(14151,'24007',22455,22456,4,0),(14152,'24008',22457,22458,4,0),(14153,'24009',22459,22460,4,0),(14154,'24009',22813,22814,4,0),(14155,'24010',22461,22462,4,0),(14156,'24010',22815,22816,4,0),(14157,'24100',23221,23222,4,0),(14158,'24110',23223,23224,4,0),(14159,'24111',23225,23226,4,0),(14160,'24112',23227,23228,4,0),(14161,'24113',23229,23230,4,0),(14162,'24114',23231,23232,4,0),(14163,'24120',22963,22964,4,0),(14164,'24121',22941,22942,4,0),(14165,'24122',22227,22228,4,0),(14166,'24123',22087,22088,4,0),(14167,'24124',22893,22894,4,0),(14168,'24124',22965,22966,4,0),(14169,'24125',22967,22968,4,0),(14170,'24126',22761,22762,4,0),(14171,'24126',22969,22970,4,0),(14172,'24127',22763,22764,4,0),(14173,'24127',23129,23130,4,0),(14174,'24130',22543,22544,4,0),(14175,'24131',22765,22766,4,0),(14176,'24132',22767,22768,4,0),(14177,'24133',22769,22770,4,0),(14178,'24133',22545,22546,4,0),(14179,'24134',22771,22772,4,0),(14180,'24134',22547,22548,4,0),(14181,'24135',22549,22550,4,0),(14182,'24136',22551,22552,4,0),(14183,'24137',22553,22554,4,0),(14184,'24138',23233,23234,4,0),(14185,'24139',23235,23236,4,0),(14186,'24140',23237,23238,4,0),(14187,'24141',22025,22026,4,0),(14188,'24142',22027,22028,4,0),(14189,'24143',22831,22832,4,0),(14190,'24143',22029,22030,4,0),(14191,'24144',22833,22834,4,0),(14192,'24145',22835,22836,4,0),(14193,'24145',22947,22948,4,0),(14194,'24146',22949,22950,4,0),(14195,'24148',22475,22476,4,0),(14196,'24149',22477,22478,4,0),(14197,'24150',22261,22262,4,0),(14198,'24150',22865,22866,4,0),(14199,'24150',23209,23210,4,0),(14200,'24151',22867,22868,4,0),(14201,'24152',23199,23200,4,0),(14202,'24153',23211,23212,4,0),(14203,'24154',23213,23214,4,0),(14204,'24155',23215,23216,4,0),(14205,'24156',23053,23054,4,0),(14206,'24160',22321,22322,4,0),(14207,'24161',22323,22324,4,0),(14208,'24161',22241,22242,4,0),(14209,'24162',23383,23384,4,0),(14210,'24163',23217,23218,4,0),(14211,'24163',23385,23386,4,0),(14212,'24164',22325,22326,4,0),(14213,'24165',22327,22328,4,0),(14214,'24166',22329,22330,4,0),(14215,'24170',21873,21874,4,0),(14216,'24170',22145,22146,4,0),(14217,'24171',23393,23394,4,0),(14218,'24171',21875,21876,4,0),(14219,'24172',23411,23412,4,0),(14220,'24172',22137,22138,4,0),(14221,'24172',23323,23324,4,0),(14222,'24174',22139,22140,4,0),(14223,'24175',23325,23326,4,0),(14224,'24190',22463,22464,4,0),(14225,'24190',22817,22818,4,0),(14226,'24191',22819,22820,4,0),(14227,'24192',22465,22466,4,0),(14228,'24192',22573,22574,4,0),(14229,'24193',23361,23362,4,0),(14230,'24194',22935,22936,4,0),(14231,'24195',23055,23056,4,0),(14232,'24195',23363,23364,4,0),(14233,'24196',22943,22944,4,0),(14234,'24197',23365,23366,4,0),(14235,'24198',23149,23150,4,0),(14236,'24199',23399,23400,4,0),(14237,'24200',23139,23140,4,0),(14238,'24205',23141,23142,4,0),(14239,'24206',23243,23244,4,0),(14240,'24206',23077,23078,4,0),(14241,'24206',22099,22100,4,0),(14242,'24206',22301,22302,4,0),(14243,'24207',23245,23246,4,0),(14244,'24207',22533,22534,4,0),(14245,'24208',22587,22588,4,0),(14246,'24209',22339,22340,4,0),(14247,'24209',22589,22590,4,0),(14248,'24210',22501,22502,4,0),(14249,'24212',22015,22016,4,0),(14250,'24217',22507,22508,4,0),(14251,'24218',23089,23090,4,0),(14252,'24218',22503,22504,4,0),(14253,'24219',23387,23388,4,0),(14254,'24220',23097,23098,4,0),(14255,'24221',22045,22046,4,0),(14256,'24222',23349,23350,4,0),(14257,'24223',22519,22520,4,0),(14258,'24223',22591,22592,4,0),(14259,'24223',22297,22298,4,0),(14260,'24224',22021,22022,4,0),(14261,'24224',22237,22238,4,0),(14262,'24224',22593,22594,4,0),(14263,'24225',22199,22200,4,0),(14264,'24225',23339,23340,4,0),(14265,'24225',22049,22050,4,0),(14266,'24226',23389,23390,4,0),(14267,'24226',23401,23402,4,0),(14268,'24227',23057,23058,4,0),(14269,'24228',23059,23060,4,0),(14270,'24230',23133,23134,4,0),(14271,'24231',22157,22158,4,0),(14272,'24231',22575,22576,4,0),(14273,'24232',21881,21882,4,0),(14274,'24233',21883,21884,4,0),(14275,'24233',23287,23288,4,0),(14276,'24234',22435,22436,4,0),(14277,'24234',23289,23290,4,0),(14278,'24235',23353,23354,4,0),(14279,'24236',23355,23356,4,0),(14280,'24237',22851,22852,4,0),(14281,'24237',22973,22974,4,0),(14282,'24237',23253,23254,4,0),(14283,'24238',21863,21864,4,0),(14284,'24238',23293,23294,4,0),(14285,'24239',22169,22170,4,0),(14286,'24240',22909,22910,4,0),(14287,'24248',23043,23044,4,0),(14288,'24248',22427,22428,4,0),(14289,'24249',21939,21940,4,0),(14290,'24249',22635,22636,4,0),(14291,'24249',23419,23420,4,0),(14292,'24249',22429,22430,4,0),(14293,'24250',22159,22160,4,0),(14294,'24250',23135,23136,4,0),(14295,'24251',22577,22578,4,0),(14296,'24251',22161,22162,4,0),(14297,'24251',21885,21886,4,0),(14298,'24252',22855,22856,4,0),(14299,'24252',21941,21942,4,0),(14300,'24252',23045,23046,4,0),(14301,'24253',23063,23064,4,0),(14302,'24257',21963,21964,4,0),(14303,'24270',22081,22082,4,0),(14304,'24271',22471,22472,4,0),(14305,'24272',22173,22174,4,0),(14306,'24273',22439,22440,4,0),(14307,'24273',22175,22176,4,0),(14308,'24274',22775,22776,4,0),(14309,'24275',22777,22778,4,0),(14310,'24275',22895,22896,4,0),(14311,'24276',22897,22898,4,0),(14312,'24277',22899,22900,4,0),(14313,'24280',21923,21924,4,0),(14314,'24281',21925,21926,4,0),(14315,'24282',22821,22822,4,0),(14316,'24282',23151,23152,4,0),(14317,'24283',22083,22084,4,0),(14318,'24284',23037,23038,4,0),(14319,'24285',22721,22722,4,0),(14320,'24285',23039,23040,4,0),(14321,'24285',21927,21928,4,0),(14322,'24286',22343,22344,4,0),(14323,'24287',23377,23378,4,0),(14324,'24287',21929,21930,4,0),(14325,'24288',23379,23380,4,0),(14326,'24288',23369,23370,4,0),(14327,'24290',22879,22880,4,0),(14328,'24291',22515,22516,4,0),(14329,'24292',23157,23158,4,0),(14330,'24293',22363,22364,4,0),(14331,'24294',22317,22318,4,0),(14332,'24300',21913,21914,4,0),(14333,'24310',22287,22288,4,0),(14334,'24310',23007,23008,4,0),(14335,'24311',22289,22290,4,0),(14336,'24312',22347,22348,4,0),(14337,'24312',22291,22292,4,0),(14338,'24313',22349,22350,4,0),(14339,'24314',22125,22126,4,0),(14340,'24315',22293,22294,4,0),(14341,'24315',21915,21916,4,0),(14342,'24316',22127,22128,4,0),(14343,'24317',23009,23010,4,0),(14344,'24318',21917,21918,4,0),(14345,'24319',21919,21920,4,0),(14346,'24319',22557,22558,4,0),(14347,'24319',22351,22352,4,0),(14348,'24320',22799,22800,4,0),(14349,'24323',23159,23160,4,0),(14350,'24323',22133,22134,4,0),(14351,'24324',23145,23146,4,0),(14352,'24324',22367,22368,4,0),(14353,'24325',21945,21946,4,0),(14354,'24325',22313,22314,4,0),(14355,'24326',22801,22802,4,0),(14356,'24327',23413,23414,4,0),(14357,'24328',22803,22804,4,0),(14358,'24328',23415,23416,4,0),(14359,'24328',22141,22142,4,0),(14360,'24329',22431,22432,4,0),(14361,'24329',22805,22806,4,0),(14362,'24330',22917,22918,4,0),(14363,'24339',22919,22920,4,0),(14364,'24339',23335,23336,4,0),(14365,'24340',22335,22336,4,0),(14366,'24341',22273,22274,4,0),(14367,'24342',22041,22042,4,0),(14368,'24343',22255,22256,4,0),(14369,'24343',22903,22904,4,0),(14370,'24344',22905,22906,4,0),(14371,'24344',23311,23312,4,0),(14372,'24344',23395,23396,4,0),(14373,'24344',22257,22258,4,0),(14374,'24345',22921,22922,4,0),(14375,'24346',23177,23178,4,0),(14376,'24347',22579,22580,4,0),(14377,'24347',23179,23180,4,0),(14378,'24350',23371,23372,4,0),(14379,'24356',22007,22008,4,0),(14380,'24356',23405,23406,4,0),(14381,'24357',22009,22010,4,0),(14382,'24358',23373,23374,4,0),(14383,'24359',22843,22844,4,0),(14384,'24359',22825,22826,4,0),(14385,'24360',23275,23276,4,0),(14386,'24367',23277,23278,4,0),(14387,'24368',23279,23280,4,0),(14388,'24369',23281,23282,4,0),(14389,'24370',23011,23012,4,0),(14390,'24374',22353,22354,4,0),(14391,'24374',23013,23014,4,0),(14392,'24375',22355,22356,4,0),(14393,'24376',22357,22358,4,0),(14394,'24377',22359,22360,4,0),(14395,'24378',23015,23016,4,0),(14396,'24379',23017,23018,4,0),(14397,'24379',23283,23284,4,0),(14398,'24380',22707,22708,4,0),(14399,'24384',22709,22710,4,0),(14400,'24385',22711,22712,4,0),(14401,'24386',22713,22714,4,0),(14402,'24387',22715,22716,4,0),(14403,'24388',21933,21934,4,0),(14404,'24389',21935,21936,4,0),(14405,'24389',22717,22718,4,0),(14406,'24390',22069,22070,4,0),(14407,'24391',22937,22938,4,0),(14408,'24391',22163,22164,4,0),(14409,'24391',23153,23154,4,0),(14410,'24392',23249,23250,4,0),(14411,'24392',22165,22166,4,0),(14412,'24392',22177,22178,4,0),(14413,'24393',22179,22180,4,0),(14414,'24393',22011,22012,4,0),(14415,'24393',22913,22914,4,0),(14416,'24394',23101,23102,4,0),(14417,'24395',23103,23104,4,0),(14418,'24395',22845,22846,4,0),(14419,'24396',22495,22496,4,0),(14420,'24397',22723,22724,4,0),(14421,'24397',22497,22498,4,0),(14422,'24398',22537,22538,4,0),(14423,'24398',22195,22196,4,0),(14424,'24398',22129,22130,4,0),(14425,'24400',22641,22642,4,0),(14426,'24401',22643,22644,4,0),(14427,'24402',22645,22646,4,0),(14428,'24403',22647,22648,4,0),(14429,'24404',22649,22650,4,0),(14430,'24410',21889,21890,4,0),(14431,'24410',22053,22054,4,0),(14432,'24411',22651,22652,4,0),(14433,'24412',22017,22018,4,0),(14434,'24413',22539,22540,4,0),(14435,'24413',22653,22654,4,0),(14436,'24414',22655,22656,4,0),(14437,'24415',22657,22658,4,0),(14438,'24416',22659,22660,4,0),(14439,'24420',22277,22278,4,0),(14440,'24424',22661,22662,4,0),(14441,'24428',22279,22280,4,0),(14442,'24429',22631,22632,4,0),(14443,'24429',22281,22282,4,0),(14444,'24430',23163,23164,4,0),(14445,'24433',22057,22058,4,0),(14446,'24434',22283,22284,4,0),(14447,'24434',23165,23166,4,0),(14448,'24435',23167,23168,4,0),(14449,'24436',23169,23170,4,0),(14450,'24437',23171,23172,4,0),(14451,'24438',22991,22992,4,0),(14452,'24438',21949,21950,4,0),(14453,'24439',22859,22860,4,0),(14454,'24439',23173,23174,4,0),(14455,'24440',22091,22092,4,0),(14456,'24441',22093,22094,4,0),(14457,'24441',22977,22978,4,0),(14458,'24442',22059,22060,4,0),(14459,'24442',22095,22096,4,0),(14460,'24443',21983,21984,4,0),(14461,'24444',21985,21986,4,0),(14462,'24445',22687,22688,4,0),(14463,'24446',22689,22690,4,0),(14464,'24447',22691,22692,4,0),(14465,'24448',22693,22694,4,0),(14466,'24448',22663,22664,4,0),(14467,'24450',22993,22994,4,0),(14468,'24457',22995,22996,4,0),(14469,'24458',22559,22560,4,0),(14470,'24458',22997,22998,4,0),(14471,'24459',22999,23000,4,0),(14472,'24460',23001,23002,4,0),(14473,'24469',23003,23004,4,0),(14474,'24469',22617,22618,4,0),(14475,'24470',22619,22620,4,0),(14476,'24478',22621,22622,4,0),(14477,'24479',22623,22624,4,0),(14478,'24480',22603,22604,4,0),(14479,'24488',22625,22626,4,0),(14480,'24489',22605,22606,4,0),(14481,'24490',22665,22666,4,0),(14482,'24491',22667,22668,4,0),(14483,'24492',22247,22248,4,0),(14484,'24494',22627,22628,4,0),(14485,'24495',22607,22608,4,0),(14486,'24496',22609,22610,4,0),(14487,'24497',22611,22612,4,0),(14488,'24498',22613,22614,4,0),(14489,'24500',23257,23258,4,0),(14490,'24510',23259,23260,4,0),(14491,'24511',23261,23262,4,0),(14492,'24512',23263,23264,4,0),(14493,'24512',13287,13288,4,0),(14494,'24513',23265,23266,4,0),(14495,'24514',22203,22204,4,0),(14496,'24515',22205,22206,4,0),(14497,'24516',23267,23268,4,0),(14498,'24516',22207,22208,4,0),(14499,'24516',22979,22980,4,0),(14500,'24517',22209,22210,4,0),(14501,'24520',23183,23184,4,0),(14502,'24521',21907,21908,4,0),(14503,'24521',23185,23186,4,0),(14504,'24522',23023,23024,4,0),(14505,'24523',23025,23026,4,0),(14506,'24524',23187,23188,4,0),(14507,'24525',21903,21904,4,0),(14508,'24526',23189,23190,4,0),(14509,'24530',23269,23270,4,0),(14510,'24530',22981,22982,4,0),(14511,'24540',22033,22034,4,0),(14512,'24544',22071,22072,4,0),(14513,'24545',22861,22862,4,0),(14514,'24545',21891,21892,4,0),(14515,'24546',21893,21894,4,0),(14516,'24547',22035,22036,4,0),(14517,'24547',23271,23272,4,0),(14518,'24548',22037,22038,4,0),(14519,'24549',22073,22074,4,0),(14520,'24550',22075,22076,4,0),(14521,'24550',22983,22984,4,0),(14522,'24560',22985,22986,4,0),(14523,'24565',22077,22078,4,0),(14524,'24566',22563,22564,4,0),(14525,'24567',22565,22566,4,0),(14526,'24568',22567,22568,4,0),(14527,'24569',22987,22988,4,0),(14528,'24569',22569,22570,4,0),(14529,'24600',22393,22394,4,0),(14530,'24607',22395,22396,4,0),(14531,'24608',22397,22398,4,0),(14532,'24609',22399,22400,4,0),(14533,'24610',22229,22230,4,0),(14534,'24620',22231,22232,4,0),(14535,'24630',22233,22234,4,0),(14536,'24640',22411,22412,4,0),(14537,'24648',22521,22522,4,0),(14538,'24648',22413,22414,4,0),(14539,'24649',22415,22416,4,0),(14540,'24650',22401,22402,4,0),(14541,'24660',22403,22404,4,0),(14542,'24670',22405,22406,4,0),(14543,'24680',23297,23298,4,0),(14544,'24687',23299,23300,4,0),(14545,'24688',23301,23302,4,0),(14546,'24689',23303,23304,4,0),(14547,'24690',23305,23306,4,0),(14548,'24699',23307,23308,4,0),(14549,'24700',21897,21898,4,0),(14550,'24710',22847,22848,4,0),(14551,'24711',23315,23316,4,0),(14552,'24711',23343,23344,4,0),(14553,'24712',23317,23318,4,0),(14554,'24713',23319,23320,4,0),(14555,'24714',21989,21990,4,0),(14556,'24715',21991,21992,4,0),(14557,'24716',21993,21994,4,0),(14558,'24717',22481,22482,4,0),(14559,'24717',22925,22926,4,0),(14560,'24717',23049,23050,4,0),(14561,'24717',22489,22490,4,0),(14562,'24718',21899,21900,4,0),(14563,'24718',21995,21996,4,0),(14564,'24719',23345,23346,4,0),(14565,'24720',22873,22874,4,0),(14566,'24721',22491,22492,4,0),(14567,'24721',22109,22110,4,0),(14568,'24722',22875,22876,4,0),(14569,'24723',22483,22484,4,0),(14570,'24724',22485,22486,4,0),(14571,'24730',22251,22252,4,0),(14572,'24731',22927,22928,4,0),(14573,'24732',22929,22930,4,0),(14574,'24732',23105,23106,4,0),(14575,'24733',22733,22734,4,0),(14576,'24734',22117,22118,4,0),(14577,'24735',22119,22120,4,0),(14578,'24736',22121,22122,4,0),(14579,'24738',23029,23030,4,0),(14580,'24739',23019,23020,4,0),(14581,'24740',22931,22932,4,0),(14582,'24740',23031,23032,4,0),(14583,'24740',21909,21910,4,0),(14584,'24740',23239,23240,4,0),(14585,'24741',23033,23034,4,0),(14586,'24742',22103,22104,4,0),(14587,'24743',22263,22264,4,0),(14588,'24744',22265,22266,4,0),(14589,'24744',22105,22106,4,0),(14590,'24745',22267,22268,4,0),(14591,'24746',22269,22270,4,0),(14592,'24750',22375,22376,4,0),(14593,'24760',22113,22114,4,0),(14594,'24760',22839,22840,4,0),(14595,'24760',22407,22408,4,0),(14596,'24761',21867,21868,4,0),(14597,'24762',22727,22728,4,0),(14598,'24762',22883,22884,4,0),(14599,'24763',23407,23408,4,0),(14600,'24763',22955,22956,4,0),(14601,'24763',22739,22740,4,0),(14602,'24764',22597,22598,4,0),(14603,'24764',22957,22958,4,0),(14604,'24764',22377,22378,4,0),(14605,'24765',23329,23330,4,0),(14606,'24765',22753,22754,4,0),(14607,'24766',23331,23332,4,0),(14608,'24766',22599,22600,4,0),(14609,'24766',22379,22380,4,0),(14610,'24767',22885,22886,4,0),(14611,'24767',22735,22736,4,0),(14612,'24768',22959,22960,4,0),(14613,'24769',22153,22154,4,0),(14614,'24790',22781,22782,4,0),(14615,'24791',23421,23422,4,0),(14616,'24791',22783,22784,4,0),(14617,'24792',21869,21870,4,0),(14618,'24792',22729,22730,4,0),(14619,'24792',22677,22678,4,0),(14620,'24793',23107,23108,4,0),(14621,'24794',22755,22756,4,0),(14622,'24795',22889,22890,4,0),(14623,'24795',22757,22758,4,0),(14624,'24795',22827,22828,4,0),(14625,'24796',22679,22680,4,0),(14626,'24796',22371,22372,4,0),(14627,'24797',22809,22810,4,0),(14628,'24800',22183,22184,4,0),(14629,'24810',22787,22788,4,0),(14630,'24811',22789,22790,4,0),(14631,'24812',22791,22792,4,0),(14632,'24813',22185,22186,4,0),(14633,'24814',22793,22794,4,0),(14634,'24815',22187,22188,4,0),(14635,'24816',22189,22190,4,0),(14636,'24820',22305,22306,4,0),(14637,'24820',22523,22524,4,0),(14638,'24830',22525,22526,4,0),(14639,'24836',23193,23194,4,0),(14640,'24836',22527,22528,4,0),(14641,'24837',23195,23196,4,0),(14642,'24837',22063,22064,4,0),(14643,'24837',23067,23068,4,0),(14644,'24838',22065,22066,4,0),(14645,'24839',22529,22530,4,0),(14646,'24840',22419,22420,4,0),(14647,'24843',23069,23070,4,0),(14648,'24844',23071,23072,4,0),(14649,'24845',23073,23074,4,0),(14650,'24846',23081,23082,4,0),(14651,'24847',23083,23084,4,0),(14652,'24848',22421,22422,4,0),(14653,'24848',22869,22870,4,0),(14654,'24849',22423,22424,4,0),(14655,'24849',23085,23086,4,0),(14656,'24850',21965,21966,4,0),(14657,'24852',23201,23202,4,0),(14658,'24852',21967,21968,4,0),(14659,'24853',21969,21970,4,0),(14660,'24854',21971,21972,4,0),(14661,'24855',22701,22702,4,0),(14662,'24856',22743,22744,4,0),(14663,'24857',21973,21974,4,0),(14664,'24857',22703,22704,4,0),(14665,'24858',21975,21976,4,0),(14666,'24859',21977,21978,4,0),(14667,'24860',23203,23204,4,0),(14668,'24860',21979,21980,4,0),(14669,'24869',23205,23206,4,0),(14670,'24870',22383,22384,4,0),(14671,'24877',22385,22386,4,0),(14672,'24878',22387,22388,4,0),(14673,'24878',22331,22332,4,0),(14674,'24879',22389,22390,4,0),(14675,'24880',23111,23112,4,0),(14676,'24882',23113,23114,4,0),(14677,'24883',23115,23116,4,0),(14678,'24884',23117,23118,4,0),(14679,'24885',22697,22698,4,0),(14680,'24885',21953,21954,4,0),(14681,'24886',23119,23120,4,0),(14682,'24887',23121,23122,4,0),(14683,'24888',23123,23124,4,0),(14684,'24888',21877,21878,4,0),(14685,'24888',22147,22148,4,0),(14686,'24889',23125,23126,4,0),(14687,'24890',22307,22308,4,0),(14688,'24891',22309,22310,4,0),(14689,'24892',22149,22150,4,0),(14690,'24893',22683,22684,4,0),(14691,'24900',22747,22748,4,0),(14692,'24911',21955,21956,4,0),(14693,'24912',21957,21958,4,0),(14694,'24913',21959,21960,4,0),(14695,'24914',22671,22672,4,0),(14696,'24915',22673,22674,4,0),(14697,'24916',22583,22584,4,0),(14698,'24917',21999,22000,4,0),(14699,'24918',22749,22750,4,0),(14700,'24920',23091,23092,4,0),(14701,'24930',23093,23094,4,0),(14702,'24940',22243,22244,4,0),(14703,'24950',22191,22192,4,0),(14704,'24960',22795,22796,4,0),(14705,'24960',22213,22214,4,0),(14706,'24970',22215,22216,4,0),(14707,'24980',22217,22218,4,0),(14708,'24989',22219,22220,4,0),(14709,'24990',22221,22222,4,0),(14710,'24991',22223,22224,4,0),(14711,'24994',22001,22002,4,0),(14712,'24994',21857,21858,4,0),(14713,'24995',22003,22004,4,0),(14714,'24996',21859,21860,4,0),(14715,'24996',22511,22512,4,0),(14716,'25001',24137,24138,4,0),(14717,'25002',24139,24140,4,0),(14718,'25003',24141,24142,4,0),(14719,'25004',24143,24144,4,0),(14720,'25005',24145,24146,4,0),(14721,'25006',24147,24148,4,0),(14722,'25007',24149,24150,4,0),(14723,'25008',24151,24152,4,0),(14724,'25100',23515,23516,4,0),(14725,'25110',23531,23532,4,0),(14726,'25110',24573,24574,4,0),(14727,'25111',24153,24154,4,0),(14728,'25112',23897,23898,4,0),(14729,'25113',24155,24156,4,0),(14730,'25114',23899,23900,4,0),(14731,'25120',23491,23492,4,0),(14732,'25122',23957,23958,4,0),(14733,'25123',24575,24576,4,0),(14734,'25124',24403,24404,4,0),(14735,'25125',23503,23504,4,0),(14736,'25126',23523,23524,4,0),(14737,'25126',24577,24578,4,0),(14738,'25130',23499,23500,4,0),(14739,'25131',24565,24566,4,0),(14740,'25132',23651,23652,4,0),(14741,'25133',24703,24704,4,0),(14742,'25134',24041,24042,4,0),(14743,'25135',23471,23472,4,0),(14744,'25136',23713,23714,4,0),(14745,'25137',23763,23764,4,0),(14746,'25138',24591,24592,4,0),(14747,'25139',24209,24210,4,0),(14748,'25140',23549,23550,4,0),(14749,'25141',24587,24588,4,0),(14750,'25142',23645,23646,4,0),(14751,'25143',23779,23780,4,0),(14752,'25144',23647,23648,4,0),(14753,'25150',23561,23562,4,0),(14754,'25151',23577,23578,4,0),(14755,'25152',23771,23772,4,0),(14756,'25153',24367,24368,4,0),(14757,'25154',23705,23706,4,0),(14758,'25155',23979,23980,4,0),(14759,'25160',23915,23916,4,0),(14760,'25161',23495,23496,4,0),(14761,'25162',23475,23476,4,0),(14762,'25163',23809,23810,4,0),(14763,'25164',23837,23838,4,0),(14764,'25165',23971,23972,4,0),(14765,'25170',24595,24596,4,0),(14766,'25171',23467,23468,4,0),(14767,'25172',24241,24242,4,0),(14768,'25173',24501,24502,4,0),(14769,'25174',24505,24506,4,0),(14770,'25175',24455,24456,4,0),(14771,'25176',24569,24570,4,0),(14772,'25177',23621,23622,4,0),(14773,'25177',24007,24008,4,0),(14774,'25178',23667,23668,4,0),(14775,'25179',24193,24194,4,0),(14776,'25180',23479,23480,4,0),(14777,'25181',24497,24498,4,0),(14778,'25182',23455,23456,4,0),(14779,'25183',24467,24468,4,0),(14780,'25184',24201,24202,4,0),(14781,'25185',24011,24012,4,0),(14782,'25186',24127,24128,4,0),(14783,'25187',23519,23520,4,0),(14784,'25190',24157,24158,4,0),(14785,'25191',24159,24160,4,0),(14786,'25192',24161,24162,4,0),(14787,'25193',24163,24164,4,0),(14788,'25193',23481,23482,4,0),(14789,'25193',24431,24432,4,0),(14790,'25194',24165,24166,4,0),(14791,'25195',24167,24168,4,0),(14792,'25196',24169,24170,4,0),(14793,'25197',24171,24172,4,0),(14794,'25198',24173,24174,4,0),(14795,'25199',24175,24176,4,0),(14796,'25200',23725,23726,4,0),(14797,'25210',23927,23928,4,0),(14798,'25211',24427,24428,4,0),(14799,'25211',24581,24582,4,0),(14800,'25211',24205,24206,4,0),(14801,'25212',24539,24540,4,0),(14802,'25212',23831,23832,4,0),(14803,'25212',24583,24584,4,0),(14804,'25213',24375,24376,4,0),(14805,'25213',24515,24516,4,0),(14806,'25213',23727,23728,4,0),(14807,'25214',23729,23730,4,0),(14808,'25214',23853,23854,4,0),(14809,'25214',24459,24460,4,0),(14810,'25214',24095,24096,4,0),(14811,'25215',23855,23856,4,0),(14812,'25215',24445,24446,4,0),(14813,'25216',23961,23962,4,0),(14814,'25216',24447,24448,4,0),(14815,'25217',23919,23920,4,0),(14816,'25217',23581,23582,4,0),(14817,'25217',24245,24246,4,0),(14818,'25217',24377,24378,4,0),(14819,'25218',23911,23912,4,0),(14820,'25218',23731,23732,4,0),(14821,'25218',23833,23834,4,0),(14822,'25220',23617,23618,4,0),(14823,'25221',23819,23820,4,0),(14824,'25222',24471,24472,4,0),(14825,'25230',24217,24218,4,0),(14826,'25240',24313,24314,4,0),(14827,'25240',24109,24110,4,0),(14828,'25241',23903,23904,4,0),(14829,'25242',24213,24214,4,0),(14830,'25243',23775,23776,4,0),(14831,'25244',23877,23878,4,0),(14832,'25245',24663,24664,4,0),(14833,'25250',23633,23634,4,0),(14834,'25260',23951,23952,4,0),(14835,'25261',24315,24316,4,0),(14836,'25261',23953,23954,4,0),(14837,'25262',23597,23598,4,0),(14838,'25263',24347,24348,4,0),(14839,'25264',24681,24682,4,0),(14840,'25265',23709,23710,4,0),(14841,'25266',24197,24198,4,0),(14842,'25266',23613,23614,4,0),(14843,'25267',24437,24438,4,0),(14844,'25268',23827,23828,4,0),(14845,'25268',24637,24638,4,0),(14846,'25269',24639,24640,4,0),(14847,'25270',24421,24422,4,0),(14848,'25271',24423,24424,4,0),(14849,'25271',23857,23858,4,0),(14850,'25280',24287,24288,4,0),(14851,'25280',24475,24476,4,0),(14852,'25281',24189,24190,4,0),(14853,'25282',24433,24434,4,0),(14854,'25283',24121,24122,4,0),(14855,'25283',24269,24270,4,0),(14856,'25284',23995,23996,4,0),(14857,'25285',23931,23932,4,0),(14858,'25286',24265,24266,4,0),(14859,'25286',23535,23536,4,0),(14860,'25286',24289,24290,4,0),(14861,'25286',24327,24328,4,0),(14862,'25287',24331,24332,4,0),(14863,'25287',24393,24394,4,0),(14864,'25287',24291,24292,4,0),(14865,'25288',24123,24124,4,0),(14866,'25289',23601,23602,4,0),(14867,'25289',23701,23702,4,0),(14868,'25290',24395,24396,4,0),(14869,'25290',23743,23744,4,0),(14870,'25300',24519,24520,4,0),(14871,'25310',23445,23446,4,0),(14872,'25315',24235,24236,4,0),(14873,'25316',24351,24352,4,0),(14874,'25317',23447,23448,4,0),(14875,'25318',24279,24280,4,0),(14876,'25318',24309,24310,4,0),(14877,'25318',23449,23450,4,0),(14878,'25318',24363,24364,4,0),(14879,'25320',23545,23546,4,0),(14880,'25327',24067,24068,4,0),(14881,'25330',24667,24668,4,0),(14882,'25331',24561,24562,4,0),(14883,'25331',23451,23452,4,0),(14884,'25332',24003,24004,4,0),(14885,'25333',24317,24318,4,0),(14886,'25334',23717,23718,4,0),(14887,'25335',24319,24320,4,0),(14888,'25336',23629,23630,4,0),(14889,'25337',23625,23626,4,0),(14890,'25340',24249,24250,4,0),(14891,'25340',24649,24650,4,0),(14892,'25341',24253,24254,4,0),(14893,'25341',23739,23740,4,0),(14894,'25341',23923,23924,4,0),(14895,'25343',24439,24440,4,0),(14896,'25344',24441,24442,4,0),(14897,'25350',24521,24522,4,0),(14898,'25351',24523,24524,4,0),(14899,'25352',24525,24526,4,0),(14900,'25353',24527,24528,4,0),(14901,'25354',24529,24530,4,0),(14902,'25360',24531,24532,4,0),(14903,'25400',24091,24092,4,0),(14904,'25410',23987,23988,4,0),(14905,'25411',23885,23886,4,0),(14906,'25412',23823,23824,4,0),(14907,'25413',23999,24000,4,0),(14908,'25420',24359,24360,4,0),(14909,'25430',23975,23976,4,0),(14910,'25440',24707,24708,4,0),(14911,'25450',23983,23984,4,0),(14912,'25460',23735,23736,4,0),(14913,'25471',24029,24030,4,0),(14914,'25480',24535,24536,4,0),(14915,'25500',24033,24034,4,0),(14916,'25510',24055,24056,4,0),(14917,'25511',24057,24058,4,0),(14918,'25512',24059,24060,4,0),(14919,'25513',24061,24062,4,0),(14920,'25513',23583,23584,4,0),(14921,'25513',24035,24036,4,0),(14922,'25514',23791,23792,4,0),(14923,'25514',24461,24462,4,0),(14924,'25515',24063,24064,4,0),(14925,'25516',24037,24038,4,0),(14926,'25516',23755,23756,4,0),(14927,'25517',23757,23758,4,0),(14928,'25518',23759,23760,4,0),(14929,'25520',23793,23794,4,0),(14930,'25526',24069,24070,4,0),(14931,'25526',23795,23796,4,0),(14932,'25527',24071,24072,4,0),(14933,'25528',24073,24074,4,0),(14934,'25529',23797,23798,4,0),(14935,'25530',24653,24654,4,0),(14936,'25537',24655,24656,4,0),(14937,'25538',24657,24658,4,0),(14938,'25539',24257,24258,4,0),(14939,'25539',24659,24660,4,0),(14940,'25540',24081,24082,4,0),(14941,'25547',23813,23814,4,0),(14942,'25548',23689,23690,4,0),(14943,'25549',23609,23610,4,0),(14944,'25550',23663,23664,4,0),(14945,'25551',23841,23842,4,0),(14946,'25551',23553,23554,4,0),(14947,'25551',24677,24678,4,0),(14948,'25552',24671,24672,4,0),(14949,'25552',23799,23800,4,0),(14950,'25553',24673,24674,4,0),(14951,'25554',23801,23802,4,0),(14952,'25555',24451,24452,4,0),(14953,'25555',23803,23804,4,0),(14954,'25555',24463,24464,4,0),(14955,'25556',23805,23806,4,0),(14956,'25557',23815,23816,4,0),(14957,'25560',23485,23486,4,0),(14958,'25560',24487,24488,4,0),(14959,'25566',24479,24480,4,0),(14960,'25567',24489,24490,4,0),(14961,'25568',24491,24492,4,0),(14962,'25569',24481,24482,4,0),(14963,'25569',24493,24494,4,0),(14964,'25570',24625,24626,4,0),(14965,'25571',24113,24114,4,0),(14966,'25571',24627,24628,4,0),(14967,'25571',23865,23866,4,0),(14968,'25572',24629,24630,4,0),(14969,'25573',23507,23508,4,0),(14970,'25574',23509,23510,4,0),(14971,'25575',23511,23512,4,0),(14972,'25576',24115,24116,4,0),(14973,'25576',24631,24632,4,0),(14974,'25577',24117,24118,4,0),(14975,'25580',23861,23862,4,0),(14976,'25583',24603,24604,4,0),(14977,'25584',24605,24606,4,0),(14978,'25586',23537,23538,4,0),(14979,'25587',23539,23540,4,0),(14980,'25588',24015,24016,4,0),(14981,'25589',23541,23542,4,0),(14982,'25590',23585,23586,4,0),(14983,'25591',23587,23588,4,0),(14984,'25592',23589,23590,4,0),(14985,'25592',23679,23680,4,0),(14986,'25593',24483,24484,4,0),(14987,'25594',24371,24372,4,0),(14988,'25594',24131,24132,4,0),(14989,'25595',23869,23870,4,0),(14990,'25595',24547,24548,4,0),(14991,'25595',24133,24134,4,0),(14992,'25595',24017,24018,4,0),(14993,'25596',24019,24020,4,0),(14994,'25597',23845,23846,4,0),(14995,'25597',24021,24022,4,0),(14996,'25598',24259,24260,4,0),(14997,'25599',24261,24262,4,0),(14998,'25600',23593,23594,4,0),(14999,'25610',24299,24300,4,0),(15000,'25611',24085,24086,4,0),(15001,'25611',23437,23438,4,0),(15002,'25611',24301,24302,4,0),(15003,'25612',24087,24088,4,0),(15004,'25612',24303,24304,4,0),(15005,'25613',23681,23682,4,0),(15006,'25614',24305,24306,4,0),(15007,'25615',23683,23684,4,0),(15008,'25616',24237,24238,4,0),(15009,'25617',24045,24046,4,0),(15010,'25617',24643,24644,4,0),(15011,'25620',24607,24608,4,0),(15012,'25630',24509,24510,4,0),(15013,'25631',23693,23694,4,0),(15014,'25632',23695,23696,4,0),(15015,'25632',24415,24416,4,0),(15016,'25633',24609,24610,4,0),(15017,'25633',23697,23698,4,0),(15018,'25634',24611,24612,4,0),(15019,'25635',24613,24614,4,0),(15020,'25636',24615,24616,4,0),(15021,'25637',24617,24618,4,0),(15022,'25638',23889,23890,4,0),(15023,'25638',24183,24184,4,0),(15024,'25639',24185,24186,4,0),(15025,'25639',23891,23892,4,0),(15026,'25640',24619,24620,4,0),(15027,'25650',23935,23936,4,0),(15028,'25651',23429,23430,4,0),(15029,'25651',23937,23938,4,0),(15030,'25652',23431,23432,4,0),(15031,'25653',23939,23940,4,0),(15032,'25654',24621,24622,4,0),(15033,'25655',23941,23942,4,0),(15034,'25656',23943,23944,4,0),(15035,'25657',23945,23946,4,0),(15036,'25658',23947,23948,4,0),(15037,'25660',23487,23488,4,0),(15038,'25670',24543,24544,4,0),(15039,'25680',24645,24646,4,0),(15040,'25689',23893,23894,4,0),(15041,'25690',24691,24692,4,0),(15042,'25691',23439,23440,4,0),(15043,'25692',23685,23686,4,0),(15044,'25692',23441,23442,4,0),(15045,'25693',24407,24408,4,0),(15046,'25700',24049,24050,4,0),(15047,'25710',24051,24052,4,0),(15048,'25711',24227,24228,4,0),(15049,'25712',24229,24230,4,0),(15050,'25713',24381,24382,4,0),(15051,'25714',24099,24100,4,0),(15052,'25714',24383,24384,4,0),(15053,'25714',24231,24232,4,0),(15054,'25715',23459,23460,4,0),(15055,'25716',23907,23908,4,0),(15056,'25717',24633,24634,4,0),(15057,'25717',23967,23968,4,0),(15058,'25717',24077,24078,4,0),(15059,'25717',23461,23462,4,0),(15060,'25718',23463,23464,4,0),(15061,'25719',23849,23850,4,0),(15062,'25720',23637,23638,4,0),(15063,'25721',24399,24400,4,0),(15064,'25721',24343,24344,4,0),(15065,'25721',23639,23640,4,0),(15066,'25722',23557,23558,4,0),(15067,'25722',23721,23722,4,0),(15068,'25722',23783,23784,4,0),(15069,'25723',23785,23786,4,0),(15070,'25724',23641,23642,4,0),(15071,'25724',24221,24222,4,0),(15072,'25725',24223,24224,4,0),(15073,'25726',24179,24180,4,0),(15074,'25727',24355,24356,4,0),(15075,'25730',23565,23566,4,0),(15076,'25735',24695,24696,4,0),(15077,'25736',23567,23568,4,0),(15078,'25736',24697,24698,4,0),(15079,'25737',23569,23570,4,0),(15080,'25737',23527,23528,4,0),(15081,'25737',23603,23604,4,0),(15082,'25737',23881,23882,4,0),(15083,'25737',23767,23768,4,0),(15084,'25738',23571,23572,4,0),(15085,'25738',24699,24700,4,0),(15086,'25739',23573,23574,4,0),(15087,'25740',24335,24336,4,0),(15088,'25746',24337,24338,4,0),(15089,'25747',23433,23434,4,0),(15090,'25747',23991,23992,4,0),(15091,'25748',24281,24282,4,0),(15092,'25748',24685,24686,4,0),(15093,'25748',23671,23672,4,0),(15094,'25749',24283,24284,4,0),(15095,'25749',24339,24340,4,0),(15096,'25749',24687,24688,4,0),(15097,'25750',24555,24556,4,0),(15098,'25751',24557,24558,4,0),(15099,'25752',23655,23656,4,0),(15100,'25753',24411,24412,4,0),(15101,'25753',23657,23658,4,0),(15102,'25772',23659,23660,4,0),(15103,'25790',23747,23748,4,0),(15104,'25790',24271,24272,4,0),(15105,'25790',24323,24324,4,0),(15106,'25790',24275,24276,4,0),(15107,'25791',24551,24552,4,0),(15108,'25792',23605,23606,4,0),(15109,'25793',23749,23750,4,0),(15110,'25794',23751,23752,4,0),(15111,'25794',24295,24296,4,0),(15112,'25794',23873,23874,4,0),(15113,'25794',23675,23676,4,0),(15114,'25795',24101,24102,4,0),(15115,'25795',24385,24386,4,0),(15116,'25796',24387,24388,4,0),(15117,'25797',24389,24390,4,0),(15118,'25798',24105,24106,4,0),(15119,'25799',23787,23788,4,0),(15120,'26001',21483,21484,4,0),(15121,'26002',21485,21486,4,0),(15122,'26003',21487,21488,4,0),(15123,'26004',21489,21490,4,0),(15124,'26005',21491,21492,4,0),(15125,'26006',21493,21494,4,0),(15126,'26006',21797,21798,4,0),(15127,'26007',21495,21496,4,0),(15128,'26008',21497,21498,4,0),(15129,'26009',21499,21500,4,0),(15130,'26100',21145,21146,4,0),(15131,'26100',21741,21742,4,0),(15132,'26110',21563,21564,4,0),(15133,'26111',21605,21606,4,0),(15134,'26111',21147,21148,4,0),(15135,'26120',21115,21116,4,0),(15136,'26121',21549,21550,4,0),(15137,'26121',21785,21786,4,0),(15138,'26122',21613,21614,4,0),(15139,'26122',21397,21398,4,0),(15140,'26123',21803,21804,4,0),(15141,'26124',21345,21346,4,0),(15142,'26124',21567,21568,4,0),(15143,'26124',21593,21594,4,0),(15144,'26125',21831,21832,4,0),(15145,'26126',21503,21504,4,0),(15146,'26130',21629,21630,4,0),(15147,'26130',21119,21120,4,0),(15148,'26130',21315,21316,4,0),(15149,'26131',21681,21682,4,0),(15150,'26131',21463,21464,4,0),(15151,'26131',21637,21638,4,0),(15152,'26132',21719,21720,4,0),(15153,'26132',21479,21480,4,0),(15154,'26132',21683,21684,4,0),(15155,'26132',21715,21716,4,0),(15156,'26133',21111,21112,4,0),(15157,'26133',21439,21440,4,0),(15158,'26133',21663,21664,4,0),(15159,'26133',21625,21626,4,0),(15160,'26134',21539,21540,4,0),(15161,'26134',21737,21738,4,0),(15162,'26134',21455,21456,4,0),(15163,'26135',21459,21460,4,0),(15164,'26135',21243,21244,4,0),(15165,'26140',21467,21468,4,0),(15166,'26141',21121,21122,4,0),(15167,'26142',21799,21800,4,0),(15168,'26143',21531,21532,4,0),(15169,'26144',21323,21324,4,0),(15170,'26144',21575,21576,4,0),(15171,'26144',21393,21394,4,0),(15172,'26145',21577,21578,4,0),(15173,'26146',21349,21350,4,0),(15174,'26147',21579,21580,4,0),(15175,'26148',21581,21582,4,0),(15176,'26151',21179,21180,4,0),(15177,'26160',21101,21102,4,0),(15178,'26190',21551,21552,4,0),(15179,'26191',21707,21708,4,0),(15180,'26200',21543,21544,4,0),(15181,'26200',21413,21414,4,0),(15182,'26210',21151,21152,4,0),(15183,'26210',21723,21724,4,0),(15184,'26210',21307,21308,4,0),(15185,'26211',21379,21380,4,0),(15186,'26211',21725,21726,4,0),(15187,'26211',21375,21376,4,0),(15188,'26212',21647,21648,4,0),(15189,'26212',21381,21382,4,0),(15190,'26212',8207,8208,4,0),(15191,'26212',21285,21286,4,0),(15192,'26212',21389,21390,4,0),(15193,'26213',21475,21476,4,0),(15194,'26213',21571,21572,4,0),(15195,'26213',21733,21734,4,0),(15196,'26213',21423,21424,4,0),(15197,'26214',21641,21642,4,0),(15198,'26214',21337,21338,4,0),(15199,'26215',21753,21754,4,0),(15200,'26216',21659,21660,4,0),(15201,'26220',21589,21590,4,0),(15202,'26221',21401,21402,4,0),(15203,'26222',21643,21644,4,0),(15204,'26223',21435,21436,4,0),(15205,'26224',21745,21746,4,0),(15206,'26230',21273,21274,4,0),(15207,'26240',21277,21278,4,0),(15208,'26241',21207,21208,4,0),(15209,'26250',21691,21692,4,0),(15210,'26250',21173,21174,4,0),(15211,'26256',21793,21794,4,0),(15212,'26257',21199,21200,4,0),(15213,'26257',21427,21428,4,0),(15214,'26258',21515,21516,4,0),(15215,'26258',21311,21312,4,0),(15216,'26259',21405,21406,4,0),(15217,'26259',21819,21820,4,0),(15218,'26259',21333,21334,4,0),(15219,'26260',21695,21696,4,0),(15220,'26261',21699,21700,4,0),(15221,'26261',21597,21598,4,0),(15222,'26270',21585,21586,4,0),(15223,'26280',21369,21370,4,0),(15224,'26288',21773,21774,4,0),(15225,'26288',21851,21852,4,0),(15226,'26289',21371,21372,4,0),(15227,'26290',21235,21236,4,0),(15228,'26291',21843,21844,4,0),(15229,'26291',21303,21304,4,0),(15230,'26291',21667,21668,4,0),(15231,'26292',21415,21416,4,0),(15232,'26292',21789,21790,4,0),(15233,'26300',21545,21546,4,0),(15234,'26310',21195,21196,4,0),(15235,'26311',21319,21320,4,0),(15236,'26311',21251,21252,4,0),(15237,'26311',21159,21160,4,0),(15238,'26311',21269,21270,4,0),(15239,'26312',21223,21224,4,0),(15240,'26312',21163,21164,4,0),(15241,'26312',21757,21758,4,0),(15242,'26313',21765,21766,4,0),(15243,'26314',21447,21448,4,0),(15244,'26315',21281,21282,4,0),(15245,'26315',21137,21138,4,0),(15246,'26315',21507,21508,4,0),(15247,'26315',21677,21678,4,0),(15248,'26320',21203,21204,4,0),(15249,'26321',21227,21228,4,0),(15250,'26321',21519,21520,4,0),(15251,'26321',21729,21730,4,0),(15252,'26321',21827,21828,4,0),(15253,'26321',21471,21472,4,0),(15254,'26321',21601,21602,4,0),(15255,'26322',21155,21156,4,0),(15256,'26322',21231,21232,4,0),(15257,'26323',21431,21432,4,0),(15258,'26323',21191,21192,4,0),(15259,'26324',21133,21134,4,0),(15260,'26325',21811,21812,4,0),(15261,'26325',21265,21266,4,0),(15262,'26325',21261,21262,4,0),(15263,'26325',21807,21808,4,0),(15264,'26326',21655,21656,4,0),(15265,'26327',21211,21212,4,0),(15266,'26328',21365,21366,4,0),(15267,'26329',21511,21512,4,0),(15268,'26329',21839,21840,4,0),(15269,'26329',21253,21254,4,0),(15270,'26329',21257,21258,4,0),(15271,'26329',21823,21824,4,0),(15272,'26329',21781,21782,4,0),(15273,'26329',21835,21836,4,0),(15274,'26330',21239,21240,4,0),(15275,'26338',21671,21672,4,0),(15276,'26339',21673,21674,4,0),(15277,'26339',21097,21098,4,0),(15278,'26340',21651,21652,4,0),(15279,'26350',21289,21290,4,0),(15280,'26359',21749,21750,4,0),(15281,'26360',21385,21386,4,0),(15282,'26370',21559,21560,4,0),(15283,'26371',21777,21778,4,0),(15284,'26371',21711,21712,4,0),(15285,'26372',21443,21444,4,0),(15286,'26373',21341,21342,4,0),(15287,'26374',21523,21524,4,0),(15288,'26375',21361,21362,4,0),(15289,'26376',21703,21704,4,0),(15290,'26500',21247,21248,4,0),(15291,'26509',21125,21126,4,0),(15292,'26510',21609,21610,4,0),(15293,'26511',21353,21354,4,0),(15294,'26512',21761,21762,4,0),(15295,'26513',21183,21184,4,0),(15296,'26520',21293,21294,4,0),(15297,'26525',21451,21452,4,0),(15298,'26526',21327,21328,4,0),(15299,'26527',21329,21330,4,0),(15300,'26527',21295,21296,4,0),(15301,'26528',21297,21298,4,0),(15302,'26529',21299,21300,4,0),(15303,'26530',21105,21106,4,0),(15304,'26531',21107,21108,4,0),(15305,'26532',21769,21770,4,0),(15306,'26533',21555,21556,4,0),(15307,'26540',21141,21142,4,0),(15308,'26550',21633,21634,4,0),(15309,'26559',21129,21130,4,0),(15310,'26560',21187,21188,4,0),(15311,'26570',21621,21622,4,0),(15312,'26580',21175,21176,4,0),(15313,'26584',21419,21420,4,0),(15314,'26585',21687,21688,4,0),(15315,'26585',21167,21168,4,0),(15316,'26586',21357,21358,4,0),(15317,'26586',21847,21848,4,0),(15318,'26586',21527,21528,4,0),(15319,'26587',21815,21816,4,0),(15320,'26587',21409,21410,4,0),(15321,'26587',21535,21536,4,0),(15322,'26588',21215,21216,4,0),(15323,'26588',21219,21220,4,0),(15324,'26589',21617,21618,4,0),(15325,'26589',21169,21170,4,0),(15326,'27001',25231,25232,4,0),(15327,'27002',25233,25234,4,0),(15328,'27003',25235,25236,4,0),(15329,'27004',25237,25238,4,0),(15330,'27100',24713,24714,4,0),(15331,'27110',24715,24716,4,0),(15332,'27111',24717,24718,4,0),(15333,'27112',24719,24720,4,0),(15334,'27113',25395,25396,4,0),(15335,'27113',24721,24722,4,0),(15336,'27114',24723,24724,4,0),(15337,'27115',24725,24726,4,0),(15338,'27116',24727,24728,4,0),(15339,'27117',24729,24730,4,0),(15340,'27118',24731,24732,4,0),(15341,'27120',25003,25004,4,0),(15342,'27122',25005,25006,4,0),(15343,'27123',25007,25008,4,0),(15344,'27124',25009,25010,4,0),(15345,'27125',25011,25012,4,0),(15346,'27126',25013,25014,4,0),(15347,'27127',25015,25016,4,0),(15348,'27128',25017,25018,4,0),(15349,'27129',25019,25020,4,0),(15350,'27130',24849,24850,4,0),(15351,'27131',24851,24852,4,0),(15352,'27132',24853,24854,4,0),(15353,'27133',24855,24856,4,0),(15354,'27134',24733,24734,4,0),(15355,'27135',24735,24736,4,0),(15356,'27136',24737,24738,4,0),(15357,'27140',25239,25240,4,0),(15358,'27141',25241,25242,4,0),(15359,'27142',25021,25022,4,0),(15360,'27143',25023,25024,4,0),(15361,'27144',25025,25026,4,0),(15362,'27145',25399,25400,4,0),(15363,'27146',25243,25244,4,0),(15364,'27146',25027,25028,4,0),(15365,'27150',25489,25490,4,0),(15366,'27151',25491,25492,4,0),(15367,'27152',25493,25494,4,0),(15368,'27152',25177,25178,4,0),(15369,'27153',25495,25496,4,0),(15370,'27154',25497,25498,4,0),(15371,'27155',25499,25500,4,0),(15372,'27156',25135,25136,4,0),(15373,'27157',25501,25502,4,0),(15374,'27160',25245,25246,4,0),(15375,'27161',25247,25248,4,0),(15376,'27162',25401,25402,4,0),(15377,'27163',25403,25404,4,0),(15378,'27164',25405,25406,4,0),(15379,'27166',25029,25030,4,0),(15380,'27168',25407,25408,4,0),(15381,'27169',25249,25250,4,0),(15382,'27170',25589,25590,4,0),(15383,'27177',25591,25592,4,0),(15384,'27178',25593,25594,4,0),(15385,'27179',25595,25596,4,0),(15386,'27180',25251,25252,4,0),(15387,'27181',25253,25254,4,0),(15388,'27181',25179,25180,4,0),(15389,'27182',25255,25256,4,0),(15390,'27183',25181,25182,4,0),(15391,'27184',25183,25184,4,0),(15392,'27185',25257,25258,4,0),(15393,'27185',25185,25186,4,0),(15394,'27186',25187,25188,4,0),(15395,'27187',25597,25598,4,0),(15396,'27188',25259,25260,4,0),(15397,'27188',25599,25600,4,0),(15398,'27190',25261,25262,4,0),(15399,'27190',25409,25410,4,0),(15400,'27191',25263,25264,4,0),(15401,'27192',25265,25266,4,0),(15402,'27200',25509,25510,4,0),(15403,'27203',25511,25512,4,0),(15404,'27204',25513,25514,4,0),(15405,'27205',25515,25516,4,0),(15406,'27206',25517,25518,4,0),(15407,'27207',25519,25520,4,0),(15408,'27208',25521,25522,4,0),(15409,'27209',25523,25524,4,0),(15410,'27210',25267,25268,4,0),(15411,'27210',25189,25190,4,0),(15412,'27211',25191,25192,4,0),(15413,'27212',25601,25602,4,0),(15414,'27213',25603,25604,4,0),(15415,'27214',25605,25606,4,0),(15416,'27215',25351,25352,4,0),(15417,'27216',25525,25526,4,0),(15418,'27217',25527,25528,4,0),(15419,'27220',25137,25138,4,0),(15420,'27220',24777,24778,4,0),(15421,'27226',25139,25140,4,0),(15422,'27227',25141,25142,4,0),(15423,'27228',25143,25144,4,0),(15424,'27229',25145,25146,4,0),(15425,'27230',25269,25270,4,0),(15426,'27231',25271,25272,4,0),(15427,'27232',25273,25274,4,0),(15428,'27233',25193,25194,4,0),(15429,'27233',25275,25276,4,0),(15430,'27234',25195,25196,4,0),(15431,'27235',25147,25148,4,0),(15432,'27240',25295,25296,4,0),(15433,'27241',25297,25298,4,0),(15434,'27243',25653,25654,4,0),(15435,'27244',25655,25656,4,0),(15436,'27245',25657,25658,4,0),(15437,'27246',24741,24742,4,0),(15438,'27247',25569,25570,4,0),(15439,'27247',25299,25300,4,0),(15440,'27248',24743,24744,4,0),(15441,'27250',24977,24978,4,0),(15442,'27256',24979,24980,4,0),(15443,'27257',24981,24982,4,0),(15444,'27258',24983,24984,4,0),(15445,'27259',24985,24986,4,0),(15446,'27260',24987,24988,4,0),(15447,'27266',24989,24990,4,0),(15448,'27267',24991,24992,4,0),(15449,'27268',24993,24994,4,0),(15450,'27269',24995,24996,4,0),(15451,'27270',25571,25572,4,0),(15452,'27271',24997,24998,4,0),(15453,'27272',25573,25574,4,0),(15454,'27273',25575,25576,4,0),(15455,'27274',25577,25578,4,0),(15456,'27275',25579,25580,4,0),(15457,'27276',24857,24858,4,0),(15458,'27277',24859,24860,4,0),(15459,'27278',24861,24862,4,0),(15460,'27279',25581,25582,4,0),(15461,'27280',25583,25584,4,0),(15462,'27283',25585,25586,4,0),(15463,'27286',24745,24746,4,0),(15464,'27287',24747,24748,4,0),(15465,'27289',24999,25000,4,0),(15466,'27289',25277,25278,4,0),(15467,'27290',25279,25280,4,0),(15468,'27293',25281,25282,4,0),(15469,'27293',25031,25032,4,0),(15470,'27294',25283,25284,4,0),(15471,'27296',25285,25286,4,0),(15472,'27297',25287,25288,4,0),(15473,'27298',25289,25290,4,0),(15474,'27299',25149,25150,4,0),(15475,'27299',25291,25292,4,0),(15476,'27300',25153,25154,4,0),(15477,'27305',25155,25156,4,0),(15478,'27306',25157,25158,4,0),(15479,'27307',25159,25160,4,0),(15480,'27308',25161,25162,4,0),(15481,'27309',25163,25164,4,0),(15482,'27310',25645,25646,4,0),(15483,'27317',25647,25648,4,0),(15484,'27318',25649,25650,4,0),(15485,'27320',25609,25610,4,0),(15486,'27324',25103,25104,4,0),(15487,'27325',25105,25106,4,0),(15488,'27326',25107,25108,4,0),(15489,'27327',25109,25110,4,0),(15490,'27328',25111,25112,4,0),(15491,'27328',25611,25612,4,0),(15492,'27329',25613,25614,4,0),(15493,'27330',24751,24752,4,0),(15494,'27331',24753,24754,4,0),(15495,'27332',24755,24756,4,0),(15496,'27333',24757,24758,4,0),(15497,'27334',24759,24760,4,0),(15498,'27335',24761,24762,4,0),(15499,'27336',24763,24764,4,0),(15500,'27338',24765,24766,4,0),(15501,'27339',25113,25114,4,0),(15502,'27339',24767,24768,4,0),(15503,'27340',24941,24942,4,0),(15504,'27341',25413,25414,4,0),(15505,'27342',25415,25416,4,0),(15506,'27343',24943,24944,4,0),(15507,'27344',24945,24946,4,0),(15508,'27345',25417,25418,4,0),(15509,'27346',25419,25420,4,0),(15510,'27347',25421,25422,4,0),(15511,'27347',24769,24770,4,0),(15512,'27348',25423,25424,4,0),(15513,'27349',24947,24948,4,0),(15514,'27350',24949,24950,4,0),(15515,'27359',24951,24952,4,0),(15516,'27360',25199,25200,4,0),(15517,'27362',25427,25428,4,0),(15518,'27363',25429,25430,4,0),(15519,'27364',25431,25432,4,0),(15520,'27366',25201,25202,4,0),(15521,'27367',25203,25204,4,0),(15522,'27368',25205,25206,4,0),(15523,'27369',25433,25434,4,0),(15524,'27369',25207,25208,4,0),(15525,'27370',25621,25622,4,0),(15526,'27370',24931,24932,4,0),(15527,'27372',25165,25166,4,0),(15528,'27372',24933,24934,4,0),(15529,'27373',24935,24936,4,0),(15530,'27373',25503,25504,4,0),(15531,'27374',25505,25506,4,0),(15532,'27375',25785,25786,4,0),(15533,'27375',24937,24938,4,0),(15534,'27375',25091,25092,4,0),(15535,'27376',25093,25094,4,0),(15536,'27377',25095,25096,4,0),(15537,'27378',25097,25098,4,0),(15538,'27379',25099,25100,4,0),(15539,'27380',25167,25168,4,0),(15540,'27388',25169,25170,4,0),(15541,'27389',25171,25172,4,0),(15542,'27390',25615,25616,4,0),(15543,'27391',24771,24772,4,0),(15544,'27391',25617,25618,4,0),(15545,'27392',25695,25696,4,0),(15546,'27400',25173,25174,4,0),(15547,'27400',25319,25320,4,0),(15548,'27410',25321,25322,4,0),(15549,'27411',25323,25324,4,0),(15550,'27412',25325,25326,4,0),(15551,'27413',24773,24774,4,0),(15552,'27413',25327,25328,4,0),(15553,'27414',25329,25330,4,0),(15554,'27415',25331,25332,4,0),(15555,'27416',25333,25334,4,0),(15556,'27417',25335,25336,4,0),(15557,'27418',25337,25338,4,0),(15558,'27419',25531,25532,4,0),(15559,'27419',25339,25340,4,0),(15560,'27420',25341,25342,4,0),(15561,'27421',25723,25724,4,0),(15562,'27422',25725,25726,4,0),(15563,'27423',25727,25728,4,0),(15564,'27424',25729,25730,4,0),(15565,'27425',25731,25732,4,0),(15566,'27430',25533,25534,4,0),(15567,'27437',25535,25536,4,0),(15568,'27438',25537,25538,4,0),(15569,'27439',25539,25540,4,0),(15570,'27440',25733,25734,4,0),(15571,'27450',25541,25542,4,0),(15572,'27460',25735,25736,4,0),(15573,'27466',25737,25738,4,0),(15574,'27468',25739,25740,4,0),(15575,'27469',25741,25742,4,0),(15576,'27470',25543,25544,4,0),(15577,'27500',25063,25064,4,0),(15578,'27510',25065,25066,4,0),(15579,'27511',25067,25068,4,0),(15580,'27512',25069,25070,4,0),(15581,'27513',25071,25072,4,0),(15582,'27514',25073,25074,4,0),(15583,'27515',25353,25354,4,0),(15584,'27515',25075,25076,4,0),(15585,'27516',25077,25078,4,0),(15586,'27517',25079,25080,4,0),(15587,'27518',25081,25082,4,0),(15588,'27519',25083,25084,4,0),(15589,'27520',24959,24960,4,0),(15590,'27527',24961,24962,4,0),(15591,'27528',24963,24964,4,0),(15592,'27529',24965,24966,4,0),(15593,'27530',24967,24968,4,0),(15594,'27531',24969,24970,4,0),(15595,'27532',25439,25440,4,0),(15596,'27532',24971,24972,4,0),(15597,'27533',25085,25086,4,0),(15598,'27533',24973,24974,4,0),(15599,'27540',25441,25442,4,0),(15600,'27543',25443,25444,4,0),(15601,'27544',25445,25446,4,0),(15602,'27545',25447,25448,4,0),(15603,'27546',25449,25450,4,0),(15604,'27547',25451,25452,4,0),(15605,'27548',25453,25454,4,0),(15606,'27549',25545,25546,4,0),(15607,'27549',25455,25456,4,0),(15608,'27550',25745,25746,4,0),(15609,'27554',25747,25748,4,0),(15610,'27555',25749,25750,4,0),(15611,'27556',25751,25752,4,0),(15612,'27557',25753,25754,4,0),(15613,'27558',25755,25756,4,0),(15614,'27559',25757,25758,4,0),(15615,'27560',25355,25356,4,0),(15616,'27568',25357,25358,4,0),(15617,'27569',25359,25360,4,0),(15618,'27570',24827,24828,4,0),(15619,'27576',24829,24830,4,0),(15620,'27577',24831,24832,4,0),(15621,'27578',24833,24834,4,0),(15622,'27579',24835,24836,4,0),(15623,'27590',25343,25344,4,0),(15624,'27591',25345,25346,4,0),(15625,'27592',25547,25548,4,0),(15626,'27592',25347,25348,4,0),(15627,'27593',25549,25550,4,0),(15628,'27594',25457,25458,4,0),(15629,'27595',25087,25088,4,0),(15630,'27596',25759,25760,4,0),(15631,'27600',25697,25698,4,0),(15632,'27610',25699,25700,4,0),(15633,'27611',25553,25554,4,0),(15634,'27612',25701,25702,4,0),(15635,'27612',25555,25556,4,0),(15636,'27613',25703,25704,4,0),(15637,'27614',25209,25210,4,0),(15638,'27614',25705,25706,4,0),(15639,'27615',25211,25212,4,0),(15640,'27615',25707,25708,4,0),(15641,'27616',25709,25710,4,0),(15642,'27617',25711,25712,4,0),(15643,'27618',25713,25714,4,0),(15644,'27619',25715,25716,4,0),(15645,'27620',25669,25670,4,0),(15646,'27623',25671,25672,4,0),(15647,'27624',25673,25674,4,0),(15648,'27625',25675,25676,4,0),(15649,'27626',25677,25678,4,0),(15650,'27627',25679,25680,4,0),(15651,'27628',25681,25682,4,0),(15652,'27630',25773,25774,4,0),(15653,'27631',25683,25684,4,0),(15654,'27631',25775,25776,4,0),(15655,'27632',25777,25778,4,0),(15656,'27633',25685,25686,4,0),(15657,'27633',25435,25436,4,0),(15658,'27634',25779,25780,4,0),(15659,'27635',25687,25688,4,0),(15660,'27636',25689,25690,4,0),(15661,'27637',25717,25718,4,0),(15662,'27638',25691,25692,4,0),(15663,'27639',25781,25782,4,0),(15664,'27640',24897,24898,4,0),(15665,'27646',24839,24840,4,0),(15666,'27647',24899,24900,4,0),(15667,'27648',24901,24902,4,0),(15668,'27649',24903,24904,4,0),(15669,'27650',24905,24906,4,0),(15670,'27650',25373,25374,4,0),(15671,'27651',25375,25376,4,0),(15672,'27652',25377,25378,4,0),(15673,'27653',25379,25380,4,0),(15674,'27654',25381,25382,4,0),(15675,'27655',25383,25384,4,0),(15676,'27656',25385,25386,4,0),(15677,'27657',25387,25388,4,0),(15678,'27658',25389,25390,4,0),(15679,'27659',25035,25036,4,0),(15680,'27659',25391,25392,4,0),(15681,'27660',24907,24908,4,0),(15682,'27661',25037,25038,4,0),(15683,'27661',24909,24910,4,0),(15684,'27662',25039,25040,4,0),(15685,'27663',24911,24912,4,0),(15686,'27664',25041,25042,4,0),(15687,'27664',24913,24914,4,0),(15688,'27665',25043,25044,4,0),(15689,'27666',25045,25046,4,0),(15690,'27667',25047,25048,4,0),(15691,'27668',24915,24916,4,0),(15692,'27670',25559,25560,4,0),(15693,'27671',25561,25562,4,0),(15694,'27672',25563,25564,4,0),(15695,'27673',25565,25566,4,0),(15696,'27675',24841,24842,4,0),(15697,'27676',24843,24844,4,0),(15698,'27677',24917,24918,4,0),(15699,'27677',25049,25050,4,0),(15700,'27677',24845,24846,4,0),(15701,'27678',24919,24920,4,0),(15702,'27679',24921,24922,4,0),(15703,'27680',24865,24866,4,0),(15704,'27685',24867,24868,4,0),(15705,'27686',24869,24870,4,0),(15706,'27687',24871,24872,4,0),(15707,'27688',24873,24874,4,0),(15708,'27689',24875,24876,4,0),(15709,'27690',25719,25720,4,0),(15710,'27691',25213,25214,4,0),(15711,'27692',25215,25216,4,0),(15712,'27693',25217,25218,4,0),(15713,'27694',24923,24924,4,0),(15714,'27695',24877,24878,4,0),(15715,'27695',24925,24926,4,0),(15716,'27696',24879,24880,4,0),(15717,'27697',24881,24882,4,0),(15718,'27698',24927,24928,4,0),(15719,'27699',25219,25220,4,0),(15720,'27700',25625,25626,4,0),(15721,'27700',25461,25462,4,0),(15722,'27710',25627,25628,4,0),(15723,'27711',25629,25630,4,0),(15724,'27712',25631,25632,4,0),(15725,'27713',25633,25634,4,0),(15726,'27714',25635,25636,4,0),(15727,'27715',25637,25638,4,0),(15728,'27720',24779,24780,4,0),(15729,'27721',24781,24782,4,0),(15730,'27722',24783,24784,4,0),(15731,'27723',24785,24786,4,0),(15732,'27724',24787,24788,4,0),(15733,'27725',24789,24790,4,0),(15734,'27726',24791,24792,4,0),(15735,'27727',24793,24794,4,0),(15736,'27728',24795,24796,4,0),(15737,'27729',24797,24798,4,0),(15738,'27730',24801,24802,4,0),(15739,'27737',24803,24804,4,0),(15740,'27738',24805,24806,4,0),(15741,'27740',25303,25304,4,0),(15742,'27742',25305,25306,4,0),(15743,'27743',25661,25662,4,0),(15744,'27744',25663,25664,4,0),(15745,'27745',25665,25666,4,0),(15746,'27747',25307,25308,4,0),(15747,'27748',25309,25310,4,0),(15748,'27749',25311,25312,4,0),(15749,'27750',25223,25224,4,0),(15750,'27751',25225,25226,4,0),(15751,'27752',25313,25314,4,0),(15752,'27760',25227,25228,4,0),(15753,'27765',25763,25764,4,0),(15754,'27766',25765,25766,4,0),(15755,'27767',25767,25768,4,0),(15756,'27768',25769,25770,4,0),(15757,'27770',25463,25464,4,0),(15758,'27773',24815,24816,4,0),(15759,'27774',24817,24818,4,0),(15760,'27775',24819,24820,4,0),(15761,'27776',24821,24822,4,0),(15762,'27777',25465,25466,4,0),(15763,'27778',25467,25468,4,0),(15764,'27778',24823,24824,4,0),(15765,'27779',25469,25470,4,0),(15766,'27780',25117,25118,4,0),(15767,'27785',25119,25120,4,0),(15768,'27786',25121,25122,4,0),(15769,'27787',25123,25124,4,0),(15770,'27788',25125,25126,4,0),(15771,'27789',25127,25128,4,0),(15772,'27790',24885,24886,4,0),(15773,'27791',25315,25316,4,0),(15774,'27792',24887,24888,4,0),(15775,'27793',24889,24890,4,0),(15776,'27794',24891,24892,4,0),(15777,'27796',25639,25640,4,0),(15778,'27797',25641,25642,4,0),(15779,'27798',24893,24894,4,0),(15780,'27800',25787,25788,4,0),(15781,'27810',25789,25790,4,0),(15782,'27811',25791,25792,4,0),(15783,'27812',25793,25794,4,0),(15784,'27813',25795,25796,4,0),(15785,'27814',25797,25798,4,0),(15786,'27815',25799,25800,4,0),(15787,'27816',25801,25802,4,0),(15788,'27817',25363,25364,4,0),(15789,'27818',25803,25804,4,0),(15790,'27820',25805,25806,4,0),(15791,'27821',25807,25808,4,0),(15792,'27822',25809,25810,4,0),(15793,'27823',25811,25812,4,0),(15794,'27824',25843,25844,4,0),(15795,'27825',25813,25814,4,0),(15796,'27826',25845,25846,4,0),(15797,'27830',25815,25816,4,0),(15798,'27832',25847,25848,4,0),(15799,'27833',25849,25850,4,0),(15800,'27834',25851,25852,4,0),(15801,'27835',25853,25854,4,0),(15802,'27836',25365,25366,4,0),(15803,'27837',25367,25368,4,0),(15804,'27840',25817,25818,4,0),(15805,'27841',25819,25820,4,0),(15806,'27842',25821,25822,4,0),(15807,'27843',25823,25824,4,0),(15808,'27843',24807,24808,4,0),(15809,'27845',24809,24810,4,0),(15810,'27849',24811,24812,4,0),(15811,'27850',25827,25828,4,0),(15812,'27860',25473,25474,4,0),(15813,'27861',25829,25830,4,0),(15814,'27861',25475,25476,4,0),(15815,'27863',25831,25832,4,0),(15816,'27864',25833,25834,4,0),(15817,'27865',25369,25370,4,0),(15818,'27865',25481,25482,4,0),(15819,'27866',25483,25484,4,0),(15820,'27866',25835,25836,4,0),(15821,'27867',25485,25486,4,0),(15822,'27867',25837,25838,4,0),(15823,'27868',25477,25478,4,0),(15824,'27869',25839,25840,4,0),(15825,'27870',25857,25858,4,0),(15826,'27876',25859,25860,4,0),(15827,'27877',25861,25862,4,0),(15828,'27878',25863,25864,4,0),(15829,'27879',25865,25866,4,0),(15830,'27880',24955,24956,4,0),(15831,'27888',25053,25054,4,0),(15832,'27889',25055,25056,4,0),(15833,'27890',25057,25058,4,0),(15834,'27891',25059,25060,4,0),(15835,'27892',25129,25130,4,0),(15836,'27893',25131,25132,4,0),(15837,'28000',26343,26344,4,0),(15838,'28001',26345,26346,4,0),(15839,'28002',26347,26348,4,0),(15840,'28003',26349,26350,4,0),(15841,'28004',26351,26352,4,0),(15842,'28005',26353,26354,4,0),(15843,'28006',26355,26356,4,0),(15844,'28007',26357,26358,4,0),(15845,'28008',26359,26360,4,0),(15846,'28009',26361,26362,4,0),(15847,'28010',26363,26364,4,0),(15848,'28011',26365,26366,4,0),(15849,'28012',26367,26368,4,0),(15850,'28013',26369,26370,4,0),(15851,'28014',26371,26372,4,0),(15852,'28015',26373,26374,4,0),(15853,'28016',26375,26376,4,0),(15854,'28017',26377,26378,4,0),(15855,'28018',26379,26380,4,0),(15856,'28019',26381,26382,4,0),(15857,'28020',26383,26384,4,0),(15858,'28021',26385,26386,4,0),(15859,'28022',26387,26388,4,0),(15860,'28023',26389,26390,4,0),(15861,'28024',26391,26392,4,0),(15862,'28025',26393,26394,4,0),(15863,'28026',26395,26396,4,0),(15864,'28027',26397,26398,4,0),(15865,'28028',26399,26400,4,0),(15866,'28029',26401,26402,4,0),(15867,'28030',26403,26404,4,0),(15868,'28031',26405,26406,4,0),(15869,'28032',26407,26408,4,0),(15870,'28033',26409,26410,4,0),(15871,'28034',26411,26412,4,0),(15872,'28035',26413,26414,4,0),(15873,'28036',26415,26416,4,0),(15874,'28037',26417,26418,4,0),(15875,'28038',26419,26420,4,0),(15876,'28039',26421,26422,4,0),(15877,'28040',26423,26424,4,0),(15878,'28041',26425,26426,4,0),(15879,'28042',26427,26428,4,0),(15880,'28043',26429,26430,4,0),(15881,'28044',26431,26432,4,0),(15882,'28045',26433,26434,4,0),(15883,'28046',26435,26436,4,0),(15884,'28047',26437,26438,4,0),(15885,'28048',26439,26440,4,0),(15886,'28049',26441,26442,4,0),(15887,'28050',26443,26444,4,0),(15888,'28051',26445,26446,4,0),(15889,'28052',26447,26448,4,0),(15890,'28053',26449,26450,4,0),(15891,'28054',26451,26452,4,0),(15892,'28055',26453,26454,4,0),(15893,'28100',25895,25896,4,0),(15894,'28108',25897,25898,4,0),(15895,'28109',25899,25900,4,0),(15896,'28110',25919,25920,4,0),(15897,'28120',26071,26072,4,0),(15898,'28120',25921,25922,4,0),(15899,'28130',26835,26836,4,0),(15900,'28140',26181,26182,4,0),(15901,'28150',26843,26844,4,0),(15902,'28160',26755,26756,4,0),(15903,'28170',26839,26840,4,0),(15904,'28180',26779,26780,4,0),(15905,'28189',26787,26788,4,0),(15906,'28189',26115,26116,4,0),(15907,'28189',26583,26584,4,0),(15908,'28190',16403,16404,4,0),(15909,'28190',26629,26630,4,0),(15910,'28190',26487,26488,4,0),(15911,'28191',26625,26626,4,0),(15912,'28191',26277,26278,4,0),(15913,'28191',26255,26256,4,0),(15914,'28192',26119,26120,4,0),(15915,'28193',26035,26036,4,0),(15916,'28194',26671,26672,4,0),(15917,'28194',25965,25966,4,0),(15918,'28195',26633,26634,4,0),(15919,'28196',26635,26636,4,0),(15920,'28200',26697,26698,4,0),(15921,'28210',26531,26532,4,0),(15922,'28210',26821,26822,4,0),(15923,'28211',26131,26132,4,0),(15924,'28212',26533,26534,4,0),(15925,'28212',26133,26134,4,0),(15926,'28213',26067,26068,4,0),(15927,'28214',26155,26156,4,0),(15928,'28219',26135,26136,4,0),(15929,'28220',26459,26460,4,0),(15930,'28221',26461,26462,4,0),(15931,'28222',26463,26464,4,0),(15932,'28223',26615,26616,4,0),(15933,'28224',26617,26618,4,0),(15934,'28229',26897,26898,4,0),(15935,'28231',26285,26286,4,0),(15936,'28232',26287,26288,4,0),(15937,'28240',26259,26260,4,0),(15938,'28248',26261,26262,4,0),(15939,'28250',26189,26190,4,0),(15940,'28250',26783,26784,4,0),(15941,'28260',26191,26192,4,0),(15942,'28270',26193,26194,4,0),(15943,'28270',26081,26082,4,0),(15944,'28279',26083,26084,4,0),(15945,'28280',26137,26138,4,0),(15946,'28290',26289,26290,4,0),(15947,'28292',26195,26196,4,0),(15948,'28292',26139,26140,4,0),(15949,'28293',26919,26920,4,0),(15950,'28294',26675,26676,4,0),(15951,'28295',26817,26818,4,0),(15952,'28296',26729,26730,4,0),(15953,'28297',26731,26732,4,0),(15954,'28300',25939,25940,4,0),(15955,'28320',26607,26608,4,0),(15956,'28330',26703,26704,4,0),(15957,'28340',26825,26826,4,0),(15958,'28350',26047,26048,4,0),(15959,'28359',26763,26764,4,0),(15960,'28360',26867,26868,4,0),(15961,'28370',26043,26044,4,0),(15962,'28380',26063,26064,4,0),(15963,'28390',25961,25962,4,0),(15964,'28391',26809,26810,4,0),(15965,'28400',26197,26198,4,0),(15966,'28400',26059,26060,4,0),(15967,'28409',25925,25926,4,0),(15968,'28410',26467,26468,4,0),(15969,'28411',26495,26496,4,0),(15970,'28412',26123,26124,4,0),(15971,'28413',26125,26126,4,0),(15972,'28420',26199,26200,4,0),(15973,'28430',26243,26244,4,0),(15974,'28430',25927,25928,4,0),(15975,'28440',26245,26246,4,0),(15976,'28450',26055,26056,4,0),(15977,'28460',26319,26320,4,0),(15978,'28470',26031,26032,4,0),(15979,'28470',26469,26470,4,0),(15980,'28480',26247,26248,4,0),(15981,'28490',25957,25958,4,0),(15982,'28491',26523,26524,4,0),(15983,'28492',26127,26128,4,0),(15984,'28492',26471,26472,4,0),(15985,'28500',25943,25944,4,0),(15986,'28510',26011,26012,4,0),(15987,'28511',26847,26848,4,0),(15988,'28512',26901,26902,4,0),(15989,'28514',26551,26552,4,0),(15990,'28514',26903,26904,4,0),(15991,'28515',26555,26556,4,0),(15992,'28521',26659,26660,4,0),(15993,'28522',26661,26662,4,0),(15994,'28523',26663,26664,4,0),(15995,'28524',26665,26666,4,0),(15996,'28529',26667,26668,4,0),(15997,'28530',26499,26500,4,0),(15998,'28540',26595,26596,4,0),(15999,'28550',26759,26760,4,0),(16000,'28560',26019,26020,4,0),(16001,'28570',26559,26560,4,0),(16002,'28580',25931,25932,4,0),(16003,'28590',26907,26908,4,0),(16004,'28594',26801,26802,4,0),(16005,'28595',26151,26152,4,0),(16006,'28596',25981,25982,4,0),(16007,'28597',26185,26186,4,0),(16008,'28598',26875,26876,4,0),(16009,'28600',26539,26540,4,0),(16010,'28607',26109,26110,4,0),(16011,'28609',26893,26894,4,0),(16012,'28609',26743,26744,4,0),(16013,'28609',26883,26884,4,0),(16014,'28610',26879,26880,4,0),(16015,'28620',25915,25916,4,0),(16016,'28630',26863,26864,4,0),(16017,'28635',26503,26504,4,0),(16018,'28640',26001,26002,4,0),(16019,'28648',26003,26004,4,0),(16020,'28649',26683,26684,4,0),(16021,'28650',26027,26028,4,0),(16022,'28660',25969,25970,4,0),(16023,'28670',26911,26912,4,0),(16024,'28680',26707,26708,4,0),(16025,'28690',25985,25986,4,0),(16026,'28691',26887,26888,4,0),(16027,'28692',26889,26890,4,0),(16028,'28693',26641,26642,4,0),(16029,'28694',26039,26040,4,0),(16030,'28695',26547,26548,4,0),(16031,'28696',26591,26592,4,0),(16032,'28700',26711,26712,4,0),(16033,'28701',26713,26714,4,0),(16034,'28702',26715,26716,4,0),(16035,'28703',26717,26718,4,0),(16036,'28706',26719,26720,4,0),(16037,'28707',26721,26722,4,0),(16038,'28707',26073,26074,4,0),(16039,'28708',26723,26724,4,0),(16040,'28709',26725,26726,4,0),(16041,'28720',25993,25994,4,0),(16042,'28721',25997,25998,4,0),(16043,'28721',26651,26652,4,0),(16044,'28722',26147,26148,4,0),(16045,'28723',26587,26588,4,0),(16046,'28729',26813,26814,4,0),(16047,'28729',26859,26860,4,0),(16048,'28729',26527,26528,4,0),(16049,'28730',25989,25990,4,0),(16050,'28737',26281,26282,4,0),(16051,'28737',25977,25978,4,0),(16052,'28737',26213,26214,4,0),(16053,'28737',26611,26612,4,0),(16054,'28739',26915,26916,4,0),(16055,'28739',26209,26210,4,0),(16056,'28739',26543,26544,4,0),(16057,'28739',26203,26204,4,0),(16058,'28740',26645,26646,4,0),(16059,'28742',26327,26328,4,0),(16060,'28742',25875,25876,4,0),(16061,'28743',26205,26206,4,0),(16062,'28743',26015,26016,4,0),(16063,'28749',26647,26648,4,0),(16064,'28749',26603,26604,4,0),(16065,'28750',26075,26076,4,0),(16066,'28750',26687,26688,4,0),(16067,'28750',26699,26700,4,0),(16068,'28751',26273,26274,4,0),(16069,'28752',26331,26332,4,0),(16070,'28753',26333,26334,4,0),(16071,'28754',26637,26638,4,0),(16072,'28754',26335,26336,4,0),(16073,'28755',26269,26270,4,0),(16074,'28755',26339,26340,4,0),(16075,'28755',26679,26680,4,0),(16076,'28755',26251,26252,4,0),(16077,'28756',26747,26748,4,0),(16078,'28760',26795,26796,4,0),(16079,'28761',26797,26798,4,0),(16080,'28770',26077,26078,4,0),(16081,'28791',26751,26752,4,0),(16082,'28792',26483,26484,4,0),(16083,'28794',26239,26240,4,0),(16084,'28801',25879,25880,4,0),(16085,'28802',25881,25882,4,0),(16086,'28803',25883,25884,4,0),(16087,'28804',25885,25886,4,0),(16088,'28805',25887,25888,4,0),(16089,'28806',25889,25890,4,0),(16090,'28807',26111,26112,4,0),(16091,'28807',25891,25892,4,0),(16092,'28810',26871,26872,4,0),(16093,'28811',26087,26088,4,0),(16094,'28812',26851,26852,4,0),(16095,'28812',26599,26600,4,0),(16096,'28813',26621,26622,4,0),(16097,'28813',26791,26792,4,0),(16098,'28814',26105,26106,4,0),(16099,'28815',26655,26656,4,0),(16100,'28815',26159,26160,4,0),(16101,'28816',26805,26806,4,0),(16102,'28816',26007,26008,4,0),(16103,'28817',26323,26324,4,0),(16104,'28818',25935,25936,4,0),(16105,'28818',26735,26736,4,0),(16106,'28820',26091,26092,4,0),(16107,'28821',26093,26094,4,0),(16108,'28822',26095,26096,4,0),(16109,'28823',26097,26098,4,0),(16110,'28830',26691,26692,4,0),(16111,'28840',26479,26480,4,0),(16112,'28850',26767,26768,4,0),(16113,'28860',26563,26564,4,0),(16114,'28861',26565,26566,4,0),(16115,'28862',26567,26568,4,0),(16116,'28863',26051,26052,4,0),(16117,'28864',25871,25872,4,0),(16118,'28880',26475,26476,4,0),(16119,'28890',26315,26316,4,0),(16120,'28891',26855,26856,4,0),(16121,'28901',26217,26218,4,0),(16122,'28902',26219,26220,4,0),(16123,'28903',26221,26222,4,0),(16124,'28904',26223,26224,4,0),(16125,'28905',26225,26226,4,0),(16126,'28906',26227,26228,4,0),(16127,'28907',26229,26230,4,0),(16128,'28909',26231,26232,4,0),(16129,'28911',26295,26296,4,0),(16130,'28912',26297,26298,4,0),(16131,'28913',26299,26300,4,0),(16132,'28914',26301,26302,4,0),(16133,'28915',26303,26304,4,0),(16134,'28916',26305,26306,4,0),(16135,'28917',26307,26308,4,0),(16136,'28918',26309,26310,4,0),(16137,'28919',26311,26312,4,0),(16138,'28921',25903,25904,4,0),(16139,'28922',25905,25906,4,0),(16140,'28923',25907,25908,4,0),(16141,'28924',25909,25910,4,0),(16142,'28925',25911,25912,4,0),(16143,'28931',26505,26506,4,0),(16144,'28932',26507,26508,4,0),(16145,'28933',26509,26510,4,0),(16146,'28934',26511,26512,4,0),(16147,'28935',26513,26514,4,0),(16148,'28936',26515,26516,4,0),(16149,'28937',26517,26518,4,0),(16150,'28938',26519,26520,4,0),(16151,'28939',25947,25948,4,0),(16152,'28939',25951,25952,4,0),(16153,'28941',26163,26164,4,0),(16154,'28942',26165,26166,4,0),(16155,'28943',26167,26168,4,0),(16156,'28944',26169,26170,4,0),(16157,'28945',26171,26172,4,0),(16158,'28946',26173,26174,4,0),(16159,'28947',26175,26176,4,0),(16160,'28950',26491,26492,4,0),(16161,'28954',26535,26536,4,0),(16162,'28970',26265,26266,4,0),(16163,'28971',26235,26236,4,0),(16164,'28976',25953,25954,4,0),(16165,'28977',26023,26024,4,0),(16166,'28978',26101,26102,4,0),(16167,'28979',26739,26740,4,0),(16168,'28980',26571,26572,4,0),(16169,'28981',26573,26574,4,0),(16170,'28982',26575,26576,4,0),(16171,'28983',26577,26578,4,0),(16172,'28984',26579,26580,4,0),(16173,'28990',26775,26776,4,0),(16174,'28991',26771,26772,4,0),(16175,'29001',27249,27250,4,0),(16176,'29002',27251,27252,4,0),(16177,'29003',27253,27254,4,0),(16178,'29004',27255,27256,4,0),(16179,'29005',27257,27258,4,0),(16180,'29006',27259,27260,4,0),(16181,'29007',27261,27262,4,0),(16182,'29008',27263,27264,4,0),(16183,'29009',27265,27266,4,0),(16184,'29010',27267,27268,4,0),(16185,'29010',27099,27100,4,0),(16186,'29011',27269,27270,4,0),(16187,'29012',27271,27272,4,0),(16188,'29013',27273,27274,4,0),(16189,'29014',27275,27276,4,0),(16190,'29015',27277,27278,4,0),(16191,'29016',27279,27280,4,0),(16192,'29017',27281,27282,4,0),(16193,'29018',27283,27284,4,0),(16194,'29100',27125,27126,4,0),(16195,'29108',27211,27212,4,0),(16196,'29109',27443,27444,4,0),(16197,'29110',27351,27352,4,0),(16198,'29120',26955,26956,4,0),(16199,'29130',26951,26952,4,0),(16200,'29140',27285,27286,4,0),(16201,'29150',26967,26968,4,0),(16202,'29160',27111,27112,4,0),(16203,'29170',27129,27130,4,0),(16204,'29180',27401,27402,4,0),(16205,'29190',27287,27288,4,0),(16206,'29191',27289,27290,4,0),(16207,'29194',26935,26936,4,0),(16208,'29194',26939,26940,4,0),(16209,'29195',27133,27134,4,0),(16210,'29196',27291,27292,4,0),(16211,'29197',27293,27294,4,0),(16212,'29197',27459,27460,4,0),(16213,'29200',26989,26990,4,0),(16214,'29210',27153,27154,4,0),(16215,'29220',27149,27150,4,0),(16216,'29230',26991,26992,4,0),(16217,'29230',27495,27496,4,0),(16218,'29240',27463,27464,4,0),(16219,'29250',26993,26994,4,0),(16220,'29260',26995,26996,4,0),(16221,'29300',27007,27008,4,0),(16222,'29309',27009,27010,4,0),(16223,'29310',27489,27490,4,0),(16224,'29311',27491,27492,4,0),(16225,'29312',27503,27504,4,0),(16226,'29313',27507,27508,4,0),(16227,'29314',26997,26998,4,0),(16228,'29314',27011,27012,4,0),(16229,'29315',27013,27014,4,0),(16230,'29315',27499,27500,4,0),(16231,'29315',27509,27510,4,0),(16232,'29320',27073,27074,4,0),(16233,'29327',27439,27440,4,0),(16234,'29328',27433,27434,4,0),(16235,'29329',27435,27436,4,0),(16236,'29330',26963,26964,4,0),(16237,'29340',27077,27078,4,0),(16238,'29350',27029,27030,4,0),(16239,'29360',27357,27358,4,0),(16240,'29370',27065,27066,4,0),(16241,'29380',27141,27142,4,0),(16242,'29391',27143,27144,4,0),(16243,'29392',27233,27234,4,0),(16244,'29394',27405,27406,4,0),(16245,'29400',27407,27408,4,0),(16246,'29410',27521,27522,4,0),(16247,'29420',27169,27170,4,0),(16248,'29430',27409,27410,4,0),(16249,'29440',27221,27222,4,0),(16250,'29450',27389,27390,4,0),(16251,'29451',27373,27374,4,0),(16252,'29452',27095,27096,4,0),(16253,'29460',26985,26986,4,0),(16254,'29461',27185,27186,4,0),(16255,'29462',27241,27242,4,0),(16256,'29470',27295,27296,4,0),(16257,'29470',27157,27158,4,0),(16258,'29471',27411,27412,4,0),(16259,'29480',27203,27204,4,0),(16260,'29490',27145,27146,4,0),(16261,'29490',27069,27070,4,0),(16262,'29491',27045,27046,4,0),(16263,'29491',26947,26948,4,0),(16264,'29492',27237,27238,4,0),(16265,'29492',27207,27208,4,0),(16266,'29493',27037,27038,4,0),(16267,'29494',27033,27034,4,0),(16268,'29500',26971,26972,4,0),(16269,'29510',26973,26974,4,0),(16270,'29520',27199,27200,4,0),(16271,'29530',26925,26926,4,0),(16272,'29531',27215,27216,4,0),(16273,'29532',27347,27348,4,0),(16274,'29533',27217,27218,4,0),(16275,'29540',26999,27000,4,0),(16276,'29550',27017,27018,4,0),(16277,'29551',27091,27092,4,0),(16278,'29552',27019,27020,4,0),(16279,'29552',26975,26976,4,0),(16280,'29560',27381,27382,4,0),(16281,'29566',27115,27116,4,0),(16282,'29567',26981,26982,4,0),(16283,'29568',27383,27384,4,0),(16284,'29569',27101,27102,4,0),(16285,'29569',27385,27386,4,0),(16286,'29570',27103,27104,4,0),(16287,'29580',27105,27106,4,0),(16288,'29590',27297,27298,4,0),(16289,'29591',27299,27300,4,0),(16290,'29592',27107,27108,4,0),(16291,'29593',26977,26978,4,0),(16292,'29601',27313,27314,4,0),(16293,'29602',27315,27316,4,0),(16294,'29603',27317,27318,4,0),(16295,'29604',27319,27320,4,0),(16296,'29610',27367,27368,4,0),(16297,'29611',27225,27226,4,0),(16298,'29620',27369,27370,4,0),(16299,'29620',27301,27302,4,0),(16300,'29620',27447,27448,4,0),(16301,'29630',27049,27050,4,0),(16302,'29631',27051,27052,4,0),(16303,'29639',27053,27054,4,0),(16304,'29640',27195,27196,4,0),(16305,'29647',27331,27332,4,0),(16306,'29648',27333,27334,4,0),(16307,'29649',27335,27336,4,0),(16308,'29650',27337,27338,4,0),(16309,'29651',27339,27340,4,0),(16310,'29660',27321,27322,4,0),(16311,'29670',27323,27324,4,0),(16312,'29679',27041,27042,4,0),(16313,'29680',27173,27174,4,0),(16314,'29688',27175,27176,4,0),(16315,'29689',27177,27178,4,0),(16316,'29690',27119,27120,4,0),(16317,'29691',27307,27308,4,0),(16318,'29692',27309,27310,4,0),(16319,'29692',27121,27122,4,0),(16320,'29693',27179,27180,4,0),(16321,'29698',27181,27182,4,0),(16322,'29700',27467,27468,4,0),(16323,'29710',27377,27378,4,0),(16324,'29711',26929,26930,4,0),(16325,'29712',27513,27514,4,0),(16326,'29713',27515,27516,4,0),(16327,'29713',26931,26932,4,0),(16328,'29714',27415,27416,4,0),(16329,'29715',27425,27426,4,0),(16330,'29716',27081,27082,4,0),(16331,'29717',27023,27024,4,0),(16332,'29718',26959,26960,4,0),(16333,'29718',27057,27058,4,0),(16334,'29718',27161,27162,4,0),(16335,'29718',27165,27166,4,0),(16336,'29718',27469,27470,4,0),(16337,'29719',27471,27472,4,0),(16338,'29719',27427,27428,4,0),(16339,'29719',27061,27062,4,0),(16340,'29719',27083,27084,4,0),(16341,'29719',27517,27518,4,0),(16342,'29720',27393,27394,4,0),(16343,'29720',27303,27304,4,0),(16344,'29730',27395,27396,4,0),(16345,'29738',27343,27344,4,0),(16346,'29738',27397,27398,4,0),(16347,'29740',27473,27474,4,0),(16348,'29749',27475,27476,4,0),(16349,'29750',26943,26944,4,0),(16350,'29750',27477,27478,4,0),(16351,'29751',27479,27480,4,0),(16352,'29752',27419,27420,4,0),(16353,'29753',27003,27004,4,0),(16354,'29753',27025,27026,4,0),(16355,'29753',27421,27422,4,0),(16356,'29754',27137,27138,4,0),(16357,'29755',27087,27088,4,0),(16358,'29760',27481,27482,4,0),(16359,'29770',27451,27452,4,0),(16360,'29780',27361,27362,4,0),(16361,'29787',27363,27364,4,0),(16362,'29788',27189,27190,4,0),(16363,'29789',27191,27192,4,0),(16364,'29790',27483,27484,4,0),(16365,'29791',27245,27246,4,0),(16366,'29792',27485,27486,4,0),(16367,'29792',27229,27230,4,0),(16368,'29793',27453,27454,4,0),(16369,'29796',27455,27456,4,0),(16370,'30000',27887,27888,4,0),(16371,'30001',27889,27890,4,0),(16372,'30002',27891,27892,4,0),(16373,'30003',27893,27894,4,0),(16374,'30004',27895,27896,4,0),(16375,'30005',27897,27898,4,0),(16376,'30006',27899,27900,4,0),(16377,'30007',27901,27902,4,0),(16378,'30008',27903,27904,4,0),(16379,'30009',27905,27906,4,0),(16380,'30010',27907,27908,4,0),(16381,'30011',27909,27910,4,0),(16382,'30012',27911,27912,4,0),(16383,'30017',27773,27774,4,0),(16384,'30100',27913,27914,4,0),(16385,'30107',27915,27916,4,0),(16386,'30108',27917,27918,4,0),(16387,'30110',27919,27920,4,0),(16388,'30120',27921,27922,4,0),(16389,'30130',27577,27578,4,0),(16390,'30139',27923,27924,4,0),(16391,'30140',28051,28052,4,0),(16392,'30148',28053,28054,4,0),(16393,'30149',28055,28056,4,0),(16394,'30150',27925,27926,4,0),(16395,'30151',27927,27928,4,0),(16396,'30152',27929,27930,4,0),(16397,'30153',27931,27932,4,0),(16398,'30154',27933,27934,4,0),(16399,'30155',27935,27936,4,0),(16400,'30156',27937,27938,4,0),(16401,'30157',27939,27940,4,0),(16402,'30158',27941,27942,4,0),(16403,'30160',27943,27944,4,0),(16404,'30161',27945,27946,4,0),(16405,'30162',27947,27948,4,0),(16406,'30163',27949,27950,4,0),(16407,'30164',27951,27952,4,0),(16408,'30165',27953,27954,4,0),(16409,'30166',27955,27956,4,0),(16410,'30167',27957,27958,4,0),(16411,'30168',27959,27960,4,0),(16412,'30169',27961,27962,4,0),(16413,'30170',27873,27874,4,0),(16414,'30176',28011,28012,4,0),(16415,'30178',27875,27876,4,0),(16416,'30179',27963,27964,4,0),(16417,'30180',27585,27586,4,0),(16418,'30189',27587,27588,4,0),(16419,'30189',27697,27698,4,0),(16420,'30190',27549,27550,4,0),(16421,'30191',27595,27596,4,0),(16422,'30192',27597,27598,4,0),(16423,'30193',27877,27878,4,0),(16424,'30194',27879,27880,4,0),(16425,'30195',27601,27602,4,0),(16426,'30196',28013,28014,4,0),(16427,'30201',27615,27616,4,0),(16428,'30202',27617,27618,4,0),(16429,'30203',27619,27620,4,0),(16430,'30204',27621,27622,4,0),(16431,'30205',27623,27624,4,0),(16432,'30300',27625,27626,4,0),(16433,'30310',27627,27628,4,0),(16434,'30319',27629,27630,4,0),(16435,'30320',27731,27732,4,0),(16436,'30330',27631,27632,4,0),(16437,'30331',27965,27966,4,0),(16438,'30332',27733,27734,4,0),(16439,'30333',27735,27736,4,0),(16440,'30334',27737,27738,4,0),(16441,'30335',27739,27740,4,0),(16442,'30335',27819,27820,4,0),(16443,'30338',27741,27742,4,0),(16444,'30350',27633,27634,4,0),(16445,'30351',27635,27636,4,0),(16446,'30360',27755,27756,4,0),(16447,'30362',27757,27758,4,0),(16448,'30364',27759,27760,4,0),(16449,'30365',27637,27638,4,0),(16450,'30366',27639,27640,4,0),(16451,'30367',27641,27642,4,0),(16452,'30368',27643,27644,4,0),(16453,'30369',27645,27646,4,0),(16454,'30369',27761,27762,4,0),(16455,'30370',27647,27648,4,0),(16456,'30370',28027,28028,4,0),(16457,'30379',28029,28030,4,0),(16458,'30380',27649,27650,4,0),(16459,'30380',28031,28032,4,0),(16460,'30381',27651,27652,4,0),(16461,'30382',27653,27654,4,0),(16462,'30383',27655,27656,4,0),(16463,'30384',27657,27658,4,0),(16464,'30385',27659,27660,4,0),(16465,'30387',27661,27662,4,0),(16466,'30387',27855,27856,4,0),(16467,'30389',27663,27664,4,0),(16468,'30390',27665,27666,4,0),(16469,'30391',27667,27668,4,0),(16470,'30392',27669,27670,4,0),(16471,'30393',27671,27672,4,0),(16472,'30394',27673,27674,4,0),(16473,'30395',27675,27676,4,0),(16474,'30396',27677,27678,4,0),(16475,'30397',27679,27680,4,0),(16476,'30398',27681,27682,4,0),(16477,'30399',27683,27684,4,0),(16478,'30400',27603,27604,4,0),(16479,'30400',27857,27858,4,0),(16480,'30410',27605,27606,4,0),(16481,'30410',27859,27860,4,0),(16482,'30411',27607,27608,4,0),(16483,'30411',27861,27862,4,0),(16484,'30412',27609,27610,4,0),(16485,'30413',27863,27864,4,0),(16486,'30413',27611,27612,4,0),(16487,'30420',27699,27700,4,0),(16488,'30420',27591,27592,4,0),(16489,'30430',27701,27702,4,0),(16490,'30438',27703,27704,4,0),(16491,'30439',27705,27706,4,0),(16492,'30440',27865,27866,4,0),(16493,'30441',27867,27868,4,0),(16494,'30442',27869,27870,4,0),(16495,'30500',27841,27842,4,0),(16496,'30506',27843,27844,4,0),(16497,'30507',27845,27846,4,0),(16498,'30508',27847,27848,4,0),(16499,'30509',27849,27850,4,0),(16500,'30510',28095,28096,4,0),(16501,'30520',27747,27748,4,0),(16502,'30528',27749,27750,4,0),(16503,'30529',27751,27752,4,0),(16504,'30540',27581,27582,4,0),(16505,'30550',27537,27538,4,0),(16506,'30559',27539,27540,4,0),(16507,'30560',27561,27562,4,0),(16508,'30561',27563,27564,4,0),(16509,'30562',27709,27710,4,0),(16510,'30563',27711,27712,4,0),(16511,'30564',27811,27812,4,0),(16512,'30565',27765,27766,4,0),(16513,'30570',27967,27968,4,0),(16514,'30579',27969,27970,4,0),(16515,'30580',27971,27972,4,0),(16516,'30588',27973,27974,4,0),(16517,'30589',27975,27976,4,0),(16518,'30590',27977,27978,4,0),(16519,'30590',27685,27686,4,0),(16520,'30591',28061,28062,4,0),(16521,'30592',27979,27980,4,0),(16522,'30592',28033,28034,4,0),(16523,'30592',28063,28064,4,0),(16524,'30593',27687,27688,4,0),(16525,'30594',27689,27690,4,0),(16526,'30600',27571,27572,4,0),(16527,'30609',27573,27574,4,0),(16528,'30610',28023,28024,4,0),(16529,'30611',28007,28008,4,0),(16530,'30612',28085,28086,4,0),(16531,'30613',28089,28090,4,0),(16532,'30620',27721,27722,4,0),(16533,'30626',27527,27528,4,0),(16534,'30626',27723,27724,4,0),(16535,'30628',27725,27726,4,0),(16536,'30629',28057,28058,4,0),(16537,'30629',27727,27728,4,0),(16538,'30640',27529,27530,4,0),(16539,'30648',27531,27532,4,0),(16540,'30649',27533,27534,4,0),(16541,'30700',28065,28066,4,0),(16542,'30708',28067,28068,4,0),(16543,'30709',28069,28070,4,0),(16544,'30710',27815,27816,4,0),(16545,'30710',28071,28072,4,0),(16546,'30720',28035,28036,4,0),(16547,'30729',28037,28038,4,0),(16548,'30730',28039,28040,4,0),(16549,'30739',28041,28042,4,0),(16550,'30739',28073,28074,4,0),(16551,'30740',28045,28046,4,0),(16552,'30749',28047,28048,4,0),(16553,'30750',27981,27982,4,0),(16554,'30800',27775,27776,4,0),(16555,'30810',27777,27778,4,0),(16556,'30811',27779,27780,4,0),(16557,'30812',27781,27782,4,0),(16558,'30813',27783,27784,4,0),(16559,'30814',27785,27786,4,0),(16560,'30815',27787,27788,4,0),(16561,'30816',27789,27790,4,0),(16562,'30817',27791,27792,4,0),(16563,'30818',27793,27794,4,0),(16564,'30820',27553,27554,4,0),(16565,'30826',27983,27984,4,0),(16566,'30830',27985,27986,4,0),(16567,'30831',27987,27988,4,0),(16568,'30832',27989,27990,4,0),(16569,'30833',27991,27992,4,0),(16570,'30834',27795,27796,4,0),(16571,'30834',27993,27994,4,0),(16572,'30835',27995,27996,4,0),(16573,'30835',27691,27692,4,0),(16574,'30836',27997,27998,4,0),(16575,'30837',27999,28000,4,0),(16576,'30840',27567,27568,4,0),(16577,'30850',28001,28002,4,0),(16578,'30850',28077,28078,4,0),(16579,'30858',28079,28080,4,0),(16580,'30858',27821,27822,4,0),(16581,'30859',28081,28082,4,0),(16582,'30859',27557,27558,4,0),(16583,'30860',27823,27824,4,0),(16584,'30868',27693,27694,4,0),(16585,'30868',27825,27826,4,0),(16586,'30870',27827,27828,4,0),(16587,'30875',27829,27830,4,0),(16588,'30876',27797,27798,4,0),(16589,'30876',27831,27832,4,0),(16590,'30877',27833,27834,4,0),(16591,'30878',27799,27800,4,0),(16592,'30878',27835,27836,4,0),(16593,'30879',27837,27838,4,0),(16594,'30880',27543,27544,4,0),(16595,'30883',28003,28004,4,0),(16596,'30889',27545,27546,4,0),(16597,'30889',27801,27802,4,0),(16598,'30890',27803,27804,4,0),(16599,'30890',28017,28018,4,0),(16600,'30891',28019,28020,4,0),(16601,'30892',27769,27770,4,0),(16602,'30893',27805,27806,4,0),(16603,'31001',29093,29094,4,0),(16604,'31002',29095,29096,4,0),(16605,'31003',29097,29098,4,0),(16606,'31004',29099,29100,4,0),(16607,'31005',29101,29102,4,0),(16608,'31006',29103,29104,4,0),(16609,'31007',29105,29106,4,0),(16610,'31008',29107,29108,4,0),(16611,'31009',29109,29110,4,0),(16612,'31010',29111,29112,4,0),(16613,'31010',28297,28298,4,0),(16614,'31011',29113,29114,4,0),(16615,'31012',29115,29116,4,0),(16616,'31013',28171,28172,4,0),(16617,'31013',28369,28370,4,0),(16618,'31013',28375,28376,4,0),(16619,'31014',29117,29118,4,0),(16620,'31015',29119,29120,4,0),(16621,'31016',29121,29122,4,0),(16622,'31100',29141,29142,4,0),(16623,'31109',28265,28266,4,0),(16624,'31110',29009,29010,4,0),(16625,'31119',29011,29012,4,0),(16626,'31130',28909,28910,4,0),(16627,'31131',28469,28470,4,0),(16628,'31132',29363,29364,4,0),(16629,'31133',28825,28826,4,0),(16630,'31133',29309,29310,4,0),(16631,'31140',28261,28262,4,0),(16632,'31150',28935,28936,4,0),(16633,'31151',29017,29018,4,0),(16634,'31152',28993,28994,4,0),(16635,'31153',28127,28128,4,0),(16636,'31153',28519,28520,4,0),(16637,'31154',29245,29246,4,0),(16638,'31154',29223,29224,4,0),(16639,'31154',28167,28168,4,0),(16640,'31160',29073,29074,4,0),(16641,'31170',28457,28458,4,0),(16642,'31170',28745,28746,4,0),(16643,'31171',28459,28460,4,0),(16644,'31172',28673,28674,4,0),(16645,'31172',29327,29328,4,0),(16646,'31172',28747,28748,4,0),(16647,'31173',28461,28462,4,0),(16648,'31174',28507,28508,4,0),(16649,'31174',28689,28690,4,0),(16650,'31174',28393,28394,4,0),(16651,'31174',28351,28352,4,0),(16652,'31174',28587,28588,4,0),(16653,'31174',29377,29378,4,0),(16654,'31174',28473,28474,4,0),(16655,'31174',28477,28478,4,0),(16656,'31175',29167,29168,4,0),(16657,'31175',28681,28682,4,0),(16658,'31176',29331,29332,4,0),(16659,'31176',28683,28684,4,0),(16660,'31177',29333,29334,4,0),(16661,'31177',28861,28862,4,0),(16662,'31178',28105,28106,4,0),(16663,'31179',29335,29336,4,0),(16664,'31180',29385,29386,4,0),(16665,'31190',28479,28480,4,0),(16666,'31191',28637,28638,4,0),(16667,'31191',28365,28366,4,0),(16668,'31192',28201,28202,4,0),(16669,'31192',29317,29318,4,0),(16670,'31193',28775,28776,4,0),(16671,'31193',28269,28270,4,0),(16672,'31194',28777,28778,4,0),(16673,'31194',28595,28596,4,0),(16674,'31195',28371,28372,4,0),(16675,'31195',28377,28378,4,0),(16676,'31200',28559,28560,4,0),(16677,'31208',28279,28280,4,0),(16678,'31210',28891,28892,4,0),(16679,'31219',29133,29134,4,0),(16680,'31219',28969,28970,4,0),(16681,'31219',29227,29228,4,0),(16682,'31219',28947,28948,4,0),(16683,'31219',29205,29206,4,0),(16684,'31219',28929,28930,4,0),(16685,'31220',29185,29186,4,0),(16686,'31227',28795,28796,4,0),(16687,'31227',28665,28666,4,0),(16688,'31227',28417,28418,4,0),(16689,'31227',28913,28914,4,0),(16690,'31228',28249,28250,4,0),(16691,'31228',29229,29230,4,0),(16692,'31228',28289,28290,4,0),(16693,'31228',28131,28132,4,0),(16694,'31228',28555,28556,4,0),(16695,'31229',28511,28512,4,0),(16696,'31229',28309,28310,4,0),(16697,'31229',28491,28492,4,0),(16698,'31229',29233,29234,4,0),(16699,'31230',29347,29348,4,0),(16700,'31239',28213,28214,4,0),(16701,'31240',28281,28282,4,0),(16702,'31241',28939,28940,4,0),(16703,'31241',28139,28140,4,0),(16704,'31241',28713,28714,4,0),(16705,'31242',29359,29360,4,0),(16706,'31243',28305,28306,4,0),(16707,'31243',28253,28254,4,0),(16708,'31243',28715,28716,4,0),(16709,'31243',28899,28900,4,0),(16710,'31250',29089,29090,4,0),(16711,'31251',28799,28800,4,0),(16712,'31252',28361,28362,4,0),(16713,'31253',28951,28952,4,0),(16714,'31260',28851,28852,4,0),(16715,'31261',28163,28164,4,0),(16716,'31262',28145,28146,4,0),(16717,'31263',28229,28230,4,0),(16718,'31263',28495,28496,4,0),(16719,'31264',28117,28118,4,0),(16720,'31264',28965,28966,4,0),(16721,'31270',28803,28804,4,0),(16722,'31271',28197,28198,4,0),(16723,'31271',28591,28592,4,0),(16724,'31272',28153,28154,4,0),(16725,'31280',28101,28102,4,0),(16726,'31280',28977,28978,4,0),(16727,'31280',28157,28158,4,0),(16728,'31281',28575,28576,4,0),(16729,'31281',29025,29026,4,0),(16730,'31281',29047,29048,4,0),(16731,'31281',28829,28830,4,0),(16732,'31281',28159,28160,4,0),(16733,'31282',29005,29006,4,0),(16734,'31282',28931,28932,4,0),(16735,'31283',28787,28788,4,0),(16736,'31284',29397,29398,4,0),(16737,'31290',29337,29338,4,0),(16738,'31290',28141,28142,4,0),(16739,'31291',28685,28686,4,0),(16740,'31291',28691,28692,4,0),(16741,'31292',29365,29366,4,0),(16742,'31292',29339,29340,4,0),(16743,'31292',28119,28120,4,0),(16744,'31293',29201,29202,4,0),(16745,'31300',29213,29214,4,0),(16746,'31310',28435,28436,4,0),(16747,'31311',28437,28438,4,0),(16748,'31312',28445,28446,4,0),(16749,'31313',28989,28990,4,0),(16750,'31314',29189,29190,4,0),(16751,'31315',28981,28982,4,0),(16752,'31320',28943,28944,4,0),(16753,'31330',29355,29356,4,0),(16754,'31340',28917,28918,4,0),(16755,'31350',29125,29126,4,0),(16756,'31360',28629,28630,4,0),(16757,'31370',28617,28618,4,0),(16758,'31380',28425,28426,4,0),(16759,'31381',28427,28428,4,0),(16760,'31382',28921,28922,4,0),(16761,'31383',28983,28984,4,0),(16762,'31390',29051,29052,4,0),(16763,'31391',28985,28986,4,0),(16764,'31392',29137,29138,4,0),(16765,'31393',28347,28348,4,0),(16766,'31394',29145,29146,4,0),(16767,'31395',29055,29056,4,0),(16768,'31395',28657,28658,4,0),(16769,'31395',28301,28302,4,0),(16770,'31395',28841,28842,4,0),(16771,'31395',29069,29070,4,0),(16772,'31396',29269,29270,4,0),(16773,'31396',29057,29058,4,0),(16774,'31397',29217,29218,4,0),(16775,'31398',29219,29220,4,0),(16776,'31398',28397,28398,4,0),(16777,'31400',29179,29180,4,0),(16778,'31409',29181,29182,4,0),(16779,'31409',28769,28770,4,0),(16780,'31410',29373,29374,4,0),(16781,'31411',28771,28772,4,0),(16782,'31412',28405,28406,4,0),(16783,'31413',29351,29352,4,0),(16784,'31414',28653,28654,4,0),(16785,'31415',29157,29158,4,0),(16786,'31416',29305,29306,4,0),(16787,'31417',28733,28734,4,0),(16788,'31418',29313,29314,4,0),(16789,'31420',29301,29302,4,0),(16790,'31421',28757,28758,4,0),(16791,'31422',29263,29264,4,0),(16792,'31430',28179,28180,4,0),(16793,'31438',28883,28884,4,0),(16794,'31438',28221,28222,4,0),(16795,'31439',28885,28886,4,0),(16796,'31439',29081,29082,4,0),(16797,'31439',28223,28224,4,0),(16798,'31440',28895,28896,4,0),(16799,'31448',29283,29284,4,0),(16800,'31448',29289,29290,4,0),(16801,'31449',29291,29292,4,0),(16802,'31450',28997,28998,4,0),(16803,'31451',29077,29078,4,0),(16804,'31451',28645,28646,4,0),(16805,'31451',28999,29000,4,0),(16806,'31451',29193,29194,4,0),(16807,'31452',28677,28678,4,0),(16808,'31453',28551,28552,4,0),(16809,'31454',29153,29154,4,0),(16810,'31454',28453,28454,4,0),(16811,'31454',29285,29286,4,0),(16812,'31454',29001,29002,4,0),(16813,'31460',28821,28822,4,0),(16814,'31460',28135,28136,4,0),(16815,'31470',29013,29014,4,0),(16816,'31471',28957,28958,4,0),(16817,'31472',28703,28704,4,0),(16818,'31472',29265,29266,4,0),(16819,'31473',28705,28706,4,0),(16820,'31480',29293,29294,4,0),(16821,'31481',28887,28888,4,0),(16822,'31481',28225,28226,4,0),(16823,'31482',28869,28870,4,0),(16824,'31483',28871,28872,4,0),(16825,'31484',28873,28874,4,0),(16826,'31485',28875,28876,4,0),(16827,'31486',29319,29320,4,0),(16828,'31487',28865,28866,4,0),(16829,'31490',28447,28448,4,0),(16830,'31491',28611,28612,4,0),(16831,'31492',28613,28614,4,0),(16832,'31493',28641,28642,4,0),(16833,'31494',28843,28844,4,0),(16834,'31494',28847,28848,4,0),(16835,'31494',28547,28548,4,0),(16836,'31495',29175,29176,4,0),(16837,'31496',29253,29254,4,0),(16838,'31500',29237,29238,4,0),(16839,'31510',28633,28634,4,0),(16840,'31511',28413,28414,4,0),(16841,'31512',28625,28626,4,0),(16842,'31513',28237,28238,4,0),(16843,'31514',29343,29344,4,0),(16844,'31515',28421,28422,4,0),(16845,'31520',28441,28442,4,0),(16846,'31521',28973,28974,4,0),(16847,'31522',29241,29242,4,0),(16848,'31522',28961,28962,4,0),(16849,'31523',28313,28314,4,0),(16850,'31523',28123,28124,4,0),(16851,'31523',28953,28954,4,0),(16852,'31530',28487,28488,4,0),(16853,'31540',28401,28402,4,0),(16854,'31550',29149,29150,4,0),(16855,'31560',28285,28286,4,0),(16856,'31570',29171,29172,4,0),(16857,'31579',28431,28432,4,0),(16858,'31580',28879,28880,4,0),(16859,'31587',28925,28926,4,0),(16860,'31588',28817,28818,4,0),(16861,'31589',29197,29198,4,0),(16862,'31590',13187,13188,4,0),(16863,'31591',28483,28484,4,0),(16864,'31592',28465,28466,4,0),(16865,'31593',28621,28622,4,0),(16866,'31600',28409,28410,4,0),(16867,'31610',29369,29370,4,0),(16868,'31620',28699,28700,4,0),(16869,'31620',29321,29322,4,0),(16870,'31621',29323,29324,4,0),(16871,'31630',28563,28564,4,0),(16872,'31638',28531,28532,4,0),(16873,'31638',28565,28566,4,0),(16874,'31639',28533,28534,4,0),(16875,'31639',28567,28568,4,0),(16876,'31640',28275,28276,4,0),(16877,'31650',29085,29086,4,0),(16878,'31660',28903,28904,4,0),(16879,'31669',28905,28906,4,0),(16880,'31670',29061,29062,4,0),(16881,'31671',28241,28242,4,0),(16882,'31671',28695,28696,4,0),(16883,'31671',29065,29066,4,0),(16884,'31671',28245,28246,4,0),(16885,'31680',29021,29022,4,0),(16886,'31689',28761,28762,4,0),(16887,'31690',28601,28602,4,0),(16888,'31691',28765,28766,4,0),(16889,'31692',28649,28650,4,0),(16890,'31692',28109,28110,4,0),(16891,'31692',28113,28114,4,0),(16892,'31693',28661,28662,4,0),(16893,'31694',28535,28536,4,0),(16894,'31695',28537,28538,4,0),(16895,'31696',28539,28540,4,0),(16896,'31697',28541,28542,4,0),(16897,'31698',28569,28570,4,0),(16898,'31699',28543,28544,4,0),(16899,'31699',28571,28572,4,0),(16900,'31700',28323,28324,4,0),(16901,'31710',29393,29394,4,0),(16902,'31711',29273,29274,4,0),(16903,'31712',29275,29276,4,0),(16904,'31713',28325,28326,4,0),(16905,'31714',28327,28328,4,0),(16906,'31715',28329,28330,4,0),(16907,'31720',28331,28332,4,0),(16908,'31720',28381,28382,4,0),(16909,'31730',28333,28334,4,0),(16910,'31740',28503,28504,4,0),(16911,'31744',28515,28516,4,0),(16912,'31745',28737,28738,4,0),(16913,'31746',29389,29390,4,0),(16914,'31747',29163,29164,4,0),(16915,'31748',28523,28524,4,0),(16916,'31749',28605,28606,4,0),(16917,'31750',28499,28500,4,0),(16918,'31751',29035,29036,4,0),(16919,'31752',29297,29298,4,0),(16920,'31753',28343,28344,4,0),(16921,'31754',28669,28670,4,0),(16922,'31754',28205,28206,4,0),(16923,'31760',28579,28580,4,0),(16924,'31770',28855,28856,4,0),(16925,'31780',28355,28356,4,0),(16926,'31789',28857,28858,4,0),(16927,'31789',28357,28358,4,0),(16928,'31790',28209,28210,4,0),(16929,'31790',28709,28710,4,0),(16930,'31791',29209,29210,4,0),(16931,'31792',28383,28384,4,0),(16932,'31793',28385,28386,4,0),(16933,'31794',28335,28336,4,0),(16934,'31794',28607,28608,4,0),(16935,'31795',28337,28338,4,0),(16936,'31796',28339,28340,4,0),(16937,'31797',29257,29258,4,0),(16938,'31798',28175,28176,4,0),(16939,'31798',28791,28792,4,0),(16940,'31799',29039,29040,4,0),(16941,'31799',28597,28598,4,0),(16942,'31799',29259,29260,4,0),(16943,'31799',29029,29030,4,0),(16944,'31800',28149,28150,4,0),(16945,'31809',29043,29044,4,0),(16946,'31809',29381,29382,4,0),(16947,'31810',28741,28742,4,0),(16948,'31810',29279,29280,4,0),(16949,'31810',28293,28294,4,0),(16950,'31820',28583,28584,4,0),(16951,'31829',28527,28528,4,0),(16952,'31830',28783,28784,4,0),(16953,'31839',28217,28218,4,0),(16954,'31840',28257,28258,4,0),(16955,'31840',29249,29250,4,0),(16956,'31849',28187,28188,4,0),(16957,'31849',28725,28726,4,0),(16958,'31850',28189,28190,4,0),(16959,'31860',28729,28730,4,0),(16960,'31866',28317,28318,4,0),(16961,'31867',28191,28192,4,0),(16962,'31867',28719,28720,4,0),(16963,'31867',28749,28750,4,0),(16964,'31867',29031,29032,4,0),(16965,'31867',28271,28272,4,0),(16966,'31868',28193,28194,4,0),(16967,'31868',28751,28752,4,0),(16968,'31869',28721,28722,4,0),(16969,'31869',28319,28320,4,0),(16970,'31870',28837,28838,4,0),(16971,'31876',28233,28234,4,0),(16972,'31877',28807,28808,4,0),(16973,'31878',28809,28810,4,0),(16974,'31879',28811,28812,4,0),(16975,'31880',28833,28834,4,0),(16976,'31890',28389,28390,4,0),(16977,'31891',28813,28814,4,0),(16978,'31891',28183,28184,4,0),(16979,'31892',28753,28754,4,0),(16980,'31892',28779,28780,4,0),(16981,'32001',30037,30038,4,0),(16982,'32002',29569,29570,4,0),(16983,'32002',30039,30040,4,0),(16984,'32003',30041,30042,4,0),(16985,'32004',30043,30044,4,0),(16986,'32005',30219,30220,4,0),(16987,'32005',29571,29572,4,0),(16988,'32005',30045,30046,4,0),(16989,'32100',29743,29744,4,0),(16990,'32101',30341,30342,4,0),(16991,'32102',30343,30344,4,0),(16992,'32103',30047,30048,4,0),(16993,'32110',30071,30072,4,0),(16994,'32111',30073,30074,4,0),(16995,'32120',30345,30346,4,0),(16996,'32120',29443,29444,4,0),(16997,'32130',30231,30232,4,0),(16998,'32131',27807,27808,4,0),(16999,'32133',30233,30234,4,0),(17000,'32134',30235,30236,4,0),(17001,'32135',30119,30120,4,0),(17002,'32135',30237,30238,4,0),(17003,'32136',30239,30240,4,0),(17004,'32137',30121,30122,4,0),(17005,'32137',30241,30242,4,0),(17006,'32138',30123,30124,4,0),(17007,'32139',30243,30244,4,0),(17008,'32140',30347,30348,4,0),(17009,'32141',30245,30246,4,0),(17010,'32141',30349,30350,4,0),(17011,'32150',29445,29446,4,0),(17012,'32151',29447,29448,4,0),(17013,'32152',29745,29746,4,0),(17014,'32153',29449,29450,4,0),(17015,'32153',29747,29748,4,0),(17016,'32160',29935,29936,4,0),(17017,'32161',29937,29938,4,0),(17018,'32162',29939,29940,4,0),(17019,'32163',29941,29942,4,0),(17020,'32164',29943,29944,4,0),(17021,'32170',29517,29518,4,0),(17022,'32171',29519,29520,4,0),(17023,'32172',30049,30050,4,0),(17024,'32172',29521,29522,4,0),(17025,'32200',29753,29754,4,0),(17026,'32211',29755,29756,4,0),(17027,'32212',29785,29786,4,0),(17028,'32213',29757,29758,4,0),(17029,'32220',30079,30080,4,0),(17030,'32226',30081,30082,4,0),(17031,'32227',30083,30084,4,0),(17032,'32228',30085,30086,4,0),(17033,'32229',30087,30088,4,0),(17034,'32235',30127,30128,4,0),(17035,'32236',30089,30090,4,0),(17036,'32300',29955,29956,4,0),(17037,'32310',30199,30200,4,0),(17038,'32311',30201,30202,4,0),(17039,'32312',30203,30204,4,0),(17040,'32313',29957,29958,4,0),(17041,'32314',29959,29960,4,0),(17042,'32315',29961,29962,4,0),(17043,'32315',30353,30354,4,0),(17044,'32316',30355,30356,4,0),(17045,'32317',29963,29964,4,0),(17046,'32318',29965,29966,4,0),(17047,'32320',30205,30206,4,0),(17048,'32329',29639,29640,4,0),(17049,'32329',30207,30208,4,0),(17050,'32330',29641,29642,4,0),(17051,'32334',29643,29644,4,0),(17052,'32335',29645,29646,4,0),(17053,'32336',29647,29648,4,0),(17054,'32337',29649,29650,4,0),(17055,'32338',29651,29652,4,0),(17056,'32339',29653,29654,4,0),(17057,'32340',30357,30358,4,0),(17058,'32348',30359,30360,4,0),(17059,'32349',30361,30362,4,0),(17060,'32350',29469,29470,4,0),(17061,'32356',30109,30110,4,0),(17062,'32357',30111,30112,4,0),(17063,'32357',29471,29472,4,0),(17064,'32357',29969,29970,4,0),(17065,'32357',29789,29790,4,0),(17066,'32357',29483,29484,4,0),(17067,'32358',29791,29792,4,0),(17068,'32359',29473,29474,4,0),(17069,'32360',29485,29486,4,0),(17070,'32365',29487,29488,4,0),(17071,'32366',29489,29490,4,0),(17072,'32367',29491,29492,4,0),(17073,'32368',29493,29494,4,0),(17074,'32369',29495,29496,4,0),(17075,'32370',29793,29794,4,0),(17076,'32370',30113,30114,4,0),(17077,'32371',29795,29796,4,0),(17078,'32371',30115,30116,4,0),(17079,'32372',29971,29972,4,0),(17080,'32373',29973,29974,4,0),(17081,'32374',29975,29976,4,0),(17082,'32375',29869,29870,4,0),(17083,'32375',29977,29978,4,0),(17084,'32400',30175,30176,4,0),(17085,'32410',29901,29902,4,0),(17086,'32411',29903,29904,4,0),(17087,'32412',29627,29628,4,0),(17088,'32413',29629,29630,4,0),(17089,'32414',30177,30178,4,0),(17090,'32415',30179,30180,4,0),(17091,'32416',30181,30182,4,0),(17092,'32416',29631,29632,4,0),(17093,'32417',30183,30184,4,0),(17094,'32417',29945,29946,4,0),(17095,'32417',29403,29404,4,0),(17096,'32418',30185,30186,4,0),(17097,'32420',29809,29810,4,0),(17098,'32425',29811,29812,4,0),(17099,'32426',29813,29814,4,0),(17100,'32427',29815,29816,4,0),(17101,'32428',29817,29818,4,0),(17102,'32429',29819,29820,4,0),(17103,'32430',29673,29674,4,0),(17104,'32431',29583,29584,4,0),(17105,'32432',29585,29586,4,0),(17106,'32433',29633,29634,4,0),(17107,'32434',29635,29636,4,0),(17108,'32440',29451,29452,4,0),(17109,'32448',29947,29948,4,0),(17110,'32449',29453,29454,4,0),(17111,'32450',29723,29724,4,0),(17112,'32452',30141,30142,4,0),(17113,'32453',30211,30212,4,0),(17114,'32454',29725,29726,4,0),(17115,'32455',30213,30214,4,0),(17116,'32456',30143,30144,4,0),(17117,'32456',29411,29412,4,0),(17118,'32457',30145,30146,4,0),(17119,'32459',29727,29728,4,0),(17120,'32499',29433,29434,4,0),(17121,'32500',29981,29982,4,0),(17122,'32510',29983,29984,4,0),(17123,'32511',29985,29986,4,0),(17124,'32512',29593,29594,4,0),(17125,'32513',29987,29988,4,0),(17126,'32514',29595,29596,4,0),(17127,'32515',30215,30216,4,0),(17128,'32515',29989,29990,4,0),(17129,'32516',29991,29992,4,0),(17130,'32520',29597,29598,4,0),(17131,'32520',29589,29590,4,0),(17132,'32520',29527,29528,4,0),(17133,'32521',29599,29600,4,0),(17134,'32522',29601,29602,4,0),(17135,'32523',29603,29604,4,0),(17136,'32524',29605,29606,4,0),(17137,'32525',29607,29608,4,0),(17138,'32526',29609,29610,4,0),(17139,'32526',29999,30000,4,0),(17140,'32530',29611,29612,4,0),(17141,'32530',30001,30002,4,0),(17142,'32534',29993,29994,4,0),(17143,'32535',30003,30004,4,0),(17144,'32536',30005,30006,4,0),(17145,'32537',30007,30008,4,0),(17146,'32538',30009,30010,4,0),(17147,'32539',30011,30012,4,0),(17148,'32540',29413,29414,4,0),(17149,'32545',29415,29416,4,0),(17150,'32546',29417,29418,4,0),(17151,'32547',29419,29420,4,0),(17152,'32547',30387,30388,4,0),(17153,'32548',29435,29436,4,0),(17154,'32549',29437,29438,4,0),(17155,'32550',30319,30320,4,0),(17156,'32554',30321,30322,4,0),(17157,'32555',30323,30324,4,0),(17158,'32556',30325,30326,4,0),(17159,'32557',30389,30390,4,0),(17160,'32557',30327,30328,4,0),(17161,'32558',30329,30330,4,0),(17162,'32560',30331,30332,4,0),(17163,'32562',30333,30334,4,0),(17164,'32563',30335,30336,4,0),(17165,'32570',29883,29884,4,0),(17166,'32572',29885,29886,4,0),(17167,'32572',30147,30148,4,0),(17168,'32574',29887,29888,4,0),(17169,'32574',29995,29996,4,0),(17170,'32575',29889,29890,4,0),(17171,'32576',29891,29892,4,0),(17172,'32577',29893,29894,4,0),(17173,'32578',30149,30150,4,0),(17174,'32578',29895,29896,4,0),(17175,'32579',29897,29898,4,0),(17176,'32590',29439,29440,4,0),(17177,'32591',30391,30392,4,0),(17178,'32591',29677,29678,4,0),(17179,'32592',30075,30076,4,0),(17180,'32592',29557,29558,4,0),(17181,'32593',30051,30052,4,0),(17182,'32600',30301,30302,4,0),(17183,'32610',30191,30192,4,0),(17184,'32610',30377,30378,4,0),(17185,'32611',30193,30194,4,0),(17186,'32611',29917,29918,4,0),(17187,'32612',30195,30196,4,0),(17188,'32612',29679,29680,4,0),(17189,'32613',30025,30026,4,0),(17190,'32614',30379,30380,4,0),(17191,'32615',30303,30304,4,0),(17192,'32616',30381,30382,4,0),(17193,'32617',30383,30384,4,0),(17194,'32618',29919,29920,4,0),(17195,'32619',30305,30306,4,0),(17196,'32620',29799,29800,4,0),(17197,'32621',29801,29802,4,0),(17198,'32622',29803,29804,4,0),(17199,'32623',29805,29806,4,0),(17200,'32624',29681,29682,4,0),(17201,'32624',29921,29922,4,0),(17202,'32625',29683,29684,4,0),(17203,'32626',29685,29686,4,0),(17204,'32630',30395,30396,4,0),(17205,'32631',30287,30288,4,0),(17206,'32631',30263,30264,4,0),(17207,'32631',30397,30398,4,0),(17208,'32632',30399,30400,4,0),(17209,'32632',30031,30032,4,0),(17210,'32632',29531,29532,4,0),(17211,'32633',29533,29534,4,0),(17212,'32634',30033,30034,4,0),(17213,'32635',30401,30402,4,0),(17214,'32635',30307,30308,4,0),(17215,'32636',30403,30404,4,0),(17216,'32636',30265,30266,4,0),(17217,'32637',30405,30406,4,0),(17218,'32637',30309,30310,4,0),(17219,'32640',30407,30408,4,0),(17220,'32641',30131,30132,4,0),(17221,'32643',30133,30134,4,0),(17222,'32644',30135,30136,4,0),(17223,'32644',29615,29616,4,0),(17224,'32645',30137,30138,4,0),(17225,'32645',29617,29618,4,0),(17226,'32646',29535,29536,4,0),(17227,'32646',29619,29620,4,0),(17228,'32647',29621,29622,4,0),(17229,'32648',29623,29624,4,0),(17230,'32650',30371,30372,4,0),(17231,'32651',30373,30374,4,0),(17232,'32652',30157,30158,4,0),(17233,'32653',30159,30160,4,0),(17234,'32654',30161,30162,4,0),(17235,'32655',30163,30164,4,0),(17236,'32660',29499,29500,4,0),(17237,'32664',29501,29502,4,0),(17238,'32665',29503,29504,4,0),(17239,'32666',29505,29506,4,0),(17240,'32667',29507,29508,4,0),(17241,'32668',29509,29510,4,0),(17242,'32669',29511,29512,4,0),(17243,'32670',30411,30412,4,0),(17244,'32678',30413,30414,4,0),(17245,'32679',30415,30416,4,0),(17246,'32680',29761,29762,4,0),(17247,'32688',29763,29764,4,0),(17248,'32689',29765,29766,4,0),(17249,'32690',30271,30272,4,0),(17250,'32690',29513,29514,4,0),(17251,'32691',30273,30274,4,0),(17252,'32692',30257,30258,4,0),(17253,'32693',30259,30260,4,0),(17254,'32694',30289,30290,4,0),(17255,'32695',30291,30292,4,0),(17256,'32696',30293,30294,4,0),(17257,'32696',30267,30268,4,0),(17258,'32697',30311,30312,4,0),(17259,'32698',30027,30028,4,0),(17260,'32698',30313,30314,4,0),(17261,'32699',30315,30316,4,0),(17262,'32700',29853,29854,4,0),(17263,'32701',29559,29560,4,0),(17264,'32702',30365,30366,4,0),(17265,'32702',29561,29562,4,0),(17266,'32703',29855,29856,4,0),(17267,'32704',29563,29564,4,0),(17268,'32705',29565,29566,4,0),(17269,'32705',30367,30368,4,0),(17270,'32706',29857,29858,4,0),(17271,'32707',29859,29860,4,0),(17272,'32708',30419,30420,4,0),(17273,'32708',29861,29862,4,0),(17274,'32710',30015,30016,4,0),(17275,'32711',30017,30018,4,0),(17276,'32720',29779,29780,4,0),(17277,'32720',30421,30422,4,0),(17278,'32720',29949,29950,4,0),(17279,'32720',29863,29864,4,0),(17280,'32730',30423,30424,4,0),(17281,'32740',30093,30094,4,0),(17282,'32746',30095,30096,4,0),(17283,'32747',30097,30098,4,0),(17284,'32748',30099,30100,4,0),(17285,'32749',30101,30102,4,0),(17286,'32750',29907,29908,4,0),(17287,'32751',29909,29910,4,0),(17288,'32760',29689,29690,4,0),(17289,'32764',29477,29478,4,0),(17290,'32764',29691,29692,4,0),(17291,'32765',29479,29480,4,0),(17292,'32766',29693,29694,4,0),(17293,'32767',29731,29732,4,0),(17294,'32768',29695,29696,4,0),(17295,'32768',29733,29734,4,0),(17296,'32769',29911,29912,4,0),(17297,'32769',29697,29698,4,0),(17298,'32770',30249,30250,4,0),(17299,'32774',29699,29700,4,0),(17300,'32779',30251,30252,4,0),(17301,'32780',29457,29458,4,0),(17302,'32781',29871,29872,4,0),(17303,'32782',29873,29874,4,0),(17304,'32782',29459,29460,4,0),(17305,'32783',29875,29876,4,0),(17306,'32784',29877,29878,4,0),(17307,'32785',29879,29880,4,0),(17308,'32786',29735,29736,4,0),(17309,'32787',29737,29738,4,0),(17310,'32787',29461,29462,4,0),(17311,'32788',29463,29464,4,0),(17312,'32789',29465,29466,4,0),(17313,'32789',30337,30338,4,0),(17314,'32790',29913,29914,4,0),(17315,'32790',29865,29866,4,0),(17316,'32790',30103,30104,4,0),(17317,'32791',29951,29952,4,0),(17318,'32792',30019,30020,4,0),(17319,'32793',29781,29782,4,0),(17320,'32793',30021,30022,4,0),(17321,'32794',29701,29702,4,0),(17322,'32794',29739,29740,4,0),(17323,'32794',30253,30254,4,0),(17324,'32800',29705,29706,4,0),(17325,'32810',30167,30168,4,0),(17326,'32811',30169,30170,4,0),(17327,'32812',30187,30188,4,0),(17328,'32812',29407,29408,4,0),(17329,'32813',30297,30298,4,0),(17330,'32814',30153,30154,4,0),(17331,'32815',30171,30172,4,0),(17332,'32815',29707,29708,4,0),(17333,'32816',29709,29710,4,0),(17334,'32816',29423,29424,4,0),(17335,'32817',29711,29712,4,0),(17336,'32820',29657,29658,4,0),(17337,'32821',29659,29660,4,0),(17338,'32822',29661,29662,4,0),(17339,'32823',29663,29664,4,0),(17340,'32823',29713,29714,4,0),(17341,'32824',29665,29666,4,0),(17342,'32825',29667,29668,4,0),(17343,'32826',29669,29670,4,0),(17344,'32827',29715,29716,4,0),(17345,'32828',29717,29718,4,0),(17346,'32829',29719,29720,4,0),(17347,'32830',29425,29426,4,0),(17348,'32838',29427,29428,4,0),(17349,'32839',29429,29430,4,0),(17350,'32840',29539,29540,4,0),(17351,'32845',29541,29542,4,0),(17352,'32846',29543,29544,4,0),(17353,'32846',29823,29824,4,0),(17354,'32847',29545,29546,4,0),(17355,'32848',29547,29548,4,0),(17356,'32849',29549,29550,4,0),(17357,'32850',29825,29826,4,0),(17358,'32857',29827,29828,4,0),(17359,'32858',29829,29830,4,0),(17360,'32859',29551,29552,4,0),(17361,'32859',29831,29832,4,0),(17362,'32860',29769,29770,4,0),(17363,'32867',29771,29772,4,0),(17364,'32868',29773,29774,4,0),(17365,'32869',29775,29776,4,0),(17366,'32869',29837,29838,4,0),(17367,'32870',29839,29840,4,0),(17368,'32879',29841,29842,4,0),(17369,'32880',29925,29926,4,0),(17370,'32890',29573,29574,4,0),(17371,'32891',29553,29554,4,0),(17372,'32892',29843,29844,4,0),(17373,'32893',30105,30106,4,0),(17374,'32893',29845,29846,4,0),(17375,'32894',29847,29848,4,0),(17376,'32895',29849,29850,4,0),(17377,'32896',29927,29928,4,0),(17378,'32897',29833,29834,4,0),(17379,'32898',29929,29930,4,0),(17380,'32899',29931,29932,4,0),(17381,'32900',30221,30222,4,0),(17382,'32900',30053,30054,4,0),(17383,'32901',30223,30224,4,0),(17384,'32910',30225,30226,4,0),(17385,'32911',30227,30228,4,0),(17386,'32920',30277,30278,4,0),(17387,'32920',29575,29576,4,0),(17388,'32930',29577,29578,4,0),(17389,'32930',30279,30280,4,0),(17390,'32940',30281,30282,4,0),(17391,'32940',29579,29580,4,0),(17392,'32940',30055,30056,4,0),(17393,'32941',30283,30284,4,0),(17394,'32950',29749,29750,4,0),(17395,'32960',30057,30058,4,0),(17396,'32970',30059,30060,4,0),(17397,'32971',30061,30062,4,0),(17398,'32980',30063,30064,4,0),(17399,'32980',29523,29524,4,0),(17400,'32981',30065,30066,4,0),(17401,'32990',30067,30068,4,0),(17402,'33001',2953,2954,4,0),(17403,'33002',2955,2956,4,0),(17404,'33003',2957,2958,4,0),(17405,'33004',2959,2960,4,0),(17406,'33005',2961,2962,4,0),(17407,'33006',2963,2964,4,0),(17408,'33007',2965,2966,4,0),(17409,'33008',2967,2968,4,0),(17410,'33009',2969,2970,4,0),(17411,'33010',3237,3238,4,0),(17412,'33010',2971,2972,4,0),(17413,'33011',2973,2974,4,0),(17414,'33012',2975,2976,4,0),(17415,'33013',2977,2978,4,0),(17416,'33060',2979,2980,4,0),(17417,'33069',2981,2982,4,0),(17418,'33110',3307,3308,4,0),(17419,'33111',3309,3310,4,0),(17420,'33112',3099,3100,4,0),(17421,'33114',3101,3102,4,0),(17422,'33115',3229,3230,4,0),(17423,'33115',3107,3108,4,0),(17424,'33116',3103,3104,4,0),(17425,'33116',3109,3110,4,0),(17426,'33117',3111,3112,4,0),(17427,'33118',3113,3114,4,0),(17428,'33119',2717,2718,4,0),(17429,'33119',2983,2984,4,0),(17430,'33120',3089,3090,4,0),(17431,'33125',3281,3282,4,0),(17432,'33126',3283,3284,4,0),(17433,'33127',2985,2986,4,0),(17434,'33127',3285,3286,4,0),(17435,'33127',3091,3092,4,0),(17436,'33128',3093,3094,4,0),(17437,'33129',3095,3096,4,0),(17438,'33130',2917,2918,4,0),(17439,'33138',2919,2920,4,0),(17440,'33140',2987,2988,4,0),(17441,'33150',2617,2618,4,0),(17442,'33155',2619,2620,4,0),(17443,'33156',2621,2622,4,0),(17444,'33157',2623,2624,4,0),(17445,'33159',2625,2626,4,0),(17446,'33160',3155,3156,4,0),(17447,'33161',2909,2910,4,0),(17448,'33162',2911,2912,4,0),(17449,'33163',2913,2914,4,0),(17450,'33170',3143,3144,4,0),(17451,'33170',2989,2990,4,0),(17452,'33171',2991,2992,4,0),(17453,'33171',3145,3146,4,0),(17454,'33172',3147,3148,4,0),(17455,'33173',3149,3150,4,0),(17456,'33174',2993,2994,4,0),(17457,'33180',2945,2946,4,0),(17458,'33186',3239,3240,4,0),(17459,'33187',3241,3242,4,0),(17460,'33188',3243,3244,4,0),(17461,'33189',3245,3246,4,0),(17462,'33190',2777,2778,4,0),(17463,'33191',2995,2996,4,0),(17464,'33191',2779,2780,4,0),(17465,'33192',2831,2832,4,0),(17466,'33192',2781,2782,4,0),(17467,'33193',2997,2998,4,0),(17468,'33194',2999,3000,4,0),(17469,'33195',3001,3002,4,0),(17470,'33196',3003,3004,4,0),(17471,'33199',3005,3006,4,0),(17472,'33199',3247,3248,4,0),(17473,'33201',2653,2654,4,0),(17474,'33202',2655,2656,4,0),(17475,'33203',2657,2658,4,0),(17476,'33204',2659,2660,4,0),(17477,'33205',2661,2662,4,0),(17478,'33206',2663,2664,4,0),(17479,'33207',2665,2666,4,0),(17480,'33208',2667,2668,4,0),(17481,'33209',2669,2670,4,0),(17482,'33210',2671,2672,4,0),(17483,'33211',2673,2674,4,0),(17484,'33212',2675,2676,4,0),(17485,'33213',2677,2678,4,0),(17486,'33290',2679,2680,4,0),(17487,'33299',2681,2682,4,0),(17488,'33300',3377,3378,4,0),(17489,'33310',3379,3380,4,0),(17490,'33310',2459,2460,4,0),(17491,'33311',3381,3382,4,0),(17492,'33312',3383,3384,4,0),(17493,'33313',3385,3386,4,0),(17494,'33314',3387,3388,4,0),(17495,'33315',3389,3390,4,0),(17496,'33316',3391,3392,4,0),(17497,'33317',3393,3394,4,0),(17498,'33318',3395,3396,4,0),(17499,'33320',2581,2582,4,0),(17500,'33324',2583,2584,4,0),(17501,'33325',2585,2586,4,0),(17502,'33326',2587,2588,4,0),(17503,'33326',3397,3398,4,0),(17504,'33327',2589,2590,4,0),(17505,'33328',2591,2592,4,0),(17506,'33329',2593,2594,4,0),(17507,'33330',2595,2596,4,0),(17508,'33340',2597,2598,4,0),(17509,'33341',2599,2600,4,0),(17510,'33342',2601,2602,4,0),(17511,'33343',2507,2508,4,0),(17512,'33344',2509,2510,4,0),(17513,'33345',3123,3124,4,0),(17514,'33346',3125,3126,4,0),(17515,'33347',3127,3128,4,0),(17516,'33350',2683,2684,4,0),(17517,'33390',2685,2686,4,0),(17518,'33391',2687,2688,4,0),(17519,'33392',2689,2690,4,0),(17520,'33393',2691,2692,4,0),(17521,'33394',2693,2694,4,0),(17522,'33401',2377,2378,4,0),(17523,'33401',2535,2536,4,0),(17524,'33402',2379,2380,4,0),(17525,'33403',2381,2382,4,0),(17526,'33404',2605,2606,4,0),(17527,'33405',2537,2538,4,0),(17528,'33410',2539,2540,4,0),(17529,'33410',2383,2384,4,0),(17530,'33411',2751,2752,4,0),(17531,'33412',2541,2542,4,0),(17532,'33412',2753,2754,4,0),(17533,'33412',2607,2608,4,0),(17534,'33414',2465,2466,4,0),(17535,'33414',2755,2756,4,0),(17536,'33414',2783,2784,4,0),(17537,'33416',2609,2610,4,0),(17538,'33417',2385,2386,4,0),(17539,'33417',2543,2544,4,0),(17540,'33418',2387,2388,4,0),(17541,'33418',2703,2704,4,0),(17542,'33419',2705,2706,4,0),(17543,'33420',3249,3250,4,0),(17544,'33423',2833,2834,4,0),(17545,'33424',2835,2836,4,0),(17546,'33425',2837,2838,4,0),(17547,'33426',2839,2840,4,0),(17548,'33427',2841,2842,4,0),(17549,'33428',2843,2844,4,0),(17550,'33429',3251,3252,4,0),(17551,'33430',2513,2514,4,0),(17552,'33438',2515,2516,4,0),(17553,'33439',2517,2518,4,0),(17554,'33440',2707,2708,4,0),(17555,'33448',2709,2710,4,0),(17556,'33449',2711,2712,4,0),(17557,'33450',2545,2546,4,0),(17558,'33456',2467,2468,4,0),(17559,'33456',2547,2548,4,0),(17560,'33457',2549,2550,4,0),(17561,'33458',3287,3288,4,0),(17562,'33459',2551,2552,4,0),(17563,'33460',2389,2390,4,0),(17564,'33468',2611,2612,4,0),(17565,'33468',2713,2714,4,0),(17566,'33469',2519,2520,4,0),(17567,'33470',2613,2614,4,0),(17568,'33470',2391,2392,4,0),(17569,'33470',2845,2846,4,0),(17570,'33476',3291,3292,4,0),(17571,'33480',2847,2848,4,0),(17572,'33490',2393,2394,4,0),(17573,'33491',2521,2522,4,0),(17574,'33492',2523,2524,4,0),(17575,'33500',2853,2854,4,0),(17576,'33507',2855,2856,4,0),(17577,'33509',2857,2858,4,0),(17578,'33509',3023,3024,4,0),(17579,'33510',3253,3254,4,0),(17580,'33518',3233,3234,4,0),(17581,'33518',3255,3256,4,0),(17582,'33519',3257,3258,4,0),(17583,'33519',2627,2628,4,0),(17584,'33520',3117,3118,4,0),(17585,'33520',2923,2924,4,0),(17586,'33527',2425,2426,4,0),(17587,'33528',2925,2926,4,0),(17588,'33528',2427,2428,4,0),(17589,'33529',2461,2462,4,0),(17590,'33529',2927,2928,4,0),(17591,'33530',3063,3064,4,0),(17592,'33534',3065,3066,4,0),(17593,'33535',3067,3068,4,0),(17594,'33535',3007,3008,4,0),(17595,'33536',3069,3070,4,0),(17596,'33537',3071,3072,4,0),(17597,'33538',3073,3074,4,0),(17598,'33539',3075,3076,4,0),(17599,'33540',3025,3026,4,0),(17600,'33546',3027,3028,4,0),(17601,'33547',2475,2476,4,0),(17602,'33548',3029,3030,4,0),(17603,'33549',3031,3032,4,0),(17604,'33550',2477,2478,4,0),(17605,'33554',2453,2454,4,0),(17606,'33555',2455,2456,4,0),(17607,'33556',2949,2950,4,0),(17608,'33556',2479,2480,4,0),(17609,'33557',2371,2372,4,0),(17610,'33557',3083,3084,4,0),(17611,'33558',2373,2374,4,0),(17612,'33558',3085,3086,4,0),(17613,'33559',3033,3034,4,0),(17614,'33559',2481,2482,4,0),(17615,'33560',3129,3130,4,0),(17616,'33566',3131,3132,4,0),(17617,'33567',3133,3134,4,0),(17618,'33568',3135,3136,4,0),(17619,'33569',3137,3138,4,0),(17620,'33576',3043,3044,4,0),(17621,'33577',3045,3046,4,0),(17622,'33578',3047,3048,4,0),(17623,'33579',3051,3052,4,0),(17624,'33580',3259,3260,4,0),(17625,'33581',2929,2930,4,0),(17626,'33582',2931,2932,4,0),(17627,'33583',3077,3078,4,0),(17628,'33584',3079,3080,4,0),(17629,'33585',3035,3036,4,0),(17630,'33586',3037,3038,4,0),(17631,'33587',3039,3040,4,0),(17632,'33588',3139,3140,4,0),(17633,'33589',2483,2484,4,0),(17634,'33590',3119,3120,4,0),(17635,'33592',2859,2860,4,0),(17636,'33593',2861,2862,4,0),(17637,'33594',2863,2864,4,0),(17638,'33595',2865,2866,4,0),(17639,'33596',2867,2868,4,0),(17640,'33598',2869,2870,4,0),(17652,'33620',2805,2806,4,0),(17653,'33627',2807,2808,4,0),(17654,'33628',2809,2810,4,0),(17655,'33629',2811,2812,4,0),(17656,'33630',2813,2814,4,0),(17657,'33637',2815,2816,4,0),(17658,'33638',2817,2818,4,0),(17659,'33639',2819,2820,4,0),(17662,'33660',3011,3012,4,0),(17663,'33669',3013,3014,4,0),(17664,'33670',2341,2342,4,0),(17665,'33675',2343,2344,4,0),(17666,'33676',2345,2346,4,0),(17667,'33677',2347,2348,4,0),(17668,'33678',2349,2350,4,0),(17669,'33679',2351,2352,4,0),(17670,'33680',2353,2354,4,0),(17671,'33681',2355,2356,4,0),(17675,'33684',2359,2360,4,0),(17676,'33685',2361,2362,4,0),(17677,'33686',2363,2364,4,0),(17678,'33687',2365,2366,4,0),(17679,'33688',2367,2368,4,0),(17680,'33690',2849,2850,4,0),(17681,'33691',2695,2696,4,0),(17682,'33692',2821,2822,4,0),(17683,'33693',2823,2824,4,0),(17684,'33694',2825,2826,4,0),(17685,'33695',2827,2828,4,0),(17686,'33696',3015,3016,4,0),(17687,'33696',3151,3152,4,0),(17688,'33697',2697,2698,4,0),(17689,'33700',3331,3332,4,0),(17690,'33707',3333,3334,4,0),(17691,'33708',3335,3336,4,0),(17692,'33709',3337,3338,4,0),(17693,'33710',2935,2936,4,0),(17694,'33716',2567,2568,4,0),(17695,'33717',3401,3402,4,0),(17696,'33718',3403,3404,4,0),(17697,'33719',2569,2570,4,0),(17698,'33719',2937,2938,4,0),(17699,'33720',2431,2432,4,0),(17700,'33724',2433,2434,4,0),(17701,'33725',2435,2436,4,0),(17702,'33726',2571,2572,4,0),(17703,'33726',2437,2438,4,0),(17704,'33727',2439,2440,4,0),(17705,'33728',2441,2442,4,0),(17706,'33729',2443,2444,4,0),(17707,'33730',2731,2732,4,0),(17708,'33731',2445,2446,4,0),(17709,'33732',2743,2744,4,0),(17710,'33733',2745,2746,4,0),(17711,'33734',2747,2748,4,0),(17712,'33735',3055,3056,4,0),(17713,'33736',3057,3058,4,0),(17714,'33740',3293,3294,4,0),(17715,'33746',3295,3296,4,0),(17716,'33746',2637,2638,4,0),(17717,'33747',3297,3298,4,0),(17718,'33749',3299,3300,4,0),(17719,'33750',2639,2640,4,0),(17720,'33757',2641,2642,4,0),(17721,'33758',2643,2644,4,0),(17722,'33759',2645,2646,4,0),(17723,'33760',2555,2556,4,0),(17724,'33768',2557,2558,4,0),(17725,'33769',2559,2560,4,0),(17726,'33770',3363,3364,4,0),(17727,'33774',3219,3220,4,0),(17728,'33775',3303,3304,4,0),(17729,'33776',3223,3224,4,0),(17730,'33776',3365,3366,4,0),(17731,'33777',3373,3374,4,0),(17732,'33777',3191,3192,4,0),(17733,'33777',3059,3060,4,0),(17734,'33778',2561,2562,4,0),(17735,'33778',3367,3368,4,0),(17736,'33779',3369,3370,4,0),(17737,'33779',3225,3226,4,0),(17738,'33780',3339,3340,4,0),(17739,'33781',3159,3160,4,0),(17740,'33782',3161,3162,4,0),(17741,'33782',3341,3342,4,0),(17742,'33783',3343,3344,4,0),(17743,'33784',3345,3346,4,0),(17744,'33785',3347,3348,4,0),(17745,'33787',3349,3350,4,0),(17746,'33788',3351,3352,4,0),(17747,'33789',3353,3354,4,0),(17748,'33790',2939,2940,4,0),(17749,'33791',3355,3356,4,0),(17750,'33792',3357,3358,4,0),(17751,'33793',2941,2942,4,0),(17752,'33794',2563,2564,4,0),(17753,'33795',2573,2574,4,0),(17754,'33796',2575,2576,4,0),(17755,'33797',2577,2578,4,0),(17756,'33798',2447,2448,4,0),(17757,'33799',2449,2450,4,0),(17758,'33800',2487,2488,4,0),(17759,'33810',2735,2736,4,0),(17760,'33811',2489,2490,4,0),(17761,'33811',2737,2738,4,0),(17762,'33812',2631,2632,4,0),(17763,'33812',2739,2740,4,0),(17764,'33813',2491,2492,4,0),(17765,'33813',2633,2634,4,0),(17766,'33814',2493,2494,4,0),(17767,'33815',2495,2496,4,0),(17768,'33815',2325,2326,4,0),(17769,'33816',2497,2498,4,0),(17770,'33817',2499,2500,4,0),(17771,'33818',2501,2502,4,0),(17772,'33819',2503,2504,4,0),(17773,'33820',2719,2720,4,0),(17774,'33825',2721,2722,4,0),(17775,'33826',3407,3408,4,0),(17776,'33826',2723,2724,4,0),(17777,'33827',2399,2400,4,0),(17778,'33827',2725,2726,4,0),(17779,'33828',2469,2470,4,0),(17780,'33829',2727,2728,4,0),(17781,'33829',2471,2472,4,0),(17782,'33830',2401,2402,4,0),(17783,'33836',3163,3164,4,0),(17784,'33836',2403,2404,4,0),(17785,'33837',2405,2406,4,0),(17786,'33838',2407,2408,4,0),(17787,'33839',2409,2410,4,0),(17788,'33840',3273,3274,4,0),(17789,'33841',3275,3276,4,0),(17790,'33842',3277,3278,4,0),(17791,'33842',2411,2412,4,0),(17792,'33843',2413,2414,4,0),(17793,'33844',2415,2416,4,0),(17794,'33845',2417,2418,4,0),(17795,'33846',3165,3166,4,0),(17796,'33846',2419,2420,4,0),(17797,'33847',2421,2422,4,0),(17798,'33848',3167,3168,4,0),(17799,'33850',3169,3170,4,0),(17800,'33857',3171,3172,4,0),(17801,'33858',3173,3174,4,0),(17802,'33859',3175,3176,4,0),(17803,'33860',3177,3178,4,0),(17804,'33866',3179,3180,4,0),(17805,'33867',3181,3182,4,0),(17806,'33868',3183,3184,4,0),(17807,'33869',3185,3186,4,0),(17808,'33870',3313,3314,4,0),(17809,'33873',3315,3316,4,0),(17810,'33874',3359,3360,4,0),(17811,'33874',3317,3318,4,0),(17812,'33875',3319,3320,4,0),(17813,'33876',3321,3322,4,0),(17814,'33877',3323,3324,4,0),(17815,'33878',3325,3326,4,0),(17816,'33879',3327,3328,4,0),(17817,'33880',2327,2328,4,0),(17818,'33885',2329,2330,4,0),(17819,'33887',2331,2332,4,0),(17820,'33888',2333,2334,4,0),(17821,'33889',2335,2336,4,0),(17822,'33890',2337,2338,4,0),(17823,'33891',3187,3188,4,0),(17824,'33900',2759,2760,4,0),(17825,'33909',2761,2762,4,0),(17826,'33910',3017,3018,4,0),(17827,'33919',3019,3020,4,0),(17828,'33920',2763,2764,4,0),(17829,'33929',2765,2766,4,0),(17830,'33930',2767,2768,4,0),(17831,'33934',2769,2770,4,0),(17832,'33935',2771,2772,4,0),(17833,'33936',3261,3262,4,0),(17834,'33937',3263,3264,4,0),(17835,'33938',3265,3266,4,0),(17836,'33939',2773,2774,4,0),(17837,'33940',3195,3196,4,0),(17838,'33945',3197,3198,4,0),(17839,'33946',3199,3200,4,0),(17840,'33947',3201,3202,4,0),(17841,'33948',3203,3204,4,0),(17842,'33950',3205,3206,4,0),(17843,'33957',3207,3208,4,0),(17844,'33958',3209,3210,4,0),(17845,'33959',3211,3212,4,0),(17846,'33960',3213,3214,4,0),(17847,'33970',2787,2788,4,0),(17848,'33979',2789,2790,4,0),(17849,'33980',2791,2792,4,0),(17850,'33986',2793,2794,4,0),(17851,'33987',2795,2796,4,0),(17852,'33989',2797,2798,4,0),(17853,'33990',2527,2528,4,0),(17854,'33991',2799,2800,4,0),(17855,'33992',2801,2802,4,0),(17856,'33993',3269,3270,4,0),(17857,'33995',2529,2530,4,0),(17858,'33996',2531,2532,4,0),(17859,'34001',30903,30904,4,0),(17860,'34002',30905,30906,4,0),(17861,'34003',30907,30908,4,0),(17862,'34004',30909,30910,4,0),(17863,'34005',30911,30912,4,0),(17864,'34006',30913,30914,4,0),(17865,'34100',31045,31046,4,0),(17866,'34110',30955,30956,4,0),(17867,'34111',31253,31254,4,0),(17868,'34111',30987,30988,4,0),(17869,'34111',31353,31354,4,0),(17870,'34111',30957,30958,4,0),(17871,'34111',31047,31048,4,0),(17872,'34112',31255,31256,4,0),(17873,'34112',31095,31096,4,0),(17874,'34112',31355,31356,4,0),(17875,'34113',31257,31258,4,0),(17876,'34113',31305,31306,4,0),(17877,'34113',30939,30940,4,0),(17878,'34114',31003,31004,4,0),(17879,'34115',31049,31050,4,0),(17880,'34115',31167,31168,4,0),(17881,'34116',30571,30572,4,0),(17882,'34116',31307,31308,4,0),(17883,'34116',30941,30942,4,0),(17884,'34117',31051,31052,4,0),(17885,'34118',30813,30814,4,0),(17886,'34120',30595,30596,4,0),(17887,'34126',31277,31278,4,0),(17888,'34126',31013,31014,4,0),(17889,'34127',30815,30816,4,0),(17890,'34127',31159,31160,4,0),(17891,'34128',30877,30878,4,0),(17892,'34128',31005,31006,4,0),(17893,'34128',30791,30792,4,0),(17894,'34128',30817,30818,4,0),(17895,'34129',31323,31324,4,0),(17896,'34129',30575,30576,4,0),(17897,'34129',30583,30584,4,0),(17898,'34131',31349,31350,4,0),(17899,'34131',30597,30598,4,0),(17900,'34132',31315,31316,4,0),(17901,'34159',30469,30470,4,0),(17902,'34160',30471,30472,4,0),(17903,'34170',31327,31328,4,0),(17904,'34170',31261,31262,4,0),(17905,'34170',30843,30844,4,0),(17906,'34170',30935,30936,4,0),(17907,'34190',31285,31286,4,0),(17908,'34191',30473,30474,4,0),(17909,'34191',31085,31086,4,0),(17910,'34191',30915,30916,4,0),(17911,'34191',30497,30498,4,0),(17912,'34192',31329,31330,4,0),(17913,'34192',30729,30730,4,0),(17914,'34200',31189,31190,4,0),(17915,'34208',30693,30694,4,0),(17916,'34208',31009,31010,4,0),(17917,'34208',31191,31192,4,0),(17918,'34209',30763,30764,4,0),(17919,'34209',31139,31140,4,0),(17920,'34209',31119,31120,4,0),(17921,'34209',31173,31174,4,0),(17922,'34210',30695,30696,4,0),(17923,'34218',30645,30646,4,0),(17924,'34219',30461,30462,4,0),(17925,'34219',30969,30970,4,0),(17926,'34219',30677,30678,4,0),(17927,'34219',30617,30618,4,0),(17928,'34219',31195,31196,4,0),(17929,'34220',30827,30828,4,0),(17930,'34230',31143,31144,4,0),(17931,'34239',31163,31164,4,0),(17932,'34239',31265,31266,4,0),(17933,'34240',30509,30510,4,0),(17934,'34246',30613,30614,4,0),(17935,'34247',30649,30650,4,0),(17936,'34247',31209,31210,4,0),(17937,'34247',30747,30748,4,0),(17938,'34248',30483,30484,4,0),(17939,'34248',30657,30658,4,0),(17940,'34248',30699,30700,4,0),(17941,'34249',30511,30512,4,0),(17942,'34249',30767,30768,4,0),(17943,'34249',31333,31334,4,0),(17944,'34250',30999,31000,4,0),(17945,'34257',30919,30920,4,0),(17946,'34257',31127,31128,4,0),(17947,'34257',31345,31346,4,0),(17948,'34257',31223,31224,4,0),(17949,'34259',30673,30674,4,0),(17950,'34259',30759,30760,4,0),(17951,'34259',31233,31234,4,0),(17952,'34260',9007,9008,4,0),(17953,'34260',8515,8516,4,0),(17954,'34260',8901,8902,4,0),(17955,'34300',30927,30928,4,0),(17956,'34304',30539,30540,4,0),(17957,'34305',30515,30516,4,0),(17958,'34305',30855,30856,4,0),(17959,'34305',30587,30588,4,0),(17960,'34305',30549,30550,4,0),(17961,'34305',31337,31338,4,0),(17962,'34305',31147,31148,4,0),(17963,'34305',30625,30626,4,0),(17964,'34306',30743,30744,4,0),(17965,'34306',30601,30602,4,0),(17966,'34306',30847,30848,4,0),(17967,'34306',30709,30710,4,0),(17968,'34307',31177,31178,4,0),(17969,'34309',30629,30630,4,0),(17970,'34309',30591,30592,4,0),(17971,'34309',31281,31282,4,0),(17972,'34309',31041,31042,4,0),(17973,'34309',31289,31290,4,0),(17974,'34310',30945,30946,4,0),(17975,'34310',30535,30536,4,0),(17976,'34320',30653,30654,4,0),(17977,'34337',30721,30722,4,0),(17978,'34338',30501,30502,4,0),(17979,'34338',30429,30430,4,0),(17980,'34340',31213,31214,4,0),(17981,'34347',30799,30800,4,0),(17982,'34347',30991,30992,4,0),(17983,'34347',30809,30810,4,0),(17984,'34347',31081,31082,4,0),(17985,'34347',31245,31246,4,0),(17986,'34347',30961,30962,4,0),(17987,'34348',31203,31204,4,0),(17988,'34349',31205,31206,4,0),(17989,'34349',30801,30802,4,0),(17990,'34349',31215,31216,4,0),(17991,'34349',30869,30870,4,0),(17992,'34349',30553,30554,4,0),(17993,'34350',31311,31312,4,0),(17994,'34400',30751,30752,4,0),(17995,'34404',30681,30682,4,0),(17996,'34405',31089,31090,4,0),(17997,'34405',30703,30704,4,0),(17998,'34405',30753,30754,4,0),(17999,'34406',30755,30756,4,0),(18000,'34406',30661,30662,4,0),(18001,'34406',30531,30532,4,0),(18002,'34406',30689,30690,4,0),(18003,'34407',30881,30882,4,0),(18004,'34407',30923,30924,4,0),(18005,'34407',31033,31034,4,0),(18006,'34407',30663,30664,4,0),(18007,'34407',31123,31124,4,0),(18008,'34407',30579,30580,4,0),(18009,'34407',31269,31270,4,0),(18010,'34408',31271,31272,4,0),(18011,'34409',31273,31274,4,0),(18012,'34410',30863,30864,4,0),(18013,'34419',30725,30726,4,0),(18014,'34419',30865,30866,4,0),(18015,'34419',30771,30772,4,0),(18016,'34419',31249,31250,4,0),(18017,'34419',30477,30478,4,0),(18018,'34420',30479,30480,4,0),(18019,'34429',30831,30832,4,0),(18020,'34429',30835,30836,4,0),(18021,'34429',30947,30948,4,0),(18022,'34429',30465,30466,4,0),(18023,'34429',31037,31038,4,0),(18024,'34429',31063,31064,4,0),(18025,'34430',30951,30952,4,0),(18026,'34439',31135,31136,4,0),(18027,'34440',30717,30718,4,0),(18028,'34447',31029,31030,4,0),(18029,'34447',31301,31302,4,0),(18030,'34449',30965,30966,4,0),(18031,'34449',30487,30488,4,0),(18032,'34449',31241,31242,4,0),(18033,'34449',31359,31360,4,0),(18034,'34449',30823,30824,4,0),(18035,'34450',30491,30492,4,0),(18036,'34460',30897,30898,4,0),(18037,'34465',31155,31156,4,0),(18038,'34466',31341,31342,4,0),(18039,'34467',30851,30852,4,0),(18040,'34468',30805,30806,4,0),(18041,'34468',30557,30558,4,0),(18042,'34468',30893,30894,4,0),(18043,'34468',30775,30776,4,0),(18044,'34469',30899,30900,4,0),(18045,'34469',30839,30840,4,0),(18046,'34469',31017,31018,4,0),(18047,'34469',31227,31228,4,0),(18048,'34470',30565,30566,4,0),(18049,'34470',30787,30788,4,0),(18050,'34473',31131,31132,4,0),(18051,'34473',30505,30506,4,0),(18052,'34473',30567,30568,4,0),(18053,'34473',31169,31170,4,0),(18054,'34475',31319,31320,4,0),(18055,'34475',31219,31220,4,0),(18056,'34475',31199,31200,4,0),(18057,'34477',30519,30520,4,0),(18058,'34477',30819,30820,4,0),(18059,'34477',31293,31294,4,0),(18060,'34478',30621,30622,4,0),(18061,'34480',30453,30454,4,0),(18062,'34484',30683,30684,4,0),(18063,'34485',30859,30860,4,0),(18064,'34485',30885,30886,4,0),(18065,'34485',30795,30796,4,0),(18066,'34485',30931,30932,4,0),(18067,'34486',30633,30634,4,0),(18068,'34486',30887,30888,4,0),(18069,'34486',30995,30996,4,0),(18070,'34486',31099,31100,4,0),(18071,'34486',30437,30438,4,0),(18072,'34487',30889,30890,4,0),(18073,'34487',30455,30456,4,0),(18074,'34490',31115,31116,4,0),(18075,'34490',30493,30494,4,0),(18076,'34491',31297,31298,4,0),(18077,'34491',31229,31230,4,0),(18078,'34491',31091,31092,4,0),(18079,'34491',31073,31074,4,0),(18080,'34491',30433,30434,4,0),(18081,'34491',30705,30706,4,0),(18082,'34492',30457,30458,4,0),(18083,'34492',8697,8698,4,0),(18084,'34492',8483,8484,4,0),(18085,'34492',30439,30440,4,0),(18086,'34800',30441,30442,4,0),(18087,'34810',30443,30444,4,0),(18088,'34810',31055,31056,4,0),(18089,'34811',30445,30446,4,0),(18090,'34811',30977,30978,4,0),(18091,'34813',30447,30448,4,0),(18092,'34813',30979,30980,4,0),(18093,'34814',30543,30544,4,0),(18094,'34814',30981,30982,4,0),(18095,'34815',30983,30984,4,0),(18096,'34815',30449,30450,4,0),(18097,'34820',30523,30524,4,0),(18098,'34828',31067,31068,4,0),(18099,'34828',30525,30526,4,0),(18100,'34828',31057,31058,4,0),(18101,'34829',30561,30562,4,0),(18102,'34829',30527,30528,4,0),(18103,'34830',31077,31078,4,0),(18104,'34830',31059,31060,4,0),(18105,'34839',31069,31070,4,0),(18106,'34839',30635,30636,4,0),(18107,'34839',30873,30874,4,0),(18108,'34840',30637,30638,4,0),(18109,'34844',30639,30640,4,0),(18110,'34844',30685,30686,4,0),(18111,'34844',31151,31152,4,0),(18112,'34846',30973,30974,4,0),(18113,'34846',30641,30642,4,0),(18114,'34847',30779,30780,4,0),(18115,'34848',30781,30782,4,0),(18116,'34849',30783,30784,4,0),(18117,'34850',30605,30606,4,0),(18118,'34858',30607,30608,4,0),(18119,'34859',30609,30610,4,0),(18120,'34869',31103,31104,4,0),(18121,'34870',31021,31022,4,0),(18122,'34870',31105,31106,4,0),(18123,'34874',31023,31024,4,0),(18124,'34878',31025,31026,4,0),(18125,'34878',30667,30668,4,0),(18126,'34878',31107,31108,4,0),(18127,'34879',31109,31110,4,0),(18128,'34879',30733,30734,4,0),(18129,'34880',30735,30736,4,0),(18130,'34882',30669,30670,4,0),(18131,'34882',30737,30738,4,0),(18132,'34884',31111,31112,4,0),(18133,'34886',31181,31182,4,0),(18134,'34888',31183,31184,4,0),(18135,'34889',30713,30714,4,0),(18136,'34889',30739,30740,4,0),(18137,'34889',31185,31186,4,0),(18138,'34889',31237,31238,4,0),(18139,'36001',31967,31968,4,0),(18140,'36002',31969,31970,4,0),(18141,'36003',31971,31972,4,0),(18142,'36004',31973,31974,4,0),(18143,'36005',31901,31902,4,0),(18144,'36005',31975,31976,4,0),(18145,'36110',31553,31554,4,0),(18146,'36116',31581,31582,4,0),(18147,'36117',31555,31556,4,0),(18148,'36118',31557,31558,4,0),(18149,'36119',31559,31560,4,0),(18150,'36120',31583,31584,4,0),(18151,'36121',31585,31586,4,0),(18152,'36139',31587,31588,4,0),(18153,'36140',32279,32280,4,0),(18154,'36141',32281,32282,4,0),(18155,'36142',32283,32284,4,0),(18156,'36143',31977,31978,4,0),(18157,'36150',31979,31980,4,0),(18158,'36151',31981,31982,4,0),(18159,'36152',31983,31984,4,0),(18160,'36153',31985,31986,4,0),(18161,'36154',31987,31988,4,0),(18162,'36155',31989,31990,4,0),(18163,'36156',31991,31992,4,0),(18164,'36157',31993,31994,4,0),(18165,'36158',31995,31996,4,0),(18166,'36160',31997,31998,4,0),(18167,'36161',31999,32000,4,0),(18168,'36162',32001,32002,4,0),(18169,'36163',31903,31904,4,0),(18170,'36164',32003,32004,4,0),(18171,'36190',31503,31504,4,0),(18172,'36191',31505,31506,4,0),(18173,'36192',31765,31766,4,0),(18174,'36193',32011,32012,4,0),(18175,'36193',31507,31508,4,0),(18176,'36194',31509,31510,4,0),(18177,'36201',32197,32198,4,0),(18178,'36202',32199,32200,4,0),(18179,'36203',32201,32202,4,0),(18180,'36204',32203,32204,4,0),(18181,'36205',32205,32206,4,0),(18182,'36206',32207,32208,4,0),(18183,'36207',32209,32210,4,0),(18184,'36208',32211,32212,4,0),(18185,'36209',32213,32214,4,0),(18186,'36210',32215,32216,4,0),(18187,'36211',32217,32218,4,0),(18188,'36212',32219,32220,4,0),(18189,'36213',32221,32222,4,0),(18190,'36214',32223,32224,4,0),(18191,'36215',32225,32226,4,0),(18192,'36216',32227,32228,4,0),(18193,'36300',31491,31492,4,0),(18194,'36307',31493,31494,4,0),(18195,'36308',31495,31496,4,0),(18196,'36309',31879,31880,4,0),(18197,'36309',31497,31498,4,0),(18198,'36310',32229,32230,4,0),(18199,'36311',31815,31816,4,0),(18200,'36312',32231,32232,4,0),(18201,'36313',32233,32234,4,0),(18202,'36314',32235,32236,4,0),(18203,'36315',32237,32238,4,0),(18204,'36316',31691,31692,4,0),(18205,'36317',32239,32240,4,0),(18206,'36318',32241,32242,4,0),(18207,'36320',32019,32020,4,0),(18208,'36330',32243,32244,4,0),(18209,'36331',32245,32246,4,0),(18210,'36340',31829,31830,4,0),(18211,'36350',31831,31832,4,0),(18212,'36360',31833,31834,4,0),(18213,'36370',31835,31836,4,0),(18214,'36378',31693,31694,4,0),(18215,'36379',31837,31838,4,0),(18216,'36380',31695,31696,4,0),(18217,'36388',31697,31698,4,0),(18218,'36389',31699,31700,4,0),(18219,'36390',32247,32248,4,0),(18220,'36391',31839,31840,4,0),(18221,'36392',32249,32250,4,0),(18222,'36393',31499,31500,4,0),(18223,'36400',31853,31854,4,0),(18224,'36410',31855,31856,4,0),(18225,'36411',31857,31858,4,0),(18226,'36412',31859,31860,4,0),(18227,'36413',31861,31862,4,0),(18228,'36414',31863,31864,4,0),(18229,'36415',31817,31818,4,0),(18230,'36416',31819,31820,4,0),(18231,'36417',31821,31822,4,0),(18232,'36418',31865,31866,4,0),(18233,'36418',31823,31824,4,0),(18234,'36419',31825,31826,4,0),(18235,'36420',31617,31618,4,0),(18236,'36428',31619,31620,4,0),(18237,'36429',31621,31622,4,0),(18238,'36430',31463,31464,4,0),(18239,'36435',31465,31466,4,0),(18240,'36436',31467,31468,4,0),(18241,'36437',31469,31470,4,0),(18242,'36438',31471,31472,4,0),(18243,'36439',31473,31474,4,0),(18244,'36440',31479,31480,4,0),(18245,'36446',31481,31482,4,0),(18246,'36447',31483,31484,4,0),(18247,'36448',31485,31486,4,0),(18248,'36449',31487,31488,4,0),(18249,'36450',32081,32082,4,0),(18250,'36455',32083,32084,4,0),(18251,'36456',32085,32086,4,0),(18252,'36457',32087,32088,4,0),(18253,'36458',32089,32090,4,0),(18254,'36459',32091,32092,4,0),(18255,'36460',32065,32066,4,0),(18256,'36460',32167,32168,4,0),(18257,'36470',32067,32068,4,0),(18258,'36470',32141,32142,4,0),(18259,'36471',32069,32070,4,0),(18260,'36472',32071,32072,4,0),(18261,'36473',32073,32074,4,0),(18262,'36474',32075,32076,4,0),(18263,'36475',32077,32078,4,0),(18264,'36475',31867,31868,4,0),(18265,'36490',31623,31624,4,0),(18266,'36491',31625,31626,4,0),(18267,'36492',31627,31628,4,0),(18268,'36493',31629,31630,4,0),(18269,'36494',31475,31476,4,0),(18270,'36500',31711,31712,4,0),(18271,'36510',31713,31714,4,0),(18272,'36511',31715,31716,4,0),(18273,'36511',32053,32054,4,0),(18274,'36512',31717,31718,4,0),(18275,'36514',31719,31720,4,0),(18276,'36514',31445,31446,4,0),(18277,'36515',31721,31722,4,0),(18278,'36516',31647,31648,4,0),(18279,'36516',31723,31724,4,0),(18280,'36517',31725,31726,4,0),(18281,'36518',31727,31728,4,0),(18282,'36518',31649,31650,4,0),(18283,'36519',31729,31730,4,0),(18284,'36520',31447,31448,4,0),(18285,'36524',31449,31450,4,0),(18286,'36525',31451,31452,4,0),(18287,'36526',31453,31454,4,0),(18288,'36527',31455,31456,4,0),(18289,'36528',31457,31458,4,0),(18290,'36529',31459,31460,4,0),(18291,'36530',32055,32056,4,0),(18292,'36537',32057,32058,4,0),(18293,'36538',32059,32060,4,0),(18294,'36539',32061,32062,4,0),(18295,'36540',32109,32110,4,0),(18296,'36543',32111,32112,4,0),(18297,'36544',32113,32114,4,0),(18298,'36545',32115,32116,4,0),(18299,'36546',32117,32118,4,0),(18300,'36547',32119,32120,4,0),(18301,'36548',32121,32122,4,0),(18302,'36549',31653,31654,4,0),(18303,'36549',32123,32124,4,0),(18304,'36550',31655,31656,4,0),(18305,'36555',31657,31658,4,0),(18306,'36556',31659,31660,4,0),(18307,'36557',31661,31662,4,0),(18308,'36558',31663,31664,4,0),(18309,'36559',31383,31384,4,0),(18310,'36560',31665,31666,4,0),(18311,'36567',31667,31668,4,0),(18312,'36569',31669,31670,4,0),(18313,'36570',32125,32126,4,0),(18314,'36579',32127,32128,4,0),(18315,'36580',32253,32254,4,0),(18316,'36581',32255,32256,4,0),(18317,'36582',32257,32258,4,0),(18318,'36583',32259,32260,4,0),(18319,'36583',31731,31732,4,0),(18320,'36584',31385,31386,4,0),(18321,'36585',32261,32262,4,0),(18322,'36586',32263,32264,4,0),(18323,'36587',32129,32130,4,0),(18324,'36587',32265,32266,4,0),(18325,'36588',31387,31388,4,0),(18326,'36589',32131,32132,4,0),(18327,'36590',32267,32268,4,0),(18328,'36596',32269,32270,4,0),(18329,'36596',31733,31734,4,0),(18330,'36597',32271,32272,4,0),(18331,'36598',32273,32274,4,0),(18332,'36598',31735,31736,4,0),(18333,'36599',32275,32276,4,0),(18334,'36600',32287,32288,4,0),(18335,'36610',32289,32290,4,0),(18336,'36611',32291,32292,4,0),(18337,'36612',31577,31578,4,0),(18338,'36613',32293,32294,4,0),(18339,'36614',32305,32306,4,0),(18340,'36615',31525,31526,4,0),(18341,'36616',32307,32308,4,0),(18342,'36616',31767,31768,4,0),(18343,'36617',32295,32296,4,0),(18344,'36618',32297,32298,4,0),(18345,'36619',32299,32300,4,0),(18346,'36620',32309,32310,4,0),(18347,'36626',31423,31424,4,0),(18348,'36627',32311,32312,4,0),(18349,'36628',32313,32314,4,0),(18350,'36629',32315,32316,4,0),(18351,'36629',32301,32302,4,0),(18352,'36630',31541,31542,4,0),(18353,'36633',31543,31544,4,0),(18354,'36634',31545,31546,4,0),(18355,'36635',31547,31548,4,0),(18356,'36635',32045,32046,4,0),(18357,'36636',32047,32048,4,0),(18358,'36637',31769,31770,4,0),(18359,'36638',31755,31756,4,0),(18360,'36638',32049,32050,4,0),(18361,'36639',31549,31550,4,0),(18362,'36640',31961,31962,4,0),(18363,'36645',32189,32190,4,0),(18364,'36646',32191,32192,4,0),(18365,'36647',32193,32194,4,0),(18366,'36649',31963,31964,4,0),(18367,'36650',31527,31528,4,0),(18368,'36653',31529,31530,4,0),(18369,'36654',31531,31532,4,0),(18370,'36655',31533,31534,4,0),(18371,'36656',31535,31536,4,0),(18372,'36657',32013,32014,4,0),(18373,'36658',31389,31390,4,0),(18374,'36658',32015,32016,4,0),(18375,'36659',31537,31538,4,0),(18376,'36660',31807,31808,4,0),(18377,'36668',31809,31810,4,0),(18378,'36669',31811,31812,4,0),(18379,'36670',31635,31636,4,0),(18380,'36675',31637,31638,4,0),(18381,'36676',31391,31392,4,0),(18382,'36677',31639,31640,4,0),(18383,'36678',31641,31642,4,0),(18384,'36679',31643,31644,4,0),(18385,'36680',31393,31394,4,0),(18386,'36681',31395,31396,4,0),(18387,'36682',31397,31398,4,0),(18388,'36683',31399,31400,4,0),(18389,'36684',31401,31402,4,0),(18390,'36685',31403,31404,4,0),(18391,'36685',31929,31930,4,0),(18392,'36686',31405,31406,4,0),(18393,'36687',31407,31408,4,0),(18394,'36688',31409,31410,4,0),(18395,'36689',31411,31412,4,0),(18396,'36690',32005,32006,4,0),(18397,'36690',32135,32136,4,0),(18398,'36691',32137,32138,4,0),(18399,'36692',31511,31512,4,0),(18400,'36693',32021,32022,4,0),(18401,'36700',32169,32170,4,0),(18402,'36710',32171,32172,4,0),(18403,'36711',32173,32174,4,0),(18404,'36712',32175,32176,4,0),(18405,'36713',32177,32178,4,0),(18406,'36714',32179,32180,4,0),(18407,'36715',32181,32182,4,0),(18408,'36720',32183,32184,4,0),(18409,'36729',32185,32186,4,0),(18410,'36730',32143,32144,4,0),(18411,'36739',32145,32146,4,0),(18412,'36740',32147,32148,4,0),(18413,'36746',32149,32150,4,0),(18414,'36747',32151,32152,4,0),(18415,'36748',32153,32154,4,0),(18416,'36749',32155,32156,4,0),(18417,'36750',32157,32158,4,0),(18418,'36760',31871,31872,4,0),(18419,'36770',31873,31874,4,0),(18420,'36778',31875,31876,4,0),(18421,'36779',31881,31882,4,0),(18422,'36780',31415,31416,4,0),(18423,'36788',31417,31418,4,0),(18424,'36789',31419,31420,4,0),(18425,'36790',32159,32160,4,0),(18426,'36791',32161,32162,4,0),(18427,'36792',32163,32164,4,0),(18428,'36794',31883,31884,4,0),(18429,'36800',32023,32024,4,0),(18430,'36810',32025,32026,4,0),(18431,'36811',32027,32028,4,0),(18432,'36812',32029,32030,4,0),(18433,'36813',32031,32032,4,0),(18434,'36814',32033,32034,4,0),(18435,'36815',32035,32036,4,0),(18436,'36816',32037,32038,4,0),(18437,'36817',31887,31888,4,0),(18438,'36817',32039,32040,4,0),(18439,'36818',32041,32042,4,0),(18440,'36820',31913,31914,4,0),(18441,'36826',31915,31916,4,0),(18442,'36827',31917,31918,4,0),(18443,'36828',31919,31920,4,0),(18444,'36829',31921,31922,4,0),(18445,'36830',31427,31428,4,0),(18446,'36835',31429,31430,4,0),(18447,'36836',31431,31432,4,0),(18448,'36837',31433,31434,4,0),(18449,'36838',31435,31436,4,0),(18450,'36839',31437,31438,4,0),(18451,'36840',31889,31890,4,0),(18452,'36841',31891,31892,4,0),(18453,'36842',31893,31894,4,0),(18454,'36843',31895,31896,4,0),(18455,'36844',31897,31898,4,0),(18456,'36845',31673,31674,4,0),(18457,'36846',31675,31676,4,0),(18458,'36847',31677,31678,4,0),(18459,'36848',31679,31680,4,0),(18460,'36849',31681,31682,4,0),(18461,'36850',31439,31440,4,0),(18462,'36851',31683,31684,4,0),(18463,'36852',31685,31686,4,0),(18464,'36853',31923,31924,4,0),(18465,'36853',31441,31442,4,0),(18466,'36854',31589,31590,4,0),(18467,'36855',31591,31592,4,0),(18468,'36856',31593,31594,4,0),(18469,'36857',31925,31926,4,0),(18470,'36857',31595,31596,4,0),(18471,'36858',31597,31598,4,0),(18472,'36859',31599,31600,4,0),(18473,'36860',31931,31932,4,0),(18474,'36861',31933,31934,4,0),(18475,'36862',31935,31936,4,0),(18476,'36863',31937,31938,4,0),(18477,'36864',31939,31940,4,0),(18478,'36865',31941,31942,4,0),(18479,'36866',31943,31944,4,0),(18480,'36867',31945,31946,4,0),(18481,'36868',31947,31948,4,0),(18482,'36869',31949,31950,4,0),(18483,'36870',31787,31788,4,0),(18484,'36872',31603,31604,4,0),(18485,'36873',31605,31606,4,0),(18486,'36874',31789,31790,4,0),(18487,'36875',31791,31792,4,0),(18488,'36875',31687,31688,4,0),(18489,'36876',31793,31794,4,0),(18490,'36876',31607,31608,4,0),(18491,'36877',31795,31796,4,0),(18492,'36877',31609,31610,4,0),(18493,'36878',31797,31798,4,0),(18494,'36878',31611,31612,4,0),(18495,'36879',31799,31800,4,0),(18496,'36880',31365,31366,4,0),(18497,'36883',31367,31368,4,0),(18498,'36884',31369,31370,4,0),(18499,'36885',31631,31632,4,0),(18500,'36885',31371,31372,4,0),(18501,'36886',31373,31374,4,0),(18502,'36887',31375,31376,4,0),(18503,'36888',31377,31378,4,0),(18504,'36889',31379,31380,4,0),(18505,'36889',31613,31614,4,0),(18506,'36890',31803,31804,4,0),(18507,'36891',31951,31952,4,0),(18508,'36892',31953,31954,4,0),(18509,'36893',31955,31956,4,0),(18510,'36895',31957,31958,4,0),(18511,'36900',31739,31740,4,0),(18512,'36910',32007,32008,4,0),(18513,'36911',31741,31742,4,0),(18514,'36912',31743,31744,4,0),(18515,'36913',31745,31746,4,0),(18516,'36914',31747,31748,4,0),(18517,'36915',31749,31750,4,0),(18518,'36920',31751,31752,4,0),(18519,'36930',31515,31516,4,0),(18520,'36937',31517,31518,4,0),(18521,'36938',31519,31520,4,0),(18522,'36939',31521,31522,4,0),(18523,'36940',31563,31564,4,0),(18524,'36945',31565,31566,4,0),(18525,'36946',31567,31568,4,0),(18526,'36947',31569,31570,4,0),(18527,'36948',31571,31572,4,0),(18528,'36950',31773,31774,4,0),(18529,'36954',31775,31776,4,0),(18530,'36955',31777,31778,4,0),(18531,'36957',31779,31780,4,0),(18532,'36958',31781,31782,4,0),(18533,'36959',31783,31784,4,0),(18534,'36960',32095,32096,4,0),(18535,'36966',32097,32098,4,0),(18536,'36967',31757,31758,4,0),(18537,'36968',31759,31760,4,0),(18538,'36969',32099,32100,4,0),(18539,'36969',31761,31762,4,0),(18540,'36970',32101,32102,4,0),(18541,'36979',32103,32104,4,0),(18542,'36980',31843,31844,4,0),(18543,'36988',31845,31846,4,0),(18544,'36989',31847,31848,4,0),(18545,'36990',32105,32106,4,0),(18546,'36991',31849,31850,4,0),(18547,'36992',31905,31906,4,0),(18548,'36993',31907,31908,4,0),(18549,'36995',31909,31910,4,0),(18550,'37001',33587,33590,4,1),(18551,'37002',33591,33592,4,0),(18552,'37003',33593,33594,4,0),(18553,'37004',33595,33596,4,0),(18554,'37005',33597,33598,4,0),(18555,'37006',33599,33600,4,0),(18556,'37007',33601,33602,4,0),(18557,'37008',33603,33604,4,0),(18558,'37008',32621,32622,4,0),(18559,'37100',33187,33188,4,0),(18560,'37110',32777,32778,4,0),(18561,'37110',34061,34062,4,0),(18562,'37110',32387,32388,4,0),(18563,'37110',33731,33732,4,0),(18564,'37110',33825,33826,4,0),(18565,'37110',33673,33674,4,0),(18566,'37111',32445,32446,4,0),(18567,'37111',33189,33190,4,0),(18568,'37111',33405,33406,4,0),(18569,'37111',33675,33676,4,0),(18570,'37114',32973,32974,4,0),(18571,'37114',32843,32844,4,0),(18572,'37114',34007,34008,4,0),(18573,'37115',33909,33910,4,0),(18574,'37115',33895,33896,4,0),(18575,'37115',32431,32432,4,0),(18576,'37115',33047,33048,4,0),(18577,'37115',33987,33988,4,0),(18578,'37116',33191,33192,4,0),(18579,'37117',32765,32766,4,0),(18580,'37120',32635,32636,4,0),(18581,'37120',32767,32768,4,0),(18582,'37129',32883,32884,4,0),(18583,'37129',32933,32934,4,0),(18584,'37129',32637,32638,4,0),(18585,'37129',33417,33418,4,0),(18586,'37129',32769,32770,4,0),(18587,'37130',33989,33990,4,0),(18588,'37130',32757,32758,4,0),(18589,'37130',33111,33112,4,0),(18590,'37130',32597,32598,4,0),(18591,'37130',33573,33574,4,0),(18592,'37130',33777,33778,4,0),(18593,'37139',32759,32760,4,0),(18594,'37139',33113,33114,4,0),(18595,'37140',34011,34012,4,0),(18596,'37147',33957,33958,4,0),(18597,'37148',34013,34014,4,0),(18598,'37148',33959,33960,4,0),(18599,'37148',32871,32872,4,0),(18600,'37148',33833,33834,4,0),(18601,'37149',34015,34016,4,0),(18602,'37149',33193,33194,4,0),(18603,'37149',33835,33836,4,0),(18604,'37150',34017,34018,4,0),(18605,'37159',33545,33546,4,0),(18606,'37159',34019,34020,4,0),(18607,'37160',33979,33980,4,0),(18608,'37169',33981,33982,4,0),(18609,'37170',32977,32978,4,0),(18610,'37170',33991,33992,4,0),(18611,'37170',34065,34066,4,0),(18612,'37170',32827,32828,4,0),(18613,'37170',33911,33912,4,0),(18614,'37170',33669,33670,4,0),(18615,'37170',32721,32722,4,0),(18616,'37170',32639,32640,4,0),(18617,'37170',33115,33116,4,0),(18618,'37171',32811,32812,4,0),(18619,'37171',33289,33290,4,0),(18620,'37172',33735,33736,4,0),(18621,'37173',32333,32334,4,0),(18622,'37173',33829,33830,4,0),(18623,'37174',33983,33984,4,0),(18624,'37175',33497,33498,4,0),(18625,'37176',32435,32436,4,0),(18626,'37181',33457,33458,4,0),(18627,'37181',32571,32572,4,0),(18628,'37183',33317,33318,4,0),(18629,'37183',32453,32454,4,0),(18630,'37183',33655,33656,4,0),(18631,'37183',32403,32404,4,0),(18632,'37183',33337,33338,4,0),(18633,'37184',33967,33968,4,0),(18634,'37185',32667,32668,4,0),(18635,'37185',33931,33932,4,0),(18636,'37185',32761,32762,4,0),(18637,'37185',33897,33898,4,0),(18638,'37186',32405,32406,4,0),(18639,'37186',33339,33340,4,0),(18640,'37186',32485,32486,4,0),(18641,'37186',33657,33658,4,0),(18642,'37187',32407,32408,4,0),(18643,'37187',33265,33266,4,0),(18644,'37188',32455,32456,4,0),(18645,'37188',32623,32624,4,0),(18646,'37189',33969,33970,4,0),(18647,'37190',33809,33810,4,0),(18648,'37191',32625,32626,4,0),(18649,'37191',32575,32576,4,0),(18650,'37192',32641,32642,4,0),(18651,'37192',32409,32410,4,0),(18652,'37193',33659,33660,4,0),(18653,'37193',32561,32562,4,0),(18654,'37194',33711,33712,4,0),(18655,'37197',33341,33342,4,0),(18656,'37198',32627,32628,4,0),(18657,'37200',33095,33096,4,0),(18658,'37207',33097,33098,4,0),(18659,'37208',33099,33100,4,0),(18660,'37208',33649,33650,4,0),(18661,'37209',33461,33462,4,0),(18662,'37209',32801,32802,4,0),(18663,'37209',32543,32544,4,0),(18664,'37209',32967,32968,4,0),(18665,'37210',34047,34048,4,0),(18666,'37214',33157,33158,4,0),(18667,'37214',32553,32554,4,0),(18668,'37214',33129,33130,4,0),(18669,'37214',33885,33886,4,0),(18670,'37216',33521,33522,4,0),(18671,'37216',32715,32716,4,0),(18672,'37216',33329,33330,4,0),(18673,'37216',33489,33490,4,0),(18674,'37216',33493,33494,4,0),(18675,'37217',32495,32496,4,0),(18676,'37217',33039,33040,4,0),(18677,'37217',33995,33996,4,0),(18678,'37217',32539,32540,4,0),(18679,'37217',33681,33682,4,0),(18680,'37217',33963,33964,4,0),(18681,'37217',33887,33888,4,0),(18682,'37219',33563,33564,4,0),(18683,'37219',32985,32986,4,0),(18684,'37219',33331,33332,4,0),(18685,'37219',34053,34054,4,0),(18686,'37219',32563,32564,4,0),(18687,'37220',33091,33092,4,0),(18688,'37230',33019,33020,4,0),(18689,'37240',33209,33210,4,0),(18690,'37246',33765,33766,4,0),(18691,'37247',33133,33134,4,0),(18692,'37248',32329,32330,4,0),(18693,'37250',32367,32368,4,0),(18694,'37250',34049,34050,4,0),(18695,'37251',32369,32370,4,0),(18696,'37251',33247,33248,4,0),(18697,'37253',32693,32694,4,0),(18698,'37253',32371,32372,4,0),(18699,'37253',33161,33162,4,0),(18700,'37254',33261,33262,4,0),(18701,'37255',32499,32500,4,0),(18702,'37256',33867,33868,4,0),(18703,'37256',33999,34000,4,0),(18704,'37256',32815,32816,4,0),(18705,'37256',32857,32858,4,0),(18706,'37257',33739,33740,4,0),(18707,'37258',34043,34044,4,0),(18708,'37258',33333,33334,4,0),(18709,'37259',33607,33608,4,0),(18710,'37260',34031,34032,4,0),(18711,'37267',33975,33976,4,0),(18712,'37270',33627,33628,4,0),(18713,'37271',32481,32482,4,0),(18714,'37273',32697,32698,4,0),(18715,'37281',32803,32804,4,0),(18716,'37290',32527,32528,4,0),(18717,'37291',32531,32532,4,0),(18718,'37291',32515,32516,4,0),(18719,'37291',33393,33394,4,0),(18720,'37291',32699,32700,4,0),(18721,'37291',32907,32908,4,0),(18722,'37292',33395,33396,4,0),(18723,'37300',33481,33482,4,0),(18724,'37310',33217,33218,4,0),(18725,'37311',33717,33718,4,0),(18726,'37312',32337,32338,4,0),(18727,'37313',33225,33226,4,0),(18728,'37314',33611,33612,4,0),(18729,'37315',33229,33230,4,0),(18730,'37316',32535,32536,4,0),(18731,'37317',32789,32790,4,0),(18732,'37317',32399,32400,4,0),(18733,'37318',33427,33428,4,0),(18734,'37318',33559,33560,4,0),(18735,'37319',32617,32618,4,0),(18736,'37320',33947,33948,4,0),(18737,'37329',33915,33916,4,0),(18738,'37329',32355,32356,4,0),(18739,'37330',32477,32478,4,0),(18740,'37337',32745,32746,4,0),(18741,'37337',33321,33322,4,0),(18742,'37338',33035,33036,4,0),(18743,'37338',34039,34040,4,0),(18744,'37339',34035,34036,4,0),(18745,'37340',33645,33646,4,0),(18746,'37340',32391,32392,4,0),(18747,'37350',32375,32376,4,0),(18748,'37400',32609,32610,4,0),(18749,'37405',32613,32614,4,0),(18750,'37406',33409,33410,4,0),(18751,'37406',33919,33920,4,0),(18752,'37406',33517,33518,4,0),(18753,'37408',34069,34070,4,0),(18754,'37409',33793,33794,4,0),(18755,'37410',32823,32824,4,0),(18756,'37418',32449,32450,4,0),(18757,'37419',33423,33424,4,0),(18758,'37419',32879,32880,4,0),(18759,'37420',32981,32982,4,0),(18760,'37427',33153,33154,4,0),(18761,'37427',33453,33454,4,0),(18762,'37427',33123,33124,4,0),(18763,'37428',33399,33400,4,0),(18764,'37428',33125,33126,4,0),(18765,'37428',34027,34028,4,0),(18766,'37429',32463,32464,4,0),(18767,'37429',33797,33798,4,0),(18768,'37429',32379,32380,4,0),(18769,'37430',33325,33326,4,0),(18770,'37439',33619,33620,4,0),(18771,'37439',32663,32664,4,0),(18772,'37440',32579,32580,4,0),(18773,'37440',32487,32488,4,0),(18774,'37447',33579,33580,4,0),(18775,'37448',32599,32600,4,0),(18776,'37448',32581,32582,4,0),(18777,'37449',33419,33420,4,0),(18778,'37449',32643,32644,4,0),(18779,'37449',32935,32936,4,0),(18780,'37450',33251,33252,4,0),(18781,'37450',33177,33178,4,0),(18782,'37450',33901,33902,4,0),(18783,'37451',33927,33928,4,0),(18784,'37451',32645,32646,4,0),(18785,'37451',32649,32650,4,0),(18786,'37452',33347,33348,4,0),(18787,'37452',33179,33180,4,0),(18788,'37452',33903,33904,4,0),(18789,'37453',33905,33906,4,0),(18790,'37453',33253,33254,4,0),(18791,'37453',33661,33662,4,0),(18792,'37454',33181,33182,4,0),(18793,'37458',33443,33444,4,0),(18794,'37460',33699,33700,4,0),(18795,'37460',32419,32420,4,0),(18796,'37460',33779,33780,4,0),(18797,'37460',32969,32970,4,0),(18798,'37465',33141,33142,4,0),(18799,'37466',33685,33686,4,0),(18800,'37466',32421,32422,4,0),(18801,'37467',33701,33702,4,0),(18802,'37468',33707,33708,4,0),(18803,'37468',33703,33704,4,0),(18804,'37468',32717,32718,4,0),(18805,'37468',34003,34004,4,0),(18806,'37470',33693,33694,4,0),(18807,'37478',32425,32426,4,0),(18808,'37478',32351,32352,4,0),(18809,'37478',32753,32754,4,0),(18810,'37479',32675,32676,4,0),(18811,'37479',33695,33696,4,0),(18812,'37480',32919,32920,4,0),(18813,'37481',32921,32922,4,0),(18814,'37488',33951,33952,4,0),(18815,'37488',33075,33076,4,0),(18816,'37488',33663,33664,4,0),(18817,'37488',33555,33556,4,0),(18818,'37488',32359,32360,4,0),(18819,'37488',33943,33944,4,0),(18820,'37490',32557,32558,4,0),(18821,'37490',33509,33510,4,0),(18822,'37491',32601,32602,4,0),(18823,'37491',33781,33782,4,0),(18824,'37492',33575,33576,4,0),(18825,'37493',33463,33464,4,0),(18826,'37493',33101,33102,4,0),(18827,'37493',32545,32546,4,0),(18828,'37494',33237,33238,4,0),(18829,'37494',32681,32682,4,0),(18830,'37495',33565,33566,4,0),(18831,'37496',33239,33240,4,0),(18832,'37497',33953,33954,4,0),(18833,'37497',33051,33052,4,0),(18834,'37497',32631,32632,4,0),(18835,'37497',33939,33940,4,0),(18836,'37497',32875,32876,4,0),(18837,'37497',32949,32950,4,0),(18838,'37500',32723,32724,4,0),(18839,'37510',33233,33234,4,0),(18840,'37510',33003,33004,4,0),(18841,'37510',33431,33432,4,0),(18842,'37510',32325,32326,4,0),(18843,'37510',32831,32832,4,0),(18844,'37515',33087,33088,4,0),(18845,'37516',33005,33006,4,0),(18846,'37520',32781,32782,4,0),(18847,'37521',33569,33570,4,0),(18848,'37522',34023,34024,4,0),(18849,'37523',33477,33478,4,0),(18850,'37524',32819,32820,4,0),(18851,'37530',33757,33758,4,0),(18852,'37531',33751,33752,4,0),(18853,'37532',33293,33294,4,0),(18854,'37540',32903,32904,4,0),(18855,'37541',32659,32660,4,0),(18856,'37542',33385,33386,4,0),(18857,'37550',32589,32590,4,0),(18858,'37551',33043,33044,4,0),(18859,'37552',33525,33526,4,0),(18860,'37553',33527,33528,4,0),(18861,'37554',33055,33056,4,0),(18862,'37555',33063,33064,4,0),(18863,'37590',32725,32726,4,0),(18864,'37590',33805,33806,4,0),(18865,'37590',33753,33754,4,0),(18866,'37590',33313,33314,4,0),(18867,'37591',34057,34058,4,0),(18868,'37591',32727,32728,4,0),(18869,'37591',33067,33068,4,0),(18870,'37591',32411,32412,4,0),(18871,'37592',33583,33584,4,0),(18872,'37592',32677,32678,4,0),(18873,'37593',32729,32730,4,0),(18874,'37594',32731,32732,4,0),(18875,'37595',32733,32734,4,0),(18876,'37600',33785,33786,4,0),(18877,'37606',33535,33536,4,0),(18878,'37607',32491,32492,4,0),(18879,'37607',33801,33802,4,0),(18880,'37607',33137,33138,4,0),(18881,'37607',33381,33382,4,0),(18882,'37608',33787,33788,4,0),(18883,'37609',33183,33184,4,0),(18884,'37609',32519,32520,4,0),(18885,'37609',33665,33666,4,0),(18886,'37609',33789,33790,4,0),(18887,'37609',32651,32652,4,0),(18888,'37609',33349,33350,4,0),(18889,'37610',33273,33274,4,0),(18890,'37617',33009,33010,4,0),(18891,'37618',33281,33282,4,0),(18892,'37619',33221,33222,4,0),(18893,'37619',33011,33012,4,0),(18894,'37621',32689,32690,4,0),(18895,'37621',32383,32384,4,0),(18896,'37621',32785,32786,4,0),(18897,'37621',32711,32712,4,0),(18898,'37621',33071,33072,4,0),(18899,'37621',32807,32808,4,0),(18900,'37624',33059,33060,4,0),(18901,'37630',32567,32568,4,0),(18902,'37638',33743,33744,4,0),(18903,'37638',33027,33028,4,0),(18904,'37639',32427,32428,4,0),(18905,'37640',33651,33652,4,0),(18906,'37640',32321,32322,4,0),(18907,'37650',33747,33748,4,0),(18908,'37656',32685,32686,4,0),(18909,'37657',33773,33774,4,0),(18910,'37658',32957,32958,4,0),(18911,'37658',33935,33936,4,0),(18912,'37659',33357,33358,4,0),(18913,'37659',33631,33632,4,0),(18914,'37659',33639,33640,4,0),(18915,'37659',33173,33174,4,0),(18916,'37660',33269,33270,4,0),(18917,'37670',33725,33726,4,0),(18918,'37671',33623,33624,4,0),(18919,'37680',33843,33844,4,0),(18920,'37682',33727,33728,4,0),(18921,'37683',33277,33278,4,0),(18922,'37684',32749,32750,4,0),(18923,'37690',33103,33104,4,0),(18924,'37694',33641,33642,4,0),(18925,'37700',32503,32504,4,0),(18926,'37700',32993,32994,4,0),(18927,'37710',32593,32594,4,0),(18928,'37711',32741,32742,4,0),(18929,'37712',33505,33506,4,0),(18930,'37712',33023,33024,4,0),(18931,'37713',33847,33848,4,0),(18932,'37714',33083,33084,4,0),(18933,'37716',33107,33108,4,0),(18934,'37716',32605,32606,4,0),(18935,'37716',33365,33366,4,0),(18936,'37717',33881,33882,4,0),(18937,'37717',32505,32506,4,0),(18938,'37718',32363,32364,4,0),(18939,'37720',33549,33550,4,0),(18940,'37720',32793,32794,4,0),(18941,'37724',33855,33856,4,0),(18942,'37724',32795,32796,4,0),(18943,'37724',33165,33166,4,0),(18944,'37726',32797,32798,4,0),(18945,'37727',33301,33302,4,0),(18946,'37727',33473,33474,4,0),(18947,'37729',33551,33552,4,0),(18948,'37730',33197,33198,4,0),(18949,'37740',33721,33722,4,0),(18950,'37748',33539,33540,4,0),(18951,'37749',32835,32836,4,0),(18952,'37749',33377,33378,4,0),(18953,'37750',32703,32704,4,0),(18954,'37750',33541,33542,4,0),(18955,'37751',32953,32954,4,0),(18956,'37752',33149,33150,4,0),(18957,'37753',32467,32468,4,0),(18958,'37754',32469,32470,4,0),(18959,'37755',32471,32472,4,0),(18960,'37756',32473,32474,4,0),(18961,'37760',33201,33202,4,0),(18962,'37762',33015,33016,4,0),(18963,'37762',32867,32868,4,0),(18964,'37762',33145,33146,4,0),(18965,'37763',33635,33636,4,0),(18966,'37764',33877,33878,4,0),(18967,'37765',32861,32862,4,0),(18968,'37765',32839,32840,4,0),(18969,'37765',33285,33286,4,0),(18970,'37766',33445,33446,4,0),(18971,'37766',32863,32864,4,0),(18972,'37766',32891,32892,4,0),(18973,'37766',33257,33258,4,0),(18974,'37767',32655,32656,4,0),(18975,'37768',32911,32912,4,0),(18976,'37768',33205,33206,4,0),(18977,'37770',32995,32996,4,0),(18978,'37774',32989,32990,4,0),(18979,'37775',32895,32896,4,0),(18980,'37776',33353,33354,4,0),(18981,'37777',33769,33770,4,0),(18982,'37777',33079,33080,4,0),(18983,'37778',32997,32998,4,0),(18984,'37779',33615,33616,4,0),(18985,'37779',32415,32416,4,0),(18986,'37780',33119,33120,4,0),(18987,'37785',32939,32940,4,0),(18988,'37786',32941,32942,4,0),(18989,'37787',33467,33468,4,0),(18990,'37788',33447,33448,4,0),(18991,'37788',33309,33310,4,0),(18992,'37789',32549,32550,4,0),(18993,'37789',32511,32512,4,0),(18994,'37789',32899,32900,4,0),(18995,'37790',32915,32916,4,0),(18996,'37791',33501,33502,4,0),(18997,'37791',33891,33892,4,0),(18998,'37791',33531,33532,4,0),(18999,'37791',33851,33852,4,0),(19000,'37792',33449,33450,4,0),(19001,'37793',32457,32458,4,0),(19002,'37793',32507,32508,4,0),(19003,'37794',33373,33374,4,0),(19004,'37794',33689,33690,4,0),(19005,'37795',33297,33298,4,0),(19006,'37795',32999,33000,4,0),(19007,'37795',32523,32524,4,0),(19008,'37795',33513,33514,4,0),(19009,'37796',33343,33344,4,0),(19010,'37796',32459,32460,4,0),(19011,'37797',32585,32586,4,0),(19012,'37797',32669,32670,4,0),(19013,'37798',33971,33972,4,0),(19014,'37798',33871,33872,4,0),(19015,'37798',32671,32672,4,0),(19016,'37798',33305,33306,4,0),(19017,'37799',33817,33818,4,0),(19018,'37799',33677,33678,4,0),(19019,'37799',32887,32888,4,0),(19020,'37799',33389,33390,4,0),(19021,'37799',33873,33874,4,0),(19022,'37799',33413,33414,4,0),(19023,'37799',33859,33860,4,0),(19024,'37800',32341,32342,4,0),(19025,'37810',32961,32962,4,0),(19026,'37820',33485,33486,4,0),(19027,'37830',32737,32738,4,0),(19028,'37840',33821,33822,4,0),(19029,'37850',33361,33362,4,0),(19030,'37860',33029,33030,4,0),(19031,'37861',32707,32708,4,0),(19032,'37862',33031,33032,4,0),(19033,'37863',32439,32440,4,0),(19034,'37864',32441,32442,4,0),(19035,'37865',33169,33170,4,0),(19036,'37870',32395,32396,4,0),(19037,'37871',33439,33440,4,0),(19038,'37872',32925,32926,4,0),(19039,'37873',32927,32928,4,0),(19040,'37874',32929,32930,4,0),(19041,'37874',32847,32848,4,0),(19042,'37874',32963,32964,4,0),(19043,'37881',33839,33840,4,0),(19044,'37882',33369,33370,4,0),(19045,'37882',33811,33812,4,0),(19046,'37882',33435,33436,4,0),(19047,'37890',32343,32344,4,0),(19048,'37891',32773,32774,4,0),(19049,'37891',33863,33864,4,0),(19050,'37891',33243,33244,4,0),(19051,'37891',33469,33470,4,0),(19052,'37891',32945,32946,4,0),(19053,'37892',33761,33762,4,0),(19054,'37892',32345,32346,4,0),(19055,'37892',32853,32854,4,0),(19056,'37893',32347,32348,4,0),(19057,'37893',33213,33214,4,0),(19058,'37893',32849,32850,4,0),(19059,'37893',33813,33814,4,0),(19060,'37893',33923,33924,4,0),(19061,'37900',33713,33714,4,0),(19062,'39001',11085,11086,4,0),(19063,'39002',11087,11088,4,0),(19064,'39003',11089,11090,4,0),(19065,'39004',11091,11092,4,0),(19066,'39005',11093,11094,4,0),(19067,'39006',11095,11096,4,0),(19068,'39007',11097,11098,4,0),(19069,'39008',11099,11100,4,0),(19070,'39009',11101,11102,4,0),(19071,'39010',11103,11104,4,0),(19072,'39011',11105,11106,4,0),(19073,'39012',11107,11108,4,0),(19074,'39100',11065,11066,4,0),(19075,'39108',11067,11068,4,0),(19076,'39110',11069,11070,4,0),(19077,'39120',10919,10920,4,0),(19078,'39130',10839,10840,4,0),(19079,'39140',10987,10988,4,0),(19080,'39146',10989,10990,4,0),(19081,'39150',10991,10992,4,0),(19082,'39160',10993,10994,4,0),(19083,'39170',10575,10576,4,0),(19084,'39180',10897,10898,4,0),(19085,'39190',10577,10578,4,0),(19086,'39191',10579,10580,4,0),(19087,'39192',10867,10868,4,0),(19088,'39193',10549,10550,4,0),(19089,'39193',10735,10736,4,0),(19090,'39195',10551,10552,4,0),(19091,'39197',10545,10546,4,0),(19092,'39197',11137,11138,4,0),(19093,'39200',10971,10972,4,0),(19094,'39200',10635,10636,4,0),(19095,'39210',10763,10764,4,0),(19096,'39211',10765,10766,4,0),(19097,'39212',10637,10638,4,0),(19098,'39212',10767,10768,4,0),(19099,'39213',10639,10640,4,0),(19100,'39213',10769,10770,4,0),(19101,'39220',11239,11240,4,0),(19102,'39229',11241,11242,4,0),(19103,'39230',11243,11244,4,0),(19104,'39232',11245,11246,4,0),(19105,'39232',7341,7342,4,0),(19106,'39248',11231,11232,4,0),(19107,'39250',11247,11248,4,0),(19108,'39250',30545,30546,4,0),(19109,'39290',10647,10648,4,0),(19110,'39291',10649,10650,4,0),(19111,'39291',10641,10642,4,0),(19112,'39292',10651,10652,4,0),(19113,'39293',10653,10654,4,0),(19114,'39294',10655,10656,4,0),(19115,'39300',11183,11184,4,0),(19116,'39310',10871,10872,4,0),(19117,'39311',10659,10660,4,0),(19118,'39312',10939,10940,4,0),(19119,'39312',10873,10874,4,0),(19120,'39313',10941,10942,4,0),(19121,'39314',11111,11112,4,0),(19122,'39315',11185,11186,4,0),(19123,'39316',11187,11188,4,0),(19124,'39317',11189,11190,4,0),(19125,'39318',10875,10876,4,0),(19126,'39320',10513,10514,4,0),(19127,'39329',10515,10516,4,0),(19128,'39330',11113,11114,4,0),(19129,'39340',11175,11176,4,0),(19130,'39350',11177,11178,4,0),(19131,'39360',11115,11116,4,0),(19132,'39360',11179,11180,4,0),(19133,'39390',11117,11118,4,0),(19134,'39400',10817,10818,4,0),(19135,'39407',27715,27716,4,0),(19136,'39408',10819,10820,4,0),(19137,'39409',11035,11036,4,0),(19138,'39410',11225,11226,4,0),(19139,'39416',10793,10794,4,0),(19140,'39417',11233,11234,4,0),(19141,'39417',10795,10796,4,0),(19142,'39418',11227,11228,4,0),(19143,'39419',11249,11250,4,0),(19144,'39419',11235,11236,4,0),(19145,'39420',10887,10888,4,0),(19146,'39420',10571,10572,4,0),(19147,'39430',10889,10890,4,0),(19148,'39438',10891,10892,4,0),(19149,'39439',10893,10894,4,0),(19150,'39450',10539,10540,4,0),(19151,'39451',10535,10536,4,0),(19152,'39451',10541,10542,4,0),(19153,'39460',10661,10662,4,0),(19154,'39460',10821,10822,4,0),(19155,'39470',10921,10922,4,0),(19156,'39477',10923,10924,4,0),(19157,'39478',10925,10926,4,0),(19158,'39479',10927,10928,4,0),(19159,'39490',11123,11124,4,0),(19160,'39491',10915,10916,4,0),(19161,'39491',11125,11126,4,0),(19162,'39491',11039,11040,4,0),(19163,'39491',10643,10644,4,0),(19164,'39500',10583,10584,4,0),(19165,'39506',10585,10586,4,0),(19166,'39507',11201,11202,4,0),(19167,'39507',10587,10588,4,0),(19168,'39509',10589,10590,4,0),(19169,'39509',10849,10850,4,0),(19170,'39510',11017,11018,4,0),(19171,'39510',10605,10606,4,0),(19172,'39511',10607,10608,4,0),(19173,'39513',11019,11020,4,0),(19174,'39517',10825,10826,4,0),(19175,'39518',10827,10828,4,0),(19176,'39518',10609,10610,4,0),(19177,'39520',10703,10704,4,0),(19178,'39525',10517,10518,4,0),(19179,'39526',10519,10520,4,0),(19180,'39527',11031,11032,4,0),(19181,'39528',11217,11218,4,0),(19182,'39528',10705,10706,4,0),(19183,'39530',10975,10976,4,0),(19184,'39530',11119,11120,4,0),(19185,'39538',10977,10978,4,0),(19186,'39539',10979,10980,4,0),(19187,'39539',10521,10522,4,0),(19188,'39540',11055,11056,4,0),(19189,'39547',11057,11058,4,0),(19190,'39548',11059,11060,4,0),(19191,'39548',11205,11206,4,0),(19192,'39549',10773,10774,4,0),(19193,'39549',11061,11062,4,0),(19194,'39549',11207,11208,4,0),(19195,'39550',10775,10776,4,0),(19196,'39550',10783,10784,4,0),(19197,'39551',10777,10778,4,0),(19198,'39553',11003,11004,4,0),(19199,'39554',11005,11006,4,0),(19200,'39555',11197,11198,4,0),(19201,'39556',10933,10934,4,0),(19202,'39557',10935,10936,4,0),(19203,'39558',10611,10612,4,0),(19204,'39559',11007,11008,4,0),(19205,'39560',11209,11210,4,0),(19206,'39569',11211,11212,4,0),(19207,'39570',10945,10946,4,0),(19208,'39571',10597,10598,4,0),(19209,'39572',10909,10910,4,0),(19210,'39573',10599,10600,4,0),(19211,'39574',10601,10602,4,0),(19212,'39574',10911,10912,4,0),(19213,'39575',11257,11258,4,0),(19214,'39577',11259,11260,4,0),(19215,'39580',10689,10690,4,0),(19216,'39580',10905,10906,4,0),(19217,'39580',11193,11194,4,0),(19218,'39582',10615,10616,4,0),(19219,'39583',10691,10692,4,0),(19220,'39584',10693,10694,4,0),(19221,'39585',10695,10696,4,0),(19222,'39586',10617,10618,4,0),(19223,'39587',10619,10620,4,0),(19224,'39588',10621,10622,4,0),(19225,'39589',10623,10624,4,0),(19226,'39590',10981,10982,4,0),(19227,'39590',10523,10524,4,0),(19228,'39591',10591,10592,4,0),(19229,'39591',10983,10984,4,0),(19230,'39592',10593,10594,4,0),(19231,'39592',11219,11220,4,0),(19232,'39592',10851,10852,4,0),(19233,'39593',11221,11222,4,0),(19234,'39594',11213,11214,4,0),(19235,'39594',10779,10780,4,0),(19236,'39600',10627,10628,4,0),(19237,'39608',10629,10630,4,0),(19238,'39609',10631,10632,4,0),(19239,'39610',10719,10720,4,0),(19240,'39611',10721,10722,4,0),(19241,'39612',10929,10930,4,0),(19242,'39613',10723,10724,4,0),(19243,'39618',10841,10842,4,0),(19244,'39619',10855,10856,4,0),(19245,'39620',11073,11074,4,0),(19246,'39626',11075,11076,4,0),(19247,'39627',10901,10902,4,0),(19248,'39627',11077,11078,4,0),(19249,'39630',11281,11282,4,0),(19250,'39638',11283,11284,4,0),(19251,'39639',11271,11272,4,0),(19252,'39639',11145,11146,4,0),(19253,'39640',11273,11274,4,0),(19254,'39649',11275,11276,4,0),(19255,'39650',11079,11080,4,0),(19256,'39650',10665,10666,4,0),(19257,'39660',10667,10668,4,0),(19258,'39670',10949,10950,4,0),(19259,'39679',10951,10952,4,0),(19260,'39680',10709,10710,4,0),(19261,'39682',10711,10712,4,0),(19262,'39682',10831,10832,4,0),(19263,'39682',11263,11264,4,0),(19264,'39683',11043,11044,4,0),(19265,'39683',11265,11266,4,0),(19266,'39685',11267,11268,4,0),(19267,'39686',11045,11046,4,0),(19268,'39687',10833,10834,4,0),(19269,'39688',10835,10836,4,0),(19270,'39689',11129,11130,4,0),(19271,'39691',11131,11132,4,0),(19272,'39694',11081,11082,4,0),(19273,'39696',11149,11150,4,0),(19274,'39697',10713,10714,4,0),(19275,'39698',11133,11134,4,0),(19276,'39699',10715,10716,4,0),(19277,'39700',10671,10672,4,0),(19278,'39706',10673,10674,4,0),(19279,'39707',10675,10676,4,0),(19280,'39708',10677,10678,4,0),(19281,'39709',10679,10680,4,0),(19282,'39710',10857,10858,4,0),(19283,'39715',10727,10728,4,0),(19284,'39716',10729,10730,4,0),(19285,'39717',11167,11168,4,0),(19286,'39718',10859,10860,4,0),(19287,'39718',10803,10804,4,0),(19288,'39719',10843,10844,4,0),(19289,'39719',10731,10732,4,0),(19290,'39720',11011,11012,4,0),(19291,'39722',10805,10806,4,0),(19292,'39723',10879,10880,4,0),(19293,'39723',11013,11014,4,0),(19294,'39724',10861,10862,4,0),(19295,'39725',10881,10882,4,0),(19296,'39726',11049,11050,4,0),(19297,'39727',10807,10808,4,0),(19298,'39728',11153,11154,4,0),(19299,'39728',11023,11024,4,0),(19300,'39728',10883,10884,4,0),(19301,'39728',11051,11052,4,0),(19302,'39730',10755,10756,4,0),(19303,'39738',11169,11170,4,0),(19304,'39738',10757,10758,4,0),(19305,'39739',10759,10760,4,0),(19306,'39740',11139,11140,4,0),(19307,'39749',11141,11142,4,0),(19308,'39750',10699,10700,4,0),(19309,'39760',10559,10560,4,0),(19310,'39761',11287,11288,4,0),(19311,'39761',10561,10562,4,0),(19312,'39762',11289,11290,4,0),(19313,'39764',11291,11292,4,0),(19314,'39766',11293,11294,4,0),(19315,'39770',10787,10788,4,0),(19316,'39776',10799,10800,4,0),(19317,'39777',10789,10790,4,0),(19318,'39778',10811,10812,4,0),(19319,'39778',10741,10742,4,0),(19320,'39780',10681,10682,4,0),(19321,'39780',10743,10744,4,0),(19322,'39786',10745,10746,4,0),(19323,'39787',10747,10748,4,0),(19324,'39788',10749,10750,4,0),(19325,'39790',10563,10564,4,0),(19326,'39791',11171,11172,4,0),(19327,'39791',10565,10566,4,0),(19328,'39792',10845,10846,4,0),(19329,'39792',10863,10864,4,0),(19330,'39793',10997,10998,4,0),(19331,'39794',10999,11000,4,0),(19332,'39795',10737,10738,4,0),(19333,'39796',10567,10568,4,0),(19334,'39798',10683,10684,4,0),(19335,'39800',10955,10956,4,0),(19336,'39805',11155,11156,4,0),(19337,'39805',10957,10958,4,0),(19338,'39806',11157,11158,4,0),(19339,'39807',11159,11160,4,0),(19340,'39808',11161,11162,4,0),(19341,'39809',10959,10960,4,0),(19342,'39811',10961,10962,4,0),(19343,'39812',11025,11026,4,0),(19344,'39813',10555,10556,4,0),(19345,'39813',11163,11164,4,0),(19346,'39815',11027,11028,4,0),(19347,'39815',10963,10964,4,0),(19348,'39820',10813,10814,4,0),(19349,'39840',10527,10528,4,0),(19350,'39849',10529,10530,4,0),(19351,'39850',10531,10532,4,0),(19352,'39860',10967,10968,4,0),(19353,'39880',10751,10752,4,0),(19354,'39880',11253,11254,4,0),(19355,'40001',34879,34880,4,0),(19356,'40002',34881,34882,4,0),(19357,'40003',34883,34884,4,0),(19358,'40004',34885,34886,4,0),(19359,'40005',34887,34888,4,0),(19360,'40006',34889,34890,4,0),(19361,'40100',34739,34740,4,0),(19362,'40109',34741,34742,4,0),(19363,'40120',34475,34476,4,0),(19364,'40121',34137,34138,4,0),(19365,'40122',34827,34828,4,0),(19366,'40123',34829,34830,4,0),(19367,'40130',34559,34560,4,0),(19368,'40131',34503,34504,4,0),(19369,'40132',34551,34552,4,0),(19370,'40133',34555,34556,4,0),(19371,'40134',34821,34822,4,0),(19372,'40135',34831,34832,4,0),(19373,'40136',34833,34834,4,0),(19374,'40140',35009,35010,4,0),(19375,'40141',34849,34850,4,0),(19376,'40141',34075,34076,4,0),(19377,'40142',34603,34604,4,0),(19378,'40142',34539,34540,4,0),(19379,'40142',34571,34572,4,0),(19380,'40144',34823,34824,4,0),(19381,'40144',34187,34188,4,0),(19382,'40145',34615,34616,4,0),(19383,'40146',34523,34524,4,0),(19384,'40150',35025,35026,4,0),(19385,'40151',34499,34500,4,0),(19386,'40152',35047,35048,4,0),(19387,'40153',34891,34892,4,0),(19388,'40154',34893,34894,4,0),(19389,'40156',34417,34418,4,0),(19390,'40160',34943,34944,4,0),(19391,'40161',34629,34630,4,0),(19392,'40162',34471,34472,4,0),(19393,'40162',34103,34104,4,0),(19394,'40163',34579,34580,4,0),(19395,'40164',34151,34152,4,0),(19396,'40165',34725,34726,4,0),(19397,'40165',35021,35022,4,0),(19398,'40170',34707,34708,4,0),(19399,'40170',34321,34322,4,0),(19400,'40170',34923,34924,4,0),(19401,'40171',34851,34852,4,0),(19402,'40171',34935,34936,4,0),(19403,'40172',34701,34702,4,0),(19404,'40173',34703,34704,4,0),(19405,'40173',34853,34854,4,0),(19406,'40173',34145,34146,4,0),(19407,'40174',34991,34992,4,0),(19408,'40175',34519,34520,4,0),(19409,'40176',34677,34678,4,0),(19410,'40176',34995,34996,4,0),(19411,'40180',34709,34710,4,0),(19412,'40180',34183,34184,4,0),(19413,'40180',34861,34862,4,0),(19414,'40180',34209,34210,4,0),(19415,'40181',34961,34962,4,0),(19416,'40182',34213,34214,4,0),(19417,'40183',34619,34620,4,0),(19418,'40184',34731,34732,4,0),(19419,'40184',34147,34148,4,0),(19420,'40184',34747,34748,4,0),(19421,'40185',34155,34156,4,0),(19422,'40185',34975,34976,4,0),(19423,'40185',34979,34980,4,0),(19424,'40185',34337,34338,4,0),(19425,'40190',34199,34200,4,0),(19426,'40191',34159,34160,4,0),(19427,'40191',34409,34410,4,0),(19428,'40192',34951,34952,4,0),(19429,'40192',34079,34080,4,0),(19430,'40194',34957,34958,4,0),(19431,'40194',34697,34698,4,0),(19432,'40195',34895,34896,4,0),(19433,'40196',34511,34512,4,0),(19434,'40196',34897,34898,4,0),(19435,'40197',34801,34802,4,0),(19436,'40200',34341,34342,4,0),(19437,'40210',34343,34344,4,0),(19438,'40211',34345,34346,4,0),(19439,'40212',34793,34794,4,0),(19440,'40213',34987,34988,4,0),(19441,'40214',34575,34576,4,0),(19442,'40214',34167,34168,4,0),(19443,'40215',34347,34348,4,0),(19444,'40216',34297,34298,4,0),(19445,'40216',34751,34752,4,0),(19446,'40217',34413,34414,4,0),(19447,'40218',34443,34444,4,0),(19448,'40219',35029,35030,4,0),(19449,'40220',34671,34672,4,0),(19450,'40230',34349,34350,4,0),(19451,'40231',34351,34352,4,0),(19452,'40232',34353,34354,4,0),(19453,'40233',34673,34674,4,0),(19454,'40234',34587,34588,4,0),(19455,'40235',34119,34120,4,0),(19456,'40236',34527,34528,4,0),(19457,'40237',34783,34784,4,0),(19458,'40238',35003,35004,4,0),(19459,'40239',34361,34362,4,0),(19460,'40240',34479,34480,4,0),(19461,'40241',34355,34356,4,0),(19462,'40242',34357,34358,4,0),(19463,'40250',34611,34612,4,0),(19464,'40260',34447,34448,4,0),(19465,'40270',34253,34254,4,0),(19466,'40280',34637,34638,4,0),(19467,'40290',34779,34780,4,0),(19468,'40291',34399,34400,4,0),(19469,'40291',34927,34928,4,0),(19470,'40292',34095,34096,4,0),(19471,'40293',35051,35052,4,0),(19472,'40294',34721,34722,4,0),(19473,'40295',34805,34806,4,0),(19474,'40296',34717,34718,4,0),(19475,'40297',34817,34818,4,0),(19476,'40298',34431,34432,4,0),(19477,'40300',34901,34902,4,0),(19478,'40310',34903,34904,4,0),(19479,'40310',34845,34846,4,0),(19480,'40311',34919,34920,4,0),(19481,'40311',34905,34906,4,0),(19482,'40312',34907,34908,4,0),(19483,'40312',34373,34374,4,0),(19484,'40313',34939,34940,4,0),(19485,'40314',35005,35006,4,0),(19486,'40314',34463,34464,4,0),(19487,'40315',34269,34270,4,0),(19488,'40315',34273,34274,4,0),(19489,'40316',34281,34282,4,0),(19490,'40317',34967,34968,4,0),(19491,'40317',34909,34910,4,0),(19492,'40318',34727,34728,4,0),(19493,'40318',34325,34326,4,0),(19494,'40318',34277,34278,4,0),(19495,'40320',34237,34238,4,0),(19496,'40330',34455,34456,4,0),(19497,'40331',34633,34634,4,0),(19498,'40331',34983,34984,4,0),(19499,'40331',34257,34258,4,0),(19500,'40332',34809,34810,4,0),(19501,'40332',34305,34306,4,0),(19502,'40340',34873,34874,4,0),(19503,'40340',34087,34088,4,0),(19504,'40350',34395,34396,4,0),(19505,'40351',34869,34870,4,0),(19506,'40352',34535,34536,4,0),(19507,'40353',34491,34492,4,0),(19508,'40354',34083,34084,4,0),(19509,'40354',34713,34714,4,0),(19510,'40354',34333,34334,4,0),(19511,'40355',34459,34460,4,0),(19512,'40356',34225,34226,4,0),(19513,'40357',34467,34468,4,0),(19514,'40358',34451,34452,4,0),(19515,'40359',34947,34948,4,0),(19516,'40359',34439,34440,4,0),(19517,'40360',34245,34246,4,0),(19518,'40370',34963,34964,4,0),(19519,'40380',34239,34240,4,0),(19520,'40380',34875,34876,4,0),(19521,'40389',34241,34242,4,0),(19522,'40389',34813,34814,4,0),(19523,'40389',34099,34100,4,0),(19524,'40389',34911,34912,4,0),(19525,'40390',34999,35000,4,0),(19526,'40391',34391,34392,4,0),(19527,'40392',34217,34218,4,0),(19528,'40392',34403,34404,4,0),(19529,'40393',34405,34406,4,0),(19530,'40394',34953,34954,4,0),(19531,'40395',35013,35014,4,0),(19532,'40396',34221,34222,4,0),(19533,'40400',34377,34378,4,0),(19534,'40408',34663,34664,4,0),(19535,'40410',34379,34380,4,0),(19536,'40418',34419,34420,4,0),(19537,'40419',34381,34382,4,0),(19538,'40420',34743,34744,4,0),(19539,'40420',34659,34660,4,0),(19540,'40420',34515,34516,4,0),(19541,'40421',34685,34686,4,0),(19542,'40422',34689,34690,4,0),(19543,'40423',35017,35018,4,0),(19544,'40423',34971,34972,4,0),(19545,'40424',34383,34384,4,0),(19546,'40430',34195,34196,4,0),(19547,'40440',34835,34836,4,0),(19548,'40441',34591,34592,4,0),(19549,'40442',34787,34788,4,0),(19550,'40443',34789,34790,4,0),(19551,'40444',34583,34584,4,0),(19552,'40445',34507,34508,4,0),(19553,'40446',34567,34568,4,0),(19554,'40447',34667,34668,4,0),(19555,'40448',34837,34838,4,0),(19556,'40449',34839,34840,4,0),(19557,'40450',34623,34624,4,0),(19558,'40460',34857,34858,4,0),(19559,'40461',34625,34626,4,0),(19560,'40462',34115,34116,4,0),(19561,'40462',34127,34128,4,0),(19562,'40463',34315,34316,4,0),(19563,'40464',34317,34318,4,0),(19564,'40465',34797,34798,4,0),(19565,'40466',34563,34564,4,0),(19566,'40466',34735,34736,4,0),(19567,'40467',34931,34932,4,0),(19568,'40468',34595,34596,4,0),(19569,'40469',34369,34370,4,0),(19570,'40470',34655,34656,4,0),(19571,'40480',34309,34310,4,0),(19572,'40490',34495,34496,4,0),(19573,'40490',34543,34544,4,0),(19574,'40491',34161,34162,4,0),(19575,'40492',34141,34142,4,0),(19576,'40493',35043,35044,4,0),(19577,'40494',34163,34164,4,0),(19578,'40494',34841,34842,4,0),(19579,'40495',34681,34682,4,0),(19580,'40495',34365,34366,4,0),(19581,'40496',35039,35040,4,0),(19582,'40496',34435,34436,4,0),(19583,'40496',34311,34312,4,0),(19584,'40500',34759,34760,4,0),(19585,'40510',34761,34762,4,0),(19586,'40511',34763,34764,4,0),(19587,'40512',34765,34766,4,0),(19588,'40512',34169,34170,4,0),(19589,'40513',34771,34772,4,0),(19590,'40514',34171,34172,4,0),(19591,'40515',34775,34776,4,0),(19592,'40516',34421,34422,4,0),(19593,'40517',34915,34916,4,0),(19594,'40517',34767,34768,4,0),(19595,'40518',34423,34424,4,0),(19596,'40520',34173,34174,4,0),(19597,'40529',34755,34756,4,0),(19598,'40529',34091,34092,4,0),(19599,'40529',34329,34330,4,0),(19600,'40530',34131,34132,4,0),(19601,'40530',34179,34180,4,0),(19602,'40531',34133,34134,4,0),(19603,'40531',34641,34642,4,0),(19604,'40531',34387,34388,4,0),(19605,'40532',34647,34648,4,0),(19606,'40532',34111,34112,4,0),(19607,'40532',34651,34652,4,0),(19608,'40533',34123,34124,4,0),(19609,'40540',34249,34250,4,0),(19610,'40540',34427,34428,4,0),(19611,'40541',34487,34488,4,0),(19612,'40541',35033,35034,4,0),(19613,'40542',34599,34600,4,0),(19614,'40542',35035,35036,4,0),(19615,'40542',34607,34608,4,0),(19616,'40550',34285,34286,4,0),(19617,'40550',34191,34192,4,0),(19618,'40551',34301,34302,4,0),(19619,'40551',34229,34230,4,0),(19620,'40552',34231,34232,4,0),(19621,'40553',34233,34234,4,0),(19622,'40554',34547,34548,4,0),(19623,'40555',34107,34108,4,0),(19624,'40556',34531,34532,4,0),(19625,'40560',34203,34204,4,0),(19626,'40561',34643,34644,4,0),(19627,'40567',34693,34694,4,0),(19628,'40568',34205,34206,4,0),(19629,'40569',34483,34484,4,0),(19630,'40590',34865,34866,4,0),(19631,'40590',34261,34262,4,0),(19632,'40591',34289,34290,4,0),(19633,'40592',34293,34294,4,0),(19634,'40593',34265,34266,4,0),(19635,'40594',34175,34176,4,0),(19636,'41001',35519,35520,4,0),(19637,'41002',35521,35522,4,0),(19638,'41003',35523,35524,4,0),(19639,'41004',35525,35526,4,0),(19640,'41005',35527,35528,4,0),(19641,'41006',35529,35530,4,0),(19642,'41007',35531,35532,4,0),(19643,'41008',35533,35534,4,0),(19644,'41009',35535,35536,4,0),(19645,'41010',35537,35538,4,0),(19646,'41011',35539,35540,4,0),(19647,'41012',35541,35542,4,0),(19648,'41013',35543,35544,4,0),(19649,'41014',35545,35546,4,0),(19650,'41015',35547,35548,4,0),(19651,'41016',35549,35550,4,0),(19652,'41017',35551,35552,4,0),(19653,'41018',35553,35554,4,0),(19654,'41019',35555,35556,4,0),(19655,'41020',35557,35558,4,0),(19656,'41073',35207,35208,4,0),(19657,'41089',35209,35210,4,0),(19658,'41092',35559,35560,4,0),(19659,'41100',35197,35198,4,0),(19660,'41110',35125,35126,4,0),(19661,'41111',35097,35098,4,0),(19662,'41120',35303,35304,4,0),(19663,'41130',35373,35374,4,0),(19664,'41140',35341,35342,4,0),(19665,'41150',35343,35344,4,0),(19666,'41200',35075,35076,4,0),(19667,'41200',35137,35138,4,0),(19668,'41209',35077,35078,4,0),(19669,'41210',35325,35326,4,0),(19670,'41218',35327,35328,4,0),(19671,'41219',35329,35330,4,0),(19672,'41220',35139,35140,4,0),(19673,'41220',35305,35306,4,0),(19674,'41230',35171,35172,4,0),(19675,'41240',35093,35094,4,0),(19676,'41250',35267,35268,4,0),(19677,'41300',35377,35378,4,0),(19678,'41309',35379,35380,4,0),(19679,'41310',35133,35134,4,0),(19680,'41318',35615,35616,4,0),(19681,'41319',35079,35080,4,0),(19682,'41320',35153,35154,4,0),(19683,'41330',35563,35564,4,0),(19684,'41330',35607,35608,4,0),(19685,'41339',35157,35158,4,0),(19686,'41340',35565,35566,4,0),(19687,'41350',35609,35610,4,0),(19688,'41359',35611,35612,4,0),(19689,'41360',35263,35264,4,0),(19690,'41370',35187,35188,4,0),(19691,'41380',35061,35062,4,0),(19692,'41388',35503,35504,4,0),(19693,'41389',35505,35506,4,0),(19694,'41390',35321,35322,4,0),(19695,'41400',35225,35226,4,0),(19696,'41409',35227,35228,4,0),(19697,'41410',35159,35160,4,0),(19698,'41420',35297,35298,4,0),(19699,'41429',35353,35354,4,0),(19700,'41430',35357,35358,4,0),(19701,'41439',35359,35360,4,0),(19702,'41439',35299,35300,4,0),(19703,'41439',35149,35150,4,0),(19704,'41440',35411,35412,4,0),(19705,'41440',35083,35084,4,0),(19706,'41449',35085,35086,4,0),(19707,'41450',35193,35194,4,0),(19708,'41460',35399,35400,4,0),(19709,'41470',35367,35368,4,0),(19710,'41470',35483,35484,4,0),(19711,'41471',35577,35578,4,0),(19712,'41479',35369,35370,4,0),(19713,'41489',35105,35106,4,0),(19714,'41500',35069,35070,4,0),(19715,'41510',35431,35432,4,0),(19716,'41520',35071,35072,4,0),(19717,'41520',35285,35286,4,0),(19718,'41530',35459,35460,4,0),(19719,'41540',35363,35364,4,0),(19720,'41550',35057,35058,4,0),(19721,'41560',35293,35294,4,0),(19722,'41563',35229,35230,4,0),(19723,'41564',35407,35408,4,0),(19724,'41565',35313,35314,4,0),(19725,'41566',35479,35480,4,0),(19726,'41567',35333,35334,4,0),(19727,'41567',35231,35232,4,0),(19728,'41568',35275,35276,4,0),(19729,'41569',35447,35448,4,0),(19730,'41570',35115,35116,4,0),(19731,'41580',35167,35168,4,0),(19732,'41590',35383,35384,4,0),(19733,'41599',35385,35386,4,0),(19734,'41599',35117,35118,4,0),(19735,'41600',35101,35102,4,0),(19736,'41610',35475,35476,4,0),(19737,'41620',35443,35444,4,0),(19738,'41630',35389,35390,4,0),(19739,'41640',35467,35468,4,0),(19740,'41650',35279,35280,4,0),(19741,'41657',35415,35416,4,0),(19742,'41658',35451,35452,4,0),(19743,'41659',35281,35282,4,0),(19744,'41660',35599,35600,4,0),(19745,'41661',35089,35090,4,0),(19746,'41670',35491,35492,4,0),(19747,'41700',35211,35212,4,0),(19748,'41701',35213,35214,4,0),(19749,'41702',35215,35216,4,0),(19750,'41703',35217,35218,4,0),(19751,'41704',35219,35220,4,0),(19752,'41710',35579,35580,4,0),(19753,'41719',35581,35582,4,0),(19754,'41720',35423,35424,4,0),(19755,'41720',35583,35584,4,0),(19756,'41727',35425,35426,4,0),(19757,'41727',35585,35586,4,0),(19758,'41728',35587,35588,4,0),(19759,'41728',35221,35222,4,0),(19760,'41728',35427,35428,4,0),(19761,'41729',35393,35394,4,0),(19762,'41730',35395,35396,4,0),(19763,'41730',35189,35190,4,0),(19764,'41740',35403,35404,4,0),(19765,'41749',35249,35250,4,0),(19766,'41750',35419,35420,4,0),(19767,'41760',35245,35246,4,0),(19768,'41770',35455,35456,4,0),(19769,'41780',35201,35202,4,0),(19770,'41800',35511,35512,4,0),(19771,'41804',35463,35464,4,0),(19772,'41805',35121,35122,4,0),(19773,'41806',35573,35574,4,0),(19774,'41807',35289,35290,4,0),(19775,'41808',35603,35604,4,0),(19776,'41809',35065,35066,4,0),(19777,'41810',35183,35184,4,0),(19778,'41820',35163,35164,4,0),(19779,'41830',35337,35338,4,0),(19780,'41840',35487,35488,4,0),(19781,'41849',35107,35108,4,0),(19782,'41850',35595,35596,4,0),(19783,'41860',35309,35310,4,0),(19784,'41870',35111,35112,4,0),(19785,'41880',35271,35272,4,0),(19786,'41888',35253,35254,4,0),(19787,'41888',35507,35508,4,0),(19788,'41889',35235,35236,4,0),(19789,'41890',35237,35238,4,0),(19790,'41897',35257,35258,4,0),(19791,'41898',35239,35240,4,0),(19792,'41898',35259,35260,4,0),(19793,'41899',35241,35242,4,0),(19794,'41900',35143,35144,4,0),(19795,'41907',35591,35592,4,0),(19796,'41908',35175,35176,4,0),(19797,'41909',35495,35496,4,0),(19798,'41910',35145,35146,4,0),(19799,'41920',35499,35500,4,0),(19800,'41926',35435,35436,4,0),(19801,'41927',35437,35438,4,0),(19802,'41928',35471,35472,4,0),(19803,'41929',35439,35440,4,0),(19804,'41930',35129,35130,4,0),(19805,'41940',35569,35570,4,0),(19806,'41950',35179,35180,4,0),(19807,'41960',35317,35318,4,0),(19808,'41970',35515,35516,4,0),(19809,'41980',35347,35348,4,0),(19810,'41989',35349,35350,4,0),(19811,'42001',36373,36374,4,0),(19812,'42002',36375,36376,4,0),(19813,'42003',36377,36378,4,0),(19814,'42004',36379,36380,4,0),(19815,'42005',36381,36382,4,0),(19816,'42100',35629,35630,4,0),(19817,'42107',35783,35784,4,0),(19818,'42107',35631,35632,4,0),(19819,'42107',35957,35958,4,0),(19820,'42108',36233,36234,4,0),(19821,'42108',35633,35634,4,0),(19822,'42108',35961,35962,4,0),(19823,'42108',35899,35900,4,0),(19824,'42109',36551,36552,4,0),(19825,'42110',36235,36236,4,0),(19826,'42111',36457,36458,4,0),(19827,'42111',35725,35726,4,0),(19828,'42111',35659,35660,4,0),(19829,'42112',36079,36080,4,0),(19830,'42112',36251,36252,4,0),(19831,'42112',36399,36400,4,0),(19832,'42112',36243,36244,4,0),(19833,'42112',36521,36522,4,0),(19834,'42113',35901,35902,4,0),(19835,'42113',36041,36042,4,0),(19836,'42113',36461,36462,4,0),(19837,'42113',36441,36442,4,0),(19838,'42113',36133,36134,4,0),(19839,'42114',35919,35920,4,0),(19840,'42114',36479,36480,4,0),(19841,'42114',36335,36336,4,0),(19842,'42120',36063,36064,4,0),(19843,'42124',36227,36228,4,0),(19844,'42124',36021,36022,4,0),(19845,'42124',35861,35862,4,0),(19846,'42124',36427,36428,4,0),(19847,'42125',35965,35966,4,0),(19848,'42126',35923,35924,4,0),(19849,'42126',35967,35968,4,0),(19850,'42126',35707,35708,4,0),(19851,'42127',36189,36190,4,0),(19852,'42127',36363,36364,4,0),(19853,'42127',36065,36066,4,0),(19854,'42127',35709,35710,4,0),(19855,'42128',35801,35802,4,0),(19856,'42128',36421,36422,4,0),(19857,'42129',36067,36068,4,0),(19858,'42129',35675,35676,4,0),(19859,'42129',35813,35814,4,0),(19860,'42129',36537,36538,4,0),(19861,'42130',35713,35714,4,0),(19862,'42131',35715,35716,4,0),(19863,'42132',36229,36230,4,0),(19864,'42133',35637,35638,4,0),(19865,'42134',36289,36290,4,0),(19866,'42134',35865,35866,4,0),(19867,'42135',35651,35652,4,0),(19868,'42135',35843,35844,4,0),(19869,'42136',36437,36438,4,0),(19870,'42136',36247,36248,4,0),(19871,'42137',36303,36304,4,0),(19872,'42137',36255,36256,4,0),(19873,'42137',35869,35870,4,0),(19874,'42138',35717,35718,4,0),(19875,'42138',35927,35928,4,0),(19876,'42138',35809,35810,4,0),(19877,'42140',36339,36340,4,0),(19878,'42141',36359,36360,4,0),(19879,'42141',35985,35986,4,0),(19880,'42142',35991,35992,4,0),(19881,'42142',35987,35988,4,0),(19882,'42143',36207,36208,4,0),(19883,'42143',36007,36008,4,0),(19884,'42144',36075,36076,4,0),(19885,'42144',35887,35888,4,0),(19886,'42144',36449,36450,4,0),(19887,'42145',35915,35916,4,0),(19888,'42146',35621,35622,4,0),(19889,'42146',35847,35848,4,0),(19890,'42147',35849,35850,4,0),(19891,'42148',36203,36204,4,0),(19892,'42148',35947,35948,4,0),(19893,'42148',36407,36408,4,0),(19894,'42149',36215,36216,4,0),(19895,'42150',36541,36542,4,0),(19896,'42151',36543,36544,4,0),(19897,'42152',36383,36384,4,0),(19898,'42153',35975,35976,4,0),(19899,'42155',36161,36162,4,0),(19900,'42156',36315,36316,4,0),(19901,'42156',36163,36164,4,0),(19902,'42157',35943,35944,4,0),(19903,'42158',35971,35972,4,0),(19904,'42159',35977,35978,4,0),(19905,'42160',35689,35690,4,0),(19906,'42161',35691,35692,4,0),(19907,'42161',35749,35750,4,0),(19908,'42162',35817,35818,4,0),(19909,'42162',36017,36018,4,0),(19910,'42162',36045,36046,4,0),(19911,'42162',36025,36026,4,0),(19912,'42163',36047,36048,4,0),(19913,'42164',35693,35694,4,0),(19914,'42165',36389,36390,4,0),(19915,'42165',36311,36312,4,0),(19916,'42165',36517,36518,4,0),(19917,'42165',36453,36454,4,0),(19918,'42166',36391,36392,4,0),(19919,'42167',35695,35696,4,0),(19920,'42169',35697,35698,4,0),(19921,'42169',36087,36088,4,0),(19922,'42170',36027,36028,4,0),(19923,'42171',35753,35754,4,0),(19924,'42171',35995,35996,4,0),(19925,'42171',36119,36120,4,0),(19926,'42171',35655,35656,4,0),(19927,'42171',35891,35892,4,0),(19928,'42172',36239,36240,4,0),(19929,'42172',36555,36556,4,0),(19930,'42173',36103,36104,4,0),(19931,'42173',36547,36548,4,0),(19932,'42173',36349,36350,4,0),(19933,'42174',36525,36526,4,0),(19934,'42174',36105,36106,4,0),(19935,'42174',36343,36344,4,0),(19936,'42175',36481,36482,4,0),(19937,'42175',35909,35910,4,0),(19938,'42175',36345,36346,4,0),(19939,'42176',36351,36352,4,0),(19940,'42176',36527,36528,4,0),(19941,'42177',36529,36530,4,0),(19942,'42177',36557,36558,4,0),(19943,'42180',35679,35680,4,0),(19944,'42180',35663,35664,4,0),(19945,'42180',35881,35882,4,0),(19946,'42180',35931,35932,4,0),(19947,'42180',36121,36122,4,0),(19948,'42181',36083,36084,4,0),(19949,'42181',36037,36038,4,0),(19950,'42181',36125,36126,4,0),(19951,'42181',35883,35884,4,0),(19952,'42181',36489,36490,4,0),(19953,'42181',35911,35912,4,0),(19954,'42182',35667,35668,4,0),(19955,'42182',35727,35728,4,0),(19956,'42189',36211,36212,4,0),(19957,'42189',36395,36396,4,0),(19958,'42189',36291,36292,4,0),(19959,'42189',36497,36498,4,0),(19960,'42190',36051,36052,4,0),(19961,'42190',36385,36386,4,0),(19962,'42191',36113,36114,4,0),(19963,'42191',35951,35952,4,0),(19964,'42192',36509,36510,4,0),(19965,'42192',36053,36054,4,0),(19966,'42193',36055,36056,4,0),(19967,'42193',35853,35854,4,0),(19968,'42193',35797,35798,4,0),(19969,'42193',36471,36472,4,0),(19970,'42193',36199,36200,4,0),(19971,'42193',36431,36432,4,0),(19972,'42194',36433,36434,4,0),(19973,'42194',36307,36308,4,0),(19974,'42195',35821,35822,4,0),(19975,'42196',35823,35824,4,0),(19976,'42196',36473,36474,4,0),(19977,'42200',35701,35702,4,0),(19978,'42210',35767,35768,4,0),(19979,'42211',35905,35906,4,0),(19980,'42211',36137,36138,4,0),(19981,'42212',35703,35704,4,0),(19982,'42213',35757,35758,4,0),(19983,'42213',35721,35722,4,0),(19984,'42214',35759,35760,4,0),(19985,'42214',36533,36534,4,0),(19986,'42215',35999,36000,4,0),(19987,'42216',36417,36418,4,0),(19988,'42216',35625,35626,4,0),(19989,'42216',35761,35762,4,0),(19990,'42216',36193,36194,4,0),(19991,'42216',35935,35936,4,0),(19992,'42217',35937,35938,4,0),(19993,'42218',36505,36506,4,0),(19994,'42218',35805,35806,4,0),(19995,'42218',36423,36424,4,0),(19996,'42218',36219,36220,4,0),(19997,'42220',36171,36172,4,0),(19998,'42221',44437,44438,4,0),(19999,'42222',35683,35684,4,0),(20000,'42223',35939,35940,4,0),(20001,'42223',36367,36368,4,0),(20002,'42223',36195,36196,4,0),(20003,'42224',35981,35982,4,0),(20004,'42224',36369,36370,4,0),(20005,'42224',36223,36224,4,0),(20006,'42225',36501,36502,4,0),(20007,'42225',36167,36168,4,0),(20008,'42225',36129,36130,4,0),(20009,'42225',35671,35672,4,0),(20010,'42230',36561,36562,4,0),(20011,'42230',36151,36152,4,0),(20012,'42230',36141,36142,4,0),(20013,'42240',36143,36144,4,0),(20014,'42248',36145,36146,4,0),(20015,'42249',36147,36148,4,0),(20016,'42249',35731,35732,4,0),(20017,'42250',35733,35734,4,0),(20018,'42257',35735,35736,4,0),(20019,'42258',35737,35738,4,0),(20020,'42258',35685,35686,4,0),(20021,'42259',35739,35740,4,0),(20022,'42260',36355,36356,4,0),(20023,'42269',44265,44266,4,0),(20024,'42269',43597,43598,4,0),(20025,'42269',35741,35742,4,0),(20026,'42269',44627,44628,4,0),(20027,'42290',36057,36058,4,0),(20028,'42290',36115,36116,4,0),(20029,'42290',35953,35954,4,0),(20030,'42291',36259,36260,4,0),(20031,'42292',36261,36262,4,0),(20032,'42293',36485,36486,4,0),(20033,'42293',36031,36032,4,0),(20034,'42293',36263,36264,4,0),(20035,'42294',36413,36414,4,0),(20036,'42294',36059,36060,4,0),(20037,'42294',36033,36034,4,0),(20038,'42294',36265,36266,4,0),(20039,'42295',35647,35648,4,0),(20040,'42295',35763,35764,4,0),(20041,'42296',36563,36564,4,0),(20042,'42296',36153,36154,4,0),(20043,'42300',35825,35826,4,0),(20044,'42310',35827,35828,4,0),(20045,'42311',35873,35874,4,0),(20046,'42311',35877,35878,4,0),(20047,'42311',36175,36176,4,0),(20048,'42311',35829,35830,4,0),(20049,'42312',35831,35832,4,0),(20050,'42312',36003,36004,4,0),(20051,'42312',36513,36514,4,0),(20052,'42313',36475,36476,4,0),(20053,'42313',36269,36270,4,0),(20054,'42313',35833,35834,4,0),(20055,'42313',36277,36278,4,0),(20056,'42313',36071,36072,4,0),(20057,'42314',36279,36280,4,0),(20058,'42315',36281,36282,4,0),(20059,'42315',36295,36296,4,0),(20060,'42315',36177,36178,4,0),(20061,'42316',36297,36298,4,0),(20062,'42317',36409,36410,4,0),(20063,'42317',36465,36466,4,0),(20064,'42317',36445,36446,4,0),(20065,'42318',35835,35836,4,0),(20066,'42318',36467,36468,4,0),(20067,'42320',36319,36320,4,0),(20068,'42320',36095,36096,4,0),(20069,'42328',35895,35896,4,0),(20070,'42328',36097,36098,4,0),(20071,'42328',36157,36158,4,0),(20072,'42329',36099,36100,4,0),(20073,'42330',36321,36322,4,0),(20074,'42339',36013,36014,4,0),(20075,'42340',36323,36324,4,0),(20076,'42341',36179,36180,4,0),(20077,'42341',36109,36110,4,0),(20078,'42342',36181,36182,4,0),(20079,'42342',36325,36326,4,0),(20080,'42343',36183,36184,4,0),(20081,'42344',36185,36186,4,0),(20082,'42344',36299,36300,4,0),(20083,'42345',36327,36328,4,0),(20084,'42351',35641,35642,4,0),(20085,'42351',35837,35838,4,0),(20086,'42351',36009,36010,4,0),(20087,'42351',36329,36330,4,0),(20088,'42353',35643,35644,4,0),(20089,'42360',35787,35788,4,0),(20090,'42366',35775,35776,4,0),(20091,'42366',35779,35780,4,0),(20092,'42366',36403,36404,4,0),(20093,'42366',35789,35790,4,0),(20094,'42367',35857,35858,4,0),(20095,'42367',35791,35792,4,0),(20096,'42368',35771,35772,4,0),(20097,'42368',36285,36286,4,0),(20098,'42368',36091,36092,4,0),(20099,'42368',35745,35746,4,0),(20100,'42369',35793,35794,4,0),(20101,'42391',36331,36332,4,0),(20102,'42391',35839,35840,4,0),(20103,'42392',36493,36494,4,0),(20104,'43001',37293,37294,4,0),(20105,'43002',37295,37296,4,0),(20106,'43003',37297,37298,4,0),(20107,'43004',37299,37300,4,0),(20108,'43005',37301,37302,4,0),(20109,'43006',37303,37304,4,0),(20110,'43007',37305,37306,4,0),(20111,'43008',37307,37308,4,0),(20112,'43100',36929,36930,4,0),(20113,'43100',37309,37310,4,0),(20114,'43110',36931,36932,4,0),(20115,'43120',36739,36740,4,0),(20116,'43130',37311,37312,4,0),(20117,'43140',36969,36970,4,0),(20118,'43141',37409,37410,4,0),(20119,'43142',36823,36824,4,0),(20120,'43143',36951,36952,4,0),(20121,'43143',36785,36786,4,0),(20122,'43144',37367,37368,4,0),(20123,'43150',36771,36772,4,0),(20124,'43151',36841,36842,4,0),(20125,'43152',37127,37128,4,0),(20126,'43153',36833,36834,4,0),(20127,'43154',36989,36990,4,0),(20128,'43155',37129,37130,4,0),(20129,'43201',37185,37186,4,0),(20130,'43202',37187,37188,4,0),(20131,'43203',37189,37190,4,0),(20132,'43204',37191,37192,4,0),(20133,'43205',37193,37194,4,0),(20134,'43205',36791,36792,4,0),(20135,'43206',37195,37196,4,0),(20136,'43206',37393,37394,4,0),(20137,'43300',37077,37078,4,0),(20138,'43310',36729,36730,4,0),(20139,'43311',37413,37414,4,0),(20140,'43312',37415,37416,4,0),(20141,'43320',37319,37320,4,0),(20142,'43320',37161,37162,4,0),(20143,'43330',37211,37212,4,0),(20144,'43340',37097,37098,4,0),(20145,'43350',37019,37020,4,0),(20146,'43360',36747,36748,4,0),(20147,'43361',36955,36956,4,0),(20148,'43362',36749,36750,4,0),(20149,'43363',37355,37356,4,0),(20150,'43364',37071,37072,4,0),(20151,'43364',37153,37154,4,0),(20152,'43364',36939,36940,4,0),(20153,'43364',36713,36714,4,0),(20154,'43365',36599,36600,4,0),(20155,'43365',36623,36624,4,0),(20156,'43370',36965,36966,4,0),(20157,'43371',37045,37046,4,0),(20158,'43372',36921,36922,4,0),(20159,'43373',36689,36690,4,0),(20160,'43374',37015,37016,4,0),(20161,'43375',37011,37012,4,0),(20162,'43376',37137,37138,4,0),(20163,'43379',36957,36958,4,0),(20164,'43380',37423,37424,4,0),(20165,'43381',36897,36898,4,0),(20166,'43382',37063,37064,4,0),(20167,'43390',37207,37208,4,0),(20168,'43391',37443,37444,4,0),(20169,'43392',36725,36726,4,0),(20170,'43393',36607,36608,4,0),(20171,'43400',37085,37086,4,0),(20172,'43410',37087,37088,4,0),(20173,'43411',36669,36670,4,0),(20174,'43412',37289,37290,4,0),(20175,'43413',37117,37118,4,0),(20176,'43414',37089,37090,4,0),(20177,'43415',37091,37092,4,0),(20178,'43420',37261,37262,4,0),(20179,'43421',5973,5974,4,0),(20180,'43421',37141,37142,4,0),(20181,'43422',36641,36642,4,0),(20182,'43423',37133,37134,4,0),(20183,'43424',37273,37274,4,0),(20184,'43425',37275,37276,4,0),(20185,'43425',37119,37120,4,0),(20186,'43425',36857,36858,4,0),(20187,'43426',37215,37216,4,0),(20188,'43427',36733,36734,4,0),(20189,'43427',37281,37282,4,0),(20190,'43427',37363,37364,4,0),(20191,'43427',37029,37030,4,0),(20192,'43428',37277,37278,4,0),(20193,'43428',36735,36736,4,0),(20194,'43428',37023,37024,4,0),(20195,'43429',37263,37264,4,0),(20196,'43429',37025,37026,4,0),(20197,'43429',36643,36644,4,0),(20198,'43430',37431,37432,4,0),(20199,'43439',37359,37360,4,0),(20200,'43439',37419,37420,4,0),(20201,'43440',36917,36918,4,0),(20202,'43442',36645,36646,4,0),(20203,'43448',37433,37434,4,0),(20204,'43449',37285,37286,4,0),(20205,'43449',37435,37436,4,0),(20206,'43450',36981,36982,4,0),(20207,'43459',37073,37074,4,0),(20208,'43459',37093,37094,4,0),(20209,'43460',36587,36588,4,0),(20210,'43470',36995,36996,4,0),(20211,'43479',36889,36890,4,0),(20212,'43480',37395,37396,4,0),(20213,'43481',37397,37398,4,0),(20214,'43490',37427,37428,4,0),(20215,'43491',37371,37372,4,0),(20216,'43500',37333,37334,4,0),(20217,'43510',37335,37336,4,0),(20218,'43511',37315,37316,4,0),(20219,'43512',36661,36662,4,0),(20220,'43513',37177,37178,4,0),(20221,'43514',37049,37050,4,0),(20222,'43515',36947,36948,4,0),(20223,'43516',36877,36878,4,0),(20224,'43517',37337,37338,4,0),(20225,'43519',36807,36808,4,0),(20226,'43520',37227,37228,4,0),(20227,'43527',37339,37340,4,0),(20228,'43528',36595,36596,4,0),(20229,'43529',37229,37230,4,0),(20230,'43530',36581,36582,4,0),(20231,'43539',36753,36754,4,0),(20232,'43540',37241,37242,4,0),(20233,'43548',37243,37244,4,0),(20234,'43549',36615,36616,4,0),(20235,'43550',37347,37348,4,0),(20236,'43558',36861,36862,4,0),(20237,'43558',37349,37350,4,0),(20238,'43559',37351,37352,4,0),(20239,'43560',36999,37000,4,0),(20240,'43569',36583,36584,4,0),(20241,'43570',37257,37258,4,0),(20242,'43580',36763,36764,4,0),(20243,'43590',37341,37342,4,0),(20244,'43591',36591,36592,4,0),(20245,'43592',37447,37448,4,0),(20246,'43593',37123,37124,4,0),(20247,'43594',36811,36812,4,0),(20248,'43595',37157,37158,4,0),(20249,'43596',36885,36886,4,0),(20250,'43597',36627,36628,4,0),(20251,'43700',36827,36828,4,0),(20252,'43710',37267,37268,4,0),(20253,'43711',36635,36636,4,0),(20254,'43712',37033,37034,4,0),(20255,'43713',37253,37254,4,0),(20256,'43714',36569,36570,4,0),(20257,'43714',36793,36794,4,0),(20258,'43715',37035,37036,4,0),(20259,'43715',36637,36638,4,0),(20260,'43715',36795,36796,4,0),(20261,'43715',37171,37172,4,0),(20262,'43716',36575,36576,4,0),(20263,'43717',36925,36926,4,0),(20264,'43718',37059,37060,4,0),(20265,'43718',37269,37270,4,0),(20266,'43718',36577,36578,4,0),(20267,'43718',36797,36798,4,0),(20268,'43719',36657,36658,4,0),(20269,'43720',36909,36910,4,0),(20270,'43730',36845,36846,4,0),(20271,'43730',37039,37040,4,0),(20272,'43736',26143,26144,4,0),(20273,'43736',36943,36944,4,0),(20274,'43736',36781,36782,4,0),(20275,'43737',36881,36882,4,0),(20276,'43737',36777,36778,4,0),(20277,'43737',37329,37330,4,0),(20278,'43738',36653,36654,4,0),(20279,'43739',37145,37146,4,0),(20280,'43740',37105,37106,4,0),(20281,'43746',37321,37322,4,0),(20282,'43747',37067,37068,4,0),(20283,'43747',36665,36666,4,0),(20284,'43748',36873,36874,4,0),(20285,'43749',36869,36870,4,0),(20286,'43750',36853,36854,4,0),(20287,'43760',36803,36804,4,0),(20288,'43761',36977,36978,4,0),(20289,'43762',36985,36986,4,0),(20290,'43763',37385,37386,4,0),(20291,'43763',36961,36962,4,0),(20292,'43764',36773,36774,4,0),(20293,'43765',36991,36992,4,0),(20294,'43770',37109,37110,4,0),(20295,'43771',37203,37204,4,0),(20296,'43772',36681,36682,4,0),(20297,'43773',36913,36914,4,0),(20298,'43773',36767,36768,4,0),(20299,'43774',37149,37150,4,0),(20300,'43774',37003,37004,4,0),(20301,'43775',37041,37042,4,0),(20302,'43776',36717,36718,4,0),(20303,'43777',36837,36838,4,0),(20304,'43780',36865,36866,4,0),(20305,'43781',36935,36936,4,0),(20306,'43782',37405,37406,4,0),(20307,'43783',36973,36974,4,0),(20308,'43784',36743,36744,4,0),(20309,'43785',36677,36678,4,0),(20310,'43786',36649,36650,4,0),(20311,'43787',36721,36722,4,0),(20312,'43790',37199,37200,4,0),(20313,'43791',36631,36632,4,0),(20314,'43792',37007,37008,4,0),(20315,'43792',37439,37440,4,0),(20316,'43800',37373,37374,4,0),(20317,'43810',36815,36816,4,0),(20318,'43811',36693,36694,4,0),(20319,'43811',36849,36850,4,0),(20320,'43812',36799,36800,4,0),(20321,'43812',37101,37102,4,0),(20322,'43812',37223,37224,4,0),(20323,'43812',36685,36686,4,0),(20324,'43812',37167,37168,4,0),(20325,'43813',36603,36604,4,0),(20326,'43813',37375,37376,4,0),(20327,'43814',37389,37390,4,0),(20328,'43815',36571,36572,4,0),(20329,'43815',37079,37080,4,0),(20330,'43816',37173,37174,4,0),(20331,'43817',36819,36820,4,0),(20332,'43820',36697,36698,4,0),(20333,'43830',37325,37326,4,0),(20334,'43839',36755,36756,4,0),(20335,'43840',37237,37238,4,0),(20336,'43850',36709,36710,4,0),(20337,'43860',36901,36902,4,0),(20338,'43870',36617,36618,4,0),(20339,'43877',37247,37248,4,0),(20340,'43878',37053,37054,4,0),(20341,'43879',37055,37056,4,0),(20342,'43879',36619,36620,4,0),(20343,'43879',37249,37250,4,0),(20344,'43880',36829,36830,4,0),(20345,'43881',36759,36760,4,0),(20346,'43882',36699,36700,4,0),(20347,'43883',37219,37220,4,0),(20348,'43884',36673,36674,4,0),(20349,'43885',37233,37234,4,0),(20350,'43886',37401,37402,4,0),(20351,'43886',37181,37182,4,0),(20352,'43887',37113,37114,4,0),(20353,'43890',37379,37380,4,0),(20354,'43891',37163,37164,4,0),(20355,'43891',37381,37382,4,0),(20356,'43892',37081,37082,4,0),(20357,'43893',36611,36612,4,0),(20358,'43894',36705,36706,4,0),(20359,'43895',36905,36906,4,0),(20360,'43896',36893,36894,4,0),(20361,'43897',37343,37344,4,0),(20362,'43900',14945,14946,4,0),(20363,'44001',38305,38306,4,0),(20364,'44002',38307,38308,4,0),(20365,'44003',38309,38310,4,0),(20366,'44100',37485,37486,4,0),(20367,'44110',37901,37902,4,0),(20368,'44111',38379,38380,4,0),(20369,'44112',38401,38402,4,0),(20370,'44113',38129,38130,4,0),(20371,'44114',37905,37906,4,0),(20372,'44114',38469,38470,4,0),(20373,'44115',37909,37910,4,0),(20374,'44120',38301,38302,4,0),(20375,'44121',37487,37488,4,0),(20376,'44121',38311,38312,4,0),(20377,'44121',38243,38244,4,0),(20378,'44121',37621,37622,4,0),(20379,'44122',38433,38434,4,0),(20380,'44122',38259,38260,4,0),(20381,'44122',37931,37932,4,0),(20382,'44123',37817,37818,4,0),(20383,'44123',37489,37490,4,0),(20384,'44123',38329,38330,4,0),(20385,'44123',37933,37934,4,0),(20386,'44124',38117,38118,4,0),(20387,'44125',38239,38240,4,0),(20388,'44126',37869,37870,4,0),(20389,'44126',37681,37682,4,0),(20390,'44130',38489,38490,4,0),(20391,'44131',38493,38494,4,0),(20392,'44132',38019,38020,4,0),(20393,'44132',38395,38396,4,0),(20394,'44133',38231,38232,4,0),(20395,'44133',38397,38398,4,0),(20396,'44134',38333,38334,4,0),(20397,'44134',38453,38454,4,0),(20398,'44134',37809,37810,4,0),(20399,'44134',37549,37550,4,0),(20400,'44140',37705,37706,4,0),(20401,'44140',37717,37718,4,0),(20402,'44141',37965,37966,4,0),(20403,'44141',38405,38406,4,0),(20404,'44141',38075,38076,4,0),(20405,'44142',37981,37982,4,0),(20406,'44143',37861,37862,4,0),(20407,'44144',38485,38486,4,0),(20408,'44145',37533,37534,4,0),(20409,'44146',38105,38106,4,0),(20410,'44147',37751,37752,4,0),(20411,'44150',37525,37526,4,0),(20412,'44155',37695,37696,4,0),(20413,'44155',37813,37814,4,0),(20414,'44155',37453,37454,4,0),(20415,'44156',37469,37470,4,0),(20416,'44156',37945,37946,4,0),(20417,'44157',37921,37922,4,0),(20418,'44157',37527,37528,4,0),(20419,'44158',37529,37530,4,0),(20420,'44159',38079,38080,4,0),(20421,'44160',37521,37522,4,0),(20422,'44161',37821,37822,4,0),(20423,'44161',38169,38170,4,0),(20424,'44161',38195,38196,4,0),(20425,'44162',38191,38192,4,0),(20426,'44162',37797,37798,4,0),(20427,'44162',38313,38314,4,0),(20428,'44163',38197,38198,4,0),(20429,'44164',38501,38502,4,0),(20430,'44164',38023,38024,4,0),(20431,'44165',37573,37574,4,0),(20432,'44166',38247,38248,4,0),(20433,'44167',37685,37686,4,0),(20434,'44168',37709,37710,4,0),(20435,'44168',37893,37894,4,0),(20436,'44169',37937,37938,4,0),(20437,'44169',38071,38072,4,0),(20438,'44169',37793,37794,4,0),(20439,'44190',38315,38316,4,0),(20440,'44191',37689,37690,4,0),(20441,'44191',37785,37786,4,0),(20442,'44191',37721,37722,4,0),(20443,'44191',38421,38422,4,0),(20444,'44192',38317,38318,4,0),(20445,'44193',37763,37764,4,0),(20446,'44193',38319,38320,4,0),(20447,'44194',37755,37756,4,0),(20448,'44195',38321,38322,4,0),(20449,'44200',37657,37658,4,0),(20450,'44210',37659,37660,4,0),(20451,'44211',37661,37662,4,0),(20452,'44212',37925,37926,4,0),(20453,'44212',37557,37558,4,0),(20454,'44212',38039,38040,4,0),(20455,'44213',38205,38206,4,0),(20456,'44213',37927,37928,4,0),(20457,'44220',37663,37664,4,0),(20458,'44220',37597,37598,4,0),(20459,'44221',38365,38366,4,0),(20460,'44222',38367,38368,4,0),(20461,'44223',38465,38466,4,0),(20462,'44230',38337,38338,4,0),(20463,'44231',37725,37726,4,0),(20464,'44232',37609,37610,4,0),(20465,'44233',38145,38146,4,0),(20466,'44300',38091,38092,4,0),(20467,'44310',38235,38236,4,0),(20468,'44311',38473,38474,4,0),(20469,'44312',38149,38150,4,0),(20470,'44313',38151,38152,4,0),(20471,'44314',37625,37626,4,0),(20472,'44315',38213,38214,4,0),(20473,'44320',37589,37590,4,0),(20474,'44330',37645,37646,4,0),(20475,'44340',37881,37882,4,0),(20476,'44350',37699,37700,4,0),(20477,'44357',37593,37594,4,0),(20478,'44357',37665,37666,4,0),(20479,'44358',37771,37772,4,0),(20480,'44358',38357,38358,4,0),(20481,'44359',38341,38342,4,0),(20482,'44359',37701,37702,4,0),(20483,'44360',38279,38280,4,0),(20484,'44366',38165,38166,4,0),(20485,'44367',37637,37638,4,0),(20486,'44368',38209,38210,4,0),(20487,'44368',38109,38110,4,0),(20488,'44369',37545,37546,4,0),(20489,'44369',38187,38188,4,0),(20490,'44370',37759,37760,4,0),(20491,'44380',38481,38482,4,0),(20492,'44381',38375,38376,4,0),(20493,'44382',37461,37462,4,0),(20494,'44382',38371,38372,4,0),(20495,'44382',38297,38298,4,0),(20496,'44390',38271,38272,4,0),(20497,'44391',37667,37668,4,0),(20498,'44392',37669,37670,4,0),(20499,'44393',38391,38392,4,0),(20500,'44394',38457,38458,4,0),(20501,'44394',37641,37642,4,0),(20502,'44395',37477,37478,4,0),(20503,'44396',38323,38324,4,0),(20504,'44397',38325,38326,4,0),(20505,'44400',38113,38114,4,0),(20506,'44409',37805,37806,4,0),(20507,'44409',37649,37650,4,0),(20508,'44410',38121,38122,4,0),(20509,'44411',38217,38218,4,0),(20510,'44412',38027,38028,4,0),(20511,'44413',38437,38438,4,0),(20512,'44414',38137,38138,4,0),(20513,'44415',37885,37886,4,0),(20514,'44415',38251,38252,4,0),(20515,'44420',38049,38050,4,0),(20516,'44421',38387,38388,4,0),(20517,'44421',37565,37566,4,0),(20518,'44422',38051,38052,4,0),(20519,'44422',37457,37458,4,0),(20520,'44423',38053,38054,4,0),(20521,'44424',38283,38284,4,0),(20522,'44424',37493,37494,4,0),(20523,'44430',38425,38426,4,0),(20524,'44431',37503,37504,4,0),(20525,'44432',37505,37506,4,0),(20526,'44433',37913,37914,4,0),(20527,'44440',37851,37852,4,0),(20528,'44441',37853,37854,4,0),(20529,'44450',37999,38000,4,0),(20530,'44459',37691,37692,4,0),(20531,'44460',38285,38286,4,0),(20532,'44477',37495,37496,4,0),(20533,'44478',38155,38156,4,0),(20534,'44479',38157,38158,4,0),(20535,'44480',38267,38268,4,0),(20536,'44490',37835,37836,4,0),(20537,'44491',37789,37790,4,0),(20538,'44491',37585,37586,4,0),(20539,'44491',38011,38012,4,0),(20540,'44492',37601,37602,4,0),(20541,'44492',37541,37542,4,0),(20542,'44492',38007,38008,4,0),(20543,'44493',38087,38088,4,0),(20544,'44493',38041,38042,4,0),(20545,'44493',38133,38134,4,0),(20546,'44494',38461,38462,4,0),(20547,'44495',37671,37672,4,0),(20548,'44496',37673,37674,4,0),(20549,'44497',38275,38276,4,0),(20550,'44500',37561,37562,4,0),(20551,'44509',37537,37538,4,0),(20552,'44510',37993,37994,4,0),(20553,'44511',37995,37996,4,0),(20554,'44520',38263,38264,4,0),(20555,'44530',37917,37918,4,0),(20556,'44540',37481,37482,4,0),(20557,'44547',37577,37578,4,0),(20558,'44548',38161,38162,4,0),(20559,'44549',37473,37474,4,0),(20560,'44550',37517,37518,4,0),(20561,'44555',38201,38202,4,0),(20562,'44556',37617,37618,4,0),(20563,'44556',38083,38084,4,0),(20564,'44557',37985,37986,4,0),(20565,'44557',38035,38036,4,0),(20566,'44557',37781,37782,4,0),(20567,'44558',37831,37832,4,0),(20568,'44558',37897,37898,4,0),(20569,'44559',38477,38478,4,0),(20570,'44559',37801,37802,4,0),(20571,'44560',37733,37734,4,0),(20572,'44561',38293,38294,4,0),(20573,'44562',37735,37736,4,0),(20574,'44563',37633,37634,4,0),(20575,'44563',37737,37738,4,0),(20576,'44564',38063,38064,4,0),(20577,'44565',37739,37740,4,0),(20578,'44566',37465,37466,4,0),(20579,'44566',38015,38016,4,0),(20580,'44570',37677,37678,4,0),(20581,'44579',37865,37866,4,0),(20582,'44580',38445,38446,4,0),(20583,'44586',38183,38184,4,0),(20584,'44587',37889,37890,4,0),(20585,'44588',37605,37606,4,0),(20586,'44589',37989,37990,4,0),(20587,'44589',38221,38222,4,0),(20588,'44590',37581,37582,4,0),(20589,'44591',43621,43622,4,0),(20590,'44591',38497,38498,4,0),(20591,'44592',37743,37744,4,0),(20592,'44592',37941,37942,4,0),(20593,'44593',38409,38410,4,0),(20594,'44594',38429,38430,4,0),(20595,'44595',38449,38450,4,0),(20596,'44596',37969,37970,4,0),(20597,'44597',38353,38354,4,0),(20598,'44600',37509,37510,4,0),(20599,'44610',37653,37654,4,0),(20600,'44620',38441,38442,4,0),(20601,'44621',38067,38068,4,0),(20602,'44622',37569,37570,4,0),(20603,'44623',37777,37778,4,0),(20604,'44624',38031,38032,4,0),(20605,'44630',39971,39972,4,0),(20606,'44630',37747,37748,4,0),(20607,'44640',38361,38362,4,0),(20608,'44640',37961,37962,4,0),(20609,'44641',38383,38384,4,0),(20610,'44642',37613,37614,4,0),(20611,'44643',37973,37974,4,0),(20612,'44643',37953,37954,4,0),(20613,'44650',37857,37858,4,0),(20614,'44651',37957,37958,4,0),(20615,'44652',38095,38096,4,0),(20616,'44653',38345,38346,4,0),(20617,'44660',37511,37512,4,0),(20618,'44661',37513,37514,4,0),(20619,'44700',38099,38100,4,0),(20620,'44706',37729,37730,4,0),(20621,'44707',38003,38004,4,0),(20622,'44707',37713,37714,4,0),(20623,'44708',38173,38174,4,0),(20624,'44709',38349,38350,4,0),(20625,'44709',38101,38102,4,0),(20626,'44710',38225,38226,4,0),(20627,'44711',37877,37878,4,0),(20628,'44712',38227,38228,4,0),(20629,'44720',38177,38178,4,0),(20630,'44721',37773,37774,4,0),(20631,'44721',37553,37554,4,0),(20632,'44730',38179,38180,4,0),(20633,'44730',38057,38058,4,0),(20634,'44740',38505,38506,4,0),(20635,'44741',37873,37874,4,0),(20636,'44742',38507,38508,4,0),(20637,'44750',38059,38060,4,0),(20638,'44760',38413,38414,4,0),(20639,'44761',38415,38416,4,0),(20640,'44769',38417,38418,4,0),(20641,'44770',37825,37826,4,0),(20642,'44779',37827,37828,4,0),(20643,'44780',38125,38126,4,0),(20644,'44790',37629,37630,4,0),(20645,'44791',37977,37978,4,0),(20646,'44791',37767,37768,4,0),(20647,'44791',38045,38046,4,0),(20648,'44792',38141,38142,4,0),(20649,'44792',37949,37950,4,0),(20650,'44792',37499,37500,4,0),(20651,'44793',38255,38256,4,0),(20652,'44793',38289,38290,4,0),(20653,'45001',39283,39284,4,0),(20654,'45002',39285,39286,4,0),(20655,'45003',39287,39288,4,0),(20656,'45004',39289,39290,4,0),(20657,'45005',39291,39292,4,0),(20658,'45006',39293,39294,4,0),(20659,'45007',39295,39296,4,0),(20660,'45008',39297,39298,4,0),(20661,'45100',39259,39260,4,0),(20662,'45109',39261,39262,4,0),(20663,'45109',39097,39098,4,0),(20664,'45110',38513,38514,4,0),(20665,'45111',38711,38712,4,0),(20666,'45112',38603,38604,4,0),(20667,'45113',38699,38700,4,0),(20668,'45114',38981,38982,4,0),(20669,'45120',39205,39206,4,0),(20670,'45120',38993,38994,4,0),(20671,'45121',38995,38996,4,0),(20672,'45122',38573,38574,4,0),(20673,'45123',38909,38910,4,0),(20674,'45123',39243,39244,4,0),(20675,'45124',38671,38672,4,0),(20676,'45125',39151,39152,4,0),(20677,'45126',38723,38724,4,0),(20678,'45126',38983,38984,4,0),(20679,'45127',38897,38898,4,0),(20680,'45128',38997,38998,4,0),(20681,'45130',38929,38930,4,0),(20682,'45138',38931,38932,4,0),(20683,'45139',38933,38934,4,0),(20684,'45140',38925,38926,4,0),(20685,'45150',39043,39044,4,0),(20686,'45159',39045,39046,4,0),(20687,'45159',38819,38820,4,0),(20688,'45160',38807,38808,4,0),(20689,'45161',39139,39140,4,0),(20690,'45162',39065,39066,4,0),(20691,'45163',39317,39318,4,0),(20692,'45164',38795,38796,4,0),(20693,'45165',39197,39198,4,0),(20694,'45170',39201,39202,4,0),(20695,'45179',39379,39380,4,0),(20696,'45180',38639,38640,4,0),(20697,'45181',38643,38644,4,0),(20698,'45182',38569,38570,4,0),(20699,'45183',38901,38902,4,0),(20700,'45190',39037,39038,4,0),(20701,'45191',39039,39040,4,0),(20702,'45200',38839,38840,4,0),(20703,'45210',39419,39420,4,0),(20704,'45211',39169,39170,4,0),(20705,'45212',38917,38918,4,0),(20706,'45213',39115,39116,4,0),(20707,'45214',38687,38688,4,0),(20708,'45215',38765,38766,4,0),(20709,'45216',38659,38660,4,0),(20710,'45217',39325,39326,4,0),(20711,'45220',39403,39404,4,0),(20712,'45221',38785,38786,4,0),(20713,'45222',38595,38596,4,0),(20714,'45223',39245,39246,4,0),(20715,'45224',39247,39248,4,0),(20716,'45225',38581,38582,4,0),(20717,'45230',39077,39078,4,0),(20718,'45240',38517,38518,4,0),(20719,'45250',38565,38566,4,0),(20720,'45260',39389,39390,4,0),(20721,'45270',39015,39016,4,0),(20722,'45276',39019,39020,4,0),(20723,'45280',39089,39090,4,0),(20724,'45290',39119,39120,4,0),(20725,'45291',38707,38708,4,0),(20726,'45292',39391,39392,4,0),(20727,'45300',38867,38868,4,0),(20728,'45300',39085,39086,4,0),(20729,'45310',39399,39400,4,0),(20730,'45311',38731,38732,4,0),(20731,'45312',38615,38616,4,0),(20732,'45313',39407,39408,4,0),(20733,'45314',38703,38704,4,0),(20734,'45340',39093,39094,4,0),(20735,'45350',39061,39062,4,0),(20736,'45360',39383,39384,4,0),(20737,'45370',39385,39386,4,0),(20738,'45370',39217,39218,4,0),(20739,'45400',39033,39034,4,0),(20740,'45400',39159,39160,4,0),(20741,'45410',39375,39376,4,0),(20742,'45420',38557,38558,4,0),(20743,'45430',38977,38978,4,0),(20744,'45440',39363,39364,4,0),(20745,'45450',39099,39100,4,0),(20746,'45460',38751,38752,4,0),(20747,'45460',38961,38962,4,0),(20748,'45470',38937,38938,4,0),(20749,'45479',38969,38970,4,0),(20750,'45480',39329,39330,4,0),(20751,'45480',38939,38940,4,0),(20752,'45500',39313,39314,4,0),(20753,'45510',38789,38790,4,0),(20754,'45511',38827,38828,4,0),(20755,'45512',39143,39144,4,0),(20756,'45513',39221,39222,4,0),(20757,'45514',39165,39166,4,0),(20758,'45515',38965,38966,4,0),(20759,'45516',38869,38870,4,0),(20760,'45517',38777,38778,4,0),(20761,'45518',38803,38804,4,0),(20762,'45519',39073,39074,4,0),(20763,'45520',39355,39356,4,0),(20764,'45521',38607,38608,4,0),(20765,'45522',38521,38522,4,0),(20766,'45523',38525,38526,4,0),(20767,'45524',39177,39178,4,0),(20768,'45525',38583,38584,4,0),(20769,'45526',39231,39232,4,0),(20770,'45529',39411,39412,4,0),(20771,'45530',39227,39228,4,0),(20772,'45530',39009,39010,4,0),(20773,'45531',38655,38656,4,0),(20774,'45532',38663,38664,4,0),(20775,'45533',38739,38740,4,0),(20776,'45534',38855,38856,4,0),(20777,'45540',38769,38770,4,0),(20778,'45540',38791,38792,4,0),(20779,'45541',39005,39006,4,0),(20780,'45542',38743,38744,4,0),(20781,'45543',39111,39112,4,0),(20782,'45544',38727,38728,4,0),(20783,'45551',38835,38836,4,0),(20784,'45560',39103,39104,4,0),(20785,'45567',38887,38888,4,0),(20786,'45568',38905,38906,4,0),(20787,'45569',39301,39302,4,0),(20788,'45569',39105,39106,4,0),(20789,'45570',38747,38748,4,0),(20790,'45571',38577,38578,4,0),(20791,'45571',38537,38538,4,0),(20792,'45572',39333,39334,4,0),(20793,'45572',39309,39310,4,0),(20794,'45573',39053,39054,4,0),(20795,'45574',38843,38844,4,0),(20796,'45575',38549,38550,4,0),(20797,'45576',39021,39022,4,0),(20798,'45577',39147,39148,4,0),(20799,'45578',38735,38736,4,0),(20800,'45580',38635,38636,4,0),(20801,'45588',38811,38812,4,0),(20802,'45589',38631,38632,4,0),(20803,'45590',38951,38952,4,0),(20804,'45591',39415,39416,4,0),(20805,'45592',38611,38612,4,0),(20806,'45593',38587,38588,4,0),(20807,'45594',39359,39360,4,0),(20808,'45600',39269,39270,4,0),(20809,'45600',39107,39108,4,0),(20810,'45610',39049,39050,4,0),(20811,'45611',39127,39128,4,0),(20812,'45612',39341,39342,4,0),(20813,'45613',39271,39272,4,0),(20814,'45614',39273,39274,4,0),(20815,'45620',39029,39030,4,0),(20816,'45621',39239,39240,4,0),(20817,'45622',38987,38988,4,0),(20818,'45630',39057,39058,4,0),(20819,'45631',38553,38554,4,0),(20820,'45632',39235,39236,4,0),(20821,'45633',38851,38852,4,0),(20822,'45634',38599,38600,4,0),(20823,'45635',39265,39266,4,0),(20824,'45636',38973,38974,4,0),(20825,'45637',38691,38692,4,0),(20826,'45638',39135,39136,4,0),(20827,'45640',38753,38754,4,0),(20828,'45641',38675,38676,4,0),(20829,'45642',38651,38652,4,0),(20830,'45643',38799,38800,4,0),(20831,'45644',39081,39082,4,0),(20832,'45645',38815,38816,4,0),(20833,'45646',39209,39210,4,0),(20834,'45650',38781,38782,4,0),(20835,'45651',39305,39306,4,0),(20836,'45652',39173,39174,4,0),(20837,'45653',39213,39214,4,0),(20838,'45654',39193,39194,4,0),(20839,'45660',38591,38592,4,0),(20840,'45661',38545,38546,4,0),(20841,'45662',38533,38534,4,0),(20842,'45662',38989,38990,4,0),(20843,'45663',38891,38892,4,0),(20844,'45664',38893,38894,4,0),(20845,'45670',38859,38860,4,0),(20846,'45671',39251,39252,4,0),(20847,'45672',39253,39254,4,0),(20848,'45673',39255,39256,4,0),(20849,'45674',39181,39182,4,0),(20850,'45675',39183,39184,4,0),(20851,'45676',39185,39186,4,0),(20852,'45677',39187,39188,4,0),(20853,'45678',39189,39190,4,0),(20854,'45680',38683,38684,4,0),(20855,'45680',39345,39346,4,0),(20856,'45682',38921,38922,4,0),(20857,'45683',38679,38680,4,0),(20858,'45684',38943,38944,4,0),(20859,'45685',39025,39026,4,0),(20860,'45686',38625,38626,4,0),(20861,'45687',38529,38530,4,0),(20862,'45690',38873,38874,4,0),(20863,'45691',38875,38876,4,0),(20864,'45692',38955,38956,4,0),(20865,'45693',38957,38958,4,0),(20866,'45694',39275,39276,4,0),(20867,'45695',38627,38628,4,0),(20868,'45700',38715,38716,4,0),(20869,'45710',38947,38948,4,0),(20870,'45720',38647,38648,4,0),(20871,'45730',39351,39352,4,0),(20872,'45740',39395,39396,4,0),(20873,'45749',39367,39368,4,0),(20874,'45750',38831,38832,4,0),(20875,'45750',38617,38618,4,0),(20876,'45760',38847,38848,4,0),(20877,'45770',38757,38758,4,0),(20878,'45780',39279,39280,4,0),(20879,'45789',39321,39322,4,0),(20880,'45790',39155,39156,4,0),(20881,'45800',39161,39162,4,0),(20882,'45810',39371,39372,4,0),(20883,'45820',38761,38762,4,0),(20884,'45830',39011,39012,4,0),(20885,'45840',38863,38864,4,0),(20886,'45850',38883,38884,4,0),(20887,'45860',39347,39348,4,0),(20888,'45870',38913,38914,4,0),(20889,'45880',38719,38720,4,0),(20890,'45890',38621,38622,4,0),(20891,'45900',38561,38562,4,0),(20892,'45908',39123,39124,4,0),(20893,'45908',38541,38542,4,0),(20894,'45909',39223,39224,4,0),(20895,'45910',38773,38774,4,0),(20896,'45917',39069,39070,4,0),(20897,'45918',39131,39132,4,0),(20898,'45919',38823,38824,4,0),(20899,'45920',38879,38880,4,0),(20900,'45930',39001,39002,4,0),(20901,'45940',39337,39338,4,0),(20902,'45950',38667,38668,4,0),(20903,'45960',38695,38696,4,0),(20904,'46001',40551,40552,4,0),(20905,'46002',40553,40554,4,0),(20906,'46003',40555,40556,4,0),(20907,'46004',40557,40558,4,0),(20908,'46005',40559,40560,4,0),(20909,'46006',40561,40562,4,0),(20910,'46007',40563,40564,4,0),(20911,'46008',40565,40566,4,0),(20912,'46009',40567,40568,4,0),(20913,'46010',40569,40570,4,0),(20914,'46011',40571,40572,4,0),(20915,'46012',40573,40574,4,0),(20916,'46013',40575,40576,4,0),(20917,'46014',40659,40660,4,0),(20918,'46014',40577,40578,4,0),(20919,'46015',40579,40580,4,0),(20920,'46016',40581,40582,4,0),(20921,'46016',40481,40482,4,0),(20922,'46017',40583,40584,4,0),(20923,'46018',40585,40586,4,0),(20924,'46019',40587,40588,4,0),(20925,'46020',40589,40590,4,0),(20926,'46021',40591,40592,4,0),(20927,'46022',40593,40594,4,0),(20928,'46023',40595,40596,4,0),(20929,'46024',40597,40598,4,0),(20930,'46025',40599,40600,4,0),(20931,'46026',40601,40602,4,0),(20932,'46035',40603,40604,4,0),(20933,'46100',39745,39746,4,0),(20934,'46109',39845,39846,4,0),(20935,'46110',40015,40016,4,0),(20936,'46111',40377,40378,4,0),(20937,'46112',40605,40606,4,0),(20938,'46113',40175,40176,4,0),(20939,'46114',40655,40656,4,0),(20940,'46115',39515,39516,4,0),(20941,'46117',39713,39714,4,0),(20942,'46118',40435,40436,4,0),(20943,'46119',40203,40204,4,0),(20944,'46120',39473,39474,4,0),(20945,'46128',39475,39476,4,0),(20946,'46129',39477,39478,4,0),(20947,'46130',40147,40148,4,0),(20948,'46131',39729,39730,4,0),(20949,'46131',40607,40608,4,0),(20950,'46132',39547,39548,4,0),(20951,'46133',40155,40156,4,0),(20952,'46134',39955,39956,4,0),(20953,'46135',39457,39458,4,0),(20954,'46135',39925,39926,4,0),(20955,'46135',40609,40610,4,0),(20956,'46136',40199,40200,4,0),(20957,'46137',40297,40298,4,0),(20958,'46138',40323,40324,4,0),(20959,'46139',40299,40300,4,0),(20960,'46140',40303,40304,4,0),(20961,'46140',39425,39426,4,0),(20962,'46141',39811,39812,4,0),(20963,'46143',40503,40504,4,0),(20964,'46145',40619,40620,4,0),(20965,'46146',39793,39794,4,0),(20966,'46147',39789,39790,4,0),(20967,'46148',39539,39540,4,0),(20968,'46149',40011,40012,4,0),(20969,'46160',40083,40084,4,0),(20970,'46162',40037,40038,4,0),(20971,'46163',40135,40136,4,0),(20972,'46164',40259,40260,4,0),(20973,'46165',39737,39738,4,0),(20974,'46166',40007,40008,4,0),(20975,'46167',39855,39856,4,0),(20976,'46168',40463,40464,4,0),(20977,'46169',39995,39996,4,0),(20978,'46169',40225,40226,4,0),(20979,'46170',40645,40646,4,0),(20980,'46170',39579,39580,4,0),(20981,'46171',39797,39798,4,0),(20982,'46172',39495,39496,4,0),(20983,'46173',39627,39628,4,0),(20984,'46173',40103,40104,4,0),(20985,'46174',39903,39904,4,0),(20986,'46175',39749,39750,4,0),(20987,'46176',39835,39836,4,0),(20988,'46177',40533,40534,4,0),(20989,'46178',40079,40080,4,0),(20990,'46178',39563,39564,4,0),(20991,'46178',40499,40500,4,0),(20992,'46179',39591,39592,4,0),(20993,'46180',39631,39632,4,0),(20994,'46181',39701,39702,4,0),(20995,'46181',40215,40216,4,0),(20996,'46182',40249,40250,4,0),(20997,'46183',40067,40068,4,0),(20998,'46184',40407,40408,4,0),(21001,'46190',40367,40368,4,0),(21002,'46191',40637,40638,4,0),(21003,'46192',40195,40196,4,0),(21004,'46193',40191,40192,4,0),(21005,'46194',40339,40340,4,0),(21006,'46195',40095,40096,4,0),(21007,'46196',39815,39816,4,0),(21008,'46197',39519,39520,4,0),(21009,'46198',39907,39908,4,0),(21010,'46199',40159,40160,4,0),(21011,'46199',40343,40344,4,0),(21012,'46199',39867,39868,4,0),(21013,'46200',40237,40238,4,0),(21014,'46210',40267,40268,4,0),(21015,'46220',40271,40272,4,0),(21016,'46220',39485,39486,4,0),(21017,'46230',39543,39544,4,0),(21018,'46240',39781,39782,4,0),(21019,'46250',40393,40394,4,0),(21020,'46250',40063,40064,4,0),(21021,'46260',39465,39466,4,0),(21022,'46266',39587,39588,4,0),(21023,'46267',39999,40000,4,0),(21024,'46268',39571,39572,4,0),(21025,'46269',40529,40530,4,0),(21026,'46270',40641,40642,4,0),(21027,'46290',39487,39488,4,0),(21028,'46291',39683,39684,4,0),(21029,'46292',40139,40140,4,0),(21030,'46293',39491,39492,4,0),(21031,'46293',39639,39640,4,0),(21032,'46294',39777,39778,4,0),(21033,'46294',39871,39872,4,0),(21034,'46295',40423,40424,4,0),(21035,'46295',40477,40478,4,0),(21036,'46300',40541,40542,4,0),(21037,'46310',40627,40628,4,0),(21038,'46311',40629,40630,4,0),(21039,'46312',40543,40544,4,0),(21040,'46313',40545,40546,4,0),(21041,'46314',39977,39978,4,0),(21042,'46315',39823,39824,4,0),(21043,'46317',40649,40650,4,0),(21044,'46318',40651,40652,4,0),(21045,'46320',40453,40454,4,0),(21046,'46321',40547,40548,4,0),(21047,'46330',39753,39754,4,0),(21048,'46340',40345,40346,4,0),(21049,'46350',39841,39842,4,0),(21050,'46351',39837,39838,4,0),(21051,'46351',40347,40348,4,0),(21052,'46352',40349,40350,4,0),(21053,'46353',40351,40352,4,0),(21054,'46354',40353,40354,4,0),(21055,'46355',40355,40356,4,0),(21056,'46356',40357,40358,4,0),(21057,'46357',40359,40360,4,0),(21058,'46360',39741,39742,4,0),(21059,'46367',40665,40666,4,0),(21060,'46368',40123,40124,4,0),(21061,'46369',39469,39470,4,0),(21062,'46370',39851,39852,4,0),(21063,'46380',39847,39848,4,0),(21064,'46388',40019,40020,4,0),(21065,'46389',40537,40538,4,0),(21066,'46390',40361,40362,4,0),(21067,'46391',40363,40364,4,0),(21068,'46392',40439,40440,4,0),(21069,'46393',40099,40100,4,0),(21070,'46400',39891,39892,4,0),(21071,'46408',39893,39894,4,0),(21072,'46409',39895,39896,4,0),(21073,'46410',40469,40470,4,0),(21074,'46417',40373,40374,4,0),(21075,'46418',39963,39964,4,0),(21076,'46419',40471,40472,4,0),(21077,'46420',40473,40474,4,0),(21078,'46430',40457,40458,4,0),(21079,'46439',40459,40460,4,0),(21080,'46440',39559,39560,4,0),(21081,'46450',39915,39916,4,0),(21082,'46450',39671,39672,4,0),(21083,'46460',40445,40446,4,0),(21084,'46469',39691,39692,4,0),(21085,'46470',39819,39820,4,0),(21086,'46470',40489,40490,4,0),(21087,'46470',39449,39450,4,0),(21088,'46470',40151,40152,4,0),(21090,'46500',40395,40396,4,0),(21091,'46501',40263,40264,4,0),(21092,'46510',39883,39884,4,0),(21093,'46511',39667,39668,4,0),(21094,'46512',39947,39948,4,0),(21095,'46514',39635,39636,4,0),(21096,'46515',39875,39876,4,0),(21097,'46520',40397,40398,4,0),(21098,'46529',39765,39766,4,0),(21099,'46530',40293,40294,4,0),(21100,'46530',40399,40400,4,0),(21101,'46540',39917,39918,4,0),(21102,'46550',39481,39482,4,0),(21103,'46560',40143,40144,4,0),(21104,'46590',39939,39940,4,0),(21105,'46591',39461,39462,4,0),(21106,'46592',40419,40420,4,0),(21107,'46593',39531,39532,4,0),(21108,'46594',39511,39512,4,0),(21109,'46595',40525,40526,4,0),(21110,'46600',39573,39574,4,0),(21111,'46600',40441,40442,4,0),(21112,'46610',40027,40028,4,0),(21113,'46611',39687,39688,4,0),(21114,'46612',39863,39864,4,0),(21115,'46613',40091,40092,4,0),(21116,'46614',39951,39952,4,0),(21117,'46620',39603,39604,4,0),(21118,'46621',40669,40670,4,0),(21119,'46622',40491,40492,4,0),(21120,'46623',40049,40050,4,0),(21121,'46624',40041,40042,4,0),(21122,'46625',39859,39860,4,0),(21123,'46630',39973,39974,4,0),(21124,'46635',39959,39960,4,0),(21125,'46640',40171,40172,4,0),(21126,'46650',39757,39758,4,0),(21127,'46659',39759,39760,4,0),(21128,'46660',40131,40132,4,0),(21129,'46661',39935,39936,4,0),(21130,'46666',40331,40332,4,0),(21131,'46667',39607,39608,4,0),(21132,'46668',40053,40054,4,0),(21133,'46668',40111,40112,4,0),(21134,'46669',40431,40432,4,0),(21135,'46669',40411,40412,4,0),(21136,'46670',40315,40316,4,0),(21137,'46680',39535,39536,4,0),(21138,'46687',39453,39454,4,0),(21139,'46688',40285,40286,4,0),(21140,'46689',39659,39660,4,0),(21141,'46690',39499,39500,4,0),(21142,'46691',40615,40616,4,0),(21143,'46692',40183,40184,4,0),(21144,'46701',39981,39982,4,0),(21145,'46702',39983,39984,4,0),(21146,'46703',39697,39698,4,0),(21147,'46710',39899,39900,4,0),(21148,'46711',40163,40164,4,0),(21149,'46711',40033,40034,4,0),(21150,'46712',40277,40278,4,0),(21151,'46713',39619,39620,4,0),(21152,'46714',40245,40246,4,0),(21153,'46715',39567,39568,4,0),(21154,'46716',40327,40328,4,0),(21155,'46717',39967,39968,4,0),(21156,'46717',39799,39800,4,0),(21157,'46720',40633,40634,4,0),(21158,'46721',40289,40290,4,0),(21159,'46722',39675,39676,4,0),(21160,'46722',39647,39648,4,0),(21161,'46723',39555,39556,4,0),(21162,'46724',40241,40242,4,0),(21163,'46725',39527,39528,4,0),(21164,'46725',40385,40386,4,0),(21165,'46726',40119,40120,4,0),(21166,'46726',39807,39808,4,0),(21167,'46726',39551,39552,4,0),(21168,'46727',39921,39922,4,0),(21169,'46728',39985,39986,4,0),(21170,'46729',39429,39430,4,0),(21171,'46730',39987,39988,4,0),(21172,'46740',39769,39770,4,0),(21173,'46749',39771,39772,4,0),(21174,'46750',40449,40450,4,0),(21175,'46758',39611,39612,4,0),(21176,'46760',40485,40486,4,0),(21177,'46760',39989,39990,4,0),(21178,'46770',40045,40046,4,0),(21179,'46780',40217,40218,4,0),(21180,'46790',40059,40060,4,0),(21181,'46791',39663,39664,4,0),(21182,'46792',39773,39774,4,0),(21183,'46792',39575,39576,4,0),(21184,'46800',40055,40056,4,0),(21185,'46810',39929,39930,4,0),(21186,'46811',39931,39932,4,0),(21187,'46812',39595,39596,4,0),(21188,'46813',39827,39828,4,0),(21189,'46813',39761,39762,4,0),(21190,'46814',40507,40508,4,0),(21191,'46814',40087,40088,4,0),(21192,'46814',40071,40072,4,0),(21193,'46815',40075,40076,4,0),(21194,'46816',40381,40382,4,0),(21195,'46817',39943,39944,4,0),(21196,'46818',40623,40624,4,0),(21197,'46819',40211,40212,4,0),(21198,'46820',39583,39584,4,0),(21199,'46821',39831,39832,4,0),(21200,'46822',39725,39726,4,0),(21201,'46823',40207,40208,4,0),(21202,'46824',40319,40320,4,0),(21203,'46825',39717,39718,4,0),(21204,'46830',39679,39680,4,0),(21205,'46837',39887,39888,4,0),(21206,'46838',39655,39656,4,0),(21207,'46838',40281,40282,4,0),(21208,'46838',40107,40108,4,0),(21209,'46839',39623,39624,4,0),(21210,'46839',39709,39710,4,0),(21211,'46839',40427,40428,4,0),(21212,'46839',40023,40024,4,0),(21215,'46841',39803,39804,4,0),(21216,'46842',40465,40466,4,0),(21217,'46842',39599,39600,4,0),(21218,'46842',40187,40188,4,0),(21219,'46842',40495,40496,4,0),(21220,'46842',40389,40390,4,0),(21221,'46843',40403,40404,4,0),(21222,'46843',40335,40336,4,0),(21223,'46844',40233,40234,4,0),(21224,'46844',39651,39652,4,0),(21225,'46850',40221,40222,4,0),(21226,'46860',39445,39446,4,0),(21227,'46868',39615,39616,4,0),(21228,'46869',39705,39706,4,0),(21229,'46869',39433,39434,4,0),(21230,'46869',39785,39786,4,0),(21231,'46870',40229,40230,4,0),(21232,'46880',39721,39722,4,0),(21233,'46890',39437,39438,4,0),(21234,'46891',39733,39734,4,0),(21235,'46891',39911,39912,4,0),(21236,'46892',40179,40180,4,0),(21237,'46893',39523,39524,4,0),(21238,'46894',40003,40004,4,0),(21241,'46910',40415,40416,4,0),(21242,'46910',40115,40116,4,0),(21243,'46910',39507,39508,4,0),(21244,'46910',39643,39644,4,0),(21245,'46920',40167,40168,4,0),(21246,'46930',39879,39880,4,0),(21247,'46940',40127,40128,4,0),(21248,'46950',40661,40662,4,0),(21249,'46960',39503,39504,4,0),(21250,'46970',39441,39442,4,0),(21251,'46980',40251,40252,4,0),(21252,'46988',40253,40254,4,0),(21253,'46989',40255,40256,4,0),(21254,'47001',41441,41442,4,0),(21255,'47002',41443,41444,4,0),(21256,'47003',41445,41446,4,0),(21257,'47004',41447,41448,4,0),(21258,'47005',41449,41450,4,0),(21259,'47006',41451,41452,4,0),(21260,'47007',41453,41454,4,0),(21261,'47008',41455,41456,4,0),(21262,'47009',41457,41458,4,0),(21263,'47010',41459,41460,4,0),(21264,'47011',41461,41462,4,0),(21265,'47012',41463,41464,4,0),(21266,'47013',41465,41466,4,0),(21267,'47014',41467,41468,4,0),(21268,'47015',41469,41470,4,0),(21269,'47016',41471,41472,4,0),(21270,'47017',41473,41474,4,0),(21271,'47018',41475,41476,4,0),(21272,'47100',41359,41360,4,0),(21273,'47110',40813,40814,4,0),(21274,'47111',41579,41580,4,0),(21275,'47112',41139,41140,4,0),(21276,'47113',41361,41362,4,0),(21277,'47113',41591,41592,4,0),(21278,'47114',41029,41030,4,0),(21279,'47114',41511,41512,4,0),(21280,'47114',41377,41378,4,0),(21281,'47115',40741,40742,4,0),(21282,'47115',40745,40746,4,0),(21283,'47116',41185,41186,4,0),(21284,'47120',41093,41094,4,0),(21285,'47129',40729,40730,4,0),(21286,'47129',41269,41270,4,0),(21287,'47129',41297,41298,4,0),(21288,'47129',41385,41386,4,0),(21289,'47129',40675,40676,4,0),(21290,'47130',41343,41344,4,0),(21291,'47131',41241,41242,4,0),(21292,'47131',41603,41604,4,0),(21293,'47131',40957,40958,4,0),(21294,'47131',41515,41516,4,0),(21295,'47132',41363,41364,4,0),(21296,'47132',41285,41286,4,0),(21297,'47133',41503,41504,4,0),(21298,'47133',41019,41020,4,0),(21299,'47134',41637,41638,4,0),(21300,'47134',41389,41390,4,0),(21301,'47134',41305,41306,4,0),(21302,'47134',40949,40950,4,0),(21303,'47140',40997,40998,4,0),(21304,'47140',41477,41478,4,0),(21305,'47150',41523,41524,4,0),(21306,'47151',40765,40766,4,0),(21307,'47152',41479,41480,4,0),(21308,'47153',41481,41482,4,0),(21309,'47155',41327,41328,4,0),(21310,'47160',41189,41190,4,0),(21311,'47160',40695,40696,4,0),(21312,'47161',41405,41406,4,0),(21313,'47162',40699,40700,4,0),(21314,'47164',41281,41282,4,0),(21315,'47165',40797,40798,4,0),(21316,'47166',41657,41658,4,0),(21317,'47169',40701,40702,4,0),(21318,'47169',41407,41408,4,0),(21319,'47169',40999,41000,4,0),(21320,'47170',41233,41234,4,0),(21321,'47171',40845,40846,4,0),(21322,'47172',41633,41634,4,0),(21323,'47173',41123,41124,4,0),(21324,'47175',41173,41174,4,0),(21325,'47176',40917,40918,4,0),(21326,'47177',40709,40710,4,0),(21327,'47180',41563,41564,4,0),(21328,'47181',41547,41548,4,0),(21329,'47182',40857,40858,4,0),(21330,'47183',41367,41368,4,0),(21331,'47184',40921,40922,4,0),(21332,'47185',40805,40806,4,0),(21333,'47186',41071,41072,4,0),(21334,'47186',40913,40914,4,0),(21335,'47190',41661,41662,4,0),(21336,'47191',40873,40874,4,0),(21337,'47192',40833,40834,4,0),(21338,'47193',40877,40878,4,0),(21339,'47194',41097,41098,4,0),(21340,'47194',40937,40938,4,0),(21341,'47195',40713,40714,4,0),(21342,'47196',40981,40982,4,0),(21343,'47197',41483,41484,4,0),(21344,'47198',41485,41486,4,0),(21345,'47200',41491,41492,4,0),(21346,'47209',41277,41278,4,0),(21347,'47210',40717,40718,4,0),(21348,'47219',41289,41290,4,0),(21349,'47219',41265,41266,4,0),(21350,'47219',41101,41102,4,0),(21351,'47220',41197,41198,4,0),(21352,'47230',41023,41024,4,0),(21353,'47238',41025,41026,4,0),(21354,'47238',40965,40966,4,0),(21355,'47238',40691,40692,4,0),(21356,'47239',41335,41336,4,0),(21357,'47239',41611,41612,4,0),(21358,'47239',41519,41520,4,0),(21359,'47240',41433,41434,4,0),(21360,'47250',41063,41064,4,0),(21361,'47260',40781,40782,4,0),(21362,'47270',40869,40870,4,0),(21363,'47280',40889,40890,4,0),(21364,'47281',40891,40892,4,0),(21365,'47282',41401,41402,4,0),(21366,'47283',41217,41218,4,0),(21367,'47290',40899,40900,4,0),(21368,'47300',41143,41144,4,0),(21369,'47310',40793,40794,4,0),(21370,'47311',40801,40802,4,0),(21371,'47311',40925,40926,4,0),(21372,'47312',40721,40722,4,0),(21373,'47313',41371,41372,4,0),(21374,'47313',40885,40886,4,0),(21375,'47313',41145,41146,4,0),(21376,'47313',41393,41394,4,0),(21377,'47314',41003,41004,4,0),(21378,'47314',41015,41016,4,0),(21379,'47314',41147,41148,4,0),(21380,'47315',41169,41170,4,0),(21381,'47316',41245,41246,4,0),(21382,'47316',40907,40908,4,0),(21383,'47316',41177,41178,4,0),(21384,'47316',41181,41182,4,0),(21385,'47317',41425,41426,4,0),(21386,'47317',40761,40762,4,0),(21387,'47317',41273,41274,4,0),(21388,'47317',40895,40896,4,0),(21389,'47318',41127,41128,4,0),(21390,'47318',40821,40822,4,0),(21391,'47318',41149,41150,4,0),(21392,'47319',41373,41374,4,0),(21393,'47319',41225,41226,4,0),(21394,'47320',41077,41078,4,0),(21395,'47320',41409,41410,4,0),(21396,'47328',40977,40978,4,0),(21397,'47329',40825,40826,4,0),(21398,'47329',41527,41528,4,0),(21399,'47329',41641,41642,4,0),(21400,'47330',41321,41322,4,0),(21401,'47330',41397,41398,4,0),(21402,'47331',41323,41324,4,0),(21403,'47340',41331,41332,4,0),(21404,'47350',41213,41214,4,0),(21405,'47359',41421,41422,4,0),(21406,'47359',41113,41114,4,0),(21407,'47360',41209,41210,4,0),(21408,'47400',41043,41044,4,0),(21409,'47410',41117,41118,4,0),(21410,'47418',40679,40680,4,0),(21411,'47418',41007,41008,4,0),(21412,'47418',40945,40946,4,0),(21413,'47419',40705,40706,4,0),(21414,'47419',40757,40758,4,0),(21415,'47419',41205,41206,4,0),(21416,'47420',40969,40970,4,0),(21417,'47428',33401,33402,4,0),(21418,'47430',41135,41136,4,0),(21419,'47440',40881,40882,4,0),(21420,'47440',41051,41052,4,0),(21421,'47450',41193,41194,4,0),(21422,'47451',41119,41120,4,0),(21423,'47453',41229,41230,4,0),(21424,'47454',41085,41086,4,0),(21425,'47460',17987,17988,4,0),(21426,'47461',40773,40774,4,0),(21427,'47462',40753,40754,4,0),(21428,'47463',41507,41508,4,0),(21429,'47464',41109,41110,4,0),(21430,'47465',41649,41650,4,0),(21431,'47470',40809,40810,4,0),(21432,'47480',40933,40934,4,0),(21433,'47490',41253,41254,4,0),(21434,'47491',40985,40986,4,0),(21435,'47492',41045,41046,4,0),(21436,'47492',41255,41256,4,0),(21437,'47493',41309,41310,4,0),(21438,'47493',41047,41048,4,0),(21439,'47494',41011,41012,4,0),(21440,'47494',41249,41250,4,0),(21441,'47494',40941,40942,4,0),(21442,'47494',40865,40866,4,0),(21443,'47500',41105,41106,4,0),(21444,'47509',41257,41258,4,0),(21445,'47510',40687,40688,4,0),(21446,'47511',41339,41340,4,0),(21447,'47512',40817,40818,4,0),(21448,'47513',41381,41382,4,0),(21449,'47520',40849,40850,4,0),(21450,'47529',41555,41556,4,0),(21451,'47530',41301,41302,4,0),(21452,'47600',41595,41596,4,0),(21453,'47606',40953,40954,4,0),(21454,'47606',41551,41552,4,0),(21455,'47607',40961,40962,4,0),(21456,'47607',41543,41544,4,0),(21457,'47608',41615,41616,4,0),(21458,'47608',41571,41572,4,0),(21459,'47608',40777,40778,4,0),(21460,'47609',40929,40930,4,0),(21461,'47609',41317,41318,4,0),(21462,'47609',41539,41540,4,0),(21463,'47609',41499,41500,4,0),(21464,'47610',41665,41666,4,0),(21465,'47620',41607,41608,4,0),(21466,'47630',40973,40974,4,0),(21467,'47639',41587,41588,4,0),(21468,'47640',41165,41166,4,0),(21469,'47641',40841,40842,4,0),(21470,'47650',40903,40904,4,0),(21471,'47664',40853,40854,4,0),(21472,'47670',40733,40734,4,0),(21473,'47670',40989,40990,4,0),(21474,'47671',41413,41414,4,0),(21475,'47672',41437,41438,4,0),(21476,'47673',41221,41222,4,0),(21477,'47673',41237,41238,4,0),(21478,'47674',40725,40726,4,0),(21479,'47675',41575,41576,4,0),(21480,'47675',40769,40770,4,0),(21481,'47676',41653,41654,4,0),(21482,'47680',41033,41034,4,0),(21483,'47686',41059,41060,4,0),(21484,'47687',41055,41056,4,0),(21485,'47688',41067,41068,4,0),(21486,'47689',41261,41262,4,0),(21487,'47689',40829,40830,4,0),(21488,'47689',40785,40786,4,0),(21489,'47689',41583,41584,4,0),(21490,'47690',41495,41496,4,0),(21491,'47691',41081,41082,4,0),(21492,'47692',40861,40862,4,0),(21493,'47800',41037,41038,4,0),(21494,'47801',41487,41488,4,0),(21495,'47810',41559,41560,4,0),(21496,'47811',41089,41090,4,0),(21497,'47811',41313,41314,4,0),(21498,'47812',41131,41132,4,0),(21499,'47813',40749,40750,4,0),(21500,'47813',41625,41626,4,0),(21501,'47814',40683,40684,4,0),(21502,'47814',41599,41600,4,0),(21503,'47815',41531,41532,4,0),(21504,'47815',41347,41348,4,0),(21505,'47816',41039,41040,4,0),(21506,'47816',41073,41074,4,0),(21507,'47816',41429,41430,4,0),(21508,'47820',41535,41536,4,0),(21509,'47830',41355,41356,4,0),(21510,'47831',41201,41202,4,0),(21511,'47832',40789,40790,4,0),(21512,'47840',41567,41568,4,0),(21513,'47850',41619,41620,4,0),(21514,'47851',41293,41294,4,0),(21515,'47860',41629,41630,4,0),(21516,'47862',41417,41418,4,0),(21517,'47870',41351,41352,4,0),(21518,'47880',40737,40738,4,0),(21519,'47882',40837,40838,4,0),(21520,'47883',41645,41646,4,0),(21521,'48001',41801,41802,4,0),(21522,'48002',41803,41804,4,0),(21523,'48003',41729,41730,4,0),(21524,'48003',41805,41806,4,0),(21525,'48004',41807,41808,4,0),(21526,'48005',41809,41810,4,0),(21527,'48006',41811,41812,4,0),(21528,'48007',41813,41814,4,0),(21529,'48008',41815,41816,4,0),(21530,'48009',41817,41818,4,0),(21531,'48010',41819,41820,4,0),(21532,'48011',41821,41822,4,0),(21533,'48012',41823,41824,4,0),(21534,'48013',41825,41826,4,0),(21535,'48014',41827,41828,4,0),(21536,'48015',41829,41830,4,0),(21537,'48100',42067,42068,4,0),(21538,'48110',41913,41914,4,0),(21539,'48111',41999,42000,4,0),(21540,'48112',42043,42044,4,0),(21541,'48113',41905,41906,4,0),(21542,'48114',41725,41726,4,0),(21543,'48115',42059,42060,4,0),(21544,'48116',41893,41894,4,0),(21545,'48120',42047,42048,4,0),(21546,'48120',42069,42070,4,0),(21547,'48130',41753,41754,4,0),(21548,'48140',41703,41704,4,0),(21549,'48140',41965,41966,4,0),(21550,'48141',41843,41844,4,0),(21551,'48142',41735,41736,4,0),(21552,'48143',41707,41708,4,0),(21553,'48144',42201,42202,4,0),(21554,'48145',42155,42156,4,0),(21555,'48150',42129,42130,4,0),(21556,'48160',42163,42164,4,0),(21557,'48160',41837,41838,4,0),(21558,'48170',42193,42194,4,0),(21559,'48170',41839,41840,4,0),(21560,'48180',42023,42024,4,0),(21561,'48190',42137,42138,4,0),(21562,'48191',41901,41902,4,0),(21563,'48191',42139,42140,4,0),(21564,'48192',41941,41942,4,0),(21565,'48194',41943,41944,4,0),(21566,'48195',41995,41996,4,0),(21567,'48196',42019,42020,4,0),(21568,'48200',41909,41910,4,0),(21569,'48200',41847,41848,4,0),(21570,'48210',42109,42110,4,0),(21571,'48212',42031,42032,4,0),(21572,'48213',41977,41978,4,0),(21573,'48215',41973,41974,4,0),(21574,'48220',41671,41672,4,0),(21575,'48230',41861,41862,4,0),(21576,'48240',41795,41796,4,0),(21577,'48249',41797,41798,4,0),(21578,'48250',42181,42182,4,0),(21579,'48260',41873,41874,4,0),(21580,'48269',42027,42028,4,0),(21581,'48270',42035,42036,4,0),(21582,'48276',42037,42038,4,0),(21583,'48277',41885,41886,4,0),(21584,'48278',42213,42214,4,0),(21585,'48278',42039,42040,4,0),(21586,'48280',42007,42008,4,0),(21587,'48287',41851,41852,4,0),(21588,'48288',41969,41970,4,0),(21589,'48289',41695,41696,4,0),(21590,'48289',42055,42056,4,0),(21591,'48289',41937,41938,4,0),(21592,'48291',41743,41744,4,0),(21593,'48292',41745,41746,4,0),(21594,'48300',41921,41922,4,0),(21595,'48309',41877,41878,4,0),(21596,'48310',41857,41858,4,0),(21597,'48311',41853,41854,4,0),(21598,'48311',41961,41962,4,0),(21599,'48312',42091,42092,4,0),(21600,'48313',41869,41870,4,0),(21601,'48314',41917,41918,4,0),(21602,'48315',41987,41988,4,0),(21603,'48320',41681,41682,4,0),(21604,'48330',42011,42012,4,0),(21605,'48340',41689,41690,4,0),(21606,'48348',41691,41692,4,0),(21607,'48350',41833,41834,4,0),(21608,'48360',42063,42064,4,0),(21609,'48370',41787,41788,4,0),(21610,'48380',41749,41750,4,0),(21611,'48381',42073,42074,4,0),(21612,'48382',42051,42052,4,0),(21613,'48383',41717,41718,4,0),(21614,'48390',41719,41720,4,0),(21615,'48390',41779,41780,4,0),(21616,'48391',41721,41722,4,0),(21617,'48391',42085,42086,4,0),(21618,'48392',42087,42088,4,0),(21619,'48393',41889,41890,4,0),(21620,'48394',42077,42078,4,0),(21621,'48395',42147,42148,4,0),(21622,'48410',42099,42100,4,0),(21623,'48419',42101,42102,4,0),(21624,'48450',41881,41882,4,0),(21625,'48460',42169,42170,4,0),(21626,'48480',42197,42198,4,0),(21627,'48480',41731,41732,4,0),(21628,'48490',42159,42160,4,0),(21629,'48498',41711,41712,4,0),(21630,'48498',41699,41700,4,0),(21631,'48498',42171,42172,4,0),(21632,'48499',41713,41714,4,0),(21633,'48499',42205,42206,4,0),(21634,'48500',41675,41676,4,0),(21635,'48508',42209,42210,4,0),(21636,'48510',42175,42176,4,0),(21637,'48520',42177,42178,4,0),(21638,'48530',42105,42106,4,0),(21639,'48540',41677,41678,4,0),(21640,'48550',42081,42082,4,0),(21641,'48600',42133,42134,4,0),(21642,'48610',42165,42166,4,0),(21643,'48620',42113,42114,4,0),(21644,'48620',41947,41948,4,0),(21645,'48620',42015,42016,4,0),(21646,'48630',41949,41950,4,0),(21647,'48640',41783,41784,4,0),(21648,'48650',41771,41772,4,0),(21649,'48700',42095,42096,4,0),(21650,'48710',41791,41792,4,0),(21651,'48800',41757,41758,4,0),(21652,'48810',41685,41686,4,0),(21653,'48820',41953,41954,4,0),(21654,'48830',41955,41956,4,0),(21655,'48840',41957,41958,4,0),(21656,'48850',42185,42186,4,0),(21657,'48860',42187,42188,4,0),(21658,'48869',42141,42142,4,0),(21659,'48869',42189,42190,4,0),(21660,'48870',42143,42144,4,0),(21661,'48879',41739,41740,4,0),(21662,'48880',42151,42152,4,0),(21663,'48890',41981,41982,4,0),(21664,'48891',41983,41984,4,0),(21665,'48895',41991,41992,4,0),(21666,'48901',41761,41762,4,0),(21667,'48902',41763,41764,4,0),(21668,'48903',41765,41766,4,0),(21669,'48910',42125,42126,4,0),(21670,'48920',42117,42118,4,0),(21671,'48930',41925,41926,4,0),(21672,'48940',42003,42004,4,0),(21673,'48950',41865,41866,4,0),(21674,'48960',41897,41898,4,0),(21675,'48970',41775,41776,4,0),(21676,'48980',42121,42122,4,0),(21677,'48990',41927,41928,4,0),(21678,'48991',41929,41930,4,0),(21679,'48992',41931,41932,4,0),(21680,'48993',41933,41934,4,0),(21681,'49001',43469,43470,4,0),(21682,'49002',43471,43472,4,0),(21683,'49003',43473,43474,4,0),(21684,'49004',43475,43476,4,0),(21685,'49005',43477,43478,4,0),(21686,'49006',43479,43480,4,0),(21687,'49007',43481,43482,4,0),(21688,'49008',43483,43484,4,0),(21689,'49009',43485,43486,4,0),(21690,'49010',43487,43488,4,0),(21691,'49011',43489,43490,4,0),(21692,'49012',43491,43492,4,0),(21693,'49013',43493,43494,4,0),(21694,'49014',43495,43496,4,0),(21695,'49015',43497,43498,4,0),(21696,'49016',43499,43500,4,0),(21697,'49017',43501,43502,4,0),(21698,'49018',43503,43504,4,0),(21699,'49019',43505,43506,4,0),(21700,'49020',43507,43508,4,0),(21701,'49021',43509,43510,4,0),(21702,'49022',43511,43512,4,0),(21703,'49023',43513,43514,4,0),(21704,'49024',43515,43516,4,0),(21705,'49025',43517,43518,4,0),(21706,'49026',43519,43520,4,0),(21707,'49027',43521,43522,4,0),(21708,'49028',43523,43524,4,0),(21709,'49029',43525,43526,4,0),(21710,'49030',43527,43528,4,0),(21711,'49031',43529,43530,4,0),(21712,'49032',43531,43532,4,0),(21713,'49100',43401,43402,4,0),(21714,'49110',42407,42408,4,0),(21715,'49120',42759,42760,4,0),(21716,'49121',42767,42768,4,0),(21717,'49121',42775,42776,4,0),(21718,'49122',43233,43234,4,0),(21719,'49123',42313,42314,4,0),(21720,'49124',42283,42284,4,0),(21721,'49125',42419,42420,4,0),(21722,'49126',43347,43348,4,0),(21723,'49126',42275,42276,4,0),(21724,'49127',42947,42948,4,0),(21725,'49127',42403,42404,4,0),(21726,'49128',42375,42376,4,0),(21727,'49129',43433,43434,4,0),(21728,'49129',43121,43122,4,0),(21729,'49130',42709,42710,4,0),(21730,'49131',43371,43372,4,0),(21731,'49132',43405,43406,4,0),(21732,'49133',43285,43286,4,0),(21733,'49134',43355,43356,4,0),(21734,'49135',43093,43094,4,0),(21735,'49135',43301,43302,4,0),(21736,'49135',43037,43038,4,0),(21737,'49136',43329,43330,4,0),(21738,'49137',43441,43442,4,0),(21739,'49137',43331,43332,4,0),(21740,'49140',43211,43212,4,0),(21741,'49141',42507,42508,4,0),(21742,'49142',42863,42864,4,0),(21743,'49143',42935,42936,4,0),(21744,'49144',43097,43098,4,0),(21745,'49145',42925,42926,4,0),(21746,'49145',43171,43172,4,0),(21747,'49146',42849,42850,4,0),(21748,'49147',42851,42852,4,0),(21749,'49148',42979,42980,4,0),(21750,'49148',42821,42822,4,0),(21751,'49149',42779,42780,4,0),(21752,'49150',42791,42792,4,0),(21753,'49151',42259,42260,4,0),(21754,'49151',42391,42392,4,0),(21755,'49151',42619,42620,4,0),(21756,'49152',43207,43208,4,0),(21757,'49153',43293,43294,4,0),(21758,'49154',42475,42476,4,0),(21759,'49155',42655,42656,4,0),(21760,'49156',42635,42636,4,0),(21761,'49157',42689,42690,4,0),(21762,'49158',43343,43344,4,0),(21763,'49159',43419,43420,4,0),(21764,'49160',42379,42380,4,0),(21765,'49161',43173,43174,4,0),(21766,'49162',42875,42876,4,0),(21767,'49162',42255,42256,4,0),(21768,'49163',42731,42732,4,0),(21769,'49164',42833,42834,4,0),(21770,'49164',43305,43306,4,0),(21771,'49165',42835,42836,4,0),(21772,'49165',43307,43308,4,0),(21773,'49166',43351,43352,4,0),(21774,'49167',42837,42838,4,0),(21775,'49170',42479,42480,4,0),(21776,'49171',42905,42906,4,0),(21777,'49172',42907,42908,4,0),(21778,'49173',42909,42910,4,0),(21779,'49174',42911,42912,4,0),(21780,'49174',42555,42556,4,0),(21781,'49176',42893,42894,4,0),(21782,'49177',42237,42238,4,0),(21783,'49177',42787,42788,4,0),(21784,'49177',42895,42896,4,0),(21785,'49177',42249,42250,4,0),(21786,'49178',42897,42898,4,0),(21787,'49180',42245,42246,4,0),(21788,'49181',43445,43446,4,0),(21789,'49182',43137,43138,4,0),(21790,'49183',43139,43140,4,0),(21791,'49190',42807,42808,4,0),(21792,'49191',42411,42412,4,0),(21793,'49191',42645,42646,4,0),(21794,'49191',42889,42890,4,0),(21795,'49191',42809,42810,4,0),(21796,'49192',42659,42660,4,0),(21797,'49192',43055,43056,4,0),(21798,'49192',43261,43262,4,0),(21799,'49193',43533,43534,4,0),(21800,'49200',42317,42318,4,0),(21801,'49210',42251,42252,4,0),(21802,'49211',42319,42320,4,0),(21803,'49211',42383,42384,4,0),(21804,'49211',43085,43086,4,0),(21805,'49211',43069,43070,4,0),(21806,'49212',42841,42842,4,0),(21807,'49213',42511,42512,4,0),(21808,'49214',42513,42514,4,0),(21809,'49215',42321,42322,4,0),(21810,'49215',42685,42686,4,0),(21811,'49216',42323,42324,4,0),(21812,'49216',42557,42558,4,0),(21813,'49220',42517,42518,4,0),(21814,'49230',43409,43410,4,0),(21815,'49231',43411,43412,4,0),(21816,'49232',43413,43414,4,0),(21817,'49240',43415,43416,4,0),(21818,'49250',43429,43430,4,0),(21819,'49250',43321,43322,4,0),(21820,'49251',42267,42268,4,0),(21821,'49251',42615,42616,4,0),(21822,'49252',43229,43230,4,0),(21823,'49253',42813,42814,4,0),(21824,'49254',42783,42784,4,0),(21825,'49255',42325,42326,4,0),(21826,'49260',42327,42328,4,0),(21827,'49270',42913,42914,4,0),(21828,'49271',42915,42916,4,0),(21829,'49272',42917,42918,4,0),(21830,'49280',42919,42920,4,0),(21831,'49281',42921,42922,4,0),(21832,'49300',42987,42988,4,0),(21833,'49310',42769,42770,4,0),(21834,'49317',42423,42424,4,0),(21835,'49317',42725,42726,4,0),(21836,'49318',42901,42902,4,0),(21837,'49318',43047,43048,4,0),(21838,'49318',42771,42772,4,0),(21839,'49319',42727,42728,4,0),(21840,'49319',42825,42826,4,0),(21841,'49320',42867,42868,4,0),(21842,'49320',43059,43060,4,0),(21843,'49321',42869,42870,4,0),(21844,'49321',43061,43062,4,0),(21845,'49322',43073,43074,4,0),(21846,'49322',42871,42872,4,0),(21847,'49323',43075,43076,4,0),(21848,'49324',42287,42288,4,0),(21849,'49324',43077,43078,4,0),(21850,'49325',42289,42290,4,0),(21851,'49325',42425,42426,4,0),(21852,'49326',43049,43050,4,0),(21853,'49327',42763,42764,4,0),(21854,'49327',42459,42460,4,0),(21855,'49327',43253,43254,4,0),(21856,'49330',43051,43052,4,0),(21857,'49330',43277,43278,4,0),(21858,'49331',42359,42360,4,0),(21859,'49331',43279,43280,4,0),(21860,'49332',42363,42364,4,0),(21861,'49332',43281,43282,4,0),(21862,'49333',43181,43182,4,0),(21863,'49333',42995,42996,4,0),(21864,'49333',43397,43398,4,0),(21865,'49334',42521,42522,4,0),(21866,'49335',42523,42524,4,0),(21867,'49335',42527,42528,4,0),(21868,'49336',42857,42858,4,0),(21869,'49337',42859,42860,4,0),(21870,'49337',42529,42530,4,0),(21871,'49340',42649,42650,4,0),(21872,'49341',42495,42496,4,0),(21873,'49341',42827,42828,4,0),(21874,'49342',42497,42498,4,0),(21875,'49342',43079,43080,4,0),(21876,'49343',42651,42652,4,0),(21877,'49344',42829,42830,4,0),(21878,'49345',42499,42500,4,0),(21879,'49346',42501,42502,4,0),(21880,'49347',42503,42504,4,0),(21881,'49348',42291,42292,4,0),(21882,'49349',43081,43082,4,0),(21883,'49350',42589,42590,4,0),(21884,'49352',42591,42592,4,0),(21885,'49357',43063,43064,4,0),(21886,'49357',43113,43114,4,0),(21887,'49358',43247,43248,4,0),(21888,'49358',43115,43116,4,0),(21889,'49359',43249,43250,4,0),(21890,'49359',43117,43118,4,0),(21891,'49360',42593,42594,4,0),(21892,'49361',42595,42596,4,0),(21893,'49362',42597,42598,4,0),(21894,'49390',43065,43066,4,0),(21895,'49390',42989,42990,4,0),(21896,'49391',42879,42880,4,0),(21897,'49392',42881,42882,4,0),(21898,'49393',42991,42992,4,0),(21899,'49394',42429,42430,4,0),(21900,'49394',43033,43034,4,0),(21901,'49395',42431,42432,4,0),(21902,'49395',42599,42600,4,0),(21903,'49396',42433,42434,4,0),(21904,'49400',42577,42578,4,0),(21905,'49410',42569,42570,4,0),(21906,'49419',42395,42396,4,0),(21907,'49420',43257,43258,4,0),(21908,'49430',43325,43326,4,0),(21909,'49440',42371,42372,4,0),(21910,'49450',43273,43274,4,0),(21911,'49500',42223,42224,4,0),(21912,'49510',37839,37840,4,0),(21913,'49511',37841,37842,4,0),(21914,'49512',37843,37844,4,0),(21915,'49512',42607,42608,4,0),(21916,'49512',43019,43020,4,0),(21917,'49513',37845,37846,4,0),(21918,'49513',43089,43090,4,0),(21919,'49514',37847,37848,4,0),(21920,'49514',42225,42226,4,0),(21921,'49514',42943,42944,4,0),(21922,'49515',43461,43462,4,0),(21923,'49515',43025,43026,4,0),(21924,'49516',43237,43238,4,0),(21925,'49517',43239,43240,4,0),(21926,'49517',43463,43464,4,0),(21927,'49517',42227,42228,4,0),(21928,'49518',42229,42230,4,0),(21929,'49518',43027,43028,4,0),(21930,'49518',43241,43242,4,0),(21931,'49519',43243,43244,4,0),(21932,'49519',43021,43022,4,0),(21933,'49520',42539,42540,4,0),(21934,'49521',42541,42542,4,0),(21935,'49522',42693,42694,4,0),(21936,'49523',43147,43148,4,0),(21937,'49524',43149,43150,4,0),(21938,'49524',43465,43466,4,0),(21939,'49525',43029,43030,4,0),(21940,'49525',43151,43152,4,0),(21941,'49530',42441,42442,4,0),(21942,'49539',42603,42604,4,0),(21943,'49539',43367,43368,4,0),(21944,'49539',42241,42242,4,0),(21945,'49540',42533,42534,4,0),(21946,'49540',42673,42674,4,0),(21947,'49540',42853,42854,4,0),(21948,'49541',42667,42668,4,0),(21949,'49542',43289,43290,4,0),(21950,'49542',42609,42610,4,0),(21951,'49543',42669,42670,4,0),(21952,'49550',42535,42536,4,0),(21953,'49559',42611,42612,4,0),(21954,'49560',42695,42696,4,0),(21955,'49561',42697,42698,4,0),(21956,'49562',43423,43424,4,0),(21957,'49563',43425,43426,4,0),(21958,'49570',42677,42678,4,0),(21959,'49571',42639,42640,4,0),(21960,'49572',42641,42642,4,0),(21961,'49573',42679,42680,4,0),(21962,'49574',42681,42682,4,0),(21963,'49580',42929,42930,4,0),(21964,'49582',42931,42932,4,0),(21965,'49583',42955,42956,4,0),(21966,'49590',42739,42740,4,0),(21967,'49590',42551,42552,4,0),(21968,'49591',43041,43042,4,0),(21969,'49592',43143,43144,4,0),(21970,'49592',43043,43044,4,0),(21971,'49593',42719,42720,4,0),(21972,'49594',42721,42722,4,0),(21973,'49600',42309,42310,4,0),(21974,'49610',43191,43192,4,0),(21975,'49610',42295,42296,4,0),(21976,'49618',42565,42566,4,0),(21977,'49618',43339,43340,4,0),(21978,'49618',43193,43194,4,0),(21979,'49619',42297,42298,4,0),(21980,'49619',43195,43196,4,0),(21981,'49620',43163,43164,4,0),(21982,'49621',42629,42630,4,0),(21983,'49621',43197,43198,4,0),(21984,'49622',43199,43200,4,0),(21985,'49622',43001,43002,4,0),(21986,'49622',43013,43014,4,0),(21987,'49622',42343,42344,4,0),(21988,'49622',42631,42632,4,0),(21989,'49623',43015,43016,4,0),(21990,'49623',43379,43380,4,0),(21991,'49624',43185,43186,4,0),(21992,'49624',42751,42752,4,0),(21993,'49625',43187,43188,4,0),(21994,'49626',42365,42366,4,0),(21995,'49626',43167,43168,4,0),(21996,'49626',42747,42748,4,0),(21997,'49627',42367,42368,4,0),(21998,'49628',43133,43134,4,0),(21999,'49629',42339,42340,4,0),(22000,'49630',43363,43364,4,0),(22001,'49638',43009,43010,4,0),(22002,'49638',42983,42984,4,0),(22003,'49639',42451,42452,4,0),(22004,'49639',43215,43216,4,0),(22005,'49639',43005,43006,4,0),(22006,'49640',42415,42416,4,0),(22007,'49650',43109,43110,4,0),(22008,'49660',43387,43388,4,0),(22009,'49660',42399,42400,4,0),(22010,'49670',42573,42574,4,0),(22011,'49680',43269,43270,4,0),(22012,'49680',43129,43130,4,0),(22013,'49690',43103,43104,4,0),(22014,'49691',43105,43106,4,0),(22015,'49692',42735,42736,4,0),(22016,'49693',42795,42796,4,0),(22017,'49693',42547,42548,4,0),(22018,'49694',42715,42716,4,0),(22019,'49695',43335,43336,4,0),(22020,'49696',42279,42280,4,0),(22021,'49696',42233,42234,4,0),(22022,'49696',43177,43178,4,0),(22023,'49697',43381,43382,4,0),(22024,'49697',42845,42846,4,0),(22025,'49697',42803,42804,4,0),(22026,'49697',43453,43454,4,0),(22027,'49697',42997,42998,4,0),(22028,'49698',42335,42336,4,0),(22029,'49698',42561,42562,4,0),(22030,'49698',43383,43384,4,0),(22031,'49698',42347,42348,4,0),(22032,'49699',42755,42756,4,0),(22033,'49699',43159,43160,4,0),(22034,'49699',43389,43390,4,0),(22035,'49699',42263,42264,4,0),(22036,'49700',42445,42446,4,0),(22037,'49706',42447,42448,4,0),(22038,'49707',43155,43156,4,0),(22039,'49708',42387,42388,4,0),(22040,'49708',43393,43394,4,0),(22041,'49709',42355,42356,4,0),(22042,'49710',42467,42468,4,0),(22043,'49714',42585,42586,4,0),(22044,'49715',42487,42488,4,0),(22045,'49716',42271,42272,4,0),(22046,'49717',43125,43126,4,0),(22047,'49717',42463,42464,4,0),(22048,'49718',42743,42744,4,0),(22049,'49719',43375,43376,4,0),(22050,'49719',42471,42472,4,0),(22051,'49720',42481,42482,4,0),(22052,'49721',42491,42492,4,0),(22053,'49722',42483,42484,4,0),(22054,'49730',42455,42456,4,0),(22055,'49731',42817,42818,4,0),(22056,'49740',42623,42624,4,0),(22057,'49741',42625,42626,4,0),(22058,'49742',42711,42712,4,0),(22059,'49743',43099,43100,4,0),(22060,'49750',43203,43204,4,0),(22061,'49751',42331,42332,4,0),(22062,'49760',42301,42302,4,0),(22063,'49760',43457,43458,4,0),(22064,'49770',43311,43312,4,0),(22065,'49780',42951,42952,4,0),(22066,'49781',42663,42664,4,0),(22067,'49782',43313,43314,4,0),(22068,'49783',42437,42438,4,0),(22069,'49783',42701,42702,4,0),(22070,'49800',43219,43220,4,0),(22071,'49810',42799,42800,4,0),(22072,'49820',43317,43318,4,0),(22073,'49820',43221,43222,4,0),(22074,'49830',42305,42306,4,0),(22075,'49831',42351,42352,4,0),(22076,'49832',42705,42706,4,0),(22077,'49833',42581,42582,4,0),(22078,'49834',42219,42220,4,0),(22079,'49835',42975,42976,4,0),(22080,'49836',43223,43224,4,0),(22081,'49840',43297,43298,4,0),(22082,'49850',42939,42940,4,0),(22083,'49860',43359,43360,4,0),(22084,'49870',43449,43450,4,0),(22085,'49871',43437,43438,4,0),(22086,'49880',42885,42886,4,0),(22087,'49881',43225,43226,4,0),(22088,'49882',43265,43266,4,0),(22089,'50001',44779,44780,4,0),(22090,'50002',44781,44782,4,0),(22091,'50003',44783,44784,4,0),(22092,'50004',44785,44786,4,0),(22093,'50005',44787,44788,4,0),(22094,'50006',44789,44790,4,0),(22095,'50007',44791,44792,4,0),(22096,'50008',44793,44794,4,0),(22097,'50009',44795,44796,4,0),(22098,'50010',44797,44798,4,0),(22099,'50011',44799,44800,4,0),(22100,'50012',44801,44802,4,0),(22101,'50013',44803,44804,4,0),(22102,'50014',44805,44806,4,0),(22103,'50015',44807,44808,4,0),(22104,'50016',44809,44810,4,0),(22105,'50017',44811,44812,4,0),(22106,'50018',44813,44814,4,0),(22107,'50019',44815,44816,4,0),(22108,'50020',44817,44818,4,0),(22109,'50021',44819,44820,4,0),(22110,'50022',44821,44822,4,0),(22111,'50057',44823,44824,4,0),(22112,'50059',44825,44826,4,0),(22113,'50100',44065,44066,4,0),(22114,'50108',43629,43630,4,0),(22115,'50109',43633,43634,4,0),(22116,'50120',44827,44828,4,0),(22117,'50130',43709,43710,4,0),(22118,'50131',44115,44116,4,0),(22119,'50132',43879,43880,4,0),(22120,'50133',43625,43626,4,0),(22121,'50134',44093,44094,4,0),(22122,'50134',44511,44512,4,0),(22123,'50135',44233,44234,4,0),(22124,'50135',43995,43996,4,0),(22125,'50136',44127,44128,4,0),(22126,'50137',44451,44452,4,0),(22127,'50138',44691,44692,4,0),(22128,'50139',44829,44830,4,0),(22129,'50140',43685,43686,4,0),(22130,'50141',44057,44058,4,0),(22131,'50142',43991,43992,4,0),(22132,'50143',44429,44430,4,0),(22133,'50143',44297,44298,4,0),(22134,'50144',44261,44262,4,0),(22135,'50150',44033,44034,4,0),(22136,'50151',44171,44172,4,0),(22137,'50152',44245,44246,4,0),(22138,'50153',44747,44748,4,0),(22139,'50154',44647,44648,4,0),(22140,'50155',43555,43556,4,0),(22141,'50156',44755,44756,4,0),(22142,'50160',44123,44124,4,0),(22143,'50160',44073,44074,4,0),(22144,'50161',44405,44406,4,0),(22145,'50162',44739,44740,4,0),(22146,'50163',43967,43968,4,0),(22147,'50164',44257,44258,4,0),(22148,'50170',44079,44080,4,0),(22149,'50170',44237,44238,4,0),(22150,'50171',44081,44082,4,0),(22151,'50172',43605,43606,4,0),(22152,'50173',44357,44358,4,0),(22153,'50174',44727,44728,4,0),(22154,'50175',44381,44382,4,0),(22155,'50177',43765,43766,4,0),(22156,'50178',44061,44062,4,0),(22157,'50180',44679,44680,4,0),(22158,'50190',44831,44832,4,0),(22159,'50191',44833,44834,4,0),(22160,'50193',44835,44836,4,0),(22161,'50194',44837,44838,4,0),(22162,'50195',44397,44398,4,0),(22163,'50196',44075,44076,4,0),(22164,'50200',43681,43682,4,0),(22165,'50210',44351,44352,4,0),(22166,'50211',43835,43836,4,0),(22167,'50212',43817,43818,4,0),(22168,'50213',44353,44354,4,0),(22169,'50213',43867,43868,4,0),(22170,'50213',44271,44272,4,0),(22171,'50214',43813,43814,4,0),(22172,'50215',44293,44294,4,0),(22173,'50216',44735,44736,4,0),(22174,'50217',44643,44644,4,0),(22175,'50219',44085,44086,4,0),(22176,'50219',44311,44312,4,0),(22177,'50219',44699,44700,4,0),(22178,'50220',43665,43666,4,0),(22179,'50227',44563,44564,4,0),(22180,'50228',43781,43782,4,0),(22181,'50229',43745,43746,4,0),(22182,'50230',43617,43618,4,0),(22183,'50236',44037,44038,4,0),(22184,'50237',44049,44050,4,0),(22185,'50238',44017,44018,4,0),(22186,'50238',43809,43810,4,0),(22187,'50239',43761,43762,4,0),(22188,'50239',43939,43940,4,0),(22189,'50239',43887,43888,4,0),(22190,'50240',44287,44288,4,0),(22191,'50240',43785,43786,4,0),(22192,'50246',43757,43758,4,0),(22193,'50247',44289,44290,4,0),(22194,'50248',44547,44548,4,0),(22195,'50249',44549,44550,4,0),(22196,'50250',44041,44042,4,0),(22197,'50257',44021,44022,4,0),(22198,'50258',44377,44378,4,0),(22199,'50258',44053,44054,4,0),(22200,'50259',43653,43654,4,0),(22201,'50259',44433,44434,4,0),(22202,'50260',44279,44280,4,0),(22203,'50266',43657,43658,4,0),(22204,'50267',44241,44242,4,0),(22205,'50268',44655,44656,4,0),(22206,'50268',43805,43806,4,0),(22207,'50268',44459,44460,4,0),(22208,'50269',44607,44608,4,0),(22209,'50269',43863,43864,4,0),(22210,'50269',44331,44332,4,0),(22211,'50270',44475,44476,4,0),(22212,'50280',43801,43802,4,0),(22213,'50290',43947,43948,4,0),(22214,'50291',44267,44268,4,0),(22215,'50292',43855,43856,4,0),(22216,'50293',44603,44604,4,0),(22217,'50294',44159,44160,4,0),(22218,'50294',44503,44504,4,0),(22219,'50295',44485,44486,4,0),(22220,'50295',44175,44176,4,0),(22221,'50296',43705,43706,4,0),(22222,'50296',44667,44668,4,0),(22223,'50296',44421,44422,4,0),(22224,'50297',44029,44030,4,0),(22225,'50297',44425,44426,4,0),(22226,'50297',43701,43702,4,0),(22227,'50298',44417,44418,4,0),(22228,'50299',44393,44394,4,0),(22229,'50299',43791,43792,4,0),(22230,'50299',44493,44494,4,0),(22231,'50300',43793,43794,4,0),(22232,'50310',44765,44766,4,0),(22233,'50311',44619,44620,4,0),(22234,'50312',43847,43848,4,0),(22235,'50313',43645,43646,4,0),(22236,'50314',43875,43876,4,0),(22237,'50315',44197,44198,4,0),(22238,'50316',44631,44632,4,0),(22239,'50316',43717,43718,4,0),(22240,'50316',43729,43730,4,0),(22241,'50320',43929,43930,4,0),(22242,'50321',43931,43932,4,0),(22243,'50322',43933,43934,4,0),(22244,'50323',43935,43936,4,0),(22245,'50324',44523,44524,4,0),(22246,'50325',44611,44612,4,0),(22247,'50326',43883,43884,4,0),(22248,'50330',44253,44254,4,0),(22249,'50331',44369,44370,4,0),(22250,'50331',44221,44222,4,0),(22251,'50331',44489,44490,4,0),(22252,'50332',43713,43714,4,0),(22253,'50333',44731,44732,4,0),(22254,'50334',44543,44544,4,0),(22255,'50335',43795,43796,4,0),(22256,'50336',43797,43798,4,0),(22257,'50340',44213,44214,4,0),(22258,'50341',44361,44362,4,0),(22259,'50342',44389,44390,4,0),(22260,'50343',44707,44708,4,0),(22261,'50344',44283,44284,4,0),(22262,'50345',43573,43574,4,0),(22263,'50346',43831,43832,4,0),(22264,'50347',43543,43544,4,0),(22265,'50348',43677,43678,4,0),(22266,'50351',43899,43900,4,0),(22267,'50360',43903,43904,4,0),(22268,'50366',44365,44366,4,0),(22269,'50366',44217,44218,4,0),(22270,'50366',43697,43698,4,0),(22271,'50366',44315,44316,4,0),(22272,'50367',44471,44472,4,0),(22273,'50367',44097,44098,4,0),(22274,'50368',43851,43852,4,0),(22275,'50368',44769,44770,4,0),(22276,'50368',44193,44194,4,0),(22277,'50368',44623,44624,4,0),(22278,'50369',44119,44120,4,0),(22279,'50369',43641,43642,4,0),(22280,'50369',44335,44336,4,0),(22281,'50370',44751,44752,4,0),(22282,'50371',44687,44688,4,0),(22283,'50372',44683,44684,4,0),(22284,'50373',44101,44102,4,0),(22285,'50373',44005,44006,4,0),(22286,'50373',44535,44536,4,0),(22287,'50373',43721,43722,4,0),(22288,'50374',44615,44616,4,0),(22289,'50374',43601,43602,4,0),(22290,'50374',44675,44676,4,0),(22291,'50375',43539,43540,4,0),(22292,'50390',44001,44002,4,0),(22293,'50391',44275,44276,4,0),(22294,'50391',44723,44724,4,0),(22295,'50400',43821,43822,4,0),(22296,'50408',43551,43552,4,0),(22297,'50409',43891,43892,4,0),(22298,'50410',43895,43896,4,0),(22299,'50420',43787,43788,4,0),(22300,'50430',44225,44226,4,0),(22301,'50440',44301,44302,4,0),(22302,'50441',43753,43754,4,0),(22303,'50450',44305,44306,4,0),(22304,'50460',44143,44144,4,0),(22305,'50461',43609,43610,4,0),(22306,'50470',43943,43944,4,0),(22307,'50480',44385,44386,4,0),(22308,'50481',43563,43564,4,0),(22309,'50482',44773,44774,4,0),(22310,'50490',44761,44762,4,0),(22311,'50490',44719,44720,4,0),(22312,'50491',43979,43980,4,0),(22313,'50491',43689,43690,4,0),(22314,'50491',44481,44482,4,0),(22315,'50500',44589,44590,4,0),(22316,'50510',44343,44344,4,0),(22317,'50511',44209,44210,4,0),(22318,'50512',44757,44758,4,0),(22319,'50512',44635,44636,4,0),(22320,'50513',44527,44528,4,0),(22321,'50513',44591,44592,4,0),(22322,'50513',44715,44716,4,0),(22323,'50513',44025,44026,4,0),(22324,'50513',44151,44152,4,0),(22325,'50514',44593,44594,4,0),(22326,'50520',44189,44190,4,0),(22327,'50529',43987,43988,4,0),(22328,'50529',44441,44442,4,0),(22329,'50529',43577,43578,4,0),(22330,'50530',44347,44348,4,0),(22331,'50540',44307,44308,4,0),(22332,'50540',43749,43750,4,0),(22333,'50546',44585,44586,4,0),(22334,'50546',43637,43638,4,0),(22335,'50546',43769,43770,4,0),(22336,'50547',43773,43774,4,0),(22337,'50547',44581,44582,4,0),(22338,'50548',43921,43922,4,0),(22339,'50549',44201,44202,4,0),(22340,'50549',43581,43582,4,0),(22341,'50550',44205,44206,4,0),(22342,'50560',43547,43548,4,0),(22343,'50561',43737,43738,4,0),(22344,'50562',43983,43984,4,0),(22345,'50570',43559,43560,4,0),(22346,'50580',44711,44712,4,0),(22347,'50581',44135,44136,4,0),(22348,'50582',44131,44132,4,0),(22349,'50582',44775,44776,4,0),(22350,'50583',44651,44652,4,0),(22351,'50584',44515,44516,4,0),(22352,'50590',43949,43950,4,0),(22353,'50590',43649,43650,4,0),(22354,'50591',43593,43594,4,0),(22355,'50600',43907,43908,4,0),(22356,'50610',44179,44180,4,0),(22357,'50610',44105,44106,4,0),(22358,'50611',43925,43926,4,0),(22359,'50611',43953,43954,4,0),(22360,'50612',44553,44554,4,0),(22361,'50612',44107,44108,4,0),(22362,'50613',43839,43840,4,0),(22363,'50614',43661,43662,4,0),(22364,'50614',44455,44456,4,0),(22365,'50615',44181,44182,4,0),(22366,'50615',44695,44696,4,0),(22367,'50616',44409,44410,4,0),(22368,'50616',44229,44230,4,0),(22369,'50617',43909,43910,4,0),(22370,'50619',43911,43912,4,0),(22371,'50619',43725,43726,4,0),(22372,'50619',44373,44374,4,0),(22373,'50619',44167,44168,4,0),(22374,'50619',43673,43674,4,0),(22375,'50620',44839,44840,4,0),(22376,'50629',44567,44568,4,0),(22377,'50630',43567,43568,4,0),(22378,'50637',44467,44468,4,0),(22379,'50638',43777,43778,4,0),(22380,'50639',43975,43976,4,0),(22381,'50640',44163,44164,4,0),(22382,'50641',43741,43742,4,0),(22383,'50650',44009,44010,4,0),(22384,'50660',44597,44598,4,0),(22385,'50667',44445,44446,4,0),(22386,'50668',44447,44448,4,0),(22387,'50669',44599,44600,4,0),(22388,'50670',44497,44498,4,0),(22389,'50678',44659,44660,4,0),(22390,'50679',44499,44500,4,0),(22391,'50679',44111,44112,4,0),(22392,'50680',44571,44572,4,0),(22393,'50682',44557,44558,4,0),(22394,'50683',43669,43670,4,0),(22395,'50683',44249,44250,4,0),(22396,'50683',44559,44560,4,0),(22397,'50684',44507,44508,4,0),(22398,'50685',44325,44326,4,0),(22399,'50685',44155,44156,4,0),(22400,'50685',43693,43694,4,0),(22401,'50685',44671,44672,4,0),(22402,'50686',29129,29130,4,0),(22403,'50686',44327,44328,4,0),(22404,'50687',44045,44046,4,0),(22405,'50687',44139,44140,4,0),(22406,'50688',44147,44148,4,0),(22407,'50689',44663,44664,4,0),(22408,'50689',44573,44574,4,0),(22409,'50690',44401,44402,4,0),(22410,'50691',43589,43590,4,0),(22411,'50692',44841,44842,4,0),(22412,'50692',44069,44070,4,0),(22413,'50693',44639,44640,4,0),(22414,'50694',43913,43914,4,0),(22415,'50695',43733,43734,4,0),(22416,'50696',43843,43844,4,0),(22417,'50696',44575,44576,4,0),(22418,'50697',44577,44578,4,0),(22419,'50700',43825,43826,4,0),(22420,'50709',43827,43828,4,0),(22421,'50710',44185,44186,4,0),(22422,'50720',44843,44844,4,0),(22423,'50720',44477,44478,4,0),(22424,'50730',43917,43918,4,0),(22425,'50740',43997,43998,4,0),(22426,'50750',44413,44414,4,0),(22427,'50760',44703,44704,4,0),(22428,'50770',44463,44464,4,0),(22429,'50780',44539,44540,4,0),(22430,'50781',43585,43586,4,0),(22431,'50782',43871,43872,4,0),(22432,'50783',43613,43614,4,0),(22433,'50784',44089,44090,4,0),(22434,'50786',44013,44014,4,0),(22435,'50790',43957,43958,4,0),(22436,'50791',43959,43960,4,0),(22437,'50792',43859,43860,4,0),(22438,'50793',43963,43964,4,0),(22439,'50794',44339,44340,4,0),(22440,'50795',43971,43972,4,0),(22441,'50800',44853,44854,4,0),(22442,'50810',44855,44856,4,0),(22443,'50820',44845,44846,4,0),(22444,'50830',44743,44744,4,0),(22445,'50830',43569,43570,4,0),(22446,'50830',44857,44858,4,0),(22447,'50840',44519,44520,4,0),(22448,'50850',44321,44322,4,0),(22449,'50850',44531,44532,4,0),(22461,'73820',36701,36702,4,0),(22462,'90007',44847,44848,4,0),(22463,'España exento',46842,47855,1,506),(22464,'Las Palmas',47441,47854,2,206),(22465,'Santa Cruz de Tenerife',46843,47440,2,298),(22466,'Agaete',47848,47853,3,2),(22467,'Agüimes',47836,47847,3,5),(22468,'Antigua',47824,47835,3,5),(22469,'Arrecife',47820,47823,3,1),(22470,'Artenara',47816,47819,3,1),(22471,'Arucas',47796,47815,3,9),(22472,'Betancuria',47792,47795,3,1),(22473,'Firgas',47782,47791,3,4),(22474,'Gáldar',47766,47781,3,7),(22475,'Haría',47756,47765,3,4),(22476,'Ingenio',47746,47755,3,4),(22477,'La Aldea de San Nicolás',47734,47745,3,5),(22478,'La Oliva',47722,47733,3,5),(22479,'Las Palmas de Gran Canaria',47678,47721,3,21),(22480,'Mogán',47662,47677,3,7),(22481,'Moya',47650,47661,3,5),(22482,'Pájara',47640,47649,3,4),(22483,'Puerto del Rosario',47626,47639,3,6),(22484,'San Bartolomé',47620,47625,3,2),(22485,'San Bartolomé de Tirajana',47594,47619,3,12),(22486,'Santa Brígida',47582,47593,3,5),(22487,'Santa Lucía de Tirajana',47574,47581,3,3),(22488,'Santa María de Guía de Gran Canaria',47564,47573,3,4),(22489,'Teguise',47542,47563,3,10),(22490,'Tejeda',47536,47541,3,2),(22491,'Telde',47510,47535,3,12),(22492,'Teror',47498,47509,3,5),(22493,'Tías',47490,47497,3,3),(22494,'Tinajo',47484,47489,3,2),(22495,'Tuineje',47472,47483,3,5),(22496,'Valleseco',47464,47471,3,3),(22497,'Valsequillo de Gran Canaria',47458,47463,3,2),(22498,'Vega de San Mateo',47450,47457,3,3),(22499,'Yaiza',47442,47449,3,3),(22500,'Adeje',47426,47439,3,6),(22501,'Agulo',47420,47425,3,2),(22502,'Alajeró',47410,47419,3,4),(22503,'Arafo',47404,47409,3,2),(22504,'Arico',47392,47403,3,5),(22505,'Arona',47368,47391,3,11),(22506,'Barlovento',47362,47367,3,2),(22507,'Breña Alta',47354,47361,3,3),(22508,'Breña Baja',47348,47353,3,2),(22509,'Buenavista del Norte',47340,47347,3,3),(22510,'Candelaria',47328,47339,3,5),(22511,'El Paso',47316,47327,3,5),(22512,'El Pinar de El Hierro',47310,47315,3,2),(22513,'El Rosario',47300,47309,3,4),(22514,'El Sauzal',47294,47299,3,2),(22515,'El Tanque',47290,47293,3,1),(22516,'Fasnia',47284,47289,3,2),(22517,'Frontera',47276,47283,3,3),(22518,'Fuencaliente de la Palma',47270,47275,3,2),(22519,'Garachico',47260,47269,3,4),(22520,'Garafía',47252,47259,3,3),(22521,'Granadilla de Abona',47232,47251,3,9),(22522,'Guía de Isora',47218,47231,3,6),(22523,'Güímar',47204,47217,3,6),(22524,'Hermigua',47194,47203,3,4),(22525,'Icod de los Vinos',47184,47193,3,4),(22526,'La Guancha',47176,47183,3,3),(22527,'La Matanza de Acentejo',47170,47175,3,2),(22528,'La Orotava',47154,47169,3,7),(22529,'La Victoria de Acentejo',47148,47153,3,2),(22530,'Los Llanos de Aridane',47136,47147,3,5),(22531,'Los Realejos',47116,47135,3,9),(22532,'Los Silos',47106,47115,3,4),(22533,'Puerto de la Cruz',47102,47105,3,1),(22534,'Puntagorda',47098,47101,3,1),(22535,'Puntallana',47092,47097,3,2),(22536,'San Andrés y Sauces',47086,47091,3,2),(22537,'San Cristóbal de La Laguna',47042,47085,3,21),(22538,'San Juan de la Rambla',47034,47041,3,3),(22539,'San Miguel de Abona',47024,47033,3,4),(22540,'San Sebastián de la Gomera',47016,47023,3,3),(22541,'Santa Cruz de la Palma',47004,47015,3,5),(22542,'Santa Cruz de Tenerife',46952,47003,3,25),(22543,'Santa Úrsula',46944,46951,3,3),(22544,'Santiago del Teide',46936,46943,3,3),(22545,'Tacoronte',46922,46935,3,6),(22546,'Tazacorte',46916,46921,3,2),(22547,'Tegueste',46904,46915,3,5),(22548,'Tijarafe',46898,46903,3,2),(22549,'Valle Gran Rey',46888,46897,3,4),(22550,'Vallehermoso',46872,46887,3,7),(22551,'Valverde',46862,46871,3,4),(22552,'Vilaflor de Chasna',46852,46861,3,4),(22553,'Villa de Mazo',46844,46851,3,3),(22554,'35480',47851,47852,4,0),(22555,'35489',47849,47850,4,0),(22556,'35118',47845,47846,4,0),(22557,'35119',47843,47844,4,0),(22558,'35260',47841,47842,4,0),(22559,'35269',47839,47840,4,0),(22560,'35270',47837,47838,4,0),(22561,'35369',47833,47834,4,0),(22562,'35610',47831,47832,4,0),(22563,'35630',47829,47830,4,0),(22564,'35638',47827,47828,4,0),(22565,'35639',47825,47826,4,0),(22566,'35500',47821,47822,4,0),(22567,'35350',47817,47818,4,0),(22568,'35000',47813,47814,4,0),(22569,'35400',47811,47812,4,0),(22570,'35404',47809,47810,4,0),(22571,'35411',47807,47808,4,0),(22572,'35412',47805,47806,4,0),(22573,'35413',47803,47804,4,0),(22574,'35414',47801,47802,4,0),(22575,'35415',47799,47800,4,0),(22576,'35418',47797,47798,4,0),(22577,'35637',47793,47794,4,0),(22578,'35430',47789,47790,4,0),(22579,'35431',47787,47788,4,0),(22580,'35432',47785,47786,4,0),(22581,'35435',47783,47784,4,0),(22582,'35188',47779,47780,4,0),(22583,'35420',47777,47778,4,0),(22584,'35460',47775,47776,4,0),(22585,'35468',47773,47774,4,0),(22586,'35469',47771,47772,4,0),(22587,'35488',47769,47770,4,0),(22588,'35640',47767,47768,4,0),(22589,'35520',47763,47764,4,0),(22590,'35541',47761,47762,4,0),(22591,'35542',47759,47760,4,0),(22592,'35543',47757,47758,4,0),(22593,'35000',47753,47754,4,0),(22594,'35240',47751,47752,4,0),(22595,'35250',47749,47750,4,0),(22596,'35259',47747,47748,4,0),(22597,'34570',47743,47744,4,0),(22598,'35470',47741,47742,4,0),(22599,'35478',47739,47740,4,0),(22600,'35479',47737,47738,4,0),(22601,'35579',47735,47736,4,0),(22602,'35469',47731,47732,4,0),(22603,'35640',47729,47730,4,0),(22604,'35649',47727,47728,4,0),(22605,'35650',47725,47726,4,0),(22606,'35660',47723,47724,4,0),(22607,'35001',47719,47720,4,0),(22608,'35002',47717,47718,4,0),(22609,'35003',47715,47716,4,0),(22610,'35004',47713,47714,4,0),(22611,'35005',47711,47712,4,0),(22612,'35006',47709,47710,4,0),(22613,'35007',47707,47708,4,0),(22614,'35008',47705,47706,4,0),(22615,'35009',47703,47704,4,0),(22616,'35010',47701,47702,4,0),(22617,'35011',47699,47700,4,0),(22618,'35012',47697,47698,4,0),(22619,'35013',47695,47696,4,0),(22620,'35014',47693,47694,4,0),(22621,'35015',47691,47692,4,0),(22622,'35016',47689,47690,4,0),(22623,'35017',47687,47688,4,0),(22624,'35018',47685,47686,4,0),(22625,'35019',47683,47684,4,0),(22626,'35220',47681,47682,4,0),(22627,'35229',47679,47680,4,0),(22628,'35120',47675,47676,4,0),(22629,'35129',47673,47674,4,0),(22630,'35130',47671,47672,4,0),(22631,'35138',47669,47670,4,0),(22632,'35139',47667,47668,4,0),(22633,'35140',47665,47666,4,0),(22634,'35149',47663,47664,4,0),(22635,'35413',47659,47660,4,0),(22636,'35420',47657,47658,4,0),(22637,'35421',47655,47656,4,0),(22638,'35422',47653,47654,4,0),(22639,'35423',47651,47652,4,0),(22640,'35625',47647,47648,4,0),(22641,'35626',47645,47646,4,0),(22642,'35627',47643,47644,4,0),(22643,'35628',47641,47642,4,0),(22644,'35600',47637,47638,4,0),(22645,'35610',47635,47636,4,0),(22646,'35611',47633,47634,4,0),(22647,'35612',47631,47632,4,0),(22648,'35613',47629,47630,4,0),(22649,'35637',47627,47628,4,0),(22650,'35509',47623,47624,4,0),(22651,'35550',47621,47622,4,0),(22652,'35100',47617,47618,4,0),(22653,'35106',47615,47616,4,0),(22654,'35107',47613,47614,4,0),(22655,'35108',47611,47612,4,0),(22656,'35109',47609,47610,4,0),(22657,'35119',47607,47608,4,0),(22658,'35120',47605,47606,4,0),(22659,'35128',47603,47604,4,0),(22660,'35280',47601,47602,4,0),(22661,'35290',47599,47600,4,0),(22662,'35299',47597,47598,4,0),(22663,'35369',47595,47596,4,0),(22664,'35300',47591,47592,4,0),(22665,'35307',47589,47590,4,0),(22666,'35308',47587,47588,4,0),(22667,'35309',47585,47586,4,0),(22668,'35310',47583,47584,4,0),(22669,'35000',47579,47580,4,0),(22670,'35110',47577,47578,4,0),(22671,'35280',47575,47576,4,0),(22672,'35450',47571,47572,4,0),(22673,'35457',47569,47570,4,0),(22674,'35458',47567,47568,4,0),(22675,'35540',47565,47566,4,0),(22676,'35507',47561,47562,4,0),(22677,'35508',47559,47560,4,0),(22678,'35509',47557,47558,4,0),(22679,'35530',47555,47556,4,0),(22680,'35539',47553,47554,4,0),(22681,'35540',47551,47552,4,0),(22682,'35543',47549,47550,4,0),(22683,'35544',47547,47548,4,0),(22684,'35558',47545,47546,4,0),(22685,'35561',47543,47544,4,0),(22686,'35360',47539,47540,4,0),(22687,'35368',47537,47538,4,0),(22688,'35200',47533,47534,4,0),(22689,'35210',47531,47532,4,0),(22690,'35211',47529,47530,4,0),(22691,'35212',47527,47528,4,0),(22692,'35213',47525,47526,4,0),(22693,'35214',47523,47524,4,0),(22694,'35215',47521,47522,4,0),(22695,'35218',47519,47520,4,0),(22696,'35219',47517,47518,4,0),(22697,'35220',47515,47516,4,0),(22698,'35229',47513,47514,4,0),(22699,'35259',47511,47512,4,0),(22700,'35000',47507,47508,4,0),(22701,'35330',47505,47506,4,0),(22702,'35333',47503,47504,4,0),(22703,'35338',47501,47502,4,0),(22704,'35339',47499,47500,4,0),(22705,'35510',47495,47496,4,0),(22706,'35571',47493,47494,4,0),(22707,'35572',47491,47492,4,0),(22708,'35550',47487,47488,4,0),(22709,'35560',47485,47486,4,0),(22710,'35620',47481,47482,4,0),(22711,'35627',47479,47480,4,0),(22712,'35628',47477,47478,4,0),(22713,'35629',47475,47476,4,0),(22714,'35660',47473,47474,4,0),(22715,'35000',47469,47470,4,0),(22716,'35340',47467,47468,4,0),(22717,'35349',47465,47466,4,0),(22718,'35216',47461,47462,4,0),(22719,'35217',47459,47460,4,0),(22720,'35320',47455,47456,4,0),(22721,'35328',47453,47454,4,0),(22722,'35329',47451,47452,4,0),(22723,'35370',47447,47448,4,0),(22724,'35570',47445,47446,4,0),(22725,'35580',47443,47444,4,0),(22726,'38615',47437,47438,4,0),(22727,'38660',47435,47436,4,0),(22728,'38670',47433,47434,4,0),(22729,'38677',47431,47432,4,0),(22730,'38678',47429,47430,4,0),(22731,'38679',47427,47428,4,0),(22732,'38830',47423,47424,4,0),(22733,'38890',47421,47422,4,0),(22734,'38810',47417,47418,4,0),(22735,'38811',47415,47416,4,0),(22736,'38812',47413,47414,4,0),(22737,'38813',47411,47412,4,0),(22738,'38509',47407,47408,4,0),(22739,'38550',47405,47406,4,0),(22740,'38580',47401,47402,4,0),(22741,'38588',47399,47400,4,0),(22742,'38589',47397,47398,4,0),(22743,'38592',47395,47396,4,0),(22744,'38593',47393,47394,4,0),(22745,'38626',47389,47390,4,0),(22746,'38627',47387,47388,4,0),(22747,'38630',47385,47386,4,0),(22748,'38631',47383,47384,4,0),(22749,'38632',47381,47382,4,0),(22750,'38639',47379,47380,4,0),(22751,'38640',47377,47378,4,0),(22752,'38649',47375,47376,4,0),(22753,'38650',47373,47374,4,0),(22754,'38652',47371,47372,4,0),(22755,'38660',47369,47370,4,0),(22756,'38726',47365,47366,4,0),(22757,'38727',47363,47364,4,0),(22758,'38710',47359,47360,4,0),(22759,'38712',47357,47358,4,0),(22760,'38713',47355,47356,4,0),(22761,'38711',47351,47352,4,0),(22762,'38712',47349,47350,4,0),(22763,'38479',47345,47346,4,0),(22764,'38480',47343,47344,4,0),(22765,'38489',47341,47342,4,0),(22766,'38509',47337,47338,4,0),(22767,'38510',47335,47336,4,0),(22768,'38520',47333,47334,4,0),(22769,'38530',47331,47332,4,0),(22770,'38540',47329,47330,4,0),(22771,'38750',47325,47326,4,0),(22772,'38758',47323,47324,4,0),(22773,'38759',47321,47322,4,0),(22774,'38768',47319,47320,4,0),(22775,'38769',47317,47318,4,0),(22776,'38914',47313,47314,4,0),(22777,'38917',47311,47312,4,0),(22778,'38109',47307,47308,4,0),(22779,'38190',47305,47306,4,0),(22780,'38290',47303,47304,4,0),(22781,'38510',47301,47302,4,0),(22782,'38359',47297,47298,4,0),(22783,'38360',47295,47296,4,0),(22784,'38435',47291,47292,4,0),(22785,'38570',47287,47288,4,0),(22786,'38579',47285,47286,4,0),(22787,'38911',47281,47282,4,0),(22788,'38912',47279,47280,4,0),(22789,'38913',47277,47278,4,0),(22790,'38740',47273,47274,4,0),(22791,'38749',47271,47272,4,0),(22792,'38450',47267,47268,4,0),(22793,'38458',47265,47266,4,0),(22794,'38459',47263,47264,4,0),(22795,'38460',47261,47262,4,0),(22796,'38728',47257,47258,4,0),(22797,'38787',47255,47256,4,0),(22798,'38788',47253,47254,4,0),(22799,'38594',47249,47250,4,0),(22800,'38595',47247,47248,4,0),(22801,'38600',47245,47246,4,0),(22802,'38611',47243,47244,4,0),(22803,'38612',47241,47242,4,0),(22804,'38616',47239,47240,4,0),(22805,'38617',47237,47238,4,0),(22806,'38618',47235,47236,4,0),(22807,'38639',47233,47234,4,0),(22808,'38680',47229,47230,4,0),(22809,'38685',47227,47228,4,0),(22810,'38686',47225,47226,4,0),(22811,'38687',47223,47224,4,0),(22812,'38688',47221,47222,4,0),(22813,'38689',47219,47220,4,0),(22814,'38500',47215,47216,4,0),(22815,'38508',47213,47214,4,0),(22816,'38509',47211,47212,4,0),(22817,'38560',47209,47210,4,0),(22818,'38590',47207,47208,4,0),(22819,'38591',47205,47206,4,0),(22820,'38820',47201,47202,4,0),(22821,'38829',47199,47200,4,0),(22822,'38869',47197,47198,4,0),(22823,'38890',47195,47196,4,0),(22824,'38430',47191,47192,4,0),(22825,'38434',47189,47190,4,0),(22826,'38438',47187,47188,4,0),(22827,'38439',47185,47186,4,0),(22828,'38440',47181,47182,4,0),(22829,'38441',47179,47180,4,0),(22830,'38449',47177,47178,4,0),(22831,'38370',47173,47174,4,0),(22832,'38379',47171,47172,4,0),(22833,'38300',47167,47168,4,0),(22834,'38310',47165,47166,4,0),(22835,'38311',47163,47164,4,0),(22836,'38312',47161,47162,4,0),(22837,'38313',47159,47160,4,0),(22838,'38314',47157,47158,4,0),(22839,'38315',47155,47156,4,0),(22840,'38380',47151,47152,4,0),(22841,'38389',47149,47150,4,0),(22842,'38759',47145,47146,4,0),(22843,'38760',47143,47144,4,0),(22844,'38767',47141,47142,4,0),(22845,'38768',47139,47140,4,0),(22846,'38769',47137,47138,4,0),(22847,'38410',47133,47134,4,0),(22848,'38412',47131,47132,4,0),(22849,'38413',47129,47130,4,0),(22850,'38414',47127,47128,4,0),(22851,'38415',47125,47126,4,0),(22852,'38416',47123,47124,4,0),(22853,'38417',47121,47122,4,0),(22854,'38418',47119,47120,4,0),(22855,'38419',47117,47118,4,0),(22856,'38435',47113,47114,4,0),(22857,'38460',47111,47112,4,0),(22858,'38470',47109,47110,4,0),(22859,'38479',47107,47108,4,0),(22860,'38400',47103,47104,4,0),(22861,'38789',47099,47100,4,0),(22862,'38714',47095,47096,4,0),(22863,'38715',47093,47094,4,0),(22864,'38720',47089,47090,4,0),(22865,'38729',47087,47088,4,0),(22866,'38108',47083,47084,4,0),(22867,'38201',47081,47082,4,0),(22868,'38202',47079,47080,4,0),(22869,'38203',47077,47078,4,0),(22870,'38204',47075,47076,4,0),(22871,'38205',47073,47074,4,0),(22872,'38206',47071,47072,4,0),(22873,'38207',47069,47070,4,0),(22874,'38208',47067,47068,4,0),(22875,'38240',47065,47066,4,0),(22876,'38250',47063,47064,4,0),(22877,'38260',47061,47062,4,0),(22878,'38270',47059,47060,4,0),(22879,'38291',47057,47058,4,0),(22880,'38293',47055,47056,4,0),(22881,'38294',47053,47054,4,0),(22882,'38296',47051,47052,4,0),(22883,'38297',47049,47050,4,0),(22884,'38320',47047,47048,4,0),(22885,'38329',47045,47046,4,0),(22886,'38330',47043,47044,4,0),(22887,'38420',47039,47040,4,0),(22888,'38428',47037,47038,4,0),(22889,'38429',47035,47036,4,0),(22890,'38620',47031,47032,4,0),(22891,'38628',47029,47030,4,0),(22892,'38629',47027,47028,4,0),(22893,'38639',47025,47026,4,0),(22894,'38800',47021,47022,4,0),(22895,'38801',47019,47020,4,0),(22896,'38811',47017,47018,4,0),(22897,'38700',47013,47014,4,0),(22898,'38712',47011,47012,4,0),(22899,'38713',47009,47010,4,0),(22900,'38714',47007,47008,4,0),(22901,'38715',47005,47006,4,0),(22902,'38001',47001,47002,4,0),(22903,'38002',46999,47000,4,0),(22904,'38003',46997,46998,4,0),(22905,'38004',46995,46996,4,0),(22906,'38005',46993,46994,4,0),(22907,'38006',46991,46992,4,0),(22908,'38007',46989,46990,4,0),(22909,'38008',46987,46988,4,0),(22910,'38009',46985,46986,4,0),(22911,'38010',46983,46984,4,0),(22912,'38107',46981,46982,4,0),(22913,'38108',46979,46980,4,0),(22914,'38110',46977,46978,4,0),(22915,'38111',46975,46976,4,0),(22916,'38120',46973,46974,4,0),(22917,'38129',46971,46972,4,0),(22918,'38130',46969,46970,4,0),(22919,'38139',46967,46968,4,0),(22920,'38140',46965,46966,4,0),(22921,'38150',46963,46964,4,0),(22922,'38160',46961,46962,4,0),(22923,'38170',46959,46960,4,0),(22924,'38180',46957,46958,4,0),(22925,'38294',46955,46956,4,0),(22926,'38320',46953,46954,4,0),(22927,'38390',46949,46950,4,0),(22928,'38398',46947,46948,4,0),(22929,'38399',46945,46946,4,0),(22930,'38683',46941,46942,4,0),(22931,'38684',46939,46940,4,0),(22932,'38690',46937,46938,4,0),(22933,'38340',46933,46934,4,0),(22934,'38350',46931,46932,4,0),(22935,'38355',46929,46930,4,0),(22936,'38356',46927,46928,4,0),(22937,'38357',46925,46926,4,0),(22938,'38358',46923,46924,4,0),(22939,'38770',46919,46920,4,0),(22940,'38779',46917,46918,4,0),(22941,'38280',46913,46914,4,0),(22942,'38289',46911,46912,4,0),(22943,'38292',46909,46910,4,0),(22944,'38293',46907,46908,4,0),(22945,'38297',46905,46906,4,0),(22946,'38780',46901,46902,4,0),(22947,'38789',46899,46900,4,0),(22948,'38852',46895,46896,4,0),(22949,'38870',46893,46894,4,0),(22950,'38879',46891,46892,4,0),(22951,'38892',46889,46890,4,0),(22952,'38840',46885,46886,4,0),(22953,'38849',46883,46884,4,0),(22954,'38850',46881,46882,4,0),(22955,'38852',46879,46880,4,0),(22956,'38860',46877,46878,4,0),(22957,'38869',46875,46876,4,0),(22958,'38891',46873,46874,4,0),(22959,'38900',46869,46870,4,0),(22960,'38910',46867,46868,4,0),(22961,'38915',46865,46866,4,0),(22962,'38916',46863,46864,4,0),(22963,'38613',46859,46860,4,0),(22964,'38614',46857,46858,4,0),(22965,'38615',46855,46856,4,0),(22966,'38629',46853,46854,4,0),(22967,'38730',46849,46850,4,0),(22968,'38738',46847,46848,4,0),(22969,'38739',46845,46846,4,0),(22970,'Marigot',44864,44867,3,1),(22971,'Aubignosc',44886,44889,3,1),(22972,'Chateau Arnoux Saint Auba',44882,44885,3,1),(22973,'Manosque',44878,44881,3,1),(22974,'Villeneuve',44874,44877,3,1),(22975,'Rodez',44904,44907,3,1),(22976,'Aix-en-provence',44980,44985,3,2),(22977,'Arles',44974,44979,3,2),(22978,'Bouc Bel-air',44970,44973,3,1),(22979,'Istres',44966,44969,3,1),(22980,'Lançon De Provence',44962,44965,3,1),(22981,'Les Pennes Mirabeau',44958,44961,3,1),(22982,'Marseille',44932,44957,3,12),(22983,'Martigues',44928,44931,3,1),(22984,'Maussane-les-alpilles',44924,44927,3,1),(22985,'Rognonas',44920,44923,3,1),(22986,'Salon-de-provence',44916,44919,3,1),(22987,'Velaux',44912,44915,3,1),(22988,'Villers-bocage',44988,44991,3,1),(22989,'Linars',44996,44999,3,1),(22990,'Dolus-d\'oleron',45002,45005,3,1),(22991,'Lanvollon',45024,45027,3,1),(22992,'Penvénan',45020,45023,3,1),(22993,'Plessala',45016,45019,3,1),(22994,'Pontarlier',45036,45039,3,1),(22995,'Saint Paul Les Romans',45046,45049,3,1),(22996,'Valence',45042,45045,3,1),(22997,'Le Bosc Roger En Roumois',45058,45061,3,1),(22998,'Val-de-reuil',45054,45057,3,1),(22999,'Brest',45098,45101,3,1),(23000,'Combrit',45094,45097,3,1),(23001,'Gouesnou',45090,45093,3,1),(23002,'Guipavas',45086,45089,3,1),(23003,'Landernau',45082,45085,3,1),(23004,'Le Huelgoat',45078,45081,3,1),(23005,'Quimper',45074,45077,3,1),(23006,'Saint Renan',45070,45073,3,1),(23007,'Sizun',45066,45069,3,1),(23008,'Rochefort Du Gard',45112,45115,3,1),(23009,'Saint-quentin-la-poterie',45108,45111,3,1),(23010,'Villeneuve Les Avignon',45104,45107,3,1),(23011,'Bordeaux',45120,45123,3,1),(23012,'Toulouse',45134,45137,3,1),(23013,'Tournefeuille',45130,45133,3,1),(23014,'Bonne',45150,45153,3,1),(23015,'Morzine',45146,45149,3,1),(23016,'Courbevoi',45162,45165,3,1),(23017,'Aigûes Mortes',45180,45183,3,1),(23018,'Beziers',45176,45179,3,1),(23019,'Lunel',45172,45175,3,1),(23020,'Montpellier',45168,45171,3,1),(23021,'Avoine',45194,45197,3,1),(23022,'Tours',45190,45193,3,1),(23023,'Tullins',45200,45203,3,1),(23024,'Biscarrosse',45218,45221,3,1),(23025,'Léon',45216,45217,3,0),(23026,'Soorts-hossegor',45212,45215,3,1),(23027,'Vieux Boucau-les-bains',45208,45211,3,1),(23028,'Nantes',45228,45231,3,1),(23029,'Cholet',45246,45249,3,1),(23030,'Les Ponts De Ce',45242,45245,3,1),(23031,'Saint Hilaire Du Harcouët',45252,45255,3,1),(23032,'Clescles',45258,45261,3,1),(23033,'Caudan',45274,45277,3,1),(23034,'Quéven',45270,45273,3,1),(23035,'Armentieres',45296,45299,3,1),(23036,'Maquette De Lille',45292,45295,3,1),(23037,'Maquette Le Lille',45288,45291,3,1),(23038,'Roubaix',45284,45287,3,1),(23039,'La Croix Saint Ouen',45302,45305,3,1),(23040,'Honore',45320,45323,3,1),(23041,'Paris',45310,45319,3,4),(23042,'Lille',45330,45333,3,1),(23043,'Prenchies',45326,45329,3,1),(23044,'Anglet',45412,45415,3,1),(23045,'Arcangues',45408,45411,3,1),(23046,'Ascain',45404,45407,3,1),(23047,'Bardos',45400,45403,3,1),(23048,'Bayone',45394,45399,3,2),(23049,'Bayonne',45390,45393,3,1),(23050,'Biarritz',45386,45389,3,1),(23051,'Bidache',45382,45385,3,1),(23052,'Bidart',45378,45381,3,1),(23053,'Hendaye',45374,45377,3,1),(23054,'Saint Jean De Luz',45370,45373,3,1),(23055,'Saint Palais',45366,45369,3,1),(23056,'Saint Vincent De Tyrosse',45362,45365,3,1),(23057,'Saint-jean-de-luz',45358,45361,3,1),(23058,'Sare',45354,45357,3,1),(23059,'St Jean De Luz',45350,45353,3,1),(23060,'Urrugne',45346,45349,3,1),(23061,'Urt',45342,45345,3,1),(23062,'Ustaritz',45338,45341,3,1),(23063,'Argeles Sur Mer',45426,45429,3,1),(23064,'Perpignan',45422,45425,3,1),(23065,'Saint Laurent De La Salan',45418,45421,3,1),(23066,'Bron',45438,45441,3,1),(23067,'Lyon',45432,45437,3,2),(23068,'Mâcon',45444,45447,3,1),(23069,'Le Havre',45460,45463,3,1),(23070,'Rouen',45456,45459,3,1),(23071,'Livry-gargan',45470,45473,3,1),(23072,'Villemonble',45466,45469,3,1),(23073,'Albi',45486,45489,3,1),(23074,'Castres',45482,45485,3,1),(23075,'Onet Le Chateau',45478,45481,3,1),(23076,'Montauban',45492,45495,3,1),(23077,'Montmorency',45504,45507,3,1),(23078,'Pontoise',45500,45503,3,1),(23079,'Chevilly Larue',45514,45519,3,2),(23080,'Plessis Trevise',45510,45513,3,1),(23081,'Hyères',45530,45533,3,1),(23082,'Saint Tropez',45526,45529,3,1),(23083,'Sollies Pont',45522,45525,3,1),(23084,'Agvignon',45536,45539,3,1),(23085,'Contrexéville',45554,45557,3,1),(23086,'Neufchâteau',45550,45553,3,1),(23087,'Vittel',45546,45549,3,1),(23088,'40550',22467,22468,4,0),(23089,'97150',44865,44866,4,0),(23090,'04200',44887,44888,4,0),(23091,'04160',44883,44884,4,0),(23092,'04100',44879,44880,4,0),(23093,'04180',44875,44876,4,0),(23094,'12000',44905,44906,4,0),(23095,'13100',44983,44984,4,0),(23096,'13540',44981,44982,4,0),(23097,'13200',44977,44978,4,0),(23098,'13633',44975,44976,4,0),(23099,'13320',44971,44972,4,0),(23100,'13800',44967,44968,4,0),(23101,'13680',44963,44964,4,0),(23102,'13170',44959,44960,4,0),(23103,'13001',44955,44956,4,0),(23104,'13002',44953,44954,4,0),(23105,'13004',44951,44952,4,0),(23106,'13005',44949,44950,4,0),(23107,'13006',44947,44948,4,0),(23108,'13007',44945,44946,4,0),(23109,'13008',44943,44944,4,0),(23110,'13009',44941,44942,4,0),(23111,'13010',44939,44940,4,0),(23112,'13011',44937,44938,4,0),(23113,'13012',44935,44936,4,0),(23114,'13014',44933,44934,4,0),(23115,'13500',44929,44930,4,0),(23116,'13520',44925,44926,4,0),(23117,'13870',44921,44922,4,0),(23118,'13300',44917,44918,4,0),(23119,'13880',44913,44914,4,0),(23120,'14310',44989,44990,4,0),(23121,'16730',44997,44998,4,0),(23122,'17550',45003,45004,4,0),(23123,'22290',45025,45026,4,0),(23124,'22710',45021,45022,4,0),(23125,'22330',45017,45018,4,0),(23126,'25300',45037,45038,4,0),(23127,'26750',45047,45048,4,0),(23128,'26000',45043,45044,4,0),(23129,'27670',45059,45060,4,0),(23130,'27100',45055,45056,4,0),(23131,'29200',45099,45100,4,0),(23132,'29120',45095,45096,4,0),(23133,'29850',45091,45092,4,0),(23134,'29490',45087,45088,4,0),(23135,'29800',45083,45084,4,0),(23136,'29690',45079,45080,4,0),(23137,'29000',45075,45076,4,0),(23138,'29290',45071,45072,4,0),(23139,'29450',45067,45068,4,0),(23140,'30650',45113,45114,4,0),(23141,'30700',45109,45110,4,0),(23142,'30400',45105,45106,4,0),(23143,'33000',45121,45122,4,0),(23144,'31200',45135,45136,4,0),(23145,'31170',45131,45132,4,0),(23146,'74308',45151,45152,4,0),(23147,'74110',45147,45148,4,0),(23148,'92400',45163,45164,4,0),(23149,'30220',45181,45182,4,0),(23150,'34500',45177,45178,4,0),(23151,'34400',45173,45174,4,0),(23152,'34000',45169,45170,4,0),(23153,'37420',45195,45196,4,0),(23154,'37000',45191,45192,4,0),(23155,'38210',45201,45202,4,0),(23156,'40600',45219,45220,4,0),(23157,'40150',45213,45214,4,0),(23158,'40480',45209,45210,4,0),(23159,'44000',45229,45230,4,0),(23160,'49300',45247,45248,4,0),(23161,'49130',45243,45244,4,0),(23162,'50600',45253,45254,4,0),(23163,'51260',45259,45260,4,0),(23164,'56850',45275,45276,4,0),(23165,'56560',45271,45272,4,0),(23166,'59280',45297,45298,4,0),(23167,'59520',45293,45294,4,0),(23168,'59520',45289,45290,4,0),(23169,'59100',45285,45286,4,0),(23170,'60610',45303,45304,4,0),(23171,'75008',45321,45322,4,0),(23172,'75011',45317,45318,4,0),(23173,'75012',45315,45316,4,0),(23174,'75013',45313,45314,4,0),(23175,'75020',45311,45312,4,0),(23176,'59800',45331,45332,4,0),(23177,'59840',45327,45328,4,0),(23178,'64600',45413,45414,4,0),(23179,'64200',45409,45410,4,0),(23180,'64310',45405,45406,4,0),(23181,'64520',45401,45402,4,0),(23182,'64000',45397,45398,4,0),(23183,'64100',45395,45396,4,0),(23184,'64100',45391,45392,4,0),(23185,'64200',45387,45388,4,0),(23186,'64520',45383,45384,4,0),(23187,'64210',45379,45380,4,0),(23188,'64700',45375,45376,4,0),(23189,'64500',45371,45372,4,0),(23190,'64120',45367,45368,4,0),(23191,'40230',45363,45364,4,0),(23192,'64500',45359,45360,4,0),(23193,'64310',45355,45356,4,0),(23194,'64500',45351,45352,4,0),(23195,'64122',45347,45348,4,0),(23196,'64240',45343,45344,4,0),(23197,'64480',45339,45340,4,0),(23198,'66700',45427,45428,4,0),(23199,'66000',45423,45424,4,0),(23200,'66250',45419,45420,4,0),(23201,'69500',45439,45440,4,0),(23202,'69001',45435,45436,4,0),(23203,'69002',45433,45434,4,0),(23204,'71000',45445,45446,4,0),(23205,'76600',45461,45462,4,0),(23206,'76000',45457,45458,4,0),(23207,'93190',45471,45472,4,0),(23208,'93250',45467,45468,4,0),(23209,'81000',45487,45488,4,0),(23210,'81100',45483,45484,4,0),(23211,'12850',45479,45480,4,0),(23212,'82000',45493,45494,4,0),(23213,'95160',45505,45506,4,0),(23214,'95300',45501,45502,4,0),(23215,'94150',45517,45518,4,0),(23216,'94550',45515,45516,4,0),(23217,'94420',45511,45512,4,0),(23218,'83400',45531,45532,4,0),(23219,'83990',45527,45528,4,0),(23220,'83210',45523,45524,4,0),(23221,'84000',45537,45538,4,0),(23222,'88140',45555,45556,4,0),(23223,'88300',45551,45552,4,0),(23224,'88800',45547,45548,4,0),(23225,'Agueda',45692,45697,3,2),(23226,'Arouca',45688,45691,3,1),(23227,'Aveiro',45682,45687,3,2),(23228,'Cacia',45678,45681,3,1),(23229,'Caldas De São Jorge',45674,45677,3,1),(23230,'Esgueira',45670,45673,3,1),(23231,'Horta',45658,45669,3,5),(23232,'Ilhavo',45652,45657,3,2),(23233,'Malveira',45646,45651,3,2),(23234,'Oliveira Azemeis',45642,45645,3,1),(23235,'Oliveira Do Bairro',45638,45641,3,1),(23236,'Santa Maria Da Feira',45632,45637,3,2),(23237,'Santiago De Riba-ul',45628,45631,3,1),(23238,'São João Da Madeira',45620,45627,3,3),(23239,'Server Do Vouga',45616,45619,3,1),(23240,'Terceira',45612,45615,3,1),(23241,'Vagos',45606,45611,3,2),(23242,'Vale De Cambra',45602,45605,3,1),(23243,'Beja',45700,45707,3,3),(23244,'485 Barcelos',45822,45825,3,1),(23245,'Barcelos',45802,45821,3,9),(23246,'Braga',45784,45801,3,8),(23247,'Celorco De Basto',45780,45783,3,1),(23248,'Celorico Basto',45776,45779,3,1),(23249,'Esposende',45768,45775,3,3),(23250,'Fafe',45764,45767,3,1),(23251,'Famalição',45760,45763,3,1),(23252,'Fermil De Basto',45756,45759,3,1),(23253,'Figueiredo',45752,45755,3,1),(23254,'Fraiao',45748,45751,3,1),(23255,'Guiamarães',45744,45747,3,1),(23256,'Guimarães',45736,45743,3,3),(23257,'Povoa De Lanhoso',45732,45735,3,1),(23258,'Vila Nova De Famalicao',45722,45731,3,4),(23259,'Vila Nova Famalicão',45718,45721,3,1),(23260,'Vila Verde',45714,45717,3,1),(23261,'Vila-verde',45710,45713,3,1),(23262,'Paradela-chaves',45828,45831,3,1),(23263,'Alqueria Fundão',45864,45867,3,1),(23264,'Belmonte',45862,45863,3,0),(23265,'Castelo Branco',45854,45861,3,3),(23266,'Covilhã',45850,45853,3,1),(23267,'Proença A Nova',45846,45849,3,1),(23268,'Ceuta',45834,45845,3,5),(23269,'-455 Lavos',45944,45947,3,1),(23270,'Cernache',45940,45943,3,1),(23271,'Coimbra',45910,45939,3,14),(23272,'Penacova',45906,45909,3,1),(23273,'Praia De Quiaios',45900,45905,3,2),(23274,'Santo Antonio Dos Olivais',45896,45899,3,1),(23275,'São Martinho De Arvore',45892,45895,3,1),(23276,'Semide',45888,45891,3,1),(23277,'Tabua',45884,45887,3,1),(23278,'Evora',45950,45955,3,2),(23279,'Albufeira',46038,46041,3,1),(23280,'Algarve',46032,46037,3,2),(23281,'Almancil',46028,46031,3,1),(23282,'Almancil - Loulé',46024,46027,3,1),(23283,'Faro',46010,46023,3,6),(23284,'Lagos',46000,46009,3,4),(23285,'Loulé',45992,45999,3,3),(23286,'Mexilhoeira',45988,45991,3,1),(23287,'Moncarapacho',45984,45987,3,1),(23288,'Monchique',45980,45983,3,1),(23289,'Olhao',45974,45979,3,2),(23290,'São Pedro',45970,45973,3,1),(23291,'Silves',45966,45969,3,1),(23292,'Tavira',45962,45965,3,1),(23293,'Vilamoura Quarteira',45958,45961,3,1),(23294,'Funchal',46044,46047,3,1),(23295,'Aguar Da Beira',46076,46079,3,1),(23296,'Aguiar Da Beira',46072,46075,3,1),(23297,'Guarda',46066,46071,3,2),(23298,'Manteigas',46062,46065,3,1),(23299,'Sebugal',46058,46061,3,1),(23300,'Soito',46054,46057,3,1),(23301,'Vilar Formoso - Almeida',46050,46053,3,1),(23302,'Alcobaça',46158,46163,3,2),(23303,'Barosa',46154,46157,3,1),(23304,'Batalha',46150,46153,3,1),(23305,'Genrinhas',46146,46149,3,1),(23306,'Junceira',46142,46145,3,1),(23307,'Lameira - Ortigosa',46138,46141,3,1),(23308,'Maças De D. Maria',46134,46137,3,1),(23309,'Maceira',46130,46133,3,1),(23310,'Marinha Grande',46124,46129,3,2),(23311,'Marrazes',46120,46123,3,1),(23312,'Meirinhas',46116,46119,3,1),(23313,'Mendiga',46112,46115,3,1),(23314,'Nazaré',46108,46111,3,1),(23315,'Ortigoza',46104,46107,3,1),(23316,'Porto De Mos',46098,46103,3,2),(23317,'Possos S. Pedro',46094,46097,3,1),(23318,'Praia Da Leiria',46090,46093,3,1),(23319,'Rego De Agua',46086,46089,3,1),(23320,'Vieira Do Leiria',46082,46085,3,1),(23321,' Prior Velho',46360,46363,3,1),(23322,'Alenquer',46356,46359,3,1),(23323,'Alvala',46352,46355,3,1),(23324,'Alvarinhos',46348,46351,3,1),(23325,'Alverca Ribatejo',46344,46347,3,1),(23326,'Amadora',46334,46343,3,4),(23327,'Arruda Dos Vinho',46330,46333,3,1),(23328,'Brejos De Azeitão',46324,46329,3,2),(23329,'Carregado',46320,46323,3,1),(23330,'Cascais',46314,46319,3,2),(23331,'Estoril',46310,46313,3,1),(23332,'Lisboa',46280,46309,3,14),(23333,'Loures',46274,46279,3,2),(23334,'Mafra',46270,46273,3,1),(23335,'Montelevar',46266,46269,3,1),(23336,'Oeiras',46236,46265,3,14),(23337,'Portela Sacavém',46232,46235,3,1),(23338,'Queijas',46228,46231,3,1),(23339,'Quinta Do Figo Maduro',46224,46227,3,1),(23340,'Rio De Mouro',46218,46223,3,2),(23341,'Sacavem',46214,46217,3,1),(23342,'Santa Cruz',46208,46213,3,2),(23343,'São João Da Talha',46204,46207,3,1),(23344,'São Julião Do Tojal',46200,46203,3,1),(23345,'Sintra',46196,46199,3,1),(23346,'Venda Do Pinheiro',46192,46195,3,1),(23347,'Vila Franca De Xira',46184,46191,3,3),(23348,'Vila Franca Do Campo',46180,46183,3,1),(23349,'Melilla',46166,46179,3,6),(23350,'Elvas',46390,46393,3,1),(23351,'Portalegre',46386,46389,3,1),(23352,'Santo Antonio Das Areias',46382,46385,3,1),(23353,'Alduar',46618,46621,3,1),(23354,'Amarante',46612,46617,3,2),(23355,'Baião',46602,46611,3,4),(23356,'Baio',46598,46601,3,1),(23357,'Bomfim',46594,46597,3,1),(23358,'Casais',46590,46593,3,1),(23359,'Cedofeita',46586,46589,3,1),(23360,'Ermesinde',46576,46585,3,4),(23361,'Folgosa Maia',46572,46575,3,1),(23362,'Gaia',46570,46571,3,0),(23363,'Gondomar',46568,46569,3,0),(23364,'Lousada',46564,46567,3,1),(23365,'Maia',46540,46563,3,11),(23366,'Marco De Canavesses',46532,46539,3,3),(23367,'Matosinhos',46518,46531,3,6),(23368,'Oporto',46510,46517,3,3),(23369,'Paços De Ferreira',46504,46509,3,2),(23370,'Paços Ferreira',46500,46503,3,1),(23371,'Paranhos',46496,46499,3,1),(23372,'Paredes',46494,46495,3,0),(23373,'Passo De Ferreira',46486,46493,3,3),(23374,'Passo Ferreira',46482,46485,3,1),(23375,'Pedrouços Maia',46478,46481,3,1),(23376,'Penafiel',46476,46477,3,0),(23377,'Perafita Matosinhos',46472,46475,3,1),(23378,'Porto',46468,46471,3,1),(23379,'Povoa De Varzim',46464,46467,3,1),(23380,'Povoa Do Varzim',46458,46463,3,2),(23381,'Ramalde',46454,46457,3,1),(23382,'Rio Tinto',46444,46453,3,4),(23383,'Santo Tirso',46436,46443,3,3),(23384,'São Mamede Infesta',46432,46435,3,1),(23385,'Silvares Lousda',46428,46431,3,1),(23386,'Trofa',46422,46427,3,2),(23387,'Valongo',46418,46421,3,1),(23388,'Vila Do Conde',46414,46417,3,1),(23389,'Vila Nova De Gaia',46396,46413,3,8),(23390,'Alcanena',46648,46651,3,1),(23391,'Cartaxo',46644,46647,3,1),(23392,'Coruche',46640,46643,3,1),(23393,'Mação',46636,46639,3,1),(23394,'Pego',46634,46635,3,0),(23395,'Rio Maior',46630,46633,3,1),(23396,'Santarém',46626,46629,3,1),(23397,'Alcochece',46726,46729,3,1),(23398,'Almada',46718,46725,3,3),(23399,'Azeitão',46712,46717,3,2),(23400,'Charneca Da Caparica',46706,46711,3,2),(23401,'Costa Caparica',46702,46705,3,1),(23402,'Lavradio',46698,46701,3,1),(23403,'Lavradio - Barreiro',46692,46697,3,2),(23404,'Montijo',46690,46691,3,0),(23405,'Seixal',46676,46689,3,6),(23406,'Sesimbra',46670,46675,3,2),(23407,'Setubal',46662,46669,3,3),(23408,'Trafaria',46658,46661,3,1),(23409,'Vila Nogueira',46654,46657,3,1),(23410,'Monção',46750,46755,3,2),(23411,'Ponte De Lima',46746,46749,3,1),(23412,'S. Romão De Neiva',46742,46745,3,1),(23413,'Viana Do Castelo',46732,46741,3,4),(23414,'Chaves',46766,46777,3,5),(23415,'Sabrosa',46762,46765,3,1),(23416,'Santa Marta De Penaguiao',46758,46761,3,1),(23417,'Abraveses',46836,46839,3,1),(23418,'Ameixas',46832,46835,3,1),(23419,'Cinfaes',46828,46831,3,1),(23420,'Coração De Jesus',46824,46827,3,1),(23421,'Lamego',46818,46823,3,2),(23422,'Mamouros',46814,46817,3,1),(23423,'Olivares De Frades',46810,46813,3,1),(23424,'Sernancelhe',46802,46809,3,3),(23425,'Viseu',46784,46801,3,8),(23426,'Vouzela',46780,46783,3,1),(23427,'6250-076',13047,13048,4,0),(23428,'4410',6285,6286,4,0),(23429,'4415-039',6283,6284,4,0),(23430,'4420-382',31707,31708,4,0),(23431,'4510',31705,31706,4,0),(23432,'4510-649',31703,31704,4,0),(23433,'4515',31701,31702,4,0),(23434,'2870',4961,4962,4,0),(23435,'2870-500',4959,4960,4,0),(23436,'4585',13597,13598,4,0),(23437,'2205',1509,1510,4,0),(23438,'4560',41161,41162,4,0),(23439,'4560-568',41159,41160,4,0),(23440,'4560-750',41157,41158,4,0),(23441,'4575',41155,41156,4,0),(23442,'4575-367',41153,41154,4,0),(23443,'4575-503',41151,41152,4,0),(23444,'4000-075',42967,42968,4,0),(23445,'4000-217',42965,42966,4,0),(23446,'4150',42963,42964,4,0),(23447,'4200',42961,42962,4,0),(23448,'4250',42959,42960,4,0),(23449,'4300-198',42957,42958,4,0),(23450,'3750-103',45695,45696,4,0),(23451,'3750-791',45693,45694,4,0),(23452,'4540',45689,45690,4,0),(23453,'3800',45685,45686,4,0),(23454,'3810',45683,45684,4,0),(23455,'3800-533',45679,45680,4,0),(23456,'4505',45675,45676,4,0),(23457,'3800-149',45671,45672,4,0),(23458,'3830',45655,45656,4,0),(23459,'3830-142',45653,45654,4,0),(23460,'2665-185',45647,45648,4,0),(23461,'3700',45643,45644,4,0),(23462,'3770',45639,45640,4,0),(23463,'3700-839',45635,45636,4,0),(23464,'4535-346',45633,45634,4,0),(23465,'3720',45629,45630,4,0),(23466,'3700',45625,45626,4,0),(23467,'3700-091',45623,45624,4,0),(23468,'3700304',45621,45622,4,0),(23469,'3740-255',45617,45618,4,0),(23470,'9760',45613,45614,4,0),(23471,'3840',45609,45610,4,0),(23472,'3840449',45607,45608,4,0),(23473,'3730-220',45603,45604,4,0),(23474,'7800-496',45701,45702,4,0),(23475,'4755-',45823,45824,4,0),(23476,'4750',45813,45814,4,0),(23477,'4750-262',45811,45812,4,0),(23478,'4750-413',45809,45810,4,0),(23479,'4755',45807,45808,4,0),(23480,'4755-006',45805,45806,4,0),(23481,'4755-564',45803,45804,4,0),(23482,'4700',45793,45794,4,0),(23483,'4700-030',45791,45792,4,0),(23484,'4700-031',45789,45790,4,0),(23485,'4700-565',45787,45788,4,0),(23486,'4710',45785,45786,4,0),(23487,'4890-',45781,45782,4,0),(23488,'4890-264',45777,45778,4,0),(23489,'4740',45773,45774,4,0),(23490,'4740-291',45771,45772,4,0),(23491,'4740-576',45769,45770,4,0),(23492,'4820',45765,45766,4,0),(23493,'4765-220',45761,45762,4,0),(23494,'4890',45757,45758,4,0),(23495,'4705',45753,45754,4,0),(23496,'4715-400',45749,45750,4,0),(23497,'4805',45745,45746,4,0),(23498,'4810',45741,45742,4,0),(23499,'4810-106',45739,45740,4,0),(23500,'4835-324',45737,45738,4,0),(23501,'4830',45733,45734,4,0),(23502,'4760',45727,45728,4,0),(23503,'4770',45725,45726,4,0),(23504,'4770-160',45723,45724,4,0),(23505,'4770-060',45719,45720,4,0),(23506,'4730',45715,45716,4,0),(23507,'4730',45711,45712,4,0),(23508,'5400',45829,45830,4,0),(23509,'6230',45865,45866,4,0),(23510,'2600-068',45859,45860,4,0),(23511,'6000',45857,45858,4,0),(23512,'6000459',45855,45856,4,0),(23513,'6200-502',45851,45852,4,0),(23514,'6150',45847,45848,4,0),(23515,'51001',45843,45844,4,0),(23516,'51002',45841,45842,4,0),(23517,'51003',45839,45840,4,0),(23518,'51004',45837,45838,4,0),(23519,'51005',45835,45836,4,0),(23520,'03090',45945,45946,4,0),(23521,'3040-757',45941,45942,4,0),(23522,'3000',45929,45930,4,0),(23523,'3000-251',45927,45928,4,0),(23524,'3020171',45925,45926,4,0),(23525,'3025',45923,45924,4,0),(23526,'3025-106',45921,45922,4,0),(23527,'3030',45919,45920,4,0),(23528,'3030-181',45917,45918,4,0),(23529,'3030181',45915,45916,4,0),(23530,'3040-252',45913,45914,4,0),(23531,'3040-756',45911,45912,4,0),(23532,'3360',45907,45908,4,0),(23533,'3080',45903,45904,4,0),(23534,'3080515',45901,45902,4,0),(23535,'3030',45897,45898,4,0),(23536,'3025-474',45893,45894,4,0),(23537,'3220',45889,45890,4,0),(23538,'3420-324',45885,45886,4,0),(23539,'7000-651',45953,45954,4,0),(23540,'7005-370',45951,45952,4,0),(23541,'8200',46039,46040,4,0),(23542,'8125-017',46035,46036,4,0),(23543,'8701-906',46033,46034,4,0),(23544,'8135-159',46029,46030,4,0),(23545,'8135-100',46025,46026,4,0),(23546,'8000',46021,46022,4,0),(23547,'8000292',46019,46020,4,0),(23548,'8000434',46017,46018,4,0),(23549,'8005',46015,46016,4,0),(23550,'8005-135',46013,46014,4,0),(23551,'8005491',46011,46012,4,0),(23552,'8600',46007,46008,4,0),(23553,'8600-546',46005,46006,4,0),(23554,'8600546',46003,46004,4,0),(23555,'8600681',46001,46002,4,0),(23556,'8100-170',45997,45998,4,0),(23557,'8100-297',45995,45996,4,0),(23558,'8100-500',45993,45994,4,0),(23559,'8500-132',45989,45990,4,0),(23560,'8700-061',45985,45986,4,0),(23561,'8550-431',45981,45982,4,0),(23562,'8700',45977,45978,4,0),(23563,'8700-213',45975,45976,4,0),(23564,'8000-081',45971,45972,4,0),(23565,'8300-154',45967,45968,4,0),(23566,'8800-439',45963,45964,4,0),(23567,'8125-478',45959,45960,4,0),(23568,'9000-273',46045,46046,4,0),(23569,'3570',46077,46078,4,0),(23570,'3570',46073,46074,4,0),(23571,'6300',46067,46068,4,0),(23572,'6260-034',46063,46064,4,0),(23573,'6320-344',46059,46060,4,0),(23574,'6320',46055,46056,4,0),(23575,'6355-286',46051,46052,4,0),(23576,'2460-197',46161,46162,4,0),(23577,'2460197',46159,46160,4,0),(23578,'2400-489',46155,46156,4,0),(23579,'2440-462',46151,46152,4,0),(23580,'2480-078',46147,46148,4,0),(23581,'2460',46143,46144,4,0),(23582,'2425-718',46139,46140,4,0),(23583,'3250',46135,46136,4,0),(23584,'2405-022',46131,46132,4,0),(23585,'2430',46127,46128,4,0),(23586,'2430081',46125,46126,4,0),(23587,'2415',46121,46122,4,0),(23588,'3105',46117,46118,4,0),(23589,'2480-215',46113,46114,4,0),(23590,'2450-065',46109,46110,4,0),(23591,'2425',46105,46106,4,0),(23592,'2480',46101,46102,4,0),(23593,'2480300',46099,46100,4,0),(23594,'3250-350',46095,46096,4,0),(23595,'2430',46091,46092,4,0),(23596,'2400-406',46087,46088,4,0),(23597,'2430',46083,46084,4,0),(23598,'2685-394',46361,46362,4,0),(23599,'2580',46357,46358,4,0),(23600,'1700',46353,46354,4,0),(23601,'2705-430',46349,46350,4,0),(23602,'2615',46345,46346,4,0),(23603,'2650',46341,46342,4,0),(23604,'2650-436',46339,46340,4,0),(23605,'2700-072',46337,46338,4,0),(23606,'2720-119',46335,46336,4,0),(23607,'2630-095',46331,46332,4,0),(23608,'2925',46327,46328,4,0),(23609,'2925-566',46325,46326,4,0),(23610,'2580-487',46321,46322,4,0),(23611,'2750-461',46317,46318,4,0),(23612,'2750-830',46315,46316,4,0),(23613,'2765-218',46311,46312,4,0),(23614,'1100',46301,46302,4,0),(23615,'1100-467',46299,46300,4,0),(23616,'1200',46297,46298,4,0),(23617,'1300',46295,46296,4,0),(23618,'1300-598',46293,46294,4,0),(23619,'1500',46291,46292,4,0),(23620,'1600',46289,46290,4,0),(23621,'1700-151',46287,46288,4,0),(23622,'1750-364',46285,46286,4,0),(23623,'1900',46283,46284,4,0),(23624,'2735',46281,46282,4,0),(23625,'2690',46275,46276,4,0),(23626,'2644',46271,46272,4,0),(23627,'2715-673',46267,46268,4,0),(23628,'2790',46237,46238,4,0),(23629,'2685-223',46233,46234,4,0),(23630,'2790-444',46229,46230,4,0),(23631,'2685-329',46225,46226,4,0),(23632,'2635',46221,46222,4,0),(23633,'2635-003',46219,46220,4,0),(23634,'2685-332',46215,46216,4,0),(23635,'2560',46211,46212,4,0),(23636,'2560565',46209,46210,4,0),(23637,'2695-620',46205,46206,4,0),(23638,'2660',46201,46202,4,0),(23639,'2725-403',46197,46198,4,0),(23640,'2665',46193,46194,4,0),(23641,'2600-278',46187,46188,4,0),(23642,'2625',46185,46186,4,0),(23643,'9680',46181,46182,4,0),(23644,'52001',46177,46178,4,0),(23645,'52002',46175,46176,4,0),(23646,'52003',46173,46174,4,0),(23647,'52004',46171,46172,4,0),(23648,'52005',46169,46170,4,0),(23649,'52006',46167,46168,4,0),(23650,'07350',46391,46392,4,0),(23651,'7300-526',46387,46388,4,0),(23652,'7330-254',46383,46384,4,0),(23653,'4100',46619,46620,4,0),(23654,'4600',46615,46616,4,0),(23655,'4600-078',46613,46614,4,0),(23656,'4640',46609,46610,4,0),(23657,'4640-014',46607,46608,4,0),(23658,'4640-147',46605,46606,4,0),(23659,'4640-597',46603,46604,4,0),(23660,'4640-036',46599,46600,4,0),(23661,'4000',46595,46596,4,0),(23662,'4620-091',46591,46592,4,0),(23663,'4050-257',46587,46588,4,0),(23664,'4425-095',46583,46584,4,0),(23665,'4445',46581,46582,4,0),(23666,'4445-324',46579,46580,4,0),(23667,'4445-655',46577,46578,4,0),(23668,'4425',46573,46574,4,0),(23669,'4620-523',46565,46566,4,0),(23670,'4425',46555,46556,4,0),(23671,'4425-111',46553,46554,4,0),(23672,'4425-122',46551,46552,4,0),(23673,'4470-005',46549,46550,4,0),(23674,'4470-558',46547,46548,4,0),(23675,'4470-768',46545,46546,4,0),(23676,'4475',46543,46544,4,0),(23677,'4475-451',46541,46542,4,0),(23678,'4575',46537,46538,4,0),(23679,'4630',46535,46536,4,0),(23680,'4634',46533,46534,4,0),(23681,'4450',46529,46530,4,0),(23682,'4450-009',46527,46528,4,0),(23683,'4455',46525,46526,4,0),(23684,'4455-127',46523,46524,4,0),(23685,'4460-421',46521,46522,4,0),(23686,'4465',46519,46520,4,0),(23687,'4200',46513,46514,4,0),(23688,'4200026',46511,46512,4,0),(23689,'4590',46507,46508,4,0),(23690,'4590-578',46505,46506,4,0),(23691,'4950-550',46501,46502,4,0),(23692,'4200-210',46497,46498,4,0),(23693,'4590-478',46491,46492,4,0),(23694,'4595-391',46489,46490,4,0),(23695,'4595-463',46487,46488,4,0),(23696,'4590-550',46483,46484,4,0),(23697,'4425',46479,46480,4,0),(23698,'4455',46473,46474,4,0),(23699,'4495',46465,46466,4,0),(23700,'4490',46459,46460,4,0),(23701,'4250',46455,46456,4,0),(23702,'4435-005',46447,46448,4,0),(23703,'4435-057',46445,46446,4,0),(23704,'4780',46441,46442,4,0),(23705,'4780-546',46439,46440,4,0),(23706,'4795',46437,46438,4,0),(23707,'4465-083',46433,46434,4,0),(23708,'4620-523',46429,46430,4,0),(23709,'4745-030',46425,46426,4,0),(23710,'4785',46423,46424,4,0),(23711,'4440',46419,46420,4,0),(23712,'4480',46415,46416,4,0),(23713,'4400',46411,46412,4,0),(23714,'4400-209',46409,46410,4,0),(23715,'4400-312',46407,46408,4,0),(23716,'4405-528',46405,46406,4,0),(23717,'4405-625',46403,46404,4,0),(23718,'4405819',46401,46402,4,0),(23719,'4410-353',46399,46400,4,0),(23720,'4410001',46397,46398,4,0),(23721,'2380',46649,46650,4,0),(23722,'2070',46645,46646,4,0),(23723,'2100-039',46641,46642,4,0),(23724,'6120-663',46637,46638,4,0),(23725,'2040',46631,46632,4,0),(23726,'2000',46627,46628,4,0),(23727,'2890-047',46727,46728,4,0),(23728,'2805',46721,46722,4,0),(23729,'2815-653',46719,46720,4,0),(23730,'2925-589',46715,46716,4,0),(23731,'2925-734',46713,46714,4,0),(23732,'2820',46709,46710,4,0),(23733,'2820599',46707,46708,4,0),(23734,'2825',46703,46704,4,0),(23735,'2835-440',46699,46700,4,0),(23736,'2835',46695,46696,4,0),(23737,'2835-415',46693,46694,4,0),(23738,'2840-068',46681,46682,4,0),(23739,'2840068',46679,46680,4,0),(23740,'2865-572',46677,46678,4,0),(23741,'2970-088',46671,46672,4,0),(23742,'2910',46663,46664,4,0),(23743,'2825-832',46659,46660,4,0),(23744,'2925542',46655,46656,4,0),(23745,'4950',46753,46754,4,0),(23746,'4950474',46751,46752,4,0),(23747,'4990',46747,46748,4,0),(23748,'4935-546',46743,46744,4,0),(23749,'4900',46737,46738,4,0),(23750,'4900-317',46735,46736,4,0),(23751,'4925',46733,46734,4,0),(23752,'5400',46775,46776,4,0),(23753,'5400-121',46773,46774,4,0),(23754,'5400-311',46771,46772,4,0),(23755,'5400-435',46769,46770,4,0),(23756,'5425',46767,46768,4,0),(23757,'5060',46763,46764,4,0),(23758,'5030',46759,46760,4,0),(23759,'3515-146',46837,46838,4,0),(23760,'3670-150',46833,46834,4,0),(23761,'4690-363',46829,46830,4,0),(23762,'3510-123',46825,46826,4,0),(23763,'5100',46821,46822,4,0),(23764,'5100-139',46819,46820,4,0),(23765,'3600-392',46815,46816,4,0),(23766,'3680-123',46811,46812,4,0),(23767,'3640',46807,46808,4,0),(23768,'3640-225',46805,46806,4,0),(23769,'3640225',46803,46804,4,0),(23770,'3500',46797,46798,4,0),(23771,'3500-703',46795,46796,4,0),(23772,'3500209',46793,46794,4,0),(23773,'3500703',46791,46792,4,0),(23774,'3510',46789,46790,4,0),(23775,'3510-720',46787,46788,4,0),(23776,'3515-150',46785,46786,4,0),(23777,'3670',46781,46782,4,0),(23778,'Aalsmeer',45592,45595,3,1),(23779,'Alphen Aan Den Rijn',45588,45591,3,1),(23780,'Bergeijk',45584,45587,3,1),(23781,'Dirksland',45580,45583,3,1),(23782,'Honselersdijk',45576,45579,3,1),(23783,'Legmeerdijk',45574,45575,3,0),(23784,'Maasdijk',45572,45573,3,0),(23785,'Uithoorn',45568,45571,3,1),(23786,'01431',45593,45594,4,0),(23787,'2403',45589,45590,4,0),(23788,'5571CB',45585,45586,4,0),(23789,'03247',45581,45582,4,0),(23790,'02675',45577,45578,4,0),(23791,'01421',45569,45570,4,0),(23792,'28341',26831,26832,4,0),(23793,'28342',26829,26830,4,0),(23794,'28343',26827,26828,4,0),(23795,'29600',27325,27326,4,0),(23796,'46700',39991,39992,4,0),(23797,'1700-236',46303,46304,4,0),(23798,'46649',39693,39694,4,0),(23799,'4760-105',45795,45796,4,0),(23800,'4000-217',46622,46623,3,0),(23801,'2894-001',46665,46666,4,0),(23803,'4470-640',46557,46558,4,0),(23804,'33400',2395,2396,4,0),(23805,'02007',411,412,4,0),(23806,'03080',1003,1004,4,0),(23807,'03200',1293,1294,4,0),(23808,'03500',1075,1076,4,0),(23809,'04721',2311,2312,4,0),(23810,'07070',5581,5582,4,0),(23811,'08080',5965,5966,4,0),(23812,'46900',40511,40512,4,0),(23813,'46480',40519,40520,4,0),(23814,'46901',40517,40518,4,0),(23815,'46185',40515,40516,4,0),(23816,'46840',40513,40514,4,0),(23817,'20579',17475,17476,4,0),(23818,'48900',41767,41768,4,0),(23819,'36949',31573,31574,4,0),(23820,'30530',27717,27718,4,0),(23821,'33200',2699,2700,4,0),(23822,'46080',40029,40030,4,0),(23823,'33597',2871,2872,4,0),(23824,'46225',40273,40274,4,0),(23825,'46394',40369,40370,4,0),(23826,'33969',3215,3216,4,0),(23827,'46116',40611,40612,4,0),(23828,'50197',44849,44850,4,0),(23829,'46902',40521,40522,4,0),(23830,'2870-363',4963,4964,4,0),(23831,'9900-302',45667,45668,4,0),(23832,'9900-305',45665,45666,4,0),(23833,'9900-303',45663,45664,4,0),(23834,'9900-301',45661,45662,4,0),(23835,'9900-304',45659,45660,4,0),(23836,'4905-130',45815,45816,4,0),(23837,'4760-105',45729,45730,4,0),(23838,'4490-592',46461,46462,4,0),(23839,'4900-432',46739,46740,4,0),(23840,'4150-163',42969,42970,4,0),(23841,'2665-183',45649,45650,4,0),(23842,'4755-485',45817,45818,4,0),(23843,'4700-855',45797,45798,4,0),(23844,'3020-832',45935,45936,4,0),(23845,'3000-045',45933,45934,4,0),(23846,'3040-584',45931,45932,4,0),(23847,'2685-410',46277,46278,4,0),(23848,'2730-004',46263,46264,4,0),(23849,'2730-009',46261,46262,4,0),(23850,'2730-002',46259,46260,4,0),(23851,'2730-007',46257,46258,4,0),(23852,'2730-012',46255,46256,4,0),(23853,'2730-005',46253,46254,4,0),(23854,'2730-010',46251,46252,4,0),(23855,'2730-003',46249,46250,4,0),(23856,'2730-008',46247,46248,4,0),(23857,'2730-013',46245,46246,4,0),(23858,'2730-001',46243,46244,4,0),(23859,'2730-006',46241,46242,4,0),(23860,'2730-011',46239,46240,4,0),(23861,'4470-640',46561,46562,4,0),(23862,'4470-573',46559,46560,4,0),(23863,'4100-483',46515,46516,4,0),(23864,'2894-002',46667,46668,4,0),(23865,'08910',5857,5858,4,0),(23866,'28669',25971,25972,4,0),(23867,'11110',10283,10284,4,0),(23868,'21650',17989,17990,4,0),(23869,'28940',26177,26178,4,0),(23870,'18071',15503,15504,4,0),(23871,'08400',6319,6320,4,0),(23872,'28230',26291,26292,4,0),(23873,'28070',26455,26456,4,0),(23874,'29678',27327,27328,4,0),(23875,'28080',26693,26694,4,0),(23876,'15780',20959,20960,4,0),(23877,'28668',25973,25974,4,0),(23878,'4755-469',45819,45820,4,0),(23879,'2810-037',46723,46724,4,0),(23880,'Italia',47856,47865,1,4),(23881,'Milan',47863,47864,2,0),(23882,'Salerno',47857,47862,2,2),(23883,'Scafati',47858,47861,3,1),(23884,'84018',47859,47860,4,0),(23885,'1069-413',46305,46306,4,0),(23890,'33616',14531,14532,4,0),(23902,'33683',2905,2906,4,0),(23903,'33611',2903,2904,4,0),(23904,'33616',2901,2902,4,0),(23905,'33650',2899,2900,4,0),(23906,'33600',2897,2898,4,0),(23907,'33614',2895,2896,4,0),(23908,'33619',2893,2894,4,0),(23909,'33912',2891,2892,4,0),(23910,'33612',2889,2890,4,0),(23911,'33617',2887,2888,4,0),(23912,'33682',2885,2886,4,0),(23913,'33610',2883,2884,4,0),(23914,'33615',2881,2882,4,0),(23915,'33640',2879,2880,4,0),(23916,'33613',2877,2878,4,0),(23917,'33618',2875,2876,4,0),(23918,'1600-120',46307,46308,4,0),(23919,'2845-909',46687,46688,4,0),(23920,'2845-554',46685,46686,4,0),(23921,'2840-403',46683,46684,4,0),(23922,'3350-153',45937,45938,4,0),(23923,'6320-400',46069,46070,4,0),(23924,'3500-885',46799,46800,4,0),(23925,'7800-148',45705,45706,4,0),(23926,'7800-148',45703,45704,4,0),(23927,'4435-180',46449,46450,4,0),(23928,'4435-190',46451,46452,4,0),(23929,'4970-500',45799,45800,4,0),(23931,'4650-312',46469,46470,4,0),(23932,'2625-644',46189,46190,4,0),(23933,'2975-309',46673,46674,4,0); /*!40000 ALTER TABLE `zoneGeo` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -250,7 +250,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:35 USE `vn2008`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -299,16 +299,6 @@ INSERT INTO `businessReasonEnd` VALUES (1,'Baja voluntaria'),(2,'No supera PP em /*!40000 ALTER TABLE `businessReasonEnd` ENABLE KEYS */; UNLOCK TABLES; --- --- Dumping data for table `cl_est` --- - -LOCK TABLES `cl_est` WRITE; -/*!40000 ALTER TABLE `cl_est` DISABLE KEYS */; -INSERT INTO `cl_est` VALUES (1,'Pendiente'),(2,'Gestionado'),(3,'Resuelto'),(4,'Anulado'),(5,'Cuestionado'),(6,'Mana'); -/*!40000 ALTER TABLE `cl_est` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Dumping data for table `cl_con` -- @@ -365,7 +355,7 @@ UNLOCK TABLES; LOCK TABLES `department` WRITE; /*!40000 ALTER TABLE `department` DISABLE KEYS */; -INSERT INTO `department` VALUES (1,'VERDNATURA',1,52,1,0,NULL,NULL,NULL,NULL,0,0,0,0),(22,'COMPRAS',29,30,NULL,72,49,596,2,5,0,0,0,0),(23,'CAMARA',23,23,NULL,72,49,604,2,6,1,0,0,0),(31,'INFORMATICA',40,41,NULL,72,44,127,3,9,0,0,0,0),(34,'CONTABILIDAD',35,36,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(35,'FINANZAS',33,34,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(36,'LABORAL',37,38,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(37,'PRODUCCION',42,49,NULL,72,44,230,3,11,0,0,0,0),(38,'SACADO',47,48,NULL,72,37,230,4,14,1,0,0,0),(39,'ENCAJADO',45,46,NULL,72,37,230,4,12,1,0,0,0),(40,'CONTROLADORES',43,44,NULL,72,37,619,4,13,0,0,0,0),(41,'ADMINISTRACION',32,39,NULL,72,44,599,3,8,0,0,0,0),(42,'COMERCIAL',26,31,NULL,72,49,1002,2,3,0,0,0,0),(43,'VENTAS',27,28,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(44,'GERENCIA',24,25,NULL,72,49,300,2,7,0,0,0,0),(45,'LOGISTICA',18,45,NULL,72,44,596,3,19,0,0,0,0),(46,'REPARTO',21,22,NULL,72,44,659,3,10,0,0,0,0),(47,'CARGA',15,16,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(48,'ALMACENAJE',12,17,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(49,'PROPIEDAD',10,11,NULL,72,NULL,1008,1,1,0,0,0,0),(51,'DESCARGA',13,14,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(52,'CARGA AEREA',19,20,NULL,72,66,163,4,28,0,0,0,0),(53,'MARKETING Y COMUNICACIÓN',50,51,NULL,72,44,1238,0,0,0,0,0,0),(54,'ORNAMENTALES',54,54,NULL,72,44,433,3,21,0,2,0,0),(55,'TALLER Y CONFECCION',4,9,NULL,72,49,695,2,23,0,0,0,0),(56,'TALLER ARTIFICIAL',7,8,NULL,72,49,1780,2,24,0,0,0,0),(57,'SECO',5,6,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(58,'CAMPOS',2,3,NULL,72,49,225,2,2,0,0,0,0),(59,'MANTENIMIENTO',52,53,NULL,72,37,1907,4,16,0,1,0,0),(60,'RECLAMACIONES',60,60,NULL,72,42,563,3,20,0,2,0,0),(61,'VNH',61,61,NULL,73,44,1297,3,17,0,2,0,0),(63,'VENTAS FRANCIA',63,63,NULL,72,49,277,2,27,0,2,0,0),(64,'PLANTAS',64,64,NULL,72,49,617,2,25,0,2,0,0),(66,'VERDNAMADRID',66,66,NULL,72,44,163,3,18,0,0,0,0),(68,'COMPLEMENTOS',68,68,NULL,72,64,617,3,26,1,0,0,0),(69,'VERDNABARNA',69,69,NULL,74,44,432,3,22,0,0,0,0),(77,'PALETIZADO',77,77,NULL,72,37,230,4,15,1,0,0,0),(80,'EQUIPO J VALLES',80,80,NULL,72,42,693,3,4,0,0,0,0),(86,'LIMPIEZA',86,86,NULL,72,44,599,0,0,0,0,0,0),(88,'CONTROL',88,88,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0),(89,'COORDINACION',89,89,NULL,0,NULL,NULL,NULL,NULL,1,0,0,0),(90,'TRAILER',90,90,NULL,0,NULL,NULL,NULL,NULL,0,0,0,0); +INSERT INTO `department` VALUES (1,'VERDNATURA',1,76,1,0,NULL,NULL,NULL,0,0,0,0),(22,'COMPRAS',63,64,NULL,72,596,2,5,0,0,1,0),(23,'CAMARA',41,42,NULL,72,604,2,6,1,0,0,0),(31,'INFORMATICA',11,12,NULL,72,127,3,9,0,0,0,0),(34,'CONTABILIDAD',4,5,NULL,0,NULL,NULL,NULL,0,0,0,0),(35,'FINANZAS',6,7,NULL,0,NULL,NULL,NULL,0,0,0,0),(36,'LABORAL',8,9,NULL,0,NULL,NULL,NULL,0,0,0,0),(37,'PRODUCCION',15,24,NULL,72,230,3,11,0,0,0,0),(38,'SACADO',20,21,NULL,72,230,4,14,1,0,0,0),(39,'ENCAJADO',22,23,NULL,72,230,4,12,1,0,0,0),(41,'ADMINISTRACION',3,10,NULL,72,599,3,8,0,0,0,0),(43,'VENTAS',51,62,NULL,0,NULL,NULL,NULL,0,0,0,0),(44,'GERENCIA',2,25,NULL,72,300,2,7,0,0,0,0),(45,'LOGISTICA',26,37,NULL,72,596,3,19,0,0,0,0),(46,'REPARTO',38,39,NULL,72,659,3,10,0,0,0,0),(48,'ALMACENAJE',40,47,NULL,0,NULL,NULL,NULL,0,0,0,0),(49,'PROPIEDAD',48,73,NULL,72,1008,1,1,0,0,0,0),(52,'CARGA AEREA',27,28,NULL,72,163,4,28,0,0,0,0),(53,'MARKETING Y COMUNICACIÓN',58,59,NULL,72,1238,0,0,0,0,0,0),(54,'ORNAMENTALES',74,75,NULL,72,433,3,21,0,0,0,0),(55,'TALLER NATURAL',66,67,NULL,72,695,2,23,0,0,0,0),(56,'TALLER ARTIFICIAL',68,69,NULL,72,1780,2,24,0,0,0,0),(58,'CAMPOS',71,72,NULL,72,225,2,2,0,0,0,0),(59,'MANTENIMIENTO',49,50,NULL,72,1907,4,16,0,0,0,0),(60,'RECLAMACIONES',56,57,NULL,72,563,3,20,0,0,0,0),(61,'VNH',35,36,NULL,73,1297,3,17,0,0,0,0),(63,'VENTAS FRANCIA',60,61,NULL,72,277,2,27,0,0,0,0),(66,'VERDNAMADRID',31,32,NULL,72,163,3,18,0,0,0,0),(68,'COMPLEMENTOS',43,44,NULL,72,617,3,26,1,0,0,0),(69,'VERDNABARNA',33,34,NULL,74,432,3,22,0,0,0,0),(77,'PALETIZADO',18,19,NULL,72,230,4,15,1,0,0,0),(80,'EQUIPO J VALLES',54,55,NULL,72,693,3,4,0,0,0,0),(86,'LIMPIEZA',13,14,NULL,72,599,0,0,0,0,0,0),(89,'COORDINACION',16,17,NULL,0,NULL,NULL,NULL,1,0,0,0),(90,'TRAILER',29,30,NULL,0,NULL,NULL,NULL,0,0,0,0),(91,'ARTIFICIAL',45,46,NULL,0,NULL,NULL,NULL,1,0,0,0),(92,'EQUIPO SILVERIO',52,53,NULL,0,NULL,NULL,NULL,0,0,0,0),(93,'CONFECCION',65,70,NULL,0,NULL,NULL,NULL,0,0,0,0); /*!40000 ALTER TABLE `department` ENABLE KEYS */; UNLOCK TABLES; @@ -385,7 +375,7 @@ UNLOCK TABLES; LOCK TABLES `Gastos` WRITE; /*!40000 ALTER TABLE `Gastos` DISABLE KEYS */; -INSERT INTO `Gastos` VALUES ('2000000000',1,'Inmovilizado pendiente',1,0,0),('2000000000',3,'Compra de bienes de inmovilizado',1,0,0),('2600000000',1,'Fianzas',0,0,0),('4600000000',1,'Anticipos de remuneraciones',1,0,0),('4600000001',1,'Anticpos de remuneración',1,0,0),('4751000000',0,'Retenciones',0,1,0),('4751000000',1,'Retenciones',0,1,0),('4751000000',6,'Retencion',0,0,0),('4759000000',1,'Embargos salariales',1,0,0),('5200000006',1,'Deudas a c/p CRA',1,0,0),('5200000008',0,'Prestamo CP Transolver IVECO 269',1,0,0),('5200000008',1,'Prestamo Transolver 201600269',1,0,0),('5200000009',0,'Prestamo CP Transolver IVECO 270',1,0,0),('5200000009',1,'Prestamo Transolver 201600270',1,0,0),('5200000010',0,'Prestamo CP Transolver IVECO 271',1,0,0),('5200000010',1,'Prestamo Transolver 201600271',1,0,0),('5200000011',1,'Prestamo Transolver 339',0,0,0),('5200000012',1,'Prestamo Transolver 340',1,0,0),('5200000013',1,'Prestamo Transolver 341',1,0,0),('5200000014',1,'Prestamo a c/p BBVA 600.000€',1,0,0),('5200000022',1,'Linea comercio exterior',1,0,0),('5240000001',1,'Leasing BBVA',1,0,0),('5240000002',1,'Leasing c/p 0265670-03',1,0,0),('5240000003',1,'Leasing La Caixa 0265878-21',0,0,0),('5240002032',1,'Leasing Iveco',1,0,0),('5240002066',1,'Leasing c/p Man',1,0,0),('5240002104',1,'Leasing c/p La caixa 3 vehículos',1,0,0),('5325000003',6,'Prestamo a partes vinculadas',0,0,0),('5420000001',1,'Prestamo concedido',1,0,0),('5650000001',1,'Fianza c/p vehiculo',0,0,0),('5660000001',1,'Suplidos',0,0,0),('5660000001',20,'Suplidos',1,0,0),('5660000002',0,'Suplidos',0,0,0),('5660000002',1,'Suplidos Transitarios nacionales',1,0,0),('5660000003',1,'Deposito c/p Ebury',1,0,0),('5660000003',4,'Deposito Ebury',0,0,0),('5660000004',4,'Deposito Global Reach',0,0,0),('6001000000',1,'Compras a terceros nacional',1,0,0),('6001000000',18,'Compras a terceros nacional',1,0,0),('6001000000',19,'Compras a terceros nacional',1,0,0),('6001000001',1,'Adquisiones en Europa',0,0,0),('6001000001',3,'Adquisición en Europa',1,0,0),('6002000000',1,'Transportes de compras',1,0,0),('6002000001',1,'Tranportes de compra Europa',1,0,0),('6002000001',4,'Transportes de compras Europa',1,0,0),('6002000567',0,'Transporte de compras VNH',1,0,0),('6003000000',1,'Adquisición mercancia Extracomunitaria',1,0,0),('6003000000',5,'Adquisición mercancia Extracomunitaria',1,0,0),('6003000000',6,'Adquisición mercancia Extracomunitaria',1,0,0),('6003000567',0,'Compra de mercancia extracomunitaria VNH',1,0,0),('6004000000',1,'Transporte compras Sudamérica',1,0,0),('6004000000',4,'Transporte compras Sudamérica',1,0,0),('6004000000',6,'Transporte compras Sudamérica',1,0,0),('6010000000',1,'Materias primas',1,0,0),('6020000000',1,'Otros aprovisionamientos',1,0,0),('6020000001',1,'Embalajes',1,0,0),('6020000002',1,'Otros aprov. Taller artíficial',1,0,0),('6070000000',1,'Trabajos de produccion encargados a terceros',1,0,0),('6090000000',6,'Rappels por compras',1,0,0),('6100000000',0,'Variacion existencias',1,0,0),('6210000000',1,'Arrendamientos',1,0,0),('6210000001',1,'Arrendamiento vehículo',1,0,0),('6210000001',4,'Gastos de arrendamiento vehículos',1,0,0),('6210000002',1,'Arrendamiento nave',1,0,0),('6210000003',1,'Arrendamiento espacio virtual-informatic',1,0,0),('6210000004',1,'Arrendamiento elementos para el proceso de informa',1,0,0),('6210000005',1,'Arrendamiento CC y banddejas',1,0,0),('6210000567',0,'Alquiler VNH',1,0,0),('6220000000',1,'Reparaciones y conservacion',1,0,0),('6220000001',1,'Reparación-Informatica',1,0,0),('6220000001',4,'Reparacion y mantenimiento informatica',1,0,0),('6220000003',1,'Reparación-Vehiculos',1,0,0),('6220000004',1,'Reparación-Instalaciones',1,0,0),('6220000005',1,'Reparación y mantenimineto CCs',1,0,0),('6220000006',1,'Repracion y conser maquinaria',1,0,0),('6230000000',1,'Servicios de profesionales independientes',1,0,0),('6230000000',4,'Servicio de profesionales',0,0,0),('6230000000',6,'Servicios de profesionales',1,0,0),('6230000001',1,'Servicios por gestión de ventas',1,0,0),('6230000001',4,'Servicios por gestión de ventas',1,0,0),('6240000000',1,'Transportes de ventas rutas',1,0,0),('6240000000',4,'Transportes de ventas',1,0,0),('6240000001',1,'Transporte ventas agencias',1,0,0),('6240000002',1,'Transporte ventas reclamaciones',1,0,0),('6240000567',1,'Transporte ventas VNH',1,0,0),('6250000000',1,'Primas de seguros',1,0,0),('6250000000',4,'Prima de Seguros',1,0,0),('6250000001',1,'Primas de seguros-Personales',1,0,0),('6250000002',1,'Primas de seguros-Colectivos',1,0,0),('6250000003',1,'Primas de seguros-Vehiculos',1,0,0),('6250000004',1,'Primas de seguros-Inmuebles',1,0,0),('6250000567',0,'Seguros VNH',1,0,0),('6260000000',1,'Gastos bancarios',1,0,0),('6260000000',4,'Gastos bancarios',0,0,0),('6260000000',6,'Gastos bancarios',1,0,0),('6260000001',1,'Gastos bancarios datafono',1,0,0),('6260000002',1,'Gastos bancarios transferencia nacional',1,0,0),('6260000003',1,'Gastos bancarios transferencia Europa',1,0,0),('6260000004',1,'Gastos bancarios transferencia divisas',1,0,0),('6260000567',0,'Gastos bancarios VNH',1,0,0),('6270000000',1,'Publicidad y RRPP',1,0,0),('6270000000',3,'Publicidad, propaganda y RR PP',1,0,0),('6270000000',6,'Publicidad',1,0,0),('6270000000',14,'Publicidad, propaganda RRPP',1,0,0),('6270000001',1,'Patrocinio',0,0,0),('6280000000',1,'Suministros',1,0,0),('6280000001',1,'Telefonos',1,0,0),('6280000002',1,'Gasoil',1,0,0),('6280000003',1,'Suministros-Electricidad',1,0,0),('6280000004',1,'Internet',1,0,0),('6280000567',0,'Suministros VNH',1,0,0),('6280001567',0,'Suministros telefono VNH',1,0,0),('6280003567',0,'Suministro luz VNH',1,0,0),('6290000000',1,'Otros servicios',1,0,0),('6290000000',6,'Otros gastos varios',1,0,0),('6290000001',1,'Material de oficina',1,0,0),('6290000002',1,'Gastos en formacion',1,0,0),('6290000003',1,'Asesoria juridica',1,0,0),('6290000004',4,'Otros servicios UE',1,0,0),('6290000005',1,'Gastos varios-Correos',1,0,0),('6290000006',1,'Otros servicios extranjero',1,0,0),('6290000006',5,'Otros servicios extranjero',1,0,0),('6290000006',6,'Otros servicios extranjero',1,0,0),('6290000007',1,'Gastos pequeño material',1,0,0),('6290000007',3,'Compras pequeño material',1,0,0),('6290000007',6,'Pequeño material',1,0,0),('6290000008',1,'Gastos varios-uniformes personal',1,0,0),('6290000008',3,'Compra uniformes',1,0,0),('6290000009',1,'Gastos-CC Container',1,0,0),('6290000010',1,'Gastos formación clientes',1,0,0),('6290000012',1,'Gastos gestión contra-reembolsos',1,0,0),('6290000013',1,'Arrendamiento Vilassar',1,0,0),('6290000014',1,'Gasto laboral espresas ETT',1,0,0),('6290000015',1,'Gasto compra terminales moviles y similares',1,0,0),('6290000015',3,'Gasto compra terminales moviles y similares',1,0,0),('6290000015',6,'Gasto compra terminales moviles y similares',1,0,0),('6290000016',1,'Gasto gestión cobro ventas',1,0,0),('6290000553',1,'Gastos viaje administrador',1,0,0),('6290000553',4,'Gastos viaje administrador-gerente',1,0,0),('6290000553',6,'Gastos viaje administrador',1,0,0),('6290001000',1,'Gastos de viaje',1,0,0),('6290001000',4,'Gastos viajes otros departamentos',1,0,0),('6290001000',6,'Gastos viaje personal otros departamentos',1,0,0),('6290001001',1,'Gastos R.R.P.P. Gerente',1,0,0),('6290001002',1,'Gastos R.R.P.P. Comerciales',1,0,0),('6290001567',0,'Gastos material oficina',1,0,0),('6300000000',1,'Impuesto de sociedades',1,0,0),('6310000000',1,'Otros tributos',1,0,0),('6380000000',1,'Ajustes positivos s/b Bº',1,0,0),('6400000000',0,'Sueldos y salarios',1,0,0),('6400000000',1,'Salarios',0,0,0),('6400000001',0,'Productividad',1,0,0),('6400000567',0,'Salarios VNH',1,0,0),('6410000001',1,'Indemnizaciones',1,0,0),('6420000000',0,'Seguridad Social a cargo de la empresa',1,0,0),('6420000000',1,'Seguridad Social',0,0,0),('6490000000',1,'Otros gastos sociales',1,0,0),('6500000000',1,'Impagados definitivos',1,0,0),('6620000000',0,'Intereses Bancarios',1,0,0),('6620000001',1,'Intereses deudas a l/p',1,0,0),('6620000002',1,'Intereses Leasing La caixa 0265670-03',1,0,0),('6620000003',1,'Interses Leasing La caixa 0265878-21',1,0,0),('6620000006',1,'Intereses deuda prestamo CRA',1,0,0),('6620000007',1,'Intereses La Caixa linea comercio exterior',1,0,0),('6620000007',16,'Intereses La Caixa Linea Comercio Exterior',0,0,0),('6620000008',1,'Intereses Prestamos Transolver 2016',1,0,0),('6620000011',1,'Intereses BBVA linea comercio exterior',1,0,0),('6620000014',1,'Intereses Prestamo BBVA',1,0,0),('6620000015',1,'Interés Póliza Deutsche Bank Comercio Exterior',0,0,0),('6620000023',1,'Intereses Bankinter Póliza Comercio Exterior',0,0,0),('6620002032',1,'Intereses Leaing Iveco',1,0,0),('6620002066',1,'Leasing Intereses Man',1,0,0),('6620002104',1,'Intereses Leasing La caixa 3 vehículos',1,0,0),('6622000000',20,'Intereses deudas otras partes vinculadas',1,0,0),('6660000000',1,'Perdidas en valores representativos de deuda a l/p',0,0,0),('6681000000',1,'Diferencia negativa tipo de cambio',1,0,0),('6681000000',4,'Diferencia negativa tipo de cambio',0,0,0),('6681000000',6,'Diferencia negativa tipo de cambio',1,0,0),('6681000567',0,'Diferencias de cambio VNH',1,0,0),('6690000000',1,'Otros gastos financieros',1,0,0),('6690000000',6,'Gastos financieros',1,0,0),('6720000000',16,'Perdidas procedentes de inversiones',0,0,0),('6780000000',1,'Gastos extraordinarios',1,0,0),('6780000001',1,'Gastos no deducibles',1,0,0),('6780000001',16,'Gasto no deducible',0,0,0),('6800000000',1,'Amortización inmovilizado intangible',1,0,0),('6800000001',0,'Amortizacion inmovilizado material',1,0,0),('6800000001',1,'Amortización del inmovilizado material',1,0,0),('6810000000',0,'Amortizaciones inmovilizado',1,0,0),('6810000000',1,'Amortizacion inmovilizado material',1,0,0),('7000000000',0,'Ventas',1,0,0),('7000000001',1,'Venta entre empresas',1,0,0),('7000010000',0,'Terceros Flor',1,0,0),('7000020000',0,'Terceros Planta',1,0,0),('7000030000',0,'Terceros Complementos',1,0,0),('7000040000',0,'Terceros Artificial',1,0,0),('7000050000',0,'Terceros Verdes',1,0,0),('7000060000',0,'Terceros Otros',1,0,0),('7000070000',0,'Terceros Confección',1,0,0),('7000080000',1,'Terceros Logística',1,0,0),('7001000000',1,'Mercaderia',1,0,1),('7001010000',0,'Grupo Flor',1,0,0),('7001020000',0,'Grupo Planta',1,0,0),('7001030000',0,'Grupo Complementos',1,0,0),('7001040000',0,'Grupo Artificial',1,0,0),('7001050000',0,'Grupo Verdes',1,0,0),('7001060000',0,'Grupo Otros',1,0,0),('7001070000',0,'Grupo Confección',1,0,0),('7001080000',1,'Grupo Logística',1,0,0),('7002010000',0,'Asociados Flor',1,0,0),('7002020000',0,'Asociados Planta',1,0,0),('7002030000',0,'Asociados Complementos',1,0,0),('7002040000',0,'Asociados Artificial',1,0,0),('7002050000',0,'Asociados Verdes',1,0,0),('7002060000',0,'Asociados Otros',1,0,0),('7002070000',0,'Asociados Confección',1,0,0),('7002080000',1,'Asociados Logística',1,0,0),('7040000000',1,'Embalajes',1,0,1),('7050000000',1,'Prestacion de servicios',1,0,1),('7400000000',1,'Subvenciones, donaciones a la explotacion',1,0,0),('7550000000',0,'Ingresos por serivicios al personal',1,0,0),('7620000000',16,'Intereses de créditos a l/p',1,0,0),('768,0',0,NULL,1,0,0),('7680000000',0,'Diferencias positivas de cambio',1,0,0),('7680000000',1,'Diferenica positiva tipo de cambio',1,0,0),('7680000000',4,'Diferenica positiva tipo de cambio',0,0,0),('7680000000',6,'Diferenica positiva tipo de cambio',1,0,0),('7690000000',1,'Otros ingresos financieros',1,0,0),('7710000000',20,'Beneficio procendente vta inm',1,0,0),('7780000000',1,'Ingresos excepcionales',1,0,0),('7780000000',16,'Ingreso extraordinario',0,0,0),('7780000001',1,'Indemnizaciones transporte',1,0,0),('7780000001',4,'Indemnizaciones agencias transporte',1,0,0),('7780000001',5,'Indemnizaciones agencias transporte',1,0,0),('7780000001',6,'Indemnizaciones transporte',1,0,0),('7940000000',1,'Reversión impagos',1,0,0),('7940000000',16,'Reversión impagos',0,0,0); +INSERT INTO `Gastos` VALUES ('2000000000',1,'Inmovilizado pendiente',1,0,0),('2000000000',3,'Compra de bienes de inmovilizado',1,0,0),('2600000000',1,'Fianzas',0,0,0),('4600000000',1,'Anticipos de remuneraciones',1,0,0),('4600000001',1,'Anticpos de remuneración',1,0,0),('4751000000',0,'Retenciones',0,1,0),('4751000000',1,'Retenciones',0,1,0),('4751000000',6,'Retencion',0,0,0),('4759000000',1,'Embargos salariales',1,0,0),('5200000006',1,'Deudas a c/p CRA',1,0,0),('5200000008',0,'Prestamo CP Transolver IVECO 269',1,0,0),('5200000008',1,'Prestamo Transolver 201600269',1,0,0),('5200000009',0,'Prestamo CP Transolver IVECO 270',1,0,0),('5200000009',1,'Prestamo Transolver 201600270',1,0,0),('5200000010',0,'Prestamo CP Transolver IVECO 271',1,0,0),('5200000010',1,'Prestamo Transolver 201600271',1,0,0),('5200000011',1,'Prestamo Transolver 339',0,0,0),('5200000012',1,'Prestamo Transolver 340',1,0,0),('5200000013',1,'Prestamo Transolver 341',1,0,0),('5200000014',1,'Prestamo a c/p BBVA 600.000€',1,0,0),('5200000022',1,'Linea comercio exterior',1,0,0),('5240000001',1,'Leasing BBVA',1,0,0),('5240000517',1,'Leasing c/p 0265670-03',1,0,0),('5240000518',1,'Leasing La Caixa 0265878-21',1,0,0),('5240000520',1,'Leasing Caixabank 0265669-09',1,0,0),('5240002032',1,'Leasing Iveco',1,0,0),('5240002066',1,'Leasing c/p Man',1,0,0),('5240002104',1,'Leasing c/p La caixa 3 vehículos',1,0,0),('5325000003',6,'Prestamo a partes vinculadas',0,0,0),('5420000001',1,'Prestamo concedido',1,0,0),('5650000001',1,'Fianza c/p vehiculo',0,0,0),('5660000001',1,'Suplidos',0,0,0),('5660000001',20,'Suplidos',1,0,0),('5660000002',0,'Suplidos',0,0,0),('5660000002',1,'Suplidos Transitarios nacionales',1,0,0),('5660000003',1,'Deposito c/p Ebury',1,0,0),('5660000003',4,'Deposito Ebury',0,0,0),('5660000004',4,'Deposito Global Reach',0,0,0),('6001000000',1,'Compras a terceros nacional',1,0,0),('6001000000',18,'Compras a terceros nacional',1,0,0),('6001000000',19,'Compras a terceros nacional',1,0,0),('6001000001',1,'Adquisiones en Europa',0,0,0),('6001000001',3,'Adquisición en Europa',1,0,0),('6002000000',1,'Transportes de compras',1,0,0),('6002000001',1,'Tranportes de compra Europa',1,0,0),('6002000001',4,'Transportes de compras Europa',1,0,0),('6002000567',0,'Transporte de compras VNH',1,0,0),('6003000000',1,'Adquisición mercancia Extracomunitaria',1,0,0),('6003000000',5,'Adquisición mercancia Extracomunitaria',1,0,0),('6003000000',6,'Adquisición mercancia Extracomunitaria',1,0,0),('6003000567',0,'Compra de mercancia extracomunitaria VNH',1,0,0),('6004000000',1,'Transporte compras Sudamérica',1,0,0),('6004000000',4,'Transporte compras Sudamérica',1,0,0),('6004000000',6,'Transporte compras Sudamérica',1,0,0),('6010000000',1,'Materias primas',1,0,0),('6020000000',1,'Otros aprovisionamientos',1,0,0),('6020000001',1,'Embalajes',1,0,0),('6020000002',1,'Otros aprov. Taller artíficial',1,0,0),('6070000000',1,'Trabajos de produccion encargados a terceros',1,0,0),('6090000000',6,'Rappels por compras',1,0,0),('6100000000',0,'Variacion existencias',1,0,0),('6210000000',1,'Arrendamientos',1,0,0),('6210000001',1,'Arrendamiento vehículo',1,0,0),('6210000001',4,'Gastos de arrendamiento vehículos',1,0,0),('6210000002',1,'Arrendamiento nave',1,0,0),('6210000003',1,'Arrendamiento espacio virtual-informatic',1,0,0),('6210000004',1,'Arrendamiento elementos para el proceso de informa',1,0,0),('6210000005',1,'Arrendamiento CC y banddejas',1,0,0),('6210000567',0,'Alquiler VNH',1,0,0),('6220000000',1,'Reparaciones y conservacion',1,0,0),('6220000001',1,'Reparación-Informatica',1,0,0),('6220000001',4,'Reparacion y mantenimiento informatica',1,0,0),('6220000003',1,'Reparación-Vehiculos',1,0,0),('6220000004',1,'Reparación-Instalaciones',1,0,0),('6220000005',1,'Reparación y mantenimineto CCs',1,0,0),('6220000006',1,'Repracion y conser maquinaria',1,0,0),('6230000000',1,'Servicios de profesionales independientes',1,0,0),('6230000000',4,'Servicio de profesionales',0,0,0),('6230000000',6,'Servicios de profesionales',1,0,0),('6230000001',1,'Servicios por gestión de ventas',1,0,0),('6230000001',4,'Servicios por gestión de ventas',1,0,0),('6240000000',1,'Transportes de ventas rutas',1,0,0),('6240000000',4,'Transportes de ventas',1,0,0),('6240000001',1,'Transporte ventas agencias',1,0,0),('6240000002',1,'Transporte ventas reclamaciones',1,0,0),('6240000567',1,'Transporte ventas VNH',1,0,0),('6250000000',1,'Primas de seguros',1,0,0),('6250000000',4,'Prima de Seguros',1,0,0),('6250000001',1,'Primas de seguros-Personales',1,0,0),('6250000002',1,'Primas de seguros-Colectivos',1,0,0),('6250000003',1,'Primas de seguros-Vehiculos',1,0,0),('6250000004',1,'Primas de seguros-Inmuebles',1,0,0),('6250000567',0,'Seguros VNH',1,0,0),('6260000000',1,'Gastos bancarios',1,0,0),('6260000000',4,'Gastos bancarios',0,0,0),('6260000000',6,'Gastos bancarios',1,0,0),('6260000001',1,'Gastos bancarios datafono',1,0,0),('6260000002',1,'Gastos bancarios transferencia nacional',1,0,0),('6260000003',1,'Gastos bancarios transferencia Europa',1,0,0),('6260000004',1,'Gastos bancarios transferencia divisas',1,0,0),('6260000567',0,'Gastos bancarios VNH',1,0,0),('6270000000',1,'Publicidad y RRPP',1,0,0),('6270000000',3,'Publicidad, propaganda y RR PP',1,0,0),('6270000000',6,'Publicidad',1,0,0),('6270000000',14,'Publicidad, propaganda RRPP',1,0,0),('6270000001',1,'Patrocinio',0,0,0),('6280000000',1,'Suministros',1,0,0),('6280000001',1,'Telefonos',1,0,0),('6280000002',1,'Gasoil',1,0,0),('6280000003',1,'Suministros-Electricidad',1,0,0),('6280000004',1,'Internet',1,0,0),('6280000567',0,'Suministros VNH',1,0,0),('6280001567',0,'Suministros telefono VNH',1,0,0),('6280003567',0,'Suministro luz VNH',1,0,0),('6290000000',1,'Otros servicios',1,0,0),('6290000000',6,'Otros gastos varios',1,0,0),('6290000001',1,'Material de oficina',1,0,0),('6290000002',1,'Gastos en formacion',1,0,0),('6290000003',1,'Asesoria juridica',1,0,0),('6290000004',4,'Otros servicios UE',1,0,0),('6290000005',1,'Gastos varios-Correos',1,0,0),('6290000006',1,'Otros servicios extranjero',1,0,0),('6290000006',5,'Otros servicios extranjero',1,0,0),('6290000006',6,'Otros servicios extranjero',1,0,0),('6290000007',1,'Gastos pequeño material',1,0,0),('6290000007',3,'Compras pequeño material',1,0,0),('6290000007',6,'Pequeño material',1,0,0),('6290000008',1,'Gastos varios-uniformes personal',1,0,0),('6290000008',3,'Compra uniformes',1,0,0),('6290000009',1,'Gastos-CC Container',1,0,0),('6290000010',1,'Gastos formación clientes',1,0,0),('6290000012',1,'Gastos gestión contra-reembolsos',1,0,0),('6290000013',1,'Arrendamiento Vilassar',1,0,0),('6290000014',1,'Gasto laboral espresas ETT',1,0,0),('6290000015',1,'Gasto compra terminales moviles y similares',1,0,0),('6290000015',3,'Gasto compra terminales moviles y similares',1,0,0),('6290000015',6,'Gasto compra terminales moviles y similares',1,0,0),('6290000016',1,'Gasto gestión cobro ventas',1,0,0),('6290000553',1,'Gastos viaje administrador',1,0,0),('6290000553',4,'Gastos viaje administrador-gerente',1,0,0),('6290000553',6,'Gastos viaje administrador',1,0,0),('6290001000',1,'Gastos de viaje',1,0,0),('6290001000',4,'Gastos viajes otros departamentos',1,0,0),('6290001000',6,'Gastos viaje personal otros departamentos',1,0,0),('6290001001',1,'Gastos R.R.P.P. Gerente',1,0,0),('6290001002',1,'Gastos R.R.P.P. Comerciales',1,0,0),('6290001567',0,'Gastos material oficina',1,0,0),('6300000000',1,'Impuesto de sociedades',1,0,0),('6310000000',1,'Otros tributos',1,0,0),('6380000000',1,'Ajustes positivos s/b Bº',1,0,0),('6400000000',0,'Sueldos y salarios',1,0,0),('6400000000',1,'Salarios',0,0,0),('6400000001',0,'Productividad',1,0,0),('6400000567',0,'Salarios VNH',1,0,0),('6410000001',1,'Indemnizaciones',1,0,0),('6420000000',0,'Seguridad Social a cargo de la empresa',1,0,0),('6420000000',1,'Seguridad Social',0,0,0),('6490000000',1,'Otros gastos sociales',1,0,0),('6500000000',1,'Impagados definitivos',1,0,0),('6620000000',0,'Intereses Bancarios',1,0,0),('6620000001',1,'Intereses deudas a l/p',1,0,0),('6620000006',1,'Intereses deuda prestamo CRA',1,0,0),('6620000007',1,'Intereses La Caixa linea comercio exterior',1,0,0),('6620000007',16,'Intereses La Caixa Linea Comercio Exterior',0,0,0),('6620000008',1,'Intereses Prestamos Transolver 2016',1,0,0),('6620000011',1,'Intereses BBVA linea comercio exterior',1,0,0),('6620000014',1,'Intereses Prestamo BBVA',1,0,0),('6620000015',1,'Interés Póliza Deutsche Bank Comercio Exterior',0,0,0),('6620000023',1,'Intereses Bankinter Póliza Comercio Exterior',0,0,0),('6620000517',1,'Intereses Leasing La caixa 0265670-03',1,0,0),('6620000518',1,'Interses Leasing La caixa 0265878-21',1,0,0),('6620000520',1,'Intereses Caixabank leasing 265669-09',1,0,0),('6620002032',1,'Intereses Leaing Iveco',1,0,0),('6620002066',1,'Leasing Intereses Man',1,0,0),('6620002104',1,'Intereses Leasing La caixa 3 vehículos',1,0,0),('6622000000',20,'Intereses deudas otras partes vinculadas',1,0,0),('6660000000',1,'Perdidas en valores representativos de deuda a l/p',0,0,0),('6681000000',1,'Diferencia negativa tipo de cambio',1,0,0),('6681000000',4,'Diferencia negativa tipo de cambio',0,0,0),('6681000000',6,'Diferencia negativa tipo de cambio',1,0,0),('6681000567',0,'Diferencias de cambio VNH',1,0,0),('6690000000',1,'Otros gastos financieros',1,0,0),('6690000000',6,'Gastos financieros',1,0,0),('6720000000',16,'Perdidas procedentes de inversiones',0,0,0),('6780000000',1,'Gastos extraordinarios',1,0,0),('6780000001',1,'Gastos no deducibles',1,0,0),('6780000001',16,'Gasto no deducible',0,0,0),('6800000000',1,'Amortización inmovilizado intangible',1,0,0),('6800000001',0,'Amortizacion inmovilizado material',1,0,0),('6800000001',1,'Amortización del inmovilizado material',1,0,0),('6810000000',0,'Amortizaciones inmovilizado',1,0,0),('6810000000',1,'Amortizacion inmovilizado material',1,0,0),('7000000000',0,'Ventas',1,0,0),('7000000001',1,'Venta entre empresas',1,0,0),('7000010000',0,'Terceros Flor',1,0,0),('7000020000',0,'Terceros Planta',1,0,0),('7000030000',0,'Terceros Complementos',1,0,0),('7000040000',0,'Terceros Artificial',1,0,0),('7000050000',0,'Terceros Verdes',1,0,0),('7000060000',0,'Terceros Otros',1,0,0),('7000070000',0,'Terceros Confección',1,0,0),('7000080000',1,'Terceros Logística',1,0,0),('7000090000',1,'Terceros Mascotas',1,0,0),('7000100000',1,'Terceros Confeccion Artificial',1,0,0),('7001000000',1,'Mercaderia',1,0,1),('7001009000',1,'Grupo Mascotas',1,0,0),('7001010000',0,'Grupo Flor',1,0,0),('7001020000',0,'Grupo Planta',1,0,0),('7001030000',0,'Grupo Complementos',1,0,0),('7001040000',0,'Grupo Artificial',1,0,0),('7001050000',0,'Grupo Verdes',1,0,0),('7001060000',0,'Grupo Otros',1,0,0),('7001070000',0,'Grupo Confección',1,0,0),('7001080000',1,'Grupo Logística',1,0,0),('7001100000',1,'Grupo Confeccion Artificial',1,0,0),('7002009000',1,'Asociados Mascotas',1,0,0),('7002010000',0,'Asociados Flor',1,0,0),('7002020000',0,'Asociados Planta',1,0,0),('7002030000',0,'Asociados Complementos',1,0,0),('7002040000',0,'Asociados Artificial',1,0,0),('7002050000',0,'Asociados Verdes',1,0,0),('7002060000',0,'Asociados Otros',1,0,0),('7002070000',0,'Asociados Confección',1,0,0),('7002080000',1,'Asociados Logística',1,0,0),('7002100000',1,'Asociados Confeccion Artificial',1,0,0),('7040000000',1,'Embalajes',1,0,1),('7050000000',1,'Prestacion de servicios',1,0,1),('7400000000',1,'Subvenciones, donaciones a la explotacion',1,0,0),('7550000000',0,'Ingresos por serivicios al personal',1,0,0),('7620000000',16,'Intereses de créditos a l/p',1,0,0),('768,0',0,NULL,1,0,0),('7680000000',0,'Diferencias positivas de cambio',1,0,0),('7680000000',1,'Diferenica positiva tipo de cambio',1,0,0),('7680000000',4,'Diferenica positiva tipo de cambio',0,0,0),('7680000000',6,'Diferenica positiva tipo de cambio',1,0,0),('7690000000',1,'Otros ingresos financieros',1,0,0),('7710000000',20,'Beneficio procendente vta inm',1,0,0),('7780000000',1,'Ingresos excepcionales',1,0,0),('7780000000',16,'Ingreso extraordinario',0,0,0),('7780000001',1,'Indemnizaciones transporte',1,0,0),('7780000001',4,'Indemnizaciones agencias transporte',1,0,0),('7780000001',5,'Indemnizaciones agencias transporte',1,0,0),('7780000001',6,'Indemnizaciones transporte',1,0,0),('7940000000',1,'Reversión impagos',1,0,0),('7940000000',16,'Reversión impagos',0,0,0); /*!40000 ALTER TABLE `Gastos` ENABLE KEYS */; UNLOCK TABLES; @@ -448,7 +438,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:35 USE `bi`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -496,7 +486,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:35 USE `cache`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -534,7 +524,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:35 USE `hedera`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -602,7 +592,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:35 USE `postgresql`; -- MySQL dump 10.13 Distrib 5.7.26, for Linux (x86_64) -- @@ -677,7 +667,7 @@ UNLOCK TABLES; LOCK TABLES `workcenter` WRITE; /*!40000 ALTER TABLE `workcenter` DISABLE KEYS */; -INSERT INTO `workcenter` VALUES (1,'Silla',20,906,1),(2,'Mercaflor',19,NULL,NULL),(3,'Marjales',26,20006,NULL),(4,'VNH',NULL,NULL,3),(5,'Madrid',28,2846,5),(6,'Vilassar',88,88014,2),(7,'Tenerife',NULL,NULL,10),(8,'Silla-Agrario',26,NULL,NULL); +INSERT INTO `workcenter` VALUES (1,'Silla',20,935,1),(2,'Mercaflor',19,NULL,NULL),(3,'Marjales',26,20006,NULL),(4,'VNH',NULL,NULL,3),(5,'Madrid',28,2847,5),(6,'Vilassar',88,88016,2),(7,'Tenerife',NULL,NULL,10),(8,'Silla-Agrario',26,NULL,NULL); /*!40000 ALTER TABLE `workcenter` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -690,4 +680,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:45:50 +-- Dump completed on 2019-07-04 11:10:35 diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index 9d05c0ad8..5af72a24a 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -1,30 +1,35 @@ - - ALTER TABLE `vn`.`itemTaxCountry` AUTO_INCREMENT = 1; ALTER TABLE `vn2008`.`Consignatarios` AUTO_INCREMENT = 1; +INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`) + VALUES + ('1', '6'); + INSERT INTO `account`.`mailConfig` (`id`, `domain`) VALUES ('1', 'verdnatura.es'); -INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `password`,`role`,`active`,`email`) - SELECT id, name, CONCAT(name, 'Nick'),MD5('nightmare'), id, 1, CONCAT(name, '@mydomain.com') +INSERT INTO `account`.`user`(`id`,`name`, `nickname`, `password`,`role`,`active`,`email`, `lang`) + SELECT id, name, CONCAT(name, 'Nick'),MD5('nightmare'), id, 1, CONCAT(name, '@mydomain.com'), 'es' FROM `account`.`role`; INSERT INTO `vn2008`.`Trabajadores`(`Id_Trabajador`,`CodigoTrabajador`, `Nombre`, `Apellidos`, `user_id`, `boss`) SELECT id,UPPER(LPAD(role, 3, '0')), name, name, id, 9 FROM `vn`.`user`; -UPDATE `vn2008`.`Trabajadores` SET boss = 1 WHERE Id_Trabajador = 1 OR Id_Trabajador = 9; +UPDATE `vn2008`.`Trabajadores` SET boss = NULL WHERE Id_Trabajador = 20; +UPDATE `vn2008`.`Trabajadores` SET boss = 20 + WHERE Id_Trabajador = 1 OR Id_Trabajador = 9; + DELETE FROM `vn`.`worker` WHERE name ='customer'; INSERT INTO `account`.`user`(`id`,`name`,`password`,`role`,`active`,`email`,`lang`) VALUES (101, 'BruceWayne', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'BruceWayne@mydomain.com', 'es'), (102, 'PetterParker', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'PetterParker@mydomain.com', 'es'), - (103, 'ClarkKent', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'ClarkKent@mydomain.com', 'es'), + (103, 'ClarkKent', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'ClarkKent@mydomain.com', 'fr'), (104, 'TonyStark', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'TonyStark@mydomain.com', 'es'), - (105, 'MaxEisenhardt', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'MaxEisenhardt@mydomain.com', 'es'), + (105, 'MaxEisenhardt', 'ac754a330530832ba1bf7687f577da91', 2, 1, 'MaxEisenhardt@mydomain.com', 'pt'), (106, 'DavidCharlesHaller', 'ac754a330530832ba1bf7687f577da91', 1, 1, 'DavidCharlesHaller@mydomain.com', 'es'), (107, 'HankPym', 'ac754a330530832ba1bf7687f577da91', 1, 1, 'HankPym@mydomain.com', 'es'), (108, 'CharlesXavier', 'ac754a330530832ba1bf7687f577da91', 1, 1, 'CharlesXavier@mydomain.com', 'es'), @@ -33,30 +38,31 @@ INSERT INTO `account`.`user`(`id`,`name`,`password`,`role`,`active`,`email`,`lan (111, 'Missing', 'ac754a330530832ba1bf7687f577da91', 2, 0, NULL, 'es'), (112, 'Trash', 'ac754a330530832ba1bf7687f577da91', 2, 0, NULL, 'es'); -INSERT INTO `vn2008`.`Trabajadores`(`CodigoTrabajador`, `Id_Trabajador`, `Nombre`, `Apellidos`, `user_id`) +INSERT INTO `vn2008`.`Trabajadores`(`CodigoTrabajador`, `Id_Trabajador`, `Nombre`, `Apellidos`, `user_id`,`boss`) VALUES - ('LGN', 106, 'David Charles', 'Haller', 106), - ('ANT', 107, 'Hank' , 'Pym' , 107), - ('DCX', 110, 'Charles' , 'Xavier', 108), - ('HLK', 109, 'Bruce' , 'Banner', 109), - ('JJJ', 108, 'Jessica' , 'Jones' , 110); + ('LGN', 106, 'David Charles', 'Haller', 106, 19), + ('ANT', 107, 'Hank' , 'Pym' , 107, 19), + ('DCX', 110, 'Charles' , 'Xavier', 108, 19), + ('HLK', 109, 'Bruce' , 'Banner', 109, 19), + ('JJJ', 108, 'Jessica' , 'Jones' , 110, 19); -INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`) +INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`, `ibanLength`) VALUES - (1, 'España', 0, 'ES', 1), - (2, 'Italia', 1, 'IT', 1), - (3, 'Alemania', 1, 'DE', 1), - (4, 'Rumania', 1, 'RO', 1), - (5, 'Holanda', 1, 'NL', 1), - (30,'Francia', 1, 'FR', 1); + (1, 'España', 0, 'ES', 1, 22), + (2, 'Italia', 1, 'IT', 1, 25), + (3, 'Alemania', 1, 'DE', 1, 20), + (4, 'Rumania', 1, 'RO', 1, 22), + (5, 'Holanda', 1, 'NL', 1, 16), + (19,'Francia', 1, 'FR', 1, 25), + (30,'Canarias', 1, 'IC', 1, 22); INSERT INTO `vn`.`warehouse`(`id`, `name`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`) VALUES - (1, 'Warehouse One', 0, 1, 1, 1), - (2, 'Warehouse Two', 0, 1, 1, 1), + (1, 'Warehouse One', 1, 1, 1, 1), + (2, 'Warehouse Two', 1, 1, 1, 1), (3, 'Warehouse Three', 1, 1, 1, 1), (4, 'Warehouse Four', 1, 1, 1, 1), - (5, 'Warehouse Five', 1, 0, 1, 0); + (5, 'Warehouse Five', 1, 1, 1, 1); INSERT INTO `vn`.`warehouseAlias`(`id`, `name`) VALUES @@ -85,8 +91,8 @@ INSERT INTO `vn`.`agency`(`id`, `name`, `warehouseFk`, `isVolumetric`, `bankFk`, (6, 'Walking' , 1, 0, 1, 1), (7, 'Silla247' , 1, 0, 1, 1), (8, 'Silla247Expensive' , 1, 0, 1, 1), - (9, 'ABONO' , 1, 0, 1, 1), - (10, 'OTRA AGENCIA' , 1, 0, 1, 1); + (9, 'Refund' , 1, 0, 1, 1), + (10, 'Other agency' , 1, 0, 1, 1); UPDATE `vn`.`agencyMode` SET `id` = 1 WHERE `name` = 'inhouse pickup'; UPDATE `vn`.`agencyMode` SET `id` = 2 WHERE `name` = 'Super-Man delivery'; @@ -96,8 +102,8 @@ UPDATE `vn`.`agencyMode` SET `id` = 5 WHERE `name` = 'Quantum break device'; UPDATE `vn`.`agencyMode` SET `id` = 6 WHERE `name` = 'Walking'; UPDATE `vn`.`agencyMode` SET `id` = 7 WHERE `name` = 'Silla247'; UPDATE `vn`.`agencyMode` SET `id` = 8 WHERE `name` = 'Silla247Expensive'; -UPDATE `vn`.`agencyMode` SET `id` = 23 WHERE `name` = 'ABONO'; -UPDATE `vn`.`agencyMode` SET `id` = 10 WHERE `name` = 'OTRA AGENCIA'; +UPDATE `vn`.`agencyMode` SET `id` = 23 WHERE `name` = 'Refund'; +UPDATE `vn`.`agencyMode` SET `id` = 10 WHERE `name` = 'Other agency'; UPDATE `vn`.`agencyMode` SET `deliveryMethodFk` = 1 WHERE `id` = 1; UPDATE `vn`.`agencyMode` SET `deliveryMethodFk` = 1 WHERE `id` = 2; @@ -141,6 +147,20 @@ INSERT INTO `vn`.`province`(`id`, `name`, `countryFk`, `warehouseFk`, `zoneFk`) (4, 'Province four', 1, NULL, 2), (5, 'Province five', 1, NULL, 1); +INSERT INTO `vn`.`town`(`id`, `name`, `provinceFk`) + VALUES + (1, 'Valencia', 1), + (2, 'Silla', 1), + (3, 'Algemesi', 1), + (4, 'Alzira', 1); + +INSERT INTO `vn`.`postCode`(`code`, `townFk`) + VALUES + ('46000', 1), + ('46460', 2), + ('46680', 3), + ('46600', 4); + INSERT INTO `vn`.`clientType`(`id`, `code`, `type`) VALUES (1, 'normal', 'Normal'), @@ -166,18 +186,18 @@ INSERT INTO `vn`.`contactChannel`(`id`, `name`) INSERT INTO `vn`.`client`(`id`,`name`,`fi`,`socialName`,`contact`,`street`,`city`,`postcode`,`phone`,`mobile`,`fax`,`isRelevant`,`email`,`iban`,`dueDay`,`accountingAccount`,`isEqualizated`,`provinceFk`,`hasToInvoice`,`credit`,`countryFk`,`isActive`,`gestdocFk`,`quality`,`payMethodFk`,`created`,`isToBeMailed`,`contactChannelFk`,`hasSepaVnl`,`hasCoreVnl`,`hasCoreVnh`,`riskCalculated`,`clientTypeFk`,`mailAddress`,`cplusTerIdNifFk`,`hasToInvoiceByAddress`,`isTaxDataChecked`,`isFreezed`,`creditInsurance`,`isCreatedAsServed`,`hasInvoiceSimplified`,`salesPersonFk`,`isVies`,`eypbc`) VALUES - (101, 'Bruce Wayne', '84612325V', 'Batman', 'Alfred', '1007 Mountain Drive, Gotham', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 1, 1, NULL, 0, 0, 18, 0, 1), - (102, 'Petter Parker', '87945234L', 'Spider-Man', 'Aunt May', '20 Ingram Street', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 0, 1, NULL, 0, 0, 18, 0, 1), - (103, 'Clark Kent', '06815934E', 'Super-Man', 'lois lane', '344 Clinton Street', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 0, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1), - (104, 'Tony Stark', '06089160W', 'Iron-Man', 'Pepper Potts', '10880 Malibu Point', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1), - (105, 'Max Eisenhardt', '39182496H', 'Magneto', 'Rogue', 'Unknown Whereabouts', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, NULL, 0, 1), - (106, 'DavidCharlesHaller', '53136686Q', 'Legion', 'Charles Xavier', 'Evil hideout', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 19, 0, 1), - (107, 'Hank Pym', '09854837G', 'Ant-Man', 'Hawk', 'Anthill', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1), - (108, 'Charles Xavier', '22641921P', 'Professor X', 'Beast', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 1, 1, NULL, 0, 0, 19, 0, 1), - (109, 'Bruce Banner', '16104829E', 'Hulk', 'Black widow', 'Somewhere in New York', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 0, 1, NULL, 0, 0, 19, 0, 1), - (110, 'Jessica Jones', '58282869H', 'Jessica Jones', 'Luke Cage', 'NYCC 2015 Poster', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 1, NULL, 1, 1, 0, 1, NULL, 0, 0, NULL, 0, 1), - (200, 'Missing', NULL, 'Missing man', 'Anton', 'The space', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 4, NULL, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1), - (400, 'Trash', NULL, 'Garbage man', 'Unknown name', 'New York city', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1,'0000-00-00', 4, NULL, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1); + (101, 'Bruce Wayne', '84612325V', 'Batman', 'Alfred', '1007 Mountain Drive, Gotham', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'BruceWayne@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1), + (102, 'Petter Parker', '87945234L', 'Spider-Man', 'Aunt May', '20 Ingram Street', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'PetterParker@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1), + (103, 'Clark Kent', '06815934E', 'Super-Man', 'lois lane', '344 Clinton Street', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'ClarkKent@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 0, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1), + (104, 'Tony Stark', '06089160W', 'Iron-Man', 'Pepper Potts', '10880 Malibu Point', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'TonyStark@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 18, 0, 1), + (105, 'Max Eisenhardt', '251628698', 'Magneto', 'Rogue', 'Unknown Whereabouts', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'MaxEisenhardt@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 1, NULL, 0, 0, 18, 0, 1), + (106, 'DavidCharlesHaller', '53136686Q', 'Legion', 'Charles Xavier', 'Evil hideout', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'DavidCharlesHaller@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 0, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 0, NULL, 0, 0, 19, 0, 1), + (107, 'Hank Pym', '09854837G', 'Ant-Man', 'Hawk', 'Anthill', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'HankPym@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1), + (108, 'Charles Xavier', '22641921P', 'Professor X', 'Beast', '3800 Victory Pkwy, Cincinnati, OH 45207, USA', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'CharlesXavier@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 1, 1, NULL, 0, 0, 19, 0, 1), + (109, 'Bruce Banner', '16104829E', 'Hulk', 'Black widow', 'Somewhere in New York', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'BruceBanner@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 0, 0, NULL, 0, 0, 19, 0, 1), + (110, 'Jessica Jones', '58282869H', 'Jessica Jones', 'Luke Cage', 'NYCC 2015 Poster', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, 'JessicaJones@mydomain.com', NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 1, NULL, 1, 1, 0, 0, NULL, 0, 0, NULL, 0, 1), + (200, 'Missing', NULL, 'Missing man', 'Anton', 'The space', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, NULL, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1), + (400, 'Trash', NULL, 'Garbage man', 'Unknown name', 'New York city', 'Silla', 46460, 1111111111, 222222222, 333333333, 1, NULL, NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1, NULL, 10, 5,CURDATE(), 1, 5, 1, 1, 1, '0000-00-00', 4, NULL, 1, 0, 1, 0, NULL, 1, 0, NULL, 0, 1); INSERT INTO `vn`.`client`(`id`, `name`, `fi`, `socialName`, `contact`, `street`, `city`, `postcode`, `phone`, `isRelevant`, `email`, `iban`,`dueDay`,`accountingAccount`, `isEqualizated`, `provinceFk`, `hasToInvoice`, `credit`, `countryFk`, `isActive`, `gestdocFk`, `quality`, `payMethodFk`,`created`, `isTaxDataChecked`) SELECT id, name, CONCAT(RPAD(CONCAT(id,9),8,id),'A'), CONCAT(name, 'Social'), CONCAT(name, 'Contact'), CONCAT(name, 'Street'), 'SILLA', 46460, 623111111, 1, CONCAT(name,'@mydomain.com'), NULL, 0, 1234567890, 0, 1, 1, 300, 1, 1,NULL, 10, 5, CURDATE(), 1 @@ -186,10 +206,10 @@ INSERT INTO `vn`.`client`(`id`, `name`, `fi`, `socialName`, `contact`, `street`, INSERT INTO `vn`.`clientManaCache`(`clientFk`, `mana`, `dated`) VALUES - ( 101, 50, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - ( 102, 100, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - ( 103, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - ( 104, -30, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)); + (101, 50, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (102, 100, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (103, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (104, -30, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)); INSERT INTO `vn`.`address`(`id`, `nickname`, `street`, `city`, `postalCode`, `provinceFk`, `phone`, `mobile`, `isActive`, `clientFk`, `agencyModeFk`, `longitude`, `latitude`, `isEqualizated`, `isDefaultAddress`) VALUES @@ -312,9 +332,9 @@ INSERT INTO `vn`.`observationType`(`id`,`description`) INSERT INTO `vn`.`addressObservation`(`id`,`addressFk`,`observationTypeFk`,`description`) VALUES - (1, 1, 1,'under the floor'), - (2, 1, 2,'wears leather and goes out at night'), - (3, 1, 3,'care with the dog'); + (1, 121, 1, 'under the floor'), + (2, 121, 2, 'wears leather and goes out at night'), + (3, 121, 3, 'care with the dog'); INSERT INTO `vn`.`creditClassification`(`id`, `client`, `dateStart`, `dateEnd`) VALUES @@ -326,19 +346,19 @@ INSERT INTO `vn`.`creditClassification`(`id`, `client`, `dateStart`, `dateEnd`) INSERT INTO `vn`.`creditInsurance`(`id`, `creditClassification`, `credit`, `creationDate`, `grade`) VALUES - (1, 1 , 3000, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL), - (2, 2 , 6000, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), NULL), - (3, 3, 10000 , DATE_ADD(CURDATE(), INTERVAL -3 MONTH), NULL); + (1, 1, 3000, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), NULL), + (2, 2, 6000, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), NULL), + (3, 3, 10000, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), NULL); INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`) VALUES - (1, '1899-12-30 12:15:00', 56, CURDATE(), 1, 1, 'first route', null, 10, CURDATE(), CURDATE()), - (2, '1899-12-30 13:20:00', 56, CURDATE(), 1, 1, 'second route', 4.2, 20, CURDATE(), CURDATE()), - (3, '1899-12-30 14:30:00', 56, CURDATE(), 2, 7, 'third route', 5.3, 30, CURDATE(), CURDATE()), - (4, '1899-12-30 15:45:00', 56, CURDATE(), 3, 7, 'fourth route', 6.4, 40, CURDATE(), CURDATE()), - (5, '1899-12-30 16:00:00', 56, CURDATE(), 4, 8, 'fifth route', 7.5, 50, CURDATE(), CURDATE()), - (6, null, 57, CURDATE(), 5, 8, 'sixth route', 8.6, 60, CURDATE(), CURDATE()), - (7, null, 57, CURDATE(), 6, null, 'seventh route', 9.7, 70, CURDATE(), CURDATE()); + (1, '1899-12-30 12:15:00', 56, CURDATE(), 1, 7, 'first route', 2.7, 10, CURDATE(), CURDATE()), + (2, '1899-12-30 13:20:00', 56, CURDATE(), 1, 7, 'second route', 0.9, 20, CURDATE(), CURDATE()), + (3, '1899-12-30 14:30:00', 56, CURDATE(), 2, 7, 'third route', 1.1, 30, CURDATE(), CURDATE()), + (4, '1899-12-30 15:45:00', 56, CURDATE(), 3, 7, 'fourth route', 0.1, 40, CURDATE(), CURDATE()), + (5, '1899-12-30 16:00:00', 56, CURDATE(), 4, 8, 'fifth route', NULL, 50, CURDATE(), CURDATE()), + (6, NULL, 57, CURDATE(), 5, 8, 'sixth route', NULL, 60, CURDATE(), CURDATE()), + (7, NULL, 57, CURDATE(), 6, NULL, 'seventh route', NULL, 70, CURDATE(), CURDATE()); INSERT INTO `vn2008`.`empresa_grupo`(`empresa_grupo_id`, `grupo`) VALUES @@ -346,28 +366,28 @@ INSERT INTO `vn2008`.`empresa_grupo`(`empresa_grupo_id`, `grupo`) INSERT INTO `vn`.`bankEntity`(`id`, `countryFk`, `name`, `bic`) VALUES - ( 128, 1, 'The Best Bank', 'BBKKESMMMMMM'), - ( 2100, 1, 'Caixa Bank', 'CAIXESBB'); + (128, 1, 'The Best Bank', 'BBKKESMMMMMM'), + (2100, 1, 'Caixa Bank', 'CAIXESBB'); INSERT INTO `vn`.`supplierAccount`(`id`, `supplierFk`, `iban`, `bankEntityFk`) VALUES - ( 241, 442, 'ES111122333344111122221111', 128); + (241, 442, 'ES111122333344111122221111', 128); INSERT INTO `vn`.`company`(`id`, `code`, `supplierAccountFk`, `workerManagerFk`, `companyCode`, `sage200Company`, `expired`) VALUES - ( 69 , 'CCs', NULL, 30, NULL, 0, NULL), - ( 442 , 'VNL', 241, 30, 2 , 1, NULL), - ( 567 , 'VNH', NULL, 30, NULL, 4, NULL), - ( 791 , 'FTH', NULL, 30, NULL, 3, '2015-11-30'), - ( 1381, 'ORN', NULL, 30, NULL, 7, NULL); + (69 , 'CCs', NULL, 30, NULL, 0, NULL), + (442 , 'VNL', 241, 30, 2 , 1, NULL), + (567 , 'VNH', NULL, 30, NULL, 4, NULL), + (791 , 'FTH', NULL, 30, NULL, 3, '2015-11-30'), + (1381, 'ORN', NULL, 30, NULL, 7, NULL); INSERT INTO `vn`.`invoiceOut`(`id`, `serial`, `amount`, `issued`,`clientFk`, `created`, `companyFk`, `dued`, `booked`, `bankFk`, `pdf`) VALUES - ( 1, 'T', 156.09, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 101, CURDATE(), 442, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), CURDATE(), 1, 1), - ( 2, 'T', 208.35, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 102, CURDATE(), 442, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), CURDATE(), 1, 1), - ( 3, 'T', 20.02, CURDATE(), 103, CURDATE(), 442, CURDATE(), null, 1, 1), - ( 4, 'T', 20.02, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 103, CURDATE(), 442, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), null, 1, 1), - ( 5, 'A', 20.22, DATE_ADD(CURDATE(), INTERVAL +2 MONTH), 103, CURDATE(), 442, DATE_ADD(CURDATE(), INTERVAL +2 MONTH), null, 1, 1); + (1, 'T', 1014.24, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 101, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 442, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 1), + (2, 'T', 121.36, CURDATE(), 102, CURDATE(), 442, CURDATE(), CURDATE(), 1, 1), + (3, 'T', 8.88, CURDATE(), 103, CURDATE(), 442, CURDATE(), CURDATE(), 1, 1), + (4, 'T', 8.88, CURDATE(), 103, CURDATE(), 442, CURDATE(), CURDATE(), 1, 1), + (5, 'A', 8.88, CURDATE(), 103, CURDATE(), 442, CURDATE(), CURDATE(), 1, 1); UPDATE `vn`.`invoiceOut` SET ref = 'T1111111' WHERE id = 1; UPDATE `vn`.`invoiceOut` SET ref = 'T2222222' WHERE id = 2; @@ -377,23 +397,29 @@ UPDATE `vn`.`invoiceOut` SET ref = 'A1111111' WHERE id = 5; INSERT INTO `vn`.`invoiceOutTax` (`invoiceOutFk`, `taxableBase`, `vat`, `pgcFk`) VALUES - (1, 100, 10, 4722000010), - (1, 200, 21, 4722000021), - (2, 100, 10, 4722000010), - (2, 200, 21, 4722000021), - (3, 100, 10, 4722000010), - (3, 200, 21, 4722000021), - (4, 100, 10, 4722000010), - (4, 200, 21, 4722000021), - (5, 100, 10, 4722000010), - (5, 200, 21, 4722000021); + (1, 895.76, 89.58, 4722000010), + (1, 33.80, 7.10, 4722000021), + (2, 110.33, 11.03, 4770000010), + (3, 8.07, 0.81, 4770000010), + (4, 8.07, 0.81, 4770000010), + (5, 8.07, 0.81, 4770000010); + +INSERT INTO `vn`.`invoiceOutExpence`(`id`, `invoiceOutFk`, `amount`, `expenceFk`, `created`) + VALUES + (1, 1, 813.06, 2000000000, CURDATE()), + (2, 1, 33.80, 4751000000, CURDATE()), + (3, 1, 70.70, 6210000567, CURDATE()), + (4, 2, 110.33, 2000000000, CURDATE()), + (5, 3, 8.07, 2000000000, CURDATE()), + (6, 4, 8.07, 2000000000, CURDATE()), + (7, 5, 8.07, 2000000000, CURDATE()); INSERT INTO `vn`.`taxArea` (`code`, `claveOperacionFactura`, `CodigoTransaccion`) VALUES - ('CEE', 1, 10), - ('EQU', 0, 1), - ('NATIONAL', 0, 1), - ('WORLD', 2, 15); + ('CEE', 1, 10), + ('EQU', 0, 1), + ('NATIONAL', 0, 1), + ('WORLD', 2, 15); INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaFk`, `isCEE`) VALUES @@ -401,68 +427,93 @@ INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaF ('T', 'Española rapida', 1, 'NATIONAL', 0), ('V', 'Intracomunitaria global', 0, 'CEE', 1); -INSERT INTO `vn`.`ticket`(`id`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `created`) +INSERT INTO `vn`.`zone` (`id`, `name`, `hour`, `warehouseFk`, `agencyModeFk`, `travelingDays`, `price`, `bonus`) + VALUES + (1, 'Zone pickup A', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 1, 0, 0, 0), + (2, 'Zone pickup B', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 2, 1, 0, 0, 0), + (3, 'Zone 247 A', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 7, 1, 2, 0), + (4, 'Zone 247 B', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 2, 7, 1, 2, 0), + (5, 'Zone expensive A', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 8, 1, 1000, 0), + (6, 'Zone expensive B', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 2, 8, 1, 1000, 0), + (7, 'Zone refund', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 10, 0, 0, 0), + (8, 'Zone others', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 23, 0, 0, 0), + (9, 'Zone superMan', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 2, 0, 0, 0), + (10, 'Zone teleportation', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 3, 3, 0, 0, 0), + (11, 'Zone pickup C', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 5, 1, 0, 0, 0), + (12, 'Zone entanglement', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 4, 4, 0, 0, 0), + (13, 'Zone quantum break', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 5, 5, 0, 0, 0); + +INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `zoneFk`, `created`) VALUES - (1 , 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY) , DATE_ADD(CURDATE(), INTERVAL -15 DAY) , 101, 'address 21', 121, 'T1111111', 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY) ), - (2 , 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -10 DAY) , DATE_ADD(CURDATE(), INTERVAL -10 DAY) , 101, 'address 21', 121, 'T2222222', 0, DATE_ADD(CURDATE(), INTERVAL -10 DAY) ), - (3 , 2, 2, 2, DATE_ADD(CURDATE(), INTERVAL -5 DAY) , DATE_ADD(CURDATE(), INTERVAL -5 DAY) , 102, 'address 22', 122, 'T2222222', 0, DATE_ADD(CURDATE(), INTERVAL -5 DAY) ), - (4 , 2, 2, 2, DATE_ADD(CURDATE(), INTERVAL -4 DAY) , DATE_ADD(CURDATE(), INTERVAL -4 DAY) , 102, 'address 22', 122, 'T3333333', 0, DATE_ADD(CURDATE(), INTERVAL -4 DAY) ), - (5 , 3, 3, 3, DATE_ADD(CURDATE(), INTERVAL -3 DAY) , DATE_ADD(CURDATE(), INTERVAL -3 DAY) , 103, 'address 23', 123, 'T3333333', 0, DATE_ADD(CURDATE(), INTERVAL -3 DAY) ), - (6 , 3, 3, 4, DATE_ADD(CURDATE(), INTERVAL -2 DAY) , DATE_ADD(CURDATE(), INTERVAL -2 DAY) , 103, 'address 23', 123, 'T4444444', 0, DATE_ADD(CURDATE(), INTERVAL -2 DAY) ), - (7 , 4, 4, 4, DATE_ADD(CURDATE(), INTERVAL -1 DAY) , DATE_ADD(CURDATE(), INTERVAL -1 DAY) , 104, 'address 24', 124, 'T4444444', 0, DATE_ADD(CURDATE(), INTERVAL -1 DAY) ), - (8 , 1, 1, 4, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 104, 'address 24', 124, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH) ), - (9 , 5, 5, 4, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 105, 'address 25', 125, 'A1111111', 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH) ), - (10, 6, 5, 5, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 105, 'address 25', 125, 'A1111111', 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH) ), - (11, 7, 1, 1, CURDATE() , DATE_ADD(CURDATE(), INTERVAL +1 DAY) , 101, 'address 21', 121, NULL, 0, CURDATE() ), - (12, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 101, 'address 21', 121, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH) ), - (13, 2, 2, 2, DATE_ADD(CURDATE(), INTERVAL +2 MONTH), DATE_ADD(CURDATE(), INTERVAL +2 MONTH), 101, 'address 21', 121, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +2 MONTH) ), - (14, 2, 2, 2, DATE_ADD(CURDATE(), INTERVAL +3 MONTH), DATE_ADD(CURDATE(), INTERVAL +3 MONTH), 101, 'address 21', 121, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +3 MONTH) ), - (15, 3, 3, 3, DATE_ADD(CURDATE(), INTERVAL +4 MONTH), DATE_ADD(CURDATE(), INTERVAL +4 MONTH), 101, 'address 21', 121, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +4 MONTH) ), - (16, 1, 1, 1, CURDATE(), CURDATE(), 101, 'address 21', 121, NULL, 0, CURDATE() ), - (17, 4, 4, 4, CURDATE(), CURDATE(), 106, 'address 26', 126, NULL, 0, CURDATE() ), - (18, 4, 4, 4, CURDATE(), CURDATE(), 107, 'address 27', 127, NULL, 0, CURDATE() ), - (19, 5, 5, 4, DATE_ADD(CURDATE(), INTERVAL +1 DAY), DATE_ADD(CURDATE(), INTERVAL +1 DAY), 108, 'address 28', 128, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +1 DAY) ), - (20, 5, 5, 4, DATE_ADD(CURDATE(), INTERVAL +1 DAY), DATE_ADD(CURDATE(), INTERVAL +1 DAY), 108, 'address 28', 128, NULL, 0, DATE_ADD(CURDATE(), INTERVAL +1 DAY) ), - (21, 5, 5, 4, CURDATE(), CURDATE(), 110, 'address 29', 129, NULL, 1, CURDATE() ), - (22, 5, 5, 4, DATE_ADD(CURDATE(), INTERVAL +1 DAY), DATE_ADD(CURDATE(), INTERVAL +1 DAY), 108, 'address 28', 128, NULL, 1, DATE_ADD(CURDATE(), INTERVAL +1 DAY) ); + (1 , 3, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 'Bat cave', 121, 'T1111111', 0, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (2 , 1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T1111111', 0, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (3 , 1, 7, 1, 1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T2222222', 0, 3, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), + (4 , 3, 2, 1, 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T3333333', 0, 9, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), + (5 , 3, 3, 3, 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T4444444', 0, 10, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), + (6 , 1, 3, 3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 'Mountain Drive Gotham', 1, 'A1111111', 0, 10, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (7 , NULL, 7, 1, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 'Mountain Drive Gotham', 1, NULL, 0, 3, CURDATE()), + (8 , NULL, 7, 1, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 'Bat cave', 121, NULL, 0, 3, CURDATE()), + (9 , NULL, 7, 1, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 'Stark tower', 124, NULL, 0, 3, CURDATE()), + (10, 1, 1, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 'Ingram Street', 2, NULL, 0, 11, CURDATE()), + (11, 1, 7, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 'NY roofs', 122, NULL, 0, 3, CURDATE()), + (12, 1, 1, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 'Phone Box', 123, NULL, 0, 1, CURDATE()), + (13, 1, 7, 1, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 'Phone Box', 123, NULL, 0, 1, CURDATE()), + (14, 1, 2, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 'Malibu Point', 4, NULL, 0, 9, CURDATE()), + (15, 1, 7, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 105, 'Plastic Cell', 125, NULL, 0, 3, CURDATE()), + (16, 1, 7, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 106, 'Many Places', 126, NULL, 0, 3, CURDATE()), + (17, 1, 7, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 106, 'Many Places', 126, NULL, 0, 3, CURDATE()), + (18, 1, 4, 4, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 108, 'Cerebro', 128, NULL, 0, 12, CURDATE()), + (19, 1, 5, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 109, 'Somewhere in Thailand', 129, NULL, 1, 13, CURDATE()), + (20, 1, 5, 5, 3, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere in Thailand', 129, NULL, 0, 13, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (21, NULL, 5, 5, NULL, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere in Holland', 102, NULL, 0, 13, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (22, NULL, 5, 5, NULL, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere in Japan', 103, NULL, 0, 13, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (23, NULL, 23, 1, NULL, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 'address 21', 121, NULL, 0, 8, CURDATE()), + (24 ,NULL, 23, 1, NULL, CURDATE(), CURDATE(), 101, 'Bruce Wayne', 1, NULL, 0, 8, CURDATE()); INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`) VALUES - (1, 1 , 1, 'ready' ), - (2, 2 , 2, 'do it fast please'), - (3, 3 , 3, 'Faster faster fasteeeeeer!!!'), - (4, 4 , 3, 'Deliver before 8am'), - (5, 13 , 3, 'You can run from the disappointments you are trying to forget. But its only when you embrace your past that you truly move forward. Maybe I never get to go home again, but I found my way there. And I am glad I did.'), - (6, 14, 3, 'Careful, armed warhead'); + (1, 11, 1, 'ready'), + (2, 2, 2, 'do it fast please'), + (3, 3, 3, 'Faster faster fasteeeeeer!!!'), + (4, 4, 3, 'Deliver before 8am'), + (5, 13, 3, 'You can run from the disappointments you are trying to forget. But its only when you embrace your past that you truly move forward. Maybe I never get to go home again, but I found my way there. And I am glad I did.'), + (6, 14, 3, 'Careful, armed warhead'), + (7, 23, 1, 'under the floor'), + (8, 23, 2, 'wears leather and goes out at night'), + (9, 23, 3, 'care with the dog'), + (10, 23, 4, 'Reclama ticket: 8'), + (11, 24, 4, 'Reclama ticket: 7'); INSERT INTO `vn`.`ticketTracking`(`id`, `ticketFk`, `stateFk`, `workerFk`, `created`) VALUES - (1 , 1 , 16, 5 , DATE_ADD(CURDATE(), INTERVAL -15 DAY) ), - (2 , 2 , 16, 5 , DATE_ADD(CURDATE(), INTERVAL -10 DAY) ), - (3 , 3 , 16, 5 , DATE_ADD(CURDATE(), INTERVAL -5 DAY) ), - (4 , 4 , 16, 5 , DATE_ADD(CURDATE(), INTERVAL -4 DAY) ), - (5 , 5 , 16, 18, DATE_ADD(CURDATE(), INTERVAL -3 DAY) ), - (6 , 6 , 16, 18, DATE_ADD(CURDATE(), INTERVAL -2 DAY) ), - (7 , 7 , 16, 18, DATE_ADD(CURDATE(), INTERVAL -1 DAY) ), - (8 , 8 , 3, 19, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (9 , 9 , 16, 19, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (10, 10, 16, 19, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), - (11, 11, 3 , 19, CURDATE()), - (12, 12, 3 , 19, CURDATE()), - (13, 13, 3 , 19, CURDATE()), - (14, 14, 3 , 19, CURDATE()), - (15, 15, 3 , 19, CURDATE()), - (16, 16, 1 , 19, CURDATE()), - (17, 17, 1 , 19, CURDATE()), - (18, 18, 1 , 19, CURDATE()), - (19, 19, 13, 19, CURDATE()), - (20, 20, 13, 19, CURDATE()), - (21, 21, 3 , 19, CURDATE()), - (23, 21, 13, 19, CURDATE()); + (1, 1, 16, 5 , DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (2, 2, 16, 5 , DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (3, 3, 16, 5 , DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), + (4, 4, 16, 5 , DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), + (5, 5, 16, 18, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), + (6, 6, 16, 18, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (7, 7, 10, 18, CURDATE()), + (8, 8, 5, 19, CURDATE()), + (9, 9, 5, 19, CURDATE()), + (10, 10, 5, 19, CURDATE()), + (11, 11, 3, 19, CURDATE()), + (12, 12, 3, 19, CURDATE()), + (13, 13, 3, 19, CURDATE()), + (14, 14, 3, 19, CURDATE()), + (15, 15, 3, 19, CURDATE()), + (16, 16, 3, 19, CURDATE()), + (17, 17, 3, 19, CURDATE()), + (18, 18, 3, 19, CURDATE()), + (19, 19, 17, 19, CURDATE()), + (20, 20, 1, 19, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (21, 21, 1, 19, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (22, 22, 1, 19, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (23, 23, 16, 21, CURDATE()), + (24, 24, 16, 21, CURDATE()); INSERT INTO `vn`.`stowaway`(`id`, `shipFk`, `created`) VALUES - (19, 20, CURDATE()); + (12, 13, CURDATE()); INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`) VALUES @@ -488,23 +539,24 @@ INSERT INTO `vn`.`greugeType`(`id`, `name`) INSERT INTO `vn`.`greuge`(`id`, `clientFk`, `description`, `amount`, `shipped`, `created`, `greugeTypeFk`, `ticketFk`) VALUES - (1, 101, 'some diff charges', -19.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 1, 1), - (2, 101, 'more diff charges', 60, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 2, 1), - (3, 101, 'even more! diff charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 3, 1), - (4, 101, 'insane diff charges', 60, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 4, 1), - (5, 101, 'gargantuous diff charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 5, 1), - (6, 101, 'diff charges', 88.30, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 6, 1), - (7, 101, 'unaffordable diff charges', -39.12, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 1, 1), - (8, 101, 'some recovery charges', 29.35, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 2, 1), - (9, 101, 'some manna charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 3, 1), - (10, 101, 'some claim charges', 13.13, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 4, 1), - (11, 101, 'some heritage charges', -15.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 5, 1), - (12, 101, 'some miscellaneous charges', 58.00, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 6, 1); + (1, 101, 'some diff charges', -19.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 1, 1), + (2, 101, 'more diff charges', 60, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 2, 1), + (3, 101, 'even more! diff charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 3, 1), + (4, 101, 'insane diff charges', 60, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 4, 1), + (5, 101, 'gargantuous diff charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 5, 1), + (6, 101, 'diff charges', 88.30, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 6, 1), + (7, 101, 'unaffordable diff charges', -39.12, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 1, 1), + (8, 101, 'some recovery charges', 29.35, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 2, 1), + (9, 101, 'some manna charges', -9.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 3, 1), + (10, 101, 'some claim charges', 13.13, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 4, 1), + (11, 101, 'some heritage charges', -15.99, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 5, 1), + (12, 101, 'some miscellaneous charges', 58.00, DATE_ADD(CURDATE(), INTERVAL 1 MONTH), CURDATE(), 6, 1); INSERT INTO `vn`.`mandateType`(`id`, `name`) VALUES (1, 'B2B'), - (2, 'CORE'); + (2, 'CORE'), + (3, 'LCR'); INSERT INTO `vn`.`mandate`(`id`, `clientFk`, `companyFk`, `code`, `created`, `mandateTypeFk`) VALUES @@ -512,12 +564,12 @@ INSERT INTO `vn`.`mandate`(`id`, `clientFk`, `companyFk`, `code`, `created`, `ma INSERT INTO `vn`.`itemCategory`(`id`, `name`, `display`, `color`, `icon`) VALUES - (1, 'Plant' , 1, 'B92A26', 'icon-plant'), - (2, 'Flower' , 2, 'dcf711', 'icon-flower'), - (3, 'Logistic' , 0, 'b9f711', NULL), - (4, 'Handmade' , 1, NULL, 'icon-handmade'), - (5, 'Artificial' , 1, NULL, 'icon-artificial'), - (6, 'Green' , 1, NULL, 'icon-greenery'), + (1, 'Plant', 1, 'B92A26', 'icon-plant'), + (2, 'Flower', 2, 'dcf711', 'icon-flower'), + (3, 'Logistic', 0, 'b9f711', NULL), + (4, 'Handmade', 1, NULL, 'icon-handmade'), + (5, 'Artificial', 1, NULL, 'icon-artificial'), + (6, 'Green', 1, NULL, 'icon-greenery'), (7, 'Accessories', 1, NULL, 'icon-accessory'); INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `life`,`workerFk`, `isPackaging`) @@ -530,9 +582,9 @@ INSERT INTO `vn`.`itemType`(`id`, `code`, `name`, `categoryFk`, `life`,`workerFk INSERT INTO `vn`.`ink`(`id`, `name`, `picture`, `showOrder`) VALUES - ('YEL', 'Yellow', 1 , 1), - ('BLU', 'Blue', 1 , 2), - ('RED', 'Red', 1 , 3); + ('YEL', 'Yellow', 1, 1), + ('BLU', 'Blue', 1, 2), + ('RED', 'Red', 1, 3); INSERT INTO `vn`.`origin`(`id`,`code`, `name`) VALUES @@ -548,13 +600,13 @@ INSERT INTO `vn`.`producer`(`id`, `name`) INSERT INTO `vn`.`taxType`(`id`, `nickname`, `isAccrued`, `serial`, `TIPOOPE`, `description`, `countryFk`) VALUES (1, 'National', 1, 'R', 'I', 'national VAT', 1), - (2, 'European', 0, 'E', 'I', 'europe VAT' , 1); + (2, 'European', 0, 'E', 'I', 'europe VAT', 1); INSERT INTO `vn`.`taxCode`(`id`, `dated`, `code`, `taxTypeFk`, `rate`, `equalizationTax`, `type`, `link`, `isActive`, `updated`, `transactionCode`) VALUES (1 , CURDATE(), '1111111111', 1, 7.0 , 0.0, 'R', 1, 1, CURDATE(), 1), (2 , CURDATE(), '2222222222', 2, 16.0, 0.0, 'G', 2, 1, CURDATE(), 1), - (21 , CURDATE(), '3333333333', 1, 7.0, 0.0, 'R', 3, 1, CURDATE(), 1), + (21 , CURDATE(), '3333333333', 1, 7.0, 0.0, 'R', 3, 1, CURDATE(), 1), (108, CURDATE(), '4444444444', 2, 8.0 , 0.0, 'R', 4, 1, CURDATE(), 1); INSERT INTO `vn`.`taxClass`(`id`, `description`, `code`) @@ -564,7 +616,7 @@ INSERT INTO `vn`.`taxClass`(`id`, `description`, `code`) INSERT INTO `vn`.`intrastat`(`id`, `description`, `taxClassFk`, `taxCodeFk`) VALUES - (05080000, 'Coral y materiales similares' , 2, 2), + (05080000, 'Coral y materiales similares', 2, 2), (06021010, 'Plantas vivas: Esqueje/injerto, Vid', 1, 1); INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `description`, `producerFk`, `intrastatFk`, `isOnOffer`, `expenceFk`, `isBargain`, `comment`, `relevancy`, `image`, `taxClassFk`, `subName`) @@ -587,18 +639,25 @@ INSERT INTO `vn`.`item`(`id`, `typeFk`, `size`, `inkFk`, `stems`, `originFk`, `d INSERT INTO `vn`.`expedition`(`id`, `agencyModeFk`, `ticketFk`, `isBox`, `created`, `itemFk`, `counter`, `checked`, `workerFk`) VALUES - (1, 1, 1, 0, CURDATE(), 1, 0, 2, 1), - (2, 1, 1, 1, CURDATE(), 2, 1, 0, 2), - (3, 2, 1, 2, CURDATE(), 3, 2, 0, NULL), - (4, 1, 1, 0, CURDATE(), 1, 0, 2, 1), - (5, 1, 1, 1, CURDATE(), 2, 1, 0, 2), - (6, 2, 1, 2, CURDATE(), 3, 2, 0, NULL); + (1, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 1, 1, 18), + (2, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 18), + (3, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 3, 1, 18), + (4, 1, 1, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4, 4, 1, 18), + (5, 1, 2, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 1, 1, 18), + (6, 7, 3, 71, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 1, 1, 1, 18), + (7, 2, 4, 71, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 1, 1, 1, 18), + (8, 3, 5, 71, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), 1, 1, 1, 18), + (9, 3, 6, 71, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 1, 1, 18), + (10, 7, 7, 71, CURDATE(), 1, 1, 1, 18); INSERT INTO `vn`.`packaging`(`id`, `volume`, `width`, `height`, `depth`, `isPackageReturnable`, `created`, `itemFk`, `price`) VALUES - (1, 0.00, 10, 10, 0, 0, CURDATE(), 6, 1.50), - (2, 100.00, 20, 20, 0, 0, CURDATE(), 7, 1.00), - (94, 140875.00, 49.00, 115.00,25.00, 0, CURDATE(), 71, 0.00); + (1, 0.00, 10, 10, 0, 0, CURDATE(), 6, 1.50), + (2, 100.00, 20, 20, 0, 0, CURDATE(), 7, 1.00), + (3, 14000.00, 0, 0, 0, 0, CURDATE(), NULL, 0), + (4, 218000.00, 0, 0, 0, 0, CURDATE(), NULL, 0), + (5, 292000.00, 0, 0, 0, 0, CURDATE(), NULL, 0), + (94, 140875.00, 49.00, 115.00, 25.00, 0, CURDATE(), 71, 0.00); INSERT INTO `vn`.`ticketPackaging`(`id`, `ticketFk`, `packagingFk`, `quantity`, `created`, `pvp`) VALUES @@ -608,30 +667,38 @@ INSERT INTO `vn`.`ticketPackaging`(`id`, `ticketFk`, `packagingFk`, `quantity`, INSERT INTO `vn`.`sale`(`id`, `itemFk`, `ticketFk`, `concept`, `quantity`, `price`, `discount`, `reserved`, `isPicked`, `created`) VALUES - (1, 1, 1, 'Ranged weapon longbow 2m', 5, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)), - (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 1.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)), - (3, 1, 1, 'Ranged weapon longbow 2m', 2, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)), - (4, 4, 1, 'Melee weapon heavy shield 1x0.5m', 20, 3.06, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY)), - (5, 1, 2, 'Ranged weapon longbow 2m', 10, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -10 DAY)), - (6, 1, 3, 'Ranged weapon longbow 2m', 15, 6.50, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -5 DAY)), - (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 1.02, 0, 0, 0, CURDATE()), - (8, 4, 11, 'Melee weapon heavy shield 1x0.5m', 10, 3.01, 0, 0, 0, CURDATE()), - (9, 1, 16, 'Ranged weapon longbow 2m', 5, 9.10, 0, 0, 0, CURDATE()), - (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 1.07, 0, 0, 0, CURDATE()), - (11, 1, 16, 'Ranged weapon longbow 2m', 2, 9.10, 0, 0, 0, CURDATE()), - (12, 4, 16, 'Melee weapon heavy shield 1x0.5m', 20, 3.06, 0, 0, 0, CURDATE()), - (13, 2, 8, 'Melee weapon combat fist 15cm', 15, 1.30, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (14, 1, 8, 'Ranged weapon longbow 2m', 10, 2.30, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (15, 1, 19, 'Ranged weapon longbow 2m', 10, 1.50, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (16, 2, 20, 'Melee weapon combat fist 15cm', 15, 1.30, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 2.30, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (18, 4, 22, 'Melee weapon heavy shield 1x0.5m', 20, 3.00, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 DAY)), - (19, 1, 4, 'Ranged weapon longbow 2m', 1, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -4 DAY)), - (20, 1, 5, 'Ranged weapon longbow 2m', 1, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -3 DAY)), - (21, 1, 6, 'Ranged weapon longbow 2m', 1, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -2 DAY)), - (22, 1, 7, 'Ranged weapon longbow 2m', 1, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 DAY)), - (23, 1, 9, 'Ranged weapon longbow 2m', 1, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (24, 1, 10, 'Ranged weapon longbow 2m', 1, 9.10, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)); + (1, 1, 1, 'Ranged weapon longbow 2m', 5, 100.39, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (2, 2, 1, 'Melee weapon combat fist 15cm', 10, 7.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (3, 1, 1, 'Ranged weapon longbow 2m', 2, 100.39, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (4, 4, 1, 'Melee weapon heavy shield 1x0.5m', 20, 1.69, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (5, 1, 2, 'Ranged weapon longbow 2m', 1, 110.33, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (6, 1, 3, 'Ranged weapon longbow 2m', 1, 110.33, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), + (7, 2, 11, 'Melee weapon combat fist 15cm', 15, 7.43, 0, 0, 0, CURDATE()), + (8, 4, 11, 'Melee weapon heavy shield 1x0.5m', 10, 1.79, 0, 0, 0, CURDATE()), + (9, 1, 16, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, CURDATE()), + (10, 2, 16, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, CURDATE()), + (11, 1, 16, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, CURDATE()), + (12, 4, 16, 'Melee weapon heavy shield 1x0.5m', 20, 1.71, 0, 0, 0, CURDATE()), + (13, 2, 8, 'Melee weapon combat fist 15cm', 10, 7.08, 0, 0, 0, CURDATE()), + (14, 1, 8, 'Ranged weapon longbow 2m', 2, 103.49, 0, 0, 0, CURDATE()), + (15, 1, 19, 'Ranged weapon longbow 2m', 1, 103.49, 0, 0, 0, CURDATE()), + (16, 2, 20, 'Melee weapon combat fist 15cm', 20, 7.07, 0, 0, 0, CURDATE()), + (17, 2, 22, 'Melee weapon combat fist 15cm', 30, 7.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (18, 4, 22, 'Melee weapon heavy shield 1x0.5m', 20, 1.69, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (19, 1, 4, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), + (20, 1, 5, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), + (21, 1, 6, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (22, 1, 7, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, CURDATE()), + (23, 1, 9, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, CURDATE()), + (24, 1, 10, 'Ranged weapon longbow 2m', 1, 8.07, 0, 0, 0, CURDATE()), + (25, 4, 12, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), + (26, 4, 13, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), + (27, 4, 14, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), + (28, 4, 15, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), + (29, 4, 17, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), + (30, 4, 18, 'Melee weapon heavy shield 1x0.5m', 20, 1.72, 0, 0, 0, CURDATE()), + (31, 2, 23, 'Melee weapon combat fist 15cm', -5, 7.08, 0, 0, 0, CURDATE()), + (32, 1, 24, 'Ranged weapon longbow 2m', -1, 8.07, 0, 0, 0, CURDATE()); INSERT INTO `vn`.`saleChecked`(`saleFk`, `isChecked`) VALUES @@ -639,6 +706,456 @@ INSERT INTO `vn`.`saleChecked`(`saleFk`, `isChecked`) (2, 1); INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) + VALUES + (1, 28, 50), + (1, 29, 49.4), + (1, 39, 0.994), + (2, 28, 5), + (2, 29, 2), + (2, 39, 0.07), + (3, 28, 50), + (3, 29, 49.4), + (3, 39, 0.994), + (4, 28, 1.25), + (4, 29, 0.42), + (4, 39, 0.017), + (5, 17, 9.94), + (5, 28, 50), + (5, 29, 49.4), + (5, 39, 0.994), + (6, 17, 9.94), + (6, 28, 50), + (6, 29, 49.4), + (6, 39, 0.994), + (7, 15, 0.0114), + (7, 17, 0.35), + (7, 28, 5), + (7, 29, 2), + (7, 39, 0.07), + (8, 15, 0.0199), + (8, 17, 0.084), + (8, 28, 1.25), + (8, 29, 0.42), + (8, 39, 0.017), + (9, 15, 3.0949), + (9, 21, 0.001), + (9, 28, 50), + (9, 29, 49.4), + (9, 39, 0.994), + (10, 15, 0.0111), + (10, 21, -0.001), + (10, 28, 5), + (10, 29, 2), + (10, 39, 0.07), + (11, 15, 3.0949), + (11, 21, 0.001), + (11, 28, 50), + (11, 29, 49.4), + (11, 39, 0.994), + (12, 15, 0.0199), + (12, 21, 0.003), + (12, 28, 1.25), + (12, 29, 0.42), + (12, 39, 0.017), + (13, 15, 0.114), + (13, 28, 5), + (13, 29, 2), + (13, 39, 0.07), + (14, 15, 3.0949), + (14, 28, 50), + (14, 29, 49.4), + (14, 39, 0.994), + (15, 15, 3.0949), + (15, 28, 50), + (15, 29, 49.4), + (15, 39, 0.994), + (16, 28, 5), + (16, 29, 2), + (16, 39, 0.07), + (17, 28, 5), + (17, 29, 2), + (17, 39, 0.07), + (18, 28, 1.25), + (18, 29, 0.42), + (18, 39, 0.017), + (19, 17, 0.7), + (19, 22, 0.3), + (19, 28, 5), + (19, 29, 2), + (19, 39, 0.02), + (20, 17, 0.7), + (20, 22, 0.3), + (20, 28, 5), + (20, 29, 2), + (20, 39, 0.02), + (21, 17, 0.7), + (21, 22, 0.3), + (21, 28, 5), + (21, 29, 2), + (21, 39, 0.02), + (22, 17, 0.7), + (22, 22, 0.3), + (22, 28, 5), + (22, 29, 2), + (22, 39, 0.02), + (23, 17, 0.7), + (23, 22, 0.3), + (23, 28, 5), + (23, 29, 2), + (23, 39, 0.02), + (24, 17, 0.7), + (24, 22, 0.3), + (24, 28, 5), + (24, 29, 2), + (24, 39, 0.02), + (25, 17, 0.033), + (25, 28, 1.25), + (25, 29, 0.42), + (25, 39, 0.017), + (26, 17, 0.033), + (26, 28, 1.25), + (26, 29, 0.42), + (26, 39, 0.017), + (27, 17, 0.033), + (27, 28, 1.25), + (27, 29, 0.42), + (27, 39, 0.017), + (28, 17, 0.033), + (28, 28, 1.25), + (28, 29, 0.42), + (28, 39, 0.017), + (29, 17, 0.033), + (29, 28, 1.25), + (29, 29, 0.42), + (29, 39, 0.017), + (30, 17, 0.033), + (30, 28, 1.25), + (30, 29, 0.42), + (30, 39, 0.017), + (31, 28, 5), + (31, 29, 2), + (31, 36, 0.01), + (31, 39, 0.07), + (32, 28, 50), + (32, 29, 49.4), + (32, 36, -92.324), + (32, 39, 0.994); + +INSERT INTO `vn`.`saleTracking`(`saleFk`, `isChecked`, `created`, `originalQuantity`, `workerFk`, `actionFk`, `id`, `stateFk`) + VALUES + (1, 0, CURDATE(), 5, 55, 3, 1, 14), + (1, 1, CURDATE(), 5, 54, 3, 2, 8), + (2, 1, CURDATE(), 10, 40, 4, 3, 8), + (3, 1, CURDATE(), 2, 40, 4, 4, 8); + +INSERT INTO `vn`.`itemBarcode`(`id`, `itemFk`, `code`) + VALUES + (1, 1, 1111111111), + (2, 1, 2222222222), + (3, 1, 3333333333), + (4, 2, 4444444444); + +INSERT INTO `vn`.`itemPlacement`(`id`, `itemFk`, `warehouseFk`, `code`) + VALUES + (1, 1, 1, 'A1'), + (2, 1, 2, 'A2'), + (3, 1, 3, 'A3'), + (4, 2, 1, 'A4'); + +INSERT INTO `edi`.`genus`(`genus_id`, `latin_genus_name`, `entry_date`, `expiry_date`, `change_date_time`) + VALUES + (1, 'Abelia' , CURDATE(), NULL, CURDATE()), + (2, 'Abies', CURDATE(), NULL, CURDATE()), + (3, 'Abutilon', CURDATE(), NULL, CURDATE()); + +INSERT INTO `edi`.`specie`(`specie_id`, `genus_id`, `latin_species_name`, `entry_date`, `expiry_date`, `change_date_time`) + VALUES + (1, 1, 'grandiflora', CURDATE(), NULL, CURDATE()), + (2, 2, 'procera', CURDATE(), NULL, CURDATE()), + (3, 3, 'decurrens', CURDATE(), NULL, CURDATE()), + (4, 3, 'dealbata', CURDATE(), NULL, CURDATE()); + +INSERT INTO `vn`.`itemBotanical`(`itemFk`, `botanical`, `genusFk`, `specieFk`) + VALUES + (1, 'Hedera helix', 1, 1), + (2, NULL, 2, 2), + (3, 'Cycas revoluta', 2, NULL), + (4, 'Polygonum', NULL, NULL); + +INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`) + VALUES + (1 , 1, 56, 'Ranged weapon', 1), + (2 , 1, 58, 'longbow', 2), + (3 , 1, 27, '2m', 3), + (4 , 1, 36, 'Stark Industries', 4), + (5 , 1, 1, 'Brown', 5), + (6 , 1, 67, '+1 precission', 6), + (7 , 1, 23, '1', 7), + (8 , 2, 56, 'Melee weapon', 1), + (9 , 2, 58, 'combat fist', 2), + (10, 2, 27, '15cm', 3), + (11, 2, 36, 'Stark Industries', 4), + (12, 2, 1, 'Silver', 5), + (13, 2, 67, 'concussion', 6), + (14, 2, 23, '1', 7), + (15, 3, 56, 'Ranged weapon', 1), + (16, 3, 58, 'sniper rifle', 2), + (17, 3, 4, '300mm', 3), + (18, 3, 36, 'Stark Industries', 4), + (19, 3, 1, 'Green', 5), + (20, 3, 67, 'precission', 6), + (21, 3, 23, '1', 7), + (22, 4, 56, 'Melee weapon', 1), + (23, 4, 58, 'heavy shield', 2), + (24, 4, 4, '1x0.5m', 3), + (25, 4, 36, 'Stark Industries', 4), + (26, 4, 1, 'Black', 5), + (27, 4, 67, 'containtment', 6), + (28, 4, 23, '1', 7), + (29, 5, 56, 'Ranged weapon', 1), + (30, 5, 58, 'pistol', 2), + (31, 5, 27, '9mm', 3), + (32, 5, 36, 'Stark Industries', 4), + (33, 5, 1, 'Silver', 5), + (34, 5, 67, 'rapid fire', 6), + (35, 5, 23, '1', 7), + (36, 6, 56, 'Container', 1), + (37, 6, 58, 'ammo box', 2), + (38, 6, 27, '1m', 3), + (39, 6, 36, 'Stark Industries', 4), + (40, 6, 1, 'Green', 5), + (41, 6, 67, 'supply', 6), + (42, 6, 23, '1', 7), + (43, 7, 56, 'Container', 1), + (44, 7, 58, 'medical box', 2), + (45, 7, 27, '1m', 3), + (46, 7, 36, 'Stark Industries', 4), + (47, 7, 1, 'White', 5), + (48, 7, 67, 'supply', 6), + (49, 7, 23, '1', 7), + (50, 8, 56, 'Ranged Reinforced weapon', 1), + (51, 8, 58, '+1 longbow', 2), + (52, 8, 27, '2m', 3), + (53, 8, 36, 'Stark Industries', 4), + (54, 8, 1, 'Brown', 5), + (55, 8, 67, 'precission', 6), + (56, 8, 23, '1', 7), + (57, 9, 56, 'Melee Reinforced weapon', 1), + (58, 9, 58, 'combat fist', 2), + (59, 9, 27, '15cm', 3), + (60, 9, 36, 'Stark Industries', 4), + (61, 9, 1, 'Silver', 5), + (62, 9, 67, 'concussion', 6), + (63, 9, 23, '1', 7), + (64, 10, 56, 'Ranged Reinforced weapon', 1), + (65, 10, 58, 'sniper rifle', 2), + (66, 10, 4, '300mm', 3), + (67, 10, 36, 'Stark Industries', 4), + (68, 10, 1, 'Green', 5), + (69, 10, 67, 'precission', 6), + (70, 10, 23, '1', 7), + (71, 11, 56, 'Melee Reinforced weapon', 1), + (72, 11, 58, 'heavy shield', 2), + (73, 11, 4, '1x0.5m', 3), + (74, 11, 36, 'Stark Industries', 4), + (75, 11, 1, 'Black', 5), + (76, 11, 67, 'containtment', 6), + (77, 11, 23, '1', 7), + (78, 12, 56, 'Ranged Reinforced weapon', 1), + (79, 12, 58, 'pistol', 2), + (80, 12, 27, '9mm', 3), + (81, 12, 36, 'Stark Industries', 4), + (82, 12, 1, 'Silver', 5), + (83, 12, 67, 'rapid fire', 6), + (84, 12, 23, '1', 7), + (85, 13, 56, 'Chest', 1), + (86, 13, 58, 'ammo box', 2), + (87, 13, 27, '1m', 3), + (88, 13, 36, 'Stark Industries', 4), + (89, 13, 1, 'Green', 5), + (90, 13, 67, 'supply', 6), + (91, 13, 23, '1', 7), + (92, 14, 56, 'Chest', 1), + (93, 14, 58, 'medical box', 2), + (94, 14, 27, '1m', 3), + (95, 14, 36, 'Stark Industries', 4), + (96, 14, 1, 'White', 5), + (97, 14, 67, 'supply', 6), + (98, 14, 23, '1', 7), + (99, 71, 92, 'Shipping cost', 2); + +INSERT INTO `vn`.`itemTypeTag`(`id`, `itemTypeFk`, `tagFk`, `priority`) + VALUES + (1, 1, 1, 0), + (2, 2, 2, 0), + (3, 3, 3, 1), + (4, 1, 4, 1), + (5, 1, 5, 1); + +CALL `vn`.`itemRefreshTags`(NULL); + +INSERT INTO `vn`.`itemLog` (`id`, `originFk`, `userFk`, `action`, `description`) + VALUES + ('1', '1', '1', 'insert', 'We made a change!'); + +INSERT INTO `vn`.`recovery`(`id`, `clientFk`, `started`, `finished`, `amount`, `period`) + VALUES + (1, 101, DATE_ADD(CURDATE(),INTERVAL -7 MONTH), DATE_ADD(CURDATE(),INTERVAL -3 MONTH), 50, 7), + (2, 102, DATE_ADD(CURDATE(),INTERVAL -5 MONTH), CURDATE(), 100, 1), + (3, 102, CURDATE(), DATE_ADD(CURDATE(),INTERVAL 1 MONTH), 50, 7), + (4, 103, CURDATE(), NULL, 50, 7); + +INSERT INTO `vn`.`annualAverageInvoiced`(`clientFk`, `invoiced`) + VALUES + (101, 1500), + (102, 100), + (103, 1000), + (104, 500), + (105, 5000); + +INSERT INTO `vn`.`supplier`(`id`, `name`,`account`,`countryFk`,`nif`,`isFarmer`,`retAccount`,`commission`, `created`, `postcodeFk`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`) + VALUES + (1, 'Plants SL', 4000000001, 1, 'A11111111', 0, NULL, 0, CURDATE(), 1111, 1, 'supplier address 1', 'PONTEVEDRA', 1, 15214, 1, 1), + (2, 'Flower King', 4000000002, 1, 'B22222222', 0, NULL, 0, CURDATE(), 2222, 1, 'supplier address 2', 'LONDON', 2, 45671, 1, 2), + (442, 'Verdnatura Levante SL', 4000000442, 1, 'C33333333', 0, NULL, 0, CURDATE(), 3333, 1, 'supplier address 3', 'SILLA', 1, 43022, 1, 2); + +INSERT INTO `cache`.`cache_calc`(`id`, `cache_id`, `cacheName`, `params`, `last_refresh`, `expires`, `created`, `connection_id`) + VALUES + (1, 2, 'available', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL), + (2, 4, 'last_buy', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL), + (3, 8, 'visible', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL); + +INSERT INTO `vn`.`ticketWeekly`(`ticketFk`, `weekDay`) + VALUES + (1, 0), + (2, 1), + (3, 2), + (4, 4), + (5, 6); + +INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseOutFk`, `agencyFk`, `m3`, `kg`) + VALUES + (1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 1, 2, 1, 100.00, 1000), + (2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 150, 2000), + (3, CURDATE(), CURDATE(), 1, 2, 1, 0.00, 0.00), + (4, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 50.00, 500), + (5, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 2, 1, 50.00, 500), + (6, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4, 2, 1, 50.00, 500), + (7, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 2, 1, 50.00, 500); + +INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `companyFk`,`ref`) + VALUES + (1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 442, 'Movimiento 1'), + (2, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 442, 'Movimiento 2'), + (3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 442, 'Movimiento 3'), + (4, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4, 69, 'Movimiento 4'), + (5, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 442, 'Movimiento 5'), + (6, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 6, 442, 'Movimiento 6'), + (7, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 7, 442, 'Movimiento 7'); + +INSERT INTO `bi`.`claims_ratio`(`id_Cliente`, `Consumo`, `Reclamaciones`, `Ratio`, `recobro`, `inflacion`) + VALUES + (101, 500, NULL, 0.00, 0.00, 1.00), + (102, 1000, 2.00, 0.01, 0.05, 1.00), + (103, 2000, 0.00, 0.00, 0.02, 1.00), + (104, 2500, 150.00, 0.02, 0.10, 1.00); + +INSERT INTO `vn`.`buy`(`id`,`entryFk`,`itemFk`,`buyingValue`,`quantity`,`packageFk`,`stickers`,`freightValue`,`packageValue`,`comissionValue`,`packing`,`grouping`,`groupingMode`,`location`,`price1`,`price2`,`price3`,`minPrice`,`producer`,`printedStickers`,`isChecked`,`isIgnored`, `created`) + VALUES + (1, 1, 1, 50, 5000, 4, 1, 0.000, 0.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, 0.00, NULL, 0, 1, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), + (2, 2, 1, 50, 100, 4, 1, 0.000, 0.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, 0.00, NULL, 0, 1, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (3, 3, 1, 50, 100, 4, 1, 0.000, 0.000, 0.000, 1, 1, 0, NULL, 0.00, 99.6, 99.4, 0.00, NULL, 0, 1, 0, CURDATE()), + (4, 2, 2, 5, 450, 1, 1, 0.000, 0.000, 0.000, 10, 10, 0, NULL, 0.00, 7.30, 7.00, 0.00, NULL, 0, 1, 0, CURDATE()), + (5, 3, 3, 55, 500, 5, 1, 0.000, 0.000, 0.000, 1, 1, 0, NULL, 0.00, 78.3, 75.6, 0.00, NULL, 0, 1, 0, CURDATE()), + (6, 4, 8, 50, 1000, 4, 1, 0.000, 0.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, 0.00, NULL, 0, 1, 0, CURDATE()), + (7, 4, 9, 20, 1000, 1, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 30.50, 29.00, 0.00, NULL, 0, 1, 0, CURDATE()), + (8, 4, 4, 1.25, 1000, 3, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, 0.00, NULL, 0, 1, 0, CURDATE()), + (9, 4, 4, 1.25, 1000, 3, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, 0.00, NULL, 0, 1, 0, CURDATE()), + (10, 5, 1, 50, 10, 4, 1, 0.000, 0.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, 0.00, NULL, 0, 1, 0, CURDATE()), + (11, 5, 4, 1.25, 10, 3, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, 0.00, NULL, 0, 1, 0, CURDATE()), + (12, 6, 4, 1.25, 0, 3, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, 0.00, NULL, 0, 1, 0, CURDATE()), + (13, 7, 1, 50, 0, 3, 1, 0.000, 0.000, 0.000, 1, 1, 1, NULL, 0.00, 99.6, 99.4, 0.00, NULL, 0, 1, 0, CURDATE()), + (14, 7, 2, 5, 0, 3, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 7.30, 7.00, 0.00, NULL, 0, 1, 0, CURDATE()), + (15, 7, 4, 1.25, 0, 3, 1, 0.000, 0.000, 0.000, 10, 10, 1, NULL, 0.00, 1.75, 1.67, 0.00, NULL, 0, 1, 0, CURDATE()); + +INSERT INTO `vn2008`.`tblContadores`(`id`,`FechaInventario`) + VALUES + (1,DATE_ADD(CURDATE(),INTERVAL -1 MONTH)); + +INSERT INTO `vn2008`.`Estados` (`Id_Estado`, `Estado`) + VALUES + ('1', 'En Espera'); + +INSERT INTO `vn2008`.`Informes` (`Id_Informe`, `Informe`) + VALUES + ('30', 'Generar factura PDF'); + +INSERT INTO `vn`.`deliveryMethod`(`id`, `code`, `description`) + VALUES + (1, 'AGENCY', 'Agencia'), + (2, 'DELIVERY', 'Reparto'), + (3, 'PICKUP', 'Recogida'), + (4, 'OTHER', 'Otros'); + +INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`, `date_make`, `first_row_stamp`, `confirm_date`) + VALUES + (1, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 3, 1, 121, 442, NULL, 'TPV', 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (2, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 104, 3, 1, 124, 442, NULL, 'WEB', 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (3, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 104, 1, 2, 124, 442, NULL, 'ANDROID', 1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), + (4, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 104, 1, 2, 124, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), + (5, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 104, 1, 3, 124, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(CURDATE(), INTERVAL -4 MONTH)), + (6, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 1, 3, 1, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), + (7, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 2, 7, 1, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (8, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 2, 7, 121, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (9, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 2, 7, 124, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (10, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 3, 1, 2, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (11, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 2, 7, 122, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (12, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 3, 1, 3, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (13, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 1, 2, 123, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (14, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 1, 2, 4, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (15, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 105, 1, 3, 125, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (16, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 106, 2, 7, 126, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (17, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 107, 1, 4, 127, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (18, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 108, 1, 4, 128, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (19, DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 109, 1, 5, 129, 442, NULL, 'SALIX', 0, CURDATE(), CURDATE(), CURDATE()), + (20, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 1, 5, 101, 442, NULL, 'SALIX', 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (21, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 1, 5, 102, 442, NULL, 'SALIX', 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), + (22, DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 1, 5, 103, 442, NULL, 'SALIX', 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)); + +INSERT INTO `hedera`.`orderRow`(`id`, `orderFk`, `itemFk`, `warehouseFk`, `shipment`, `amount`, `price`, `rate`, `created`, `saleFk`) + VALUES + (1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1), + (2, 1, 2, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 10, 1.07, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2), + (3, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3), + (4, 1, 4, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 20, 3.06, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4), + (5, 2, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 10, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5), + (6, 3, 1, 2, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 15, 6.50, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 6), + (7, 11, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 7), + (8, 11, 4, 1, CURDATE(), 10, 3.26, 0, CURDATE(), 8), + (9, 16, 1, 1, CURDATE(), 5, 9.10, 0, CURDATE(), 9), + (10, 16, 2, 1, CURDATE(), 10, 1.07, 0, CURDATE(), 10), + (11, 16, 1, 1, CURDATE(), 2, 9.10, 0, CURDATE(), 11), + (12, 16, 4, 1, CURDATE(), 20, 3.06, 0, CURDATE(), 12), + (13, 8, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 13), + (14, 8, 1, 1, CURDATE(), 10, 9.28, 0, CURDATE(), 14), + (15, 19, 1, 1, CURDATE(), 10, 1.50, 0, CURDATE(), 15), + (16, 20, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 16), + (17, 22, 2, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 30, 2.30, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 17), + (18, 22, 4, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 20, 3.00, 0, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 18), + (19, 4, 1, 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 1, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 19), + (20, 5, 1, 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), 1, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), 20), + (21, 6, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 21), + (22, 7, 1, 1, CURDATE(), 1, 9.10, 0, CURDATE(), 22), + (23, 9, 1, 1, CURDATE(), 1, 9.10, 0, CURDATE(), 23), + (24, 10, 1, 1, CURDATE(), 1, 9.10, 0, CURDATE(), 24), + (25, 12, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 25), + (26, 13, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 26), + (27, 14, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 27), + (28, 15, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 28), + (29, 17, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 29), + (30, 18, 4, 1, CURDATE(), 20, 3.00, 0, CURDATE(), 30); + +INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`) VALUES (1, 15, 0.58), (1, 23, 6.5), @@ -756,370 +1273,50 @@ INSERT INTO `vn`.`saleComponent`(`saleFk`, `componentFk`, `value`) (24, 23, 6.5), (24, 28, 20.72), (24, 29, -18.72), - (24, 39, 0.02); - -INSERT INTO `vn`.`saleTracking`(`saleFk`, `isChecked`, `created`, `originalQuantity`, `workerFk`, `actionFk`, `id`, `stateFk`) - VALUES - (1, 0, CURDATE(), 5, 55, 3, 1, 14), - (1, 1, CURDATE(), 5, 54, 3, 2, 8), - (2, 1, CURDATE(), 10, 40, 4, 3, 8), - (3, 1, CURDATE(), 2, 40, 4, 4, 8); - -INSERT INTO `vn`.`itemBarcode`(`id`, `itemFk`, `code`) - VALUES - (1, 1, 1111111111), - (2, 1, 2222222222), - (3, 1, 3333333333), - (4, 2, 4444444444); - -INSERT INTO `vn`.`itemPlacement`(`id`, `itemFk`, `warehouseFk`, `code`) - VALUES - (1, 1, 1, 'A1'), - (2, 1, 2, 'A2'), - (3, 1, 3, 'A3'), - (4, 2, 1, 'A4'); - -INSERT INTO `edi`.`genus`(`genus_id`, `latin_genus_name`, `entry_date`, `expiry_date`, `change_date_time`) - VALUES - ( 1, 'Abelia' , CURDATE(), NULL, CURDATE()), - ( 2, 'Abies', CURDATE(), NULL, CURDATE()), - ( 3, 'Abutilon', CURDATE(), NULL, CURDATE()); - -INSERT INTO `edi`.`specie`(`specie_id`, `genus_id`, `latin_species_name`, `entry_date`, `expiry_date`, `change_date_time`) - VALUES - ( 1, 1, 'grandiflora', CURDATE(), NULL, CURDATE()), - ( 2, 2, 'procera', CURDATE(), NULL, CURDATE()), - ( 3, 3, 'decurrens', CURDATE(), NULL, CURDATE()), - ( 4, 3, 'dealbata', CURDATE(), NULL, CURDATE()); - -INSERT INTO `vn`.`itemBotanical`(`itemFk`, `botanical`, `genusFk`, `specieFk`) - VALUES - ( 1, 'Hedera helix' , 1, 1), - ( 2, NULL, 2, 2), - ( 3, 'Cycas revoluta', 2, NULL), - ( 4, 'Polygonum', NULL, NULL); - -INSERT INTO `vn`.`itemTag`(`id`,`itemFk`,`tagFk`,`value`,`priority`) - VALUES - (1 , 1, 56, 'Ranged weapon', 1), - (2 , 1, 58, 'longbow', 2), - (3 , 1, 27, '2m', 3), - (4 , 1, 36, 'Stark Industries', 4), - (5 , 1, 1, 'Brown', 5), - (6 , 1, 67, '+1 precission', 6), - (7 , 1, 23, '1', 7), - (8 , 2, 56, 'Melee weapon', 1), - (9 , 2, 58, 'combat fist', 2), - (10, 2, 27, '15cm', 3), - (11, 2, 36, 'Stark Industries', 4), - (12, 2, 1, 'Silver', 5), - (13, 2, 67, 'concussion', 6), - (14, 2, 23, '1', 7), - (15, 3, 56, 'Ranged weapon', 1), - (16, 3, 58, 'sniper rifle', 2), - (17, 3, 4, '300mm', 3), - (18, 3, 36, 'Stark Industries', 4), - (19, 3, 1, 'Green', 5), - (20, 3, 67, 'precission', 6), - (21, 3, 23, '1', 7), - (22, 4, 56, 'Melee weapon', 1), - (23, 4, 58, 'heavy shield', 2), - (24, 4, 4, '1x0.5m', 3), - (25, 4, 36, 'Stark Industries', 4), - (26, 4, 1, 'Black', 5), - (27, 4, 67, 'containtment', 6), - (28, 4, 23, '1', 7), - (29, 5, 56, 'Ranged weapon', 1), - (30, 5, 58, 'pistol', 2), - (31, 5, 27, '9mm', 3), - (32, 5, 36, 'Stark Industries', 4), - (33, 5, 1, 'Silver', 5), - (34, 5, 67, 'rapid fire', 6), - (35, 5, 23, '1', 7), - (36, 6, 56, 'Container', 1), - (37, 6, 58, 'ammo box', 2), - (38, 6, 27, '1m', 3), - (39, 6, 36, 'Stark Industries', 4), - (40, 6, 1, 'Green', 5), - (41, 6, 67, 'supply', 6), - (42, 6, 23, '1', 7), - (43, 7, 56, 'Container', 1), - (44, 7, 58, 'medical box', 2), - (45, 7, 27, '1m', 3), - (46, 7, 36, 'Stark Industries', 4), - (47, 7, 1, 'White', 5), - (48, 7, 67, 'supply', 6), - (49, 7, 23, '1', 7), - (50, 8, 56, 'Ranged Reinforced weapon', 1), - (51, 8, 58, '+1 longbow', 2), - (52, 8, 27, '2m', 3), - (53, 8, 36, 'Stark Industries', 4), - (54, 8, 1, 'Brown', 5), - (55, 8, 67, 'precission', 6), - (56, 8, 23, '1', 7), - (57, 9, 56, 'Melee Reinforced weapon', 1), - (58, 9, 58, 'combat fist', 2), - (59, 9, 27, '15cm', 3), - (60, 9, 36, 'Stark Industries', 4), - (61, 9, 1, 'Silver', 5), - (62, 9, 67, 'concussion', 6), - (63, 9, 23, '1', 7), - (64, 10, 56, 'Ranged Reinforced weapon', 1), - (65, 10, 58, 'sniper rifle', 2), - (66, 10, 4, '300mm', 3), - (67, 10, 36, 'Stark Industries', 4), - (68, 10, 1, 'Green', 5), - (69, 10, 67, 'precission', 6), - (70, 10, 23, '1', 7), - (71, 11, 56, 'Melee Reinforced weapon', 1), - (72, 11, 58, 'heavy shield', 2), - (73, 11, 4, '1x0.5m', 3), - (74, 11, 36, 'Stark Industries', 4), - (75, 11, 1, 'Black', 5), - (76, 11, 67, 'containtment', 6), - (77, 11, 23, '1', 7), - (78, 12, 56, 'Ranged Reinforced weapon', 1), - (79, 12, 58, 'pistol', 2), - (80, 12, 27, '9mm', 3), - (81, 12, 36, 'Stark Industries', 4), - (82, 12, 1, 'Silver', 5), - (83, 12, 67, 'rapid fire', 6), - (84, 12, 23, '1', 7), - (85, 13, 56, 'Chest', 1), - (86, 13, 58, 'ammo box', 2), - (87, 13, 27, '1m', 3), - (88, 13, 36, 'Stark Industries', 4), - (89, 13, 1, 'Green', 5), - (90, 13, 67, 'supply', 6), - (91, 13, 23, '1', 7), - (92, 14, 56, 'Chest', 1), - (93, 14, 58, 'medical box', 2), - (94, 14, 27, '1m', 3), - (95, 14, 36, 'Stark Industries', 4), - (96, 14, 1, 'White', 5), - (97, 14, 67, 'supply', 6), - (98, 14, 23, '1', 7), - (99, 71, 92, 'Shipping cost', 2); - -INSERT INTO `vn`.`itemTypeTag`(`id`, `itemTypeFk`, `tagFk`, `priority`) - VALUES - ( 1, 1, 1, 0), - ( 2, 2, 2, 0), - ( 3, 3, 3, 1), - ( 4, 1, 4, 1), - ( 5, 1, 5, 1); - -INSERT INTO `vn`.`itemLog` (`id`, `originFk`, `userFk`, `action`, `description`) - VALUES - ('1', '1', '1', 'insert', 'We made a change!'); - -INSERT INTO `vn`.`recovery`(`id`, `clientFk`, `started`, `finished`, `amount`, `period`) - VALUES - ( 1, 101, DATE_ADD(CURDATE(),INTERVAL -7 MONTH), DATE_ADD(CURDATE(),INTERVAL -3 MONTH), 50, 7), - ( 2, 102, DATE_ADD(CURDATE(),INTERVAL -5 MONTH), CURDATE(), 100, 1), - ( 3, 102, CURDATE(), DATE_ADD(CURDATE(),INTERVAL 1 MONTH), 50, 7), - ( 4, 103, CURDATE(), NULL, 50, 7); - -INSERT INTO `bi`.`rotacion`(`Id_Article`, `warehouse_id`, `total`, `rotacion`, `cm3`, `almacenaje`, `manipulacion`, `auxiliar`, `mermas`) - VALUES - ( 1, 1, 0, 0.0000, 1500, 0.0015, 0.0250, 0.0085, 0.0000), - ( 1, 2, 0, 0.0000, 100, 0.0060, 0.0200, 0.0080, 0.0000), - ( 2, 1, 10, 3.5000, 0, 0.0000, 0.0000, 0.0080, 0.0000), - ( 3, 1, 50, 5.5000, 100, 0.0000, 0.0000, 0.0080, 0.0000); - -INSERT INTO `vn`.`annualAverageInvoiced`(`clientFk`, `invoiced`) - VALUES - ( 101, 1500), - ( 102, 100), - ( 103, 1000), - ( 104, 500), - ( 105, 5000); - -INSERT INTO `vn`.`supplier`(`id`, `name`,`account`,`countryFk`,`nif`,`isFarmer`,`retAccount`,`commission`, `created`, `postcodeFk`, `isActive`, `street`, `city`, `provinceFk`, `postCode`, `payMethodFk`, `payDemFk`) - VALUES - ( 1, 'Plants SL', 4000000001, 1, 'A11111111', 0, NULL, 0, CURDATE(), 1111, 1, 'supplier address 1', 'PONTEVEDRA', 1, 15214, 1, 1), - ( 2, 'Flower King', 4000000002, 1, 'B22222222', 0, NULL, 0, CURDATE(), 2222, 1, 'supplier address 2', 'LONDON', 2, 45671, 1, 2), - ( 442, 'Verdnatura Levante SL', 4000000442, 1, 'C33333333', 0, NULL, 0, CURDATE(), 3333, 1, 'supplier address 3', 'SILLA', 1, 43022, 1, 2); - -INSERT INTO `cache`.`cache_calc`(`id`, `cache_id`, `cacheName`, `params`, `last_refresh`, `expires`, `created`, `connection_id`) - VALUES - ( 1, 2, 'available', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL), - ( 2, 4, 'last_buy', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL), - ( 3, 8, 'visible', CONCAT_WS('/',1,CURDATE()), CURRENT_TIMESTAMP(), DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE), CURDATE(), NULL); - -INSERT INTO `vn`.`ticketWeekly`(`ticketFk`, `weekDay`) - VALUES - ( 1, 0), - ( 2, 1), - ( 3, 2), - ( 4, 4), - ( 5, 6); - -INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseOutFk`, `agencyFk`, `m3`, `kg`) - VALUES - (1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 1, 2, 1, 100.00, 1000), - (2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 150, 2000), - (3, CURDATE(), CURDATE(), 1, 2, 1, 0.00, 0.00), - (4, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 50.00, 500); - -INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `companyFk`,`ref`) - VALUES - ( 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 442, 'Movimiento 1'), - ( 2, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 442, 'Movimiento 2'), - ( 3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 442, 'Movimiento 3'), - ( 4, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4, 69, 'Movimiento 4'); - - - -INSERT INTO `bi`.`claims_ratio`(`id_Cliente`, `Consumo`, `Reclamaciones`, `Ratio`, `recobro`, `inflacion`) - VALUES - ( 101, 500, NULL, 0.00, 0.00, 1.00), - ( 102, 1000, 2.00, 0.01, 0.05, 1.00), - ( 103, 2000, 0.00, 0.00, 0.02, 1.00), - ( 104, 2500, 150.00, 0.02, 0.10, 1.00); - -INSERT INTO `vn`.`buy`(`id`,`entryFk`,`itemFk`,`buyingValue`,`quantity`,`packageFk`,`stickers`,`freightValue`,`packageValue`,`comissionValue`,`packing`,`grouping`,`groupingMode`,`location`,`price1`,`price2`,`price3`,`minPrice`,`producer`,`printedStickers`,`isChecked`,`isIgnored`, `created`) - VALUES - (1, 1, 1, 2.5, 5000 , 1, 1, 0.350, 0.050, 0.000, 10, 10, 1, NULL, 0.00, 1.30, 1.25, 1.00, NULL, 0, 1, 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (2, 2, 1, 20 , 100 , 1, 1, 0.700, 0.020, 0.000, 5, 5, 1, NULL, 0.00, 2.50, 2.00, 0.50, NULL, 0, 1, 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (3, 3, 1, 20 , 100 , 1, 1, 0.700, 0.020, 0.000, 1, 1, 0, NULL, 0.00, 2.50, 2.00, 0.50, NULL, 0, 1, 0, CURDATE()), - (4, 2, 2, 5 , 450 , 1, 1, 0.500, 0.100, 0.000, 10, 10, 0, NULL, 0.00, 1.30, 1.00, 0.00, NULL, 0, 1, 0, CURDATE()), - (5, 3, 3, 10 , 500 , 1, 1, 1.000, 0.050, 0.000, 10, 10, 0, NULL, 0.00, 2.50, 1.00, 0.00, NULL, 0, 1, 0, CURDATE()), - (6, 4, 8, 20 , 1000 , 1, 1, 0.700, 0.020, 0.000, 10, 10, 1, NULL, 0.00, 2.50, 1.00, 0.00, NULL, 0, 1, 0, CURDATE()), - (7, 4, 9, 20 , 1000 , 1, 1, 0.700, 0.020, 0.000, 10, 10, 1, NULL, 0.00, 2.50, 1.00, 0.00, NULL, 0, 1, 0, CURDATE()), - (8, 4, 4, 20 , 1000 , 1, 1, 0.700, 0.020, 0.000, 10, 10, 1, NULL, 0.00, 2.50, 1.00, 0.00, NULL, 0, 1, 0, CURDATE()); - -INSERT INTO `vn2008`.`tblContadores`(`id`,`FechaInventario`) - VALUES - (1,DATE_ADD(CURDATE(),INTERVAL -1 MONTH)); - -INSERT INTO `vn2008`.`Estados` (`Id_Estado`, `Estado`) - VALUES - ('1', 'En Espera'); - -INSERT INTO `vn2008`.`Informes` (`Id_Informe`, `Informe`) - VALUES - ('30', 'Generar factura PDF'); - -INSERT INTO `vn`.`deliveryMethod`(`id`, `code`, `description`) - VALUES - ( 1, 'AGENCY', 'Agencia'), - ( 2, 'DELIVERY', 'Reparto'), - ( 3, 'PICKUP', 'Recogida'), - ( 4, 'OTHER', 'Otros'); - -INSERT INTO `hedera`.`order`(`id`, `date_send`, `customer_id`, `delivery_method_id`, `agency_id`, `address_id`, `company_id`, `note`, `source_app`, `confirmed`, `date_make`, `first_row_stamp`, `confirm_date`) - VALUES - (1 , DATE_ADD(CURDATE(), INTERVAL -15 DAY), 101, 1, 1, 121, 442, NULL, 'TPV', 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY) , DATE_ADD(CURDATE(), INTERVAL -15 DAY) , DATE_ADD(CURDATE(), INTERVAL -15 DAY) ), - (2 , DATE_ADD(CURDATE(), INTERVAL -10 DAY), 101, 2, 1, 121, 442, NULL, 'WEB', 1, DATE_ADD(CURDATE(), INTERVAL -10 DAY) , DATE_ADD(CURDATE(), INTERVAL -10 DAY) , DATE_ADD(CURDATE(), INTERVAL -10 DAY) ), - (3 , DATE_ADD(CURDATE(), INTERVAL -5 DAY), 102, 3, 2, 122, 442, NULL, 'ANDROID', 1, DATE_ADD(CURDATE(), INTERVAL -5 DAY) , DATE_ADD(CURDATE(), INTERVAL -5 DAY) , DATE_ADD(CURDATE(), INTERVAL -5 DAY) ), - (4 , DATE_ADD(CURDATE(), INTERVAL -4 DAY), 102, 1, 2, 122, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -4 DAY) , DATE_ADD(CURDATE(), INTERVAL -4 DAY) , DATE_ADD(CURDATE(), INTERVAL -4 DAY) ), - (5 , DATE_ADD(CURDATE(), INTERVAL -3 DAY), 103, 2, 3, 123, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -3 DAY) , DATE_ADD(CURDATE(), INTERVAL -3 DAY) , DATE_ADD(CURDATE(), INTERVAL -3 DAY) ), - (6 , DATE_ADD(CURDATE(), INTERVAL -2 DAY), 103, 3, 3, 123, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -2 DAY) , DATE_ADD(CURDATE(), INTERVAL -2 DAY) , DATE_ADD(CURDATE(), INTERVAL -2 DAY) ), - (7 , DATE_ADD(CURDATE(), INTERVAL -1 DAY), 104, 1, 4, 124, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -1 DAY) , DATE_ADD(CURDATE(), INTERVAL -1 DAY) , DATE_ADD(CURDATE(), INTERVAL -1 DAY) ), - (8 , DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 104, 2, 4, 124, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH)), - (9 , DATE_ADD(CURDATE(), INTERVAL -2 MONTH), 105, 3, 5, 125, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(CURDATE(), INTERVAL -2 MONTH)), - (10, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), 105, 1, 6, 125, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(CURDATE(), INTERVAL -3 MONTH)), - (11, CURDATE(), 101, 2, 7, 121, 442, NULL, 'SALIX', 1, CURDATE() , CURDATE() , CURDATE() ), - (12, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), 101, 3, 1, 121, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(CURDATE(), INTERVAL +1 MONTH)), - (13, DATE_ADD(CURDATE(), INTERVAL +2 MONTH), 101, 1, 2, 121, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL +2 MONTH), DATE_ADD(CURDATE(), INTERVAL +2 MONTH), DATE_ADD(CURDATE(), INTERVAL +2 MONTH)), - (14, DATE_ADD(CURDATE(), INTERVAL +3 MONTH), 101, 2, 2, 121, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL +3 MONTH), DATE_ADD(CURDATE(), INTERVAL +3 MONTH), DATE_ADD(CURDATE(), INTERVAL +3 MONTH)), - (15, DATE_ADD(CURDATE(), INTERVAL +4 MONTH), 101, 3, 3, 121, 442, NULL, 'SALIX', 1, DATE_ADD(CURDATE(), INTERVAL +4 MONTH), DATE_ADD(CURDATE(), INTERVAL +4 MONTH), DATE_ADD(CURDATE(), INTERVAL +4 MONTH)), - (16, DATE_ADD(CURDATE(), INTERVAL +4 DAY), 101, 1, 1, 121, 442, NULL, 'SALIX', 0, CURDATE() , CURDATE() , CURDATE() ), - (17, CURDATE(), 106, 2, 4, 126, 442, NULL, 'SALIX', 0, CURDATE() , CURDATE() , CURDATE() ), - (18, CURDATE(), 107, 3, 4, 127, 442, NULL, 'SALIX', 0, CURDATE() , CURDATE() , CURDATE() ), - (19, CURDATE(), 108, 1, 5, 128, 442, NULL, 'SALIX', 0, CURDATE() , CURDATE() , CURDATE() ), - (20, CURDATE(), 109, 2, 1, 119, 442, NULL, 'SALIX', 0, CURDATE() , CURDATE() , CURDATE() ), - (21, CURDATE(), 110, 3, 5, 129, 442, NULL, 'SALIX', 0, CURDATE() , CURDATE() , CURDATE() ); - -INSERT INTO `hedera`.`orderRow`(`id`, `orderFk`, `itemFk`, `warehouseFk`, `shipment`, `amount`, `price`, `rate`, `created`, `saleFk`) - VALUES - (1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 5, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 1), - (2, 1, 2, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 10, 1.07, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 2), - (3, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 2, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 3), - (4, 1, 4, 1, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 20, 3.06, 0, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 4), - (5, 2, 1, 1, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 10, 9.10, 0, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 5), - (6, 3, 1, 2, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 15, 6.50, 0, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 6), - (7, 11, 2, 1, CURDATE(), 15, 1.30, 0, CURDATE(), 7), - (8, 11, 4, 1, CURDATE(), 10, 3.26, 0, CURDATE(), 8), - (9, 16, 1, 1, CURDATE(), 5, 9.10, 0, CURDATE(), 9), - (10, 16, 2, 1, CURDATE(), 10, 1.07, 0, CURDATE(), 10), - (11, 16, 1, 1, CURDATE(), 2, 9.10, 0, CURDATE(), 11), - (12, 16, 4, 1, CURDATE(), 20, 3.06, 0, CURDATE(), 12), - (13, 20, 1, 1, CURDATE(), 2, 9.10, 0, CURDATE(), NULL); - -INSERT INTO `hedera`.`orderRowComponent`(`rowFk`, `componentFk`, `price`) - VALUES - (1, 15, 0.58), - (1, 23, 6.5), - (1, 28, 20.72), - (1, 29, -18.72), - (1, 39, 0.02), - (2, 15, 0.058), - (2, 21, 0.002), - (2, 28, 5.6), - (2, 29, -4.6), - (2, 39, 0.01), - (3, 15, 0.58), - (3, 23, 6.5), - (3, 28, 20.72), - (3, 29, -18.72), - (3, 39, 0.02), - (4, 15, 0.051), - (4, 21, -0.001), - (4, 28, 20.72), - (4, 29, -19.72), - (4, 37, 2), - (4, 39, 0.01), - (5, 15, 0.58), - (5, 23, 6.5), - (5, 28, 20.72), - (5, 29, -18.72), - (5, 39, 0.02), - (6, 23, 6.5), - (7, 15, 0.2899), - (7, 28, 5.6), - (7, 29, -4.6), - (7, 39, 0.01), - (8, 15, 0.254), - (8, 21, -0.004), - (8, 28, 20.72), - (8, 29, -19.72), - (8, 37, 2), - (8, 39, 0.01), - (9, 15, 0.58), - (9, 23, 6.5), - (9, 28, 20.72), - (9, 29, -18.72), - (9, 39, 0.02), - (10, 15, 0.058), - (10, 21, 0.002), - (10, 28, 5.6), - (10, 29, -4.6), - (10, 39, 0.01), - (11, 15, 0.58), - (11, 23, 6.5), - (11, 28, 20.72), - (11, 29, -18.72), - (11, 39, 0.02), - (12, 15, 0.051), - (12, 22, -0.001), - (12, 28, 20.72), - (12, 29, -19.72), - (12, 37, 2), - (12, 39, 0.01), - (13, 15, 0.58), - (13, 23, 6.5), - (13, 28, 20.72), - (13, 29, -18.72), - (13, 39, 0.02); + (24, 39, 0.02), + (25, 15, 0.051), + (25, 22, -0.001), + (25, 28, 20.72), + (25, 29, -19.72), + (25, 37, 2), + (25, 39, 0.01), + (26, 15, 0.051), + (26, 22, -0.001), + (26, 28, 20.72), + (26, 29, -19.72), + (26, 37, 2), + (26, 39, 0.01), + (27, 15, 0.051), + (27, 22, -0.001), + (27, 28, 20.72), + (27, 29, -19.72), + (27, 37, 2), + (27, 39, 0.01), + (28, 15, 0.051), + (28, 22, -0.001), + (28, 28, 20.72), + (28, 29, -19.72), + (28, 37, 2), + (28, 39, 0.01), + (29, 15, 0.051), + (29, 22, -0.001), + (29, 28, 20.72), + (29, 29, -19.72), + (29, 37, 2), + (29, 39, 0.01), + (30, 15, 0.051), + (30, 22, -0.001), + (30, 28, 20.72), + (30, 29, -19.72), + (30, 37, 2), + (30, 39, 0.01); INSERT INTO `vn`.`clientContact`(`id`, `clientFk`, `name`, `phone`) VALUES - ( 1, 101, 'contact 1', 666777888), - ( 2, 101, 'contact 2', 111222333), - ( 3, 101, 'contact 3', 222333444), - ( 4, 102, 'contact 1', 876543219); + (1, 101, 'contact 1', 666777888), + (2, 101, 'contact 2', 111222333), + (3, 101, 'contact 3', 222333444), + (4, 102, 'contact 1', 876543219); /* el mana de los trabajadores lo podemos poner a mano en la tabla si lo calculamos antes, @@ -1130,50 +1327,62 @@ INSERT INTO `vn`.`clientContact`(`id`, `clientFk`, `name`, `phone`) call vn.manaSpellersRequery(19); call vn.manaSpellersRequery(18); - INSERT INTO `vn`.`clientSample`(`id`, `clientFk`, `typeFk`, `created`, `workerFk`, `userFk`, `companyFk`) VALUES - ( 1, 101, 1, CURDATE(), 18, 18, 442), - ( 2, 101, 1, CURDATE(), 18, 18, 442), - ( 3, 101, 2, CURDATE(), 18, 18, 442), - ( 4, 102, 2, CURDATE(), 18, 18, 567), - ( 5, 102, 3, CURDATE(), 19, 19, 567); + (1, 101, 1, CURDATE(), 18, 18, 442), + (2, 101, 1, CURDATE(), 18, 18, 442), + (3, 101, 2, CURDATE(), 18, 18, 442), + (4, 102, 2, CURDATE(), 18, 18, 567), + (5, 102, 3, CURDATE(), 19, 19, 567); + +INSERT INTO `vn`.`claimState`(`id`, `description`, `roleFk`) + VALUES + ( 1, 'Pendiente', 1), + ( 2, 'Gestionado', 1), + ( 3, 'Resuelto', 21), + ( 4, 'Anulado', 1), + ( 5, 'Cuestionado', 21), + ( 6, 'Mana', 1); INSERT INTO `vn`.`claim`(`id`, `ticketCreated`, `claimStateFk`, `observation`, `clientFk`, `workerFk`, `responsibility`, `isChargedToMana`, `created` ) VALUES - ( 1, CURDATE(), 1, 'observation one', 101, 18, 1, 0, CURDATE()), - ( 2, CURDATE(), 2, 'observation two', 101, 18, 2, 0, CURDATE()), - ( 3, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 3, 'observation three', 101, 18, 3, 0, CURDATE()), - ( 4, CURDATE(), 3, 'observation four', 104, 18, 1, 0, CURDATE()); + (1, CURDATE(), 1, 'observation one', 101, 18, 3, 0, CURDATE()), + (2, CURDATE(), 2, 'observation two', 101, 18, 3, 0, CURDATE()), + (3, CURDATE(), 3, 'observation three', 101, 18, 1, 1, CURDATE()), + (4, CURDATE(), 3, 'observation four', 104, 18, 5, 0, CURDATE()); INSERT INTO `vn`.`claimBeginning`(`id`, `claimFk`, `saleFk`, `quantity`) VALUES - ( 1, 1, 7, 5), - ( 2, 1, 8, 4), - ( 3, 2, 10, 10), - ( 4, 3, 6, 5), - ( 5, 4, 13, 5); + (1, 1, 7, 5), + (2, 2, 10, 10), + (3, 3, 22, 1), + (4, 4, 13, 5); INSERT INTO `vn`.`claimDestination`(`id`, `description`, `addressFk`) VALUES - (1, 'Bueno', null), + (1, 'Bueno', NULL), (2, 'Basura/Perd.', 12), - (3, 'Confeccion', null), - (4, 'Reclam.PRAG', 12), - (5, 'Corregido', 11); + (3, 'Confeccion', NULL), + (4, 'Reclam.PRAG', 12), + (5, 'Corregido', 11); INSERT INTO `vn`.`claimDevelopment`(`id`, `claimFk`, `claimResponsibleFk`, `workerFk`, `claimReasonFk`, `claimResultFk`, `claimRedeliveryFk`, `claimDestinationFk`) VALUES - ( 1, 1, 1, 21, 1 , 1, 2, 5), - ( 2, 1, 1, 21, 7 , 2, 2, 5), - ( 3, 2, 7, 21, 9 , 3, 2, 5), - ( 4, 3, 7, 21, 15, 8, 2, 5), - ( 5, 4, 7, 21, 7, 8, 2, 5); + (1, 1, 1, 21, 1, 1, 2, 5), + (2, 1, 1, 21, 7, 2, 2, 5), + (3, 2, 7, 21, 9, 3, 2, 5), + (4, 3, 7, 21, 15, 8, 2, 5), + (5, 4, 7, 21, 7, 8, 2, 5); + +INSERT INTO `vn`.`claimEnd`(`id`, `saleFk`, `claimFk`, `workerFk`, `claimDestinationFk`) + VALUES + (1, 31, 4, 21, 2), + (2, 32, 3, 21, 3); INSERT INTO `hedera`.`tpvMerchant`(`id`, `description`, `companyFk`, `bankFk`, `secretKey`) VALUES - ( 1, 'Arkham Bank', 442, 1, 'h12387193H10238'), - ( 2, 'NewYork Bank', 442, 1, '7981ugsgd1hsdad'); + (1, 'Arkham Bank', 442, 1, 'h12387193H10238'), + (2, 'NewYork Bank', 442, 1, '7981ugsgd1hsdad'); INSERT INTO `hedera`.`tpvTransaction`(`id`,`merchantFk`, `clientFk`,`receiptFk`, `amount`, `response`, `errorCode`, `status`, `created`) VALUES @@ -1186,35 +1395,42 @@ INSERT INTO `hedera`.`tpvTransaction`(`id`,`merchantFk`, `clientFk`,`receiptFk`, INSERT INTO `vn`.`orderTicket`(`orderFk`, `ticketFk`) VALUES - (1, 1), - (2, 2), - (3, 3), - (4, 4), - (5, 5), - (6, 6), - (7, 7), - (8, 8), - (9, 9), - (10, 10), - (11, 11), - (12, 12), - (13, 13), - (14, 14), - (15, 15); + (1, 1), + (2, 2), + (3, 3), + (4, 4), + (5, 5), + (6, 6), + (7, 7), + (8, 8), + (9, 9), + (10, 10), + (11, 11), + (12, 12), + (13, 13), + (14, 14), + (15, 15), + (16, 16), + (17, 17), + (18, 18), + (19, 19), + (20, 20), + (21, 21), + (22, 22); INSERT INTO `vn`.`userConfig` (`userFk`, `warehouseFk`, `companyFk`) VALUES - (1, 2, 69), - (5, 1, 442), - (9, 1, 442), + (1, 2, 69), + (5, 1, 442), + (9, 1, 442), (18, 3, 567); INSERT INTO `vn`.`receipt`(`id`, `invoiceFk`, `amountPaid`, `amountUnpaid`, `payed`, `workerFk`, `bankFk`, `clientFk`, `created`, `companyFk`, `isConciliate`) VALUES - (1, 'Cobro web', 100.50, 0.00, CURDATE(), 9, 1, 101, CURDATE(), 442, 1), - (2, 'Cobro web', 200.50, 0.00, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 9, 1, 101, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 442, 1), - (3, 'Cobro en efectivo', 300.00, 100.00, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 9, 1, 102, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 442, 0), - (4, 'Cobro en efectivo', -400.00, -50.00, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 9, 1, 103, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 442, 0); + (1, 'Cobro web', 100.50, 0.00, CURDATE(), 9, 1, 101, CURDATE(), 442, 1), + (2, 'Cobro web', 200.50, 0.00, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 9, 1, 101, DATE_ADD(CURDATE(), INTERVAL -5 DAY), 442, 1), + (3, 'Cobro en efectivo', 300.00, 100.00, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 9, 1, 102, DATE_ADD(CURDATE(), INTERVAL -10 DAY), 442, 0), + (4, 'Cobro en efectivo', -400.00, -50.00, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 9, 1, 103, DATE_ADD(CURDATE(), INTERVAL -15 DAY), 442, 0); INSERT INTO `vn2008`.`workerTeam`(`id`, `team`, `user`) VALUES @@ -1234,18 +1450,18 @@ INSERT INTO `vn`.`ticketRequest`(`id`, `description`, `requesterFk`, `atenderFk` INSERT INTO `vn`.`ticketService`(`id`, `description`, `quantity`, `price`, `taxClassFk`, `ticketFk`) VALUES - (1, 'Documentos', 1, 2.00, 1, 1), - (2, 'Porte Agencia', 1, 10.00, 1, 2), - (3, 'Documentos', 1, 5.50, 1, 11), - (4, 'Documentos', 1, 2.00, 1, 9), - (5, 'Documentos', 1, 2.00, 1, 8); + (1, 'Documentos', 1, 2.00, 1, 1), + (2, 'Porte Agencia', 1, 10.00, 1, 2), + (3, 'Documentos', 1, 5.50, 1, 11), + (4, 'Documentos', 1, 2.00, 1, 9), + (5, 'Documentos', 1, 2.00, 1, 8); -INSERT INTO `pbx`.`sip`(`user_id`, `extension`, `secret`, `caller_id`) +INSERT INTO `pbx`.`sip`(`user_id`, `extension`) VALUES - (1, 1010, '123456', 'employee'), - (3, 1101, '123456', 'agency'), - (5, 1102, '123456', 'administrative'), - (9, 1201, '123456', 'developer'); + (1, 1010), + (3, 1101), + (5, 1102), + (9, 1201); INSERT INTO `postgresql`.`person`(`person_id`, `name`, `nickname`, `nif`, `firstname`, `id_trabajador`) SELECT w.id, w.lastName, u.nickname,CONCAT(RPAD(CONCAT(w.id,9),8,w.id),'A'),w.firstName,w.id @@ -1254,7 +1470,7 @@ INSERT INTO `postgresql`.`person`(`person_id`, `name`, `nickname`, `nif`, `first INSERT INTO `postgresql`.`person`(`person_id`, `name`, `nickname`, `nif`, `firstname`, `id_trabajador`) VALUES - (1000, 'VERDNATURA LEVANTE SL', 'VNL', 'B78945612', NULL, NULL); + (1000, 'VERDNATURA LEVANTE SL', 'VNL', 'B78945612', NULL, NULL); INSERT INTO `postgresql`.`profile`(`profile_id`, `person_id`, `profile_type_id`) SELECT p.person_id, p.person_id, 1 @@ -1297,20 +1513,20 @@ INSERT INTO `postgresql`.`calendar_state` (`calendar_state_id`, `type`, `rgb`) INSERT INTO `postgresql`.`calendar_employee` (`business_id`, `calendar_state_id`, `date`) VALUES - (106, 1, DATE_ADD(CURDATE(), INTERVAL 10 DAY)), - (106, 1, DATE_ADD(CURDATE(), INTERVAL 11 DAY)), - (106, 1, DATE_ADD(CURDATE(), INTERVAL 12 DAY)), - (106, 1, DATE_ADD(CURDATE(), INTERVAL 20 DAY)), - (106, 2, DATE_ADD(CURDATE(), INTERVAL -10 DAY)), - (106, 1, DATE_ADD(CURDATE(), INTERVAL -12 DAY)), - (106, 2, DATE_ADD(CURDATE(), INTERVAL -20 DAY)), - (107, 1, DATE_ADD(CURDATE(), INTERVAL 15 DAY)), - (107, 1, DATE_ADD(CURDATE(), INTERVAL 16 DAY)), - (107, 1, DATE_ADD(CURDATE(), INTERVAL 20 DAY)), - (107, 1, DATE_ADD(CURDATE(), INTERVAL 30 DAY)), - (107, 2, DATE_ADD(CURDATE(), INTERVAL -10 DAY)), - (107, 1, DATE_ADD(CURDATE(), INTERVAL -12 DAY)), - (107, 2, DATE_ADD(CURDATE(), INTERVAL -20 DAY)); + (106, 1, DATE_ADD(CURDATE(), INTERVAL 10 DAY)), + (106, 1, DATE_ADD(CURDATE(), INTERVAL 11 DAY)), + (106, 1, DATE_ADD(CURDATE(), INTERVAL 12 DAY)), + (106, 1, DATE_ADD(CURDATE(), INTERVAL 20 DAY)), + (106, 2, DATE_ADD(CURDATE(), INTERVAL -10 DAY)), + (106, 1, DATE_ADD(CURDATE(), INTERVAL -12 DAY)), + (106, 2, DATE_ADD(CURDATE(), INTERVAL -20 DAY)), + (107, 1, DATE_ADD(CURDATE(), INTERVAL 15 DAY)), + (107, 1, DATE_ADD(CURDATE(), INTERVAL 16 DAY)), + (107, 1, DATE_ADD(CURDATE(), INTERVAL 20 DAY)), + (107, 1, DATE_ADD(CURDATE(), INTERVAL 30 DAY)), + (107, 2, DATE_ADD(CURDATE(), INTERVAL -10 DAY)), + (107, 1, DATE_ADD(CURDATE(), INTERVAL -12 DAY)), + (107, 2, DATE_ADD(CURDATE(), INTERVAL -20 DAY)); INSERT INTO `vn`.`smsConfig` (`id`, `uri`, `user`, `password`, `title`) VALUES @@ -1324,17 +1540,6 @@ INSERT INTO `vn`.`sharingClient`(`id`, `workerFk`, `started`, `ended`, `clientFk INSERT INTO `vn`.`sharingCart`(`id`, `workerFk`, `started`, `ended`, `workerSubstitute`, `created`) VALUES (1, 18, DATE_ADD(CURDATE(), INTERVAL -5 DAY), DATE_ADD(CURDATE(), INTERVAL +15 DAY), 19, DATE_ADD(CURDATE(), INTERVAL -5 DAY)); - -INSERT INTO `vn`.`zone` (`id`, `name`, `hour`, `warehouseFk`, `agencyModeFk`, `travelingDays`, `price`, `bonus`) - VALUES - (1, 'Zone pickup A', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 1, 0, '0', '0'), - (2, 'Zone pickup B', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 2, 1, 0, '0', '0'), - (3, 'Zone 247 A', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 7, 1, '2', '0'), - (4, 'Zone 247 B', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 2, 7, 1, '2', '0'), - (5, 'Zone expensive A', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 8, 1, '5', '-1'), - (6, 'Zone expensive B', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 2, 8, 1, '5', '-1'), - (7, 'Zone refund', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 10, 0, 0, 0), - (8, 'Zone others', CONCAT(CURRENT_DATE(), ' ', TIME('22:00')), 1, 23, 0, 0, 0); INSERT INTO `vn`.`zoneIncluded` (`zoneFk`, `geoFk`, `isIncluded`) VALUES @@ -1599,16 +1804,16 @@ INSERT INTO `vn`.`dmsType`(`id`, `name`, `path`, `readRoleFk`, `writeRoleFk`, `c (2, 'Doc oficial', 'oficial', NULL, NULL, 'officialDoc'), (3, 'Laboral', 'laboral', NULL, NULL, 'hhrrData'), (4, 'Albaranes recibidos', 'entradas', NULL, NULL, 'deliveryNote'), - (5, 'Otros', 'otros', 1, NULL, 'miscellaneous'), + (5, 'Otros', 'otros', 1, 1, 'miscellaneous'), (6, 'Pruebas', 'pruebas', NULL, NULL, 'tests'), (7, 'IAE Clientes', 'IAE_Clientes', NULL, NULL, 'economicActivitiesTax'), (8, 'Fiscal', 'fiscal', NULL, NULL, 'fiscal'), (9, 'Vehiculos', 'vehiculos', NULL, NULL, 'vehicles'), (10, 'Plantillas', 'plantillas', NULL, NULL, 'templates'), (11, 'Contratos', 'contratos', NULL, NULL, 'contracts'), - (12, 'ley de pagos', 'ley pagos', NULL, NULL, 'paymentsLaw'), - (13, 'Basura', 'basura', NULL, NULL, 'trash'), - (14, 'Ticket', 'tickets', 1, NULL, 'ticket'), + (12, 'ley de pagos', 'ley pagos', 1, 1, 'paymentsLaw'), + (13, 'Basura', 'basura', 1, 1, 'trash'), + (14, 'Ticket', 'tickets', 1, 1, 'ticket'), (15, 'Presupuestos', 'Presupuestos', NULL, NULL, 'budgets'), (16, 'Logistica', 'logistica', NULL, NULL, 'logistics'), (17, 'cmr', 'cmr', NULL, NULL, 'cmr'), diff --git a/db/dump/structure.sql b/db/dump/structure.sql index 181535123..34989cf96 100644 --- a/db/dump/structure.sql +++ b/db/dump/structure.sql @@ -23,19 +23,6 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `account` /*!40100 DEFAULT CHARACTER SE USE `account`; --- --- Temporary table structure for view `__accountPam` --- - -DROP TABLE IF EXISTS `__accountPam`; -/*!50001 DROP VIEW IF EXISTS `__accountPam`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `__accountPam` AS SELECT - 1 AS `name`, - 1 AS `password`*/; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `account` -- @@ -52,13 +39,13 @@ CREATE TABLE `account` ( /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`accountAfterInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`account_afterInsert` AFTER INSERT ON `account` FOR EACH ROW BEGIN @@ -73,13 +60,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`accountAfterDelete` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`account_afterDelete` AFTER DELETE ON `account` FOR EACH ROW BEGIN @@ -187,7 +174,7 @@ CREATE TABLE `mailAlias` ( `isPublic` tinyint(4) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `alias` (`alias`) -) ENGINE=InnoDB AUTO_INCREMENT=78 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail aliases'; +) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Mail aliases'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -283,7 +270,7 @@ CREATE TABLE `role` ( `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Roles'; +) ENGINE=InnoDB AUTO_INCREMENT=63 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Roles'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -360,6 +347,7 @@ CREATE TABLE `user` ( `name` varchar(30) CHARACTER SET utf8 NOT NULL, `nickname` varchar(127) COLLATE utf8_unicode_ci NOT NULL, `password` char(64) COLLATE utf8_unicode_ci NOT NULL, + `bcryptPassword` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `role` int(10) unsigned NOT NULL DEFAULT '2', `active` tinyint(1) NOT NULL DEFAULT '1', `email` varchar(255) CHARACTER SET utf8 DEFAULT NULL, @@ -376,22 +364,22 @@ CREATE TABLE `user` ( KEY `nickname` (`nickname`), KEY `lang` (`lang`), CONSTRAINT `user_ibfk_2` FOREIGN KEY (`role`) REFERENCES `role` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=15832 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global users'; +) ENGINE=InnoDB AUTO_INCREMENT=16026 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Global users'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`userBeforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `account`.`user_beforeInsert` BEFORE INSERT ON `user` FOR EACH ROW BEGIN - CALL userCheckName (NEW.`name`); + CALL userCheckName(NEW.`name`); IF NEW.nickname = '' THEN SET NEW.nickname = NEW.`name`; @@ -407,24 +395,26 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `userBeforeUpdate` BEFORE UPDATE ON `user` FOR EACH ROW trig: BEGIN - IF NOT (NEW.`name` <=> OLD.`name`) THEN - CALL userCheckName (NEW.`name`); - END IF; - - IF NEW.`sync` <=> OLD.`sync` THEN - SET NEW.`sync` = FALSE; - END IF; - - -- LEAVE trig; - - IF NOT (NEW.`password` <=> OLD.`password`) THEN - SET NEW.lastPassChange = NOW(); - END IF; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `user_beforeUpdate` + BEFORE UPDATE ON `user` + FOR EACH ROW +BEGIN + IF !(NEW.`name` <=> OLD.`name`) THEN + CALL userCheckName (NEW.`name`); + END IF; + + IF NEW.`sync` <=> OLD.`sync` THEN + SET NEW.`sync` = FALSE; + END IF; + + IF !(NEW.`password` <=> OLD.`password`) THEN + SET NEW.bcryptPassword = NULL; + SET NEW.lastPassChange = NOW(); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -436,41 +426,23 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `userAfterUpdate` AFTER UPDATE ON `user` FOR EACH ROW trig: BEGIN - -- LEAVE trig; - - IF NOT (NEW.`role` <=> OLD.`role`) - THEN - INSERT INTO vn2008.mail SET - `to` = 'jgallego@verdnatura.es', - `reply_to` = 'jgallego@verdnatura.es', - `subject` = 'Rol modificado', - `text` = CONCAT(account.userGetName(), ' ha modificado el rol del usuario ', - NEW.`name`, ' de ', OLD.role, ' a ', NEW.role); - END IF; - IF NOT (NEW.`active` <=> OLD.`active`) - THEN - INSERT INTO vn2008.mail SET - `to` = 'jgallego@verdnatura.es', - `reply_to` = 'jgallego@verdnatura.es', - `subject` = 'active modificado', - `text` = CONCAT(account.userGetName(), ' ha modificado el active del usuario ', - NEW.`name`, ' de ', OLD.active, ' a ', NEW.active); - END IF; - IF NEW.id = 5270 THEN - - INSERT INTO vn2008.mail SET - `to` = 'jgallego@verdnatura.es', - `reply_to` = 'jgallego@verdnatura.es', - `subject` = 'cambiar password', - `text` = CONCAT(account.userGetName(), ' ha modificado el password de ornamentales ', - NEW.`name`, ' de ', OLD.active, ' a ', NEW.active); - CALL util.throw('NO_TIENE_PERMISO_PARA_MODIFICAR_ESTA_CONTRASEÑA'); - END IF; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `user_afterUpdate` + AFTER UPDATE ON `user` + FOR EACH ROW +BEGIN + IF !(NEW.`role` <=> OLD.`role`) + THEN + INSERT INTO vn2008.mail SET + `to` = 'jgallego@verdnatura.es', + `reply_to` = 'jgallego@verdnatura.es', + `subject` = 'Rol modificado', + `text` = CONCAT(account.userGetName(), ' ha modificado el rol del usuario ', + NEW.`name`, ' de ', OLD.role, ' a ', NEW.role); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -1018,9 +990,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -1032,8 +1004,8 @@ proc: BEGIN * de la mezcla de permisos serán nombrados singuiendo el patrón * z-[nombre_rol]. * - * Para que el procedimiento funcione debe de existir un usuario - * any@% que se usara como plantilla base. + * Si existe el usuario any@localhost que se tomará como plantilla + * para los atributos básicos. * * ¡Atención! Este procedimiento solo debe ser llamado cuando se * modifiquen los privilegios de MySQL. Si se modifica la jerarquía @@ -1041,25 +1013,11 @@ proc: BEGIN * este internamente. */ DECLARE vTplUser VARCHAR(255) DEFAULT 'any'; - DECLARE vHost VARCHAR(255) DEFAULT '%'; + DECLARE vTplHost VARCHAR(255) DEFAULT '%'; + DECLARE vRoleHost VARCHAR(255) DEFAULT 'localhost'; + DECLARE vAllHost VARCHAR(255) DEFAULT '%'; DECLARE vPrefix VARCHAR(2) DEFAULT 'z-'; - - DECLARE vTplExists BOOL; - DECLARE vTplHost VARCHAR(255); DECLARE vPrefixedLike VARCHAR(255); - - -- Comprueba que el usuario plantilla existe - - SELECT COUNT(*) > 0, `Host` - INTO vTplExists, vTplHost - FROM mysql.user - WHERE `User` = vTplUser - LIMIT 1; - - IF NOT vTplExists THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'TEMPLATE_USER_NOT_EXISTS'; - END IF; -- Borra todos los privilegios calculados @@ -1087,8 +1045,10 @@ proc: BEGIN DROP TEMPORARY TABLE IF EXISTS tRole; CREATE TEMPORARY TABLE tRole + (INDEX (id)) ENGINE = MEMORY SELECT + id, `name` role, CONCAT(vPrefix, `name`) prefixedRole FROM role @@ -1099,9 +1059,9 @@ proc: BEGIN (INDEX (inheritsFrom)) ENGINE = MEMORY SELECT - CONCAT(vPrefix, r.`name`) prefixedRole, + r.prefixedRole, ri.`name` inheritsFrom - FROM role r + FROM tRole r JOIN roleRole rr ON rr.role = r.id JOIN role ri ON ri.id = rr.inheritsFrom; @@ -1123,31 +1083,38 @@ proc: BEGIN SELECT r.prefixedRole, vTplHost, - IF('' != u.`Password`, - u.`Password`, t.`Password`), - IF('' != u.`ssl_type`, + IFNULL(t.`Password`, ''), + IFNULL(IF('' != u.`ssl_type`, u.`ssl_type`, t.`ssl_type`), - IF('' != u.`ssl_cipher`, + ''), + IFNULL(IF('' != u.`ssl_cipher`, u.`ssl_cipher`, t.`ssl_cipher`), - IF('' != u.`x509_issuer`, + ''), + IFNULL(IF('' != u.`x509_issuer`, u.`x509_issuer`, t.`x509_issuer`), - IF('' != u.`x509_subject`, + ''), + IFNULL(IF('' != u.`x509_subject`, u.`x509_subject`, t.`x509_subject`), - IF(0 != u.`max_questions`, + ''), + IFNULL(IF(0 != u.`max_questions`, u.`max_questions`, t.`max_questions`), - IF(0 != u.`max_updates`, + 0), + IFNULL(IF(0 != u.`max_updates`, u.`max_updates`, t.`max_updates`), - IF(0 != u.`max_connections`, + 0), + IFNULL(IF(0 != u.`max_connections`, u.`max_connections`, t.`max_connections`), - IF(0 != u.`max_user_connections`, - u.`max_user_connections`, t.`max_user_connections`) + 0), + IFNULL(IF(0 != u.`max_user_connections`, + u.`max_user_connections`, t.`max_user_connections`), + 0) FROM tRole r - JOIN mysql.user t + LEFT JOIN mysql.user t ON t.`User` = vTplUser - AND t.`Host` = vTplHost + AND t.`Host` = vRoleHost LEFT JOIN mysql.user u ON u.`User` = r.role - AND u.`Host` = vHost; + AND u.`Host` = vRoleHost; INSERT INTO mysql.proxies_priv ( `User`, @@ -1158,9 +1125,9 @@ proc: BEGIN ) SELECT '', - vHost, + vAllHost, prefixedRole, - vHost, + vTplHost, CONCAT(prefixedRole, '@', vTplHost) FROM tRole; @@ -1204,13 +1171,13 @@ proc: BEGIN FROM tRoleInherit r JOIN mysql.user u ON u.`User` = r.inheritsFrom - AND u.`Host`= vHost + AND u.`Host`= vRoleHost GROUP BY r.prefixedRole; UPDATE mysql.user u JOIN tUserPriv t ON u.`User` = t.prefixedRole - AND u.`Host` = vHost + AND u.`Host` = vTplHost SET u.`Select_priv` = t.`Select_priv`, @@ -1325,7 +1292,7 @@ proc: BEGIN FROM tRoleInherit r JOIN mysql.db t ON t.`User` = r.inheritsFrom - AND t.`Host`= vHost + AND t.`Host`= vRoleHost GROUP BY r.prefixedRole, t.`Db`; -- Copia los privilegios a nivel de tabla @@ -1352,7 +1319,7 @@ proc: BEGIN FROM tRoleInherit r JOIN mysql.tables_priv t ON t.`User` = r.inheritsFrom - AND t.`Host`= vHost + AND t.`Host`= vRoleHost GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`; -- Copia los privilegios a nivel de columna @@ -1377,7 +1344,7 @@ proc: BEGIN FROM tRoleInherit r JOIN mysql.columns_priv t ON t.`User` = r.inheritsFrom - AND t.`Host`= vHost + AND t.`Host`= vRoleHost GROUP BY r.prefixedRole, t.`Db`, t.`Table_name`, t.`Column_name`; -- Copia los privilegios de los procedimientos @@ -1404,7 +1371,7 @@ proc: BEGIN FROM tRoleInherit r JOIN mysql.procs_priv t ON t.`User` = r.inheritsFrom - AND t.`Host`= vHost; + AND t.`Host`= vRoleHost; -- Libera memoria @@ -1761,9 +1728,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -1778,12 +1745,49 @@ BEGIN * @param vUserName Nombre de usuario * @param vPassword Nueva contraseña */ - CALL userCheckPassword (vPassword); + DECLARE vSelf INT; + + CALL userCheckPassword(vPassword); + + SELECT id INTO vSelf + FROM user WHERE `name` = vUserName; UPDATE user SET - password = MD5(vPassword), - recoverPass = FALSE - WHERE `name` = vUserName; + `password` = MD5(vPassword), + `recoverPass` = FALSE + WHERE id = vSelf; + + CALL user_syncPassword(vSelf, vPassword); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `user_syncPassword` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `user_syncPassword`( + vSelf VARCHAR(255), + vPassword VARCHAR(255) +) +BEGIN +/** + * Synchronizes the user password in other schemes. + * + * @param vSelf The user id + * @param vPassword The user password + */ + CALL pbx.sip_setPassword(vSelf, vPassword); + + DELETE FROM salix.user WHERE id = vSelf; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -1918,7 +1922,7 @@ CREATE TABLE `XDiario_ALL` ( KEY `Cuenta` (`SUBCTA`), KEY `empresa` (`empresa_id`), KEY `Fecha` (`Fecha`) -) ENGINE=InnoDB AUTO_INCREMENT=1580132 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4245248 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1991,7 +1995,7 @@ CREATE TABLE `analisis_ventas` ( `Importe` double NOT NULL, PRIMARY KEY (`id`), KEY `Año` (`Año`,`Semana`) -) ENGINE=InnoDB AUTO_INCREMENT=38988130 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=53672261 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2243,6 +2247,7 @@ CREATE TABLE `defaulters` ( `amount` double NOT NULL DEFAULT '0', `defaulterSince` date DEFAULT NULL, `hasChanged` tinyint(1) DEFAULT NULL, + `frozened` date DEFAULT NULL, PRIMARY KEY (`client`,`date`), KEY `client` (`client`), KEY `date` (`date`) @@ -2391,7 +2396,6 @@ CREATE TABLE `rotacion` ( `mermas` decimal(10,4) NOT NULL DEFAULT '0.0000', `cm3reparto` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`Id_Article`,`warehouse_id`), - KEY `id_article_rotacion_idx` (`Id_Article`), KEY `warehouse_id_rotacion_idx` (`warehouse_id`), CONSTRAINT `id_article_rotaci` FOREIGN KEY (`Id_Article`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `warehouse_id_rotaci` FOREIGN KEY (`warehouse_id`) REFERENCES `vn2008`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE @@ -2400,21 +2404,19 @@ CREATE TABLE `rotacion` ( /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bi`.`rotacion_BEFORE_INSERT` BEFORE INSERT ON `rotacion` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bi`.`rotacion_beforeInsert` + BEFORE INSERT ON `rotacion` + FOR EACH ROW BEGIN - - IF NEW.Id_Article IN (95,98) THEN - + IF NEW.Id_Article IN (95, 98) THEN SET NEW.cm3 = 0; - END IF; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -2424,21 +2426,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bi`.`rotacion_BEFORE_UPDATE` BEFORE UPDATE ON `rotacion` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bi`.`rotacion_beforeUpdate` + BEFORE UPDATE ON `rotacion` + FOR EACH ROW BEGIN - - IF NEW.Id_Article IN (95,98) THEN - + IF NEW.Id_Article IN (95, 98) THEN SET NEW.cm3 = 0; - END IF; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -2500,7 +2500,7 @@ CREATE TABLE `rutasBoard` ( KEY `rutasBoard_ix1` (`year`), KEY `rutasBoard_ix2` (`month`), KEY `rutasBoard_ix3` (`warehouse_id`) -) ENGINE=InnoDB AUTO_INCREMENT=93457 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=119049 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3540,191 +3540,101 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `defaulting`(IN `vDate` DATE) -BEGIN -/*JGF para usar el campo vencimiento de facturas*/ - DECLARE vDone BOOLEAN; - DECLARE vClient INT; - DECLARE vAmount INT; - DECLARE vDued DATE; - DECLARE vAmountInvoice DECIMAL(10,2); - DECLARE vGraceDays INT; - DECLARE defaulters CURSOR FOR - SELECT client, amount, graceDays FROM bi.defaulters d - JOIN vn2008.Clientes c ON c.Id_Cliente = d.client - JOIN vn2008.pay_met pm ON pm.id = c.pay_met_id - WHERE hasChanged AND date = vDate; - - DECLARE invoices CURSOR FOR - SELECT Vencimiento, importe FROM vn2008.Facturas f - WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DELETE FROM bi.defaulters WHERE date = vDate; - - INSERT INTO bi.defaulters(client, date, amount) - SELECT customer_id, vDate, FLOOR(SUM(amount)) AS amount - FROM bi.customerRiskOverdue - GROUP BY customer_id; - - -- marcamos si ha cambiado y heredamos la fecha defaulterSince - UPDATE bi.defaulters d - JOIN ( - SELECT * FROM( - SELECT client, amount , defaulterSince FROM bi.defaulters - WHERE date <= TIMESTAMPADD(DAY,-1, vDate) - ORDER BY date DESC) t GROUP BY client - ) yesterday using(client) - SET d.hasChanged = IF(d.amount <> yesterday.amount, 1, 0), - d.defaulterSince = yesterday.defaulterSince - WHERE d.date = vDate ; - - OPEN defaulters; - defaulters: LOOP - SET vDone = FALSE; - SET vAmount = 0; - FETCH defaulters INTO vClient,vAmount, vGraceDays; - IF vDone THEN - LEAVE defaulters; - END IF; - OPEN invoices; - invoices:LOOP - - FETCH invoices INTO vDued, vAmountInvoice; - IF vDone THEN - LEAVE invoices; - END IF; - - IF TIMESTAMPADD(DAY, vGraceDays, vDued) <= vDate THEN - SET vAmount = vAmount - vAmountInvoice; - IF vAmount <= 0 THEN - - UPDATE defaulters SET defaulterSince = vDued - WHERE client = vClient and date = vDate; - - SET vAmount = 0; - LEAVE invoices; - END IF; - END IF; - END LOOP; - CLOSE invoices; - END LOOP; - CLOSE defaulters; - DELETE FROM bi.defaulting WHERE date = vDate; - - INSERT INTO bi.defaulting(date, amount) - SELECT vDate, SUM(amount) - FROM bi.defaulters - WHERE date = vDate and amount > 0; - - CALL vn.clientFreeze(); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `defaultingTest` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `defaultingTest`(IN `vDate` DATE) -BEGIN -/*JGF para usar el campo vencimiento de facturas*/ - DECLARE vDone BOOLEAN; - DECLARE vClient INT; - DECLARE vAmount INT; - DECLARE vDued DATE; - DECLARE vAmountInvoice DECIMAL(10,2); - DECLARE vGraceDays INT; - DECLARE defaulters CURSOR FOR - SELECT client, amount, graceDays FROM bi.defaulters d - JOIN vn2008.Clientes c ON c.Id_Cliente = d.client - JOIN vn2008.pay_met pm ON pm.id = c.pay_met_id - WHERE hasChanged AND date = vDate; - - DECLARE invoices CURSOR FOR - SELECT Fecha, importe FROM vn2008.Facturas f - WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - DELETE FROM bi.defaulters WHERE date = vDate; - - INSERT INTO bi.defaulters(client, date, amount) - SELECT customer_id, vDate, FLOOR(SUM(amount)) AS amount - FROM bi.customerRiskOverdue - GROUP BY customer_id; - - SELECT * FROM( - SELECT client, amount , defaulterSince FROM bi.defaulters - WHERE date <= TIMESTAMPADD(DAY,-1, vDate) - ORDER BY date DESC) t GROUP BY client; - SELECT * FROM bi.defaulters where client = 14669; - - -- marcamos si ha cambiado y heredamos la fecha defaulterSince - UPDATE bi.defaulters d - JOIN ( - SELECT * FROM( - SELECT client, amount , defaulterSince FROM bi.defaulters - WHERE date <= TIMESTAMPADD(DAY,-1, vDate) - ORDER BY date DESC) t GROUP BY client - ) yesterday using(client) - SET d.hasChanged = IF(d.amount <> yesterday.amount, 1, 0), - d.defaulterSince = yesterday.defaulterSince - WHERE d.date = vDate ; - - OPEN defaulters; - defaulters: LOOP - SET vDone = FALSE; - SET vAmount = 0; - FETCH defaulters INTO vClient,vAmount, vGraceDays; - IF vDone THEN - LEAVE defaulters; - END IF; - OPEN invoices; - invoices:LOOP - - FETCH invoices INTO vDued, vAmountInvoice; - IF vDone THEN - LEAVE invoices; - END IF; - - IF TIMESTAMPADD(DAY, vGraceDays, vDued) <= vDate THEN - SET vAmount = vAmount - vAmountInvoice; - IF vAmount <= 0 THEN - UPDATE defaulters SET defaulterSince = vDued - WHERE client = vClient and date = vDate; - - SET vAmount = 0; - LEAVE invoices; - END IF; - END IF; - END LOOP; - CLOSE invoices; - END LOOP; - CLOSE defaulters; - DELETE FROM bi.defaulting WHERE date = vDate; - - INSERT INTO bi.defaulting(date, amount) - SELECT vDate, SUM(amount) - FROM bi.defaulters - WHERE date = vDate and amount > 0; - - CALL vn.clientFreeze(); +BEGIN +/*JGF para usar el campo vencimiento de facturas*/ + DECLARE vDone BOOLEAN; + DECLARE vClient INT; + DECLARE vAmount INT; + DECLARE vDued DATE; + DECLARE vAmountInvoice DECIMAL(10,2); + DECLARE vGraceDays INT; + DECLARE defaulters CURSOR FOR + SELECT client, amount, graceDays FROM bi.defaulters d + JOIN vn2008.Clientes c ON c.Id_Cliente = d.client + JOIN vn2008.pay_met pm ON pm.id = c.pay_met_id + WHERE hasChanged AND date = vDate; + + DECLARE invoices CURSOR FOR + SELECT Vencimiento, importe FROM vn2008.Facturas f + WHERE f.Fecha >= '2016-01-01' AND f.Id_Cliente = vClient ORDER BY f.Fecha DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + DELETE FROM bi.defaulters WHERE date = vDate; + + INSERT INTO bi.defaulters(client, date, amount) + SELECT customer_id, vDate, FLOOR(SUM(amount)) AS amount + FROM bi.customerRiskOverdue + GROUP BY customer_id; + + -- marcamos si ha cambiado y heredamos la fecha defaulterSince + UPDATE bi.defaulters d + JOIN ( + SELECT * FROM( + SELECT client, amount , defaulterSince, frozened FROM bi.defaulters + WHERE date <= TIMESTAMPADD(DAY,-1, vDate) + ORDER BY date DESC) t GROUP BY client + ) yesterday using(client) + SET d.hasChanged = IF(d.amount <> yesterday.amount, 1, 0), + d.defaulterSince = yesterday.defaulterSince, + d.frozened = yesterday.frozened + WHERE d.date = vDate ; + + OPEN defaulters; + defaulters: LOOP + SET vDone = FALSE; + SET vAmount = 0; + FETCH defaulters INTO vClient,vAmount, vGraceDays; + IF vDone THEN + LEAVE defaulters; + END IF; + OPEN invoices; + invoices:LOOP + + FETCH invoices INTO vDued, vAmountInvoice; + IF vDone THEN + LEAVE invoices; + END IF; + + IF TIMESTAMPADD(DAY, vGraceDays, vDued) <= vDate THEN + SET vAmount = vAmount - vAmountInvoice; + IF vAmount <= 0 THEN + + UPDATE defaulters SET defaulterSince = vDued + WHERE client = vClient and date = vDate; + + SET vAmount = 0; + LEAVE invoices; + END IF; + END IF; + END LOOP; + CLOSE invoices; + END LOOP; + CLOSE defaulters; + + UPDATE defaulters d + JOIN vn.config ON TRUE + SET d.frozened = NULL + WHERE d.`date` = vDate + AND d.amount <= config.defaultersMaxAmount; + + CALL vn.clientFreeze(); + + -- actualizamos defaulting + DELETE FROM bi.defaulting WHERE date = vDate; + + INSERT INTO bi.defaulting(date, amount) + SELECT vDate, SUM(amount) + FROM bi.defaulters + WHERE date = vDate and amount > 0; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -3847,49 +3757,49 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `greuge_dif_porte_add`() BEGIN + DECLARE datSTART DATETIME DEFAULT '2019-01-01'; -- TIMESTAMPADD(DAY,-10,CURDATE()); + DECLARE datEND DATETIME DEFAULT TIMESTAMPADD(DAY,-1,CURDATE()); -DECLARE datSTART DATETIME DEFAULT '2019-01-01'; -- TIMESTAMPADD(DAY,-10,CURDATE()); -DECLARE datEND DATETIME DEFAULT TIMESTAMPADD(DAY,-1,CURDATE()); + DROP TEMPORARY TABLE IF EXISTS tmp.dp; -DROP TEMPORARY TABLE IF EXISTS tmp.dp; - -CREATE TEMPORARY TABLE tmp.dp - (PRIMARY KEY (Id_Ticket)) - ENGINE = MEMORY - SELECT - t.Id_Ticket, - SUM(az.price ) AS teorico, - 00000.00 as practico, - 00000.00 as greuge - FROM - vn2008.Tickets t - JOIN vn2008.Clientes cli ON cli.Id_cliente = t.Id_Cliente - LEFT JOIN vn2008.expeditions e ON e.ticket_id = t.Id_Ticket - JOIN vn2008.Consignatarios c ON c.Id_Consigna = t.Id_Consigna - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - JOIN vn2008.Agencias_province ap ON t.warehouse_id = ap.warehouse_id - AND ap.province_id = c.province_id - AND ap.agency_id = a.agency_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = t.Id_Agencia - AND az.zona = ap.zona - AND t.warehouse_id = az.warehouse_id - AND az.Id_Article = e.EsBulto - WHERE - t.Fecha between datSTART AND datEND - AND cli.`real` - AND t.empresa_id IN (442 , 567) - AND ap.isVolumetric = FALSE - GROUP BY t.Id_Ticket; + CREATE TEMPORARY TABLE tmp.dp + (PRIMARY KEY (Id_Ticket)) + ENGINE = MEMORY + SELECT + t.Id_Ticket, + SUM(az.price ) AS teorico, + 00000.00 as practico, + 00000.00 as greuge + FROM + vn2008.Tickets t + JOIN vn2008.Clientes cli ON cli.Id_cliente = t.Id_Cliente + LEFT JOIN vn2008.expeditions e ON e.ticket_id = t.Id_Ticket + JOIN vn2008.Consignatarios c ON c.Id_Consigna = t.Id_Consigna + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + JOIN vn2008.Agencias_province ap ON t.warehouse_id = ap.warehouse_id + AND ap.province_id = c.province_id + AND ap.agency_id = a.agency_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = t.Id_Agencia + AND az.zona = ap.zona + AND t.warehouse_id = az.warehouse_id + AND az.Id_Article = e.EsBulto + WHERE + t.Fecha between datSTART AND datEND + AND cli.`real` + AND t.empresa_id IN (442 , 567) + AND ap.isVolumetric = FALSE + GROUP BY t.Id_Ticket; --- Agencias que cobran por volumen + -- Agencias que cobran por volumen + INSERT INTO tmp.dp SELECT t.Id_Ticket, @@ -3910,89 +3820,49 @@ CREATE TEMPORARY TABLE tmp.dp AND t.Fecha BETWEEN datSTART AND datEND AND ap.isVolumetric != FALSE GROUP BY t.Id_Ticket; -/* -DROP TEMPORARY TABLE IF EXISTS tmp.dp_aux; -CREATE TEMPORARY TABLE tmp.dp_aux - (PRIMARY KEY (Id_Ticket)) - ENGINE = MEMORY - SELECT t.Id_Ticket, sum(freight) as porte - FROM tmp.dp - JOIN vn2008.Tickets t ON t.Id_Ticket = dp.Id_Ticket - JOIN vn2008.Rutas r on r.Id_Ruta = t.Id_Ruta - JOIN vn2008.Agencias a on a.Id_Agencia = r.Id_Agencia - JOIN ( - SELECT - M.Id_Ticket, - (M.Cantidad * r.cm3 / cb.Volumen ) * az.price AS freight - FROM - vn2008.Movimientos M - JOIN vn2008.Tickets t ON t.Id_Ticket = M.Id_Ticket - JOIN vn2008.Consignatarios c ON c.Id_Consigna = t.Id_Consigna - JOIN bi.rotacion r ON M.Id_Article = r.Id_Article - AND t.warehouse_id = r.warehouse_id - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - JOIN vn2008.Agencias_province ap ON t.warehouse_id = ap.warehouse_id - AND ap.province_id = c.province_id - AND ap.agency_id = a.agency_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = t.Id_Agencia - AND az.zona = ap.zona - AND t.warehouse_id = az.warehouse_id - AND az.Id_Article = 71 - JOIN vn2008.Cubos cb ON Id_Cubo = 94 - WHERE t.Fecha between datSTART AND datEND - ) vmv ON vmv.Id_Ticket = t.Id_Ticket - WHERE a.is_volumetric - GROUP BY t.Id_Ticket; + DROP TEMPORARY TABLE IF EXISTS tmp.dp_aux; - UPDATE tmp.dp - JOIN tmp.dp_aux using(Id_Ticket) - SET teorico = porte; -*/ -DROP TEMPORARY TABLE IF EXISTS tmp.dp_aux; - -CREATE TEMPORARY TABLE tmp.dp_aux - (PRIMARY KEY (Id_Ticket)) - ENGINE = MEMORY - SELECT dp.Id_Ticket, sum(Cantidad * Valor) as valor - FROM tmp.dp - JOIN vn2008.Movimientos m using(Id_Ticket) - JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) - WHERE mc.Id_Componente = 15 - GROUP BY m.Id_Ticket; - -UPDATE tmp.dp - JOIN tmp.dp_aux using(Id_Ticket) - SET practico = valor; - -DROP TEMPORARY TABLE tmp.dp_aux; - -CREATE TEMPORARY TABLE tmp.dp_aux - (PRIMARY KEY (Id_Ticket)) - ENGINE = MEMORY - SELECT dp.Id_Ticket, sum(Importe) Importe + CREATE TEMPORARY TABLE tmp.dp_aux + (PRIMARY KEY (Id_Ticket)) + ENGINE = MEMORY + SELECT dp.Id_Ticket, sum(Cantidad * Valor) as valor FROM tmp.dp - JOIN vn2008.Greuges g using(Id_Ticket) - WHERE Greuges_type_id = 1 - GROUP BY Id_Ticket; + JOIN vn2008.Movimientos m using(Id_Ticket) + JOIN vn2008.Movimientos_componentes mc using(Id_Movimiento) + WHERE mc.Id_Componente = 15 + GROUP BY m.Id_Ticket; -UPDATE tmp.dp - JOIN tmp.dp_aux using(Id_Ticket) - SET greuge = Importe; - - -INSERT INTO vn2008.Greuges (Id_Cliente,Comentario,Importe,Fecha, Greuges_type_id, Id_Ticket) - SELECT t.Id_Cliente - , concat('dif_porte ', dp.Id_Ticket) - , round(IFNULL(teorico,0) - IFNULL(practico,0) - IFNULL(greuge,0),2) as Importe - , date(t.Fecha) - , 1 - ,t.Id_Ticket - FROM tmp.dp - JOIN vn2008.Tickets t on dp.Id_Ticket = t.Id_Ticket - WHERE ABS(IFNULL(teorico,0) - IFNULL(practico,0) - IFNULL(greuge,0)) > 1; + UPDATE tmp.dp + JOIN tmp.dp_aux using(Id_Ticket) + SET practico = valor; + + DROP TEMPORARY TABLE tmp.dp_aux; + + CREATE TEMPORARY TABLE tmp.dp_aux + (PRIMARY KEY (Id_Ticket)) + ENGINE = MEMORY + SELECT dp.Id_Ticket, sum(Importe) Importe + FROM tmp.dp + JOIN vn2008.Greuges g using(Id_Ticket) + WHERE Greuges_type_id = 1 + GROUP BY Id_Ticket; + + UPDATE tmp.dp + JOIN tmp.dp_aux using(Id_Ticket) + SET greuge = Importe; + INSERT INTO vn2008.Greuges (Id_Cliente,Comentario,Importe,Fecha, Greuges_type_id, Id_Ticket) + SELECT t.Id_Cliente + , concat('dif_porte ', dp.Id_Ticket) + , round(IFNULL(teorico,0) - IFNULL(practico,0) - IFNULL(greuge,0),2) as Importe + , date(t.Fecha) + , 1 + ,t.Id_Ticket + FROM tmp.dp + JOIN vn2008.Tickets t on dp.Id_Ticket = t.Id_Ticket + WHERE ABS(IFNULL(teorico,0) - IFNULL(practico,0) - IFNULL(greuge,0)) > 1; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4005,7 +3875,7 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -4030,6 +3900,8 @@ BEGIN END; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; + + DELETE FROM bi.Greuge_Evolution WHERE Fecha >= TIMESTAMPADD(MONTH,-1,CURDATE()); SELECT TIMESTAMPADD(DAY,1,MAX(Fecha)), TIMESTAMPADD(DAY,2,MAX(Fecha)) @@ -4475,14 +4347,14 @@ DELIMITER ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update`() -BEGIN - -- Sólo hace la consulta gorda los sábados de madrugada. Necesita casi dos horas. - CALL rotacion_update_manual(1, 999999, TIMESTAMPADD(WEEK,-1,CURDATE()), CURDATE()); +BEGIN + -- Sólo hace la consulta gorda los sábados de madrugada. Necesita casi dos horas. + CALL rotacion_update_manual(1, 999999, TIMESTAMPADD(WEEK, -1, CURDATE()), CURDATE()); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4493,176 +4365,182 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update_manual`(IN intART_DESDE INT, IN intART_HASTA INT, IN datSTART DATE, IN datEND DATE) +CREATE DEFINER=`root`@`%` PROCEDURE `rotacion_update_manual`( + vItemFrom INT, + vItemTo INT, + vStartDate DATE, + vEndDate DATE +) BEGIN + DECLARE vDays INT DEFAULT DATEDIFF(vEndDate, vStartDate); + REPLACE bi.rotacion(Id_Article, warehouse_id, total, rotacion) + SELECT Id_Article, warehouse_id, Total, ROUND((SUM(Saldo_Ponderado) / Total), 2) AS rotacion + -- round(AVG(Saldo_Ponderado) / (Total / vDays),1) AS Rotacion + FROM ( + SELECT Id_Article, + warehouse_id, + @intervalo:= IF(warehouse_id = @wh AND Id_Article = @art, + DATEDIFF(Fecha, @fec),1) AS Dias, + IF(warehouse_id = @wh AND Id_Article = @art, + IF(@sd < 0,0,@sd) * @intervalo, + IF(Unidades<0,0,Unidades)) AS Saldo_Ponderado, + IF(warehouse_id = @wh AND Id_Article = @art, + @sd:= @sd + Unidades, @sd:= Unidades) AS Saldo, + @fec:= Fecha, + @art:= Id_Article, + @wh:= warehouse_id + FROM ( + SELECT Id_Article, landing AS Fecha, sum(Cantidad) AS Unidades, + warehouse_id, @fec:= vStartDate, @art := 0, + @d := 0, @sd:= 0, @wh := 0, @intervalo := 0 + FROM ( + SELECT Id_Article, landing, Cantidad, warehouse_id + FROM vn2008.Compres C + JOIN vn2008.Entradas E USING(Id_Entrada) + JOIN vn2008.Articles A USING(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.travel tr ON tr.id = travel_id + JOIN vn2008.warehouse w ON w.id = tr.warehouse_id + WHERE landing BETWEEN vStartDate AND vEndDate + AND r.mercancia = TRUE + AND Id_Article BETWEEN vItemFrom AND vItemTo + AND Id_Proveedor <> 4 + AND r.display <> 0 + AND NOT E.Inventario + AND NOT fuente + AND NOT redada + UNION ALL + SELECT Id_Article, shipment, -Cantidad, warehouse_id_out + FROM vn2008.Compres C + JOIN vn2008.Entradas E USING(Id_Entrada) + JOIN vn2008.Articles A USING(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.travel tr ON tr.id = travel_id + JOIN vn2008.warehouse w ON w.id = tr.warehouse_id_out + WHERE shipment BETWEEN vStartDate AND vEndDate + AND r.mercancia = TRUE + AND Id_Article BETWEEN vItemFrom AND vItemTo + AND Id_Proveedor <> 4 + AND r.display <> 0 + AND NOT fuente + AND NOT E.Inventario + AND NOT redada + UNION ALL + SELECT Id_Article, DATE(Fecha), -Cantidad, warehouse_id + FROM vn2008.Movimientos M + JOIN vn2008.Articles A USING(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.Tickets t USING(Id_Ticket) + JOIN vn2008.warehouse w ON w.id = t.warehouse_id + WHERE Fecha BETWEEN vStartDate AND vEndDate + AND r.mercancia = TRUE + AND r.display <> 0 + AND NOT fuente + AND Id_Article BETWEEN vItemFrom AND vItemTo + AND Id_Cliente NOT IN (2066,2067,2068) + ) sub + GROUP BY Id_Article, warehouse_id, Fecha + ) sub2 + ) sub4 + JOIN ( + SELECT Id_Article, SUM(Cantidad) AS Total, warehouse_id + FROM vn2008.Compres C + JOIN vn2008.Entradas E USING(Id_Entrada) + JOIN vn2008.Articles A USING(Id_Article) + JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + JOIN vn2008.travel tr ON tr.id = travel_id + JOIN vn2008.warehouse w ON w.id = tr.warehouse_id + WHERE landing BETWEEN vStartDate AND vEndDate + AND r.mercancia = TRUE + AND Id_Article BETWEEN vItemFrom AND vItemTo + AND Id_Proveedor <> 4 + AND NOT E.Inventario + AND r.display <> 0 + AND NOT redada + AND NOT fuente + GROUP BY Id_Article, warehouse_id + ) sub3 USING(Id_Article, warehouse_id) + GROUP BY Id_Article, warehouse_id; -DECLARE intLAPSO INT DEFAULT DATEDIFF(datEND,datSTART ); + -- Añadimos el volumen por unidad de venta + -- FIXME: Optimizar la consulta de actualización + CALL vn2008.item_last_buy_(NULL, vStartDate); - - - REPLACE bi.rotacion(Id_Article,warehouse_id,total,rotacion) - SELECT Id_Article, warehouse_id, Total, round((sum(Saldo_Ponderado)/Total),2) as rotacion -- round(avg(Saldo_Ponderado) / (Total / intLAPSO),1) as Rotacion - FROM - ( - SELECT Id_Article, warehouse_id, - @intervalo:= IF(warehouse_id = @wh AND Id_Article = @art , DATEDIFF(Fecha, @fec),1) as Dias, - IF(warehouse_id = @wh AND Id_Article = @art , IF(@sd < 0,0,@sd) * @intervalo, IF(Unidades<0,0,Unidades)) as Saldo_Ponderado, - IF(warehouse_id = @wh AND Id_Article = @art , @sd:= @sd + Unidades, @sd:= Unidades) as Saldo - - , @fec:= Fecha, @art:= Id_Article, @wh:= warehouse_id - FROM - ( - SELECT Id_Article, landing as Fecha, sum(Cantidad) as Unidades, warehouse_id, @fec:= datSTART, @art := 0, @d := 0, @sd:= 0, @wh := 0, @intervalo := 0 - FROM - ( - SELECT Id_Article, landing, Cantidad, warehouse_id - FROM vn2008.Compres C - JOIN vn2008.Entradas E using(Id_Entrada) - JOIN vn2008.Articles A using(Id_Article) - JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id - JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.travel tr on tr.id = travel_id - JOIN vn2008.warehouse w on w.id = tr.warehouse_id - WHERE landing between datSTART and datEND - AND r.mercancia = TRUE - AND Id_Article between intART_DESDE and intART_HASTA - AND Id_Proveedor <> 4 - AND r.display <> 0 - AND NOT E.Inventario - AND NOT fuente - AND NOT redada - UNION ALL - SELECT Id_Article, shipment, -Cantidad, warehouse_id_out - FROM vn2008.Compres C - JOIN vn2008.Entradas E using(Id_Entrada) - JOIN vn2008.Articles A using(Id_Article) - JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id - JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.travel tr on tr.id = travel_id - JOIN vn2008.warehouse w on w.id = tr.warehouse_id_out - WHERE shipment between datSTART and datEND - AND r.mercancia = TRUE - AND Id_Article between intART_DESDE and intART_HASTA - AND Id_Proveedor <> 4 - AND r.display <> 0 - AND NOT fuente - AND NOT E.Inventario - AND NOT redada - UNION ALL - SELECT Id_Article, date(Fecha), -Cantidad, warehouse_id - FROM vn2008.Movimientos M - JOIN vn2008.Articles A using(Id_Article) - JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id - JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.Tickets t using(Id_Ticket) - JOIN vn2008.warehouse w on w.id = t.warehouse_id - WHERE Fecha between datSTART and datEND - AND r.mercancia = TRUE - AND r.display <> 0 - AND NOT fuente - AND Id_Article between intART_DESDE and intART_HASTA - AND Id_Cliente NOT IN (2066,2067,2068) - ) sub - GROUP BY Id_Article, warehouse_id, Fecha - ) sub2 - ) sub4 - JOIN - ( - SELECT Id_Article, sum(Cantidad) as Total, warehouse_id - FROM vn2008.Compres C - JOIN vn2008.Entradas E using(Id_Entrada) - JOIN vn2008.Articles A using(Id_Article) - JOIN vn2008.Tipos tp ON tp.tipo_id = A.tipo_id - LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id - JOIN vn2008.travel tr on tr.id = travel_id - JOIN vn2008.warehouse w on w.id = tr.warehouse_id - WHERE landing between datSTART and datEND - AND r.mercancia = TRUE - AND Id_Article between intART_DESDE and intART_HASTA - AND Id_Proveedor <> 4 - AND NOT E.Inventario - AND r.display <> 0 - AND NOT redada - AND NOT fuente - GROUP BY Id_Article, warehouse_id - ) sub3 using(Id_Article, warehouse_id) - - GROUP BY Id_Article, warehouse_id; - - CALL vn2008.item_last_buy_(NULL,datSTART); + UPDATE bi.rotacion r + JOIN vn2008.t_item_last_buy b ON r.Id_Article = b.item_id AND r.warehouse_id = b.warehouse_id + JOIN vn2008.Compres ON Id_Compra = b.buy_id + JOIN vn2008.Articles a ON a.Id_Article = Compres.Id_Article + JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id + JOIN vn2008.reinos re ON re.id = tp.reino_id + SET cm3 = a.compression * vn.item_getVolume(r.Id_Article, Id_Cubo) / Packing + WHERE re.mercancia = TRUE + AND r.Id_Article BETWEEN vItemFrom AND vItemTo; - -- Añadimos el volumen por unidad de venta - UPDATE bi.rotacion r - JOIN vn2008.t_item_last_buy b ON r.Id_Article = b.item_id AND r.warehouse_id = b.warehouse_id - join vn2008.Compres ON Id_Compra = b.buy_id - join vn2008.Articles a ON a.Id_Article = Compres.Id_Article - JOIN vn2008.Tipos tp ON tp.tipo_id = a.tipo_id - JOIN vn2008.reinos re ON re.id = tp.reino_id - SET cm3 = a.compression * vn2008.cm3_2(Id_Cubo, r.Id_Article) / Packing - WHERE re.mercancia = TRUE - AND r.Id_Article BETWEEN intART_DESDE AND intART_HASTA; + DROP TEMPORARY TABLE vn2008.t_item_last_buy; --- Añadimos el coste de almacenamiento y manipulacion -UPDATE bi.rotacion -JOIN ( - SELECT warehouse_id, sum(total*rotacion*cm3) as Operacion - FROM bi.rotacion - WHERE Id_Article between intART_DESDE and intART_HASTA - GROUP BY warehouse_id - ) sub using(warehouse_id) + -- Añadimos el coste de almacenamiento y manipulacion -JOIN ( - SELECT warehouse_id, sum(Valor) as Coste_Auxiliar - FROM bi.tarifa_warehouse - WHERE Id_Premisa = 1 - GROUP BY warehouse_id - ) sub2 using(warehouse_id) + UPDATE bi.rotacion + JOIN ( + SELECT warehouse_id, SUM(total * rotacion * cm3) AS Operacion + FROM bi.rotacion + WHERE Id_Article BETWEEN vItemFrom AND vItemTo + GROUP BY warehouse_id + ) sub USING(warehouse_id) + JOIN ( + SELECT warehouse_id, SUM(Valor) AS Coste_Auxiliar + FROM bi.tarifa_warehouse + WHERE Id_Premisa = 1 + GROUP BY warehouse_id + ) sub2 USING(warehouse_id) + JOIN ( + SELECT warehouse_id, SUM(Valor) AS Coste_Operativo + FROM bi.tarifa_warehouse + WHERE Id_Premisa IN (2,3) + GROUP BY warehouse_id + ) sub3 USING(warehouse_id) + JOIN ( + SELECT warehouse_id, sum(Valor) AS Coste_Manipulacion + FROM bi.tarifa_warehouse + WHERE Id_Premisa = 4 + GROUP BY warehouse_id + ) sub4 USING(warehouse_id) + SET auxiliar = IF(rotacion < 0, 0, ROUND(rotacion * cm3 * Coste_Auxiliar / Operacion, 4)), + almacenaje = IF(rotacion < 0, 0, ROUND(rotacion * cm3 * Coste_Operativo / Operacion, 4)), + manipulacion = IF(rotacion < 0, 0, ROUND(rotacion * cm3 * Coste_Manipulacion / Operacion, 4)) + WHERE Id_Article BETWEEN vItemFrom AND vItemTo; -JOIN ( - SELECT warehouse_id, sum(Valor) as Coste_Operativo - FROM bi.tarifa_warehouse - WHERE Id_Premisa IN (2,3) - GROUP BY warehouse_id - ) sub3 using(warehouse_id) - -JOIN ( - SELECT warehouse_id, sum(Valor) as Coste_Manipulacion - FROM bi.tarifa_warehouse - WHERE Id_Premisa = 4 - GROUP BY warehouse_id - ) sub4 using(warehouse_id) - -SET auxiliar = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Auxiliar / Operacion,4)) - ,almacenaje = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Operativo / Operacion,4)) - , manipulacion = if(rotacion < 0,0,round(rotacion *cm3 * Coste_Manipulacion / Operacion,4)) - WHERE Id_Article between intART_DESDE and intART_HASTA; - - --- Añadimos todos los productos de los que no tenemos histórico, con la media de su familia como valor por defecto - -INSERT INTO bi.rotacion(Id_Article, warehouse_id, rotacion, cm3, almacenaje, manipulacion, auxiliar, mermas) - SELECT a.Id_Article, warehouse_id, rotacion_m, cm3_m, alm_m, man_m, aux_m, merm_m - FROM vn2008.Articles a - JOIN (SELECT tipo_id, warehouse_id, Id_Tipo, avg(rotacion) rotacion_m, avg(cm3) cm3_m, avg(almacenaje) alm_m, avg(manipulacion) man_m - , avg(auxiliar) aux_m, avg(mermas) merm_m - from bi.rotacion - join vn2008.Articles a using(Id_Article) - join vn2008.Tipos tp using(tipo_id) - join vn2008.reinos r ON r.id = tp.reino_id - where r.mercancia = TRUE - group by tipo_id, warehouse_id) sub using(tipo_id) - - WHERE a.Id_Article between intART_DESDE and intART_HASTA - ON DUPLICATE KEY UPDATE rotacion = rotacion; + -- Añadimos todos los productos de los que no tenemos histórico + -- con la media de su familia como valor por defecto + INSERT INTO bi.rotacion(Id_Article, warehouse_id, rotacion, cm3, almacenaje, manipulacion, auxiliar, mermas) + SELECT a.Id_Article, warehouse_id, rotacion_m, cm3_m, alm_m, man_m, aux_m, merm_m + FROM vn2008.Articles a + JOIN ( + SELECT tipo_id, warehouse_id, Id_Tipo, AVG(rotacion) rotacion_m, + AVG(cm3) cm3_m, AVG(almacenaje) alm_m, AVG(manipulacion) man_m, + AVG(auxiliar) aux_m, AVG(mermas) merm_m + FROM bi.rotacion + JOIN vn2008.Articles a USING(Id_Article) + JOIN vn2008.Tipos tp USING(tipo_id) + JOIN vn2008.reinos r ON r.id = tp.reino_id + WHERE r.mercancia = TRUE + GROUP BY tipo_id, warehouse_id + ) sub USING(tipo_id) + WHERE a.Id_Article BETWEEN vItemFrom AND vItemTo + ON DUPLICATE KEY UPDATE rotacion = rotacion; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -4803,9 +4681,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -4821,7 +4699,7 @@ BEGIN join vn.item i ON i.id = c.Id_Article join vn.itemType tp ON tp.id = i.typeFk join vn.itemCategory ic ON ic.id = tp.categoryFk - set cm3 = vn2008.cm3_2(Id_Cubo, r.Id_Article) / Packing + set cm3 = vn.item_getVolume(r.Id_Article, Id_Cubo) / Packing where ic.merchandise = TRUE; */ END ;; @@ -4830,67 +4708,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `rutas_m3_addKK` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `rutas_m3_addKK`() -BEGIN - DECLARE vStartDate DATE DEFAULT TIMESTAMPADD(DAY, -90, CURDATE()); - DECLARE vEndDate DATE DEFAULT CURDATE(); - DECLARE vDateIter DATE; -/* - IF HOUR(NOW()) BETWEEN 18 and 24 THEN - SET vStartDate = CURDATE(); - SET vEndDate = TIMESTAMPADD(DAY, 1, CURDATE()); - END IF; -*/ - SET vDateIter = vStartDate; - - CALL vn2008.item_last_buy_(NULL, CURDATE()); - - WHILE vDateIter <= vEndDate DO -/* - UPDATE vn2008.Rutas R - JOIN (SELECT R.Id_Ruta, sum(Cantidad * i.compression * vn2008.cm3_unidad(b.buy_id)) / 1000000 as m3 - from vn2008.Rutas R - join vn2008.Tickets t using(Id_Ruta) - join vn2008.Movimientos m using(Id_Ticket) - join vn.item i ON i.id = m.Id_Article - join vn2008.t_item_last_buy b ON Id_Article = b.item_id AND b.warehouse_id = t.warehouse_id - where R.Fecha = vDateIter AND R.m3 IS NULL - group by R.Id_Ruta - ) t using(Id_Ruta) - SET R.m3 = t.m3 - WHERE R.m3 IS NULL; -*/ - UPDATE vn2008.Rutas r - JOIN ( - SELECT rt.Id_Ruta, SUM(volume) AS m3 - FROM vn2008.v_Movimientos_Volumen_shipping_charge v - JOIN vn2008.Rutas rt ON rt.Id_Ruta = v.Id_Ruta - WHERE rt.Fecha = vDateIter AND rt.km_end > 0 - GROUP BY rt.Id_Ruta - ) t ON t.Id_Ruta = r.Id_Ruta - SET r.m3 = t.m3; - - SET vDateIter = TIMESTAMPADD(DAY, 1, vDateIter); - -- INSERT INTO tmp.kk(DATED) VALUES(vDateIter); - END WHILE; - - -- SELECT * FROM tmp.kk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `Ultima_Accion` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -5273,7 +5090,7 @@ CREATE TABLE `m3` ( `dayName` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, `euros` decimal(10,2) DEFAULT '0.00', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=200856 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=234389 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5369,7 +5186,6 @@ CREATE TABLE `mana_spellers` ( CONSTRAINT `fk_mana_spellers_Trabajadores` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -5381,18 +5197,47 @@ ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`mana_spellers_AFTER_INSERT` AFTER INSERT ON `mana_spellers` FOR EACH ROW BEGIN - - REPLACE vn2008.Permisos(Id_Grupo, Id_Trabajador) VALUES(6, NEW.Id_Trabajador); + IF (NEW.Id_Trabajador = 196) THEN + INSERT INTO vn2008.mail SET + `to` = 'carlosap@verdnatura.es', + reply_to = 'carlosap@verdnatura.es', + `subject` = 'Se ha insertado maná spellers worker 196', + `text` = CONCAT('Usuario: ', account.userGetName()); + END IF; + +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `bs`.`mana_spellers_BEFORE_UPDATE` BEFORE UPDATE ON `mana_spellers` FOR EACH ROW +BEGIN + IF (NEW.prices_modifier_activated <> OLD.prices_modifier_activated) THEN + INSERT INTO vn2008.mail SET + `to` = 'carlosap@verdnatura.es', + reply_to = 'carlosap@verdnatura.es', + `subject` = 'Se ha cambiado maná spellers', + `text` = CONCAT('WorkerFk: ',OLD.Id_Trabajador, ' Usuario: ', account.userGetName()); + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `mana_spellers_excluded` @@ -5419,9 +5264,12 @@ CREATE TABLE `nightTask` ( `id` int(11) NOT NULL AUTO_INCREMENT, `started` datetime DEFAULT NULL, `finished` datetime DEFAULT NULL, + `lastFinished` datetime DEFAULT NULL, `order` int(11) DEFAULT NULL, `schema` varchar(45) COLLATE utf8_unicode_ci NOT NULL, `procedure` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `error` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `errorCode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -5474,6 +5322,20 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +-- +-- Table structure for table `nightTaskConfig` +-- + +DROP TABLE IF EXISTS `nightTaskConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `nightTaskConfig` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `logMail` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `payMethodClient` -- @@ -5490,9 +5352,9 @@ CREATE TABLE `payMethodClient` ( KEY `FkPayMethod_idx` (`payMethodFk`), KEY `FkClientPayMethod_idx` (`clientFk`), KEY `FkDateClientPayMethod` (`dated`,`clientFk`), - CONSTRAINT `FkClientPayMethod` FOREIGN KEY (`clientFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT `FkClientPayMethod` FOREIGN KEY (`clientFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `FkPayMethodClient` FOREIGN KEY (`payMethodFk`) REFERENCES `vn2008`.`pay_met` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3140918 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +) ENGINE=InnoDB AUTO_INCREMENT=3675996 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5510,7 +5372,7 @@ CREATE TABLE `payMethodClientEvolution` ( `amount` decimal(10,2) NOT NULL, `equalizationTax` decimal(10,2) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1024 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2048 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5561,8 +5423,12 @@ CREATE TABLE `productivity` ( `costCamara` double NOT NULL DEFAULT '0', `numComplementos` int(11) NOT NULL DEFAULT '0', `costComplementos` double NOT NULL DEFAULT '0', + `numArtificial` int(11) NOT NULL DEFAULT '0', + `costArtificial` double NOT NULL DEFAULT '0', + `m3FV` double NOT NULL DEFAULT '0', + `m3PCA` double NOT NULL DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=32047071 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=42948405 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5580,6 +5446,7 @@ CREATE TABLE `productivityDepartment` ( `amountPaletizado` decimal(10,2) NOT NULL DEFAULT '0.00', `amountCamara` decimal(10,2) NOT NULL DEFAULT '0.00', `amountComplementos` decimal(10,2) NOT NULL DEFAULT '0.00', + `amountArtificial` decimal(10,2) NOT NULL DEFAULT '0.00', PRIMARY KEY (`dated`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -5608,6 +5475,10 @@ DROP TABLE IF EXISTS `salaries2018`; CREATE TABLE `salaries2018` ( `person_id` int(11) NOT NULL DEFAULT '0', `sex` enum('M','F') CHARACTER SET utf8 NOT NULL DEFAULT 'F' COMMENT 'M Masculino F Femenino', + `edad` int(6) DEFAULT NULL, + `antiguedad` int(6) DEFAULT NULL, + `Modalidad` varchar(22) CHARACTER SET utf8mb4 NOT NULL DEFAULT '', + `reason` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `worker` varchar(82) CHARACTER SET utf8 DEFAULT NULL, `totalDays` decimal(32,0) DEFAULT NULL, `totalAnual` decimal(16,0) DEFAULT NULL, @@ -5615,6 +5486,7 @@ CREATE TABLE `salaries2018` ( `departamento` varchar(45) COLLATE utf8_unicode_ci NOT NULL, `category_name` varchar(50) CHARACTER SET utf8 NOT NULL, `level_name` varchar(5) CHARACTER SET utf8 DEFAULT NULL, + `thisYearDateStart` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL, PRIMARY KEY (`person_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -5696,11 +5568,12 @@ DROP TABLE IF EXISTS `vendedores_evolution`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `vendedores_evolution` ( - `Id_Trabajador` int(11) NOT NULL, - `fecha` date NOT NULL, - `importe` decimal(10,2) DEFAULT NULL, - PRIMARY KEY (`Id_Trabajador`,`fecha`), - CONSTRAINT `evo_vendedor_trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE + `workerFk` int(11) NOT NULL, + `year` int(11) NOT NULL, + `sales` decimal(10,2) DEFAULT NULL, + `month` int(11) NOT NULL, + PRIMARY KEY (`workerFk`,`year`,`month`), + CONSTRAINT `evo_vendedor_trabajador` FOREIGN KEY (`workerFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -5787,7 +5660,7 @@ SET character_set_client = @saved_cs_client; -- Dumping events for database 'bs' -- /*!50106 SET @save_time_zone= @@TIME_ZONE */ ; -/*!50106 DROP EVENT IF EXISTS `nightlyTaskChecker` */; +/*!50106 DROP EVENT IF EXISTS `nightTask_launchAll` */; DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; @@ -5799,85 +5672,7 @@ DELIMITER ;; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; /*!50003 SET @saved_time_zone = @@time_zone */ ;; /*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightlyTaskChecker` ON SCHEDULE EVERY 1 DAY STARTS '2018-09-26 05:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN -DECLARE procedureIncorrect VARCHAR(50); -SELECT CONCAT(`schema`,`procedure`) INTO procedureIncorrect FROM bs.nightTask WHERE date(finished) <> date(started); -IF procedureIncorrect > '' THEN INSERT INTO vn2008.mail (`to`, subject, text) VALUES ('cau@verdnatura.es', 'error proceso nocturno', -CONCAT('Ha fallado el procedimiento ', procedureIncorrect)); - -END IF; END */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `nightly_tasks` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightly_tasks` ON SCHEDULE EVERY 1 DAY STARTS '2017-08-27 01:00:00' ON COMPLETION NOT PRESERVE ENABLE DO CALL bs.nightTaskLauncher() */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `nightly_tasks2` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightly_tasks2` ON SCHEDULE EVERY 1 DAY STARTS '2017-03-24 02:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call bs.nightTaskLauncher() */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `nightly_tasks3` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightly_tasks3` ON SCHEDULE EVERY 1 DAY STARTS '2017-03-24 03:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call bs.nightTaskLauncher() */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `nightly_tasks4` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightly_tasks4` ON SCHEDULE EVERY 1 DAY STARTS '2017-03-24 04:00:00' ON COMPLETION NOT PRESERVE ENABLE DO call bs.nightTaskLauncher() */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `nightTask_launchAll` ON SCHEDULE EVERY 1 DAY STARTS '2017-08-27 02:00:00' ON COMPLETION NOT PRESERVE ENABLE DO CALL bs.nightTask_launchAll */ ;; /*!50003 SET time_zone = @saved_time_zone */ ;; /*!50003 SET sql_mode = @saved_sql_mode */ ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; @@ -7049,57 +6844,134 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `nightTaskLauncher` */; +/*!50003 DROP PROCEDURE IF EXISTS `nightTask_launchAll` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `nightTaskLauncher`() +CREATE DEFINER=`root`@`%` PROCEDURE `nightTask_launchAll`() BEGIN - - DECLARE done BOOL DEFAULT FALSE; +/** + * Runs all nightly tasks. + */ + DECLARE vDone BOOL; + DECLARE vError VARCHAR(255); + DECLARE vErrorCode VARCHAR(255); + DECLARE vNErrors INT DEFAULT 0; DECLARE vSchema VARCHAR(255); - DECLARE vProcedure VARCHAR(255); - DECLARE vId INT; + DECLARE vProcedure VARCHAR(255); + DECLARE vLogMail VARCHAR(255); + DECLARE vId INT; DECLARE rs CURSOR FOR - SELECT id,`schema`, `procedure` - FROM bs.nightTask - WHERE IFNULL(finished,0) <= CURDATE() - ORDER BY `order`; + SELECT id, `schema`, `procedure` + FROM nightTask + WHERE finished <= CURDATE() + OR finished IS NULL + ORDER BY `order`; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; - SET max_sp_recursion_depth=3; + SET max_sp_recursion_depth = 3; OPEN rs; - FETCH rs INTO vId, vSchema, vProcedure; - - WHILE NOT done DO - - SELECT vId, vSchema, vProcedure; - - UPDATE bs.nightTask - SET started = now() - WHERE id = vId; - - CALL util.exec (sql_printf('CALL %s.%s',vSchema, vProcedure)); - - UPDATE bs.nightTask - SET finished = now() - WHERE id = vId; - + myLoop: LOOP + SET vDone = FALSE; FETCH rs INTO vId, vSchema, vProcedure; - END WHILE; + IF vDone THEN + LEAVE myLoop; + END IF; + + UPDATE nightTask + SET `started` = NOW(), + `finished` = NULL, + `error` = NULL, + `errorCode` = NULL + WHERE id = vId; + + SET vError = NULL; + CALL nightTask_launchTask( + vSchema, + vProcedure, + vError, + vErrorCode + ); + + IF vError IS NOT NULL THEN + SET vNErrors = vNErrors + 1; + + UPDATE nightTask + SET `error` = vError, + `errorCode` = vErrorCode + WHERE id = vId; + ELSE + UPDATE nightTask + SET finished = NOW(), + lastFinished = NOW() + WHERE id = vId; + END IF; + END LOOP; CLOSE rs; + SELECT logMail INTO vLogMail + FROM nightTaskConfig LIMIT 1; + + IF vNErrors > 0 AND vLogMail IS NOT NULL THEN + INSERT INTO vn.mail SET + `sender` = vLogMail, + `subject` = 'Nightly task failed', + `body` = CONCAT( + vNErrors, ' procedures of nightly tasks have failed. ', + 'Please, see `', SCHEMA() ,'`.`nightTask` table for more info.' + ); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `nightTask_launchTask` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `nightTask_launchTask`( + vSchema VARCHAR(255), + vProcedure VARCHAR(255), + OUT vError VARCHAR(255), + OUT vErrorCode VARCHAR(255) +) +BEGIN +/** + * Runs an specific procedure from nightly tasks, if an error + * occurs, instead of throw it, #vError and #vErrorCode variables + * are setted. + * + * @param vSchema The procedure schema + * @param vProcedure The procedure name + * @param vError The error message, if any + * @param vErrorCode The error code, if any + */ + DECLARE EXIT HANDLER FOR SQLEXCEPTION + GET DIAGNOSTICS CONDITION 1 + vError = MESSAGE_TEXT, + vErrorCode = RETURNED_SQLSTATE; + + CALL util.exec(CONCAT('CALL `', vSchema ,'`.`', vProcedure ,'`')); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -7234,17 +7106,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `productivityAdd`(vDate DATE) BEGIN - DECLARE vDateStart DATETIME DEFAULT DATE(vDate); + DECLARE vDateStart DATETIME DEFAULT vDate; DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); + DECLARE myDepLft INT; + DECLARE myDepRgt INT; DROP TEMPORARY TABLE IF EXISTS tmp.productivity; @@ -7253,6 +7127,8 @@ BEGIN SELECT hh, mm, 000.00 as m3, + 000.00 as m3FV, + 000.00 as m3PCA, 0 as workers, 000.00 as wCost, 0 as numCoordinadores, @@ -7266,7 +7142,9 @@ BEGIN 0 as numCamareros, 000.00 as costCamara, 0 as numComplementos, - 000.00 as costComplementos + 000.00 as costComplementos, + 0 as numArtificial, + 000.00 as costArtificial FROM vn.dayMinute; -- Trabajadores @@ -7286,91 +7164,142 @@ BEGIN SET p.workers = sub.workers, p.wCost = sub.Bruto; -- Coordinadores + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'COORDINACION'; + UPDATE tmp.productivity p JOIN (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk WHERE Almacen IN (1,44) - AND wdd.department = 'COORDINACION' + AND d.lft BETWEEN myDepLft AND myDepRgt GROUP BY Hora, Minuto ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto SET p.numCoordinadores = sub.workers, p.costCoordinacion = sub.Bruto; -- Sacado + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'SACADO'; + UPDATE tmp.productivity p JOIN (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk WHERE Almacen IN (1,44) - AND wdd.department = 'SACADO' + AND d.lft BETWEEN myDepLft AND myDepRgt GROUP BY Hora, Minuto ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto SET p.numSacadores = sub.workers, p.costSacado = sub.Bruto; -- Encajado + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'ENCAJADO'; + UPDATE tmp.productivity p JOIN (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk WHERE Almacen IN (1,44) - AND wdd.department = 'ENCAJADO' + AND d.lft BETWEEN myDepLft AND myDepRgt GROUP BY Hora, Minuto ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto SET p.numEncajadores = sub.workers, p.costEncajado = sub.Bruto; -- Paletizado + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'PALETIZADO'; + UPDATE tmp.productivity p JOIN (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk WHERE Almacen IN (1,44) - AND wdd.department = 'PALETIZADO' + AND d.lft BETWEEN myDepLft AND myDepRgt GROUP BY Hora, Minuto ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto SET p.numPaletizadores = sub.workers, p.costPaletizado = sub.Bruto; -- Cámara + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'CAMARA'; + UPDATE tmp.productivity p JOIN (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk WHERE Almacen IN (1,44) - AND wdd.department = 'CAMARA' + AND d.lft BETWEEN myDepLft AND myDepRgt GROUP BY Hora, Minuto ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto SET p.numCamareros = sub.workers, p.costCamara = sub.Bruto; -- Complementos + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'COMPLEMENTOS'; + UPDATE tmp.productivity p JOIN (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto FROM tmp.dayMinuteWorker dmw - JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk WHERE Almacen IN (1,44) - AND wdd.department = 'COMPLEMENTOS' + AND d.lft BETWEEN myDepLft AND myDepRgt GROUP BY Hora, Minuto ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto SET p.numComplementos = sub.workers, p.costComplementos = sub.Bruto; + + -- Artificial + SELECT lft, rgt INTO myDepLft, myDepRgt + FROM vn.department + WHERE name = 'ARTIFICIAL'; + + UPDATE tmp.productivity p + JOIN + (SELECT Hora, Minuto, count(*) as workers, sum(wdd.costeHora) / 60 as Bruto + FROM tmp.dayMinuteWorker dmw + JOIN tmp.workerDepartmentByDate wdd ON wdd.userFk = dmw.userFk + JOIN vn.department d ON d.id = wdd.departmentFk + WHERE Almacen IN (1,44) + AND d.lft BETWEEN myDepLft AND myDepRgt + GROUP BY Hora, Minuto + ) sub ON p.hh = sub.Hora AND p.mm = sub.Minuto + SET p.numArtificial = sub.workers, p.costArtificial = sub.Bruto; -- m3 CALL vn.ticketBuiltTime(vDate); -- Genera la tabla tmp.ticketBuiltTime(ticketFk,builtTime) - CALL vn.ticketVolumeByDate(vDate); -- Genera la tabla tmp.ticketVolumeByDate(ticketFk,m3) + CALL vn.ticketVolumeByDate_ventas(vDate); -- Genera la tabla tmp.ticketVolumeByDate(ticketFk,m3), filtrado por las ventas validas UPDATE tmp.productivity p JOIN - (SELECT HOUR(builtTime) hh, MINUTE(builtTime) mm, sum(m3) as m3 + (SELECT HOUR(builtTime) hh, + MINUTE(builtTime) mm, + sum(m3) as m3, + sum(IF(t.warehouseFk = 1,m3,0)) as m3FV, + sum(IF(t.warehouseFk = 44,m3,0)) as m3PCA FROM tmp.ticketBuiltTime tbt JOIN tmp.ticketVolumeByDate tvd ON tvd.ticketFk = tbt.ticketFk JOIN vn.ticket t ON t.id = tbt.ticketFk WHERE t.warehouseFk IN (1,44) GROUP BY hh,mm ) v ON v.hh = p.hh AND v.mm = p.mm - SET p.m3 = v.m3; + SET p.m3 = v.m3, p.m3FV = v.m3FV, p.m3PCA = v.m3PCA; DELETE FROM bs.productivity WHERE dated = vDate; @@ -7379,6 +7308,8 @@ BEGIN hh, mm, m3, + m3FV, + m3PCA, workers, wCost, numCoordinadores, @@ -7392,11 +7323,15 @@ BEGIN numCamareros, costCamara, numComplementos, - costComplementos) + costComplementos, + numArtificial, + costArtificial) SELECT vDate, hh, mm, m3, + m3FV, + m3PCA, workers, wCost, numCoordinadores, @@ -7410,7 +7345,9 @@ BEGIN numCamareros, costCamara, numComplementos, - costComplementos + costComplementos, + numArtificial, + costArtificial FROM tmp.productivity p; -- Productivity Evolution @@ -7436,9 +7373,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -7457,7 +7394,8 @@ BEGIN CAST(((productivityEncajadoLastYear - productivityEncajado) / 2) * m3 AS DECIMAL (10,2)) AS amountEncajado, CAST(((productivityPaletizadoLastYear - productivityPaletizado) / 2) * m3 AS DECIMAL (10,2)) AS amountPaletizado, CAST(((productivityCamaraLastYear - productivityCamara) / 2) * m3 AS DECIMAL (10,2)) AS amountCamara, - CAST(((productivityComplementosLastYear - productivityComplementos) / 2) * m3 AS DECIMAL (10,2)) AS amountComplementos + CAST(((productivityComplementosLastYear - productivityComplementos) / 2) * m3 AS DECIMAL (10,2)) AS amountComplementos, + CAST(((productivityArtificialLastYear - productivityArtificial) / 2) * m3 AS DECIMAL (10,2)) AS amountArtificia FROM (SELECT SUM(p.m3) AS m3, @@ -7466,7 +7404,8 @@ BEGIN SUM(p.costEncajado) / SUM(p.m3) AS productivityEncajado, SUM(p.costPaletizado) / SUM(p.m3) AS productivityPaletizado, SUM(p.costCamara) / SUM(p.m3) AS productivityCamara, - SUM(p.costComplementos) / SUM(p.m3) AS productivityComplementos + SUM(p.costComplementos) / SUM(p.m3) AS productivityComplementos, + SUM(p.costArtificial) / SUM(p.m3) AS productivityArtificial FROM bs.productivity p WHERE @@ -7478,7 +7417,8 @@ BEGIN SUM(p.costEncajado) / SUM(p.m3) AS productivityEncajadoLastYear, SUM(p.costPaletizado) / SUM(p.m3) AS productivityPaletizadoLastYear, SUM(p.costCamara) / SUM(p.m3) AS productivityCamaraLastYear, - SUM(p.costComplementos) / SUM(p.m3) AS productivityComplementosLastYear + SUM(p.costComplementos) / SUM(p.m3) AS productivityComplementosLastYear, + SUM(p.costArtificial) / SUM(p.m3) AS productivityArtificialLastYear FROM bs.productivity p WHERE @@ -7496,15 +7436,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `productivityDepartmentLauncher`() BEGIN - CALL bs.productivityDepartmentAdd('2018-11-01', CURDATE(),DATE_SUB(CURDATE(), INTERVAL 2 WEEK)); + CALL bs.productivityDepartmentAdd('2019-05-06', CURDATE(),DATE_SUB(CURDATE(), INTERVAL 2 WEEK)); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -7515,16 +7455,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `productivityLauncher`() BEGIN - DECLARE vDateFrom DATE DEFAULT TIMESTAMPADD(MONTH, -1, CURDATE()); + DECLARE vDateFrom DATE; + + SELECT LEAST(TIMESTAMPADD(MONTH, -1, CURDATE()),MAX(dated)) + INTO vDateFrom + FROM bs.productivity; WHILE CURDATE() > vDateFrom DO CALL bs.productivityAdd(vDateFrom); @@ -7659,84 +7603,80 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add`(IN intYEAR INT, IN intMONTH INT) +CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add`(intYEAR INT, vQuarter INT) BEGIN DECLARE comisionRate DOUBLE DEFAULT 0.029; REPLACE vendedores - SELECT c.Id_Trabajador - , intYEAR - , intMONTH - , sum(importe) as importe - , sum(importe) * 0.029 as comision - , 0 as comisionCedida - , 0 as comisionArrendada - , 0 as comisionNuevos + SELECT c.Id_Trabajador + , intYEAR + , MONTH(v.fecha) intMONTH + , sum(importe) as importe + , sum(importe) * 0.029 as comision + , 0 as comisionCedida + , 0 as comisionArrendada + , 0 as comisionNuevos FROM ventas v JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente - JOIN vn2008.time on time.date = v.fecha - WHERE time.year = intYEAR and time.month = intMONTH - AND c.Id_Trabajador is not null - GROUP BY c.Id_Trabajador; - --- Ventas nuevas - - UPDATE vendedores + JOIN vn2008.`time` t on t.`date` = v.fecha + WHERE c.Id_Trabajador is not null + AND t.`year` = intYEAR AND QUARTER(v.fecha) = vQuarter + GROUP BY c.Id_Trabajador, t.`month`; + + -- Ventas nuevas + UPDATE vendedores v JOIN ( SELECT c.Id_Trabajador - , sum(importe) * 0.029 as comisionNueva + , sum(importe) * 0.029 as comisionNueva + , t.`month` + , t.`year` FROM ventas v JOIN bs.clientNewBorn cnb on v.Id_Cliente = cnb.clientFk JOIN vn2008.Clientes c ON c.Id_Cliente = v.Id_Cliente - JOIN vn2008.time on time.date = v.fecha - WHERE time.year = intYEAR and time.month = intMONTH - AND c.Id_Trabajador is not null - GROUP BY c.Id_Trabajador - ) sub using(Id_Trabajador) - SET comisionNuevos = sub.comisionNueva, comision = comision - sub.comisionNueva - WHERE año = intYEAR and mes = intMONTH; + JOIN vn2008.`time` t on t.`date` = v.fecha + WHERE c.Id_Trabajador is not null + AND t.`year` = intYEAR AND QUARTER(v.fecha) = vQuarter + GROUP BY c.Id_Trabajador, t.`month` + ) sub ON sub.Id_Trabajador = v.Id_Trabajador AND sub.`month` = v.mes AND sub.`year` = v.año + SET v.comisionNuevos = sub.comisionNueva, v.comision = v.comision - sub.comisionNueva; --- Ventas cedidas - -UPDATE vendedores -JOIN -( -SELECT cc.Id_Trabajador_old as Id_Trabajador - , sum(importe) * 0.029 * comision_old as cedido - , sum(importe) * 0.029 * comision_new as arrendada -FROM ventas v -JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente -JOIN vn2008.Clientes_cedidos cc on cc.Id_Cliente = c.Id_Cliente -JOIN vn2008.time on time.date = v.fecha -WHERE time.year = intYEAR and time.month = intMONTH -AND c.Id_Trabajador is not null -GROUP BY cc.Id_Trabajador_old -) sub using(Id_Trabajador) -SET comisionCedida = cedido, comision = comision - cedido - arrendada -WHERE año = intYEAR and mes = intMONTH; - --- Ventas arrendadas - -UPDATE vendedores -JOIN -( -SELECT cc.Id_Trabajador_new as Id_Trabajador - , sum(importe) * 0.029 * comision_new as arrendada - -FROM ventas v -JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente -JOIN vn2008.Clientes_cedidos cc on cc.Id_Cliente = c.Id_Cliente AND v.fecha between datSTART and datEND -JOIN vn2008.time on time.date = v.fecha -WHERE time.year = intYEAR and time.month = intMONTH -AND c.Id_Trabajador is not null -GROUP BY cc.Id_Trabajador_new -) sub using(Id_Trabajador) -SET comisionArrendada = arrendada -WHERE año = intYEAR and mes = intMONTH; + -- Ventas cedidas + UPDATE vendedores v + JOIN ( + SELECT cc.Id_Trabajador_old as Id_Trabajador + , sum(importe) * 0.029 * comision_old as cedido + , sum(importe) * 0.029 * comision_new as arrendada + , t.`month` + , t.`year` + FROM ventas v + JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente + JOIN vn2008.Clientes_cedidos cc on cc.Id_Cliente = c.Id_Cliente + JOIN vn2008.`time` t on t.`date` = v.fecha + WHERE c.Id_Trabajador is not null + AND t.`year` = intYEAR AND QUARTER(v.fecha) = vQuarter + GROUP BY cc.Id_Trabajador_old, t.`month` + ) sub ON sub.Id_Trabajador = v.Id_Trabajador AND sub.`month` = v.mes AND sub.`year` = v.año + SET v.comisionCedida = sub.cedido, v.comision = v.comision - sub.cedido - sub.arrendada; + -- Ventas arrendadas + UPDATE vendedores v + JOIN ( + SELECT cc.Id_Trabajador_new as Id_Trabajador + , sum(importe) * 0.029 * comision_new as arrendada + , t.`month` + , t.`year` + FROM ventas v + JOIN vn2008.Clientes c on v.Id_Cliente = c.Id_Cliente + JOIN vn2008.Clientes_cedidos cc on cc.Id_Cliente = c.Id_Cliente AND v.fecha between datSTART and datEND + JOIN vn2008.`time` t on t.`date` = v.fecha + WHERE c.Id_Trabajador is not null + AND t.`year` = intYEAR AND QUARTER(v.fecha) = vQuarter + GROUP BY cc.Id_Trabajador_new, t.`month` + ) sub ON sub.Id_Trabajador = v.Id_Trabajador AND sub.`month` = v.mes AND sub.`year` = v.año + SET v.comisionArrendada = sub.arrendada; END ;; DELIMITER ; @@ -7757,8 +7697,9 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_add_launcher`() BEGIN - call bs.vendedores_add(year(curdate()), month(curdate())); - call bs.vendedores_add(year(timestampadd(month,-1,curdate())), month(timestampadd(month,-1,curdate()))); + call bs.vendedores_add(YEAR(CURDATE()),QUARTER(CURDATE())); + + call bs.vendedores_evolution_add; END ;; DELIMITER ; @@ -7767,13 +7708,12 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `vendedores_evolution_add` */; -ALTER DATABASE `bs` CHARACTER SET latin1 COLLATE latin1_swedish_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -7781,60 +7721,58 @@ CREATE DEFINER=`root`@`%` PROCEDURE `vendedores_evolution_add`() BEGIN /* -Inserta en la tabla compradores_evolution las ventas acumuladas en los ultimos 365 dias +Inserta en la tabla compradores_evolution las ventas acumuladas en el ultimo mes */ -DECLARE datFEC DATE; +DECLARE vYear, vMonth INTEGER; +DECLARE vCurYear, vCurMonth INTEGER; +DECLARE vFirstYear INTEGER DEFAULT 2017; +DECLARE vFirstMonth INTEGER DEFAULT 1; +DECLARE vDateFrom DATE; +DECLARE vDateTo DATE; -SELECT TIMESTAMPADD(DAY,1,MAX(fecha)) INTO datFEC FROM bs.vendedores_evolution; +SET vCurYear = year(CURDATE()); +SET vCurMonth = month(CURDATE()); - WHILE datFEC < CURDATE() DO +SELECT IFNULL(max(year),vFirstYear), IFNULL(max(month),vFirstMonth) + INTO vYear, vMonth + FROM bs.vendedores_evolution; + + WHILE (vYear < vCurYear) OR (vYear = vCurYear AND vMonth < vCurMonth) DO + + SELECT max(dated), TIMESTAMPADD(DAY,-364,max(dated)) INTO vDateTo, vDateFrom + FROM vn.time + WHERE year = vYear + AND month = vMonth; + + SELECT vDateTo, vDateFrom, vYear, vMonth; + + REPLACE bs.vendedores_evolution( workerFk + , year + , month + , sales) + SELECT c.salesPersonFk + , vYear as year + , vMonth as month + , sum(v.importe) as sales + FROM bs.ventas v + JOIN vn.client c on c.id = v.Id_Cliente + WHERE v.fecha BETWEEN vDateFrom AND vDateTo + AND c.salesPersonFk is not null + GROUP BY c.salesPersonFk; + + SET vMonth = vMonth + 1; + + IF vMonth = 13 THEN - SELECT datFEC; + SET vMonth = 1; + SET vYear = vYear + 1; + + END IF; - REPLACE bs.vendedores_evolution( Id_Trabajador - , fecha - , importe) - - SELECT Id_Trabajador - , datFEC as fecha - , sum(importe) as importe - - FROM - ( - - SELECT Id_Trabajador - , importe - FROM bs.vendedores_evolution - WHERE fecha = TIMESTAMPADD(DAY,-1,datFEC) -- las ventas acumuladas del dia anterior - - UNION ALL - - SELECT c.Id_Trabajador - , importe * IF(v.fecha < datFEC,-1,1) -- se restan las ventas del año anterior y se suman las del actual - FROM bs.ventas v - JOIN vn2008.Movimientos m using(Id_Movimiento) - JOIN vn2008.Tickets t using(Id_Ticket) - JOIN vn2008.Consignatarios cs using(Id_Consigna) - JOIN vn2008.Clientes c on cs.Id_Cliente = c.Id_Cliente - JOIN vn2008.Tipos using(tipo_id) - WHERE v.fecha IN (datFEC, TIMESTAMPADD(DAY,-365,datFEC)) - AND c.Id_Trabajador is not null - AND (Id_Article = 98 or Id_Article = 95 or reino_id != 6) - GROUP BY c.Id_Trabajador - - - )sub - GROUP BY Id_Trabajador; - - - - - SET datFEC = TIMESTAMPADD(DAY,1,datFEC); - - END WHILE; + END WHILE; END ;; @@ -7843,7 +7781,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `bs` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `ventas_add` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -8161,30 +8098,58 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `warehouseProductionAdd_kk` */; +/*!50003 DROP PROCEDURE IF EXISTS `__nightTaskLauncher` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `warehouseProductionAdd_kk`() +CREATE DEFINER=`root`@`%` PROCEDURE `__nightTaskLauncher`() BEGIN +/** + * @deprecated Use nightTask_launchAll() + */ + DECLARE done BOOL DEFAULT FALSE; + DECLARE vSchema VARCHAR(255); + DECLARE vProcedure VARCHAR(255); + DECLARE vId INT; - REPLACE bs.warehouseProduction(fecha, warehouse_id, m3) - SELECT v.fecha, - t.warehouseFk, - cast(sum( s.quantity * r.cm3) / 1000000 as decimal(10,0)) as m3 - FROM vn.ticket t - JOIN vn.sale s ON s.ticketFk = t.id - JOIN bs.ventas v ON v.Id_Movimiento = s.id - JOIN bi.rotacion r on s.itemFk = r.Id_Article AND t.warehouseFk = r.warehouse_id - WHERE v.fecha BETWEEN TIMESTAMPADD(MONTH, -1, CURDATE()) AND util.yesterday() - GROUP BY v.fecha, warehouse_id; - + DECLARE rs CURSOR FOR + SELECT id,`schema`, `procedure` + FROM bs.nightTask + WHERE IFNULL(finished,0) <= CURDATE() + ORDER BY `order`; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; + + SET max_sp_recursion_depth=3; + OPEN rs; + + FETCH rs INTO vId, vSchema, vProcedure; + + WHILE NOT done DO + + SELECT vId, vSchema, vProcedure; + + UPDATE bs.nightTask + SET started = now() + WHERE id = vId; + + CALL util.exec (sql_printf('CALL %s.%s',vSchema, vProcedure)); + + UPDATE bs.nightTask + SET finished = now() + WHERE id = vId; + + FETCH rs INTO vId, vSchema, vProcedure; + + END WHILE; + + CLOSE rs; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -8200,6 +8165,24 @@ CREATE DATABASE /*!32312 IF NOT EXISTS*/ `cache` /*!40100 DEFAULT CHARACTER SET USE `cache`; +-- +-- Table structure for table `__weeklySales` +-- + +DROP TABLE IF EXISTS `__weeklySales`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `__weeklySales` ( + `week` int(10) unsigned NOT NULL, + `itemFk` int(10) unsigned NOT NULL, + `warehouseFk` smallint(5) unsigned NOT NULL, + `amount` int(11) NOT NULL, + `price` double NOT NULL, + UNIQUE KEY `week_2` (`week`,`itemFk`,`warehouseFk`), + KEY `week` (`week`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `available` -- @@ -8253,7 +8236,7 @@ CREATE TABLE `cache_calc` ( KEY `cache_id` (`cache_id`), KEY `cacheName` (`cacheName`), KEY `expires` (`expires`) -) ENGINE=InnoDB AUTO_INCREMENT=341500 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=360234 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8321,7 +8304,7 @@ CREATE TABLE `prod_graphic_source` ( `alert_level` int(11) NOT NULL DEFAULT '0', `Agencia` varchar(45) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=845745 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1112367 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8340,23 +8323,6 @@ CREATE TABLE `stock` ( ) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Table structure for table `ticketShipping` --- - -DROP TABLE IF EXISTS `ticketShipping`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `ticketShipping` ( - `calc_id` int(11) NOT NULL, - `ticketFk` int(11) unsigned NOT NULL, - `shippingHour` int(3) NOT NULL, - `shippingMinute` int(3) NOT NULL, - PRIMARY KEY (`calc_id`,`ticketFk`), - KEY `ticketShipping` (`ticketFk`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - -- -- Table structure for table `visible` -- @@ -8373,24 +8339,6 @@ CREATE TABLE `visible` ( ) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Table structure for table `weeklySales` --- - -DROP TABLE IF EXISTS `weeklySales`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `weeklySales` ( - `week` int(10) unsigned NOT NULL, - `itemFk` int(10) unsigned NOT NULL, - `warehouseFk` smallint(5) unsigned NOT NULL, - `amount` int(11) NOT NULL, - `price` double NOT NULL, - UNIQUE KEY `week_2` (`week`,`itemFk`,`warehouseFk`), - KEY `week` (`week`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - -- -- Dumping events for database 'cache' -- @@ -8437,32 +8385,6 @@ DELIMITER ; -- -- Dumping routines for database 'cache' -- -/*!50003 DROP FUNCTION IF EXISTS `ticketShippingCalcIdGet` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketShippingCalcIdGet`(vWarehouseFk INT) RETURNS int(11) -BEGIN - -- OBSOLETO usar CALL ticketShippingRefresh(vCalcFk,FALSE,vWarehouseFk) - -- JGF 2019-02-05 - DECLARE vCalcFk INT; - - CALL ticketShippingRefresh(vCalcFk,FALSE,vWarehouseFk); - - RETURN vCalcFk; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `available_clean` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -9231,72 +9153,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketShippingRefresh` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketShippingRefresh`(OUT v_calc INT, v_refresh BOOL, v_warehouse INT) -proc: BEGIN - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - CALL cache_calc_unlock (v_calc); - RESIGNAL; - END; - - CALL cache_calc_start (v_calc, v_refresh, 'ticketShipping', v_warehouse); - - IF !v_refresh - THEN - LEAVE proc; - END IF; - - -- Limpia las caches antiguas - DELETE FROM ticketShipping WHERE calc_id NOT IN ( - SELECT cc.id - FROM `cache` c - JOIN cache_calc cc ON c.id = cc.cache_id - WHERE c.`name` = 'ticketShipping') - ; - - -- Iniciamos la tabla temporal con los valores que tienen los tickets actualmente en el campo Fecha - DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; - CREATE TEMPORARY TABLE tmp.production_buffer - ENGINE = MEMORY - SELECT t.id as ticket - , am.agencyFk as agency_id - , t.warehouseFk as warehouse_id - , a.provinceFk as province_id - , Hour(t.shipped) as Hora - , Hour(t.shipped) as Departure - , Minute(t.shipped) as Minuto - FROM vn.ticket t - JOIN vn.agencyMode am on am.id = t.agencyModeFk - JOIN vn.address a on a.id = t.addressFk - WHERE t.shipped BETWEEN CURDATE() AND util.dayend(CURDATE()); - - CALL vn2008.production_buffer_set_priority; - - REPLACE ticketShipping(calc_id, ticketFk, shippingHour, shippingMinute) - SELECT v_calc, ticket, Hora, Minuto - FROM tmp.production_buffer; - - DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; - - CALL cache_calc_end (v_calc); - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `visible_clean` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -9380,17 +9236,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `weeklySales_refresh` */; +/*!50003 DROP PROCEDURE IF EXISTS `__weeklySales_refresh` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; /*!50003 SET character_set_client = utf8mb4 */ ; /*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `weeklySales_refresh`(IN `v_refresh` INT) +CREATE DEFINER=`root`@`%` PROCEDURE `__weeklySales_refresh`(IN `v_refresh` INT) BEGIN DECLARE v_week_ini INT; DECLARE v_week_end INT; @@ -9492,54 +9348,6 @@ CREATE TABLE `VMPSettings` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; --- --- Temporary table structure for view `__ekt` --- - -DROP TABLE IF EXISTS `__ekt`; -/*!50001 DROP VIEW IF EXISTS `__ekt`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `__ekt` AS SELECT - 1 AS `id`, - 1 AS `barcode`, - 1 AS `entryYear`, - 1 AS `deliveryNumber`, - 1 AS `fec`, - 1 AS `hor`, - 1 AS `now`, - 1 AS `ptj`, - 1 AS `ref`, - 1 AS `item`, - 1 AS `pac`, - 1 AS `qty`, - 1 AS `ori`, - 1 AS `cat`, - 1 AS `agj`, - 1 AS `kop`, - 1 AS `ptd`, - 1 AS `sub`, - 1 AS `pro`, - 1 AS `pri`, - 1 AS `package`, - 1 AS `auction`, - 1 AS `klo`, - 1 AS `k1`, - 1 AS `k2`, - 1 AS `k3`, - 1 AS `k4`, - 1 AS `s1`, - 1 AS `s2`, - 1 AS `s3`, - 1 AS `s4`, - 1 AS `s5`, - 1 AS `s6`, - 1 AS `ok`, - 1 AS `trolleyFk`, - 1 AS `putOrderFk`, - 1 AS `scanned`*/; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `bucket` -- @@ -9606,7 +9414,7 @@ CREATE TABLE `deliveryInformation` ( KEY `fgbSupplyResponse_idx2` (`FirstOrderDateTime`), KEY `fgbSupplyResponse_idx3` (`LatestOrderDateTime`), CONSTRAINT `fgbSupplyResponse` FOREIGN KEY (`supplyResponseID`) REFERENCES `supplyResponse` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=18531014 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=19666965 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9664,7 +9472,7 @@ CREATE TABLE `ekt` ( KEY `barcode` (`barcode`), KEY `fec` (`fec`), KEY `putOrderFk` (`putOrderFk`) -) ENGINE=InnoDB AUTO_INCREMENT=921716 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=963274 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9685,7 +9493,7 @@ CREATE TABLE `exchange` ( KEY `buy_edi_id` (`ektFk`), CONSTRAINT `exchange_ibfk_1` FOREIGN KEY (`mailFk`) REFERENCES `mail` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `exchange_ibfk_2` FOREIGN KEY (`ektFk`) REFERENCES `ekt` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=484501 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=518902 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9947,7 +9755,7 @@ CREATE TABLE `mail` ( UNIQUE KEY `mail_id` (`messageId`), KEY `sender_id` (`senderFk`), CONSTRAINT `mail_ibfk_2` FOREIGN KEY (`senderFk`) REFERENCES `mailSender` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=510047 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=546601 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10201,8 +10009,9 @@ CREATE TABLE `supplyResponse` ( `MarketPlaceID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `MarketFormCode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '"002" Standard Sales\n"005" Catalogue (optional)\n"001" Committed (optional)\n"003" Buffer (optional, Clock Pre Sales) ', PRIMARY KEY (`ID`), - UNIQUE KEY `ID_UNIQUE` (`ID`) -) ENGINE=InnoDB AUTO_INCREMENT=6157569 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + UNIQUE KEY `ID_UNIQUE` (`ID`), + KEY `IX_TransNumber` (`TransactionNumber`) COMMENT 'Agregado por Ernesto 11.6.2019\nSe ejecutaba 1 consulta por segundo desde MAIL y consumia un 20% de CPU de todo el servidor !!!!!\nCPU usada es mas estable que Indice en SendererID, cpu vs espacio que ocupa?\n' +) ENGINE=InnoDB AUTO_INCREMENT=6700217 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10777,7 +10586,7 @@ CREATE TABLE `image` ( PRIMARY KEY (`id`), UNIQUE KEY `collection` (`collectionFk`,`name`), CONSTRAINT `image_ibfk_1` FOREIGN KEY (`collectionFk`) REFERENCES `imageCollection` (`name`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=131863 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=139876 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11199,19 +11008,6 @@ SET character_set_client = utf8; 1 AS `confirmed`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `myOrderMyTicket` --- - -DROP TABLE IF EXISTS `myOrderMyTicket`; -/*!50001 DROP VIEW IF EXISTS `myOrderMyTicket`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `myOrderMyTicket` AS SELECT - 1 AS `orderFk`, - 1 AS `ticketFk`*/; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `myOrderRow` -- @@ -11233,6 +11029,19 @@ SET character_set_client = utf8; 1 AS `saleFk`*/; SET character_set_client = @saved_cs_client; +-- +-- Temporary table structure for view `myOrderTicket` +-- + +DROP TABLE IF EXISTS `myOrderTicket`; +/*!50001 DROP VIEW IF EXISTS `myOrderTicket`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `myOrderTicket` AS SELECT + 1 AS `orderFk`, + 1 AS `ticketFk`*/; +SET character_set_client = @saved_cs_client; + -- -- Temporary table structure for view `myTicket` -- @@ -11339,7 +11148,7 @@ CREATE TABLE `news` ( KEY `tag` (`tag`), CONSTRAINT `news_ibfk_1` FOREIGN KEY (`userFk`) REFERENCES `account`.`account` (`id`) ON UPDATE CASCADE, CONSTRAINT `news_ibfk_2` FOREIGN KEY (`tag`) REFERENCES `newsTag` (`name`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=13071 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13058 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -11453,7 +11262,7 @@ CREATE TABLE `order` ( CONSTRAINT `order_ibfk_5` FOREIGN KEY (`address_id`) REFERENCES `vn2008`.`Consignatarios` (`id_consigna`) ON UPDATE CASCADE, CONSTRAINT `order_ibfk_8` FOREIGN KEY (`delivery_method_id`) REFERENCES `vn2008`.`Vistas` (`vista_id`) ON UPDATE CASCADE, CONSTRAINT `order_ibfk_9` FOREIGN KEY (`agency_id`) REFERENCES `vn2008`.`Agencias` (`Id_Agencia`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1930549 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1993553 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -11541,7 +11350,7 @@ CREATE TABLE `orderRow` ( `price` decimal(10,2) DEFAULT NULL, `rate` smallint(5) unsigned DEFAULT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `saleFk` int(11) DEFAULT NULL COMMENT 'Deprecated', + `saleFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `item` (`itemFk`), KEY `order_id` (`orderFk`), @@ -11549,7 +11358,7 @@ CREATE TABLE `orderRow` ( KEY `warehouse_shipment` (`warehouseFk`,`shipment`), CONSTRAINT `orderRow_ibfk_2` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON UPDATE CASCADE, CONSTRAINT `orderRow_ibfk_3` FOREIGN KEY (`orderFk`) REFERENCES `order` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11676888 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12035155 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -11969,7 +11778,7 @@ CREATE TABLE `tpvTransaction` ( CONSTRAINT `receipt_id` FOREIGN KEY (`receiptFk`) REFERENCES `vn2008`.`Recibos` (`Id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `tpvTransaction_ibfk_1` FOREIGN KEY (`clientFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `tpvTransaction_ibfk_2` FOREIGN KEY (`merchantFk`) REFERENCES `tpvMerchant` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=315179 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Transactions realized through the virtual TPV'; +) ENGINE=InnoDB AUTO_INCREMENT=327172 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Transactions realized through the virtual TPV'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12004,7 +11813,7 @@ CREATE TABLE `visit` ( PRIMARY KEY (`id`), KEY `firstAgent` (`firstAgent`), CONSTRAINT `visit_ibfk_1` FOREIGN KEY (`firstAgent`) REFERENCES `visitAgent` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1785388 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1834893 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12024,7 +11833,7 @@ CREATE TABLE `visitAccess` ( KEY `visit_access_idx_agent` (`agent`), KEY `stamp` (`stamp`), CONSTRAINT `visitAccess_ibfk_1` FOREIGN KEY (`agent`) REFERENCES `visitAgent` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3906630 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4025843 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12049,7 +11858,7 @@ CREATE TABLE `visitAgent` ( KEY `firstAccess` (`firstAccess`), CONSTRAINT `visitAgent_ibfk_1` FOREIGN KEY (`visit`) REFERENCES `visit` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `visitAgent_ibfk_2` FOREIGN KEY (`firstAccess`) REFERENCES `visitAccess` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2392263 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2448551 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12069,7 +11878,7 @@ CREATE TABLE `visitUser` ( KEY `date_time` (`stamp`), KEY `user_id` (`user`), CONSTRAINT `visitUser_ibfk_1` FOREIGN KEY (`access`) REFERENCES `visitAccess` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3462949 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3553449 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12079,29 +11888,6 @@ CREATE TABLE `visitUser` ( -- -- Dumping routines for database 'hedera' -- -/*!50003 DROP FUNCTION IF EXISTS `invoiceGetPath` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `invoiceGetPath`(vSelf INT) RETURNS varchar(255) CHARSET utf8 - DETERMINISTIC -BEGIN -/** - * @deprecated Use vn.invoiceOut_getPath(); - */ - RETURN vn.invoiceOut_getPath(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `myBasket_getId` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -12185,30 +11971,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `orderGetTotal` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `orderGetTotal`(vSelf INT) RETURNS decimal(10,2) - READS SQL DATA - DETERMINISTIC -BEGIN -/** - * @deprecated Use order_getTotal(); - */ - RETURN order_getTotal(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `order_getTotal` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -12252,132 +12014,52 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `__myClientGetDebt` */; +/*!50003 DROP PROCEDURE IF EXISTS `catalog_calcFromMyAddress` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `__myClientGetDebt`(vDate DATE) RETURNS decimal(10,2) - DETERMINISTIC +CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calcFromMyAddress`(vDelivery DATE, vAddress INT) BEGIN /** - * @deprecated Use myClient_getDebt(); - */ - RETURN myClient_getDebt(vDate); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `__userCheckRestPriv` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `__userCheckRestPriv`(vMethodPath VARCHAR(255)) RETURNS tinyint(1) - DETERMINISTIC -BEGIN -/** - * @deprecated Use myUser_checkRestPriv(); - */ - RETURN myUser_checkRestPriv(vMethodPath); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionicCalcWithDate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionicCalcWithDate`(vDate DATE) -BEGIN - DECLARE vMyAddressFk INTEGER; - DECLARE vMyAgencyModeFk INTEGER; + * Gets the available items list. + * + * @param vDelivery Delivery date + * @param vAddress Address id + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + * @return tmp.zoneGetShipped + */ + DECLARE vAgencyMode INT; - SELECT id, agencyModeFk INTO vMyAddressFk, vMyAgencyModeFk - FROM myAddress - WHERE isDefaultAddress; - - CALL vn2008.bionic_calc(vDate, vMyAddressFk, vMyAgencyModeFk); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc`() -BEGIN - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT sent, addressFk, agencyModeFk - INTO vDate, vAddress, vAgencyMode - FROM myBasket; + SELECT a.agencyModeFk + INTO vAgencyMode + FROM myClient c + JOIN vn.address a ON a.clientFk = c.id + WHERE a.id = vAddress; - CALL vn2008.bionic_calc(vDate, vAddress, vAgencyMode); + CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); - IF account.myUserGetName() = 'visitor' - THEN - DROP TEMPORARY TABLE tmp.bionic_component; - UPDATE tmp.bionic_item SET price = NULL; - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_item` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_item`(vItem INT) -BEGIN - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT sent, addressFk, agencyModeFk - INTO vDate, vAddress, vAgencyMode - FROM myBasket; + DROP TEMPORARY TABLE IF EXISTS tmp.item; + CREATE TEMPORARY TABLE tmp.item + (INDEX (itemFk)) + ENGINE = MEMORY + SELECT c.item_id itemFk + FROM `cache`.available c + JOIN tmp.availableCalc a ON a.calcFk = c.calc_id + WHERE c.available > 0 + GROUP BY c.item_id; + + CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode); - CALL vn2008.bionic_from_item(vDate, vAddress, vAgencyMode, vItem); + DROP TEMPORARY TABLE tmp.item; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -12527,96 +12209,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemGetAvailable` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemGetAvailable`() -BEGIN -/** - * Gets the available items list. - * - * @table tmp.itemAvailable - */ - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vAgency INT; - - SELECT sent, addressFk, agencyModeFk - INTO vDelivery, vAddress, vAgency - FROM myBasket; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgency); - - DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; - CREATE TEMPORARY TABLE tmp.itemAvailable - (INDEX (id)) - ENGINE = MEMORY - SELECT c.item_id id - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - DROP TEMPORARY TABLE vn2008.t_bionic_available; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemGetAvailableOrder` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemGetAvailableOrder`(vOrder INT) -BEGIN -/** - * Gets the available items list with an order params. - * - * @table tmp.itemAvailable - */ - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vAgency INT; - - SELECT landed, addressFk, agencyModeFk - INTO vDelivery, vAddress, vAgency - FROM myOrder - WHERE id = vOrder; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgency); - - DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; - CREATE TEMPORARY TABLE tmp.itemAvailable - (INDEX (id)) - ENGINE = MEMORY - SELECT c.item_id id - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - DROP TEMPORARY TABLE vn2008.t_bionic_available; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `item_getList` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -12850,6 +12442,66 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `myBasket_calcCatalogFromItem` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_calcCatalogFromItem`(vItem INT) +BEGIN +/** + * Gets the availability and prices for the given item + * using current user basket parameters. + * + * @table tmp.item(itemFk) + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + * @return tmp.zoneGetShipped + */ + CALL order_calcCatalogFromItem(myBasket_getId(), vItem); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `myBasket_calcCatalogFull` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_calcCatalogFull`() +BEGIN +/** + * Gets the availability and prices for the given items + * using current user basket parameters. + * + * @table tmp.item(itemFk) + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + * @return tmp.zoneGetShipped + */ + CALL order_calcCatalogFull(myBasket_getId()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `myBasket_check` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -13051,6 +12703,30 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `myBasket_getAvailable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `myBasket_getAvailable`() +BEGIN +/** + * Gets the available items list. + * + * @table tmp.itemAvailable + */ + CALL order_getAvailable(myBasket_getId()); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `myBasket_getTax` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -13083,187 +12759,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `myItemGetAvailable` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myItemGetAvailable`(vDelivery DATE, vAddress INT) -BEGIN -/** - * Gets the available items list. - * - * @vDelivery Delivery date - * @vAddress Id Address - */ - DECLARE vAgencyMode INT; - - SELECT a.agencyModeFk - INTO vAgencyMode - FROM myClient c - JOIN vn.address a ON a.clientFk = c.id - WHERE a.id = vAddress; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT c.item_id itemFk - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode); --- ------------------- - /*SELECT b.itemFk, b.item, b.available, b.price - FROM tmp.ticketCalculateItem b - JOIN vn.item i ON i.id = b.itemFk - WHERE b.available > 0 - ORDER BY i.relevancy DESC, i.name, i.size; - - select * from tmp.ticketComponentPrice;*/ --- ------------------- - DROP TEMPORARY TABLE vn2008.t_bionic_available; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `myItemGetAvailableFromDate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myItemGetAvailableFromDate`(vDelivery DATE) -BEGIN -/** - * Gets the available items list. - * - * @vDelivery Delivery date - */ - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT a.agencyModeFk, a.id - INTO vAgencyMode, vAddress - FROM myClient c - JOIN vn.address a ON a.id = c.defaultAddressFk; - - CALL vn2008.bionic_available_ (vDelivery, vAddress, vAgencyMode); - - DROP TEMPORARY TABLE IF EXISTS tmp.item; - CREATE TEMPORARY TABLE tmp.item - (INDEX (itemFk)) - ENGINE = MEMORY - SELECT c.item_id itemFk - FROM cache.available c - JOIN vn2008.t_bionic_available a ON c.calc_id = a.calc_id - WHERE c.available > 0 - GROUP BY c.item_id; - - CALL vn.ticketCalculate(vDelivery, vAddress, vAgencyMode); --- ------------------- - /*SELECT b.itemFk, b.item, b.available, b.price - FROM tmp.ticketCalculateItem b - JOIN vn.item i ON i.id = b.itemFk - WHERE b.available > 0 - ORDER BY i.relevancy DESC, i.name, i.size; - - select * from tmp.ticketComponentPrice;*/ --- ------------------- - DROP TEMPORARY TABLE vn2008.t_bionic_available; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `myOrderAddItem` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrderAddItem`( - vSelf INT, - vWarehouse INT, - vItem INT, - vAmount INT) -BEGIN -/** - * @deprecated Use myOrder_addItem() - */ - CALL myOrder_addItem(vSelf, vWarehouse, vItem, vAmount); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `myOrderConfirm` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrderConfirm`(vSelf INT) -BEGIN -/** - * @deprecated Use myOrder_confirm() - */ - CALL myOrder_confirm(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `myOrderNewFromDate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `myOrderNewFromDate`( - OUT vSelf INT, - vLandingDate DATE) -BEGIN -/** - * @deprecated Use myOrder_newWithDate() - */ - CALL myOrder_newWithDate(vSelf, vLandingDate); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `myOrder_addItem` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -13322,6 +12817,117 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `myOrder_getAvailable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_getAvailable`(vSelf INT) +BEGIN +/** + * Gets the available items list. + * + * @param vSelf The order id + * @table tmp.itemAvailable + */ + DECLARE isMine BOOL; + + SELECT COUNT(*) INTO isMine + FROM myOrder + WHERE id = vSelf; + + IF isMine THEN + CALL order_getAvailable(vSelf); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `myOrder_newWithAddress` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `myOrder_newWithAddress`( + OUT vSelf INT, + vLandingDate DATE, + vAddressFk INT) +BEGIN +/** + * Crea una nueva orden para el usuario actual especificando + * una fecha de entrega. + * + * @param vSelf Id de la nueva orden + * @param vLandingDate Fecha de entrega + */ + DECLARE vCompany INT; + DECLARE vDeliveryMethodId INT; + DECLARE vAgencyMode INT; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vSelf = NULL; + DECLARE EXIT HANDLER FOR SQLSTATE '45000' + BEGIN + ROLLBACK; + SET vSelf = NULL; + RESIGNAL; + END; + + START TRANSACTION; + + SELECT a.agencyModeFk, a.id + INTO vAgencyMode, vAddressFk + FROM vn.address a + WHERE a.id = vAddressFk; + + SELECT deliveryMethodFk INTO vDeliveryMethodId + FROM vn.agencyMode am + WHERE am.id = vAgencyMode; + + SELECT companyFk INTO vCompany + FROM vn.clientDefaultCompany + WHERE clientFk = account.userGetId() + AND CURDATE() BETWEEN started AND finished + LIMIT 1; + + IF vCompany IS NULL + THEN + SELECT defaultCompanyFk INTO vCompany + FROM orderConfig; + END IF; + + INSERT INTO `order` + SET + customer_id = account.userGetId(), + date_send = vLandingDate, + delivery_method_id = vDeliveryMethodId, + agency_id = vAgencyMode, + address_id = vAddressFk, + source_app = 'WEB', + company_id = vCompany; + + SET vSelf = LAST_INSERT_ID(); + + CALL order_checkConfig(vSelf); + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `myOrder_newWithDate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -13432,8 +13038,9 @@ BEGIN INTO vTaxBase, vTax FROM tmp.ticketAmount; - SELECT t.id, t.landed, t.shipped, t.refFk, ag.description agency, m.code method, - a.street, a.postalCode, a.city, a.nickname, p.name province, + SELECT t.id, t.landed, t.shipped, t.refFk, t.nickname, + ag.description agency, m.code method, + a.street, a.postalCode, a.city, p.name province, vTaxBase taxBase, vTaxBase + vTax AS total FROM tmp.ticket v JOIN vn.ticket t ON t.id = v.ticketFk @@ -13548,8 +13155,9 @@ BEGIN CALL vn.ticketGetTotal; - SELECT v.id, IFNULL(v.landed, v.shipped) landed, v.shipped, v.companyFk, - a.city, a.nickname, ag.description agency, t.total + SELECT v.id, IFNULL(v.landed, v.shipped) landed, + v.shipped, v.companyFk, v.nickname, + a.city, ag.description agency, t.total FROM tmp.ticket i JOIN vn.ticket v ON v.id = i.ticketFk JOIN vn.address a ON a.id = v.addressFk @@ -13714,33 +13322,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderAddItem` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderAddItem`( - vSelf INT, - vWarehouse INT, - vItem INT, - vAmount INT) -BEGIN -/** - * @deprecated Use order_addItem(); - */ - CALL order_addItem(vSelf, vWarehouse, vItem, vAmount); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderCheckConfig` */; +/*!50003 DROP PROCEDURE IF EXISTS `order_addItem` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -13750,150 +13332,20 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderCheckConfig`(vOrder INT) -proc: BEGIN -/** - * Comprueba que la configuración del pedido es correcta. - * - * @param vOrder Identificador del pedido - */ - DECLARE vDeliveryMethod VARCHAR(255); - DECLARE vDelivery DATE; - DECLARE vAgency INT; - DECLARE vAddress INT; - - -- Obtiene los datos del pedido - - SELECT d.code, o.date_send, o.agency_id, o.address_id - INTO vDeliveryMethod, vDelivery, vAgency, vAddress - FROM `order` o - JOIN vn.deliveryMethod d ON d.id = o.delivery_method_id - WHERE o.id = vOrder; - - -- Comprueba que se ha seleccionado una dirección - - IF vDeliveryMethod IN ('AGENCY', 'DELIVERY') - && vAddress IS NULL - THEN - CALL util.throw ('ORDER_EMPTY_ADDRESS'); - END IF; - - -- Comprueba que la agencia es correcta - - IF !vn.AgencyIsAvailable (vAgency, vDelivery, vAddress) THEN - CALL util.throw ('ORDER_INVALID_AGENCY'); - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderConfirm` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderConfirm`(vSelf INT) -BEGIN -/** - * @deprecated Use order_confirm(); - */ - CALL order_confirm(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderConfirmWithUser` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderConfirmWithUser`(vSelf INT, vUserId INT) -BEGIN -/** - * @deprecated Use order_confirmWithUser() - */ - CALL order_confirmWithUser(vSelf, vUserId); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderGetTax` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderGetTax`() - READS SQL DATA -BEGIN -/** - * @deprecated Use order_getTax(); - */ - CALL order_getTax; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `orderGetTotal` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `orderGetTotal`() -BEGIN -/** - * @deprecated Use order_getTotal(); - */ - CALL order_getTotal; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `order_addItem` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_addItem`( vSelf INT, vWarehouse INT, vItem INT, - vAmount INT) + vAmount INT) BEGIN +/** + * Adds an item to the order, checking availability and grouping. + * + * @param vSelf The order id + * @param vWarehouse The warehouse id + * @param vItem The item id + * @param vAmount The amount to add + */ DECLARE vRow INT; DECLARE vAdd INT; DECLARE vAvailable INT; @@ -13902,14 +13354,11 @@ BEGIN DECLARE vRate INT; DECLARE vShipment DATE; DECLARE vPrice DECIMAL(10,2); - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; DECLARE cur CURSOR FOR SELECT `grouping`, price, rate - FROM tmp.bionic_price - WHERE warehouse_id = vWarehouse - AND item_id = vItem + FROM tmp.ticketComponentPrice + WHERE warehouseFk = vWarehouse + AND itemFk = vItem ORDER BY `grouping` DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND @@ -13921,26 +13370,19 @@ BEGIN RESIGNAL; END; - SELECT date_send, address_id, agency_id - INTO vDate, vAddress, vAgencyMode - FROM `order` - WHERE id = vSelf; - - CALL vn2008.bionic_from_item(vDate, vAddress, vAgencyMode, vItem); - + CALL order_calcCatalogFromItem(vSelf, vItem); START TRANSACTION; SELECT shipped INTO vShipment - FROM tmp.travel_tree + FROM tmp.zoneGetShipped WHERE warehouseFk = vWarehouse; SELECT available INTO vAvailable - FROM tmp.bionic_lot - WHERE warehouse_id = vWarehouse - AND item_id = vItem; + FROM tmp.ticketLot + WHERE warehouseFk = vWarehouse + AND itemFk = vItem; - IF vAmount > IFNULL(vAvailable, 0) - THEN + IF vAmount > IFNULL(vAvailable, 0) THEN CALL util.throw ('ORDER_ROW_UNAVAILABLE'); END IF; @@ -13961,10 +13403,10 @@ BEGIN ITERATE l; END IF; - INSERT INTO order_row SET - order_id = vSelf, - item_id = vItem, - warehouse_id = vWarehouse, + INSERT INTO orderRow SET + orderFk = vSelf, + itemFk = vItem, + warehouseFk = vWarehouse, shipment = vShipment, rate = vRate, amount = vAdd, @@ -13972,25 +13414,157 @@ BEGIN SET vRow = LAST_INSERT_ID(); - INSERT INTO order_component (order_row_id, component_id, price) - SELECT vRow, c.component_id, c.cost - FROM tmp.bionic_component c - JOIN bi.tarifa_componentes t - ON t.Id_Componente = c.component_id - AND (t.tarifa_class IS NULL OR t.tarifa_class = vRate) - WHERE c.warehouse_id = vWarehouse - AND c.item_id = vItem; + INSERT INTO orderRowComponent (rowFk, componentFk, price) + SELECT vRow, c.componentFk, c.cost + FROM tmp.ticketComponent c + JOIN vn.component t + ON t.id = c.componentFk + AND (t.classRate IS NULL OR t.classRate = vRate) + WHERE c.warehouseFk = vWarehouse + AND c.itemFk = vItem; END LOOP; CLOSE cur; - IF vAmount > 0 - THEN + IF vAmount > 0 THEN CALL util.throw ('AMOUNT_NOT_MATCH_GROUPING'); END IF; COMMIT; - CALL vn2008.bionic_free (); + CALL vn.ticketCalculatePurge; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_calcCatalog` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_calcCatalog`(vSelf INT) +BEGIN +/** + * Gets the availability and prices for order items. + * + * @param vSelf The order id + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + */ + DECLARE vDate DATE; + DECLARE vAddress INT; + DECLARE vAgencyMode INT; + + SELECT date_send, address_id, agency_id + INTO vDate, vAddress, vAgencyMode + FROM `order` + WHERE id = vSelf; + + DROP TEMPORARY TABLE IF EXISTS tmp.item; + CREATE TEMPORARY TABLE tmp.item + (PRIMARY KEY (itemFk)) + ENGINE = MEMORY + SELECT itemFk FROM orderRow + WHERE orderFk = vSelf + GROUP BY itemFk; + + CALL vn.ticketCalculate(vDate, vAddress, vAgencyMode); + + DROP TEMPORARY TABLE tmp.item; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_calcCatalogFromItem` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_calcCatalogFromItem`(vSelf INT, vItem INT) +BEGIN +/** + * Gets the availability and prices for the given item + * using the order parameters. + * + * @param vSelf The order id + * @table tmp.item(itemFk) + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + * @return tmp.zoneGetShipped + */ + DECLARE vDate DATE; + DECLARE vAddress INT; + DECLARE vAgencyMode INT; + + SELECT date_send, address_id, agency_id + INTO vDate, vAddress, vAgencyMode + FROM `order` + WHERE id = vSelf; + + CALL vn.catalog_calcFromItem(vDate, vAddress, vAgencyMode, vItem); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `order_calcCatalogFull` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `order_calcCatalogFull`(vSelf INT) +BEGIN +/** + * Gets the availability and prices for the given items + * using the order parameters. + * + * @param vSelf The order id + * @table tmp.item(itemFk) + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + * @return tmp.zoneGetShipped + */ + DECLARE vDate DATE; + DECLARE vAddress INT; + DECLARE vAgencyMode INT; + + SELECT date_send, address_id, agency_id + INTO vDate, vAddress, vAgencyMode + FROM `order` + WHERE id = vSelf; + + CALL vn.ticketCalculate(vDate, vAddress, vAgencyMode); + + IF account.myUserGetName() = 'visitor' + THEN + DROP TEMPORARY TABLE tmp.ticketComponent; + UPDATE tmp.ticketCalculateItem SET price = NULL; + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -14010,9 +13584,45 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_checkConfig`(vSelf INT) BEGIN /** - * Replaces orderCheckConfig(). + * Comprueba que la configuración del pedido es correcta. + * + * @param vSelf Identificador del pedido */ - CALL orderCheckConfig(vSelf); + DECLARE vDeliveryMethod VARCHAR(255); + DECLARE vLanded DATE; + DECLARE vAgencyMode INT; + DECLARE vAddress INT; + DECLARE vIsAvailable BOOL; + + -- Obtiene los datos del pedido + + SELECT d.code, o.date_send, o.agency_id, o.address_id + INTO vDeliveryMethod, vLanded, vAgencyMode, vAddress + FROM `order` o + JOIN vn.deliveryMethod d ON d.id = o.delivery_method_id + WHERE o.id = vSelf; + + -- Comprueba que se ha seleccionado una dirección + + IF vDeliveryMethod IN ('AGENCY', 'DELIVERY') + && vAddress IS NULL + THEN + CALL util.throw ('ORDER_EMPTY_ADDRESS'); + END IF; + + -- Comprueba que la agencia es correcta + + CALL vn.zoneGetAgency(vAddress, vLanded); + + SELECT COUNT(*) > 0 INTO vIsAvailable + FROM tmp.zoneGetAgency + WHERE agencyModeFk = vAgencyMode; + + IF !vIsAvailable THEN + CALL util.throw ('ORDER_INVALID_AGENCY'); + END IF; + + DROP TEMPORARY TABLE tmp.zoneGetAgency; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -14048,274 +13658,294 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_confirmWithUser`(IN `vOrder` INT, IN `vUserId` INT) -BEGIN -/** - * Confirms an order, creating each of its tickets on the corresponding - * date, store and user. - * - * @param vOrder The order identifier - * @param vUser The user identifier - */ - DECLARE vOk BOOL; - DECLARE vDone BOOL DEFAULT FALSE; - DECLARE vWarehouse INT; - DECLARE vShipment DATETIME; - DECLARE vTicket INT; - DECLARE vNotes VARCHAR(255); - DECLARE vItem INT; - DECLARE vConcept VARCHAR(30); - DECLARE vAmount INT; - DECLARE vPrice DECIMAL(10,2); - DECLARE vSale INT; - DECLARE vRate INT; - DECLARE vRowId INT; - DECLARE vDelivery DATE; - DECLARE vAddress INT; - DECLARE vAgency INT; - DECLARE vIsConfirmed BOOL; - DECLARE vClientId INT; - DECLARE vCompanyId INT; - DECLARE vAgencyModeId INT; - - DECLARE TICKET_FREE INT DEFAULT 2; - DECLARE SYSTEM_WORKER INT DEFAULT 20; - - DECLARE cDates CURSOR FOR - SELECT ah.shipped, r.warehouse_id - FROM `order` o - JOIN order_row r ON r.order_id = o.id - LEFT JOIN tmp.agencyHourGetShipped ah - ON ah.warehouseFk = r.warehouse_id - WHERE o.id = vOrder AND r.amount != 0 - GROUP BY warehouse_id; - - DECLARE cRows CURSOR FOR - SELECT r.id, r.item_id, a.Article, r.amount, r.price, r.rate - FROM order_row r - JOIN vn2008.Articles a ON a.Id_Article = r.item_id - WHERE r.amount != 0 - AND r.warehouse_id = vWarehouse - AND r.order_id = vOrder - ORDER BY r.rate DESC; - - DECLARE CONTINUE HANDLER FOR NOT FOUND - SET vDone = TRUE; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - -- Carga los datos del pedido - - SELECT o.date_send, o.address_id, o.note, a.agency_id, - o.confirmed, cs.Id_Cliente, o.company_id, o.agency_id - INTO vDelivery, vAddress, vNotes, vAgency, - vIsConfirmed, vClientId, vCompanyId, vAgencyModeId - FROM hedera.`order` o - JOIN vn2008.Agencias a ON a.Id_Agencia = o.agency_id - JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = o.address_id - WHERE id = vOrder; - - -- Comprueba que el pedido no está confirmado - - IF vIsConfirmed THEN - CALL util.throw ('ORDER_ALREADY_CONFIRMED'); - END IF; - - -- Comprueba que el pedido no está vacío - - SELECT COUNT(*) > 0 INTO vOk - FROM order_row WHERE order_id = vOrder AND amount > 0; - - IF !vOk THEN - CALL util.throw ('ORDER_EMPTY'); - END IF; - - -- Carga las fechas de salida de cada almacén - - CALL vn.agencyHourGetShipped (vDelivery, vAddress, vAgency); - - -- Trabajador que realiza la acción - - IF vUserId IS NULL THEN - SELECT employeeFk INTO vUserId FROM orderConfig; - END IF; - - -- Crea los tickets del pedido - - START TRANSACTION; - - OPEN cDates; - - lDates: - LOOP - SET vTicket = NULL; - SET vDone = FALSE; - FETCH cDates INTO vShipment, vWarehouse; - - IF vDone THEN - LEAVE lDates; - END IF; - - -- Busca un ticket existente que coincida con los parametros - - SELECT Id_Ticket INTO vTicket - FROM vn2008.Tickets t - LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket - JOIN `order` o - ON o.address_id = t.Id_Consigna - AND vWarehouse = t.warehouse_id - AND o.agency_id = t.Id_Agencia - AND t.landing = o.date_send - AND vShipment = DATE(t.Fecha) - WHERE o.id = vOrder - AND t.Factura IS NULL - AND IFNULL(tls.alertLevel,0) = 0 - AND t.Id_Cliente <> 1118 - LIMIT 1; - - -- Crea el ticket en el caso de no existir uno adecuado - - IF vTicket IS NULL - THEN - CALL vn.ticketCreateWithUser( - vClientId, - IFNULL(vShipment, CURDATE()), - vWarehouse, - vCompanyId, - vAddress, - vAgencyModeId, - NULL, - vDelivery, - vUserId, - vTicket - ); - ELSE - INSERT INTO vncontrol.inter - SET Id_Ticket = vTicket, - Id_Trabajador = SYSTEM_WORKER, - state_id = TICKET_FREE; - END IF; - - INSERT IGNORE INTO vn2008.order_Tickets - SET order_id = vOrder, - Id_Ticket = vTicket; - - -- Añade las notas - - IF vNotes IS NOT NULL AND vNotes != '' - THEN - INSERT INTO vn2008.ticket_observation SET - Id_Ticket = vTicket, - observation_type_id = 4 /* salesperson */, - `text` = vNotes - ON DUPLICATE KEY UPDATE - `text` = CONCAT(VALUES(`text`),'. ', `text`); - END IF; - - -- Añade los movimientos y sus componentes - - OPEN cRows; - - lRows: - LOOP - SET vDone = FALSE; - FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate; - - IF vDone THEN - LEAVE lRows; - END IF; - - INSERT INTO vn2008.Movimientos - SET - Id_Article = vItem, - Id_Ticket = vTicket, - Concepte = vConcept, - Cantidad = vAmount, - Preu = vPrice, - CostFixat = 0, - PrecioFijado = TRUE; - - SET vSale = LAST_INSERT_ID(); - - INSERT INTO vn2008.Movimientos_componentes - (Id_Movimiento, Id_Componente, Valor) - SELECT vSale, cm.component_id, cm.price - FROM order_component cm - JOIN bi.tarifa_componentes tc - ON tc.Id_Componente = cm.component_id - WHERE cm.order_row_id = vRowId - GROUP BY vSale, cm.component_id; - - UPDATE order_row SET Id_Movimiento = vSale - WHERE id = vRowId; - - END LOOP; - - CLOSE cRows; - - -- Fija el coste - - DROP TEMPORARY TABLE IF EXISTS tComponents; - CREATE TEMPORARY TABLE tComponents - (INDEX (saleFk)) - ENGINE = MEMORY - SELECT SUM(mc.Valor) valueSum, mc.Id_Movimiento saleFk - FROM vn2008.Movimientos_componentes mc - JOIN bi.tarifa_componentes tc USING(Id_Componente) - JOIN bi.tarifa_componentes_series tcs - ON tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id - AND tcs.base - JOIN vn2008.Movimientos m - ON m.Id_Movimiento = mc.Id_Movimiento - WHERE m.Id_Ticket = vTicket - GROUP BY mc.Id_Movimiento; - - UPDATE vn2008.Movimientos m - JOIN tComponents mc ON mc.saleFk = m.Id_Movimiento - SET m.CostFixat = valueSum; - - DROP TEMPORARY TABLE tComponents; - END LOOP; - - CLOSE cDates; - - DELETE FROM basketOrder WHERE orderFk = vOrder; - UPDATE `order` SET confirmed = TRUE, confirm_date = NOW() - WHERE id = vOrder; - - COMMIT; +BEGIN +/** + * Confirms an order, creating each of its tickets on the corresponding + * date, store and user. + * + * @param vOrder The order identifier + * @param vUser The user identifier + */ + DECLARE vOk BOOL; + DECLARE vDone BOOL DEFAULT FALSE; + DECLARE vWarehouse INT; + DECLARE vShipment DATETIME; + DECLARE vTicket INT; + DECLARE vNotes VARCHAR(255); + DECLARE vItem INT; + DECLARE vConcept VARCHAR(30); + DECLARE vAmount INT; + DECLARE vPrice DECIMAL(10,2); + DECLARE vSale INT; + DECLARE vRate INT; + DECLARE vRowId INT; + DECLARE vDelivery DATE; + DECLARE vAddress INT; + DECLARE vIsConfirmed BOOL; + DECLARE vClientId INT; + DECLARE vCompanyId INT; + DECLARE vAgencyModeId INT; + + DECLARE TICKET_FREE INT DEFAULT 2; + DECLARE SYSTEM_WORKER INT DEFAULT 20; + + DECLARE cDates CURSOR FOR + SELECT zgs.shipped, r.warehouse_id + FROM `order` o + JOIN order_row r ON r.order_id = o.id + LEFT JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = r.warehouse_id + WHERE o.id = vOrder AND r.amount != 0 + GROUP BY r.warehouse_id; + + DECLARE cRows CURSOR FOR + SELECT r.id, r.item_id, a.Article, r.amount, r.price, r.rate + FROM order_row r + JOIN vn2008.Articles a ON a.Id_Article = r.item_id + WHERE r.amount != 0 + AND r.warehouse_id = vWarehouse + AND r.order_id = vOrder + ORDER BY r.rate DESC; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + -- Carga los datos del pedido + + SELECT o.date_send, o.address_id, o.note, + o.confirmed, cs.Id_Cliente, o.company_id, o.agency_id + INTO vDelivery, vAddress, vNotes, + vIsConfirmed, vClientId, vCompanyId, vAgencyModeId + FROM hedera.`order` o + JOIN vn2008.Consignatarios cs ON cs.Id_Consigna = o.address_id + WHERE id = vOrder; + + -- Comprueba que el pedido no está confirmado + + IF vIsConfirmed THEN + CALL util.throw ('ORDER_ALREADY_CONFIRMED'); + END IF; + + -- Comprueba que el pedido no está vacío + + SELECT COUNT(*) > 0 INTO vOk + FROM order_row WHERE order_id = vOrder AND amount > 0; + + IF !vOk THEN + CALL util.throw ('ORDER_EMPTY'); + END IF; + + -- Carga las fechas de salida de cada almacén + + CALL vn.zoneGetShippedWarehouse (vDelivery, vAddress, vAgencyModeId); + + -- Trabajador que realiza la acción + + IF vUserId IS NULL THEN + SELECT employeeFk INTO vUserId FROM orderConfig; + END IF; + + -- Crea los tickets del pedido + + START TRANSACTION; + + OPEN cDates; + + lDates: + LOOP + SET vTicket = NULL; + SET vDone = FALSE; + FETCH cDates INTO vShipment, vWarehouse; + + IF vDone THEN + LEAVE lDates; + END IF; + + -- Busca un ticket existente que coincida con los parametros + + SELECT Id_Ticket INTO vTicket + FROM vn2008.Tickets t + LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket + JOIN `order` o + ON o.address_id = t.Id_Consigna + AND vWarehouse = t.warehouse_id + AND o.agency_id = t.Id_Agencia + AND t.landing = o.date_send + AND vShipment = DATE(t.Fecha) + WHERE o.id = vOrder + AND t.Factura IS NULL + AND IFNULL(tls.alertLevel,0) = 0 + AND t.Id_Cliente <> 1118 + LIMIT 1; + + -- Crea el ticket en el caso de no existir uno adecuado + + IF vTicket IS NULL + THEN + CALL vn.ticketCreateWithUser( + vClientId, + IFNULL(vShipment, CURDATE()), + vWarehouse, + vCompanyId, + vAddress, + vAgencyModeId, + NULL, + vDelivery, + vUserId, + vTicket + ); + ELSE + INSERT INTO vncontrol.inter + SET Id_Ticket = vTicket, + Id_Trabajador = SYSTEM_WORKER, + state_id = TICKET_FREE; + END IF; + + INSERT IGNORE INTO vn2008.order_Tickets + SET order_id = vOrder, + Id_Ticket = vTicket; + + -- Añade las notas + + IF vNotes IS NOT NULL AND vNotes != '' + THEN + INSERT INTO vn2008.ticket_observation SET + Id_Ticket = vTicket, + observation_type_id = 4 /* salesperson */ , + `text` = vNotes + ON DUPLICATE KEY UPDATE + `text` = CONCAT(VALUES(`text`),'. ', `text`); + END IF; + + -- Añade los movimientos y sus componentes + + OPEN cRows; + + lRows: + LOOP + SET vDone = FALSE; + FETCH cRows INTO vRowId, vItem, vConcept, vAmount, vPrice, vRate; + + IF vDone THEN + LEAVE lRows; + END IF; + + INSERT INTO vn2008.Movimientos + SET + Id_Article = vItem, + Id_Ticket = vTicket, + Concepte = vConcept, + Cantidad = vAmount, + Preu = vPrice, + CostFixat = 0, + PrecioFijado = TRUE; + + SET vSale = LAST_INSERT_ID(); + + INSERT INTO vn2008.Movimientos_componentes + (Id_Movimiento, Id_Componente, Valor) + SELECT vSale, cm.component_id, cm.price + FROM order_component cm + JOIN bi.tarifa_componentes tc + ON tc.Id_Componente = cm.component_id + WHERE cm.order_row_id = vRowId + GROUP BY vSale, cm.component_id; + + UPDATE order_row SET Id_Movimiento = vSale + WHERE id = vRowId; + + END LOOP; + + CLOSE cRows; + + -- Fija el coste + + DROP TEMPORARY TABLE IF EXISTS tComponents; + CREATE TEMPORARY TABLE tComponents + (INDEX (saleFk)) + ENGINE = MEMORY + SELECT SUM(mc.Valor) valueSum, mc.Id_Movimiento saleFk + FROM vn2008.Movimientos_componentes mc + JOIN bi.tarifa_componentes tc USING(Id_Componente) + JOIN bi.tarifa_componentes_series tcs + ON tcs.tarifa_componentes_series_id = tc.tarifa_componentes_series_id + AND tcs.base + JOIN vn2008.Movimientos m + ON m.Id_Movimiento = mc.Id_Movimiento + WHERE m.Id_Ticket = vTicket + GROUP BY mc.Id_Movimiento; + + UPDATE vn2008.Movimientos m + JOIN tComponents mc ON mc.saleFk = m.Id_Movimiento + SET m.CostFixat = valueSum; + + DROP TEMPORARY TABLE tComponents; + END LOOP; + + CLOSE cDates; + + DELETE FROM basketOrder WHERE orderFk = vOrder; + UPDATE `order` SET confirmed = TRUE, confirm_date = NOW() + WHERE id = vOrder; + + COMMIT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `order_confirm_bionic` */; +/*!50003 DROP PROCEDURE IF EXISTS `order_getAvailable` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `order_confirm_bionic`(vSelf INT) +CREATE DEFINER=`root`@`%` PROCEDURE `order_getAvailable`(vSelf INT) BEGIN /** - * @deprecated Use order_confirm() + * Gets the available items list. + * + * @param vSelf The order id + * @table tmp.itemAvailable */ - CALL order_confirm(vSelf); + DECLARE vDelivery DATE; + DECLARE vAddress INT; + DECLARE vAgencyMode INT; + + SELECT date_send, address_id, agency_id + INTO vDelivery, vAddress, vAgencyMode + FROM `order` + WHERE id = vSelf; + + CALL vn.available_calc(vDelivery, vAddress, vAgencyMode); + + DROP TEMPORARY TABLE IF EXISTS tmp.itemAvailable; + CREATE TEMPORARY TABLE tmp.itemAvailable + (INDEX (id)) + ENGINE = MEMORY + SELECT DISTINCT a.item_id id + FROM `cache`.available a + JOIN tmp.availableCalc c ON c.calcFk = a.calc_id + WHERE a.available > 0; + + DROP TEMPORARY TABLE tmp.availableCalc; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -14434,78 +14064,76 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `order_update`(vSelf INT) -proc: BEGIN -/** - * Actualiza la líneas de un pedido. - * - * @param vSelf Id del pedido - */ - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgency INT; - DECLARE vNRows INT; - - DECLARE EXIT HANDLER FOR SQLEXCEPTION - BEGIN - ROLLBACK; - RESIGNAL; - END; - - START TRANSACTION; - - SELECT COUNT(*) INTO vNRows - FROM order_row WHERE order_id = vSelf; - - IF vNRows > 0 - THEN - SELECT date_send, address_id, agency_id - INTO vDate, vAddress, vAgency - FROM `order` - WHERE id = vSelf; - - CALL vn2008.bionic_from_order (vDate, vAddress, vAgency, vSelf); - - DELETE c - FROM order_row r - JOIN order_component c ON c.order_row_id = r.id - WHERE r.order_id = vSelf; - - UPDATE order_row r - LEFT JOIN tmp.bionic_price l - ON l.warehouse_id = r.warehouse_id - AND l.item_id = r.item_id - AND l.rate = r.rate - LEFT JOIN tmp.travel_tree t - ON t.warehouseFk = r.warehouse_id - SET - r.price = l.price, - r.amount = IF(l.item_id IS NOT NULL, r.amount + IF(@m := MOD(r.amount, l.`grouping`), l.`grouping` - @m, 0), 0), - r.shipment = t.shipped - WHERE r.order_id = vSelf; - - INSERT INTO order_component (order_row_id, component_id, price) - SELECT r.id, c.component_id, c.cost - FROM order_row r - JOIN tmp.bionic_component c - ON c.warehouse_id = r.warehouse_id - AND c.item_id = r.item_id - JOIN bi.tarifa_componentes t - ON t.Id_Componente = c.component_id - AND (t.tarifa_class IS NULL OR t.tarifa_class = r.rate) - WHERE r.order_id = vSelf; - END IF; - - UPDATE `order` SET date_make = NOW() - WHERE id = vSelf; - - COMMIT; +proc: BEGIN +/** + * Actualiza las líneas de un pedido. + * + * @param vSelf Id del pedido + */ + DECLARE vDate DATE; + DECLARE vAddress INT; + DECLARE vAgencyMode INT; + DECLARE vNRows INT; + + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + + SELECT COUNT(*) INTO vNRows + FROM orderRow WHERE orderFk = vSelf; + + IF vNRows > 0 + THEN + CALL order_calcCatalog(vSelf); + + DELETE c + FROM orderRow r + JOIN orderRowComponent c ON c.rowFk = r.id + WHERE r.orderFk = vSelf; + + UPDATE orderRow r + LEFT JOIN tmp.ticketComponentPrice p + ON p.warehouseFk = r.warehouseFk + AND p.itemFk = r.itemFk + AND p.rate = r.rate + LEFT JOIN tmp.zoneGetShipped t + ON t.warehouseFk = r.warehouseFk + SET + r.price = p.price, + r.amount = IF(p.itemFk IS NOT NULL, + r.amount + IF(@m := MOD(r.amount, p.`grouping`), p.`grouping` - @m, 0), 0), + r.shipment = t.shipped + WHERE r.orderFk = vSelf; + + INSERT INTO orderRowComponent(rowFk, componentFk, price) + SELECT r.id, c.componentFk, c.cost + FROM orderRow r + JOIN tmp.ticketComponent c + ON c.warehouseFk = r.warehouseFk + AND c.itemFk = r.itemFk + JOIN vn.component t + ON t.id = c.componentFk + AND (t.classRate IS NULL OR t.classRate = r.rate) + WHERE r.orderFk = vSelf; + + CALL vn.ticketCalculatePurge; + END IF; + + UPDATE `order` SET date_make = NOW() + WHERE id = vSelf; + + COMMIT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -14544,50 +14172,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `tpvTransactionConfirmById` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransactionConfirmById`(vSelf INT) -BEGIN -/** - * @deprecated Use tpvTransaction_confirmById() - */ - CALL tpvTransaction_confirmById(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `tpvTransactionUndo` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransactionUndo`(vSelf INT) -BEGIN -/** - * @deprecated Use tpvTransaction_undo() - */ - CALL tpvTransaction_undo(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `tpvTransaction_confirm` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -15026,182 +14610,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `__bionic_from_basket` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_from_basket`() -BEGIN - DECLARE vOrder INT; - DECLARE vDate DATE; - DECLARE vAddress INT; - DECLARE vAgencyMode INT; - - SELECT id, sent, addressFk, agencyModeFk - INTO vOrder, vDate, vAddress, vAgencyMode - FROM myBasket; - - CALL vn2008.bionic_from_order(vDate, vAddress, vAgencyMode, vOrder); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `__catalog_getAvailable` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `__catalog_getAvailable`() -BEGIN -/** - * Gets the available items list that meets the tag filter. - * - * @table tItems - */ - CALL itemGetAvailable; - - DELETE t FROM tItems t - JOIN tmp.itemAvailable a ON a.id = t.id - WHERE a.id IS NULL; - - DROP TEMPORARY TABLE tmp.itemAvailable; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `__catalog_getItems` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `__catalog_getItems`() -BEGIN -/** - * Returns the list of items. - * - * @table tItems The list of items - * @select The list of items - */ - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; - CREATE TEMPORARY TABLE tmp.bionic_calc - (INDEX (item_id)) - ENGINE = MEMORY - SELECT id item_id FROM tItems; - - CALL bionic_calc (); - DROP TEMPORARY TABLE tmp.bionic_calc; - - SELECT i.id, i.name, i.description, i.category, i.size, i.image, i.inkFk, - IF(i.stems > 1, i.stems, NULL) stems, b.available, b.price, b.producer, - a.tag1, a.val1, a.tag2, a.val2, a.tag3, a.val3 - FROM tmp.bionic_item b - JOIN vn.item i ON i.id = b.item_id - LEFT JOIN vn.itemTagArranged a ON a.itemFk = i.id - LEFT JOIN vn.producer p ON p.id = i.producerFk - WHERE b.available > 0 - ORDER BY i.relevancy DESC, i.name, i.size - LIMIT 40; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `__myTicketSetDelivered` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `__myTicketSetDelivered`(vTicketFk INT) -BEGIN - - UPDATE `vn2008`.`agency_hour` SET `subtract_day` = '0' WHERE (`agency_hour_id` = '1061'); - UPDATE `vn2008`.`agency_hour` SET `subtract_day` = '0' WHERE (`agency_hour_id` = '1121'); - UPDATE `vn2008`.`agency_hour` SET `subtract_day` = '0' WHERE (`agency_hour_id` = '1134'); - UPDATE `vn2008`.`agency_hour` SET `subtract_day` = '0' WHERE (`agency_hour_id` = '1148'); - UPDATE `vn2008`.`agency_hour` SET `subtract_day` = '0' WHERE (`agency_hour_id` = '1920'); - - IF vTicketFk is null THEN - call util.throw ('AGENCIA ACTUALIZADA'); - END IF; - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT s.id, vTicketFk, vn.getWorker() - FROM vn.state s - JOIN myTicket m ON m.id = vTicketFk - WHERE `code` = 'DELIVERED' AND m.id = vTicketFk; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `__orderDelete` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `__orderDelete`(vSelf INT) -BEGIN - DELETE FROM `order` where id = vSelf; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `__orderUpdate` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `__orderUpdate`(vSelf INT) -BEGIN -/** - * @deprecated Use order_update() - */ - CALL order_update(vSelf); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Current Database: `nst` @@ -15319,8 +14727,8 @@ BEGIN CALL util.exec(CONCAT( 'SELECT COUNT(c.id) INTO @childs', ' FROM ', vScheme, '.', vTable, ' p', - ' LEFT JOIN tmp.', vTableClone, ' c ON c.lft', - ' BETWEEN p.lft AND p.rgt AND c.id != ', vParentFk, + ' LEFT JOIN tmp.', vTableClone, ' c ON c.depth = p.depth + 1', + ' AND c.lft BETWEEN p.lft AND p.rgt AND c.id != ', vParentFk, ' WHERE p.id = ', vParentFk )); @@ -15334,7 +14742,8 @@ BEGIN CALL util.exec(CONCAT( 'SELECT c.rgt INTO @vLeft', ' FROM ', vScheme, '.', vTable, ' p', - ' JOIN tmp.', vTableClone, ' c ON c.lft BETWEEN p.lft AND p.rgt', + ' JOIN tmp.', vTableClone, ' c ON c.depth = p.depth + 1' + ' AND c.lft BETWEEN p.lft AND p.rgt', ' WHERE p.id = ', vParentFk, ' ORDER BY c.lft', ' DESC LIMIT 1' @@ -15359,11 +14768,11 @@ BEGIN ' VALUES ("', vChild, '", @vLeft + 1, @vLeft + 2)' )); - CALL util.exec(CONCAT( - 'SELECT id, name, lft, rgt, depth, sons', - ' FROM ', vScheme, '.', vTable, - ' WHERE id = LAST_INSERT_ID()' - )); + -- CALL util.exec(CONCAT( + -- 'SELECT id, name, lft, rgt, depth, sons', + -- ' FROM ', vScheme, '.', vTable, + -- ' WHERE id = LAST_INSERT_ID()' + -- )); CALL util.exec(CONCAT('DROP TEMPORARY TABLE tmp.', vTableClone)); END ;; @@ -15638,48 +15047,46 @@ CREATE TABLE `blacklist` ( PRIMARY KEY (`phone`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Hangup input calls from this list'; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklistBeforeInsert` -BEFORE INSERT ON `blacklist` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklist_beforeInsert` + BEFORE INSERT ON `blacklist` + FOR EACH ROW BEGIN - CALL phoneIsValid (NEW.phone); + CALL phone_isValid(NEW.phone); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklistBerforeUpdate` -BEFORE UPDATE ON `blacklist` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`blacklist_berforeUpdate` + BEFORE UPDATE ON `blacklist` + FOR EACH ROW BEGIN - CALL phoneIsValid (NEW.phone); + CALL phone_isValid(NEW.phone); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `cdr` @@ -15713,7 +15120,7 @@ CREATE TABLE `cdr` ( KEY `dstchannel` (`dst_channel`), KEY `disposition` (`disposition`), KEY `src` (`src`) -) ENGINE=InnoDB AUTO_INCREMENT=279394 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=285835 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -15772,48 +15179,46 @@ CREATE TABLE `followme` ( CONSTRAINT `followme_ibfk_1` FOREIGN KEY (`extension`) REFERENCES `sip` (`extension`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followmeBeforeInsert` -BEFORE INSERT ON `followme` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followme_beforeInsert` + BEFORE INSERT ON `followme` + FOR EACH ROW BEGIN - CALL pbx.phoneIsValid (NEW.phone); + CALL pbx.phone_isValid(NEW.phone); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followmeBeforeUpdate` -BEFORE UPDATE ON `followme` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`followme_beforeUpdate` + BEFORE UPDATE ON `followme` + FOR EACH ROW BEGIN - CALL pbx.phoneIsValid (NEW.phone); + CALL pbx.phone_isValid(NEW.phone); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Temporary table structure for view `followmeConf` @@ -15883,48 +15288,46 @@ CREATE TABLE `queue` ( CONSTRAINT `queue_ibfk_1` FOREIGN KEY (`config`) REFERENCES `queueConfig` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Queues'; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queueBeforeInsert` -BEFORE INSERT ON `queue` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queue_beforeInsert` + BEFORE INSERT ON `queue` + FOR EACH ROW BEGIN - CALL queueIsValid (NEW.name); + CALL queue_isValid(NEW.`name`); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queueBeforeUpdate` -BEFORE UPDATE ON `queue` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queue_beforeUpdate` + BEFORE UPDATE ON `queue` + FOR EACH ROW BEGIN - CALL queueIsValid (NEW.name); + CALL queue_isValid(NEW.`name`); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Temporary table structure for view `queueConf` @@ -16013,48 +15416,46 @@ CREATE TABLE `queuePhone` ( CONSTRAINT `queuePhone_ibfk_1` FOREIGN KEY (`queue`) REFERENCES `queue` (`name`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhoneBeforeInsert` -BEFORE INSERT ON `queuePhone` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhone_beforeInsert` + BEFORE INSERT ON `queuePhone` + FOR EACH ROW BEGIN - CALL phoneIsValid (NEW.phone); + CALL phone_isValid(NEW.phone); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhoneBeforeUpdate` -BEFORE UPDATE ON `queuePhone` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`queuePhone_beforeUpdate` + BEFORE UPDATE ON `queuePhone` + FOR EACH ROW BEGIN - CALL phoneIsValid (NEW.phone); + CALL phone_isValid(NEW.phone); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Table structure for table `schedule` @@ -16083,78 +15484,105 @@ DROP TABLE IF EXISTS `sip`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sip` ( - `user_id` int(10) unsigned NOT NULL DEFAULT '0', - `extension` varchar(128) CHARACTER SET utf8 NOT NULL, - `secret` varchar(80) CHARACTER SET utf8 NOT NULL, - `caller_id` varchar(80) CHARACTER SET utf8 NOT NULL, + `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'The user id', + `extension` varchar(128) CHARACTER SET utf8 NOT NULL COMMENT 'The softphone extension', + `md5Secret` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'MD5 hash of extension and password', + `secret` varchar(80) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Deprecated', + `caller_id` varchar(80) CHARACTER SET utf8 DEFAULT NULL COMMENT 'Deprecated', PRIMARY KEY (`user_id`), UNIQUE KEY `extension` (`extension`), CONSTRAINT `sip_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='SIP accounts'; /*!40101 SET character_set_client = @saved_cs_client */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sipBeforeInsert` -BEFORE INSERT ON `sip` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sip_beforeInsert` + BEFORE INSERT ON `sip` + FOR EACH ROW BEGIN - CALL extensionIsValid (NEW.extension); + CALL sip_isValid(NEW.extension); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sipAfterInsert` -AFTER INSERT ON `sip` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `sip_afterInsert` + AFTER INSERT ON `sip` + FOR EACH ROW BEGIN - INSERT INTO sipReg (userId) VALUES (NEW.user_id); + INSERT INTO sipReg + SET userId = NEW.user_id; + + UPDATE account.user + SET sync = FALSE + WHERE id = NEW.user_id; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sipBeforeUpdate` -BEFORE UPDATE ON `sip` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sip_beforeUpdate` + BEFORE UPDATE ON `sip` + FOR EACH ROW BEGIN - CALL extensionIsValid (NEW.extension); + CALL sip_isValid(NEW.extension); +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `pbx`.`sip_afterUpdate` + AFTER UPDATE ON `sip` + FOR EACH ROW +BEGIN + IF !(OLD.extension <=> NEW.extension) THEN + UPDATE account.user + SET sync = FALSE + WHERE id = NEW.user_id; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Temporary table structure for view `sipConf` @@ -16168,7 +15596,7 @@ SET character_set_client = utf8; 1 AS `id`, 1 AS `name`, 1 AS `callbackextension`, - 1 AS `secret`, + 1 AS `md5secret`, 1 AS `callerid`, 1 AS `host`, 1 AS `deny`, @@ -16253,67 +15681,37 @@ CREATE TABLE `sipReg` ( /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `clientFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) DETERMINISTIC BEGIN - DECLARE vClient INT DEFAULT NULL; - - -- SET vPhone = vPhone COLLATE 'utf8_unicode_ci'; - - -- Searchs a customer associated to the phone number - - DROP TEMPORARY TABLE IF EXISTS tmp.customer; - CREATE TEMPORARY TABLE tmp.customer - ENGINE = MEMORY - SELECT id_cliente customer - FROM vn2008.Clientes c - WHERE telefono = vPhone - OR movil = vPhone - UNION - SELECT id_cliente - FROM vn2008.Consignatarios - WHERE telefono = vPhone - OR movil = vPhone - UNION - SELECT r.id_cliente - FROM vn2008.Relaciones r - JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto - WHERE c.telefono = vPhone - OR c.movil = vPhone; - - SELECT t.customer INTO vClient - FROM tmp.customer t - JOIN vn2008.Clientes c ON c.id_cliente = t.customer - WHERE c.activo - LIMIT 1; - - DROP TEMPORARY TABLE tmp.customer; - - RETURN vClient; +/** + * @deprecated Use vn.client_getFromPhone() + */ + RETURN vn.client_getFromPhone(vPhone); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `phoneFormat` */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 DROP FUNCTION IF EXISTS `phone_format` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `phoneFormat`(vPhone VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 +CREATE DEFINER=`root`@`%` FUNCTION `phone_format`(vPhone VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 + DETERMINISTIC BEGIN DECLARE vI INT DEFAULT 0; DECLARE vChr VARCHAR(1); @@ -16350,31 +15748,103 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `extensionIsValid` */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `phone_isValid` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `extensionIsValid`(vExtension VARCHAR(255)) +CREATE DEFINER=`root`@`%` PROCEDURE `phone_isValid`(vPhone VARCHAR(255)) +BEGIN +/** + * Check if an phone has the correct format and + * throws an exception if it hasn't. + * + * @param vPhone The phone number + */ + DECLARE vIsValid BOOL; + + SET vIsValid = vPhone IS NULL + OR (vPhone REGEXP '^[0-9]+$' + AND vPhone NOT REGEXP '^0+$' + AND vPhone NOT REGEXP '^0034'); + + IF NOT vIsValid THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'Phone format is invalid'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `queue_isValid` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `queue_isValid`(vQueue VARCHAR(255)) DETERMINISTIC BEGIN - DECLARE vIsValid BOOLEAN; +/** + * Check if an queue has the correct format and + * throws an exception if it hasn't. + * + * @param vQueue The queue number + */ + DECLARE vIsValid BOOL; + + SET vIsValid = vQueue IS NULL + OR vQueue REGEXP '^[1-9][0-9]00$'; + + IF NOT vIsValid THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'Queue format is invalid'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `sip_isValid` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `sip_isValid`(vExtension VARCHAR(255)) + DETERMINISTIC +BEGIN +/** + * Check if an extension has the correct format and + * throws an exception if it hasn't. + * + * @param vExtension The extension + */ + DECLARE vIsValid BOOL; SET vIsValid = vExtension IS NULL OR (vExtension REGEXP '^[0-9]{4}$' AND MOD(vExtension, 100) != 0); - IF NOT vIsValid - THEN + IF NOT vIsValid THEN SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'EXTENSION_INVALID_FORMAT'; + SET MESSAGE_TEXT = 'Extension format is invalid'; END IF; END ;; DELIMITER ; @@ -16382,70 +15852,30 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `phoneIsValid` */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `sip_setPassword` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `phoneIsValid`(vPhone VARCHAR(255)) +CREATE DEFINER=`root`@`%` PROCEDURE `sip_setPassword`( + vUser VARCHAR(255), + vPassword VARCHAR(255) +) BEGIN - DECLARE vIsValid BOOLEAN; - - SET vIsValid = vPhone IS NULL - OR (vPhone REGEXP '^[0-9]+$' - AND vPhone NOT REGEXP '^0+$' - AND vPhone NOT REGEXP '^0034'); - - IF NOT vIsValid - THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'PHONE_INVALID_FORMAT'; - END IF; + UPDATE sip SET + md5Secret = MD5(CONCAT(extension, ':asterisk:', vPassword)) + WHERE user_id = vUser; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -/*!50003 DROP PROCEDURE IF EXISTS `queueIsValid` */; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_general_ci ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `queueIsValid`(vQueue VARCHAR(255)) - DETERMINISTIC -BEGIN - DECLARE vIsValid BOOLEAN; - - SET vIsValid = vQueue IS NULL - OR vQueue REGEXP '^[1-9][0-9]00$'; - - IF NOT vIsValid - THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'QUEUE_INVALID_FORMAT'; - END IF; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `pbx` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- -- Current Database: `postgresql` @@ -16475,7 +15905,7 @@ CREATE TABLE `address` ( KEY `address_town_id_idx` (`town_id`), CONSTRAINT `address_ibfk_1` FOREIGN KEY (`address_type_id`) REFERENCES `address_type` (`address_type_id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `address_ibfk_2` FOREIGN KEY (`town_id`) REFERENCES `town` (`town_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=803 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=832 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16521,7 +15951,7 @@ CREATE TABLE `bank_account` ( CONSTRAINT `bank_account_bank_account_type_id_fkey` FOREIGN KEY (`bank_account_type_id`) REFERENCES `bank_account_type` (`bank_account_type_id`) ON UPDATE CASCADE, CONSTRAINT `bank_account_nation_id_fkey` FOREIGN KEY (`nation_id`) REFERENCES `nation` (`nation_id`) ON UPDATE CASCADE, CONSTRAINT `bank_profile` FOREIGN KEY (`client_id`) REFERENCES `profile` (`profile_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=801 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=832 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16576,7 +16006,7 @@ CREATE TABLE `business` ( KEY `bussiness_provider` (`provider_id`), CONSTRAINT `business_client` FOREIGN KEY (`client_id`) REFERENCES `profile` (`profile_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `bussiness_provider` FOREIGN KEY (`provider_id`) REFERENCES `profile` (`profile_id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2482 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2578 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16731,7 +16161,7 @@ CREATE TABLE `calendar_state` ( `rgb` varchar(7) NOT NULL, `color` bigint(20) DEFAULT '0', PRIMARY KEY (`calendar_state_id`) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16787,7 +16217,7 @@ CREATE TABLE `income_employee` ( KEY `fperson_id` (`person_id`), CONSTRAINT `fincometype_id` FOREIGN KEY (`id_incomeType`) REFERENCES `incometype_employee` (`id_incometype`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fperson_id` FOREIGN KEY (`person_id`) REFERENCES `person` (`person_id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=65116 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=67278 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16821,7 +16251,7 @@ CREATE TABLE `journey` ( PRIMARY KEY (`journey_id`), KEY `fki_business_journey` (`business_id`), CONSTRAINT `business_journey` FOREIGN KEY (`business_id`) REFERENCES `business_labour` (`business_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1505 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1707 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16857,7 +16287,7 @@ CREATE TABLE `media` ( PRIMARY KEY (`media_id`), KEY `media_media_type_id_idx` (`media_type_id`), CONSTRAINT `media_ibfk_1` FOREIGN KEY (`media_type_id`) REFERENCES `media_type` (`media_type_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=999 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1012 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16937,7 +16367,7 @@ CREATE TABLE `person` ( UNIQUE KEY `nis_UNIQUE` (`nis`), KEY `index1` (`person_id`,`name`,`nickname`,`firstname`), KEY `person_worker` (`id_trabajador`) -) ENGINE=InnoDB AUTO_INCREMENT=1034 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1073 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -16988,7 +16418,7 @@ CREATE TABLE `profile` ( KEY `profile_person_id_idx` (`person_id`), KEY `profile_profile_type_id_idx` (`profile_type_id`), CONSTRAINT `person_fk` FOREIGN KEY (`person_id`) REFERENCES `person` (`person_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=913 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=955 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17005,7 +16435,7 @@ CREATE TABLE `profile_address` ( PRIMARY KEY (`profile_address_id`), KEY `profile_address_address_id_idx` (`address_id`), KEY `profile_address_profile_id_idx` (`profile_id`) -) ENGINE=InnoDB AUTO_INCREMENT=140 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=168 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17024,7 +16454,7 @@ CREATE TABLE `profile_media` ( KEY `profile_media_profile_id_idx` (`profile_id`), CONSTRAINT `fk_profile_media_media1` FOREIGN KEY (`media_id`) REFERENCES `media` (`media_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `media_ibfk_20` FOREIGN KEY (`profile_id`) REFERENCES `profile` (`profile_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1151 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=1164 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17142,7 +16572,7 @@ CREATE TABLE `ACL` ( `principalType` set('ROLE','USER') COLLATE utf8_unicode_ci DEFAULT 'ROLE', `principalId` varchar(512) CHARACTER SET utf8 DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=174 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=181 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17262,7 +16692,7 @@ CREATE TABLE `userConfigView` ( `configuration` text COLLATE utf8_unicode_ci, PRIMARY KEY (`id`), UNIQUE KEY `uniqueUser_TableCode` (`userFk`,`tableCode`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17359,7 +16789,7 @@ CREATE TABLE `inbound` ( UNIQUE KEY `source` (`tableName`,`tableId`), KEY `warehouseFk` (`warehouseFk`,`itemFk`,`dated`,`expired`,`available`), KEY `isSync` (`isSync`) -) ENGINE=InnoDB AUTO_INCREMENT=93886 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=939241 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -17404,12 +16834,12 @@ DELIMITER ;; FOR EACH ROW BEGIN UPDATE outbound o - JOIN inboundOut ou ON ou.outboundFk = o.id + JOIN inboundPick ou ON ou.outboundFk = o.id SET o.lack = o.lack + ou.quantity, o.isSync = FALSE WHERE ou.inboundFk = OLD.id; - DELETE FROM inboundOut + DELETE FROM inboundPick WHERE inboundFk = OLD.id; CALL visible_log( @@ -17426,13 +16856,13 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; -- --- Table structure for table `inboundOut` +-- Table structure for table `inboundPick` -- -DROP TABLE IF EXISTS `inboundOut`; +DROP TABLE IF EXISTS `inboundPick`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `inboundOut` ( +CREATE TABLE `inboundPick` ( `inboundFk` int(10) unsigned DEFAULT NULL, `outboundFk` int(10) unsigned DEFAULT NULL, `quantity` int(11) NOT NULL, @@ -17455,21 +16885,7 @@ CREATE TABLE `log` ( `tableId` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `tableName` (`tableName`,`tableId`) -) ENGINE=InnoDB AUTO_INCREMENT=815885 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Table structure for table `logLock` --- - -DROP TABLE IF EXISTS `logLock`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `logLock` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `connectionId` int(10) unsigned DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=3462602 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -17497,7 +16913,7 @@ CREATE TABLE `outbound` ( KEY `warehouseFk` (`warehouseFk`,`itemFk`,`dated`), KEY `expired` (`expired`), KEY `isSync` (`isSync`) -) ENGINE=InnoDB AUTO_INCREMENT=309573 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=2224494 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -17543,12 +16959,12 @@ DELIMITER ;; FOR EACH ROW BEGIN UPDATE inbound i - JOIN inboundOut ou ON ou.inboundFk = i.id + JOIN inboundPick ou ON ou.inboundFk = i.id SET i.available = i.available + ou.quantity, i.isSync = FALSE WHERE ou.outboundFk = OLD.id; - DELETE FROM inboundOut + DELETE FROM inboundPick WHERE outboundFk = OLD.id; CALL visible_log( @@ -17583,7 +16999,25 @@ CREATE TABLE `visible` ( -- Dumping events for database 'stock' -- /*!50106 SET @save_time_zone= @@TIME_ZONE */ ; -/*!50106 DROP EVENT IF EXISTS `log_syncNoWait` */; +/*!50106 DROP EVENT IF EXISTS `log_clean` */; +DELIMITER ;; +/*!50003 SET @saved_cs_client = @@character_set_client */ ;; +/*!50003 SET @saved_cs_results = @@character_set_results */ ;; +/*!50003 SET @saved_col_connection = @@collation_connection */ ;; +/*!50003 SET character_set_client = utf8mb4 */ ;; +/*!50003 SET character_set_results = utf8mb4 */ ;; +/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; +/*!50003 SET @saved_time_zone = @@time_zone */ ;; +/*!50003 SET time_zone = 'SYSTEM' */ ;; +/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `log_clean` ON SCHEDULE EVERY 1 DAY STARTS '2019-06-17 05:00:00' ON COMPLETION PRESERVE ENABLE DO CALL log_clean */ ;; +/*!50003 SET time_zone = @saved_time_zone */ ;; +/*!50003 SET sql_mode = @saved_sql_mode */ ;; +/*!50003 SET character_set_client = @saved_cs_client */ ;; +/*!50003 SET character_set_results = @saved_cs_results */ ;; +/*!50003 SET collation_connection = @saved_col_connection */ ;; +/*!50106 DROP EVENT IF EXISTS `log_syncNoWait` */;; DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; /*!50003 SET @saved_cs_results = @@character_set_results */ ;; @@ -17607,8 +17041,7 @@ DELIMITER ; -- -- Dumping routines for database 'stock' -- -/*!50003 DROP PROCEDURE IF EXISTS `inboundOut_apply` */; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP PROCEDURE IF EXISTS `inbound_addPick` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -17618,32 +17051,58 @@ ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `inboundOut_apply`( - `vInboundFk` INT, - `vOutboundFk` INT, - `vQuantity` INT) -BEGIN -/** - * Deletes a row. - * - * @param vInboundFk The inbound identifier - * @param vOutboundFk The outbound identifier - * @param vQuantity The quantity to discount - */ - UPDATE inbound - SET available = available - vQuantity - WHERE id = vInboundFk; - - UPDATE outbound - SET lack = lack - vQuantity - WHERE id = vOutboundFk; +CREATE DEFINER=`root`@`%` PROCEDURE `inbound_addPick`( + vSelf INT, + vOutboundFk INT, + vQuantity INT +) +BEGIN + INSERT INTO inboundPick + SET + inboundFk = vSelf, + outboundFk = vOutboundFk, + quantity = vQuantity + ON DUPLICATE KEY UPDATE + quantity = quantity + vQuantity; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `inbound_removePick` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `inbound_removePick`( + vSelf INT, + vOutboundFk INT, + vQuantity INT, + vTotalQuantity INT +) +BEGIN + IF vQuantity < vTotalQuantity THEN + UPDATE inboundPick + SET quantity = quantity - vQuantity + WHERE inboundFk = vSelf + AND outboundFk = vOutboundFk; + ELSE + DELETE FROM inboundPick + WHERE inboundFk = vSelf + AND outboundFk = vOutboundFk; + END IF; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `stock` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 DROP PROCEDURE IF EXISTS `inbound_requestQuantity` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -17658,78 +17117,60 @@ CREATE DEFINER=`root`@`%` PROCEDURE `inbound_requestQuantity`( vSelf INT, vRequested INT, vDated DATETIME, - OUT vGranted INT) + OUT vSupplied INT) BEGIN /** - * Requests a quantity from an inbound to fulfill an outbound. - * If the demanded quantity exceeds the available, it also - * disassociates it's outbounds after the given date until the - * demanded quantity is satisfied or there is no more available. + * Disassociates inbound picks after the given date until the + * demanded quantity is satisfied. * * @param vSelf The inbound reference * @param vRequested The requested quantity * @param vDate The starting date for the associated outbounds - * @param vGranted The granted quantity + * @param vSupplied The supplied quantity */ - DECLARE vQuantity INT; - DECLARE vAvailable INT; DECLARE vOutboundFk INT; - DECLARE vLinkQuantity INT; - DECLARE vLinkGranted INT; + DECLARE vPickQuantity INT; + DECLARE vPickGranted INT; DECLARE vDone BOOL; - DECLARE cInboundOuts CURSOR FOR - SELECT ou.outboundFk, ou.quantity - FROM inboundOut ou - JOIN outbound o ON o.id = ou.outboundFk - WHERE ou.inboundFk = vSelf + DECLARE vPicks CURSOR FOR + SELECT p.outboundFk, p.quantity + FROM inboundPick p + JOIN outbound o ON o.id = p.outboundFk + WHERE p.inboundFk = vSelf AND o.dated > vDated ORDER BY o.dated DESC, o.created DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + SET vSupplied = 0; - SELECT quantity, available INTO vQuantity, vAvailable - FROM inbound - WHERE id = vSelf; + OPEN vPicks; - SET vGranted = LEAST(vRequested, vAvailable); + myLoop: LOOP + SET vDone = FALSE; + FETCH vPicks INTO vOutboundFk, vPickQuantity; - IF vGranted < vRequested AND vAvailable < vQuantity THEN - OPEN cInboundOuts; + IF vDone THEN + LEAVE myLoop; + END IF; - myLoop: LOOP - SET vDone = FALSE; - FETCH cInboundOuts INTO vOutboundFk, vLinkQuantity; + SET vPickGranted = LEAST(vRequested - vSupplied, vPickQuantity); + SET vSupplied = vSupplied + vPickGranted; + CALL inbound_removePick(vSelf, vOutboundFk, vPickGranted, vPickQuantity); + + UPDATE outbound + SET isSync = FALSE, + lack = lack + vPickGranted + WHERE id = vOutboundFk; - IF vDone THEN - LEAVE myLoop; - END IF; + IF vSupplied >= vRequested THEN + LEAVE myLoop; + END IF; + END LOOP; - SET vLinkGranted = LEAST(vRequested - vGranted, vLinkQuantity); - SET vGranted = vGranted + vLinkGranted; - - IF vLinkGranted < vLinkQuantity THEN - UPDATE inboundOut - SET quantity = quantity - vLinkGranted - WHERE outboundFk = vOutboundFk AND inboundFk = vSelf; - ELSE - DELETE FROM inboundOut - WHERE outboundFk = vOutboundFk AND inboundFk = vSelf; - END IF; - - UPDATE outbound SET isSync = FALSE - WHERE id = vOutboundFk; - - CALL inboundOut_apply(vOutboundFk, vSelf, -vLinkGranted); - - IF vGranted >= vRequested THEN - LEAVE myLoop; - END IF; - END LOOP; - - CLOSE cInboundOuts; - END IF; + CLOSE vPicks; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -17755,16 +17196,19 @@ BEGIN */ DECLARE vDated DATETIME; DECLARE vExpired DATETIME; - DECLARE vItem INT; + DECLARE vItem INT; DECLARE vWarehouse INT; DECLARE vQuantity INT; DECLARE vAvailable INT; + DECLARE vSupplied INT; + DECLARE vSuppliedFromRequest INT; DECLARE vOutboundFk INT; - DECLARE vGranted INT; + DECLARE vLack INT; + DECLARE vHasPicks BOOL; DECLARE vDone BOOL; - DECLARE cOutbound CURSOR FOR - SELECT id + DECLARE vOutbounds CURSOR FOR + SELECT id, lack, lack < quantity FROM outbound WHERE warehouseFk = vWarehouse AND itemFk = vItem @@ -17782,34 +17226,35 @@ BEGIN IF vAvailable IS NULL THEN SET vAvailable = vQuantity; - UPDATE inbound SET available = vQuantity - WHERE id = vSelf; END IF; - OPEN cOutbound; + OPEN vOutbounds; myLoop: LOOP SET vDone = FALSE; - FETCH cOutbound INTO vOutboundFk; + FETCH vOutbounds INTO vOutboundFk, vLack, vHasPicks; IF vDone THEN LEAVE myLoop; END IF; - CALL outbound_requestQuantity(vOutboundFk, vAvailable, vDated, vGranted); + SET vSupplied = LEAST(vAvailable, vLack); - IF vGranted > 0 THEN - SET vAvailable = vAvailable - vGranted; + IF vSupplied > 0 THEN + SET vAvailable = vAvailable - vSupplied; + UPDATE outbound + SET lack = lack - vSupplied + WHERE id = vOutboundFk; + END IF; - INSERT INTO inboundOut - SET - inboundFk = vSelf, - outboundFk = vOutboundFk, - quantity = vGranted - ON DUPLICATE KEY UPDATE - quantity = quantity + vGranted; - - CALL inboundOut_apply(vSelf, vOutboundFk, vGranted); + IF vHasPicks AND vAvailable > 0 THEN + CALL outbound_requestQuantity(vOutboundFk, vAvailable, vDated, vSuppliedFromRequest); + SET vSupplied = vSupplied + vSuppliedFromRequest; + SET vAvailable = vAvailable - vSuppliedFromRequest; + END IF; + + IF vSupplied > 0 THEN + CALL inbound_addPick(vSelf, vOutboundFk, vSupplied); END IF; IF vAvailable <= 0 THEN @@ -17817,9 +17262,11 @@ BEGIN END IF; END LOOP; - CLOSE cOutbound; + CLOSE vOutbounds; - UPDATE inbound SET isSync = TRUE + UPDATE inbound + SET isSync = TRUE, + available = vAvailable WHERE id = vSelf; END ;; DELIMITER ; @@ -17865,6 +17312,26 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `log_clean` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `log_clean`() +BEGIN + DELETE FROM inbound WHERE dated = vn.getInventoryDate(); + DELETE FROM outbound WHERE dated = vn.getInventoryDate(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `log_delete` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -17925,7 +17392,7 @@ BEGIN TRUNCATE TABLE stock.`log`; TRUNCATE TABLE stock.`inbound`; - TRUNCATE TABLE stock.`inboundOut`; + TRUNCATE TABLE stock.`inboundPick`; TRUNCATE TABLE stock.`outbound`; TRUNCATE TABLE stock.`visible`; @@ -18182,6 +17649,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `log_sync`(vSync BOOL) proc: BEGIN DECLARE vDone BOOL; DECLARE vLogId INT; + DECLARE vHasPendingSync BOOL; DECLARE vOperation VARCHAR(255); DECLARE vTableName VARCHAR(255); DECLARE vTableId VARCHAR(255); @@ -18241,8 +17709,8 @@ proc: BEGIN COMMIT; END LOOP; - - IF !vSync THEN + + IF !vSync THEN LEAVE proc; END IF; @@ -18252,41 +17720,51 @@ proc: BEGIN -- Attaches desync inbounds - OPEN cInbound; + REPEAT + OPEN cInbound; + SET vHasPendingSync = FALSE; - inboundLoop: LOOP - SET vDone = FALSE; - FETCH cInbound INTO vInboundFk; + inboundLoop: LOOP + SET vDone = FALSE; + FETCH cInbound INTO vInboundFk; - IF vDone THEN - LEAVE inboundLoop; - END IF; + IF vDone THEN + LEAVE inboundLoop; + END IF; - START TRANSACTION; - CALL inbound_sync(vInboundFk); - COMMIT; - END LOOP; + START TRANSACTION; + CALL inbound_sync(vInboundFk); + COMMIT; - CLOSE cInbound; + SET vHasPendingSync = TRUE; + END LOOP; + + CLOSE cInbound; + UNTIL !vHasPendingSync END REPEAT; -- Attaches desync outbounds - OPEN cOutbound; + REPEAT + OPEN cOutbound; + SET vHasPendingSync = FALSE; - outboundLoop: LOOP - SET vDone = FALSE; - FETCH cOutbound INTO vOutboundFk; + outboundLoop: LOOP + SET vDone = FALSE; + FETCH cOutbound INTO vOutboundFk; - IF vDone THEN - LEAVE outboundLoop; - END IF; + IF vDone THEN + LEAVE outboundLoop; + END IF; - START TRANSACTION; - CALL outbound_sync(vOutboundFk); - COMMIT; - END LOOP; + START TRANSACTION; + CALL outbound_sync(vOutboundFk); + COMMIT; - CLOSE cOutbound; + SET vHasPendingSync = TRUE; + END LOOP; + + CLOSE cOutbound; + UNTIL !vHasPendingSync END REPEAT; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -18336,78 +17814,60 @@ CREATE DEFINER=`root`@`%` PROCEDURE `outbound_requestQuantity`( vSelf INT, vRequested INT, vDated DATETIME, - OUT vGranted INT) + OUT vSupplied INT) BEGIN /** - * Requests a quantity from an outbound to fulfill an inbound. - * If the demanded quantity exceeds the lack, it also - * disassociates it's inbounds after the given date until the - * demanded quantity is satisfied or there is no more lack. + * Disassociates outbound picks after the given date until the + * demanded quantity is satisfied. * * @param vSelf The outbound reference * @param vRequested The requested quantity * @param vDate The starting date for the associated inbounds - * @param vGranted The granted quantity + * @param vSupplied The supplied quantity */ - DECLARE vQuantity INT; - DECLARE vLack INT; DECLARE vInboundFk INT; - DECLARE vLinkQuantity INT; - DECLARE vLinkGranted INT; + DECLARE vPickQuantity INT; + DECLARE vPickGranted INT; DECLARE vDone BOOL; - DECLARE cOutboundIns CURSOR FOR - SELECT ou.inboundFk, ou.quantity - FROM inboundOut ou - JOIN inbound i ON i.id = ou.inboundFk - WHERE ou.outboundFk = vSelf + DECLARE vPicks CURSOR FOR + SELECT p.inboundFk, p.quantity + FROM inboundPick p + JOIN inbound i ON i.id = p.inboundFk + WHERE p.outboundFk = vSelf AND i.dated > vDated ORDER BY i.dated DESC; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - SELECT quantity, lack INTO vQuantity, vLack - FROM outbound - WHERE id = vSelf; + SET vSupplied = 0; - SET vGranted = LEAST(vRequested, vLack); + OPEN vPicks; - IF vLack < vQuantity AND vGranted < vRequested THEN - OPEN cOutboundIns; + myLoop: LOOP + SET vDone = FALSE; + FETCH vPicks INTO vInboundFk, vPickQuantity; - myLoop: LOOP - SET vDone = FALSE; - FETCH cOutboundIns INTO vInboundFk, vLinkQuantity; + IF vDone THEN + LEAVE myLoop; + END IF; - IF vDone THEN - LEAVE myLoop; - END IF; + SET vPickGranted = LEAST(vRequested - vSupplied, vPickQuantity); + SET vSupplied = vSupplied + vPickGranted; + CALL inbound_removePick(vInboundFk, vSelf, vPickGranted, vPickQuantity); + + UPDATE inbound + SET isSync = FALSE, + available = available + vPickGranted + WHERE id = vInboundFk; - SET vLinkGranted = LEAST(vRequested - vGranted, vLinkQuantity); - SET vGranted = vGranted + vLinkGranted; + IF vSupplied >= vRequested THEN + LEAVE myLoop; + END IF; + END LOOP; - IF vLinkGranted < vLinkQuantity THEN - UPDATE inboundOut - SET quantity = quantity - vLinkGranted - WHERE inboundFk = vInboundFk AND outboundFk = vSelf; - ELSE - DELETE FROM inboundOut - WHERE inboundFk = vInboundFk AND outboundFk = vSelf; - END IF; - - UPDATE inbound SET isSync = FALSE - WHERE id = vInboundFk; - - CALL inboundOut_apply(vInboundFk, vSelf, -vLinkGranted); - - IF vGranted >= vRequested THEN - LEAVE myLoop; - END IF; - END LOOP; - - CLOSE cOutboundIns; - END IF; + CLOSE vPicks; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -18435,13 +17895,15 @@ BEGIN DECLARE vItem INT; DECLARE vWarehouse INT; DECLARE vLack INT; + DECLARE vSupplied INT; + DECLARE vSuppliedFromRequest INT; DECLARE vInboundFk INT; DECLARE vAvailable INT; - DECLARE vGranted INT; + DECLARE vHasPicks BOOL; DECLARE vDone BOOL; - DECLARE cInbound CURSOR FOR - SELECT id, available + DECLARE vInbounds CURSOR FOR + SELECT id, available, available < quantity FROM inbound WHERE warehouseFk = vWarehouse AND itemFk = vItem @@ -18457,30 +17919,33 @@ BEGIN FROM outbound WHERE id = vSelf; - OPEN cInbound; + OPEN vInbounds; myLoop: LOOP SET vDone = FALSE; - FETCH cInbound INTO vInboundFk, vAvailable; + FETCH vInbounds INTO vInboundFk, vAvailable, vHasPicks; IF vDone THEN LEAVE myLoop; END IF; - CALL inbound_requestQuantity(vInboundFk, vLack, vDated, vGranted); - - IF vGranted > 0 THEN - SET vLack = vLack - vGranted; + SET vSupplied = LEAST(vLack, vAvailable); - INSERT INTO inboundOut - SET - inboundFk = vInboundFk, - outboundFk = vSelf, - quantity = vGranted - ON DUPLICATE KEY UPDATE - quantity = quantity + vGranted; + IF vSupplied > 0 THEN + SET vLack = vLack - vSupplied; + UPDATE inbound + SET available = available - vSupplied + WHERE id = vInboundFk; + END IF; - CALL inboundOut_apply(vInboundFk, vSelf, vGranted); + IF vHasPicks AND vLack > 0 THEN + CALL inbound_requestQuantity(vInboundFk, vLack, vDated, vSuppliedFromRequest); + SET vSupplied = vSupplied + vSuppliedFromRequest; + SET vLack = vLack - vSuppliedFromRequest; + END IF; + + IF vSupplied > 0 THEN + CALL inbound_addPick(vInboundFk, vSelf, vSupplied); END IF; IF vLack = 0 THEN @@ -18488,9 +17953,11 @@ BEGIN END IF; END LOOP; - CLOSE cInbound; + CLOSE vInbounds; - UPDATE outbound SET isSync = TRUE + UPDATE outbound + SET isSync = TRUE, + lack = vLack WHERE id = vSelf; END ;; DELIMITER ; @@ -19415,24 +18882,6 @@ SET character_set_client = utf8; 1 AS `labelZone`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `agencyHour` --- - -DROP TABLE IF EXISTS `agencyHour`; -/*!50001 DROP VIEW IF EXISTS `agencyHour`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `agencyHour` AS SELECT - 1 AS `id`, - 1 AS `agencyFk`, - 1 AS `weekDay`, - 1 AS `warehouseFk`, - 1 AS `provinceFk`, - 1 AS `substractDay`, - 1 AS `maxHour`*/; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `agencyMode` -- @@ -19506,23 +18955,6 @@ SET character_set_client = utf8; 1 AS `agencyType`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `agencyWeekDayBonus` --- - -DROP TABLE IF EXISTS `agencyWeekDayBonus`; -/*!50001 DROP VIEW IF EXISTS `agencyWeekDayBonus`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `agencyWeekDayBonus` AS SELECT - 1 AS `id`, - 1 AS `warehouseFk`, - 1 AS `agencyFk`, - 1 AS `weekDay`, - 1 AS `zone`, - 1 AS `bonus`*/; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `alertLevel` -- @@ -19603,7 +19035,7 @@ CREATE TABLE `autoRadioLogCall` ( PRIMARY KEY (`id`), KEY `ticket_idx` (`ticketFk`), CONSTRAINT `ticket` FOREIGN KEY (`ticketFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=767 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=882 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -19797,7 +19229,7 @@ CREATE TABLE `buy` ( CONSTRAINT `buy_ibfk_2` FOREIGN KEY (`packageFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON UPDATE CASCADE, CONSTRAINT `buy_ibfk_3` FOREIGN KEY (`containerFk`) REFERENCES `vn2008`.`container` (`container_id`) ON UPDATE CASCADE, CONSTRAINT `buy_id` FOREIGN KEY (`entryFk`) REFERENCES `entry` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=310628069 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=318055113 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -19821,17 +19253,17 @@ trig: BEGIN LEAVE trig; END IF; - CALL vn.buy_checkGrouping(NEW.`grouping`); + CALL buy_checkGrouping(NEW.`grouping`); SELECT t.warehouseInFk, t.landed INTO vWarehouse, vLanding - FROM vn.entry e - JOIN vn.travel t ON t.id = e.travelFk + FROM entry e + JOIN travel t ON t.id = e.travelFk WHERE e.id = NEW.entryFk; SELECT b.`grouping`, b.groupingMode INTO vGrouping, vGroupingMode - FROM vn.buy b - JOIN vn.entry e ON e.id = b.entryFk - JOIN vn.travel t ON t.id = e.travelFk + FROM buy b + JOIN entry e ON e.id = b.entryFk + JOIN travel t ON t.id = e.travelFk WHERE t.landed <= vLanding AND b.itemFk = NEW.itemFk AND !b.isIgnored @@ -19870,7 +19302,7 @@ trig: BEGIN LEAVE trig; END IF; - CALL vn.buy_afterUpsert(NEW.id); + CALL buy_afterUpsert(NEW.id); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -19891,7 +19323,7 @@ DELIMITER ;; FOR EACH ROW BEGIN IF !(NEW.`grouping` <=> OLD.`grouping`) THEN - CALL vn.buy_checkGrouping(NEW.`grouping`); + CALL buy_checkGrouping(NEW.`grouping`); END IF; END */;; DELIMITER ; @@ -19924,11 +19356,11 @@ trig: BEGIN LEAVE trig; END IF; - CALL vn.buy_afterUpsert(NEW.id); + CALL buy_afterUpsert(NEW.id); IF !(NEW.weight <=> OLD.weight) THEN - UPDATE vn.item - SET density = (NEW.weight * NEW.packing) / (vn2008.cm3_2(NEW.packageFk, NEW.itemFk) / 1000) + UPDATE item + SET density = (NEW.weight * NEW.packing) / (item_getVolume(NEW.itemFk, NEW.packageFk) / 1000) WHERE id = NEW.itemFk; END IF; END */;; @@ -20361,7 +19793,7 @@ CREATE TABLE `clientContact` ( `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4129 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4132 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -20435,7 +19867,7 @@ CREATE TABLE `clientLog` ( KEY `userFk` (`userFk`), CONSTRAINT `clientLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `clientLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=210640 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=216298 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -20746,7 +20178,8 @@ SET character_set_client = utf8; 1 AS `code`, 1 AS `currencyFk`, 1 AS `politicalCountryFk`, - 1 AS `geoFk`*/; + 1 AS `geoFk`, + 1 AS `hasDailyInvoice`*/; SET character_set_client = @saved_cs_client; -- @@ -20891,7 +20324,7 @@ CREATE TABLE `creditClassification` ( KEY `creditClassifClientFk_idx` (`client`), KEY `creditClassifdateEnd_idx` (`dateEnd`), CONSTRAINT `creditClassifClientFk` FOREIGN KEY (`client`) REFERENCES `vn2008`.`Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3134 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3162 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -20936,7 +20369,7 @@ CREATE TABLE `creditInsurance` ( PRIMARY KEY (`id`), KEY `CreditInsurance_Fk1_idx` (`creditClassification`), CONSTRAINT `CreditInsurance_Fk1` FOREIGN KEY (`creditClassification`) REFERENCES `creditClassification` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2700 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito'; +) ENGINE=InnoDB AUTO_INCREMENT=2766 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalla los clientes que tienen seguro de credito'; /*!40101 SET character_set_client = @saved_cs_client */; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -21034,7 +20467,6 @@ SET character_set_client = utf8; /*!50001 CREATE VIEW `department` AS SELECT 1 AS `id`, 1 AS `name`, - 1 AS `fatherFk`, 1 AS `isProduction`, 1 AS `lft`, 1 AS `rgt`, @@ -21056,6 +20488,24 @@ SET character_set_client = utf8; 1 AS `dep`*/; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `device` +-- + +DROP TABLE IF EXISTS `device`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `device` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `sn` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `model` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `userFk` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `device_fk1_idx` (`userFk`), + CONSTRAINT `device_fk1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION +) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Temporary table structure for view `dms` -- @@ -21141,7 +20591,7 @@ CREATE TABLE `dua` ( CONSTRAINT `dua_fk1` FOREIGN KEY (`gestdocFk`) REFERENCES `vn2008`.`gestdoc` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `dua_fk2` FOREIGN KEY (`awbFk`) REFERENCES `vn2008`.`awb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `dua_fk4` FOREIGN KEY (`companyFk`) REFERENCES `vn2008`.`empresa` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3881 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3957 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -21182,7 +20632,7 @@ CREATE TABLE `duaIntrastat` ( KEY `duaIntrastat_fk2_idx` (`duaFk`), CONSTRAINT `duaIntrastat_fk1` FOREIGN KEY (`intrastatFk`) REFERENCES `vn2008`.`Intrastat` (`Codintrastat`) ON UPDATE CASCADE, CONSTRAINT `duaIntrastat_fk2` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=6094 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6284 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -21202,7 +20652,7 @@ CREATE TABLE `duaInvoiceIn` ( KEY `duaInvoiceIn_fk2_idx` (`invoiceInFk`), CONSTRAINT `duaInvoiceIn_fk1` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `duaInvoiceIn_fk2` FOREIGN KEY (`invoiceInFk`) REFERENCES `vn2008`.`recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=4778 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Facturas asociadas a la declaración aduanera, básicamente la del agente transitario'; +) ENGINE=InnoDB AUTO_INCREMENT=4869 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Facturas asociadas a la declaración aduanera, básicamente la del agente transitario'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -21227,7 +20677,7 @@ CREATE TABLE `duaTax` ( CONSTRAINT `duaTax_fk1` FOREIGN KEY (`duaFk`) REFERENCES `dua` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `duaTax_fk2` FOREIGN KEY (`supplierFk`) REFERENCES `vn2008`.`Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, CONSTRAINT `duaTax_fk3` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=5415 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6164 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -21317,7 +20767,7 @@ CREATE TABLE `entry` ( CONSTRAINT `entry_ibfk_1` FOREIGN KEY (`supplierFk`) REFERENCES `vn2008`.`Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, CONSTRAINT `entry_ibfk_6` FOREIGN KEY (`travelFk`) REFERENCES `travel` (`id`) ON UPDATE CASCADE, CONSTRAINT `entry_ibfk_7` FOREIGN KEY (`companyFk`) REFERENCES `vn2008`.`empresa` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=168562 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='InnoDB free: 88064 kB; (`Id_Proveedor`) REFER `vn2008/Provee'; +) ENGINE=InnoDB AUTO_INCREMENT=171228 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='InnoDB free: 88064 kB; (`Id_Proveedor`) REFER `vn2008/Provee'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -21332,8 +20782,8 @@ DELIMITER ;; BEFORE INSERT ON `entry` FOR EACH ROW BEGIN - SET NEW.currencyFk = vn.entry_getCurrency(NEW.currencyFk, NEW.supplierFk); - SET NEW.commission = vn.entry_calcCommission(NEW.commission, NEW.travelFk, NEW.currencyFk); + SET NEW.currencyFk = entry_getCurrency(NEW.currencyFk, NEW.supplierFk); + SET NEW.commission = entry_calcCommission(NEW.commission, NEW.travelFk, NEW.currencyFk); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -21353,7 +20803,7 @@ DELIMITER ;; AFTER INSERT ON `entry` FOR EACH ROW BEGIN - CALL vn.travel_requestRecalc(NEW.travelFk); + CALL travel_requestRecalc(NEW.travelFk); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -21374,6 +20824,7 @@ DELIMITER ;; FOR EACH ROW BEGIN DECLARE vIsClone BOOL; + DECLARE vPrintedCount INT; DECLARE vHasDistinctWarehouses BOOL; IF !(NEW.travelFk <=> OLD.travelFk) THEN @@ -21383,29 +20834,41 @@ BEGIN SELECT !(o.warehouseInFk <=> n.warehouseInFk) OR !(o.warehouseOutFk <=> n.warehouseOutFk) INTO vHasDistinctWarehouses - FROM vn.travel o, vn.travel n + FROM travel o, travel n WHERE o.id = OLD.travelFk AND n.id = NEW.travelFk; IF vIsClone AND vHasDistinctWarehouses THEN SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'A cloned entry cannot be moved to travel with different warehouses'; + SET MESSAGE_TEXT = 'A cloned entry cannot be moved to a travel with different warehouses'; END IF; + + IF NEW.travelFk IS NULL THEN + SELECT COUNT(*) INTO vPrintedCount + FROM buy + WHERE entryFk = OLD.id + AND printedStickers > 0; + + IF vPrintedCount > 0 THEN + SIGNAL SQLSTATE '45000' + SET MESSAGE_TEXT = 'An entry that contains lines with printed labels cannot be deleted'; + END IF; + END IF; END IF; IF !(NEW.supplierFk <=> OLD.supplierFk) THEN - SET NEW.currencyFk = vn.entry_getCurrency(NEW.currencyFk, NEW.supplierFk); + SET NEW.currencyFk = entry_getCurrency(NEW.currencyFk, NEW.supplierFk); END IF; IF !(NEW.travelFk <=> OLD.travelFk) OR !(NEW.currencyFk <=> OLD.currencyFk) THEN - SET NEW.commission = vn.entry_calcCommission(NEW.commission, NEW.travelFk, NEW.currencyFk); + SET NEW.commission = entry_calcCommission(NEW.commission, NEW.travelFk, NEW.currencyFk); END IF; IF !(ABS(NEW.isBooked) <=> ABS(OLD.isBooked)) THEN INSERT INTO vn2008.Entradas_dits SET idaccion_dits = 105, - Id_Trabajador = vn.getWorker(), + Id_Trabajador = myWorker_getId(), Id_Ticket = NEW.id, value_old = OLD.isBooked, value_new = NEW.isBooked; @@ -21436,8 +20899,8 @@ BEGIN END IF; IF !(NEW.travelFk <=> OLD.travelFk) THEN - CALL vn.travel_requestRecalc(OLD.travelFk); - CALL vn.travel_requestRecalc(NEW.travelFk); + CALL travel_requestRecalc(OLD.travelFk); + CALL travel_requestRecalc(NEW.travelFk); END IF; END */;; DELIMITER ; @@ -21458,7 +20921,7 @@ DELIMITER ;; BEFORE DELETE ON `entry` FOR EACH ROW BEGIN - DELETE FROM vn.buy WHERE entryFk = OLD.id; + DELETE FROM buy WHERE entryFk = OLD.id; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -21478,7 +20941,7 @@ DELIMITER ;; AFTER DELETE ON `entry` FOR EACH ROW BEGIN - CALL vn.travel_requestRecalc(OLD.travelFk); + CALL travel_requestRecalc(OLD.travelFk); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -21505,7 +20968,7 @@ CREATE TABLE `entryLog` ( KEY `entryLog_ibfk_2` (`userFk`), CONSTRAINT `entryLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `entryLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=138499 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=146048 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -21539,7 +21002,7 @@ CREATE TABLE `envialiaCity` ( PRIMARY KEY (`id`), KEY `agencyFk` (`agencyFk`), KEY `postalCode` (`postalCode`) -) ENGINE=InnoDB AUTO_INCREMENT=1181470 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1262208 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22006,7 +21469,7 @@ CREATE TABLE `inventoryFailure` ( CONSTRAINT `inventoryFailure_fk3` FOREIGN KEY (`guiltyFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `inventoryFailure_fk4` FOREIGN KEY (`warehouseFk`) REFERENCES `vn2008`.`warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `inventoryFailure_fk5` FOREIGN KEY (`causeFk`) REFERENCES `inventoryFailureCause` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=12076 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=14101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22277,7 +21740,7 @@ CREATE TABLE `invoiceOutExpence` ( KEY `invoiceOutExpence_FK_2_idx` (`expenceFk`), CONSTRAINT `invoiceOutExpence_FK_1` FOREIGN KEY (`invoiceOutFk`) REFERENCES `vn2008`.`Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceOutExpence_FK_2` FOREIGN KEY (`expenceFk`) REFERENCES `vn2008`.`Gastos` (`Id_Gasto`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=110782 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta'; +) ENGINE=InnoDB AUTO_INCREMENT=118821 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Desglosa la base imponible de una factura en funcion del tipo de gasto/venta'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22320,7 +21783,7 @@ CREATE TABLE `invoiceOutTax` ( KEY `pgcFk` (`pgcFk`), CONSTRAINT `invoiceOutFk` FOREIGN KEY (`invoiceOutFk`) REFERENCES `vn2008`.`Facturas` (`factura_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `invoiceOutTax_ibfk_1` FOREIGN KEY (`pgcFk`) REFERENCES `pgc` (`code`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1086280 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1116271 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22518,7 +21981,7 @@ CREATE TABLE `itemLog` ( KEY `itemLogUserFk_idx` (`userFk`), CONSTRAINT `itemLogItemFk` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemLogUserFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=21263 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=34370 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22561,7 +22024,7 @@ CREATE TABLE `itemPlacementSupply` ( CONSTRAINT `itemPlacementSupply_fk1` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemPlacementSupply_fk2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemPlacementSupply_fk3` FOREIGN KEY (`repoUserFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=22427 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de nichos de picking que hay que reponer'; +) ENGINE=InnoDB AUTO_INCREMENT=31725 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de nichos de picking que hay que reponer'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22633,7 +22096,7 @@ CREATE TABLE `itemShelving` ( CONSTRAINT `itemShelving_fk1` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelving_fk2` FOREIGN KEY (`shelvingFk`) REFERENCES `shelving` (`code`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelving_fk3` FOREIGN KEY (`packagingFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=87224 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla utilizada para localizar los artículos dentro de los carros. Usado para la gestión del almacén en el altillo '; +) ENGINE=InnoDB AUTO_INCREMENT=96226 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla utilizada para localizar los artículos dentro de los carros. Usado para la gestión del almacén en el altillo '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22663,7 +22126,8 @@ SET character_set_client = utf8; 1 AS `Agency`, 1 AS `shipped`, 1 AS `grouping`, - 1 AS `packing`*/; + 1 AS `packing`, + 1 AS `hour`*/; SET character_set_client = @saved_cs_client; -- @@ -22737,7 +22201,7 @@ CREATE TABLE `itemShelvingPlacementSupply` ( KEY `itemShelvingPlacementSupply_fk3_idx` (`userFk`), CONSTRAINT `itemShelvingPlacementSupply_fk1` FOREIGN KEY (`itemShelvingFk`) REFERENCES `itemShelving` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelvingPlacementSupply_fk2` FOREIGN KEY (`itemPlacementSupplyFk`) REFERENCES `itemPlacementSupply` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=20211 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de los itemShelving afectados por las ordenes de reposicion de nicho'; +) ENGINE=InnoDB AUTO_INCREMENT=29031 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de los itemShelving afectados por las ordenes de reposicion de nicho'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22784,7 +22248,7 @@ CREATE TABLE `itemShelvingSale` ( CONSTRAINT `itemShelvingSale_fk1` FOREIGN KEY (`itemShelvingFk`) REFERENCES `itemShelving` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `itemShelvingSale_fk2` FOREIGN KEY (`saleFk`) REFERENCES `vn2008`.`Movimientos` (`Id_Movimiento`) ON UPDATE CASCADE, CONSTRAINT `itemShelvingSale_fk3` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=7854 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle del producto que se retira de los carros, relacionando la linea de movimiento correspondiente'; +) ENGINE=InnoDB AUTO_INCREMENT=12123 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle del producto que se retira de los carros, relacionando la linea de movimiento correspondiente'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -22861,31 +22325,31 @@ CREATE TABLE `itemTag` ( `itemFk` int(11) NOT NULL, `tagFk` int(11) NOT NULL, `value` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `intValue` int(11) DEFAULT NULL, `priority` int(2) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), - UNIQUE KEY `itemFk` (`itemFk`,`tagFk`), + UNIQUE KEY `itemFk` (`itemFk`,`tagFk`,`value`) USING BTREE, KEY `tagFk` (`tagFk`,`value`), KEY `priorityItem` (`priority`,`itemFk`), KEY `value` (`value`), - CONSTRAINT `itemFK` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1185538 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `itemFk_2` (`itemFk`,`tagFk`,`intValue`), + CONSTRAINT `itemFK` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `itemTag_ibfk_1` FOREIGN KEY (`tagFk`) REFERENCES `tag` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=1224754 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_AFTER_INSERT` AFTER INSERT ON `itemTag` FOR EACH ROW -proc_label:BEGIN - IF @isTriggerDisabled THEN - LEAVE proc_label; - END IF; - - CALL vn.itemRefreshTags(NEW.itemFk); +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_beforeInsert` + BEFORE INSERT ON `itemTag` FOR EACH ROW +BEGIN + SET NEW.intValue = itemTag_getIntValue(NEW.`value`); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -22895,16 +22359,39 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_AFTER_UPDATE` AFTER UPDATE ON `itemTag` FOR EACH ROW -proc_label:BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_beforeUpdate` + BEFORE UPDATE ON `itemTag` FOR EACH ROW +BEGIN + IF !(OLD.`value` <=> NEW.`value`) + OR !(OLD.intValue <=> NEW.intValue) THEN + SET NEW.intValue = itemTag_getIntValue(NEW.`value`); + END IF; +END */;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_afterUpdate` + AFTER UPDATE ON `itemTag` FOR EACH ROW +trig: BEGIN IF @isTriggerDisabled THEN - LEAVE proc_label; + LEAVE trig; END IF; CALL vn.itemRefreshTags(NEW.itemFk); @@ -22917,16 +22404,17 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_AFTER_DELETE` AFTER DELETE ON `itemTag` FOR EACH ROW -proc_label:BEGIN +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn`.`itemTag_afterDelete` + AFTER DELETE ON `itemTag` FOR EACH ROW +trig: BEGIN IF @isTriggerDisabled THEN - LEAVE proc_label; + LEAVE trig; END IF; CALL vn.itemRefreshTags(OLD.itemFk); @@ -22970,7 +22458,7 @@ CREATE TABLE `itemTaxCountry` ( CONSTRAINT `countryFK_paises` FOREIGN KEY (`countryFk`) REFERENCES `vn2008`.`Paises` (`Id`) ON UPDATE CASCADE, CONSTRAINT `itemFK_Article` FOREIGN KEY (`itemFk`) REFERENCES `vn2008`.`Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `taxClassFK_Iva_Group` FOREIGN KEY (`taxClassFk`) REFERENCES `vn2008`.`iva_group` (`iva_group_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=724023 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la clase de iva por artículo y pais'; +) ENGINE=InnoDB AUTO_INCREMENT=756072 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Define la clase de iva por artículo y pais'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23215,7 +22703,7 @@ CREATE TABLE `medicalCenter` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23240,7 +22728,7 @@ CREATE TABLE `medicalReview` ( KEY `frgnkWorker_idx` (`workerFk`), CONSTRAINT `frgcenter` FOREIGN KEY (`centerFk`) REFERENCES `medicalCenter` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frgnkWorker` FOREIGN KEY (`workerFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=220 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=256 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23261,7 +22749,7 @@ CREATE TABLE `message` ( KEY `sender` (`sender`), KEY `recipient` (`recipient`), KEY `uuid` (`uuid`(8)) -) ENGINE=InnoDB AUTO_INCREMENT=1858257 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1892900 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23283,7 +22771,7 @@ CREATE TABLE `messageInbox` ( PRIMARY KEY (`id`), KEY `uuid` (`uuid`(8)), KEY `finalRecipient` (`finalRecipient`) -) ENGINE=InnoDB AUTO_INCREMENT=2025740 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2061517 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -23517,7 +23005,7 @@ CREATE TABLE `parking` ( UNIQUE KEY `code_UNIQUE` (`code`), KEY `parking_fk1_idx` (`sectorFk`), CONSTRAINT `parking_fk1` FOREIGN KEY (`sectorFk`) REFERENCES `sector` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=25543 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla con los parkings del altillo'; +) ENGINE=InnoDB AUTO_INCREMENT=25391 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Tabla con los parkings del altillo'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -23769,7 +23257,7 @@ DROP TABLE IF EXISTS `postCode`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `postCode` ( - `code` char(5) COLLATE utf8_unicode_ci NOT NULL, + `code` char(10) COLLATE utf8_unicode_ci NOT NULL, `townFk` int(11) NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`code`,`townFk`), @@ -23792,20 +23280,6 @@ SET character_set_client = utf8; 1 AS `percentage`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `preparationPercentage` --- - -DROP TABLE IF EXISTS `preparationPercentage`; -/*!50001 DROP VIEW IF EXISTS `preparationPercentage`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `preparationPercentage` AS SELECT - 1 AS `weekDay`, - 1 AS `warehouseFk`, - 1 AS `percentage`*/; -SET character_set_client = @saved_cs_client; - -- -- Table structure for table `priceBuilder` -- @@ -23997,6 +23471,22 @@ SET character_set_client = utf8; 1 AS `isVisible`*/; SET character_set_client = @saved_cs_client; +-- +-- Table structure for table `professionalCategory` +-- + +DROP TABLE IF EXISTS `professionalCategory`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `professionalCategory` ( + `id` int(11) NOT NULL, + `description` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, + `salary` decimal(10,2) DEFAULT NULL, + `salaryorSeniority` decimal(10,2) DEFAULT NULL, + `year` int(2) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Table structure for table `profile` -- @@ -24061,6 +23551,41 @@ SET character_set_client = utf8; 1 AS `geoFk`*/; SET character_set_client = @saved_cs_client; +-- +-- Temporary table structure for view `rate` +-- + +DROP TABLE IF EXISTS `rate`; +/*!50001 DROP VIEW IF EXISTS `rate`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `rate` AS SELECT + 1 AS `id`, + 1 AS `dated`, + 1 AS `warehouseFk`, + 1 AS `rate0`, + 1 AS `rate1`, + 1 AS `rate2`, + 1 AS `rate3`*/; +SET character_set_client = @saved_cs_client; + +-- +-- Table structure for table `rateConfig` +-- + +DROP TABLE IF EXISTS `rateConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `rateConfig` ( + `id` int(11) NOT NULL, + `rate0` int(11) DEFAULT NULL, + `rate1` int(11) DEFAULT NULL, + `rate2` int(11) DEFAULT NULL, + `rate3` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Temporary table structure for view `receipt` -- @@ -24180,7 +23705,7 @@ CREATE TABLE `routeAction` ( `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, `price` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24201,7 +23726,7 @@ CREATE TABLE `routeComplement` ( KEY `fgn_routeActionFk_idx` (`routeActionFk`), CONSTRAINT `fgn_routeActionFk` FOREIGN KEY (`routeActionFk`) REFERENCES `routeAction` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fgn_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) -) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=504 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24304,7 +23829,7 @@ CREATE TABLE `routeLog` ( KEY `userFk` (`userFk`), CONSTRAINT `routeLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Rutas` (`Id_Ruta`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `routeLog_ibfk_2` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=5841 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=21533 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24577,7 +24102,7 @@ CREATE TABLE `sms` ( `status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=132004 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=136211 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24742,7 +24267,7 @@ CREATE TABLE `stockBuyed` ( UNIQUE KEY `date_UNIQUE` (`date`,`user`), KEY `stockBuyed_user_idx` (`user`), CONSTRAINT `stockBuyedUserFk` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=663907 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=701265 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24836,14 +24361,14 @@ CREATE TABLE `tag` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(25) CHARACTER SET utf8 NOT NULL, `isFree` tinyint(1) NOT NULL DEFAULT '1', - `isQuantitatif` tinyint(4) NOT NULL DEFAULT '1', + `isQuantitatif` tinyint(4) NOT NULL DEFAULT '0', `sourceTable` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `unit` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `ediTypeFk` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `tagEdiTypeFkIdx` (`ediTypeFk`), CONSTRAINT `fgnTag` FOREIGN KEY (`ediTypeFk`) REFERENCES `edi`.`type` (`type_id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Categorias para etiquetar los productos'; +) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Categorias para etiquetar los productos'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -24996,6 +24521,7 @@ SET character_set_client = utf8; 1 AS `priority`, 1 AS `packages`, 1 AS `isDeleted`, + 1 AS `zoneFk`, 1 AS `created`*/; SET character_set_client = @saved_cs_client; @@ -25037,7 +24563,9 @@ CREATE TABLE `ticketDown` ( `ticketFk` int(11) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `selected` int(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`ticketFk`) + PRIMARY KEY (`ticketFk`), + KEY `created_idx` (`created`), + KEY `selected_idx` (`selected`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Cola de impresion para los tickets que se van a solicitar al altillo'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -25057,6 +24585,22 @@ SET character_set_client = utf8; 1 AS `parking`*/; SET character_set_client = @saved_cs_client; +-- +-- Temporary table structure for view `ticketGetVolume` +-- + +DROP TABLE IF EXISTS `ticketGetVolume`; +/*!50001 DROP VIEW IF EXISTS `ticketGetVolume`*/; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ticketGetVolume` AS SELECT + 1 AS `ticketFk`, + 1 AS `routeFk`, + 1 AS `saleFk`, + 1 AS `shipped`, + 1 AS `volume`*/; +SET character_set_client = @saved_cs_client; + -- -- Table structure for table `ticketLog` -- @@ -25081,7 +24625,7 @@ CREATE TABLE `ticketLog` ( KEY `logTicketuserFk` (`userFk`), CONSTRAINT `ticketLog_ibfk_1` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketLog_user` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=5733155 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6208355 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -25153,7 +24697,7 @@ CREATE TABLE `ticketPackaging` ( CONSTRAINT `ticketPackaging_fk1` FOREIGN KEY (`ticketFk`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticketPackaging_fk2` FOREIGN KEY (`packagingFk`) REFERENCES `vn2008`.`Cubos` (`Id_Cubo`) ON UPDATE CASCADE, CONSTRAINT `ticketPackaging_fk3` FOREIGN KEY (`workerFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=61100 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=64612 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -25321,7 +24865,8 @@ SET character_set_client = utf8; 1 AS `agency_id`, 1 AS `warehouse_id`, 1 AS `province_id`, - 1 AS `picked`*/; + 1 AS `picked`, + 1 AS `zoneFk`*/; SET character_set_client = @saved_cs_client; -- @@ -25472,14 +25017,14 @@ DROP TABLE IF EXISTS `town`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `town` ( - `id` int(11) NOT NULL, + `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `provinceFk` smallint(6) unsigned NOT NULL, `geoFk` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `townProvinceFk_idx` (`provinceFk`), CONSTRAINT `townProvinceFk` FOREIGN KEY (`provinceFk`) REFERENCES `vn2008`.`province` (`province_id`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8516 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -25493,7 +25038,7 @@ CREATE TABLE `trainingCenter` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -25520,7 +25065,7 @@ CREATE TABLE `trainingCourse` ( CONSTRAINT `frgnCenter` FOREIGN KEY (`centerFk`) REFERENCES `trainingCenter` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frgnTrainingCourseType` FOREIGN KEY (`trainingCourseTypeFk`) REFERENCES `trainingCourseType` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `frgnWorker` FOREIGN KEY (`workerFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=265 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de trabajadores que han realizado una formación'; +) ENGINE=InnoDB AUTO_INCREMENT=301 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de trabajadores que han realizado una formación'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -25534,7 +25079,7 @@ CREATE TABLE `trainingCourseType` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de las formaciones'; +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Lista de las formaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -25572,7 +25117,7 @@ CREATE TABLE `travel` ( CONSTRAINT `travel_ibfk_2` FOREIGN KEY (`warehouseOutFk`) REFERENCES `vn2008`.`warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `travel_ibfk_3` FOREIGN KEY (`agencyFk`) REFERENCES `vn2008`.`Agencias` (`Id_Agencia`) ON UPDATE CASCADE, CONSTRAINT `travel_ibfk_4` FOREIGN KEY (`cargoSupplierFk`) REFERENCES `vn2008`.`Proveedores_cargueras` (`Id_Proveedor`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=130516 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=132733 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -25587,7 +25132,7 @@ DELIMITER ;; BEFORE INSERT ON `travel` FOR EACH ROW BEGIN - CALL vn.travel_checkDates(NEW.shipped, NEW.landed); + CALL travel_checkDates(NEW.shipped, NEW.landed); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -25609,7 +25154,7 @@ DELIMITER ;; BEGIN IF !(NEW.landed <=> OLD.landed) OR !(NEW.shipped <=> OLD.shipped) THEN - CALL vn.travel_checkDates(NEW.shipped, NEW.landed); + CALL travel_checkDates(NEW.shipped, NEW.landed); END IF; END */;; DELIMITER ; @@ -25633,8 +25178,8 @@ BEGIN CALL stock.log_add('travel', NEW.id, OLD.id); IF !(NEW.shipped <=> OLD.shipped) THEN - UPDATE vn.entry - SET commission = vn.entry_calcCommission(commission, travelFk, currencyFk) + UPDATE entry + SET commission = entry_calcCommission(commission, travelFk, currencyFk) WHERE travelFk = NEW.id; END IF; @@ -25642,7 +25187,7 @@ BEGIN THEN INSERT INTO vn2008.travel_dits SET idaccion_dits = 89, - Id_Trabajador = vn.getWorker(), + Id_Trabajador = myWorker_getId(), Id_Ticket = NEW.id, value_old = OLD.isDelivered, value_new = NEW.isDelivered; @@ -25950,6 +25495,22 @@ CREATE TABLE `workerClockLog` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; +-- +-- Table structure for table `workerConfig` +-- + +DROP TABLE IF EXISTS `workerConfig`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `workerConfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `defaultWorkerFk` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `defaultWorkerFk` (`defaultWorkerFk`), + CONSTRAINT `workerConfig_ibfk_1` FOREIGN KEY (`defaultWorkerFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + -- -- Temporary table structure for view `workerDepartment` -- @@ -25979,7 +25540,7 @@ CREATE TABLE `workerDocument` ( KEY `workerDocument_ibfk_2` (`document`), CONSTRAINT `workerDocument_ibfk_1` FOREIGN KEY (`worker`) REFERENCES `vn2008`.`Trabajadores` (`user_id`) ON UPDATE CASCADE, CONSTRAINT `workerDocument_ibfk_2` FOREIGN KEY (`document`) REFERENCES `vn2008`.`gestdoc` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=10512 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=10817 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26029,7 +25590,7 @@ CREATE TABLE `workerJourney` ( UNIQUE KEY `userFk_UNIQUE` (`userFk`,`dated`), KEY `fk_workerJourney_user_idx` (`userFk`), CONSTRAINT `fk_workerJourney_user` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=34621258 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=38450770 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26068,7 +25629,7 @@ CREATE TABLE `workerLog` ( KEY `userFk_idx` (`userFk`), CONSTRAINT `userFk` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `workerFk` FOREIGN KEY (`originFk`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=10993 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=11933 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26131,7 +25692,7 @@ CREATE TABLE `workerTimeControl` ( KEY `warehouseFkfk1_idx` (`warehouseFk`), CONSTRAINT `warehouseFk_1` FOREIGN KEY (`warehouseFk`) REFERENCES `vn2008`.`warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `workerTimeControl_fk1` FOREIGN KEY (`userFk`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3756950 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Fichadas'; +) ENGINE=InnoDB AUTO_INCREMENT=5683027 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Fichadas'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26163,7 +25724,7 @@ CREATE TABLE `workerTimeControlSchedule` ( `time` time DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `punique_trhf` (`time`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26263,7 +25824,7 @@ CREATE TABLE `zone` ( KEY `zone_name_idx` (`name`), CONSTRAINT `fk_zone_1` FOREIGN KEY (`warehouseFk`) REFERENCES `vn2008`.`warehouse` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `fk_zone_2` FOREIGN KEY (`agencyModeFk`) REFERENCES `vn2008`.`Agencias` (`Id_Agencia`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=118 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=328 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26289,17 +25850,16 @@ DROP TABLE IF EXISTS `zoneGeo`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `zoneGeo` ( - `id` int(11) NOT NULL DEFAULT '0', + `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `lft` int(11) DEFAULT NULL, `rgt` int(11) DEFAULT NULL, `depth` bigint(22) NOT NULL DEFAULT '0', `sons` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `zoneGeo_lft_IDX` (`lft`) USING BTREE, - UNIQUE KEY `zoneGeo_rgt_IDX` (`rgt`) USING BTREE, - KEY `zoneGeo_name_idx` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `lft_rgt_depth_idx` (`lft`,`rgt`,`depth`), + KEY `name_idx` (`name`) +) ENGINE=InnoDB AUTO_INCREMENT=23934 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -26517,58 +26077,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP FUNCTION IF EXISTS `agencyIsAvailable` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `agencyIsAvailable`(vAgency INT, vDate DATE, vAddress INT) RETURNS tinyint(1) -BEGIN -/** - * Comprueba si la agencia esta disponible para la fecha y - * dirección dadas, es decir, si es posible enviar mercancía - * desde al menos uno de los almacenes por la agencia, fecha - * y direcciones especificadas. - * - * @param vAgency Id de agencia - * @param vDate Fecha de recepción de mercancía - * @param vAddress Id consignatario, %NULL para recogida - * @return %TRUE si la agencia esta disponible, %FALSE en caso contrario - */ - DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); - DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); - DECLARE vHour TINYINT DEFAULT HOUR(NOW()); - DECLARE vProvince INT; - DECLARE isAvailable BOOL; - - SELECT provinceFk INTO vProvince - FROM address - WHERE id = vAddress; - - SELECT COUNT(*) > 0 INTO isAvailable - FROM agencyHour h - JOIN agencyMode a - ON a.agencyFk = h.agencyFk - WHERE (h.provinceFk = vProvince - OR h.provinceFk IS NULL) - AND (h.weekDay = vWday - OR h.weekDay IS NULL) - AND (h.substractDay < vMaxDays - OR (h.substractDay = vMaxDays AND h.maxHour > vHour)) - AND a.id = vAgency; - - RETURN isAvailable; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `barcodeToItem` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -26696,6 +26204,74 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `buy_getUnitVolume` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `buy_getUnitVolume`(vSelf INT) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Calculates the unit volume occupied by a buy. + * + * @param vSelf The buy id + * @return The unit volume in cubic centimeters + */ + DECLARE vItem INT; + DECLARE vPackaging VARCHAR(10); + DECLARE vPacking INT; + + SELECT itemFk, packageFk, packing + INTO vItem, vPackaging, vPacking + FROM buy + WHERE id = vSelf; + + RETURN IFNULL(ROUND(item_getVolume(vItem, vPackaging) / vPacking), 0); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `buy_getVolume` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `buy_getVolume`(vSelf INT) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Calculates the volume occupied by a buy. + * + * @param vSelf The buy id + * @return The volume in cubic centimeters + */ + DECLARE vItem INT; + DECLARE vPackaging VARCHAR(10); + + SELECT itemFk, packageFk INTO vItem, vPackaging + FROM buy + WHERE id = vSelf; + + RETURN item_getVolume(vItem, vPackaging); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `clientGetDebt` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -26995,6 +26571,63 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `client_getFromPhone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `client_getFromPhone`(vPhone VARCHAR(255)) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Searchs a customer associated to the phone number. + * + * @param vPhone The phone number + * @return The client id or %NULL if not found + */ + DECLARE vClient INT DEFAULT NULL; + + -- SET vPhone = vPhone COLLATE 'utf8_unicode_ci'; + + DROP TEMPORARY TABLE IF EXISTS tClient; + CREATE TEMPORARY TABLE tClient + ENGINE = MEMORY + SELECT id clientFk + FROM `client` + WHERE phone = vPhone + OR mobile = vPhone + UNION + SELECT clientFk + FROM address + WHERE phone = vPhone + OR mobile = vPhone + UNION + SELECT r.id_cliente + FROM vn2008.Relaciones r + JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto + WHERE c.telefono = vPhone + OR c.movil = vPhone; + + SELECT t.clientFk INTO vClient + FROM tClient t + JOIN `client` c ON c.id = t.clientFk + WHERE c.isActive + LIMIT 1; + + DROP TEMPORARY TABLE tClient; + + RETURN vClient; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `currentRate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -27416,6 +27049,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getTicketToPrepare`(`vWorker` INT, `vWarehouse` INT) RETURNS int(11) + READS SQL DATA BEGIN /** * Devuelve el ticket que debe de preparar el trabajador @@ -27451,9 +27085,9 @@ BEGIN , am.agencyFk as agency_id , t.warehouseFk as warehouse_id , a.provinceFk as province_id - , Hour(t.shipped) as Hora - , Hour(t.shipped) as Departure - , Minute(t.shipped) as Minuto + , IF (HOUR(t.shipped),HOUR(t.shipped),HOUR(z.`hour`)) as Hora + , HOUR(t.shipped) as Departure + , IF (MINUTE(t.shipped),MINUTE(t.shipped),MINUTE(z.`hour`)) as Minuto , tls.code , IFNULL(t.priority,0) loadingOrder FROM ticket t @@ -27461,6 +27095,7 @@ BEGIN JOIN agencyMode am on am.id = t.agencyModeFk JOIN address a on a.id = t.addressFk LEFT JOIN tmp.workerComercial wc ON wc.worker = vWorker + LEFT JOIN vn.zone z ON z.id = t.zoneFk WHERE t.shipped BETWEEN vYesterday AND vTodayvMidniight AND t.warehouseFk = vWarehouse AND @@ -27471,10 +27106,8 @@ BEGIN OR (tls.code = 'PRINTED_BACK') ); - - - CALL vn2008.production_buffer_set_priority; + SELECT ticket INTO vTicket FROM tmp.production_buffer ORDER BY (code = 'PICKER_DESIGNED') DESC, Hora, Minuto, (code = 'PRINTED_BACK') DESC , loadingOrder @@ -27539,17 +27172,18 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getUser`() RETURNS int(11) DETERMINISTIC BEGIN -/* JGF 2019-03-04 obsoleto, usar account.userGetId() */ - /*RETURN getWorker(); */ +/** + * @deprecated Use account.userGetId() + */ RETURN account.userGetId(); END ;; DELIMITER ; @@ -27588,15 +27222,18 @@ ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `getWorker`() RETURNS int(11) DETERMINISTIC BEGIN +/** + * @deprecated Use myWorker_getId() + */ DECLARE vUser INT; SELECT id INTO vUser @@ -27726,6 +27363,45 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `hasZone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `hasZone`(vLanded DATE, vAddress INT, vAgencyModeFk INT) RETURNS tinyint(1) + DETERMINISTIC +BEGIN + DECLARE vHasZone BOOLEAN DEFAULT FALSE; + + SELECT COUNT(*), id zoneFk, isIncluded INTO vHasZone, @trash, @trash FROM ( + SELECT z.id, + TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, + vLanded landed, + zi.isIncluded + FROM zoneGeo zgSon + JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt + JOIN zoneIncluded zi ON zi.geoFk = zgFather.id + JOIN zone z ON z.id = zi.zoneFk + JOIN zoneCalendar zc ON zc.zoneFk = z.id + AND zc.delivered = vLanded + AND z.agencyModeFk = vAgencyModeFk + AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) + WHERE zi.isIncluded + ORDER BY z.id, landed ASC, zgFather.depth DESC) t + GROUP BY id + HAVING isIncluded > 0 LIMIT 1; + RETURN vHasZone; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `invoiceOutAmount` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -27805,6 +27481,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `invoiceSerial`(vClientFk INT, vCompanyFk INT, vType CHAR(1)) RETURNS char(1) CHARSET utf8 + DETERMINISTIC BEGIN /** * Obtiene la serie de de una factura @@ -27815,18 +27492,41 @@ BEGIN * @param vType Tipo de factura ["R", "M", "G"] * @return Serie de la factura */ - DECLARE vArea VARCHAR(25); + DECLARE vTaxArea VARCHAR(25); DECLARE vSerie CHAR(1); IF (SELECT hasInvoiceSimplified FROM client WHERE id = vClientFk) THEN RETURN 'S'; END IF; - SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vArea; - -- Factura rápida + SELECT clientTaxArea(vClientFk, vCompanyFk) INTO vTaxArea; + SELECT invoiceSerialArea(vType,vTaxArea) INTO vSerie; + RETURN vSerie; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `invoiceSerialArea` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `invoiceSerialArea`(vType CHAR(1), vTaxArea VARCHAR(25)) RETURNS char(1) CHARSET utf8 COLLATE utf8_unicode_ci + DETERMINISTIC +BEGIN + + DECLARE vSerie CHAR(1); + IF vType = 'R' THEN SELECT - CASE vArea + CASE vTaxArea WHEN 'CEE' THEN 'H' WHEN 'WORLD' @@ -27838,7 +27538,7 @@ BEGIN -- Factura multiple ELSEIF vType = 'M' THEN SELECT - CASE vArea + CASE vTaxArea WHEN 'CEE' THEN 'H' WHEN 'WORLD' @@ -27850,7 +27550,7 @@ BEGIN -- Factura global ELSEIF vType = 'G' THEN SELECT - CASE vArea + CASE vTaxArea WHEN 'CEE' THEN 'V' WHEN 'WORLD' @@ -28026,6 +27726,68 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `itemTag_getIntValue` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `itemTag_getIntValue`(vValue VARCHAR(255)) RETURNS int(11) + DETERMINISTIC +BEGIN + IF vValue NOT REGEXP '^-?[0-9]+' THEN + RETURN NULL; + END IF; + + RETURN CAST(vValue AS SIGNED); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `item_getVolume` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `item_getVolume`(vSelf INT, vPackaging VARCHAR(10)) RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Calculates the volume occupied by an item together + * with its packaging. + * + * @param vSelf The item id + * @param vPackaging The packaging id + * @return The volume in cubic centimeters + */ + DECLARE vVolume INT; + + SELECT SUM(IF(p.volume > 0, + p.volume, + p.width * p.height * IF(p.depth = 0, i.size + 10, p.depth) + )) INTO vVolume + FROM packaging p + JOIN item i ON i.id = vSelf + WHERE p.id = vPackaging; + + RETURN vVolume; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `messageSend` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -28138,6 +27900,38 @@ DELIMITER ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; +/*!50003 DROP FUNCTION IF EXISTS `myWorker_getId` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `myWorker_getId`() RETURNS int(11) + DETERMINISTIC +BEGIN +/** + * Returns the current worker id or the default worker id + * if current user cannot be retrieved. + * + * @return The worker id + */ + DECLARE vWorker INT; + + SELECT IFNULL(w.id, c.defaultWorkerFk) INTO vWorker + FROM worker w, workerConfig c + WHERE w.userFk = account.userGetId(); + + RETURN vWorker; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP FUNCTION IF EXISTS `orderTotalVolume` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -28448,9 +28242,8 @@ BEGIN WHERE s.ticketFk = vTicketId; */ SELECT sum(volume) INTO vVolume - FROM vn2008.v_Movimientos_Volumen_shipping_charge - WHERE Id_Ticket = vTicketId; - + FROM ticketGetVolume + WHERE ticketFk = vTicketId; RETURN vVolume; END ;; @@ -28469,7 +28262,8 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `ticketTotalVolumeBoxes`(vTicketId INT) RETURNS decimal(10,3) +CREATE DEFINER=`root`@`%` FUNCTION `ticketTotalVolumeBoxes`(vTicketId INT) RETURNS decimal(10,1) + DETERMINISTIC BEGIN /* @@ -28580,6 +28374,59 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP FUNCTION IF EXISTS `__agencyIsAvailable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` FUNCTION `__agencyIsAvailable`(vAgency INT, vDate DATE, vAddress INT) RETURNS tinyint(1) + READS SQL DATA +BEGIN +/** + * Comprueba si la agencia esta disponible para la fecha y + * dirección dadas, es decir, si es posible enviar mercancía + * desde al menos uno de los almacenes por la agencia, fecha + * y direcciones especificadas. + * + * @param vAgency Id de agencia + * @param vDate Fecha de recepción de mercancía + * @param vAddress Id consignatario, %NULL para recogida + * @return %TRUE si la agencia esta disponible, %FALSE en caso contrario + */ + DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); + DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); + DECLARE vHour TINYINT DEFAULT HOUR(NOW()); + DECLARE vProvince INT; + DECLARE isAvailable BOOL; + + SELECT provinceFk INTO vProvince + FROM address + WHERE id = vAddress; + + SELECT COUNT(*) > 0 INTO isAvailable + FROM agencyHour h + JOIN agencyMode a + ON a.agencyFk = h.agencyFk + WHERE (h.provinceFk = vProvince + OR h.provinceFk IS NULL) + AND (h.weekDay = vWday + OR h.weekDay IS NULL) + AND (h.substractDay < vMaxDays + OR (h.substractDay = vMaxDays AND h.maxHour > vHour)) + AND a.id = vAgency; + + RETURN isAvailable; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `addNoteFromDelivery` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -28654,7 +28501,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `agencyHourGetAgency` */; +/*!50003 DROP PROCEDURE IF EXISTS `agencyHourGetAgencyKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -28664,7 +28511,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetAgency`(vAddress INT, vDate DATE) +CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetAgencyKk`(vAddress INT, vDate DATE) BEGIN /** * DEPRECATED usar zoneGetAgency @@ -28826,7 +28673,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `agencyHourGetShipped` */; +/*!50003 DROP PROCEDURE IF EXISTS `agencyHourGetShippedKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -28836,7 +28683,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetShipped`(vLanded DATE, vAddressFk INT, vAgencyFk INT) +CREATE DEFINER=`root`@`%` PROCEDURE `agencyHourGetShippedKk`(vLanded DATE, vAddressFk INT, vAgencyFk INT) BEGIN /** * DEPRECATED usar zoneGetShipped @@ -29023,7 +28870,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `agencyListAvailable` */; +/*!50003 DROP PROCEDURE IF EXISTS `artificialBufferKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -29033,55 +28880,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `agencyListAvailable`(vDate DATE, vAddress INT) -BEGIN -/** - * DEPRECATED usar zoneGetAgency - * Devuelve la lista de almacenes disponibles y la fecha de - * envío desde cada uno. - * - * @param vDate Fecha de recepción de mercancía - * @param vAddress Id consignatario, %NULL para recogida - * @return agencyAvailable Lista de almacenes disponibles - */ - DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); - DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); - DECLARE vHour TINYINT DEFAULT HOUR(NOW()); - DECLARE vProvince INT; - - SELECT provinceFk INTO vProvince - FROM address - WHERE id = vAddress; - - DROP TEMPORARY TABLE IF EXISTS tmp.agencyAvailable; - CREATE TEMPORARY TABLE tmp.agencyAvailable - (INDEX (agencyFk)) - ENGINE = MEMORY - SELECT agencyFk, warehouseFk - FROM agencyHour h - WHERE (provinceFk = vProvince - OR provinceFk IS NULL) - AND (weekDay = vWday - OR weekDay IS NULL) - AND (substractDay < vMaxDays - OR (substractDay = vMaxDays AND maxHour > vHour)); -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `artificialBuffer` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `artificialBuffer`(vWarehouseFk INT) +CREATE DEFINER=`root`@`%` PROCEDURE `artificialBufferKk`(vWarehouseFk INT) BEGIN DECLARE vCalcFk INT; @@ -29127,6 +28926,76 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `available_calc` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `available_calc`( + vDate DATE, + vAddress INT, + vAgencyMode INT) +BEGIN +/** + * Calculates the available for all available stores + * according to the given parameters. + * + * @param vDate The delivery date + * @param vAddress The delivery address id + * @param vAgencyMode The shipping agency + * @return tmp.availableCalc(calcFk) The available cache ids + */ + DECLARE vCalcFk INT; + DECLARE vShipment DATE; + DECLARE vWarehouse INT; + DECLARE vDone BOOL; + + DECLARE cWarehouses CURSOR FOR + SELECT warehouseFk, shipped FROM tmp.zoneGetShipped; + + DECLARE CONTINUE HANDLER FOR NOT FOUND + SET vDone = TRUE; + + -- Establecemos los almacenes y las fechas que van a entrar al disponible + + CALL vn.zoneGetShippedWarehouse(vDate, vAddress, vAgencyMode); + + DROP TEMPORARY TABLE IF EXISTS tmp.availableCalc; + CREATE TEMPORARY TABLE tmp.availableCalc( + calcFk INT UNSIGNED, + PRIMARY KEY (calcFk) + ) + ENGINE = MEMORY; + + OPEN cWarehouses; + + l: LOOP + SET vDone = FALSE; + FETCH cWarehouses INTO vWarehouse, vShipment; + + IF vDone THEN + LEAVE l; + END IF; + + CALL `cache`.available_refresh(vCalcFk, FALSE, vWarehouse, vShipment); + + INSERT IGNORE INTO tmp.availableCalc + SET calcFk = vCalcFk; + END LOOP; + + CLOSE cWarehouses; + DROP TEMPORARY TABLE tmp.zoneGetShipped; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `buyUltimate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -29269,7 +29138,7 @@ BEGIN REPLACE bi.rotacion SET Id_Article = vItemFk, warehouse_id = vWarehouse, - cm3 = vn2008.cm3_unidad(vSelf); + cm3 = buy_getUnitVolume(vSelf); END IF; SELECT isFeedStock INTO vIsFeedStock @@ -29372,6 +29241,307 @@ CLOSE rs; SELECT vTicketFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `catalog_calcFromItem` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `catalog_calcFromItem`( + vLanded DATE, + vAddressFk INT, + vAgencyModeFk INT, + vItemFk INT) +BEGIN +/** + * Calculates available and price for a single item. + * + * @param vItemFk The item id + * @return tmp.ticketCalculateItem + * @return tmp.ticketComponentPrice + * @return tmp.ticketComponent + * @return tmp.ticketLot + * @return tmp.zoneGetShipped + */ + DROP TEMPORARY TABLE IF EXISTS tmp.item; + CREATE TEMPORARY TABLE tmp.item + ENGINE = MEMORY + SELECT vItemFk itemFk; + + CALL ticketCalculate(vLanded, vAddressFk, vAgencyModeFk); + DROP TEMPORARY TABLE tmp.item; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `catalog_componentCalculate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `catalog_componentCalculate`( + vZoneFk INT, + vAddressFk INT, + vShipped DATE) +proc: BEGIN +/** + * Calcula los componentes de los articulos de tmp.ticketLot + * + * @param vZoneFk para calcular el transporte + * @param vAgencyModeFk Id del modo de agencia + * @param tmp.ticketLot (warehouseFk,available,itemFk,buyFk) + * + * @return tmp.ticketComponent(itemFk, warehouseFk, available, rate2, rate3, minPrice, + * packing, grouping, groupingMode, buyFk, typeFk) + * @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, grouping, price) + */ + + DECLARE vClientFk INT; + DECLARE vGeneralInflationCoefficient INT DEFAULT 1; + DECLARE vMinimumDensityWeight INT DEFAULT 167; + DECLARE vBoxFreightItem INT DEFAULT 71; + DECLARE vBoxVolume BIGINT; -- DEFAULT 138000; + DECLARE vSpecialPriceComponent INT DEFAULT 10; + DECLARE vDeliveryComponent INT DEFAULT 15; + DECLARE vRecoveryComponent INT DEFAULT 17; + DECLARE vSellByPacketComponent INT DEFAULT 22; + DECLARE vBuyValueComponent INT DEFAULT 28; + DECLARE vMarginComponent INT DEFAULT 29; + DECLARE vDiscountLastItemComponent INT DEFAULT 32; + DECLARE vExtraBaggedComponent INT DEFAULT 38; + DECLARE vManaAutoComponent INT DEFAULT 39; + + + SELECT volume INTO vBoxVolume + FROM vn.packaging + WHERE id = '94'; + + SELECT clientFk INTO vClientFK + FROM address + WHERE id = vAddressFk; + + SET @rate2 := 0; + SET @rate3 := 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate; + CREATE TEMPORARY TABLE tmp.ticketComponentCalculate + (PRIMARY KEY (itemFk, warehouseFk)) + ENGINE = MEMORY + SELECT + tl.itemFk, tl.warehouseFk, tl.available, + IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2, + IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3, + IFNULL(pf.rate3, 0) AS minPrice, + IFNULL(pf.packing, b.packing) packing, + IFNULL(pf.`grouping`, b.`grouping`) grouping, + ABS(IFNULL(pf.box, b.groupingMode)) groupingMode, + tl.buyFk, i.typeFk + FROM tmp.ticketLot tl + JOIN buy b ON b.id = tl.buyFk + JOIN item i ON i.id = tl.itemFk + JOIN itemType it ON it.id = i.typeFk + LEFT JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk + LEFT JOIN ( + SELECT * FROM ( + SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, z.warehouseFk + FROM priceFixed pf + JOIN zone z ON z.warehouseFk = pf.warehouseFk OR pf.warehouseFk = 0 + WHERE vShipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC + ) tpf + GROUP BY tpf.itemFk, tpf.warehouseFk + ) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk + WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.display <> 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent; + CREATE TEMPORARY TABLE tmp.ticketComponent ( + `warehouseFk` INT UNSIGNED NOT NULL, + `itemFk` INT NOT NULL, + `componentFk` INT UNSIGNED NOT NULL, + `cost` DECIMAL(10,4) NOT NULL, + INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC), + UNIQUE INDEX `itemWarehouseComponent` (`itemFk` ASC, `warehouseFk` ASC, `componentFk` ASC)); + + INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) + SELECT + tcc.warehouseFk, + tcc.itemFk, + vBuyValueComponent, + b.buyingValue + b.freightValue + b.packageValue + b.comissionValue + FROM tmp.ticketComponentCalculate tcc + JOIN buy b ON b.id = tcc.buyFk; + + INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) + SELECT + tcc.warehouseFk, + tcc.itemFk, + vMarginComponent, + tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue + FROM tmp.ticketComponentCalculate tcc + JOIN buy b ON b.id = tcc.buyFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase; + CREATE TEMPORARY TABLE tmp.ticketComponentBase ENGINE = MEMORY + SELECT tc.itemFk, ROUND(SUM(tc.cost), 4) AS base, tc.warehouseFk + FROM tmp.ticketComponent tc + GROUP BY tc.itemFk, warehouseFk; + + INSERT INTO tmp.ticketComponent + SELECT tcb.warehouseFk, tcb.itemFk, vRecoveryComponent, ROUND(tcb.base * LEAST(cr.recobro, 0.25), 3) + FROM tmp.ticketComponentBase tcb + JOIN bi.claims_ratio cr ON cr.Id_Cliente = vClientFk + WHERE cr.recobro > 0.009; + + INSERT INTO tmp.ticketComponent + SELECT tcb.warehouseFk, tcb.itemFk, vManaAutoComponent, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto + FROM tmp.ticketComponentBase tcb + JOIN `client` c on c.id = vClientFk + JOIN bs.mana_spellers ms ON c.salesPersonFk = ms.Id_Trabajador + WHERE ms.prices_modifier_activated + HAVING manaAuto <> 0; + + INSERT INTO tmp.ticketComponent + SELECT tcb.warehouseFk, + tcb.itemFk, + cr.id, + GREATEST(IFNULL(ROUND(tcb.base * cr.tax, 4), 0), tcc.minPrice - tcc.rate3) + FROM tmp.ticketComponentBase tcb + JOIN componentRate cr + JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk + LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk + WHERE cr.id = vDiscountLastItemComponent AND cr.tax <> 0 AND tcc.minPrice < tcc.rate3 AND sp.value IS NULL; + + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFk, tcc.itemFk, vSellByPacketComponent, tcc.rate2 - tcc.rate3 + FROM tmp.ticketComponentCalculate tcc + JOIN buy b ON b.id = tcc.buyFk + LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk + WHERE sp.value IS NULL; + + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFK, + tcc.itemFk, + vDeliveryComponent, + vGeneralInflationCoefficient + * ROUND(( + i.compression + * r.cm3 + * IF(am.deliveryMethodFk = 1, (GREATEST(i.density, vMinimumDensityWeight) / vMinimumDensityWeight), 1) + * IFNULL((z.price - z.bonus) + * 1/*amz.inflation*/ , 50)) / vBoxVolume, 4 + ) cost + FROM tmp.ticketComponentCalculate tcc + JOIN item i ON i.id = tcc.itemFk + JOIN zone z ON z.id = vZoneFk + JOIN agencyMode am ON am.id = z.agencyModeFk + LEFT JOIN bi.rotacion r ON r.warehouse_id = tcc.warehouseFk + AND r.Id_Article = tcc.itemFk + HAVING cost <> 0; + + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = vAddressFk) THEN + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFk, b.itemFk, vExtraBaggedComponent, ap.packagingValue cost + FROM tmp.ticketComponentCalculate tcc + JOIN vn.addressForPackaging ap + WHERE ap.addressFk = vAddressFk; + END IF; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; + CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY + SELECT * FROM tmp.ticketComponent; + + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFk, + tcc.itemFk, + vSpecialPriceComponent, + sp.value - SUM(tcc.cost) sumCost + FROM tmp.ticketComponentCopy tcc + JOIN componentRate cr ON cr.id = tcc.componentFk + JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk + WHERE cr.classRate IS NULL + GROUP BY tcc.itemFk, tcc.warehouseFk + HAVING ABS(sumCost) > 0.001; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentSum; + CREATE TEMPORARY TABLE tmp.ticketComponentSum + (INDEX (itemFk, warehouseFk)) + ENGINE = MEMORY + SELECT SUM(cost) sumCost, tc.itemFk, tc.warehouseFk, cr.classRate + FROM tmp.ticketComponent tc + JOIN componentRate cr ON cr.id = tc.componentFk + GROUP BY tc.itemFk, tc.warehouseFk, cr.classRate; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate; + CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY + SELECT tcc.warehouseFk, + tcc.itemFk, + 1 rate, + IF(tcc.groupingMode = 1, tcc.`grouping`, 1) grouping, + CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) price + FROM tmp.ticketComponentCalculate tcc + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + AND tcs.warehouseFk = tcc.warehouseFk + WHERE IFNULL(tcs.classRate, 1) = 1 + AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0) + GROUP BY tcs.warehouseFk, tcs.itemFk; + + INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, grouping, price) + SELECT + tcc.warehouseFk, + tcc.itemFk, + 2 rate, + tcc.packing grouping, + SUM(tcs.sumCost) price + FROM tmp.ticketComponentCalculate tcc + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + AND tcs.warehouseFk = tcc.warehouseFk + WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 + AND tcc.packing > 0 AND tcc.available >= tcc.packing) + GROUP BY tcs.warehouseFk, tcs.itemFk; + + INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, grouping, price) + SELECT + tcc.warehouseFk, + tcc.itemFk, + 3 rate, + tcc.available grouping, + SUM(tcs.sumCost) price + FROM tmp.ticketComponentCalculate tcc + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + AND tcs.warehouseFk = tcc.warehouseFk + WHERE IFNULL(tcs.classRate, 3) = 3 + GROUP BY tcs.warehouseFk, tcs.itemFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentPrice; + CREATE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY + SELECT * FROM ( + SELECT * FROM tmp.ticketComponentRate ORDER BY price + ) t + GROUP BY itemFk, warehouseFk, `grouping`; + + DROP TEMPORARY TABLE + tmp.ticketComponentCalculate, + tmp.ticketComponentSum, + tmp.ticketComponentBase, + tmp.ticketComponentRate, + tmp.ticketComponentCopy; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -29579,24 +29749,23 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `clientFreeze`() BEGIN - IF day(CURDATE()) IN (10,20,30) THEN + UPDATE bi.defaulters d + JOIN vn.client c ON c.id = d.client + JOIN vn.config ON TRUE + SET c.isFreezed = TRUE, frozened = CURDATE() + WHERE d.amount > config.defaultersMaxAmount + AND d.`date` = CURDATE() + AND frozened IS NULL; + + IF day(CURDATE()) IN (5,15,25) THEN UPDATE vn.client c - JOIN bi.defaulters d ON d.client = c.id AND d.date = CURDATE() - JOIN vn.config ON TRUE - SET c.isFreezed = TRUE - WHERE d.amount > config.defaultersMaxAmount - AND c.payMethodFk NOT IN (5,8) - AND c.typeFk = 'normal'; - - UPDATE vn.client c - JOIN bi.defaulters d ON d.client = c.id AND d.date = TIMESTAMPADD(DAY,10,CURDATE()) - JOIN vn.config ON TRUE - SET c.isFreezed = TRUE - WHERE d.amount > config.defaultersMaxAmount - AND c.payMethodFk IN (5,8) - AND c.typeFk = 'normal'; - + JOIN bi.defaulters d ON d.client = c.id + JOIN vn.config ON TRUE + SET c.isFreezed = TRUE, frozened = CURDATE() + WHERE d.amount > config.defaultersMaxAmount + AND c.typeFk = 'normal' + AND d.date = CURDATE(); END IF; END ;; @@ -31491,6 +31660,56 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `entry_getRate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `entry_getRate`(vEntry INT) +BEGIN + DECLARE vLanded DATE; + DECLARE vWarehouseFk INT; + + -- Obtiene fecha de llegada y almacén entrante + + SELECT landed, warehouseInFk INTO vLanded, vWarehouseFk + FROM vn.travel t + JOIN vn.entry e ON t.id = e.travelFk + WHERE e.id = vEntry; + + -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén + + DROP TEMPORARY TABLE IF EXISTS tmp.rate; + CREATE TEMPORARY TABLE tmp.rate + ENGINE = MEMORY + SELECT * FROM + ( + SELECT * FROM + ( + SELECT rate0, rate1, rate2, rate3 + FROM vn.rate + WHERE dated <= vLanded + AND warehouseFk = vWarehouseFk + ORDER BY dated DESC + + ) sub + UNION ALL + SELECT rate0, rate1, rate2, rate3 + FROM rateConfig + ) sub2 + LIMIT 1; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `getDayExpeditions` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -31690,23 +31909,18 @@ BEGIN WHERE gg.description = 'Comerciales' AND worker != 2; -- PAKO numero - DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; CREATE TEMPORARY TABLE tmp.production_buffer - ENGINE = MEMORY + ENGINE = MEMORY SELECT * - FROM vn.ticketToPrepare - WHERE Id_Trabjador = vWorker OR Id_Trabjador = 0; - - - CALL vn2008.production_buffer_set_priority; - + FROM vn.ticketToPrepare + WHERE Id_Trabjador = vWorker OR Id_Trabjador = 0; + SELECT Id_Ticket FROM tmp.production_buffer ORDER BY Hora, Minuto LIMIT 1; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -32683,48 +32897,33 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgain`(IN vInvoiceRef VARCHAR(15)) +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutAgain`(IN vInvoiceRef VARCHAR(15), vTaxArea VARCHAR(25)) BEGIN /* Para tickets ya facturados, vuelve a repetir el proceso de facturación. * -* @param vInvoice Numero de factura +* @param vInvoiceFk Numero de factura +* @param vTaxArea Numero de factura */ - DECLARE vInvoice INT; + DECLARE vInvoiceFk INT; DECLARE vCountry INT; DECLARE vTaxArea VARCHAR(15); DECLARE vSpainCountryCode INT DEFAULT 1; - SELECT id - INTO vInvoice + SELECT id INTO vInvoiceFk FROM invoiceOut WHERE ref = vInvoiceRef; UPDATE invoiceOut SET pdf = 0 - WHERE id = vInvoice; + WHERE id = vInvoiceFk; - SELECT s.countryFk - INTO vCountry + SELECT s.countryFk INTO vCountry FROM supplier s JOIN invoiceOut io ON io.companyFk = s.id - WHERE io.id = vInvoice; - /* - SELECT IF(a.isEqualizated - AND c.countryFk = vSpainCountryCode - AND i.taxAreaFk = 'NATIONAL', - 'EQU', - i.taxAreaFk) - INTO vTaxArea - FROM invoiceOutSerial i - JOIN invoiceOut io - JOIN ticket t ON t.refFk = io.ref - JOIN address a ON a.id = t.addressFk - JOIN client c ON c.id = t.clientFk - WHERE io.id = vInvoice AND i.code = invoiceSerial(io.clientFk,io.companyFk,'R') - LIMIT 1; - */ + WHERE io.id = vInvoiceFk; + DROP TEMPORARY TABLE IF EXISTS ticketToInvoice; CREATE TEMPORARY TABLE ticketToInvoice @@ -32732,28 +32931,26 @@ BEGIN FROM ticket WHERE refFk = vInvoiceRef; - CALL invoiceExpenceMake(vInvoice); + CALL invoiceExpenceMake(vInvoiceFk); - -- CALL invoiceTaxMake(vInvoice,vCountry,vTaxArea); - CALL invoiceTaxMake(vInvoice,vCountry); + CALL invoiceTaxMake(vInvoiceFk,vTaxArea); UPDATE invoiceOut io JOIN ( SELECT SUM(amount) AS total FROM invoiceOutExpence - WHERE invoiceOutFk = vInvoice + WHERE invoiceOutFk = vInvoiceFk ) base JOIN ( SELECT SUM(vat) AS total FROM invoiceOutTax - WHERE invoiceOutFk = vInvoice + WHERE invoiceOutFk = vInvoiceFk ) vat SET io.amount = base.total + vat.total - WHERE io.id = vInvoice; + WHERE io.id = vInvoiceFk; - CALL vn.invoiceOutBooking(vInvoice); + CALL vn.invoiceOutBooking(vInvoiceFk); - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -33267,7 +33464,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOutMake`( vInvoiceDate DATETIME, OUT vNewInvoiceId INT) BEGIN - +-- OBSOLETO, USAR invoiceOut_make JGF 2019/06/27 /* Creación de facturas emitidas. * REQUIERE previamente tabla ticketToInvoice. * @@ -33493,6 +33690,229 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_new`( + vSerial VARCHAR(255), + vInvoiceDate DATETIME, + vTaxArea VARCHAR(25), + OUT vNewInvoiceId INT) +BEGIN + +/* Creación de facturas emitidas. +* REQUIERE previamente tabla ticketToInvoice. +* +* @param vSerial, vInvoiceDate,vTaxArea +* +* @return vNewInvoiceId +*/ + + DECLARE vSpainCountryCode INT DEFAULT 1; + DECLARE vIsAnySaleToInvoice BOOL; + DECLARE vNewRef VARCHAR(255); + DECLARE vWorker INT DEFAULT vn.getWorker(); + DECLARE vCompany INT; + DECLARE vClient INT; + DECLARE vCplusStandardInvoiceTypeFk INT DEFAULT 1; + DECLARE vCplusCorrectingInvoiceTypeFk INT DEFAULT 6; + DECLARE vCplusSimplifiedInvoiceTypeFk INT DEFAULT 2; + DECLARE vCorrectingSerial VARCHAR(1) DEFAULT 'R'; + DECLARE vSimplifiedSerial VARCHAR(1) DEFAULT 'S'; + + SET vInvoiceDate = IFNULL(vInvoiceDate,CURDATE()); + + SELECT t.clientFk, t.companyFk + INTO vClient, vCompany + FROM ticketToInvoice tt + JOIN ticket t ON t.id = tt.id + LIMIT 1; + + -- Elimina tickets sense moviments +/* UPDATE ticket t + JOIN ticketToInvoice ti ON ti.id = t.id + LEFT JOIN sale s ON s.ticketFk = ti.id + LEFT JOIN expedition e ON e.ticketFk = t.id + LEFT JOIN ticketPackaging tp ON tp.ticketFk = t.id + SET t.shipped = '2000-02-01 00:00:00' + WHERE s.ticketFk IS NULL AND e.ticketFk IS NULL AND e.ticketFk IS NULL; +*/ + -- Eliminem de ticketToInvoice els tickets que no han de ser facturats + DELETE ti.* + FROM ticketToInvoice ti + JOIN ticket t ON t.id = ti.id + JOIN client c ON c.id = t.clientFk + WHERE YEAR(t.shipped) < 2001 + OR c.isTaxDataChecked = FALSE; + + SELECT SUM(quantity * price * (100 - discount)/100) + INTO vIsAnySaleToInvoice + FROM sale s + JOIN ticketToInvoice t on t.id = s.ticketFk; + + IF vIsAnySaleToInvoice THEN + + -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial + -- el trigger añade el siguiente Id_Factura correspondiente a la vSerial + INSERT INTO invoiceOut + ( + ref, + serial, + issued, + clientFk, + dued, + companyFk, + cplusInvoiceType477Fk + ) + SELECT + 1, + vSerial, + vInvoiceDate, + vClient, + getDueDate(vInvoiceDate, dueDay), + vCompany, + IF(vSerial = vCorrectingSerial, + vCplusCorrectingInvoiceTypeFk, + IF(vSerial = vSimplifiedSerial, + vCplusSimplifiedInvoiceTypeFk, + vCplusStandardInvoiceTypeFk)) + FROM client + WHERE id = vClient; + + + SET vNewInvoiceId = LAST_INSERT_ID(); + + SELECT ref + INTO vNewRef + FROM invoiceOut + WHERE id = vNewInvoiceId; + + UPDATE ticket t + JOIN ticketToInvoice ti ON ti.id = t.id + SET t.refFk = vNewRef; + + DROP TEMPORARY TABLE IF EXISTS tmp.updateInter; + CREATE TEMPORARY TABLE tmp.updateInter ENGINE = MEMORY + SELECT s.id,ti.id ticket_id,vWorker Id_Trabajador + FROM ticketToInvoice ti + LEFT JOIN vn.ticketState ts ON ti.id = ts.ticket + JOIN state s + WHERE IFNULL(ts.alertLevel,0) < 3 and s.`code` = vn.getAlert3State(ti.id); + + INSERT INTO vncontrol.inter(state_id,Id_Ticket,Id_Trabajador) + SELECT * FROM tmp.updateInter; + + + INSERT INTO ticketLog (action, userFk,originFk, description) + SELECT 'UPDATE',account.userGetId(),ti.id, CONCAT('Crea factura ',vNewRef) + FROM ticketToInvoice ti; + + CALL invoiceExpenceMake(vNewInvoiceId); + CALL invoiceTaxMake(vNewInvoiceId,vTaxArea); + + UPDATE invoiceOut io + JOIN ( + SELECT SUM(amount) AS total + FROM invoiceOutExpence + WHERE invoiceOutFk = vNewInvoiceId + ) base + JOIN ( + SELECT SUM(vat) AS total + FROM invoiceOutTax + WHERE invoiceOutFk = vNewInvoiceId + ) vat + SET io.amount = base.total + vat.total + WHERE io.id = vNewInvoiceId; + + END IF; + + DROP TEMPORARY TABLE `ticketToInvoice`; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_newFromClient` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_newFromClient`(vClientFk INT, vSerial CHAR(1), vShipped DATE, vCompanyFk INT, vTaxArea VARCHAR(25), OUT vInvoiceId INT) +BEGIN +/** + * Factura los tickets de un cliente + * @param vTicketFk Id del ticket + * @param vSerial Serie de factura + * @return Id factura + */ + CALL invoiceFromClient(vShipped, vClientFk, vCompanyFk); + CALL invoiceOut_new(vSerial, CURDATE(), vTaxArea, vInvoiceId); + + IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN + CALL invoiceOutBooking(vInvoiceId); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `invoiceOut_newFromTicket` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceOut_newFromTicket`(vTicketFk INT, vSerial CHAR(1), vTaxArea VARCHAR(25), OUT vInvoiceId INT) +BEGIN +/** + * Factura un ticket + * @param vTicketFk Id del ticket + * @param vSerial Serie de factura + * @param vTaxArea Area de la factura en caso de querer forzarlo, + * en la mayoria de los casos poner NULL + * @return vInvoiceId + */ + DECLARE EXIT HANDLER FOR SQLEXCEPTION + BEGIN + ROLLBACK; + RESIGNAL; + END; + + START TRANSACTION; + CALL invoiceFromTicket(vTicketFk); + CALL invoiceOut_new(vSerial, CURDATE(), vTaxArea, vInvoiceId); + + IF vSerial <> 'R' AND NOT ISNULL(vInvoiceId) AND vInvoiceId <> 0 THEN + CALL invoiceOutBooking(vInvoiceId); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(1, 3, vInvoiceId); + END IF; + + COMMIT; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `invoiceTaxMake` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -33503,9 +33923,16 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMake`(IN vInvoice INT, IN vCountry INT) +CREATE DEFINER=`root`@`%` PROCEDURE `invoiceTaxMake`(vInvoice INT, vTaxArea VARCHAR(25)) BEGIN - +/** + * Factura un conjunto de tickets. + * + * @param vInvoice, vTaxAreaFk + * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular + * @return tmp.ticketAmount + * @return tmp.ticketTax Impuesto desglosado para cada ticket. + */ DELETE FROM invoiceOutTax WHERE invoiceOutFk = vInvoice; @@ -33516,7 +33943,7 @@ BEGIN SELECT id ticketFk FROM ticketToInvoice; - CALL ticketGetTax(); + CALL ticket_getTax(vTaxArea); INSERT INTO invoiceOutTax( invoiceOutFk, @@ -34915,24 +35342,23 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar`() BEGIN - DECLARE vWarehouseFk INT DEFAULT 1; - DECLARE vCalcTicketShippingFk INT; DECLARE vCalcVisibleFk INT; DECLARE vCalcAvailableFk INT; - CALL cache.ticketShippingRefresh(vCalcTicketShippingFk, FALSE, 1); CALL cache.visible_refresh(vCalcVisibleFk, TRUE, 1); CALL cache.available_refresh(vCalcAvailableFk, FALSE, vWarehouseFk, CURDATE()); DROP TEMPORARY TABLE IF EXISTS tmp.ticketState; CREATE TEMPORARY TABLE tmp.ticketState + (INDEX (ticketFk)) ENGINE = MEMORY SELECT * FROM vn.ticketState WHERE updated >= TIMESTAMPADD(WEEK, -1, CURDATE()) AND productionOrder < 6; DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadar; CREATE TEMPORARY TABLE tmp.itemShelvingRadar + (INDEX (itemFk)) ENGINE = MEMORY SELECT *, @saldo:= CAST(IF(itemFk != @item, visibleTotal - Altillo, @saldo) - quantity AS DECIMAL(10,0)) as saldo, @item:= itemFk as item @@ -34941,8 +35367,12 @@ BEGIN SELECT * FROM ( - SELECT IF(tst.updated AND st.`order` BETWEEN 4 AND 5 , HOUR(tst.updated), tsh.shippingHour) as Hora, - IF(tst.updated AND st.`order` BETWEEN 4 AND 5, MINUTE(tst.updated), tsh.shippingMinute) as Minuto, + SELECT IF(tst.updated AND st.`order` BETWEEN 4 AND 5 , + HOUR(tst.updated), + IF(HOUR(t.shipped), HOUR(t.shipped), HOUR(z.`hour`))) as Hora, + IF(tst.updated AND st.`order` BETWEEN 4 AND 5, + MINUTE(tst.updated), + IF(MINUTE(t.shipped), MINUTE(t.shipped), MINUTE(z.`hour`))) as Minuto, s.itemFk, i.longName as concept, s.quantity, @@ -34954,14 +35384,15 @@ BEGIN i.upToDown, i.subName FROM tmp.ticketState tst - LEFT JOIN vn.state st ON st.id = tst.stateFk - JOIN vn.sale s ON s.ticketFk = tst.ticketFk - JOIN vn.item i ON i.id = s.itemFk - LEFT JOIN vn.itemPlacement ip ON ip.itemFk = i.id AND ip.warehouseFk = vWarehouseFk + LEFT JOIN state st ON st.id = tst.stateFk + JOIN sale s ON s.ticketFk = tst.ticketFk + JOIN item i ON i.id = s.itemFk + LEFT JOIN itemPlacement ip ON ip.itemFk = i.id AND ip.warehouseFk = vWarehouseFk JOIN cache.visible v ON v.calc_id = vCalcVisibleFk AND v.item_id = s.itemFk - JOIN cache.ticketShipping tsh ON tsh.calc_id = vCalcTicketShippingFk AND tsh.ticketFk = tst.ticketFk - JOIN vn.itemShelvingStock iss ON iss.itemFk = s.itemFk - WHERE tst.productionOrder < 5 + JOIN itemShelvingStock iss ON iss.itemFk = s.itemFk + JOIN ticket t ON t.id = s.ticketFk + LEFT JOIN vn.zone z ON z.id = t.zoneFk + WHERE tst.productionOrder < 5 UNION ALL @@ -34989,16 +35420,13 @@ BEGIN ) sub2; - - DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadarMin; CREATE TEMPORARY TABLE tmp.itemShelvingRadarMin + (INDEX (itemFk)) ENGINE = MEMORY SELECT *, min(saldo) as minSaldo , min(saldo) as minSaldo2 FROM tmp.itemShelvingRadar GROUP BY itemFk; - - SELECT Hora, Minuto, i.id as itemFk, @@ -35043,7 +35471,10 @@ BEGIN GROUP BY itemFk) sub3 ON sub3.itemFk = i.id GROUP BY i.id HAVING saldo <= 0 OR saldoFinal ; - + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketState; + DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadar; + DROP TEMPORARY TABLE IF EXISTS tmp.itemShelvingRadarMin; END ;; DELIMITER ; @@ -35051,7 +35482,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingRadar_beta` */; +/*!50003 DROP PROCEDURE IF EXISTS `itemShelvingRadar_betaKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -35061,9 +35492,9 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar_beta`() +CREATE DEFINER=`root`@`%` PROCEDURE `itemShelvingRadar_betaKk`() BEGIN - + /* obsoleto usar itemShelvingRadar*/ DECLARE vWarehouseFk INT DEFAULT 1; DECLARE vCalcTicketShippingFk INT; DECLARE vCalcVisibleFk INT; @@ -35431,12 +35862,11 @@ BEGIN DECLARE vTicketFk INT; DECLARE vClientFk INT; DECLARE vCompanyVnlFk INT DEFAULT 442; + DECLARE vAgencyModeOthersFk INT DEFAULT 14; DECLARE vVisible INT DEFAULT 0; DECLARE vCalc INT; DECLARE vCurrentTime VARCHAR(5); - /*MODIFICADO POR KIKE*/ - /*PRIMERO LLAMAMOS A VISIBLE REFRESH Y OBTENEMOS EL VCALC PARA OBTENER EL VISIBLE */ CALL cache.visible_refresh(vCalc, FALSE, vWarehouseFk); SELECT IFNULL(visible,0) INTO vVisible @@ -35451,14 +35881,14 @@ BEGIN JOIN vn.address a ON a.id=t.addressFk WHERE t.warehouseFk = vWarehouseFk AND t.clientFk = vClientFk - AND date(t.shipped) = CURDATE() + AND DATE(t.shipped) = CURDATE() AND a.isDefaultAddress LIMIT 1; - + IF vTicketFk IS NULL THEN - - CALL vn.ticketCreate(vClientFk, CURDATE(), vWarehouseFk, vCompanyVnlFk, NULL, NULL, NULL, CURDATE(), vTicketFk); - + + CALL vn.ticketCreateWithoutZone(vClientFk, CURDATE(), vWarehouseFk, vCompanyVnlFk, NULL, vAgencyModeOthersFk, NULL, CURDATE(), account.userGetId(),vTicketFk); + END IF; INSERT INTO sale(ticketFk, itemFk, concept, quantity, price, discount) @@ -36408,7 +36838,7 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `nestTree`( vSourceSchema VARCHAR(45), @@ -36423,15 +36853,16 @@ BEGIN CALL util.exec(CONCAT('DROP TEMPORARY TABLE IF EXISTS tmp.', vTableClone)); CALL util.exec(CONCAT( 'CREATE TEMPORARY TABLE tmp.', vTableClone, - ' ENGINE = MEMORY' + ' ENGINE = MEMORY', ' SELECT * FROM ', vSourceSchema, '.', vSourceTable )); CALL util.exec(CONCAT( - 'DROP TABLE IF EXISTS ', vDestinationSchema, '.', vDestinationTable)); + 'TRUNCATE TABLE ', vDestinationSchema, '.', vDestinationTable)); CALL util.exec(CONCAT( - 'CREATE TABLE ', vDestinationSchema, '.', vDestinationTable, - ' SELECT + 'INSERT INTO ', vDestinationSchema, '.', vDestinationTable, + '(id, name, lft, rgt, depth, sons)', + 'SELECT node.id, node.name, node.lft, @@ -36983,26 +37414,18 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `productionSectorList`() BEGIN - DECLARE vCalcFk INT; - - -- CALL vn.ticketDepartureMake; - CALL cache.ticketShippingRefresh(vCalcFk, FALSE, 1); - - SELECT isa.*, cast(max(isa.quantity mod isa.packing) as DECIMAL(10,0)) as picos, sum(isa.available) as totalAvailable, - tsh.shippingHour Hora, - tsh.shippingMinute Minuto, + IF (HOUR(isa.shipped),HOUR(isa.shipped), HOUR(isa.`hour`)) Hora, + IF (MINUTE(isa.shipped),MINUTE(isa.shipped), MINUTE(isa.`hour`)) Minuto, i.subName FROM vn.itemShelvingAvailable isa JOIN vn.item i ON i.id = isa.itemFk - LEFT JOIN cache.ticketShipping tsh ON tsh.ticketFk = isa.ticketFk - WHERE tsh.calc_id = vCalcFk AND MOD(TRUNCATE(isa.quantity,0), isa.packing)= 0 + WHERE MOD(TRUNCATE(isa.quantity,0), isa.packing)= 0 AND isa.sectorProdPriority <= 3 GROUP BY saleFk HAVING isa.quantity <= totalAvailable; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37024,7 +37447,6 @@ BEGIN DECLARE vDone BIT DEFAULT 0; DECLARE vCustomer MEDIUMINT; - DECLARE vNewShipped DATE; DECLARE vWarehouse TINYINT; DECLARE vCompany MEDIUMINT; DECLARE vAddress MEDIUMINT; @@ -37044,12 +37466,12 @@ BEGIN DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; - SELECT clientFk, TIMESTAMPADD(DAY, 1,shipped), warehouseFk, companyFk, addressFk - INTO vCustomer, vNewShipped, vWarehouse, vCompany, vAddress + SELECT clientFk, warehouseFk, companyFk, addressFk + INTO vCustomer, vWarehouse, vCompany, vAddress FROM ticket WHERE id = vOriginTicket; - CALL ticketCreate(vCustomer, vNewShipped, vWarehouse, vCompany, vAddress, vRefundAgencyMode,NULL,vNewShipped,vNewTicket); + CALL ticketCreate(vCustomer, CURDATE(), vWarehouse, vCompany, vAddress, vRefundAgencyMode, NULL, CURDATE(), vNewTicket); SET vDone := 0; OPEN vRsMainTicket ; @@ -37278,12 +37700,11 @@ CREATE DEFINER=`root`@`%` PROCEDURE `routeUpdateM3`(vRoute INT) BEGIN UPDATE vn.route r - JOIN (SELECT Id_Ruta, SUM(volume) AS m3 - FROM vn2008.v_Movimientos_Volumen_shipping_charge - WHERE Id_Ruta = vRoute - ) v ON v.Id_Ruta = r.id + JOIN (SELECT routeFk, SUM(volume) AS m3 + FROM ticketGetVolume + WHERE routeFk = vRoute + ) v ON v.routeFk = r.id SET r.m3 = v.m3; - END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -37623,7 +38044,7 @@ BEGIN IF vNewTicket IS NULL THEN CALL ticketCreate(vclientFk , vShipped , vWarehouseFk , vCompanyFk , vAddressFk , vAgencyModeFk , NULL,vLanded , vNewTicket); - CALL vn2008.bionic_calc_ticket(vNewTicket); + /*CALL vn2008.bionic_calc_ticket(vNewTicket);*/ END IF; INSERT INTO ticketTracking(ticketFk, workerFk, stateFk) @@ -37807,9 +38228,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -37820,15 +38241,7 @@ BEGIN 'scan', 'vn2008', 'scanTree' - ); - - ALTER TABLE vn2008.scanTree - ADD COLUMN lastScanned DATETIME NULL, - ADD COLUMN routeCount INT NULL, - ADD COLUMN minRoute INT, - ADD COLUMN maxRoute INT, - ADD COLUMN scanned INT, - ADD PRIMARY KEY(`id`); + ); UPDATE vn2008.scanTree st JOIN ( @@ -38040,13 +38453,12 @@ DELIMITER ; /*!50003 SET collation_connection = @saved_col_connection */ ; ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `stockBuyed` */; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_general_ci ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -38060,7 +38472,7 @@ BEGIN SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; INSERT INTO stockBuyed(user, buyed, `date`) - SELECT tr.user_id, SUM(0.6 * ( amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed, vDate + SELECT tr.user_id, SUM(0.6 * ( amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed, vDate FROM tmp_item i JOIN vn2008.Articles a ON a.Id_Article = i.item_id JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id @@ -38078,14 +38490,13 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -ALTER DATABASE `vn` CHARACTER SET utf8 COLLATE utf8_unicode_ci ; /*!50003 DROP PROCEDURE IF EXISTS `stockBuyedByWorker` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -38098,7 +38509,7 @@ BEGIN SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed + SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed FROM tmp_item i JOIN vn2008.Articles a ON a.Id_Article = i.item_id JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id @@ -38118,9 +38529,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -38133,7 +38544,7 @@ BEGIN SELECT Volumen INTO vVolume FROM vn2008.Cubos WHERE Id_Cubo = 'cc' LIMIT 1; - SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn2008.cm3(Id_Compra))/vVolume buyed + SELECT c.Id_Entrada, a.Id_Article, a.Article, i.amount Cantidad, (0.6 * ( i.amount / c.packing ) * vn.buy_getVolume(Id_Compra))/vVolume buyed FROM tmp.item i JOIN vn2008.Articles a ON a.Id_Article = i.item_id JOIN vn2008.Tipos t ON a.tipo_id = t.tipo_id @@ -38594,39 +39005,42 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculate`( - vDate DATE, - vAddress INT, - vAgencyMode INT) + vLanded DATE, + vAddressFk INT, + vAgencyModeFk INT) proc: BEGIN /** * Calcula los articulos disponibles y sus precios * - * @param vDate Fecha de recepcion de mercancia - * @param vAddress Id del consignatario - * @param vAgencyMode Id de la agencia - * @return tmp.ticketCalculateItem, tmp.ticketComponentPrice + * @table tmp.item(itemFk) Listado de artículos a calcular + * @param vLanded Fecha de recepcion de mercancia + * @param vAddressFk Id del consignatario + * @param vAgencyModeFk Id de la agencia + * @return tmp.ticketCalculateItem(itemFk, available, producer, + * item, size, stems, category, inkFk, image, origin, price) + * @return tmp.ticketLot(warehouseFk, itemFk, available, buyFk) + * @return tmp.ticketComponent + * @return tmp.ticketComponentPrice + * @return tmp.zoneGetShipped + **/ DECLARE vAvailableCalc INT; DECLARE vShipment DATE; - DECLARE vAgencyId INT; DECLARE vClient INT; DECLARE vWarehouseFk SMALLINT; DECLARE vDone BOOL; DECLARE cTravelTree CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.agencyHourGetShipped; + SELECT warehouseFk, shipped FROM tmp.zoneGetShipped; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; -- Establece los almacenes y las fechas que van a entrar al disponible - SELECT agencyFk INTO vAgencyId - FROM agencyMode WHERE id = vAgencyMode; - SELECT clientFk INTO vClient - FROM address WHERE id = vAddress; + FROM address WHERE id = vAddressFk; - CALL vn.agencyHourGetShipped(vDate, vAddress, vAgencyId); + CALL vn.zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; CREATE TEMPORARY TABLE tmp.ticketLot( @@ -38643,7 +39057,7 @@ proc: BEGIN l: LOOP SET vDone = FALSE; - FETCH cTravelTree INTO vWarehouseFk, vShipment; + FETCH cTravelTree INTO vWarehouseFk, vShipment; IF vDone THEN LEAVE l; @@ -38653,8 +39067,7 @@ proc: BEGIN CALL buyUltimate (vWarehouseFk, vShipment); INSERT INTO tmp.ticketLot (warehouseFk, itemFk, available, buyFk) - SELECT - vWarehouseFk, + SELECT vWarehouseFk, i.item_id, IFNULL(i.available, 0), bu.buyFk @@ -38663,7 +39076,7 @@ proc: BEGIN LEFT JOIN item it ON it.id = i.item_id LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = i.item_id WHERE i.calc_id = vAvailableCalc - AND it.id != 100 + AND it.id != 100 AND i.available > 0; DROP TEMPORARY TABLE tmp.buyUltimate; @@ -38671,7 +39084,7 @@ proc: BEGIN CLOSE cTravelTree; - CALL vn.ticketComponentCalculate(vAddress, vAgencyMode); + CALL vn.ticketComponentCalculate(vAddressFk, vAgencyModeFk); DROP TEMPORARY TABLE IF EXISTS tmp.ticketCalculateItem; CREATE TEMPORARY TABLE tmp.ticketCalculateItem @@ -38698,9 +39111,6 @@ proc: BEGIN ) bl ON bl.itemFk = b.itemFk GROUP BY b.itemFk; - DROP TEMPORARY TABLE - tmp.ticketComponent, - tmp.ticketLot; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -38737,21 +39147,21 @@ BEGIN FROM orderTicket WHERE ticketFk = vTicketOld; - SELECT t.clientFk , t.warehouseFk, date(t.shipped), t.addressFk, t.agencyModeFk, t.landed, a.agencyFk + SELECT t.clientFk, t.warehouseFk, date(t.shipped), t.addressFk, t.agencyModeFk, t.landed, a.agencyFk INTO vClient, vWarehouse, vShipped, vAddress, vAgencyMode, vLanded, vAgency FROM vn.agencyMode a JOIN vn.ticket t ON t.agencyModeFk = a.id WHERE t.id = vTicketNew; - DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; - CREATE TEMPORARY TABLE tmp.agencyHourGetShipped ENGINE = MEMORY - SELECT vWarehouse warehouseFk, vShipped shipped, vLanded landed; + DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetShipped; + CALL zoneGetShippedWarehouse(vLanded, vAddress, vAgencyMode); + DELETE FROM tmp.zoneGetShipped WHERE warehouseFk <> vWarehouse; CALL buyUltimate(vWarehouse, vShipped); -- rellena la tabla tmp.buyUltimate con la ultima compra DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouse warehouseFk,NULL available,s.itemFk, bu.buyFk + SELECT vWarehouse warehouseFk, NULL available, s.itemFk, bu.buyFk FROM sale s LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk WHERE s.ticketFk = vTicketOld GROUP BY s.itemFk; @@ -38780,11 +39190,10 @@ BEGIN CALL ticketComponentUpdateSale(6); IF vLanded IS NULL THEN - CALL agencyHourGetLanded(vShipped, vAddress, vAgency,vWarehouse); - + CALL zoneGetLanded(vShipped, vAddress, vAgency,vWarehouse); UPDATE ticket t - JOIN tmp.agencyHourGetLanded ah ON t.warehouseFk = ah.warehouseFk - SET t.landed = ah.landed + JOIN tmp.zoneGetLanded zgl ON t.warehouseFk = zgl.warehouseFk + SET t.landed = zgl.landed WHERE t.id = vTicketNew; END IF; @@ -38795,7 +39204,63 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.buyUltimate; DROP TEMPORARY TABLE IF EXISTS tmp.sale; DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; - DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; + DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetLanded; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateFromType` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateFromType`( vLanded DATE, + vAddressFk INT, + vAgencyModeFk INT, + vTypeFk INT) +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.item; + CREATE TEMPORARY TABLE tmp.item + (INDEX (itemFk)) + ENGINE = MEMORY + SELECT id itemFk FROM vn.item + WHERE typeFk = vTypeFk; + + CALL ticketCalculate(vLanded, vAddressFk, vAgencyModeFk); + DROP TEMPORARY TABLE tmp.item; + DROP TEMPORARY TABLE tmp.ticketLot; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculatePurge` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculatePurge`() +BEGIN + DROP TEMPORARY TABLE + tmp.ticketCalculateItem, + tmp.ticketComponentPrice, + tmp.ticketComponent, + tmp.ticketLot, + tmp.zoneGetShipped; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -38815,15 +39280,15 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSale`(IN vSale BIGINT) proc: BEGIN - DECLARE vShipped DATE; - DECLARE vWarehouse SMALLINT; - DECLARE vAgencyMode INT; - DECLARE vAddress INT; + DECLARE vWarehouseFk SMALLINT; + DECLARE vAgencyModeFk INT; + DECLARE vAddressFk INT; DECLARE vTicket BIGINT; DECLARE vItem BIGINT; DECLARE vLanded DATE; DECLARE vTicketFree BOOLEAN DEFAULT TRUE; + DeclARE vHasZone BOOLEAN DEFAULT FALSE; SELECT FALSE INTO vTicketFree @@ -38840,38 +39305,181 @@ proc: BEGIN WHERE id = vSale; SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.agencyModeFk, t.landed - INTO vWarehouse, vShipped, vAddress, vAgencyMode, vLanded + INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded FROM agencyMode a JOIN ticket t ON t.agencyModeFk = a.id WHERE t.id = vTicket; - - DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; - CREATE TEMPORARY TABLE tmp.agencyHourGetShipped ENGINE = MEMORY - SELECT vWarehouse warehouseFk, vShipped shipped, vLanded landed; + + CALL zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); + + SELECT shipped = vShipped INTO vHasZone + FROM tmp.zoneGetShipped + WHERE warehouseFk = vWarehouseFk; + + IF vHasZone = FALSE THEN + CALL util.throw('not zone with this parameters'); + END IF; - CALL buyUltimate (vWarehouse, vShipped); + CALL buyUltimate (vWarehouseFk, vShipped); DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; CREATE TEMPORARY TABLE tmp.ticketLot - SELECT vWarehouse warehouseFk, NULL available, vItem itemFk, buyFk + SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk FROM tmp.buyUltimate WHERE itemFk = vItem; - CALL ticketComponentCalculate(vAddress, vAgencyMode); + CALL ticketComponentCalculate(vAddressFk, vAgencyModeFk); DROP TEMPORARY TABLE IF EXISTS tmp.sale; CREATE TEMPORARY TABLE tmp.sale (PRIMARY KEY (saleFk)) ENGINE = MEMORY - SELECT vSale saleFk,vWarehouse warehouseFk; + SELECT vSale saleFk,vWarehouseFk warehouseFk; CALL ticketComponentUpdateSale(IF(vTicketFree,1,6)); - INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); + + DROP TEMPORARY TABLE tmp.buyUltimate; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateSaleForcePrice` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSaleForcePrice`(IN vSale BIGINT) +proc: BEGIN + DECLARE vShipped DATE; + DECLARE vWarehouseFk SMALLINT; + DECLARE vAddressFk INT; + DECLARE vTicket BIGINT; + DECLARE vItem BIGINT; + DECLARE vLanded DATE; + DECLARE vZoneFk INT; + DECLARE vHasZone BOOLEAN DEFAULT FALSE; + + + SELECT ticketFk, itemFk + INTO vTicket, vItem + FROM sale + WHERE id = vSale; + + SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.landed, t.zoneFk + INTO vWarehouseFk, vShipped, vAddressFk, vLanded, vZoneFk + FROM agencyMode a + JOIN ticket t ON t.agencyModeFk = a.id + WHERE t.id = vTicket; + + IF vZoneFk IS NULL THEN + CALL util.throw('ticket without zone'); + END IF; + + CALL buyUltimate (vWarehouseFk, vShipped); + + DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; + CREATE TEMPORARY TABLE tmp.ticketLot + SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk + FROM tmp.buyUltimate + WHERE itemFk = vItem; + + CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); + + DROP TEMPORARY TABLE IF EXISTS tmp.sale; + CREATE TEMPORARY TABLE tmp.sale + (PRIMARY KEY (saleFk)) ENGINE = MEMORY + SELECT vSale saleFk,vWarehouseFk warehouseFk; + + CALL ticketComponentUpdateSale(1); + + INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) + VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); + + DROP TEMPORARY TABLE tmp.buyUltimate; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketCalculateSaleForcePriceKk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketCalculateSaleForcePriceKk`(IN vSale BIGINT) +proc: BEGIN + + DECLARE vShipped DATE; + DECLARE vWarehouseFk SMALLINT; + DECLARE vAgencyModeFk INT; + DECLARE vAddressFk INT; + DECLARE vTicket BIGINT; + DECLARE vItem BIGINT; + DECLARE vLanded DATE; + DeclARE vHasZone BOOLEAN DEFAULT FALSE; + + SELECT ticketFk, itemFk + INTO vTicket, vItem + FROM sale + WHERE id = vSale; + + SELECT t.warehouseFk, DATE(t.shipped), t.addressFk, t.agencyModeFk, t.landed + INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded + FROM agencyMode a + JOIN ticket t ON t.agencyModeFk = a.id + WHERE t.id = vTicket; + + CALL zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); + + SELECT shipped = vShipped INTO vHasZone + FROM tmp.zoneGetShipped + WHERE warehouseFk = vWarehouseFk; + + IF vHasZone = FALSE THEN + CALL util.throw('not zone with this parameters'); + END IF; + + CALL buyUltimate (vWarehouseFk, vShipped); + + DELETE FROM tmp.buyUltimate WHERE itemFk != vItem; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; + CREATE TEMPORARY TABLE tmp.ticketLot + SELECT vWarehouseFk warehouseFk, NULL available, vItem itemFk, buyFk + FROM tmp.buyUltimate + WHERE itemFk = vItem; + + CALL ticketComponentCalculate(vAddressFk, vAgencyModeFk); + + DROP TEMPORARY TABLE IF EXISTS tmp.sale; + CREATE TEMPORARY TABLE tmp.sale + (PRIMARY KEY (saleFk)) ENGINE = MEMORY + SELECT vSale saleFk,vWarehouseFk warehouseFk; + + CALL ticketComponentUpdateSale(1); + + INSERT INTO vn.ticketLog (originFk, userFk, `action`, description) + VALUES (vTicket, account.userGetId(), 'update', CONCAT('Bionizo linea id ', vSale)); DROP TEMPORARY TABLE tmp.buyUltimate; END ;; @@ -38884,128 +39492,125 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketClosure`() -BEGIN -/** - * Realiza el cierre de todos los - * tickets de la table ticketClosure. - */ - DECLARE vDone BOOL; - DECLARE vClientFk INT; - DECLARE vTicketFk INT; - DECLARE vIsTaxDataChecked BOOL; - DECLARE vCompanyFk INT; - DECLARE vShipped DATE; - DECLARE vPriority INT DEFAULT 1; - DECLARE vReportDeliveryNote INT DEFAULT 1; - DECLARE vNewInvoiceId INT; - DECLARE vIsUeeMember BOOL; - DECLARE vWithPackage BOOL; - - DECLARE cur CURSOR FOR - SELECT ticketFk FROM tmp.ticketClosure; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN - RESIGNAL; - END; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure2; - CREATE TEMPORARY TABLE tmp.ticketClosure2 - SELECT ticketFk FROM tmp.ticketClosure; - INSERT INTO tmp.ticketClosure - SELECT id FROM stowaway s - JOIN tmp.ticketClosure2 tc ON s.shipFk = tc.ticketFk; - OPEN cur; - - proc: LOOP - SET vDone = FALSE; - - FETCH cur INTO vTicketFk; - - IF vDone THEN - LEAVE proc; - END IF; - - -- ticketClosure start - SELECT - c.id, - c.isTaxDataChecked, - t.companyFk, - t.shipped, - co.isUeeMember, - w.isManaged - INTO vClientFk, - vIsTaxDataChecked, - vCompanyFk, - vShipped, - vIsUeeMember, - vWithPackage - FROM ticket t - JOIN `client` c ON c.id = t.clientFk - JOIN province p ON p.id = c.provinceFk - JOIN country co ON co.id = p.countryFk - JOIN warehouse w ON w.id = t.warehouseFk - WHERE t.id = vTicketFk; - - -- Fusión de ticket - -- CALL mergeTicketUnattended(vTicketFk, TRUE); JGF 2017/12/04 - - INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) - (SELECT vTicketFk, p.id, COUNT(*) - FROM expedition e - JOIN packaging p ON p.itemFk = e.itemFk - WHERE e.ticketFk = vTicketFk AND p.isPackageReturnable - AND vWithPackage - GROUP BY p.itemFk); - - -- No retornables o no catalogados - INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed) - (SELECT e.itemFk, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 - FROM expedition e - JOIN item i ON i.id = e.itemFk - LEFT JOIN packaging p ON p.itemFk = i.id - WHERE e.ticketFk = vTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 - AND getSpecialPrice(e.itemFk, vClientFk) > 0 - GROUP BY e.itemFk); - - IF(vIsUeeMember = FALSE) THEN - - -- Facturacion rapida - CALL ticketTrackingAdd(vTicketFk, 'DELIVERED', 20); - -- Facturar si está contabilizado - IF vIsTaxDataChecked THEN - - IF (SELECT clientTaxArea(vClientFk, vCompanyFk)) = 'NATIONAL' THEN - CALL invoiceMakeByClient( - vClientFk, - (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), - vShipped, - vCompanyFk, - vNewInvoiceId); - ELSE - CALL invoiceMakeByTicket(vTicketFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'R')), vNewInvoiceId); - END IF; - - END IF; - ELSE - -- Albaran_print - CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); - INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); - END IF; - - -- ticketClosure end - END LOOP; - - CLOSE cur; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure2; +BEGIN +/** + * Realiza el cierre de todos los + * tickets de la table ticketClosure. + */ + DECLARE vDone BOOL; + DECLARE vClientFk INT; + DECLARE vTicketFk INT; + DECLARE vIsTaxDataChecked BOOL; + DECLARE vCompanyFk INT; + DECLARE vShipped DATE; + DECLARE vPriority INT DEFAULT 1; + DECLARE vReportDeliveryNote INT DEFAULT 1; + DECLARE vNewInvoiceId INT; + DECLARE vHasDailyInvoice BOOL; + DECLARE vWithPackage BOOL; + + DECLARE cur CURSOR FOR + SELECT ticketFk FROM tmp.ticketClosure; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN + RESIGNAL; + END; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure2; + CREATE TEMPORARY TABLE tmp.ticketClosure2 + SELECT ticketFk FROM tmp.ticketClosure; + INSERT INTO tmp.ticketClosure + SELECT id FROM stowaway s + JOIN tmp.ticketClosure2 tc ON s.shipFk = tc.ticketFk; + OPEN cur; + + proc: LOOP + SET vDone = FALSE; + + FETCH cur INTO vTicketFk; + + IF vDone THEN + LEAVE proc; + END IF; + + -- ticketClosure start + SELECT + c.id, + c.isTaxDataChecked, + t.companyFk, + t.shipped, + co.hasDailyInvoice, + w.isManaged + INTO vClientFk, + vIsTaxDataChecked, + vCompanyFk, + vShipped, + vHasDailyInvoice, + vWithPackage + FROM ticket t + JOIN `client` c ON c.id = t.clientFk + JOIN province p ON p.id = c.provinceFk + JOIN country co ON co.id = p.countryFk + JOIN warehouse w ON w.id = t.warehouseFk + WHERE t.id = vTicketFk; + + INSERT INTO ticketPackaging (ticketFk, packagingFk, quantity) + (SELECT vTicketFk, p.id, COUNT(*) + FROM expedition e + JOIN packaging p ON p.itemFk = e.itemFk + WHERE e.ticketFk = vTicketFk AND p.isPackageReturnable + AND vWithPackage + GROUP BY p.itemFk); + + -- No retornables o no catalogados + INSERT INTO sale (itemFk, ticketFk, concept, quantity, price, isPriceFixed) + (SELECT e.itemFk, vTicketFk, i.name, COUNT(*) AS amount, getSpecialPrice(e.itemFk, vClientFk), 1 + FROM expedition e + JOIN item i ON i.id = e.itemFk + LEFT JOIN packaging p ON p.itemFk = i.id + WHERE e.ticketFk = vTicketFk AND IFNULL(p.isPackageReturnable, 0) = 0 + AND getSpecialPrice(e.itemFk, vClientFk) > 0 + GROUP BY e.itemFk); + + IF(vHasDailyInvoice) THEN + + -- Facturacion rapida + CALL ticketTrackingAdd(vTicketFk, 'DELIVERED', 20); + -- Facturar si está contabilizado + IF vIsTaxDataChecked THEN + + IF (SELECT clientTaxArea(vClientFk, vCompanyFk)) = 'NATIONAL' THEN + CALL invoiceMakeByClient( + vClientFk, + (SELECT invoiceSerial(vClientFk, vCompanyFk, 'M')), + vShipped, + vCompanyFk, + vNewInvoiceId); + ELSE + CALL invoiceMakeByTicket(vTicketFk, (SELECT invoiceSerial(vClientFk, vCompanyFk, 'R')), vNewInvoiceId); + END IF; + + END IF; + ELSE + -- Albaran_print + CALL ticketTrackingAdd(vTicketFk, (SELECT vn.getAlert3State(vTicketFk)), 20); + INSERT INTO printServerQueue(priorityFk, reportFk, param1) VALUES(vPriority, vReportDeliveryNote, vTicketFk); + END IF; + + -- ticketClosure end + END LOOP; + + CLOSE cur; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketClosure2; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -39266,302 +39871,258 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentCalculate`(IN `vAddressFk` INT, IN `vAgencyModeFk` INT) -proc: BEGIN -/** - * Calcula los componentes de un ticket - * - * @param vAddressFk Id del consignatario - * @param vAgencyModeFk Id del modo de agencia - * @return tmp.ticketComponent, tmp.ticketComponentPrice - */ - - DECLARE vClientFk INT; - DECLARE vGeneralInflationCoefficient INT DEFAULT 1; - DECLARE vMinimumDensityWeight INT DEFAULT 167; - DECLARE vBoxFreightItem INT DEFAULT 71; - DECLARE vBoxVolume BIGINT; -- DEFAULT 138000; - DECLARE vSpecialPriceComponent INT DEFAULT 10; - DECLARE vExtraFreightComponent INT DEFAULT 14; - DECLARE vDeliveryComponent INT DEFAULT 15; - DECLARE vRecoveryComponent INT DEFAULT 17; - DECLARE vSellByPacketComponent INT DEFAULT 22; - DECLARE vBuyValueComponent INT DEFAULT 28; - DECLARE vMarginComponent INT DEFAULT 29; - DECLARE vDiscountLastItemComponent INT DEFAULT 32; - DECLARE vExtraBaggedComponent INT DEFAULT 38; - DECLARE vManaAutoComponent INT DEFAULT 39; - DECLARE vFreightBonusComponent INT DEFAULT 41; - - - SELECT volume INTO vBoxVolume - FROM vn.packaging - WHERE id = '94'; - - SELECT clientFk INTO vClientFK - FROM address - WHERE id = vAddressFk; - - SET @rate2 := 0; - SET @rate3 := 0; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate; - CREATE TEMPORARY TABLE tmp.ticketComponentCalculate - (PRIMARY KEY (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT - tl.itemFk, tl.warehouseFk, tl.available, - IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2, - IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3, - IFNULL(pf.rate3, 0) AS minPrice, - IFNULL(pf.packing, b.packing) packing, - IFNULL(pf.`grouping`, b.`grouping`) `grouping`, - ABS(IFNULL(pf.box, b.groupingMode)) groupingMode, - tl.buyFk, i.typeFk - FROM tmp.ticketLot tl - JOIN buy b ON b.id = tl.buyFk - JOIN item i ON i.id = tl.itemFk - JOIN itemType it ON it.id = i.typeFk - LEFT JOIN itemCategory ic ON ic.id = it.categoryFk - LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk - LEFT JOIN ( - SELECT * FROM ( - SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, aho.warehouseFk - FROM priceFixed pf - JOIN tmp.agencyHourGetShipped aho ON pf.warehouseFk = aho.warehouseFk OR pf.warehouseFk = 0 - WHERE aho.shipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC - ) tpf - GROUP BY tpf.itemFk, tpf.warehouseFk - ) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk - WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.display <> 0; - - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent; - CREATE TEMPORARY TABLE tmp.ticketComponent ( - `warehouseFk` INT UNSIGNED NOT NULL, - `itemFk` INT NOT NULL, - `componentFk` INT UNSIGNED NOT NULL, - `cost` DECIMAL(10,4) NOT NULL, - INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC), - UNIQUE INDEX `itemWarehouseComponent` (`itemFk` ASC, `warehouseFk` ASC, `componentFk` ASC)); - - - - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vBuyValueComponent, - b.buyingValue + b.freightValue + b.packageValue + b.comissionValue - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) - SELECT - tcc.warehouseFk, - tcc.itemFk, - vMarginComponent, - tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase; - CREATE TEMPORARY TABLE tmp.ticketComponentBase ENGINE = MEMORY - SELECT tc.itemFk, ROUND(SUM(tc.cost), 4) AS base, tc.warehouseFk - FROM tmp.ticketComponent tc - GROUP BY tc.itemFk, warehouseFk; - - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, tcb.itemFk, vRecoveryComponent, ROUND(tcb.base * LEAST(cr.recobro, 0.25), 3) - FROM tmp.ticketComponentBase tcb - JOIN bi.claims_ratio cr ON cr.Id_Cliente = vClientFk - WHERE cr.recobro > 0.009; - - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, tcb.itemFk, vManaAutoComponent, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto - FROM tmp.ticketComponentBase tcb - JOIN `client` c on c.id = vClientFk - JOIN bs.mana_spellers ms ON c.salesPersonFk = ms.Id_Trabajador - WHERE ms.prices_modifier_activated - HAVING manaAuto <> 0; - - INSERT INTO tmp.ticketComponent - SELECT - tcb.warehouseFk, - tcb.itemFk, - cr.id, - GREATEST(IFNULL(ROUND(tcb.base * cr.tax, 4), 0), tcc.minPrice - tcc.rate3) - FROM tmp.ticketComponentBase tcb - JOIN componentRate cr - JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk - LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - WHERE cr.id = vDiscountLastItemComponent AND cr.tax <> 0 AND tcc.minPrice < tcc.rate3 AND sp.value IS NULL; - - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, tcc.itemFk, vSellByPacketComponent, tcc.rate2 - tcc.rate3 - FROM tmp.ticketComponentCalculate tcc - JOIN buy b ON b.id = tcc.buyFk - LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk - WHERE sp.value IS NULL; - - INSERT INTO tmp.ticketComponent - SELECT - tcc.warehouseFK, - tcc.itemFk, - vDeliveryComponent, - vGeneralInflationCoefficient - * ROUND(( - i.compression - * r.cm3 - * IF(am.deliveryMethodFk = 1, (GREATEST(i.density, vMinimumDensityWeight) / vMinimumDensityWeight), 1) - * IFNULL(amz.price - * amz.inflation, 50)) / vBoxVolume, 4 - ) cost - FROM tmp.ticketComponentCalculate tcc - JOIN item i ON i.id = tcc.itemFk - JOIN agencyMode am ON am.id = vAgencyModeFk - JOIN `address` a ON a.id = vAddressFk - JOIN agencyProvince ap ON ap.agencyFk = am.agencyFk - AND ap.warehouseFk = tcc.warehouseFk AND ap.provinceFk = a.provinceFk - JOIN agencyModeZone amz ON amz.agencyModeFk = vAgencyModeFk - AND amz.zone = ap.zone AND amz.itemFk = 71 AND amz.warehouseFk = tcc.warehouseFk - LEFT JOIN bi.rotacion r ON r.warehouse_id = tcc.warehouseFk - AND r.Id_Article = tcc.itemFk - HAVING cost <> 0; - - INSERT INTO tmp.ticketComponent - SELECT - tcc.warehouseFk, - tcc.itemFk, - vFreightBonusComponent, - vGeneralInflationCoefficient - * ROUND( - r.cm3 - * IF(am.deliveryMethodFk = 1, (GREATEST(i.density, vMinimumDensityWeight) / vMinimumDensityWeight), 1) - * awb.bonus - * amz.inflation / vBoxVolume, 4 - ) cost - FROM tmp.ticketComponentCalculate tcc - JOIN item i ON i.id = tcc.itemFk - JOIN agencyMode am ON am.id = vAgencyModeFk - JOIN `address` a ON a.id = vAddressFk - JOIN agencyProvince ap ON ap.agencyFk = a.id - AND ap.warehouseFk = tcc.warehouseFk AND ap.provinceFk = a.provinceFk - JOIN agencyModeZone amz ON amz.agencyModeFk = vAgencyModeFk - AND amz.zone = ap.zone AND amz.itemFk = vBoxFreightItem AND amz.warehouseFk = tcc.warehouseFk - JOIN agencyWeekDayBonus awb ON awb.warehouseFk = amz.warehouseFk AND awb.zone = amz.zone AND am.id = awb.agencyFk - LEFT JOIN bi.rotacion r ON r.warehouse_id = tcc.warehouseFk - AND r.Id_Article = tcc.itemFk - JOIN tmp.agencyHourGetShipped aho ON aho.warehouseFk = awb.warehouseFk - AND WEEKDAY(aho.landed) = awb.weekDay - HAVING cost <> 0 - LIMIT 1; - - IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = vAddressFk) THEN - INSERT INTO tmp.ticketComponent - SELECT tcc.warehouseFk, b.itemFk, vExtraBaggedComponent, ap.packagingValue cost - FROM tmp.ticketComponentCalculate tcc - JOIN vn.addressForPackaging ap - WHERE ap.addressFk = vAddressFk; - END IF; - - INSERT INTO tmp.ticketComponent - SELECT tcb.warehouseFk, tcb.itemFk, vExtraFreightComponent, tcb.base * (IFNULL(pe.percentage,pp.percentage)/100) - FROM tmp.ticketComponentBase tcb - JOIN tmp.agencyHourGetShipped aho ON aho.warehouseFk = tcb.warehouseFk - LEFT JOIN preparationPercentage pp ON pp.weekDay = WEEKDAY(aho.shipped) - AND tcb.warehouseFk = IFNULL(pp.warehouseFk, tcb.warehouseFk) - LEFT JOIN preparationException pe ON pe.exceptionDay = aho.shipped - AND tcb.warehouseFk = IFNULL(pe.warehouseFk, tcb.warehouseFk) - WHERE IFNULL(pe.percentage, pp.percentage); - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; - CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY - SELECT * FROM tmp.ticketComponent; - - INSERT INTO tmp.ticketComponent - SELECT - tcc.warehouseFk, - tcc.itemFk, - vSpecialPriceComponent, - sp.value - SUM(tcc.cost) sumCost - FROM tmp.ticketComponentCopy tcc - JOIN componentRate cr ON cr.id = tcc.componentFk - JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk - WHERE cr.classRate IS NULL - GROUP BY tcc.itemFk, tcc.warehouseFk - HAVING ABS(sumCost) > 0.001; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentSum; - CREATE TEMPORARY TABLE tmp.ticketComponentSum - (INDEX (itemFk, warehouseFk)) - ENGINE = MEMORY - SELECT SUM(cost) sumCost, tc.itemFk, tc.warehouseFk, cr.classRate - FROM tmp.ticketComponent tc - JOIN componentRate cr ON cr.id = tc.componentFk - GROUP BY tc.itemFk, tc.warehouseFk, cr.classRate; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate; - CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY - SELECT - tcc.warehouseFk, - tcc.itemFk, - 1 rate, - IF(tcc.groupingMode = 1, tcc.`grouping`, 1) `grouping`, - SUM(tcs.sumCost) price - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 1) = 1 - AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0) - GROUP BY tcs.warehouseFk, tcs.itemFk; - - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 2 rate, - tcc.packing `grouping`, - SUM(tcs.sumCost) price - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 - AND tcc.packing > 0 AND tcc.available >= tcc.packing) - GROUP BY tcs.warehouseFk, tcs.itemFk; - - INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, `grouping`, price) - SELECT - tcc.warehouseFk, - tcc.itemFk, - 3 rate, - tcc.available `grouping`, - SUM(tcs.sumCost) price - FROM tmp.ticketComponentCalculate tcc - JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk - AND tcs.warehouseFk = tcc.warehouseFk - WHERE IFNULL(tcs.classRate, 3) = 3 - GROUP BY tcs.warehouseFk, tcs.itemFk; - - DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentPrice; - CREATE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY - SELECT * FROM ( - SELECT * FROM tmp.ticketComponentRate ORDER BY price - ) t - GROUP BY itemFk, warehouseFk, `grouping`; - - DROP TEMPORARY TABLE - tmp.ticketComponentCalculate, - tmp.ticketComponentSum, - tmp.ticketComponentBase, - tmp.ticketComponentRate, - tmp.ticketComponentCopy; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentCalculate`( + vAddressFk INT, + vAgencyModeFk INT) +proc: BEGIN +-- OBSOLETO usar catalog_componentCalculate +/** + * Calcula los componentes de un ticket + * + * @param vAddressFk Id del consignatario + * @param vAgencyModeFk Id del modo de agencia + * @return tmp.ticketComponent(itemFk, warehouseFk, available, rate2, rate3, minPrice, + * packing, grouping, groupingMode, buyFk, typeFk) + * @return tmp.ticketComponentPrice (warehouseFk, itemFk, rate, grouping, price) + */ + + DECLARE vClientFk INT; + DECLARE vGeneralInflationCoefficient INT DEFAULT 1; + DECLARE vMinimumDensityWeight INT DEFAULT 167; + DECLARE vBoxFreightItem INT DEFAULT 71; + DECLARE vBoxVolume BIGINT; -- DEFAULT 138000; + DECLARE vSpecialPriceComponent INT DEFAULT 10; + DECLARE vDeliveryComponent INT DEFAULT 15; + DECLARE vRecoveryComponent INT DEFAULT 17; + DECLARE vSellByPacketComponent INT DEFAULT 22; + DECLARE vBuyValueComponent INT DEFAULT 28; + DECLARE vMarginComponent INT DEFAULT 29; + DECLARE vDiscountLastItemComponent INT DEFAULT 32; + DECLARE vExtraBaggedComponent INT DEFAULT 38; + DECLARE vManaAutoComponent INT DEFAULT 39; + + + SELECT volume INTO vBoxVolume + FROM vn.packaging + WHERE id = '94'; + + SELECT clientFk INTO vClientFK + FROM address + WHERE id = vAddressFk; + + SET @rate2 := 0; + SET @rate3 := 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCalculate; + CREATE TEMPORARY TABLE tmp.ticketComponentCalculate + (PRIMARY KEY (itemFk, warehouseFk)) + ENGINE = MEMORY + SELECT + tl.itemFk, tl.warehouseFk, tl.available, + IF((@rate2 := IFNULL(pf.rate2, b.price2)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate2) * 1.0 rate2, + IF((@rate3 := IFNULL(pf.rate3, b.price3)) < i.minPrice AND i.hasMinPrice, i.minPrice, @rate3) * 1.0 rate3, + IFNULL(pf.rate3, 0) AS minPrice, + IFNULL(pf.packing, b.packing) packing, + IFNULL(pf.`grouping`, b.`grouping`) grouping, + ABS(IFNULL(pf.box, b.groupingMode)) groupingMode, + tl.buyFk, i.typeFk + FROM tmp.ticketLot tl + JOIN buy b ON b.id = tl.buyFk + JOIN item i ON i.id = tl.itemFk + JOIN itemType it ON it.id = i.typeFk + LEFT JOIN itemCategory ic ON ic.id = it.categoryFk + LEFT JOIN specialPrice sp ON sp.itemFk = i.id AND sp.clientFk = vClientFk + LEFT JOIN ( + SELECT * FROM ( + SELECT pf.itemFk, pf.`grouping`, pf.packing, pf.box, pf.rate2, pf.rate3, aho.warehouseFk + FROM priceFixed pf + JOIN tmp.zoneGetShipped aho ON pf.warehouseFk = aho.warehouseFk OR pf.warehouseFk = 0 + WHERE aho.shipped BETWEEN pf.started AND pf.ended ORDER BY pf.itemFk, pf.warehouseFk DESC + ) tpf + GROUP BY tpf.itemFk, tpf.warehouseFk + ) pf ON pf.itemFk = tl.itemFk AND pf.warehouseFk = tl.warehouseFk + WHERE b.buyingValue + b.freightValue + b.packageValue + b.comissionValue > 0.01 AND ic.display <> 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponent; + CREATE TEMPORARY TABLE tmp.ticketComponent ( + `warehouseFk` INT UNSIGNED NOT NULL, + `itemFk` INT NOT NULL, + `componentFk` INT UNSIGNED NOT NULL, + `cost` DECIMAL(10,4) NOT NULL, + INDEX `itemWarehouse` USING BTREE (`itemFk` ASC, `warehouseFk` ASC), + UNIQUE INDEX `itemWarehouseComponent` (`itemFk` ASC, `warehouseFk` ASC, `componentFk` ASC)); + + INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) + SELECT + tcc.warehouseFk, + tcc.itemFk, + vBuyValueComponent, + b.buyingValue + b.freightValue + b.packageValue + b.comissionValue + FROM tmp.ticketComponentCalculate tcc + JOIN buy b ON b.id = tcc.buyFk; + + INSERT INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) + SELECT + tcc.warehouseFk, + tcc.itemFk, + vMarginComponent, + tcc.rate3 - b.buyingValue - b.freightValue - b.packageValue - b.comissionValue + FROM tmp.ticketComponentCalculate tcc + JOIN buy b ON b.id = tcc.buyFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentBase; + CREATE TEMPORARY TABLE tmp.ticketComponentBase ENGINE = MEMORY + SELECT tc.itemFk, ROUND(SUM(tc.cost), 4) AS base, tc.warehouseFk + FROM tmp.ticketComponent tc + GROUP BY tc.itemFk, warehouseFk; + + INSERT INTO tmp.ticketComponent + SELECT tcb.warehouseFk, tcb.itemFk, vRecoveryComponent, ROUND(tcb.base * LEAST(cr.recobro, 0.25), 3) + FROM tmp.ticketComponentBase tcb + JOIN bi.claims_ratio cr ON cr.Id_Cliente = vClientFk + WHERE cr.recobro > 0.009; + + INSERT INTO tmp.ticketComponent + SELECT tcb.warehouseFk, tcb.itemFk, vManaAutoComponent, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto + FROM tmp.ticketComponentBase tcb + JOIN `client` c on c.id = vClientFk + JOIN bs.mana_spellers ms ON c.salesPersonFk = ms.Id_Trabajador + WHERE ms.prices_modifier_activated + HAVING manaAuto <> 0; + + INSERT INTO tmp.ticketComponent + SELECT tcb.warehouseFk, + tcb.itemFk, + cr.id, + GREATEST(IFNULL(ROUND(tcb.base * cr.tax, 4), 0), tcc.minPrice - tcc.rate3) + FROM tmp.ticketComponentBase tcb + JOIN componentRate cr + JOIN tmp.ticketComponentCalculate tcc ON tcc.itemFk = tcb.itemFk AND tcc.warehouseFk = tcb.warehouseFk + LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk + WHERE cr.id = vDiscountLastItemComponent AND cr.tax <> 0 AND tcc.minPrice < tcc.rate3 AND sp.value IS NULL; + + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFk, tcc.itemFk, vSellByPacketComponent, tcc.rate2 - tcc.rate3 + FROM tmp.ticketComponentCalculate tcc + JOIN buy b ON b.id = tcc.buyFk + LEFT JOIN specialPrice sp ON sp.clientFk = vClientFk AND sp.itemFk = tcc.itemFk + WHERE sp.value IS NULL; + + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFK, + tcc.itemFk, + vDeliveryComponent, + vGeneralInflationCoefficient + * ROUND(( + i.compression + * r.cm3 + * IF(am.deliveryMethodFk = 1, (GREATEST(i.density, vMinimumDensityWeight) / vMinimumDensityWeight), 1) + * IFNULL((z.price - z.bonus) + * 1/*amz.inflation*/ , 50)) / vBoxVolume, 4 + ) cost + FROM tmp.ticketComponentCalculate tcc + JOIN item i ON i.id = tcc.itemFk + JOIN agencyMode am ON am.id = vAgencyModeFk + JOIN `address` a ON a.id = vAddressFk + JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = tcc.warehouseFk + JOIN zone z ON z.id = zgs.id + LEFT JOIN bi.rotacion r ON r.warehouse_id = tcc.warehouseFk + AND r.Id_Article = tcc.itemFk + HAVING cost <> 0; + + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = vAddressFk) THEN + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFk, b.itemFk, vExtraBaggedComponent, ap.packagingValue cost + FROM tmp.ticketComponentCalculate tcc + JOIN vn.addressForPackaging ap + WHERE ap.addressFk = vAddressFk; + END IF; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentCopy; + CREATE TEMPORARY TABLE tmp.ticketComponentCopy ENGINE = MEMORY + SELECT * FROM tmp.ticketComponent; + + INSERT INTO tmp.ticketComponent + SELECT tcc.warehouseFk, + tcc.itemFk, + vSpecialPriceComponent, + sp.value - SUM(tcc.cost) sumCost + FROM tmp.ticketComponentCopy tcc + JOIN componentRate cr ON cr.id = tcc.componentFk + JOIN specialPrice sp ON sp.clientFk = vClientFK AND sp.itemFk = tcc.itemFk + WHERE cr.classRate IS NULL + GROUP BY tcc.itemFk, tcc.warehouseFk + HAVING ABS(sumCost) > 0.001; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentSum; + CREATE TEMPORARY TABLE tmp.ticketComponentSum + (INDEX (itemFk, warehouseFk)) + ENGINE = MEMORY + SELECT SUM(cost) sumCost, tc.itemFk, tc.warehouseFk, cr.classRate + FROM tmp.ticketComponent tc + JOIN componentRate cr ON cr.id = tc.componentFk + GROUP BY tc.itemFk, tc.warehouseFk, cr.classRate; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentRate; + CREATE TEMPORARY TABLE tmp.ticketComponentRate ENGINE = MEMORY + SELECT tcc.warehouseFk, + tcc.itemFk, + 1 rate, + IF(tcc.groupingMode = 1, tcc.`grouping`, 1) grouping, + CAST(SUM(tcs.sumCost) AS DECIMAL(10,2)) price + FROM tmp.ticketComponentCalculate tcc + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + AND tcs.warehouseFk = tcc.warehouseFk + WHERE IFNULL(tcs.classRate, 1) = 1 + AND tcc.groupingMode < 2 AND (tcc.packing > tcc.`grouping` or tcc.groupingMode = 0) + GROUP BY tcs.warehouseFk, tcs.itemFk; + + INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, grouping, price) + SELECT + tcc.warehouseFk, + tcc.itemFk, + 2 rate, + tcc.packing grouping, + SUM(tcs.sumCost) price + FROM tmp.ticketComponentCalculate tcc + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + AND tcs.warehouseFk = tcc.warehouseFk + WHERE tcc.available IS NULL OR (IFNULL(tcs.classRate, 2) = 2 + AND tcc.packing > 0 AND tcc.available >= tcc.packing) + GROUP BY tcs.warehouseFk, tcs.itemFk; + + INSERT INTO tmp.ticketComponentRate (warehouseFk, itemFk, rate, grouping, price) + SELECT + tcc.warehouseFk, + tcc.itemFk, + 3 rate, + tcc.available grouping, + SUM(tcs.sumCost) price + FROM tmp.ticketComponentCalculate tcc + JOIN tmp.ticketComponentSum tcs ON tcs.itemFk = tcc.itemFk + AND tcs.warehouseFk = tcc.warehouseFk + WHERE IFNULL(tcs.classRate, 3) = 3 + GROUP BY tcs.warehouseFk, tcs.itemFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketComponentPrice; + CREATE TEMPORARY TABLE tmp.ticketComponentPrice ENGINE = MEMORY + SELECT * FROM ( + SELECT * FROM tmp.ticketComponentRate ORDER BY price + ) t + GROUP BY itemFk, warehouseFk, `grouping`; + + DROP TEMPORARY TABLE + tmp.ticketComponentCalculate, + tmp.ticketComponentSum, + tmp.ticketComponentBase, + tmp.ticketComponentRate, + tmp.ticketComponentCopy; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -39945,9 +40506,7 @@ CREATE DEFINER=`root`@`%` PROCEDURE `ticketComponentPreview`( vAgencyModeFk INT, vWarehouseFk SMALLINT) BEGIN - - - DECLARE vAgencyFk INT; +-- OBSOLETO usar ticket_componentPreview DECLARE vShipped DATE; DECLARE vBuyOrderItem INT DEFAULT 100; @@ -39984,15 +40543,11 @@ BEGIN IF vHasAgencyModeChanged THEN SET vAgencyModeTypeRateFk = 6; END IF; - - SELECT agencyFk INTO vAgencyFk - FROM agencyMode - WHERE id = vAgencyModeFk; - CALL agencyHourGetShipped(vLanded, vAddressFk, vAgencyFk); + CALL zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); SELECT shipped INTO vShipped - FROM tmp.agencyHourGetShipped + FROM tmp.zoneGetShipped WHERE warehouseFk = vWarehouseFk; CALL buyUltimate(vWarehouseFk, vShipped); @@ -40012,9 +40567,6 @@ BEGIN CALL ticketComponentCalculate(vAddressFk, vAgencyModeFk); - - - REPLACE INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) SELECT t.warehouseFk, s.itemFk, sc.componentFk, sc.value FROM saleComponent sc @@ -40031,7 +40583,7 @@ BEGIN SET @shipped = vShipped; DROP TEMPORARY TABLE - tmp.agencyHourGetShipped, + tmp.zoneGetShipped, tmp.buyUltimate, tmp.ticketLot; @@ -40339,7 +40891,16 @@ BEGIN START TRANSACTION; - UPDATE ticket t + IF (SELECT addressFk FROM ticket WHERE id = vTicketFk) <> vAddressFk THEN + + UPDATE ticket t + JOIN address a ON a.id = vAddressFk + SET t.nickname = a.nickname + WHERE t.id = vTicketFk; + + END IF; + + UPDATE ticket t SET t.clientFk = vClientFk, t.agencyModeFk = vAgencyModeFk, @@ -40565,6 +41126,103 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketCreateWithoutZone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreateWithoutZone`( + vClientId INT + ,vShipped DATE + ,vWarehouseFk INT + ,vCompanyFk INT + ,vAddressFk INT + ,vAgencyModeFk INT + ,vRouteFk INT + ,vlanded DATE + ,vUserId INT + ,OUT vNewTicket INT) +BEGIN + + DECLARE vZoneFk INT; + + IF vClientId IS NULL THEN + CALL util.throw ('CLIENT_NOT_ESPECIFIED'); + END IF; + + IF NOT vAddressFk OR vAddressFk IS NULL THEN + SELECT id INTO vAddressFk + FROM address + WHERE clientFk = vClientId AND isDefaultAddress; + END IF; + + IF NOT vAgencyModeFk OR vAgencyModeFk IS NULL THEN + SELECT agencyModeFk INTO vAgencyModeFk + FROM address + WHERE clientFk = vClientId AND isDefaultAddress; + END IF; + + CALL vn.zoneGetShippedWarehouse(vlanded, vAddressFk, vAgencyModeFk); + + SELECT id INTO vZoneFk FROM tmp.zoneGetShipped + WHERE shipped = vShipped AND warehouseFk = vWarehouseFk LIMIT 1; + + INSERT INTO vn2008.Tickets ( + Id_Cliente, + Fecha, + Id_Consigna, + Id_Agencia, + Alias, + warehouse_id, + Id_Ruta, + empresa_id, + landing, + zoneFk + ) + SELECT + vClientId, + vShipped, + a.id, + IF(vAgencyModeFk, vAgencyModeFk, a.agencyModeFk), + a.nickname, + vWarehouseFk, + IF(vRouteFk,vRouteFk,NULL), + vCompanyFk, + vlanded, + vZoneFk + FROM address a + JOIN agencyMode am ON am.id = a.agencyModeFk + WHERE a.id = vAddressFk; + + SET vNewTicket = LAST_INSERT_ID(); + + INSERT INTO ticketObservation(ticketFk, observationTypeFk, description) + SELECT vNewTicket, ao.observationTypeFk, ao.description + FROM addressObservation ao + JOIN address a ON a.id = ao.addressFk + WHERE a.id = vAddressFk; + + -- CALL logAddWithUser(vNewTicket, vUserId, 'insert', 'ticket', CONCAT('Ha creado el ticket', ' ', vNewTicket)); + INSERT INTO vn.ticketLog + SET originFk = vNewTicket, userFk = vUserId, `action` = 'insert', description = CONCAT('Ha creado el ticket:', ' ', vNewTicket); + + IF (SELECT ct.isCreatedAsServed FROM vn.clientType ct JOIN vn.client c ON c.typeFk = ct.code WHERE c.id = vClientId ) <> FALSE THEN + INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) + SELECT id, vNewTicket, getWorker() + FROM state + WHERE `code` = 'DELIVERED'; + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `ticketCreateWithUser` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -40578,47 +41236,66 @@ DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `ticketCreateWithUser`( vClientId INT ,vShipped DATE - ,vWarehouseId INT + ,vWarehouseFk INT ,vCompanyFk INT ,vAddressFk INT - ,vAgencyType INT + ,vAgencyModeFk INT ,vRouteFk INT ,vlanded DATE ,vUserId INT ,OUT vNewTicket INT) BEGIN - IF vClientId IS NULL THEN - CALL util.throw ('CLIENT_NOT_ESPECIFIED'); - END IF; + DECLARE vZoneFk INT; + + IF vClientId IS NULL THEN + CALL util.throw ('CLIENT_NOT_ESPECIFIED'); + END IF; IF NOT vAddressFk OR vAddressFk IS NULL THEN SELECT id INTO vAddressFk FROM address WHERE clientFk = vClientId AND isDefaultAddress; END IF; + + IF NOT vAgencyModeFk OR vAgencyModeFk IS NULL THEN + SELECT agencyModeFk INTO vAgencyModeFk + FROM address + WHERE clientFk = vClientId AND isDefaultAddress; + END IF; + CALL vn.zoneGetShippedWarehouse(vlanded, vAddressFk, vAgencyModeFk); + + SELECT id INTO vZoneFk FROM tmp.zoneGetShipped + WHERE shipped = vShipped AND warehouseFk = vWarehouseFk LIMIT 1; + + IF vZoneFk IS NULL OR vZoneFk = 0 THEN + CALL util.throw ('NOT_ZONE_WITH_THIS_PARAMETERS'); + END IF; + INSERT INTO vn2008.Tickets ( - Id_Cliente, - Fecha, - Id_Consigna, - Id_Agencia, - Alias, - warehouse_id, - Id_Ruta, - empresa_id, - landing + Id_Cliente, + Fecha, + Id_Consigna, + Id_Agencia, + Alias, + warehouse_id, + Id_Ruta, + empresa_id, + landing, + zoneFk ) SELECT vClientId, vShipped, a.id, - IF(vAgencyType, vAgencyType, a.agencyModeFk), + IF(vAgencyModeFk, vAgencyModeFk, a.agencyModeFk), a.nickname, - vWarehouseId, + vWarehouseFk, IF(vRouteFk,vRouteFk,NULL), vCompanyFk, - vlanded + vlanded, + vZoneFk FROM address a JOIN agencyMode am ON am.id = a.agencyModeFk WHERE a.id = vAddressFk; @@ -40731,6 +41408,153 @@ BEGIN JOIN vn.client c ON c.id = tp.clientFk; + INSERT INTO tmp.ticketProblems(ticketFk, isFreezed) + SELECT DISTINCT tl.ticketFk, 1 + FROM tmp.ticketList tl + JOIN vn.client c ON c.id = tl.clientFk + WHERE c.isFreezed; + + DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; + CREATE TEMPORARY TABLE tmp.clientGetDebt + (PRIMARY KEY (clientFk)) + ENGINE = MEMORY + SELECT DISTINCT clientFk + FROM tmp.ticketList; + + CALL clientGetDebt(CURDATE()); + + + INSERT INTO tmp.ticketProblems(ticketFk, risk) + SELECT DISTINCT tl.ticketFk, r.risk + FROM tmp.ticketList tl + JOIN vn.ticket t ON t.id = tl.ticketFk + JOIN vn.agencyMode a ON t.agencyModeFk = a.id + JOIN tmp.risk r ON r.clientFk = t.clientFk + JOIN vn.client c ON c.id = t.clientFk + WHERE r.risk > c.credit + 10 + AND a.deliveryMethodFk != 3 + ON DUPLICATE KEY UPDATE + risk = r.risk; + + INSERT INTO tmp.ticketProblems(ticketFk, hasTicketRequest) + SELECT DISTINCT tl.ticketFk, 1 + FROM tmp.ticketList tl + JOIN vn.ticketRequest tr ON tr.ticketFk = tl.ticketFk + WHERE tr.isOK IS NULL + ON DUPLICATE KEY UPDATE + hasTicketRequest = 1; + + OPEN vCursor; + + WHILE NOT vDone + DO + FETCH vCursor INTO vWarehouse, vDate; + + CALL cache.visible_refresh(vVisibleCache, FALSE, vWarehouse); + CALL cache.available_refresh(vAvailableCache, FALSE, vWarehouse, vDate); + + + INSERT INTO tmp.ticketProblems(ticketFk, isAvailable) + SELECT tl.ticketFk, 0 + FROM tmp.ticketList tl + JOIN vn.ticket t ON t.id = tl.ticketFk + LEFT JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + LEFT JOIN cache.available av ON av.item_id = i.id + AND av.calc_id = vAvailableCache + WHERE date(t.shipped) = vDate + AND categoryFk != 6 + AND IFNULL(av.available, 0) < 0 + AND s.isPicked = FALSE + AND NOT i.generic + AND vWarehouse = t.warehouseFk + GROUP BY tl.ticketFk + ON DUPLICATE KEY UPDATE + isAvailable = 0; + + INSERT INTO tmp.ticketProblems(ticketFk, isAvailable) + SELECT tl.ticketFk, 0 + FROM tmp.ticketList tl + JOIN vn.ticket t ON t.id = tl.ticketFk + LEFT JOIN vn.sale s ON s.ticketFk = t.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it on it.id = i.typeFk + LEFT JOIN cache.visible v ON i.id = v.item_id AND v.calc_id = vVisibleCache + LEFT JOIN cache.available av ON av.item_id = i.id AND av.calc_id = vAvailableCache + WHERE IFNULL(av.available, 0) >= 0 + AND s.quantity > IFNULL(v.visible, 0) + AND s.isPicked = FALSE + AND s.reserved = FALSE + AND it.categoryFk != 6 + AND date(t.shipped) = vDate + AND NOT i.generic + AND CURDATE() = vDate + AND t.warehouseFk = vWarehouse + GROUP BY tl.ticketFk + ON DUPLICATE KEY UPDATE + isAvailable = 0; + + END WHILE; + + CLOSE vCursor; + + SELECT * FROM tmp.ticketProblems; + + DROP TEMPORARY TABLE + tmp.clientGetDebt, + tmp.ticketList; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketGetProblemskk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketGetProblemskk`() +BEGIN + + DECLARE vWarehouse INT; + DECLARE vDate DATE; + DECLARE vAvailableCache INT; + DECLARE vVisibleCache INT; + DECLARE vDone INT DEFAULT 0; + + DECLARE vCursor CURSOR FOR + SELECT DISTINCT tt.warehouseFk, date(tt.shipped) + FROM tmp.ticketGetProblems tt + WHERE DATE(tt.shipped) BETWEEN CURDATE() + AND TIMESTAMPADD(DAY, 1.9, CURDATE()); + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = 1; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketProblems; + CREATE TEMPORARY TABLE tmp.ticketProblems ( + ticketFk INT(11) PRIMARY KEY, + isFreezed INTEGER(1) DEFAULT 0, + risk DECIMAL(10,2) DEFAULT 0, + hasTicketRequest INTEGER(1) DEFAULT 0, + isAvailable INTEGER(1) DEFAULT 1 + ) ENGINE = MEMORY; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketList; + CREATE TEMPORARY TABLE tmp.ticketList + (PRIMARY KEY (ticketFk)) + ENGINE = MEMORY + SELECT tp.ticketFk, c.id clientFk + FROM tmp.ticketGetProblems tp + JOIN vn.client c ON c.id = tp.clientFk; + + INSERT INTO tmp.ticketProblems(ticketFk, isFreezed) SELECT DISTINCT tl.ticketFk, 1 FROM tmp.ticketList tl @@ -41339,7 +42163,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `ticketShippingFillLabel` */; +/*!50003 DROP PROCEDURE IF EXISTS `ticketShippingFillLabelKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -41349,9 +42173,10 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `ticketShippingFillLabel`(vTicketFk INT) +CREATE DEFINER=`root`@`%` PROCEDURE `ticketShippingFillLabelKk`(vTicketFk INT) BEGIN - /* Prepara el origen de datos para la etiqueta amarilla de preparacion previa + /* JGF 2019-06-12 A + * ahora el codigo esta en el tpv, ya no es un procedimiento, es un select * */ DECLARE vCalcFk INT; @@ -41719,9 +42544,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -41744,7 +42569,6 @@ BEGIN JOIN vn.ticket t on t.id = s.ticketFk JOIN bi.rotacion r ON r.Id_Article = s.itemFk AND r.warehouse_id = t.warehouseFk WHERE ic.merchandise - AND ic.id < 6 AND t.shipped BETWEEN vDateStart AND vDateEnd GROUP BY s.ticketFk; END ;; @@ -41753,6 +42577,737 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticketVolumeByDate_ventas` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticketVolumeByDate_ventas`(vDate DATE) +BEGIN + + DECLARE vDateStart DATETIME DEFAULT DATE(vDate); + DECLARE vDateEnd DATETIME DEFAULT util.dayEnd(vDate); + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketVolumeByDate; + + CREATE TEMPORARY TABLE tmp.ticketVolumeByDate + ENGINE = MEMORY + SELECT s.ticketFk, + CAST(SUM(r.cm3 * s.quantity) / 1000000 AS DECIMAL(10,2)) as m3 + FROM sale s + JOIN bs.ventas v ON v.Id_Movimiento = s.id + JOIN vn.item i ON i.id = s.itemFk + JOIN vn.itemType it ON it.id = i.typeFk + JOIN vn.itemCategory ic ON ic.id = it.categoryFk + JOIN vn.ticket t on t.id = s.ticketFk + JOIN bi.rotacion r ON r.Id_Article = s.itemFk AND r.warehouse_id = t.warehouseFk + WHERE ic.merchandise + AND t.shipped BETWEEN vDateStart AND vDateEnd + AND it.name NOT IN ('Accesorios Funerarios','Composiciones planta','Composición bajo pedido','Coronas y centros') + GROUP BY s.ticketFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_Clone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`z-developer`@`%` PROCEDURE `ticket_Clone`(vOriginalTicket INT, OUT vNewTicket INT) +BEGIN + INSERT INTO vn2008.Tickets ( + Id_Cliente, + Fecha, + Id_Consigna, + Id_Agencia, + Alias, + warehouse_id, + Id_Ruta, + empresa_id, + landing, + zoneFk + ) + SELECT + clientFk, + shipped, + addressFk, + agencyModeFk, + nickname, + warehouseFk, + routeFk, + companyFk, + landed, + zoneFk + FROM vn.ticket + WHERE id = vOriginalTicket; + + SET vNewTicket = LAST_INSERT_ID(); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_componentPreview` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_componentPreview`( + vTicketFk INT, + vLanded DATE, + vAddressFk INT, + vZoneFk INT, + vWarehouseFk SMALLINT) +BEGIN +/** + * Calcula los componentes de los articulos de un ticket + * + * @param vTicketFk id del ticket + * @param vLanded nueva fecha de entrega + * @param vAddressFk nuevo consignatario + * @param vZoneFk nueva zona + * @param vWarehouseFk nuevo warehouse + * + * @return tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) + */ + DECLARE vShipped DATE; + DECLARE vBuyOrderItem INT DEFAULT 100; + + DECLARE vHasDataChanged BOOL DEFAULT FALSE; + DECLARE vHasAddressChanged BOOL; + DECLARE vHasZoneChanged BOOL DEFAULT FALSE; + DECLARE vHasWarehouseChanged BOOL DEFAULT FALSE; + + DECLARE vAddressTypeRateFk INT DEFAULT NULL; + DECLARE vAgencyModeTypeRateFk INT DEFAULT NULL; + + DECLARE vHasChangeAll BOOL DEFAULT FALSE; + + SELECT DATE(landed) <> vLanded, + addressFk <> vAddressFk, + zoneFk <> vZoneFk, + warehouseFk <> vWarehouseFk + INTO + vHasDataChanged, + vHasAddressChanged, + vHasZoneChanged, + vHasWarehouseChanged + FROM vn.ticket t + WHERE t.id = vTicketFk; + + IF vHasDataChanged OR vHasWarehouseChanged THEN + SET vHasChangeAll = TRUE; + END IF; + + IF vHasAddressChanged THEN + SET vAddressTypeRateFk = 5; + END IF; + + IF vHasZoneChanged THEN + SET vAgencyModeTypeRateFk = 6; + END IF; + + SELECT TIMESTAMPADD(DAY, -travelingDays, vLanded) INTO vShipped + FROM zone + WHERE id = vZoneFk; + + CALL buyUltimate(vWarehouseFk, vShipped); + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; + CREATE TEMPORARY TABLE tmp.ticketLot ENGINE = MEMORY ( + SELECT + vWarehouseFk AS warehouseFk, + NULL AS available, + s.itemFk, + bu.buyFk + FROM sale s + LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk + WHERE s.ticketFk = vTicketFk + AND s.itemFk != vBuyOrderItem + GROUP BY bu.warehouseFk, bu.itemFk); + + CALL catalog_componentCalculate(vZoneFk, vAddressFk, vShipped); + + REPLACE INTO tmp.ticketComponent (warehouseFk, itemFk, componentFk, cost) + SELECT t.warehouseFk, s.itemFk, sc.componentFk, sc.value + FROM saleComponent sc + JOIN sale s ON s.id = sc.saleFk + JOIN ticket t ON t.id = s.ticketFk + JOIN componentRate cr ON cr.id = sc.componentFk + WHERE s.ticketFk = vTicketFk + AND (cr.isRenewable = FALSE + OR + (NOT vHasChangeAll + AND (NOT (cr.componentTypeRate <=> vAddressTypeRateFk + OR cr.componentTypeRate <=> vAgencyModeTypeRateFk)))); + + SET @shipped = vShipped; + + DROP TEMPORARY TABLE + tmp.buyUltimate, + tmp.ticketLot; + + IF IFNULL(vShipped, CURDATE() - 1) < CURDATE() THEN + CALL util.throw('NO_AGENCY_AVAILABLE'); + END IF; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_getTax` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_getTax`(vTaxArea VARCHAR(25)) + READS SQL DATA +BEGIN +/** + * Calcula la base imponible, el IVA y el recargo de equivalencia para + * un conjunto de tickets. + * + * @table tmp.ticket(ticketFk) Identificadores de los tickets a calcular + * @return tmp.ticketAmount + * @return tmp.ticketTax Impuesto desglosado para cada ticket. + */ + DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; + CREATE TEMPORARY TABLE tmp.addressCompany + (INDEX (addressFk, companyFk)) + ENGINE = MEMORY + SELECT DISTINCT t.addressFk, t.companyFk + FROM tmp.ticket tmpTicket + JOIN ticket t ON t.id = tmpTicket.ticketFk; + + CALL addressTaxArea (); + + IF vTaxArea > '' THEN + UPDATE tmp.addressTaxArea + SET areaFk = vTaxArea; + END IF; + /** Solo se calcula la base imponible (taxableBase) y el impuesto se calculará posteriormente + * No se debería cambiar el sistema por problemas con los decimales + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketTax; + CREATE TEMPORARY TABLE tmp.ticketTax + (INDEX (ticketFk)) + ENGINE = MEMORY + SELECT tmpTicket.ticketFk, + bp.pgcFk, + SUM(s.quantity * s.price * (100 - s.discount)/100 ) AS taxableBase, + pgc.rate, + tc.code + FROM tmp.ticket tmpTicket + JOIN sale s ON s.ticketFk = tmpTicket.ticketFk + JOIN item i ON i.id = s.itemFk + JOIN ticket t ON t.id = tmpTicket.ticketFk + JOIN supplier su ON su.id = t.companyFk + JOIN tmp.addressTaxArea ata + ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk + JOIN itemTaxCountry itc + ON itc.itemFk = i.id AND itc.countryFk = su.countryFk + JOIN bookingPlanner bp + ON bp.countryFk = su.countryFk + AND bp.taxAreaFk = ata.areaFk + AND bp.taxClassFk = itc.taxClassFk + JOIN pgc ON pgc.code = bp.pgcFk + JOIN taxClass tc ON tc.id = bp.taxClassFk + GROUP BY tmpTicket.ticketFk, pgc.code,pgc.rate + HAVING taxableBase != 0; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketServiceTax; + CREATE TEMPORARY TABLE tmp.ticketServiceTax + (INDEX (ticketFk)) + ENGINE = MEMORY + SELECT tt.ticketFk, + SUM(ts.quantity * ts.price) AS taxableBase, + pgc.rate, + tc.code + FROM tmp.ticketTax tt + JOIN ticketService ts ON ts.ticketFk = tt.ticketFk + JOIN ticket t ON t.id = tt.ticketFk + JOIN supplier su ON su.id = t.companyFk + JOIN tmp.addressTaxArea ata + ON ata.addressFk = t.addressFk AND ata.companyFk = t.companyFk + JOIN bookingPlanner bp + ON bp.countryFk = su.countryFk + AND bp.taxAreaFk = ata.areaFk + AND bp.taxClassFk = ts.taxClassFk + JOIN pgc ON pgc.code = bp.pgcFk AND pgc.rate = tt.rate + JOIN taxClass tc ON tc.id = bp.taxClassFk + GROUP BY tt.ticketFk, tt.code,tt.rate + HAVING taxableBase != 0; + + UPDATE tmp.ticketTax tt + JOIN tmp.ticketServiceTax ts ON tt.ticketFk = ts.ticketFk AND tt.code = ts.code AND tt.rate = ts.rate + SET tt.taxableBase = tt.taxableBase + ts.taxableBase; + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketAmount; + CREATE TEMPORARY TABLE tmp.ticketAmount + (INDEX (ticketFk)) + ENGINE = MEMORY + SELECT ticketFk, taxableBase, SUM(CAST(taxableBase * rate / 100 AS DECIMAL(10, 2))) tax,code + FROM tmp.ticketTax + GROUP BY ticketFk, code; + + DROP TEMPORARY TABLE IF EXISTS tmp.addressCompany; + DROP TEMPORARY TABLE IF EXISTS tmp.addressTaxArea; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_insertZone` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_insertZone`() +BEGIN + DECLARE vDone INT DEFAULT 0; + DECLARE vFechedTicket INT; + DECLARE vLanded DATE; + DECLARE vAddressFk INT; + DECLARE vAgencyModeFk INT; + DECLARE vWarehouseFk INT; + DECLARE vCursor CURSOR FOR + SELECT id, landed, addressFk, agencyModeFk, warehouseFk + FROM vn.ticket WHERE shipped >= '2019-06-01' AND zoneFk IS NULL; + DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET vDone = 1; + + OPEN vCursor; + REPEAT + FETCH vCursor INTO vFechedTicket, vLanded, vAddressFk, vAgencyModeFk, vWarehouseFk; + CALL zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); + UPDATE vn.ticket + SET zoneFk = (SELECT id FROM tmp.zoneGetShipped WHERE warehouseFk = vWarehouseFk) + WHERE id = vFechedTicket; + + UNTIL vDone END REPEAT; + DROP TEMPORARY TABLE tmp.zoneGetShipped; + CLOSE vCursor; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_insertZoneKk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_insertZoneKk`() +BEGIN + DECLARE vDone INT DEFAULT 0; + DECLARE vFechedTicket INT; + DECLARE vLanded DATE; + DECLARE vAddressFk INT; + DECLARE vAgencyModeFk INT; + DECLARE vWarehouseFk INT; + DECLARE vCursor CURSOR FOR + SELECT id, landed, addressFk, agencyModeFk, warehouseFk + FROM vn.ticket WHERE zoneFk IN (230,221,207,101,94); + DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET vDone = 1; + + OPEN vCursor; + + REPEAT + FETCH vCursor INTO vFechedTicket, vLanded, vAddressFk, vAgencyModeFk, vWarehouseFk; + CALL zoneGetShippedWarehouse(vLanded, vAddressFk, vAgencyModeFk); + UPDATE vn.ticket + SET zoneFk = (SELECT id FROM tmp.zoneGetShipped WHERE warehouseFk = vWarehouseFk) + WHERE id = vFechedTicket; + + UNTIL vDone END REPEAT; + DROP TEMPORARY TABLE tmp.zoneGetShipped; + CLOSE vCursor; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `ticket_recalcComponents` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `ticket_recalcComponents`(IN vTicketFk BIGINT ) +proc: BEGIN + +/** + * Este procedimiento trata de "rebionizar" un ticket, + * eliminando los componentes existentes e insertandolos de nuevo + * + * @param vTicketFk Id del ticket + * @return tmp.buyUltimate + */ + DECLARE vShipped DATE; + DECLARE vWarehouseFk SMALLINT; + DECLARE vAgencyModeFk INT; + DECLARE vAddressFk INT; + DECLARE vLanded DATE; + DECLARE vIsTicketEditable BOOLEAN; + + SELECT (IFNULL(ts.alertLevel,0) >0 or IFNULL(t.refFk,"") != "") = FALSE + INTO vIsTicketEditable + FROM ticket t LEFT JOIN ticketState ts ON t.id = ts.ticket + WHERE id = vTicketFk; + + SELECT warehouseFk, date(shipped), addressFk, agencyModeFk, landed + INTO vWarehouseFk, vShipped, vAddressFk, vAgencyModeFk, vLanded + FROM ticket + WHERE id = vTicketFk; + + CALL zoneGetShippedWarehouse(vLanded, vAddressFk , vAgencyModeFk); + + CALL vn.buyUltimate (vWarehouseFk, vShipped); -- rellena la tabla buyUltimate con la ultima compra + + DROP TEMPORARY TABLE IF EXISTS tmp.ticketLot; + CREATE TEMPORARY TABLE tmp.ticketLot + SELECT vWarehouseFk warehouseFk, NULL available, + s.itemFk, bu.buyFk + FROM sale s + LEFT JOIN tmp.buyUltimate bu ON bu.itemFk = s.itemFk + WHERE s.ticketFk = vTicketFk + GROUP BY s.itemFk; + + CALL vn.ticketComponentCalculate(vAddressFk,vAgencyModeFk); + + DROP TEMPORARY TABLE IF EXISTS tmp.sale; + CREATE TEMPORARY TABLE tmp.sale + (PRIMARY KEY (saleFk)) ENGINE = MEMORY + SELECT id saleFk, vWarehouseFk warehouseFk + FROM sale s + WHERE s.ticketFk = vTicketFk; + + CALL vn.ticketComponentUpdateSale(IF(vIsTicketEditable,1,6)); -- si el ticket esta facturado, respeta los precios + + IF vLanded IS NULL THEN + + CALL zoneGetLanded(vShipped, vAddressFk, vAgencyModeFk, vWarehouseFk); + + UPDATE vn2008.Tickets t + SET t.landing = (SELECT landed FROM tmp.zoneGetLanded) + WHERE Id_Ticket = vTicketFk; + + DROP TEMPORARY TABLE tmp.zoneGetLanded; + + END IF; + + DROP TEMPORARY TABLE tmp.buyUltimate; + DROP TEMPORARY TABLE tmp.ticketComponentPrice; + DROP TEMPORARY TABLE tmp.ticketComponent; + DROP TEMPORARY TABLE tmp.sale; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `timeBusiness_calculate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `timeBusiness_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME) +BEGIN + +/** + * Horas que debe trabajar un empleado según contrato y día. + * Se tendra en cuenta si tiene un horario especificado o si tiene vacaciones + * @param vDatedFrom workerTimeControl + * @param vDatedTo workerTimeControl + * @table tmp.user(userFk) + * @return tmp.timeControlCalculate + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.timeBusinessCalculate; + DROP TEMPORARY TABLE IF EXISTS tmp.workerHasNotCalendar; + + CREATE TEMPORARY TABLE tmp.timeBusinessCalculate + SELECT dated, + business_id, + userFk, + departmentFk, + hourStart, + hourEnd, + timeWorkSeconds, + SEC_TO_TIME(timeWorkSeconds) timeWorkSexagesimal, + timeWorkSeconds / 3600 timeWorkDecimal, + type, + hoursWeek + FROM(SELECT t.dated, + b.business_id, + w.userFk, + bl.department_id departmentFk, + GROUP_CONCAT(DISTINCT LEFT(j.start,2) ORDER BY j.start ASC SEPARATOR '-') hourStart , + GROUP_CONCAT(DISTINCT LEFT(j.end,2) ORDER BY j.end ASC SEPARATOR '-') hourEnd, + IFNULL(SUM(TIME_TO_SEC(j.end)) - SUM(TIME_TO_SEC(j.start)),0) timeWorkSeconds, + cs.type, + cl.hours_week hoursWeek + FROM vn.time t + LEFT JOIN postgresql.business b ON t.dated BETWEEN b.date_start AND ifnull(b.date_end, vDatedTo ) + LEFT JOIN postgresql.profile AS pr ON b.client_id = pr.profile_id + LEFT JOIN postgresql.person AS p ON pr.person_id = p.person_id + LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id + JOIN tmp.`user` u ON u.userFK = w.userFK + JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id + LEFT JOIN postgresql.business_labour_payroll AS bp ON bl.business_id = bp.business_id + LEFT JOIN postgresql.professional_category AS pc ON bl.professional_category_id = pc.professional_category_id + LEFT JOIN postgresql.workcenter AS wc ON bl.workcenter_id = wc.workcenter_id + LEFT JOIN postgresql.calendar_labour_type AS cl ON bl.calendar_labour_type_id = cl.calendar_labour_type_id + LEFT JOIN postgresql.journey AS j ON j.business_id = b.business_id and j.day_id=WEEKDAY(t.dated)+1 + LEFT JOIN postgresql.calendar_employee ce ON ce.business_id=b.business_id and ce.date = t.dated + LEFT JOIN postgresql.calendar_state cs ON cs.calendar_state_id = ce.calendar_state_id + WHERE t.dated BETWEEN vDatedFrom AND vDatedTo + GROUP BY w.userFk,dated + )sub; + + CREATE TEMPORARY TABLE tmp.workerHasNotCalendar + SELECT userFK,hoursWeek + FROM tmp.timeBusinessCalculate + GROUP BY userFK + HAVING SUM(timeWorkSeconds)=0; + + UPDATE tmp.timeBusinessCalculate t, tmp.workerHasNotCalendar w + SET t.timeWorkSeconds = w.hoursweek / 5 * 3600, + t.timeWorkSexagesimal = SEC_TO_TIME( w.hoursweek / 5 * 3600), + t.timeWorkDecimal = w.hoursweek / 5 + WHERE DAYOFWEEK(t.dated) IN(2,3,4,5,6) AND t.userFk= w.userFk; + + + UPDATE tmp.timeBusinessCalculate t + SET t.timeWorkSeconds = 0, + t.timeWorkSexagesimal = 0, + t.timeWorkDecimal = 0 + WHERE type IN ('Vacaciones','Festivo','Baja enfermedad común','Baja mutua','Permiso retribuido'); + + UPDATE tmp.timeBusinessCalculate t + SET t.timeWorkSeconds = t.timeWorkSeconds/2, + t.timeWorkSexagesimal = SEC_TO_TIME(t.timeWorkSeconds/2), + t.timeWorkDecimal = t.timeWorkDecimal/2 + WHERE type = 'Vacaciones 1/2 día'; + + DROP TEMPORARY TABLE tmp.workerHasNotCalendar; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `timeControl_calculate` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculate`(vDatedFrom DATETIME, vDatedTo DATETIME) +BEGIN + +/** + * Horas totales trabajadas a partir de las fichadas, tiene en cuenta los descansos y fichadas impares + * (si hay fichadas impares nop devuelve info) + * @param vDatedFrom workerTimeControl + * @param vDatedTo workerTimeControl + * @table tmp.user(userFk) + * @return tmp.timeControlCalculate + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.timeControlCalculate; + + CREATE TEMPORARY TABLE tmp.timeControlCalculate + SELECT userFk, + dated, + IF( timeWork >= 18000, @timeWork:=timeWork + 1200, @timeWork:=timeWork) timeWorkSeconds, + SEC_TO_TIME(@timeWork ) timeWorkSexagesimal, + @timeWork / 3600 timeWorkDecimal + FROM (SELECT wtc.userFk, + DATE(wtc.timed) dated, + SUM(if( mod(wtc.order,2)=1, -UNIX_TIMESTAMP(timed), UNIX_TIMESTAMP(timed))) timeWork + FROM vn.workerTimeControl wtc + JOIN tmp.`user` w ON w.userFk = wtc.userFk + WHERE wtc.timed BETWEEN vDatedFrom AND vDatedTo + GROUP BY wtc.userFk,dated + ORDER BY userFk,dated + )sub + WHERE sub.timeWork > 0; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `timeControl_calculateAll` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateAll`(vDatedFrom DATETIME, vDatedTo DATETIME) +BEGIN + +/** + * @param vDatedFrom workerTimeControl + * @param vDatedTo workerTimeControl + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + + CREATE TEMPORARY TABLE IF NOT EXISTS tmp.`user` + SELECT userFk + FROM vn.worker w + JOIN vn.`user` u ON u.id = w.userFk + WHERE userFk IS NOT NULL AND u.active = TRUE; + + CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); + + DROP TEMPORARY TABLE tmp.`user`; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `timeControl_calculateByDepartment` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateByDepartment`(vDepartmentFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +BEGIN + +/** + * @param vDepartmentFk + * @param vDatedFrom workerTimeControl + * @param vDatedTo workerTimeControl + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + + CREATE TEMPORARY TABLE tmp.`user` + SELECT DISTINCT w.userFk + FROM postgresql.business AS b + LEFT JOIN postgresql.profile AS pr ON pr.profile_id = b.client_id + LEFT JOIN postgresql.person AS p ON p.person_id = pr.person_id + LEFT JOIN postgresql.business_labour AS bl ON b.business_id = bl.business_id + LEFT JOIN vn.worker AS w ON p.id_trabajador = w.id + LEFT JOIN vn.department AS d ON bl.department_id = d.id + WHERE ((b.date_start BETWEEN vDatedFrom AND vDatedTo OR b.date_end BETWEEN vDatedFrom AND vDatedTo) OR + (b.date_end IS NULL AND b.date_start <= vDatedTo) OR + (b.date_start <= vDatedFrom AND b.date_end >= vDatedTo) + ) AND bl.department_id = vDepartmentFk + ORDER BY b.date_end DESC; + + CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); + + DROP TEMPORARY TABLE tmp.`user`; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `timeControl_calculateByUser` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `timeControl_calculateByUser`(vUserFk INT, vDatedFrom DATETIME, vDatedTo DATETIME) +BEGIN + +/** + * @param vUserFk + * @param vDatedFrom workerTimeControl + * @param vDatedTo workerTimeControl + */ + + DROP TEMPORARY TABLE IF EXISTS tmp.`user`; + + CREATE TEMPORARY TABLE tmp.`user` + SELECT id userFk + FROM user + WHERE id = vUserFk; + CALL vn.timeControl_calculate(vDatedFrom, vDatedTo); + + DROP TEMPORARY TABLE tmp.`user`; + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `travel_checkDates` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -42141,9 +43696,9 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; @@ -42158,6 +43713,7 @@ BEGIN p.name, p.firstname, d.name AS department, + d.department_id as departmentFk, b.date_start, d.production, CAST(12 * blp.importepactado / clt.hours_week / 52 AS DECIMAL(10,2)) as costeHora @@ -42173,7 +43729,7 @@ BEGIN WHERE b.date_start <= vDate AND IFNULL(b.date_end,'3000-01-01') > vDate ; - -- SELECT * FROM tmp.workerDepartmentByDate; + -- SELECT * FROM tmp.workerDepartmentByDate; END ;; DELIMITER ; @@ -42199,7 +43755,10 @@ BEGIN UPDATE account.user SET role = 2 - WHERE id = vUserId; + WHERE id = vUserId; + + DELETE FROM pbx.sip + WHERE user_id = vUserId; UPDATE `client` c JOIN payMethod p ON p.name = 'CONTADO' @@ -42892,6 +44451,83 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zoneAddPostcode` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `zoneAddPostcode`() +BEGIN +/** + * Añade un código postal a una población y regenera el arbol de zonas. + * + * @table tmp.postcode(postcode, townFk) Codigo postal a añadir e id poblacion + */ + + DECLARE vDone BOOL; + DECLARE vParent INT DEFAULT 1; + DECLARE vTownFk INT; + DECLARE vPostCode VARCHAR(100); + + DECLARE townCur CURSOR FOR + SELECT t.geoFk, t.id, tt.`code` + FROM tmp.postcode tt + JOIN vn.town t ON t.id = tt.townFk + ORDER BY t.geoFk, t.`name`; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + DECLARE CONTINUE HANDLER FOR 1062 SET vDone = TRUE; + + -- Remove existing postCodes from zoneGeo + DELETE zg, pc FROM tmp.postcode tpc + JOIN vn.postCode pc ON pc.code = tpc.code + AND pc.townFk = tpc.townFK + JOIN vn.zoneGeo zg ON zg.id = pc.geoFk; + + -- > Town cursor start + OPEN townCur; + + townLoop: LOOP + SET vDone = FALSE; + + FETCH townCur INTO vParent, vTownFk, vPostCode; + + IF vDone THEN + LEAVE townLoop; + END IF; + + INSERT INTO `vn`.`postCode` (`code`, `townFk`) + VALUES (vPostCode, vTownFk); + + CALL nst.nodeAdd('vn', 'zoneGeo', vParent, vPostCode); + END LOOP; + CLOSE townCur; + -- < Town cursor end + + UPDATE tmp.postcode tt + JOIN vn.zoneGeo z ON z.name = tt.code + JOIN vn.postCode pc ON pc.code = tt.code + SET pc.geoFk = z.id + WHERE pc.geoFk IS NULL; + + DROP TEMPORARY TABLE IF EXISTS tmp.zoneGeo; + CREATE TEMPORARY TABLE tmp.zoneGeo + (id INT AUTO_INCREMENT PRIMARY KEY) + ENGINE = MEMORY + SELECT * FROM vn.zoneGeo; + + CALL vn.nestTree('tmp', 'zoneGeo', 'vn', 'zoneGeo'); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `zoneGetAgency` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -42918,30 +44554,34 @@ BEGIN SELECT postalCode INTO vPostalCode FROM address WHERE id = vAddress; - /*DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetAgency; + DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetAgency; CREATE TEMPORARY TABLE tmp.zoneGetAgency - (INDEX (agencyModeFk)) ENGINE = MEMORY*/ + (INDEX (agencyModeFk)) ENGINE = MEMORY SELECT * FROM ( - SELECT am.id agencyModeFk, - am.name agencyMode, - am.description, - am.deliveryMethodFk, - TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, - zi.isIncluded, - z.warehouseFk - FROM zoneGeo zgSon - JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt - JOIN zoneIncluded zi ON zi.geoFk = zgFather.id - JOIN zone z ON z.id = zi.zoneFk - JOIN zoneCalendar zc ON zc.zoneFk = z.id - JOIN agencyMode am ON am.id = z.agencyModeFk - WHERE zgSon.`name` LIKE vPostalCode - AND zc.delivered = vLanded - AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) - ORDER BY zgFather.depth DESC) t - GROUP BY agencyModeFk - HAVING isIncluded > 0; - + SELECT * FROM ( + SELECT am.id agencyModeFk, + am.name agencyMode, + am.description, + am.deliveryMethodFk, + TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, + zi.isIncluded, + z.warehouseFk, + z.id zoneFk + FROM zoneGeo zgSon + JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt + JOIN zoneIncluded zi ON zi.geoFk = zgFather.id + JOIN zone z ON z.id = zi.zoneFk + JOIN zoneCalendar zc ON zc.zoneFk = z.id + JOIN agencyMode am ON am.id = z.agencyModeFk + WHERE zgSon.`name` LIKE vPostalCode + AND zc.delivered = vLanded + AND TIMESTAMPADD(DAY,-z.travelingDays, vLanded) >= CURDATE() + AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) + ORDER BY z.id, zgFather.depth DESC, zi.isIncluded DESC) t + GROUP BY zoneFk + HAVING isIncluded > 0 + ORDER BY shipped) t + GROUP BY agencyModeFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -42976,7 +44616,8 @@ BEGIN SELECT * FROM ( SELECT TIMESTAMPADD(DAY,-z.travelingDays, zc.delivered) shipped, - zc.delivered landed + zc.delivered landed, + zi.isIncluded FROM zoneGeo zgSon JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt JOIN zoneIncluded zi ON zi.geoFk = zgFather.id @@ -42985,6 +44626,7 @@ BEGIN WHERE zgSon.`name` LIKE vPostalCode AND z.agencyModeFk = vAgencyModeFk AND z.warehouseFk = vWarehouseFk + AND TIMESTAMPADD(DAY,-z.travelingDays, zc.delivered) >= CURDATE() AND IF(TIMESTAMPADD(DAY,-z.travelingDays, zc.delivered) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) ORDER BY landed ASC, zgFather.depth DESC) t HAVING isIncluded > 0 LIMIT 1; @@ -43069,25 +44711,84 @@ BEGIN SELECT postalCode INTO vPostalCode FROM address WHERE id = vAddressFk; - + SELECT * FROM ( - SELECT z.id, - TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, - vLanded landed, - zi.isIncluded - FROM zoneGeo zgSon - JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt - JOIN zoneIncluded zi ON zi.geoFk = zgFather.id - JOIN zone z ON z.id = zi.zoneFk - JOIN zoneCalendar zc ON zc.zoneFk = z.id - WHERE zgSon.`name` LIKE vPostalCode - AND zc.delivered = vLanded - AND z.agencyModeFk = vAgencyModeFk - AND z.warehouseFk = vWarehouseFk - AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) - ORDER BY z.id, landed ASC, zgFather.depth DESC) t - GROUP BY id - HAVING isIncluded > 0; + SELECT * FROM ( + SELECT z.id, + TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, + vLanded landed, + zi.isIncluded, + z.agencyModeFk + FROM zoneGeo zgSon + JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt + JOIN zoneIncluded zi ON zi.geoFk = zgFather.id + JOIN zone z ON z.id = zi.zoneFk + JOIN zoneCalendar zc ON zc.zoneFk = z.id + WHERE zgSon.`name` LIKE vPostalCode + AND zc.delivered = vLanded + AND z.agencyModeFk = vAgencyModeFk + AND z.warehouseFk = vWarehouseFk + AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) + ORDER BY z.id, zgFather.depth DESC, isIncluded DESC) t + GROUP BY id + HAVING isIncluded > 0 + ORDER BY shipped) + t + GROUP BY agencyModeFk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `zoneGetShippedWarehouse` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `zoneGetShippedWarehouse`(vLanded DATE, vAddressFk INT, vAgencyModeFk INT) +BEGIN +/** + * Devuelve la mínima fecha de envío para cada warehouse + * + * @param vLanded La fecha de recepcion + * @param vAddressFk Id del consignatario + * @param vAgencyModeFk Id de la agencia + * @return tmp.zoneGetShipped + */ + + DECLARE vPostalCode varchar(10); + + SELECT postalCode INTO vPostalCode + FROM address WHERE id = vAddressFk; + + DROP TEMPORARY TABLE IF EXISTS tmp.zoneGetShipped; + CREATE TEMPORARY TABLE tmp.zoneGetShipped + ENGINE = MEMORY + SELECT * FROM ( + SELECT * FROM ( + SELECT z.id, + TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, + zi.isIncluded,z.warehouseFk + FROM zoneGeo zgSon + JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt + JOIN zoneIncluded zi ON zi.geoFk = zgFather.id + JOIN zone z ON z.id = zi.zoneFk + JOIN zoneCalendar zc ON zc.zoneFk = z.id + WHERE zgSon.`name` LIKE vPostalCode + AND zc.delivered = vLanded + AND z.agencyModeFk = vAgencyModeFk + AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) + ORDER BY z.id, shipped ASC, zgFather.depth DESC, zi.isIncluded DESC) t + GROUP BY warehouseFk, id + HAVING isIncluded > 0 + ORDER BY shipped) t + GROUP BY warehouseFk; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43120,28 +44821,31 @@ BEGIN SELECT postalCode INTO vPostalCode FROM address WHERE id = vAddress; - SELECT * FROM ( - SELECT am.id, - am.name agencyMode, - am.description, - am.deliveryMethodFk, - TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, - z.warehouseFk, - zi.isIncluded - FROM zoneGeo zgSon - JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt - JOIN zoneIncluded zi ON zi.geoFk = zgFather.id - JOIN zone z ON z.id = zi.zoneFk - JOIN zoneCalendar zc ON zc.zoneFk = z.id - JOIN agencyMode am ON am.id = z.agencyModeFk - WHERE zgSon.`name` LIKE vPostalCode - AND delivered = vLanded - AND z.warehouseFk = vWarehouse - AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) - ORDER BY zgFather.depth DESC) t - GROUP BY id - HAVING isIncluded > 0; + SELECT * FROM ( + SELECT am.id agencyModeFk, + am.name agencyMode, + am.description, + am.deliveryMethodFk, + TIMESTAMPADD(DAY,-z.travelingDays, vLanded) shipped, + z.warehouseFk, + zi.isIncluded, + z.id zoneFk + FROM zoneGeo zgSon + JOIN zoneGeo zgFather ON zgSon.lft BETWEEN zgFather.lft AND zgFather.rgt + JOIN zoneIncluded zi ON zi.geoFk = zgFather.id + JOIN zone z ON z.id = zi.zoneFk + JOIN zoneCalendar zc ON zc.zoneFk = z.id + JOIN agencyMode am ON am.id = z.agencyModeFk + WHERE zgSon.`name` LIKE vPostalCode + AND delivered = vLanded + AND z.warehouseFk = vWarehouse + AND IF(TIMESTAMPADD(DAY,-z.travelingDays, vLanded) = CURDATE(), hour(now()) < hour(z.`hour`),TRUE) + ORDER BY z.id, zgFather.depth DESC) t + GROUP BY zoneFk + HAVING isIncluded > 0 + ORDER BY shipped) t + GROUP BY agencyModeFk; END ;; DELIMITER ; @@ -43157,7 +44861,7 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `zoneNest`() BEGIN @@ -43170,16 +44874,17 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.country; CREATE TEMPORARY TABLE tmp.country SELECT id FROM country - WHERE country IN('España', 'Francia', 'Holanda', 'Portugal'); + WHERE country IN('Italia'); CALL vn.zoneNestCountry(); CALL vn.zoneNestProvince(); CALL vn.zoneNestTown(); CALL vn.zoneNestPostcode(); - CALL vn.nestTree('tmp', 'zoneGeo', 'vn', 'zoneGeo'); - - DROP TEMPORARY TABLE tmp.zoneGeo; + + DROP TEMPORARY TABLE + tmp.zoneGeo, + tmp.country; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43194,7 +44899,7 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `zoneNestCountry`() BEGIN @@ -43204,7 +44909,6 @@ BEGIN DECLARE vGeoFk INT; DECLARE vChildFk INT; DECLARE vChildName VARCHAR(100); - DECLARE countryCur CURSOR FOR SELECT 1, c.id, c.`country` FROM vn.country c @@ -43212,6 +44916,17 @@ BEGIN ORDER BY c.`country`; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + -- Remove existing countries + DELETE zg FROM vn.country c + JOIN tmp.country tc ON tc.id = c.id + JOIN tmp.zoneGeo zg ON zg.id = c.geoFk; + + -- Reset country geoFk + UPDATE vn.country c + JOIN tmp.country tc ON tc.id = c.id + SET c.geoFk = NULL + WHERE c.geoFk IS NOT NULL; -- > Country cursor start OPEN countryCur; @@ -43225,11 +44940,7 @@ BEGIN LEAVE countryLoop; END IF; - CALL nestAdd('tmp', 'zoneGeo', vParent, vChildName); - - -- Update country geoFk - -- SET vGeoFk = LAST_INSERT_ID(); - -- UPDATE country SET geoFk = vGeoFk WHERE id = vChildFk; + CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); END LOOP; CLOSE countryCur; -- < Country cursor end @@ -43237,7 +44948,7 @@ BEGIN UPDATE country c JOIN tmp.zoneGeo z ON z.name = c.country SET c.geoFk = z.id - WHERE c.geoFk IS NULL; + WHERE c.geoFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43252,7 +44963,7 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `zoneNestPostcode`() BEGIN @@ -43262,16 +44973,30 @@ BEGIN DECLARE vGeoFk INT; DECLARE vChildFk INT; DECLARE vChildName VARCHAR(100); - DECLARE postcodeCur CURSOR FOR SELECT t.geoFk, pc.`code`, pc.`code` FROM vn.postCode pc JOIN vn.town t ON t.id = pc.townFk JOIN vn.province p ON p.id = t.provinceFk JOIN tmp.country tc ON tc.id = p.countryFk - ORDER BY pc.`code`; + ORDER BY t.geoFk, pc.`code`; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + -- Remove existing postCodes from zoneGeo + DELETE zg FROM vn.postCode pc + JOIN vn.town t ON t.id = pc.townFk + JOIN vn.province p ON p.id = t.provinceFk + JOIN tmp.country tc ON tc.id = p.countryFk + JOIN tmp.zoneGeo zg ON zg.id = pc.geoFk; + + -- Reset town geoFk + UPDATE vn.postCode pc + JOIN vn.town t ON t.id = pc.townFk + JOIN vn.province p ON p.id = t.provinceFk + JOIN tmp.country tc ON tc.id = p.countryFk + SET pc.geoFk = NULL + WHERE pc.geoFk IS NOT NULL; -- > Postcode cursor start OPEN postcodeCur; @@ -43285,11 +45010,7 @@ BEGIN LEAVE postcodeLoop; END IF; - CALL nestAdd('tmp', 'zoneGeo', vParent, vChildName); - - -- Update postcode geoFk - -- SET vGeoFk = LAST_INSERT_ID(); - -- UPDATE vn.postCode SET geoFk = vGeoFk WHERE `code` = vChildFk; + CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); END LOOP; CLOSE postcodeCur; -- < Postcode cursor end @@ -43312,7 +45033,7 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `zoneNestProvince`() BEGIN @@ -43322,15 +45043,25 @@ BEGIN DECLARE vGeoFk INT; DECLARE vChildFk INT; DECLARE vChildName VARCHAR(100); - DECLARE provinceCur CURSOR FOR SELECT c.geoFk, p.id, p.`name` FROM province p JOIN tmp.country tc ON tc.id = p.countryFk JOIN vn.country c ON c.id = tc.id - ORDER BY p.`name`; + ORDER BY c.geoFk, p.`name`; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + -- Remove existing provinces from zoneGeo + DELETE zg FROM vn.province p + JOIN tmp.country tc ON tc.id = p.countryFk + JOIN tmp.zoneGeo zg ON zg.id = p.geoFk; + + -- Reset country geoFk + UPDATE vn.province p + JOIN tmp.country tc ON tc.id = p.countryFk + SET p.geoFk = NULL + WHERE p.geoFk IS NOT NULL; -- > Province cursor start OPEN provinceCur; @@ -43344,11 +45075,7 @@ BEGIN LEAVE provinceLoop; END IF; - CALL nestAdd('tmp', 'zoneGeo', vParent, vChildName); - - -- Update province geoFk - -- SET vGeoFk = LAST_INSERT_ID(); - -- UPDATE province SET geoFk = vGeoFk WHERE id = vChildFk; + CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); END LOOP; CLOSE provinceCur; -- < Province cursor end @@ -43356,7 +45083,7 @@ BEGIN UPDATE province p JOIN tmp.zoneGeo z ON z.name = p.name SET p.geoFk = z.id - WHERE p.geoFk IS NULL; + WHERE p.geoFk IS NULL; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -43371,7 +45098,7 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `zoneNestTown`() BEGIN @@ -43381,15 +45108,27 @@ BEGIN DECLARE vGeoFk INT; DECLARE vChildFk INT; DECLARE vChildName VARCHAR(100); - DECLARE townCur CURSOR FOR SELECT p.geoFk, t.id, t.`name` FROM vn.town t JOIN vn.province p ON p.id = t.provinceFk JOIN tmp.country tc ON tc.id = p.countryFk - ORDER BY t.`name`; + ORDER BY p.geoFk, t.`name`; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + -- Remove existing towns from zoneGeo + DELETE zg FROM vn.town t + JOIN vn.province p ON p.id = t.provinceFk + JOIN tmp.country tc ON tc.id = p.countryFk + JOIN tmp.zoneGeo zg ON zg.id = t.geoFk; + + -- Reset town geoFk + UPDATE vn.town t + JOIN vn.province p ON p.id = t.provinceFk + JOIN tmp.country tc ON tc.id = p.countryFk + SET t.geoFk = NULL + WHERE t.geoFk IS NOT NULL; -- > Town cursor start OPEN townCur; @@ -43403,11 +45142,7 @@ BEGIN LEAVE townLoop; END IF; - CALL nestAdd('tmp', 'zoneGeo', vParent, vChildName); - - -- Update town geoFk - -- SET vGeoFk = LAST_INSERT_ID(); - -- UPDATE town SET geoFk = vGeoFk WHERE id = vChildFk; + CALL nst.nodeAdd('tmp', 'zoneGeo', vParent, vChildName); END LOOP; CLOSE townCur; -- < Town cursor end @@ -43423,6 +45158,55 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__agencyListAvailable` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__agencyListAvailable`(vDate DATE, vAddress INT) + READS SQL DATA +BEGIN +/** + * DEPRECATED usar zoneGetAgency + * Devuelve la lista de almacenes disponibles y la fecha de + * envío desde cada uno. + * + * @param vDate Fecha de recepción de mercancía + * @param vAddress Id consignatario, %NULL para recogida + * @return agencyAvailable Lista de almacenes disponibles + */ + DECLARE vMaxDays INT DEFAULT DATEDIFF(vDate, CURDATE()); + DECLARE vWday TINYINT DEFAULT WEEKDAY(vDate); + DECLARE vHour TINYINT DEFAULT HOUR(NOW()); + DECLARE vProvince INT; + + SELECT provinceFk INTO vProvince + FROM address + WHERE id = vAddress; + + DROP TEMPORARY TABLE IF EXISTS tmp.agencyAvailable; + CREATE TEMPORARY TABLE tmp.agencyAvailable + (INDEX (agencyFk)) + ENGINE = MEMORY + SELECT agencyFk, warehouseFk + FROM agencyHour h + WHERE (provinceFk = vProvince + OR provinceFk IS NULL) + AND (weekDay = vWday + OR weekDay IS NULL) + AND (substractDay < vMaxDays + OR (substractDay = vMaxDays AND maxHour > vHour)); +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Current Database: `vn2008` @@ -43460,7 +45244,7 @@ CREATE TABLE `Agencias` ( PRIMARY KEY (`Id_Agencia`), KEY `Agencias` (`Agencia`), KEY `Vista` (`Vista`) -) ENGINE=InnoDB AUTO_INCREMENT=1226 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1227 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43479,7 +45263,7 @@ CREATE TABLE `Agencias_dits` ( `value_old` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `value_new` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`idAgencia_dits`) -) ENGINE=InnoDB AUTO_INCREMENT=39984 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=40040 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43599,7 +45383,7 @@ CREATE TABLE `Articles` ( CONSTRAINT `Articles_ibfk_5` FOREIGN KEY (`tipo_id`) REFERENCES `Tipos` (`tipo_id`) ON UPDATE CASCADE, CONSTRAINT `expenceFk` FOREIGN KEY (`expenceFk`) REFERENCES `Gastos` (`Id_Gasto`) ON UPDATE CASCADE, CONSTRAINT `producer_id` FOREIGN KEY (`producer_id`) REFERENCES `producer` (`producer_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=351163 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=356331 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -43817,7 +45601,7 @@ CREATE TABLE `Articles_dits` ( KEY `fgkey1_idx` (`idaccion_dits`), KEY `fgkey2_idx` (`Id_Ticket`), KEY `fgkey3_idx` (`Id_Trabajador`) -) ENGINE=InnoDB AUTO_INCREMENT=21432 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=21433 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43840,7 +45624,7 @@ CREATE TABLE `Articles_nicho` ( KEY `Articles_nicho_wh_fk` (`warehouse_id`), CONSTRAINT `Articles_nicho_wh_fk` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `Articles_nichos_fk` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=784731 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=815746 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -43966,7 +45750,7 @@ CREATE TABLE `Cajas` ( KEY `warehouse_id` (`warehouse_id`), KEY `fk_Cajas_Proveedores_account1_idx` (`Proveedores_account_Id`), CONSTRAINT `Cajas_ibfk_2` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=690681 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=701382 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -44098,18 +45882,18 @@ CREATE TABLE `Clientes` ( CONSTRAINT `canal_nuevo_cliente` FOREIGN KEY (`chanel_id`) REFERENCES `chanel` (`chanel_id`) ON UPDATE CASCADE, CONSTRAINT `tipos_de_cliente` FOREIGN KEY (`clientes_tipo_id`) REFERENCES `clientes_tipo` (`clientes_tipo_id`) ON UPDATE CASCADE, CONSTRAINT `typeFk` FOREIGN KEY (`typeFk`) REFERENCES `clientes_tipo` (`code`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=15832 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=16026 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ClientesBeforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `client_beforeInsert` BEFORE INSERT ON `Clientes` FOR EACH ROW BEGIN @@ -44120,16 +45904,14 @@ BEGIN WHERE `IF` = TRIM(NEW.`IF`); IF isAlreadyUsedIf THEN - CALL util.throw ('Error. El NIF/CIF está repetido'); + CALL util.throw('El NIF/CIF está repetido'); END IF; - CALL pbx.phoneIsValid (NEW.telefono); - CALL pbx.phoneIsValid (NEW.movil); - CALL pbx.phoneIsValid (NEW.fax); + CALL pbx.phone_isValid(NEW.telefono); + CALL pbx.phone_isValid(NEW.movil); + CALL pbx.phone_isValid(NEW.fax); SET NEW.cuenta = 4300000000 + NEW.Id_Cliente; - - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44139,39 +45921,39 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ClientesBeforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `client_beforeUpdate` BEFORE UPDATE ON `Clientes` FOR EACH ROW BEGIN DECLARE vText VARCHAR(255) DEFAULT NULL; - DECLARE isAlreadyUsedIf BOOLEAN; + DECLARE isAlreadyUsedIf BOOL; SELECT (COUNT(*) > 1) INTO isAlreadyUsedIf FROM Clientes WHERE `IF` = TRIM(NEW.`IF`); IF isAlreadyUsedIf THEN - CALL util.throw ('Error. El NIF/CIF está repetido'); + CALL util.throw('El NIF/CIF está repetido'); END IF; -- Comprueba que el formato de los teléfonos es válido IF !(NEW.telefono <=> OLD.telefono) THEN - CALL pbx.phoneIsValid (NEW.telefono); + CALL pbx.phone_isValid(NEW.telefono); END IF; IF !(NEW.movil <=> OLD.movil) THEN - CALL pbx.phoneIsValid (NEW.movil); + CALL pbx.phone_isValid(NEW.movil); END IF; IF !(NEW.fax <=> OLD.fax) THEN - CALL pbx.phoneIsValid (NEW.fax); + CALL pbx.phone_isValid(NEW.fax); END IF; IF NEW.pay_met_id = 4 AND NEW.Vencimiento = 0 THEN @@ -44210,13 +45992,13 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ClientesAfterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`client_afterUpdate` AFTER UPDATE ON `Clientes` FOR EACH ROW BEGIN @@ -44257,7 +46039,7 @@ CREATE TABLE `Clientes_cedidos` ( CONSTRAINT `cliente_cedido_fk` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `new_trabajador_fk` FOREIGN KEY (`Id_Trabajador_new`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `trabajador_fk` FOREIGN KEY (`Id_Trabajador_old`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Clientes que se han cambiado de comercial, pero durante un tiempo comisionan a los dos, al anterior y al actual'; +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Clientes que se han cambiado de comercial, pero durante un tiempo comisionan a los dos, al anterior y al actual'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -44375,7 +46157,7 @@ CREATE TABLE `Colas` ( KEY `Id_Trabajador` (`Id_Trabajador`), CONSTRAINT `Colas_ibfk_3` FOREIGN KEY (`Id_Prioridad`) REFERENCES `Prioridades` (`Id_Prioridad`) ON UPDATE CASCADE, CONSTRAINT `Colas_ibfk_4` FOREIGN KEY (`Id_Impresora`) REFERENCES `Impresoras` (`Id_Impresora`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=56049 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=20850 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -44529,7 +46311,7 @@ CREATE TABLE `Consignatarios` ( CONSTRAINT `Consignatarios_ibfk_3` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON UPDATE CASCADE, CONSTRAINT `Consignatarios_ibfk_4` FOREIGN KEY (`Id_Agencia`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE, CONSTRAINT `address_customer_id` FOREIGN KEY (`Id_cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=27826 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=28210 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -44540,14 +46322,14 @@ CREATE TABLE `Consignatarios` ( /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Consignatarios_beforeInsert` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`address_beforeInsert` BEFORE INSERT ON `vn2008`.`Consignatarios` FOR EACH ROW BEGIN - DECLARE vIsEqualizated BOOLEAN; + DECLARE vIsEqualizated BOOL; - CALL pbx.phoneIsValid (NEW.telefono); - CALL pbx.phoneIsValid (NEW.movil); + CALL pbx.phone_isValid(NEW.telefono); + CALL pbx.phone_isValid(NEW.movil); IF NEW.isEqualizated IS NULL THEN SELECT RE @@ -44572,12 +46354,12 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Consignatarios_beforeUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`address_beforeUpdate` BEFORE UPDATE ON `vn2008`.`Consignatarios` FOR EACH ROW BEGIN - CALL pbx.phoneIsValid (NEW.telefono); - CALL pbx.phoneIsValid (NEW.movil); + CALL pbx.phone_isValid(NEW.telefono); + CALL pbx.phone_isValid(NEW.movil); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44593,7 +46375,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Consignatarios_afterUpdate` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`address_afterUpdate` AFTER UPDATE ON `Consignatarios` FOR EACH ROW BEGIN @@ -44657,23 +46439,24 @@ CREATE TABLE `Contactos` ( PRIMARY KEY (`Id_Contacto`), KEY `Telefono` (`Telefono`), KEY `Movil` (`Movil`) -) ENGINE=InnoDB AUTO_INCREMENT=2709 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2719 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ContactosBeforeInsert` -BEFORE INSERT ON `Contactos` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Contactos_beforeInsert` + BEFORE INSERT ON `Contactos` + FOR EACH ROW BEGIN - CALL pbx.phoneIsValid (NEW.telefono); - CALL pbx.phoneIsValid (NEW.movil); - CALL pbx.phoneIsValid (NEW.fax); + CALL pbx.phone_isValid(NEW.telefono); + CALL pbx.phone_isValid(NEW.movil); + CALL pbx.phone_isValid(NEW.fax); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44683,18 +46466,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ContactosBeforeUpdate` -BEFORE UPDATE ON `Contactos` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`Contactos_beforeUpdate` + BEFORE UPDATE ON `Contactos` + FOR EACH ROW BEGIN - CALL pbx.phoneIsValid (NEW.telefono); - CALL pbx.phoneIsValid (NEW.movil); - CALL pbx.phoneIsValid (NEW.fax); + CALL pbx.phone_isValid(NEW.telefono); + CALL pbx.phone_isValid(NEW.movil); + CALL pbx.phone_isValid(NEW.fax); END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -44882,7 +46666,7 @@ CREATE TABLE `Entradas_dits` ( CONSTRAINT `Entradas_dits_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn`.`entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fgkey_entradas_1` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits` (`idaccion_dits`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `fgkey_entradas_3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3586793 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3658182 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -44900,7 +46684,7 @@ CREATE TABLE `Entradas_kop` ( PRIMARY KEY (`Id_Entradas_kop`), KEY `entradas_entradas_kop_idx` (`Id_Entrada`), CONSTRAINT `entradas_entradas_kop` FOREIGN KEY (`Id_Entrada`) REFERENCES `vn`.`entry` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=549 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona las entradas con los origenes de compra'; +) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Relaciona las entradas con los origenes de compra'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -44988,7 +46772,7 @@ CREATE TABLE `Equipos` ( PRIMARY KEY (`id`), KEY `trabajador_id` (`trabajador_id`), CONSTRAINT `Equipos_ibfk_1` FOREIGN KEY (`trabajador_id`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=210 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -45144,7 +46928,7 @@ CREATE TABLE `Facturas` ( CONSTRAINT `Facturas_ibfk_4` FOREIGN KEY (`cplusTaxBreakFk`) REFERENCES `vn`.`cplusTaxBreak` (`id`) ON UPDATE CASCADE, CONSTRAINT `invoice_bank_id` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, CONSTRAINT `invoice_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=498367 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=505772 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -45323,7 +47107,7 @@ CREATE TABLE `Greuges` ( KEY `Id_Ticket_Greuge_Ticket_idx` (`Id_Ticket`), CONSTRAINT `Id_Ticket_Greuge_Ticket` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `greuges_type_fk` FOREIGN KEY (`Greuges_type_id`) REFERENCES `Greuges_type` (`Greuges_type_id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3374376 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT; +) ENGINE=InnoDB AUTO_INCREMENT=3477560 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -45524,7 +47308,7 @@ CREATE TABLE `Movimientos` ( KEY `itemFk_ticketFk` (`Id_Article`,`Id_Ticket`), CONSTRAINT `Movimientos_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON UPDATE CASCADE, CONSTRAINT `movement_ticket_id` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=24614603 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=24994828 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -45582,7 +47366,7 @@ DELIMITER ;; FOR EACH ROW BEGIN IF !(NEW.Id_Movimiento <=> OLD.Id_Movimiento) - OR !(NEW.Id_Ticket <=> OLD.Id_Movimiento) + OR !(NEW.Id_Ticket <=> OLD.Id_Ticket) OR !(NEW.Id_Article <=> OLD.Id_Article) OR !(NEW.Cantidad <=> OLD.Cantidad) OR !(NEW.odbc_date <=> OLD.odbc_date) @@ -45694,7 +47478,7 @@ CREATE TABLE `Movimientos_mark` ( KEY `Id_Movimiento` (`Id_Movimiento`), KEY `fgnStateFk_idx` (`stateFk`), CONSTRAINT `fgnStateFk` FOREIGN KEY (`stateFk`) REFERENCES `state` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=16808159 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=17669475 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -45799,7 +47583,7 @@ CREATE TABLE `Ordenes` ( CONSTRAINT `fgnAtender` FOREIGN KEY (`atenderFk`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, CONSTRAINT `fgnRequester` FOREIGN KEY (`requesterFk`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, CONSTRAINT `fgnTicket` FOREIGN KEY (`ticketFk`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=44261 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=45807 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -45903,7 +47687,7 @@ CREATE TABLE `Pagares` ( KEY `empresa_id` (`kk_empresa_id`), KEY `pago_id` (`pago_id`), CONSTRAINT `Pagares_ibfk_2` FOREIGN KEY (`pago_id`) REFERENCES `pago` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2868 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2875 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -45923,10 +47707,11 @@ CREATE TABLE `Paises` ( `nst_geo_id` int(11) DEFAULT NULL, `nst_name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `geoFk` int(11) DEFAULT NULL, + `hasDailyInvoice` tinyint(4) NOT NULL DEFAULT '0', `isUeeMember` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`Id`), KEY `Id_Paisreal` (`Id_Paisreal`) -) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46029,7 +47814,7 @@ CREATE TABLE `Proveedores` ( CONSTRAINT `pay_dem_id` FOREIGN KEY (`pay_dem_id`) REFERENCES `pay_dem` (`id`) ON UPDATE CASCADE, CONSTRAINT `pay_met_id` FOREIGN KEY (`pay_met_id`) REFERENCES `pay_met` (`id`) ON UPDATE CASCADE, CONSTRAINT `province_id` FOREIGN KEY (`province_id`) REFERENCES `province` (`province_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2780 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2807 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46055,7 +47840,7 @@ CREATE TABLE `Proveedores_account` ( KEY `fk_Proveedores_account_entity1_idx` (`entity_id`), KEY `fk_banco_prov_account_idx` (`Id_Banco`), CONSTRAINT `fk_banco_prov_account` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=788 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=804 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46145,10 +47930,11 @@ CREATE TABLE `Recibos` ( KEY `Id_Trabajador` (`Id_Trabajador`), KEY `empresa_id` (`empresa_id`), KEY `clientDate` (`Id_Cliente`,`Fechacobro`), + KEY `id_factura` (`Id_Factura`), CONSTRAINT `Recibos_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, CONSTRAINT `Recibos_ibfk_2` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, CONSTRAINT `recibo_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=565275 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=575388 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -46239,7 +48025,7 @@ CREATE TABLE `Relaciones` ( KEY `Id_Contacto` (`Id_Contacto`), KEY `Id_Proveedor` (`Id_Proveedor`), KEY `Id_Cliente` (`Id_Cliente`) -) ENGINE=InnoDB AUTO_INCREMENT=2710 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2723 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46259,7 +48045,7 @@ CREATE TABLE `Remesas` ( KEY `empresa_id` (`empresa_id`), CONSTRAINT `Remesas_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, CONSTRAINT `Remesas_ibfk_2` FOREIGN KEY (`Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1275 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1296 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46284,7 +48070,7 @@ CREATE TABLE `Reservas` ( PRIMARY KEY (`Id_Reserva`), KEY `Id_1` (`Id_Ticket`), KEY `Id_Article` (`Id_Article`) -) ENGINE=InnoDB AUTO_INCREMENT=1031 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=377 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46315,7 +48101,7 @@ CREATE TABLE `Rutas` ( KEY `Fecha` (`Fecha`), KEY `gestdoc_id` (`gestdoc_id`), CONSTRAINT `Rutas_ibfk_1` FOREIGN KEY (`gestdoc_id`) REFERENCES `gestdoc` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=52529 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=53935 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -46399,7 +48185,7 @@ CREATE TABLE `Rutas_Master` ( PRIMARY KEY (`id`), KEY `fk_rutas_warehouse_id_idx` (`warehouse_id`), CONSTRAINT `fk_rutas_warehouse_id` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=106 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46490,7 +48276,7 @@ CREATE TABLE `Saldos_Prevision` ( KEY `empresa_prevision_idx` (`empresa_id`), CONSTRAINT `banco_prevision` FOREIGN KEY (`Id_Banco`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, CONSTRAINT `empresa_prevision` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=205 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Aqui ponemos los gastos e ingresos pendientes de introducir '; +) ENGINE=InnoDB AUTO_INCREMENT=236 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Aqui ponemos los gastos e ingresos pendientes de introducir '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46525,7 +48311,7 @@ CREATE TABLE `Split_lines` ( KEY `Id_Compra` (`Id_Compra`), CONSTRAINT `Id_Compra` FOREIGN KEY (`Id_Compra`) REFERENCES `vn`.`buy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `Split_lines_ibfk_1` FOREIGN KEY (`Id_Split`) REFERENCES `Splits` (`Id_Split`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=353994 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=356443 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46543,7 +48329,7 @@ CREATE TABLE `Splits` ( `Notas` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`Id_Split`), KEY `Id_Entrada` (`Id_Entrada`) -) ENGINE=InnoDB AUTO_INCREMENT=36650 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=36721 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46571,7 +48357,7 @@ CREATE TABLE `Stockcontrol` ( CONSTRAINT `Stockcontrol_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `Stockcontrol_ibfk_2` FOREIGN KEY (`Id_Remitente`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `Stockcontrol_ibfk_3` FOREIGN KEY (`Id_Solver`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=24057 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=24059 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46611,6 +48397,7 @@ CREATE TABLE `Tickets` ( `landing` date DEFAULT NULL, `boxed` tinyint(2) NOT NULL DEFAULT '0', `isDeleted` tinyint(2) NOT NULL DEFAULT '0', + `zoneFk` int(11) DEFAULT NULL, PRIMARY KEY (`Id_Ticket`), KEY `Id_Cliente` (`Id_Cliente`), KEY `Id_Consigna` (`Id_Consigna`), @@ -46622,14 +48409,16 @@ CREATE TABLE `Tickets` ( KEY `Id_Ruta` (`Id_Ruta`), KEY `warehouse_date` (`warehouse_id`,`Fecha`), KEY `Fecha` (`Fecha`,`Id_Cliente`), + KEY `tickets_zone_fk_idx` (`zoneFk`), CONSTRAINT `Tickets_ibfk_1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE, CONSTRAINT `Tickets_ibfk_5` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, CONSTRAINT `Tickets_ibfk_6` FOREIGN KEY (`Id_Consigna`) REFERENCES `Consignatarios` (`id_consigna`) ON UPDATE CASCADE, CONSTRAINT `Tickets_ibfk_8` FOREIGN KEY (`Id_Agencia`) REFERENCES `Agencias` (`Id_Agencia`), CONSTRAINT `Tickets_ibfk_9` FOREIGN KEY (`Id_Ruta`) REFERENCES `Rutas` (`Id_Ruta`) ON UPDATE CASCADE, CONSTRAINT `ticket_customer_id` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, - CONSTRAINT `tickets_fk10` FOREIGN KEY (`Factura`) REFERENCES `Facturas` (`Id_Factura`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2265771 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `tickets_fk10` FOREIGN KEY (`Factura`) REFERENCES `Facturas` (`Id_Factura`) ON UPDATE CASCADE, + CONSTRAINT `tickets_zone_fk` FOREIGN KEY (`zoneFk`) REFERENCES `vn`.`zone` (`id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=2308849 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -46644,29 +48433,24 @@ DELIMITER ;; AFTER INSERT ON `Tickets` FOR EACH ROW BEGIN - DECLARE vEmployee INT; - + DECLARE vClientType VARCHAR(255); + DECLARE vStateCode VARCHAR(255); + -- Borrar cuando se cambie el insert ticket en la APP móvil - SELECT Id_Trabajador INTO vEmployee - FROM Trabajadores WHERE user_id = account.userGetId(); + SELECT typeFk INTO vClientType + FROM vn.`client` WHERE id = NEW.Id_Cliente; - IF vEmployee IS NULL THEN - SET vEmployee = 20; - END IF; - - IF NEW.Id_Cliente = 400 OR NEW.Id_Cliente = 200 - THEN - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, NEW.Id_Ticket, vEmployee - FROM state - WHERE `code` = 'DELIVERED'; + IF vClientType = 'loses' THEN + SET vStateCode = 'DELIVERED'; ELSE - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - SELECT id, NEW.Id_Ticket, vEmployee - FROM state - WHERE `code` = 'FREE'; + SET vStateCode = 'FREE'; END IF; + + INSERT INTO vncontrol.inter(Id_Ticket, state_id, Id_Trabajador) + SELECT NEW.Id_Ticket, id, vn.myWorker_getId() + FROM state + WHERE `code` = vStateCode COLLATE utf8_general_ci; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46686,55 +48470,22 @@ DELIMITER ;; BEFORE UPDATE ON `Tickets` FOR EACH ROW BEGIN - DECLARE vAgency INT; - DECLARE vEmployee INT; - DECLARE vIsCee TINYINT; - DECLARE vHasVies TINYINT; - - SELECT Id_Trabajador INTO vEmployee - FROM Trabajadores WHERE user_id = account.userGetId(); - - IF vEmployee IS NULL THEN - SET vEmployee = 20; - END IF; - /* - -- Comprobación de VIES - - IF NEW.empresa_id <> OLD.empresa_id AND vn.getUser() != 2 THEN - - SELECT CEE INTO vIsCee - FROM Proveedores AS pr - INNER JOIN Paises p ON p.Id = pr.pais_id - WHERE Id_Proveedor = NEW.empresa_id; - - SELECT isVies INTO vHasVies - FROM vn.`client` - WHERE id = OLD.Id_Cliente; - - IF vIsCee = 1 AND NOT vHasVies Then - CALL util.throw("NO_VALID_VIES"); + IF !(NEW.Fecha <=> OLD.Fecha) THEN + IF YEAR(NEW.Fecha) < 2000 THEN + SIGNAL SQLSTATE '46000' + SET MESSAGE_TEXT = 'Year cannot be lesser than 2000'; END IF; - - END IF; - */ - IF NEW.Fecha < '2001-01-01' - THEN + IF YEAR(NEW.Fecha) = 2000 THEN + SET NEW.isDeleted = TRUE; + END IF; + END IF; + + IF !(NEW.isDeleted <=> OLD.isDeleted) AND NEW.isDeleted THEN + SET NEW.Fecha = DATE_FORMAT(NEW.Fecha, '2000-%m-%d %T'); + SET NEW.landing = DATE_FORMAT(NEW.landing, '2000-%m-%d %T'); SET NEW.Id_Ruta = NULL; - - IF NEW.Fecha < '2000-01-01' then - SET NEW.Fecha = OLD.Fecha; - END IF; - - INSERT INTO vncontrol.inter(state_id, Id_Ticket, Id_Trabajador) - VALUES(17, NEW.Id_Ticket, vEmployee); END IF; - - IF NEW.isDeleted = 1 THEN - SET NEW.Fecha = DATE_FORMAT(NEW.Fecha, '2000-%m-%d %T'); - SET NEW.landing = DATE_FORMAT(NEW.landing, '2000-%m-%d %T'); - SET NEW.Id_Ruta = NULL; - END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46759,6 +48510,13 @@ BEGIN OR !(NEW.Fecha <=> OLD.Fecha) THEN CALL stock.log_add('ticket', NEW.Id_Ticket, OLD.Id_Ticket); END IF; + + IF !(NEW.isDeleted <=> OLD.isDeleted) AND NEW.isDeleted THEN + INSERT INTO vncontrol.inter(Id_Ticket, state_id, Id_Trabajador) + SELECT NEW.Id_Ticket, id, vn.myWorker_getId() + FROM state + WHERE `code` = 'ERASED'; + END IF; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -46774,10 +48532,10 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vn2008`.`ticket_beforeDelete` - BEFORE DELETE ON `vn2008`.`Tickets` +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticket_beforeDelete` + BEFORE DELETE ON `Tickets` FOR EACH ROW -BEGIN +BEGIN DELETE FROM vn.sale WHERE ticketFk = OLD.Id_Ticket; END */;; DELIMITER ; @@ -46808,7 +48566,7 @@ CREATE TABLE `Tickets_dits` ( CONSTRAINT `Tickets_dits_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fgkey1` FOREIGN KEY (`idaccion_dits`) REFERENCES `accion_dits` (`idaccion_dits`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `fgkey3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=64660991 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=64770285 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -46889,7 +48647,7 @@ CREATE TABLE `Tickets_turno` ( `weekDay` tinyint(1) DEFAULT NULL COMMENT 'funcion de mysql Lunes = 0, Domingo = 6', PRIMARY KEY (`Id_Ticket`), CONSTRAINT `Id_Ticket_fk` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2260338 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2297438 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -46959,7 +48717,7 @@ CREATE TABLE `Tipos` ( CONSTRAINT `Tipos_ibfk_2` FOREIGN KEY (`roleCodeFk`) REFERENCES `account`.`role` (`name`) ON UPDATE CASCADE, CONSTRAINT `Trabajador` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, CONSTRAINT `warehouseFk5` FOREIGN KEY (`warehouseFk`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=269 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Protege la tabla tipos de updates para los 4 parámetros de los compradores, en funcion del valor del campo CodigoRojo de tblContadores.'; +) ENGINE=InnoDB AUTO_INCREMENT=276 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Protege la tabla tipos de updates para los 4 parámetros de los compradores, en funcion del valor del campo CodigoRojo de tblContadores.'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -47045,9 +48803,11 @@ CREATE TABLE `Trabajadores` ( UNIQUE KEY `user_id_UNIQUE` (`user_id`), UNIQUE KEY `Id_Cliente_Interno` (`Id_Cliente_Interno`), KEY `sub` (`sub`), + KEY `boss_idx` (`boss`), + KEY `empresa_id` (`empresa_id`), CONSTRAINT `Clientes` FOREIGN KEY (`Id_Cliente_Interno`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, CONSTRAINT `Trabajadores_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `account`.`user` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1299 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1339 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -47156,7 +48916,7 @@ CREATE TABLE `Vehiculos` ( KEY `provinceFk_idx` (`warehouseFk`), CONSTRAINT `Vehiculos_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, CONSTRAINT `provinceFk` FOREIGN KEY (`warehouseFk`) REFERENCES `province` (`province_id`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=425 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=426 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -47182,7 +48942,7 @@ CREATE TABLE `Vehiculos_consumo` ( PRIMARY KEY (`Vehiculos_consumo_id`,`Id_Vehiculo`), KEY `fk_Vehiculos_consumo_Vehiculos_idx` (`Id_Vehiculo`), CONSTRAINT `fk_Vehiculos_consumo_Vehiculos` FOREIGN KEY (`Id_Vehiculo`) REFERENCES `Vehiculos` (`Id_Vehiculo`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=11340 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntan el importe de los tickets de la gasolinera solred, con quien tenemos un contrato y nos facturan mensualmente'; +) ENGINE=InnoDB AUTO_INCREMENT=11644 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntan el importe de los tickets de la gasolinera solred, con quien tenemos un contrato y nos facturan mensualmente'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -47296,7 +49056,7 @@ CREATE TABLE `XDiario` ( PRIMARY KEY (`id`), KEY `empresa_id` (`empresa_id`), CONSTRAINT `XDiario_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3800449 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3870178 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -47382,7 +49142,7 @@ CREATE TABLE `account_conciliacion` ( KEY `fg_accconciliacion_key1_idx` (`Id_Proveedores_account`), KEY `index_id_calculated` (`id_calculated`), CONSTRAINT `fg_key1_accountconc` FOREIGN KEY (`Id_Proveedores_account`) REFERENCES `Proveedores_account` (`Id_Proveedores_account`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=26213 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=28659 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -47428,7 +49188,7 @@ CREATE TABLE `account_detail` ( KEY `fk_account_detail_Proveedores_account1_idx` (`Id_Proveedores_account`), CONSTRAINT `fk_account_detail_account_detail_type1` FOREIGN KEY (`account_detail_type_id`) REFERENCES `account_detail_type` (`account_detail_type_id`) ON UPDATE CASCADE, CONSTRAINT `fk_account_detail_account_id_proveedores_account` FOREIGN KEY (`Id_Proveedores_account`) REFERENCES `Proveedores_account` (`Id_Proveedores_account`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -47630,13 +49390,13 @@ CREATE TABLE `agency_warehouse` ( /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `agency_weekday_bonus` +-- Table structure for table `agency_weekday_bonusKk` -- -DROP TABLE IF EXISTS `agency_weekday_bonus`; +DROP TABLE IF EXISTS `agency_weekday_bonusKk`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `agency_weekday_bonus` ( +CREATE TABLE `agency_weekday_bonusKk` ( `id` int(11) NOT NULL AUTO_INCREMENT, `warehouse_id` smallint(6) unsigned DEFAULT NULL, `agency_id` smallint(5) unsigned DEFAULT NULL, @@ -47715,7 +49475,7 @@ CREATE TABLE `albaran` ( CONSTRAINT `fk_albaran_empresa1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE, CONSTRAINT `fk_albaran_recibida` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `fk_albaran_warehouse1` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3239 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3341 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -47793,7 +49553,7 @@ CREATE TABLE `awb` ( CONSTRAINT `awbInvoiceIn` FOREIGN KEY (`invoiceInFk`) REFERENCES `recibida` (`id`) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT `awbTransitoryFk` FOREIGN KEY (`transitario_id`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE, CONSTRAINT `awb_ibfk_1` FOREIGN KEY (`iva_id`) REFERENCES `iva_codigo` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3221 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3288 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -47959,7 +49719,7 @@ CREATE TABLE `awb_component` ( CONSTRAINT `awb_component_` FOREIGN KEY (`awb_component_type_id`) REFERENCES `awb_component_type` (`awb_component_type_id`) ON UPDATE CASCADE, CONSTRAINT `awb_role_fk` FOREIGN KEY (`awb_role_id`) REFERENCES `awb_role` (`awb_role_id`) ON UPDATE CASCADE, CONSTRAINT `awb_unit_fk` FOREIGN KEY (`awb_unit_id`) REFERENCES `awb_unit` (`awb_unit_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=23842 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=25494 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -47993,7 +49753,7 @@ CREATE TABLE `awb_component_template` ( CONSTRAINT `Id_Moneda` FOREIGN KEY (`Id_Moneda`) REFERENCES `Monedas` (`Id_Moneda`) ON UPDATE CASCADE, CONSTRAINT `awb_unit_fk1` FOREIGN KEY (`awb_unit_id`) REFERENCES `awb_unit` (`awb_unit_id`) ON UPDATE CASCADE, CONSTRAINT `role_fk` FOREIGN KEY (`awb_role_id`) REFERENCES `awb_role` (`awb_role_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=783 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=804 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48074,7 +49834,7 @@ CREATE TABLE `awb_gestdoc` ( KEY `awb_gestdoc_gestdoc_fk` (`gestdoc_id`), CONSTRAINT `awb_gestdoc_awb_fk` FOREIGN KEY (`awb_id`) REFERENCES `awb` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `awb_gestdoc_gestdoc_fk` FOREIGN KEY (`gestdoc_id`) REFERENCES `gestdoc` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2834 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2899 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48174,7 +49934,7 @@ CREATE TABLE `balance_nest_tree` ( `Id_Gasto` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, `isSelected` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=394 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=403 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48193,7 +49953,7 @@ CREATE TABLE `barcodes` ( UNIQUE KEY `Id_Article_2` (`Id_Article`,`code`), KEY `Id_Article` (`Id_Article`), CONSTRAINT `barcodes_ibfk_1` FOREIGN KEY (`Id_Article`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=40498 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=40796 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48207,7 +49967,7 @@ CREATE TABLE `bionic_updating_options` ( `buo_id` int(11) NOT NULL AUTO_INCREMENT, `description` varchar(45) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`buo_id`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla pondremos las distintas opciones que se ofrecen al comecial o al cliente al cambiar alguno de los parametros básicos de un ticket'; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla pondremos las distintas opciones que se ofrecen al comecial o al cliente al cambiar alguno de los parametros básicos de un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48543,7 +50303,7 @@ CREATE TABLE `cl_act` ( CONSTRAINT `cl_act_ibfk_1` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cl_act_ibfk_3` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, CONSTRAINT `cl_act_ibfk_4` FOREIGN KEY (`cl_main_id`) REFERENCES `cl_main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=107235 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Acciones en respuesta a las reclamaciones'; +) ENGINE=InnoDB AUTO_INCREMENT=109939 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Acciones en respuesta a las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48577,7 +50337,7 @@ CREATE TABLE `cl_cau` ( CONSTRAINT `cl_cau_ibfk_7` FOREIGN KEY (`cl_mot_id`) REFERENCES `cl_mot` (`id`) ON UPDATE CASCADE, CONSTRAINT `cl_cau_ibfk_8` FOREIGN KEY (`cl_con_id`) REFERENCES `cl_con` (`id`) ON UPDATE CASCADE, CONSTRAINT `cl_cau_ibfk_9` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=55612 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Causas de las reclamaciones'; +) ENGINE=InnoDB AUTO_INCREMENT=56786 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Causas de las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48627,7 +50387,7 @@ CREATE TABLE `cl_det` ( KEY `cl_main_id` (`cl_main_id`), CONSTRAINT `cl_det_ibfk_7` FOREIGN KEY (`Id_Movimiento`) REFERENCES `Movimientos` (`Id_Movimiento`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cl_det_ibfk_8` FOREIGN KEY (`cl_main_id`) REFERENCES `cl_main` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=142319 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de las reclamaciones'; +) ENGINE=InnoDB AUTO_INCREMENT=145391 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Detalle de las reclamaciones'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -48715,7 +50475,7 @@ CREATE TABLE `cl_main` ( CONSTRAINT `cl_main_ibfk_4` FOREIGN KEY (`cl_dep_id`) REFERENCES `cl_dep` (`id`) ON UPDATE CASCADE, CONSTRAINT `cl_main_ibfk_5` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `cl_main_ticketFk` FOREIGN KEY (`ticketFk`) REFERENCES `Tickets` (`Id_Ticket`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=63009 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Reclamaciones, tabla principal'; +) ENGINE=InnoDB AUTO_INCREMENT=64770 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Reclamaciones, tabla principal'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48831,7 +50591,7 @@ CREATE TABLE `client_observation` ( KEY `Id_Cliente` (`Id_Cliente`), CONSTRAINT `client_observation_ibfk_1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `client_observation_ibfk_2` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=74920 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +) ENGINE=InnoDB AUTO_INCREMENT=75637 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -48999,7 +50759,7 @@ CREATE TABLE `consignatarios_observation` ( `text` text COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`consignatarios_observation_id`), UNIQUE KEY `Id_Consigna` (`Id_Consigna`,`observation_type_id`) -) ENGINE=InnoDB AUTO_INCREMENT=3837 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de los consignatarios'; +) ENGINE=InnoDB AUTO_INCREMENT=3960 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Observaciones de los consignatarios'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -49081,7 +50841,7 @@ CREATE TABLE `credit` ( KEY `credit_ClienteFk` (`Id_Cliente`), CONSTRAINT `credit_ClienteFk` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `workers_fk` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=77514 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=79110 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -49171,7 +50931,6 @@ CREATE TABLE `department` ( `rgt` int(11) NOT NULL, `Id_Trabajador` int(11) DEFAULT NULL COMMENT 'Id_Trabajador es el jefe del departamento', `company_id` int(11) NOT NULL, - `father_id` int(11) DEFAULT NULL, `boss_id` int(11) DEFAULT NULL, `x` int(11) DEFAULT NULL, `y` int(11) DEFAULT NULL, @@ -49185,11 +50944,8 @@ CREATE TABLE `department` ( UNIQUE KEY `name_UNIQUE` (`name`), KEY `fk_department_Trabajadores1_idx` (`Id_Trabajador`), KEY `dep_org_ibfk_3_idx` (`company_id`), - KEY `fk_department_department1_idx` (`father_id`), - KEY `fk_department_department1_idx_idx` (`father_id`), - CONSTRAINT `fk_department_Trabajadores1` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, - CONSTRAINT `fk_department_department1_idx` FOREIGN KEY (`father_id`) REFERENCES `department` (`department_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `fk_department_Trabajadores1` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -49206,7 +50962,7 @@ CREATE TABLE `device` ( PRIMARY KEY (`device_id`), UNIQUE KEY `device_id_UNIQUE` (`device_id`), UNIQUE KEY `sn_UNIQUE` (`sn`) -) ENGINE=InnoDB AUTO_INCREMENT=295 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=301 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -49556,7 +51312,7 @@ CREATE TABLE `entity` ( UNIQUE KEY `bic_UNIQUE` (`bic`), KEY `fg_entity1_idx` (`pais_id`), CONSTRAINT `fg_entity1` FOREIGN KEY (`pais_id`) REFERENCES `Paises` (`Id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=30036 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Entidades bancarias '; +) ENGINE=InnoDB AUTO_INCREMENT=30038 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Entidades bancarias '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -49596,7 +51352,7 @@ CREATE TABLE `escritos_det` ( PRIMARY KEY (`id`), KEY `empresa_id` (`empresa_id`), CONSTRAINT `escritos_det_ibfk_1` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=17499 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=17654 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -49626,7 +51382,7 @@ CREATE TABLE `expeditions` ( KEY `index4` (`ticket_id`), CONSTRAINT `Id_Agencia` FOREIGN KEY (`agency_id`) REFERENCES `Agencias` (`Id_Agencia`) ON UPDATE CASCADE, CONSTRAINT `ticket_id` FOREIGN KEY (`ticket_id`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=3055523 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3126160 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -49870,7 +51626,7 @@ CREATE TABLE `gestdoc` ( UNIQUE KEY `emp_id` (`emp_id`,`orden`,`warehouse_id`), KEY `trabajador_id` (`trabajador_id`), KEY `warehouse_id` (`warehouse_id`) -) ENGINE=InnoDB AUTO_INCREMENT=1245548 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='document managment system'; +) ENGINE=InnoDB AUTO_INCREMENT=1271242 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='document managment system'; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -50075,7 +51831,7 @@ CREATE TABLE `intrastat_data` ( KEY `recibida` (`recibida_id`), CONSTRAINT `intrastat_data_ibfk_1` FOREIGN KEY (`intrastat_id`) REFERENCES `Intrastat` (`Codintrastat`) ON UPDATE CASCADE, CONSTRAINT `intrastat_data_ibfk_2` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=75912 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=76873 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -50359,7 +52115,7 @@ DROP TABLE IF EXISTS `mail`; CREATE TABLE `mail` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `to` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `reply_to` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `reply_to` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, `subject` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `text` text COLLATE utf8_unicode_ci NOT NULL, `sent` tinyint(2) NOT NULL DEFAULT '0', @@ -50369,8 +52125,10 @@ CREATE TABLE `mail` ( `senderFk` int(11) DEFAULT NULL, `recipientFk` int(11) DEFAULT NULL, `plainTextBody` text COLLATE utf8_unicode_ci, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1724076 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + PRIMARY KEY (`id`), + KEY `sent_idx` (`sent`), + KEY `creation_idx` (`DATE_ODBC`) +) ENGINE=InnoDB AUTO_INCREMENT=1769154 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -50428,7 +52186,7 @@ CREATE TABLE `mandato` ( CONSTRAINT `mandato_fgkey1` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `mandato_fgkey2` FOREIGN KEY (`empresa_id`) REFERENCES `empresa` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `mandato_fgkey3` FOREIGN KEY (`idmandato_tipo`) REFERENCES `mandato_tipo` (`idmandato_tipo`) ON DELETE NO ACTION ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=16459 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=16590 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -50637,7 +52395,7 @@ CREATE TABLE `pago` ( CONSTRAINT `pago_moneda` FOREIGN KEY (`id_moneda`) REFERENCES `Monedas` (`Id_Moneda`) ON UPDATE CASCADE, CONSTRAINT `pago_pay_met` FOREIGN KEY (`pay_met_id`) REFERENCES `pay_met` (`id`) ON UPDATE CASCADE, CONSTRAINT `proveedor_pago` FOREIGN KEY (`id_proveedor`) REFERENCES `Proveedores` (`Id_Proveedor`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=49093 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=49866 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -50764,7 +52522,7 @@ CREATE TABLE `pay_met` ( `graceDays` int(11) unsigned NOT NULL DEFAULT '0', `ibanRequired` tinyint(3) DEFAULT '0', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -51090,13 +52848,13 @@ CREATE TABLE `preparation_exception` ( /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `preparation_percentage` +-- Table structure for table `preparation_percentageKk` -- -DROP TABLE IF EXISTS `preparation_percentage`; +DROP TABLE IF EXISTS `preparation_percentageKk`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `preparation_percentage` ( +CREATE TABLE `preparation_percentageKk` ( `week_day` tinyint(1) unsigned NOT NULL COMMENT 'preparation day. Funcion de mysql Lunes = 0, Domingo = 6', `warehouse_id` smallint(6) unsigned DEFAULT NULL, `percentage` tinyint(2) NOT NULL DEFAULT '0', @@ -51134,7 +52892,7 @@ CREATE TABLE `price_fixed` ( KEY `date_end` (`date_end`), KEY `warehouse_id` (`warehouse_id`), CONSTRAINT `price_fixed_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `Articles` (`Id_Article`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=62636 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=63004 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -51196,7 +52954,7 @@ CREATE TABLE `producer` ( `visible` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`producer_id`), UNIQUE KEY `name_UNIQUE` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=9865 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=10653 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -51257,7 +53015,7 @@ CREATE TABLE `province` ( CONSTRAINT `province_ibfk_1` FOREIGN KEY (`Paises_Id`) REFERENCES `Paises` (`Id`) ON UPDATE CASCADE, CONSTRAINT `province_zone_fk` FOREIGN KEY (`zone`) REFERENCES `zones` (`zone_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `warehouse_Id` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON DELETE SET NULL ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=194 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=195 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -51365,7 +53123,7 @@ CREATE TABLE `recibida` ( CONSTRAINT `recibida_ibfk_5` FOREIGN KEY (`cplusInvoiceType472Fk`) REFERENCES `vn`.`cplusInvoiceType472` (`id`) ON UPDATE CASCADE, CONSTRAINT `recibida_ibfk_6` FOREIGN KEY (`cplusRectificationTypeFk`) REFERENCES `vn`.`cplusRectificationType` (`id`) ON UPDATE CASCADE, CONSTRAINT `recibida_ibfk_7` FOREIGN KEY (`cplusTrascendency472Fk`) REFERENCES `vn`.`cplusTrascendency472` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=81673 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=83145 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -51954,7 +53712,7 @@ CREATE TABLE `recibida_iva` ( CONSTRAINT `recibida_iva_ibfk_2` FOREIGN KEY (`iva_id`) REFERENCES `iva_codigo` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE, CONSTRAINT `recibida_iva_ibfk_5` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `recibida_iva_ibfk_6` FOREIGN KEY (`gastos_id`) REFERENCES `Gastos` (`Id_Gasto`) ON DELETE NO ACTION ON UPDATE NO ACTION -) ENGINE=InnoDB AUTO_INCREMENT=133299 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=137049 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -51977,7 +53735,7 @@ CREATE TABLE `recibida_vencimiento` ( KEY `banco_id` (`banco_id`), CONSTRAINT `recibida_vencimiento_ibfk_6` FOREIGN KEY (`banco_id`) REFERENCES `Bancos` (`Id_Banco`) ON UPDATE CASCADE, CONSTRAINT `recibida_vencimiento_ibfk_7` FOREIGN KEY (`recibida_id`) REFERENCES `recibida` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=131085 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=135173 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -52020,7 +53778,7 @@ CREATE TABLE `recovery` ( KEY `cliente_idx` (`Id_Cliente`), CONSTRAINT `cliente333` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE, CONSTRAINT `cliente_cliente` FOREIGN KEY (`Id_Cliente`) REFERENCES `Clientes` (`id_cliente`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=299 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntaremos los acuerdos de recobro semanal a '; +) ENGINE=InnoDB AUTO_INCREMENT=301 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='En esta tabla apuntaremos los acuerdos de recobro semanal a '; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -52202,7 +53960,7 @@ CREATE TABLE `scan` ( `name` varchar(45) CHARACTER SET utf8 DEFAULT NULL, `odbc_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=93893 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Se borra automaticamente 8 dias en el pasado desde vn2008.clean'; +) ENGINE=InnoDB AUTO_INCREMENT=97650 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Se borra automaticamente 8 dias en el pasado desde vn2008.clean'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -52218,13 +53976,14 @@ CREATE TABLE `scanTree` ( `lft` int(11) NOT NULL, `rgt` int(11) NOT NULL, `depth` bigint(22) NOT NULL DEFAULT '0', - `sons` decimal(10,0) DEFAULT NULL, + `sons` int(11) DEFAULT '0', `lastScanned` datetime DEFAULT NULL, `routeCount` int(11) DEFAULT NULL, `minRoute` int(11) DEFAULT NULL, `maxRoute` int(11) DEFAULT NULL, `scanned` int(11) DEFAULT NULL, - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + KEY `lft_rgt_depth` (`lft`,`rgt`,`depth`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -52243,7 +54002,7 @@ CREATE TABLE `scan_line` ( PRIMARY KEY (`scan_line_id`), KEY `id_scan_id_idx` (`scan_id`), CONSTRAINT `id_scan_id` FOREIGN KEY (`scan_id`) REFERENCES `scan` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1173358 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1225949 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -52265,7 +54024,7 @@ CREATE TABLE `sharingcart` ( KEY `Suplent` (`Id_Suplente`), CONSTRAINT `Suplent_key` FOREIGN KEY (`Id_Suplente`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE, CONSTRAINT `Trabajador_key` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=2063 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2094 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -52417,7 +54176,8 @@ DROP TABLE IF EXISTS `sort_merge_results_ernesto`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `sort_merge_results_ernesto` ( `hora` datetime NOT NULL, - `Innodb_os_log_written` int(11) DEFAULT NULL, + `uptime` int(11) DEFAULT NULL, + `uptime_since_flush` int(11) DEFAULT NULL, `smp_old` int(11) DEFAULT NULL, `smp_new` int(11) DEFAULT NULL, `smp` int(11) DEFAULT NULL, @@ -52427,12 +54187,31 @@ CREATE TABLE `sort_merge_results_ernesto` ( `Threads_cached` int(11) DEFAULT NULL, `Thread_cache_size` int(11) DEFAULT NULL, `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `TABLE_OPEN_CACHE_OVERFLOWS` int(11) DEFAULT NULL, + `TABLE_OPEN_CACHE_MISSES` int(11) DEFAULT NULL, + `TABLE_OPEN_CACHE_HITS` int(11) DEFAULT NULL, + `table_open_cache` int(11) DEFAULT NULL, + `table_open_cache_instances` int(11) DEFAULT NULL, + `open_tables` int(11) DEFAULT NULL, `opened_tables` int(11) DEFAULT NULL, - `created_tmp_disk_tables` int(11) DEFAULT NULL, - `max_sort_length` int(11) DEFAULT NULL, + `Innodb_os_log_written` double DEFAULT NULL, + `table_definition_cache` int(11) DEFAULT NULL, `sort_buffer_size` int(11) DEFAULT NULL, + `max_sort_length` int(11) DEFAULT NULL, + `tmp_table_size` int(11) DEFAULT NULL, + `max_heap_table_size` int(11) DEFAULT NULL, + `created_tmp_disk_tables` int(11) DEFAULT NULL, + `created_tmp_tables` int(11) DEFAULT NULL, + `Created_tmp_files` int(11) DEFAULT NULL, + `OpenTablesxUptimeDivOpened` float DEFAULT NULL, + `join_buffer_size` int(11) DEFAULT NULL, + `innodb_open_files` int(11) DEFAULT NULL, + `open_files_limit` int(11) DEFAULT NULL, + `query_cache_size` int(11) DEFAULT NULL, + `query_cache_type` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`hora`), - UNIQUE KEY `hora_UNIQUE` (`hora`) + UNIQUE KEY `hora_UNIQUE` (`hora`), + KEY `uptime` (`uptime`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; @@ -52521,7 +54300,7 @@ CREATE TABLE `tarifas` ( PRIMARY KEY (`tarifa_id`), KEY `tarifa_warehouse` (`warehouse_id`), CONSTRAINT `tarifa_warehouse` FOREIGN KEY (`warehouse_id`) REFERENCES `warehouse` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=177 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=179 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -52572,7 +54351,8 @@ CREATE TABLE `tblContadores` ( `km_price` decimal(10,1) DEFAULT NULL, `route_option` int(11) DEFAULT '1', `dbproduccion` tinyint(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + KEY `fechainv_idx` (`FechaInventario`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; @@ -52735,7 +54515,7 @@ CREATE TABLE `ticket_observation` ( KEY `observation_type_id` (`observation_type_id`), CONSTRAINT `ticket_observation_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `ticket_observation_ibfk_2` FOREIGN KEY (`observation_type_id`) REFERENCES `observation_type` (`observation_type_id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=1362048 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; +) ENGINE=InnoDB AUTO_INCREMENT=1392301 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Todas las observaciones referentes a un ticket'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -52870,7 +54650,7 @@ CREATE TABLE `travel_dits` ( KEY `fgkey2_idx` (`Id_Ticket`), KEY `fgkey3_idx` (`Id_Trabajador`), CONSTRAINT `travel_dits_ibfk_1` FOREIGN KEY (`Id_Trabajador`) REFERENCES `Trabajadores` (`Id_Trabajador`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=221285 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=226132 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -53414,22 +55194,6 @@ SET character_set_client = utf8; 1 AS `Fecha`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `v_descuadre_portekk` --- - -DROP TABLE IF EXISTS `v_descuadre_portekk`; -/*!50001 DROP VIEW IF EXISTS `v_descuadre_portekk`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `v_descuadre_portekk` AS SELECT - 1 AS `Id_Ticket`, - 1 AS `suma_componente`, - 1 AS `teorico_agencia`, - 1 AS `diferencia`, - 1 AS `Fecha`*/; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `v_empresa` -- @@ -53515,20 +55279,6 @@ SET character_set_client = utf8; 1 AS `Id_Ruta`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `v_expeditions_shipping_chargekk` --- - -DROP TABLE IF EXISTS `v_expeditions_shipping_chargekk`; -/*!50001 DROP VIEW IF EXISTS `v_expeditions_shipping_chargekk`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `v_expeditions_shipping_chargekk` AS SELECT - 1 AS `Id_Ticket`, - 1 AS `shipping_charge`, - 1 AS `Fecha`*/; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `v_fallo` -- @@ -53633,20 +55383,6 @@ SET character_set_client = utf8; 1 AS `Accion`*/; SET character_set_client = @saved_cs_client; --- --- Temporary table structure for view `v_pedidos_auto_preparadosKk` --- - -DROP TABLE IF EXISTS `v_pedidos_auto_preparadosKk`; -/*!50001 DROP VIEW IF EXISTS `v_pedidos_auto_preparadosKk`*/; -SET @saved_cs_client = @@character_set_client; -SET character_set_client = utf8; -/*!50001 CREATE VIEW `v_pedidos_auto_preparadosKk` AS SELECT - 1 AS `CodigoTrabajador`, - 1 AS `Id_Ticket`, - 1 AS `Momento`*/; -SET character_set_client = @saved_cs_client; - -- -- Temporary table structure for view `v_phonebook` -- @@ -54217,9 +55953,10 @@ CREATE TABLE `workerTeam` ( `team` int(11) NOT NULL, `user` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), - KEY `user_team_idx` (`user`), + KEY `user_idx` (`user`), + KEY `team_idx` (`team`), CONSTRAINT `user_team` FOREIGN KEY (`user`) REFERENCES `account`.`user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=219 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=223 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -54319,30 +56056,6 @@ DELIMITER ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; /*!50003 SET character_set_results = @saved_cs_results */ ;; /*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `nightlyTaskChecker` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8 */ ;; -/*!50003 SET character_set_results = utf8 */ ;; -/*!50003 SET collation_connection = utf8_general_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`z-developer`@`%`*/ /*!50106 EVENT `nightlyTaskChecker` ON SCHEDULE EVERY 1 DAY STARTS '2018-09-26 04:00:00' ON COMPLETION PRESERVE ENABLE DO BEGIN -DECLARE procedureIncorrect VARCHAR(50); -SELECT CONCAT(`schema`,`procedure`) INTO procedureIncorrect FROM bs.nightTask WHERE date(finished) <> date(started); -IF procedureIncorrect > '' THEN INSERT INTO vn2008.mail (`to`, subject, text) VALUES ('cau@verdnatura.es', 'error proceso nocturno', -CONCAT('Ha fallado el procedimiento ', procedureIncorrect)); - -END IF; END */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; /*!50106 DROP EVENT IF EXISTS `raidUpdate` */;; DELIMITER ;; /*!50003 SET @saved_cs_client = @@character_set_client */ ;; @@ -54361,24 +56074,6 @@ DELIMITER ;; /*!50003 SET character_set_client = @saved_cs_client */ ;; /*!50003 SET character_set_results = @saved_cs_results */ ;; /*!50003 SET collation_connection = @saved_col_connection */ ;; -/*!50106 DROP EVENT IF EXISTS `__item_cache_cleaner` */;; -DELIMITER ;; -/*!50003 SET @saved_cs_client = @@character_set_client */ ;; -/*!50003 SET @saved_cs_results = @@character_set_results */ ;; -/*!50003 SET @saved_col_connection = @@collation_connection */ ;; -/*!50003 SET character_set_client = utf8mb4 */ ;; -/*!50003 SET character_set_results = utf8mb4 */ ;; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ;; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ;; -/*!50003 SET @saved_time_zone = @@time_zone */ ;; -/*!50003 SET time_zone = 'SYSTEM' */ ;; -/*!50106 CREATE*/ /*!50117 DEFINER=`root`@`%`*/ /*!50106 EVENT `__item_cache_cleaner` ON SCHEDULE EVERY 30 SECOND STARTS '2014-06-30 13:38:27' ON COMPLETION NOT PRESERVE DISABLE COMMENT 'Cleans the item cache' DO CALL item_cache_cleaner () */ ;; -/*!50003 SET time_zone = @saved_time_zone */ ;; -/*!50003 SET sql_mode = @saved_sql_mode */ ;; -/*!50003 SET character_set_client = @saved_cs_client */ ;; -/*!50003 SET character_set_results = @saved_cs_results */ ;; -/*!50003 SET collation_connection = @saved_col_connection */ ;; DELIMITER ; /*!50106 SET TIME_ZONE= @save_time_zone */ ; @@ -54925,22 +56620,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = latin1 */ ; -/*!50003 SET character_set_results = latin1 */ ; -/*!50003 SET collation_connection = latin1_swedish_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `cm3`(v_buy_id INT) RETURNS int(11) +CREATE DEFINER=`root`@`%` FUNCTION `cm3`(vBuy INT) RETURNS int(11) + DETERMINISTIC BEGIN - DECLARE id_CUB VARCHAR(10); - DECLARE id_ART INT; - SELECT Id_Cubo, Id_Article INTO id_CUB, id_ART - FROM Compres c - WHERE c.Id_compra = v_buy_id; - - RETURN cm3_2(id_CUB, id_ART); - +/** + * @deprecated Use vn.buy_getVolume() + */ + RETURN vn.buy_getVolume(vBuy); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -54951,25 +56643,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `cm3_2`(id_CUB VARCHAR(10), id_ART INT) RETURNS int(11) +CREATE DEFINER=`root`@`%` FUNCTION `cm3_2`(vPackaging VARCHAR(10), vItem INT) RETURNS int(11) + DETERMINISTIC BEGIN - DECLARE v_cm3 INT; - - SELECT SUM(IF(b.Volumen > 0, - b.Volumen, - x * y * IF(z = 0, Medida + 10, z) - )) INTO v_cm3 - FROM Cubos b - INNER JOIN Articles a ON Id_Article = id_ART - WHERE Id_Cubo = id_CUB; - - RETURN v_cm3; +/** + * @deprecated Use vn.item_getVolume() + */ + RETURN vn.item_getVolume(vItem, vPackaging); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -54980,24 +56666,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` FUNCTION `cm3_unidad`(v_buy_id INT) RETURNS int(11) +CREATE DEFINER=`root`@`%` FUNCTION `cm3_unidad`(vBuy INT) RETURNS int(11) + DETERMINISTIC BEGIN - DECLARE id_CUB VARCHAR(10); - DECLARE id_ART INT; - DECLARE intPACK INT; - - SELECT Id_Cubo, Id_Article, Packing INTO id_CUB, id_ART, intPACK - FROM Compres c - WHERE c.Id_compra = v_buy_id; - - RETURN ifnull(round(cm3_2(id_CUB, id_ART)/intPACK),0); - +/** + * @deprecated Use vn.buy_getUnitVolume() + */ + RETURN vn.buy_getUnitVolume(vBuy); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -55367,16 +57048,19 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` FUNCTION `get_Trabajador`() RETURNS int(11) DETERMINISTIC BEGIN - RETURN IFNULL((SELECT Id_Trabajador FROM Trabajadores WHERE user_id = account.userGetId()),20); +/** + * @deprecated Use vn.myWorker_getId() + */ + RETURN vn.myWorker_getId(); END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -58035,13 +59719,245 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `balance_create`(IN vStartingMonth INT + , IN vEndingMonth INT + , IN vCompany INT + , IN vIsConsolidated BOOLEAN + , IN vInterGroupSalesIncluded BOOLEAN) +BEGIN + + DECLARE v_sql TEXT; + DECLARE strTABLE VARCHAR(20) DEFAULT "balance_nest_tree"; + DECLARE intGAP INTEGER DEFAULT 7; + DECLARE intYEARS INTEGER DEFAULT 3; + DECLARE vConsolidatedGroup INTEGER; + DECLARE vStartingDate DATE DEFAULT '2016-01-01'; + DECLARE vStartingYear INT DEFAULT 2016; + + -- Solicitamos la tabla tmp.nest, como base para el balance + CALL nest_tree(strTABLE,intGAP, FALSE); + + DROP TEMPORARY TABLE IF EXISTS tmp.balance; + CREATE TEMPORARY TABLE tmp.balance + SELECT * FROM tmp.nest; + + DROP TEMPORARY TABLE IF EXISTS tmp.empresas_receptoras; + DROP TEMPORARY TABLE IF EXISTS tmp.empresas_emisoras; + + SELECT empresa_grupo INTO vConsolidatedGroup + FROM empresa + WHERE id = vCompany; + + CREATE TEMPORARY TABLE tmp.empresas_receptoras + SELECT id as empresa_id + FROM vn2008.empresa + WHERE id = vCompany + OR empresa_grupo = IF(vIsConsolidated, vConsolidatedGroup, NULL); + + CREATE TEMPORARY TABLE tmp.empresas_emisoras + SELECT Id_Proveedor as empresa_id + FROM vn2008.Proveedores p; + + IF vInterGroupSalesIncluded = FALSE THEN + + DELETE ee.* + FROM tmp.empresas_emisoras ee + JOIN vn2008.empresa e on e.id = ee.empresa_id + WHERE e.empresa_grupo = vConsolidatedGroup; + + END IF; + + -- Se calculan las facturas que intervienen, para luego poder servir el desglose desde aqui + + DROP TEMPORARY TABLE IF EXISTS tmp.balance_desglose; + CREATE TEMPORARY TABLE tmp.balance_desglose + SELECT er.empresa_id as receptora_id + , ee.empresa_id as emisora_id + , year(IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha))) as `year` + , month(IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha))) as `month` + , gastos_id as Id_Gasto + , sum(bi) as importe + FROM recibida r + JOIN recibida_iva ri on ri.recibida_id = r.id + JOIN tmp.empresas_receptoras er on er.empresa_id = r.empresa_id + JOIN tmp.empresas_emisoras ee ON ee.empresa_id = r.proveedor_id + WHERE IFNULL(r.bookEntried,IFNULL(r.dateBooking, r.Fecha)) >= vStartingDate + AND r.contabilizada + GROUP BY Id_Gasto, year, month, emisora_id, receptora_id; + + INSERT INTO tmp.balance_desglose(receptora_id + , emisora_id + , year + , month + , Id_Gasto + , importe) + SELECT gr.empresa_id + , gr.empresa_id + , year + , month + , Id_Gasto + , sum(importe) + FROM gastos_resumen gr + JOIN tmp.empresas_receptoras er on gr.empresa_id = er.empresa_id + WHERE year >= vStartingYear + AND month BETWEEN vStartingMonth AND vEndingMonth + GROUP BY Id_Gasto, year, month, gr.empresa_id; + + + DELETE FROM tmp.balance_desglose + WHERE month < vStartingMonth + OR month > vEndingMonth; + + + + -- Ahora el balance + SET v_sql = sql_printf ( + ' + ALTER TABLE tmp.balance + ADD COLUMN %t INT(10) NULL , + ADD COLUMN %t INT(10) NULL , + ADD COLUMN %t INT(10) NULL , + ADD COLUMN Id_Gasto VARCHAR(10) NULL, + ADD COLUMN Gasto VARCHAR(45) NULL; + ', + YEAR(CURDATE())-2, + YEAR(CURDATE())-1, + YEAR(CURDATE()) + ); + + CALL util.exec (v_sql); + + + -- Añadimos los gastos, para facilitar el formulario + + UPDATE tmp.balance b + JOIN vn2008.balance_nest_tree bnt on bnt.id = b.id + JOIN (SELECT Id_Gasto, Gasto + FROM vn2008.Gastos + GROUP BY Id_Gasto) g ON g.Id_Gasto = bnt.Id_Gasto + SET b.Id_Gasto = g.Id_Gasto + , b.Gasto = g.Gasto; + + -- Rellenamos los valores de primer nivel, los que corresponden a los gastos simples + + WHILE intYEARS > 0 DO + + SET intYEARS = intYEARS - 1; + + SET v_sql = sql_printf ( + ' + UPDATE tmp.balance b + JOIN + ( + SELECT Id_Gasto, sum(Importe) as Importe + FROM tmp.balance_desglose + WHERE year = %v + GROUP BY Id_Gasto + ) sub on sub.Id_Gasto = b.Id_Gasto + SET %t = - Importe; + ', + YEAR(CURDATE()) - intYEARS, + YEAR(CURDATE()) - intYEARS + ); + + CALL util.exec (v_sql); + + END WHILE; + + -- Añadimos las ventas + + + SET v_sql = sql_printf ( + ' + UPDATE tmp.balance b + JOIN ( + SELECT sum(IF(year = %v, venta, 0)) as y2 + , sum(IF(year = %v, venta, 0)) as y1 + , sum(IF(year = %v, venta, 0)) as y0 + , c.Gasto + + FROM bs.ventas_contables c + join tmp.empresas_receptoras er on er.empresa_id = c.empresa_id + WHERE month BETWEEN %v AND %v + GROUP BY c.Gasto + + ) sub ON sub.Gasto = b.Id_Gasto + SET %t = IFNULL(%t,0) + sub.y2 + , %t = IFNULL(%t,0) + sub.y1 + , %t = IFNULL(%t,0) + sub.y0 + ; + + ', + YEAR(CURDATE()) - 2, + YEAR(CURDATE()) - 1, + YEAR(CURDATE()), + vStartingMonth, + vEndingMonth, + YEAR(CURDATE()) - 2, YEAR(CURDATE()) - 2, + YEAR(CURDATE()) - 1, YEAR(CURDATE()) - 1, + YEAR(CURDATE()), YEAR(CURDATE()) + + ); + + CALL util.exec (v_sql); + + -- Ventas intra grupo + IF NOT vInterGroupSalesIncluded THEN + + SELECT lft, rgt + INTO @grupoLft, @grupoRgt + FROM tmp.balance b + WHERE TRIM(b.`name`) = 'Grupo'; + + DELETE + FROM tmp.balance + WHERE lft BETWEEN @grupoLft AND @grupoRgt; + + END IF; + + + -- Rellenamos el valor de los padres con la suma de los hijos + DROP TEMPORARY TABLE IF EXISTS tmp.balance_aux; + CREATE TEMPORARY TABLE tmp.balance_aux SELECT * FROM tmp.balance; + + UPDATE tmp.balance b + JOIN + ( + select b1.id, b1.name, sum(b2.`2017`) as `2017`, sum(b2.`2018`) as `2018`, sum(b2.`2019`) as `2019` + from tmp.nest b1 + join tmp.balance_aux b2 on b2.lft between b1.lft and b1.rgt + group by b1.id) sub on sub.id = b.id + SET b.`2017` = sub.`2017`, b.`2018` = sub.`2018`, b.`2019` = sub.`2019` + ; + + + + SELECT *, concat('',ifnull(Id_Gasto,'')) as newgasto FROM tmp.balance; + + +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `balance_create_old` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `balance_create_old`(IN vStartingMonth INT , IN vEndingMonth INT , IN vCompany INT , IN vConsolidate BOOLEAN @@ -58291,7 +60207,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_articlelistKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -58301,75 +60217,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_`( - vDate DATE, - vAddress INT, - vAgency INT) -BEGIN -/** - * Calcula el disponible para un conjunto de almacenes y fechas - * devueltos por el procedimiento agencyHourGetShipped() - * - * @table t_bionic_available Tabla con los ids de cache - **/ - DECLARE vAvailableCalc INT; - DECLARE vShipment DATE; - DECLARE vAgencyId INT; - DECLARE vWh INT; - DECLARE vDone BOOL; - DECLARE cTravelTree CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.agencyHourGetShipped; - - DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; - - -- Establecemos los almacenes y las fechas que van a entrar al disponible - - SELECT agency_id INTO vAgencyId - FROM Agencias WHERE Id_Agencia = vAgency; - - CALL vn.agencyHourGetShipped (vDate, vAddress, vAgencyId); - - DROP TEMPORARY TABLE IF EXISTS t_bionic_available; - CREATE TEMPORARY TABLE t_bionic_available( - calc_id INT UNSIGNED, - PRIMARY KEY (calc_id) - ) - ENGINE = MEMORY; - - OPEN cTravelTree; - l: LOOP - SET vDone = FALSE; - FETCH cTravelTree INTO vWh, vShipment; - - IF vDone THEN - LEAVE l; - END IF; - - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipment); - - INSERT IGNORE INTO t_bionic_available - SET calc_id = vAvailableCalc; - END LOOP; - - CLOSE cTravelTree; - DROP TEMPORARY TABLE tmp.agencyHourGetShipped; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_articlelist` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_articlelist`(IN strART VARCHAR(50) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_articlelistKk`(IN strART VARCHAR(50) , IN minMED DOUBLE , IN maxMED DOUBLE , IN minPVP DOUBLE @@ -58474,7 +60322,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_items_` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_items_Kk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -58482,9 +60330,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_items_`(v_date DATE, -- fecha de recepcion de mercancia +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_items_Kk`(v_date DATE, -- fecha de recepcion de mercancia v_consigna INT, v_agencia INT) BEGIN @@ -58535,7 +60383,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_types_` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_types_filter` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -58545,7 +60393,59 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_`( +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_filter`( + v_date DATE, + v_consigna INT, + v_agencia INT) +BEGIN +/** + * Este procedimiento devuelve una tabla t_bionic_available_types + * que debe de ser borrar por quien la llame, y se conecta con la tabla articlelist + * que tambien hay que eliminar. + * + * @param vDatefecha de recepcion de mercancia + * @table t_bionic_available_types + */ + + CALL vn.ticketCalculate(v_date, v_consigna, v_agencia); + + -- Introducimos los valores en una tabla temporal + DROP TEMPORARY TABLE IF EXISTS t_bionic_available_types; + + CALL check_table_existence('articlelist'); + + IF @table_exists THEN + call util.throw('No usar articlelist'); + -- SET v_list = 'JOIN vn2008.articlelist AL ON AL.Id_Article = a.Id_Article '; + END IF; + + CREATE TEMPORARY TABLE t_bionic_available_types + SELECT a.tipo_id, t.Tipo, r.reino, count(*) as item_count + FROM tmp.ticketCalculateItem tci + JOIN vn2008.Articles a ON tci.itemFk = a.Id_Article + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + JOIN vn2008.reinos r ON r.id = t.reino_id + WHERE tci.available > 0 + GROUP BY a.tipo_id; + + DROP TEMPORARY TABLE tmp.ticketCalculateItem; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_types_Kk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_Kk`( v_date DATE, -- fecha de recepcion de mercancia v_consigna INT, v_agencia INT) @@ -58579,7 +60479,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_available_types_filter` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calcKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -58589,89 +60489,19 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_available_types_filter`( - v_date DATE, - v_consigna INT, - v_agencia INT, - v_filter TEXT) -BEGIN -/** - * Este procedimiento devuelve una tabla t_bionic_available_types - * que debe de ser borrar por quien la llame, y se conecta con la tabla articlelist - * que tambien hay que eliminar. - * - * @param vDatefecha de recepcion de mercancia - * @table t_bionic_available_types - */ - - DECLARE v_sql TEXT; - DECLARE v_list TEXT; - SET v_list = ''; - - SET v_filter = IFNULL(v_filter,' TRUE'); - - CALL bionic_available_(v_date, v_consigna, v_agencia); - -- Inroducimos los valores en una tabla temporal - DROP TEMPORARY TABLE IF EXISTS t_bionic_available_types; - - CALL check_table_existence('articlelist'); - - IF @table_exists THEN - - SET v_list = 'JOIN vn2008.articlelist AL ON AL.Id_Article = a.Id_Article '; - - END IF; - - SET v_sql = sql_printf ( - ' - CREATE TEMPORARY TABLE t_bionic_available_types - SELECT a.tipo_id, Tipo, reino, count(*) as item_count - FROM `cache`.available c - JOIN vn2008.Articles a ON c.item_id = a.Id_Article - JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id - JOIN vn2008.reinos r ON r.id = t.reino_id - JOIN vn2008.t_bionic_available ba ON c.calc_id = ba.calc_id - %s - WHERE c.available > 0 - AND %s - GROUP BY a.tipo_id; - ' - , v_list - , v_filter); - - CALL sql_query (v_sql); - - DROP TEMPORARY TABLE t_bionic_available; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc`( - vDate DATE, -- Fecha de recepcion de mercancia +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calcKk`( + vLanded DATE, vAddress INT, vAgency INT) proc: BEGIN -- @DEPRECATED use vn.ticketCalculate DECLARE vAvailableCalc INT; - DECLARE vShipment DATE; - DECLARE vAgencyId INT; + DECLARE vShipped DATE; DECLARE vCustomer INT; DECLARE vWh SMALLINT; DECLARE vDone BOOL; DECLARE cTravelTree CURSOR FOR - SELECT warehouseFk, shipped FROM tmp.agencyHourGetShipped; + SELECT warehouseFk, shipped FROM tmp.zoneGetShippedWarehouse; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; @@ -58683,10 +60513,9 @@ proc: BEGIN -- Establece los almacenes y las fechas que van a entrar al disponible - SELECT agency_id INTO vAgencyId FROM Agencias WHERE Id_Agencia = vAgency; SELECT Id_Cliente INTO vCustomer FROM Consignatarios WHERE Id_Consigna = vAddress; - CALL vn.agencyHourGetShipped(vDate, vAddress, vAgencyId); + CALL vn.zoneGetShippedWarehouse(vLanded, vAddress, vAgency); -- Crea la tabla temporal que almacenará los lotes @@ -58697,14 +60526,14 @@ proc: BEGIN l: LOOP SET vDone = FALSE; - FETCH cTravelTree INTO vWh, vShipment; + FETCH cTravelTree INTO vWh, vShipped; IF vDone THEN LEAVE l; END IF; - CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipment); - CALL item_last_buy_ (vWh, vShipment); + CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipped); + CALL item_last_buy_ (vWh, vShipped); INSERT INTO tmp.bionic_lot (warehouse_id, item_id, available, buy_id) SELECT @@ -58742,13 +60571,15 @@ proc: BEGIN GROUP BY item_id ) bl ON bl.item_id = b.item_id GROUP BY b.item_id; + + DROP TEMPORARY TABLE tmp.zoneGetShippedWarehouse; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_clon` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_clonKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -58758,7 +60589,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clon`(IN v_ticket BIGINT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_clonKk`(IN v_ticket BIGINT) BEGIN /* @@ -58843,307 +60674,307 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component`(IN `v_consigna` INT, IN `v_agencia` INT) -proc: BEGIN - - DECLARE v_customer INT; - DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.0; - DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; - DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT; -- DEFAULT 138000; - -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; - - SELECT Volumen INTO VOLUMEN_CAJA_VERDNATURA - FROM Cubos - WHERE Id_Cubo = '94'; - - SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; - SET @rate2 := 0; - SET @rate3 := 0; - - DROP TEMPORARY TABLE IF EXISTS t_bionic_temp; - CREATE TEMPORARY TABLE t_bionic_temp - (PRIMARY KEY (item_id,warehouse_id)) - ENGINE = MEMORY - SELECT - b.item_id, b.warehouse_id,available, - IF((@rate2 := IFNULL(pf.rate_2,c.Tarifa2)) < a.PVP AND a.`Min`, a.PVP, @rate2) * 1.0 rate_2, - IF((@rate3 := IFNULL(pf.rate_3,c.Tarifa3)) < a.PVP AND a.`Min`, a.PVP, @rate3) * 1.0 rate_3, - ifnull(pf.rate_3,0) AS min_price, - IFNULL(pf.Packing,c.Packing) packing, - IFNULL(pf.`grouping`,c.`grouping`) `grouping`, - ABS(IFNULL(pf.caja,c.caja)) box, - b.buy_id, a.tipo_id - FROM tmp.bionic_lot b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra - JOIN vn2008.Articles a ON b.item_id = a.Id_Article - JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id - LEFT JOIN vn2008.reinos r ON r.id = t.reino_id - LEFT JOIN vn2008.PreciosEspeciales p ON a.Id_Article = p.Id_Article AND p.Id_Cliente = v_customer - LEFT JOIN ( - SELECT * FROM ( - SELECT p.item_id, p.`grouping`, p.Packing,p.caja, p.rate_2, p.rate_3, ah.warehouseFk AS warehouse_id - FROM vn2008.price_fixed p - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = p.warehouse_id OR p.warehouse_id = 0 - WHERE ah.shipped BETWEEN p.date_start AND p.date_end ORDER BY p.item_id, p.warehouse_id DESC - ) t - GROUP BY item_id, warehouse_id - ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id - -- descartamos articulos con coste menor de 0.01 - WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; - - -- Creamos la tabla tmp.bionic_component - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; - CREATE TEMPORARY TABLE tmp.bionic_component LIKE - template_bionic_component; - - -- Componentes del precio, valores absolutos - INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) - SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - - INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) - SELECT b.warehouse_id, b.item_id, 28, Costefijo + Portefijo + Embalajefijo + Comisionfija - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; - - -- Ahora los valores en funcion de la base - - DROP TEMPORARY TABLE IF EXISTS t_components_base; - - CREATE TEMPORARY TABLE t_components_base - SELECT bc.item_id, ROUND(SUM(cost), 4) AS base, bc.warehouse_id - FROM tmp.bionic_component bc - GROUP BY bc.item_id,warehouse_id; - - -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge - - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) - FROM t_components_base cb - JOIN bi.claims_ratio ON Id_Cliente = v_customer - WHERE recobro > 0.009; - - -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. - - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, 39, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto - FROM t_components_base cb - JOIN Clientes c on c.Id_Cliente = v_customer - JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador - WHERE ms.prices_modifier_activated - AND c.Id_Trabajador != 196 -- Ruben Espinosa - HAVING manaAuto <> 0 ; - - -/* - -- Vendedor variable - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) - FROM t_components_base cb - JOIN bi.tarifa_componentes - WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; - */ - - --- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL - -- Descuento por ultimas unidades - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) - FROM t_components_base cb - JOIN bi.tarifa_componentes - JOIN t_bionic_temp b ON b.item_id = cb.item_id AND b.warehouse_id = cb.warehouse_id - LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; - - -- Incremento por paquete suelto - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 - FROM t_bionic_temp b - JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra - LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE PrecioEspecial IS NULL; - --- ******* Fin Bloque para componentes con tarifa_class diferente de NULL - - -- Reparto - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id - , b.item_id - , 15 - , COEFICIENTE_DE_INFLACION_GENERAL - * ROUND( - r.cm3 - * art.compression - * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) - * IFNULL(az.price - * az.inflacion ,50) - / VOLUMEN_CAJA_VERDNATURA, 4 - ) cost - FROM t_bionic_temp b - JOIN vn2008.Articles art ON art.Id_Article = b.item_id - JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia - JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna - JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id - LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id - HAVING cost <> 0; - --- Reparto bonificado - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id - , b.item_id - , 41 - , COEFICIENTE_DE_INFLACION_GENERAL - * ROUND( - r.cm3 - * art.compression - * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) - * awb.bonus - * az.inflacion - / VOLUMEN_CAJA_VERDNATURA, 4 - ) cost - FROM t_bionic_temp b - JOIN vn2008.Articles art ON art.Id_Article = b.item_id - JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia - JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna - JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id - JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id - JOIN vn2008.agency_weekday_bonus awb ON awb.warehouse_id = az.warehouse_id AND awb.zona = az.zona AND a.agency_id = awb.agency_id - LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = awb.warehouse_id AND weekday(ah.landed) = awb.weekDay - HAVING cost <> 0 - LIMIT 1; - --- PAK 12-05-2015 - -- EMBOLSADO - IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN - - -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN - - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost - FROM t_bionic_temp b - JOIN vn.addressForPackaging ap - WHERE ap.addressFk = v_consigna; - - END IF; - - -- JGF 14-08-2015 - -- Modificacion de precio por dia de preparacion del pedido - INSERT INTO tmp.bionic_component - SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) - FROM t_components_base cb - JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = cb.warehouse_id - LEFT JOIN vn2008.preparation_percentage pp ON pp.week_day = weekday(ah.shipped) AND cb.warehouse_id = IFNULL(pp.warehouse_id,cb.warehouse_id) - LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = ah.shipped AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) - WHERE IFNULL(pe.percentage,pp.percentage); - - -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; - CREATE TEMPORARY TABLE tmp.bionic_component_copy - SELECT * FROM tmp.bionic_component; - - -- JGF 19-01-2016 - -- Precios especiales - INSERT INTO tmp.bionic_component - SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost - FROM tmp.bionic_component_copy b - JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente - JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id - WHERE t.tarifa_class IS NULL - GROUP BY b.item_id, b.warehouse_id - HAVING ABS(sum_cost) > 0.001; - - -- Lotes - DROP TEMPORARY TABLE IF EXISTS t_component_sum; - CREATE TEMPORARY TABLE t_component_sum - (INDEX (item_id, warehouse_id)) - ENGINE = MEMORY - SELECT SUM(cost) sum_cost, b.item_id, b.warehouse_id, t.tarifa_class - FROM tmp.bionic_component b - JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente - GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; - - -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas - -- Tarifa por unidad minima - DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; - CREATE TEMPORARY TABLE t_bionic_rate - ENGINE = MEMORY - SELECT b.warehouse_id, item_id, 1 rate, - IF(box = 1, `grouping`, 1) `grouping`, SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > `grouping` or box = 0) - GROUP BY warehouse_id, item_id; - - -- Tarifa por caja - INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) - SELECT b.warehouse_id, item_id, 2 rate, packing `grouping`, - SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) - GROUP BY warehouse_id, item_id; - - -- Tarifa para toda la cantidad disponible - INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) - SELECT b.warehouse_id, item_id, 3 rate, available `grouping`, - SUM(sum_cost) price - FROM t_bionic_temp b - JOIN t_component_sum cs USING(item_id, warehouse_id) - WHERE IFNULL(cs.tarifa_class,3) = 3 - GROUP BY warehouse_id, item_id; - - -- ***** Fin Modifica t_bionic_rate las diferentes tarifas - - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; - CREATE TEMPORARY TABLE tmp.bionic_price - LIKE template_bionic_price; - - INSERT INTO tmp.bionic_price (warehouse_id, item_id, rate, `grouping`, price) - SELECT * FROM ( - SELECT * FROM t_bionic_rate ORDER BY price - ) t - GROUP BY item_id, warehouse_id, `grouping`; - - - DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; - CREATE TEMPORARY TABLE tmp.travel_tree - ENGINE = MEMORY - SELECT * FROM tmp.agencyHourGetShipped; - - -- Limpieza - - DROP TEMPORARY TABLE tmp.agencyHourGetShipped; - DROP TEMPORARY TABLE t_bionic_temp; - DROP TEMPORARY TABLE t_component_sum; - DROP TEMPORARY TABLE t_components_base; - DROP TEMPORARY TABLE t_bionic_rate; - DROP TEMPORARY TABLE tmp.bionic_component_copy; +proc: BEGIN + + DECLARE v_customer INT; + DECLARE COEFICIENTE_DE_INFLACION_GENERAL INT DEFAULT 1.0; + DECLARE DENSIDAD_MINIMA_PESO_VOLUMETRICO INT DEFAULT 167; + DECLARE VOLUMEN_CAJA_VERDNATURA BIGINT; -- DEFAULT 138000; + -- DECLARE vValorEmbolsado DOUBLE DEFAULT 0.04; + + SELECT Volumen INTO VOLUMEN_CAJA_VERDNATURA + FROM Cubos + WHERE Id_Cubo = '94'; + + SELECT Id_Cliente INTO v_customer FROM Consignatarios WHERE Id_Consigna = v_consigna; + SET @rate2 := 0; + SET @rate3 := 0; + + DROP TEMPORARY TABLE IF EXISTS t_bionic_temp; + CREATE TEMPORARY TABLE t_bionic_temp + (PRIMARY KEY (item_id,warehouse_id)) + ENGINE = MEMORY + SELECT + b.item_id, b.warehouse_id,available, + IF((@rate2 := IFNULL(pf.rate_2,c.Tarifa2)) < a.PVP AND a.`Min`, a.PVP, @rate2) * 1.0 rate_2, + IF((@rate3 := IFNULL(pf.rate_3,c.Tarifa3)) < a.PVP AND a.`Min`, a.PVP, @rate3) * 1.0 rate_3, + ifnull(pf.rate_3,0) AS min_price, + IFNULL(pf.Packing,c.Packing) packing, + IFNULL(pf.`grouping`,c.`grouping`) `grouping`, + ABS(IFNULL(pf.caja,c.caja)) box, + b.buy_id, a.tipo_id + FROM tmp.bionic_lot b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra + JOIN vn2008.Articles a ON b.item_id = a.Id_Article + JOIN vn2008.Tipos t ON t.tipo_id = a.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + LEFT JOIN vn2008.PreciosEspeciales p ON a.Id_Article = p.Id_Article AND p.Id_Cliente = v_customer + LEFT JOIN ( + SELECT * FROM ( + SELECT p.item_id, p.`grouping`, p.Packing, p.caja, p.rate_2, p.rate_3, zgs.warehouseFk AS warehouse_id + FROM vn2008.price_fixed p + JOIN tmp.zoneGetShipped zgs ON zgs.warehouseFk = p.warehouse_id OR p.warehouse_id = 0 + WHERE zgs.shipped BETWEEN p.date_start AND p.date_end ORDER BY p.item_id, p.warehouse_id DESC + ) t + GROUP BY item_id, warehouse_id + ) pf ON pf.item_id = b.item_id AND pf.warehouse_id = b.warehouse_id + -- descartamos articulos con coste menor de 0.01 + WHERE Costefijo + Portefijo + Embalajefijo + Comisionfija > 0.01 AND r.display <> 0; + + -- Creamos la tabla tmp.bionic_component + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component; + CREATE TEMPORARY TABLE tmp.bionic_component LIKE + template_bionic_component; + + -- Componentes del precio, valores absolutos + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) + SELECT b.warehouse_id, b.item_id, 29, rate_3 - Costefijo - Portefijo - Embalajefijo - Comisionfija + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; + + INSERT INTO tmp.bionic_component ( warehouse_id, item_id, component_id, cost) + SELECT b.warehouse_id, b.item_id, 28, Costefijo + Portefijo + Embalajefijo + Comisionfija + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra; + + -- Ahora los valores en funcion de la base + + DROP TEMPORARY TABLE IF EXISTS t_components_base; + + CREATE TEMPORARY TABLE t_components_base + SELECT bc.item_id, ROUND(SUM(cost), 4) AS base, bc.warehouse_id + FROM tmp.bionic_component bc + GROUP BY bc.item_id,warehouse_id; + + -- La ratio se calcula teniendo en cuenta el valor de las reclamaciones y el saldo de greuge + + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, 17, ROUND(base * LEAST(recobro,0.25), 3) + FROM t_components_base cb + JOIN bi.claims_ratio ON Id_Cliente = v_customer + WHERE recobro > 0.009; + + -- PAK 2016-08-31 Componente de maná automático, en función del maná acumulado por el comercial. + + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, 39, ROUND(base * (0.01 + prices_modifier_rate), 3) as manaAuto + FROM t_components_base cb + JOIN Clientes c on c.Id_Cliente = v_customer + JOIN bs.mana_spellers ms ON c.Id_Trabajador = ms.Id_Trabajador + WHERE ms.prices_modifier_activated + AND c.Id_Trabajador != 196 -- Ruben Espinosa + HAVING manaAuto <> 0 ; + + +/* + -- Vendedor variable + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, item_id, Id_Componente, IFNULL(ROUND(base * tax,4), 0) + FROM t_components_base cb + JOIN bi.tarifa_componentes + WHERE tarifa_componentes_series_id = 2 and IFNULL(tax, 0) > 0; + */ + + +-- ******* Inicio Bloque para componentes con tarifa_class diferente de NULL + -- Descuento por ultimas unidades + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, b.item_id, Id_Componente, GREATEST(IFNULL(ROUND(base * tax,4), 0), b.min_price - b.rate_3) + FROM t_components_base cb + JOIN bi.tarifa_componentes + JOIN t_bionic_temp b ON b.item_id = cb.item_id AND b.warehouse_id = cb.warehouse_id + LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE Id_Componente = 32 AND tax <> 0 AND b.min_price < b.rate_3 AND PrecioEspecial IS NULL; + + -- Incremento por paquete suelto + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 22, rate_2 - rate_3 + FROM t_bionic_temp b + JOIN vn2008.Compres c ON b.buy_id = c.Id_Compra + LEFT JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE PrecioEspecial IS NULL; + +-- ******* Fin Bloque para componentes con tarifa_class diferente de NULL + + -- Reparto + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id + , b.item_id + , 15 + , COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + r.cm3 + * art.compression + * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) + * IFNULL(az.price + * az.inflacion ,50) + / VOLUMEN_CAJA_VERDNATURA, 4 + ) cost + FROM t_bionic_temp b + JOIN vn2008.Articles art ON art.Id_Article = b.item_id + JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia + JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id + LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id + HAVING cost <> 0; + +-- Reparto bonificado + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id + , b.item_id + , 41 + , COEFICIENTE_DE_INFLACION_GENERAL + * ROUND( + r.cm3 + * art.compression + * IF(a.Vista = 1, (GREATEST(art.density,DENSIDAD_MINIMA_PESO_VOLUMETRICO) / DENSIDAD_MINIMA_PESO_VOLUMETRICO ) , 1) + -- * awb.bonus + * az.inflacion + / VOLUMEN_CAJA_VERDNATURA, 4 + ) cost + FROM t_bionic_temp b + JOIN vn2008.Articles art ON art.Id_Article = b.item_id + JOIN vn2008.Agencias a ON a.Id_Agencia = v_agencia + JOIN vn2008.Consignatarios c ON c.Id_Consigna = v_consigna + JOIN vn2008.Agencias_province ap ON ap.agency_id = a.agency_id AND ap.warehouse_id = b.warehouse_id AND ap.province_id = c.province_id + JOIN vn2008.Agencias_zonas az ON az.Id_Agencia = v_agencia AND az.zona = ap.zona AND az.Id_Article = 71 AND az.warehouse_id = b.warehouse_id + -- JOIN vn2008.agency_weekday_bonus awb ON awb.warehouse_id = az.warehouse_id AND awb.zona = az.zona AND a.agency_id = awb.agency_id + LEFT JOIN bi.rotacion r ON r.warehouse_id = b.warehouse_id AND r.Id_Article = b.item_id + JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = awb.warehouse_id AND weekday(ah.landed) = awb.weekDay + HAVING cost <> 0 + LIMIT 1; + +-- PAK 12-05-2015 + -- EMBOLSADO + IF (SELECT COUNT(*) FROM vn.addressForPackaging WHERE addressFk = v_consigna) THEN + + -- IF v_consigna IN (13690, 3402, 5661, 4233) THEN + + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 38, ap.packagingValue cost + FROM t_bionic_temp b + JOIN vn.addressForPackaging ap + WHERE ap.addressFk = v_consigna; + + END IF; + + -- JGF 14-08-2015 + -- Modificacion de precio por dia de preparacion del pedido + INSERT INTO tmp.bionic_component + SELECT cb.warehouse_id, cb.item_id, 14, cb.base * (IFNULL(pe.percentage,pp.percentage)/100) + FROM t_components_base cb + JOIN tmp.agencyHourGetShipped ah ON ah.warehouseFk = cb.warehouse_id + LEFT JOIN vn2008.preparation_percentage pp ON pp.week_day = weekday(ah.shipped) AND cb.warehouse_id = IFNULL(pp.warehouse_id,cb.warehouse_id) + LEFT JOIN vn2008.preparation_exception pe ON pe.exception_day = ah.shipped AND cb.warehouse_id = IFNULL(pe.warehouse_id,cb.warehouse_id) + WHERE IFNULL(pe.percentage,pp.percentage); + + -- Creamos la tabla tmp.bionic_component_copy por que mysql no puede reabrir una tabla temporal + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_component_copy; + CREATE TEMPORARY TABLE tmp.bionic_component_copy + SELECT * FROM tmp.bionic_component; + + -- JGF 19-01-2016 + -- Precios especiales + INSERT INTO tmp.bionic_component + SELECT b.warehouse_id, b.item_id, 10, pe.PrecioEspecial - SUM(cost) sum_cost + FROM tmp.bionic_component_copy b + JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente + JOIN PreciosEspeciales pe ON pe.Id_Cliente = v_customer AND pe.Id_Article = b.item_id + WHERE t.tarifa_class IS NULL + GROUP BY b.item_id, b.warehouse_id + HAVING ABS(sum_cost) > 0.001; + + -- Lotes + DROP TEMPORARY TABLE IF EXISTS t_component_sum; + CREATE TEMPORARY TABLE t_component_sum + (INDEX (item_id, warehouse_id)) + ENGINE = MEMORY + SELECT SUM(cost) sum_cost, b.item_id, b.warehouse_id, t.tarifa_class + FROM tmp.bionic_component b + JOIN bi.tarifa_componentes t ON b.component_id = t.Id_Componente + GROUP BY b.item_id, b.warehouse_id, t.tarifa_class; + + -- ***** Inicia Modifica t_bionic_rate las diferentes tarifas + -- Tarifa por unidad minima + DROP TEMPORARY TABLE IF EXISTS t_bionic_rate; + CREATE TEMPORARY TABLE t_bionic_rate + ENGINE = MEMORY + SELECT b.warehouse_id, item_id, 1 rate, + IF(box = 1, `grouping`, 1) `grouping`, SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE IFNULL(cs.tarifa_class,1) = 1 AND box < 2 AND (packing > `grouping` or box = 0) + GROUP BY warehouse_id, item_id; + + -- Tarifa por caja + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) + SELECT b.warehouse_id, item_id, 2 rate, packing `grouping`, + SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE available IS NULL OR (IFNULL(cs.tarifa_class,2) = 2 AND packing > 0 AND available >= packing) + GROUP BY warehouse_id, item_id; + + -- Tarifa para toda la cantidad disponible + INSERT INTO t_bionic_rate (warehouse_id, item_id, rate, `grouping`, price) + SELECT b.warehouse_id, item_id, 3 rate, available `grouping`, + SUM(sum_cost) price + FROM t_bionic_temp b + JOIN t_component_sum cs USING(item_id, warehouse_id) + WHERE IFNULL(cs.tarifa_class,3) = 3 + GROUP BY warehouse_id, item_id; + + -- ***** Fin Modifica t_bionic_rate las diferentes tarifas + + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_price; + CREATE TEMPORARY TABLE tmp.bionic_price + LIKE template_bionic_price; + + INSERT INTO tmp.bionic_price (warehouse_id, item_id, rate, `grouping`, price) + SELECT * FROM ( + SELECT * FROM t_bionic_rate ORDER BY price + ) t + GROUP BY item_id, warehouse_id, `grouping`; + + + DROP TEMPORARY TABLE IF EXISTS tmp.travel_tree; + CREATE TEMPORARY TABLE tmp.travel_tree + ENGINE = MEMORY + SELECT * FROM tmp.agencyHourGetShipped; + + -- Limpieza + + DROP TEMPORARY TABLE tmp.agencyHourGetShipped; + DROP TEMPORARY TABLE t_bionic_temp; + DROP TEMPORARY TABLE t_component_sum; + DROP TEMPORARY TABLE t_components_base; + DROP TEMPORARY TABLE t_bionic_rate; + DROP TEMPORARY TABLE tmp.bionic_component_copy; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_componentTest` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_componentTestKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_componentTest`(IN `v_consigna` INT, IN `v_agencia` INT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_componentTestKk`(IN `v_consigna` INT, IN `v_agencia` INT) proc: BEGIN DECLARE v_customer INT; @@ -59423,17 +61254,17 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_component_beta` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_component_betaKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8mb4 */ ; -/*!50003 SET character_set_results = utf8mb4 */ ; -/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component_beta`(IN `v_consigna` INT, IN `v_agencia` INT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_component_betaKk`(IN `v_consigna` INT, IN `v_agencia` INT) proc: BEGIN DECLARE v_customer INT; @@ -59787,12 +61618,13 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'IGNORE_SPACE,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement`(IN v_id_mov BIGINT ) proc: BEGIN /* +obsoleto usar ticketCalculateSale Este procedimiento bioniza una linea de movimiento */ DECLARE v_shipment DATE; @@ -59869,7 +61701,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_movement_ok` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_movement_okKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -59879,7 +61711,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement_ok`(IN v_ticket BIGINT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_movement_okKk`(IN v_ticket BIGINT) BEGIN /* @@ -60002,89 +61834,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_calc_ticket` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_calc_ticket`(IN v_ticket BIGINT ) -proc: BEGIN - -/* -Este procedimiento trata de "rebionizar" un ticket, eliminando los componentes existentes e insertandolos de nuevo -*/ - DECLARE v_shipment DATE; - DECLARE v_customer INT; - DECLARE v_wh SMALLINT; - DECLARE v_agencia INT; - DECLARE v_consigna INT; - DECLARE v_landing DATE; - DECLARE v_ticket_free BOOLEAN; - DECLARE v_agency INT; - - CALL bionic_free(); - - SELECT (IFNULL(ts.alertLevel,0) >0 or IFNULL(Factura,"") != "") = FALSE - INTO v_ticket_free - FROM Tickets t LEFT JOIN vn.ticketState ts ON t.Id_Ticket = ts.ticket - WHERE t.Id_Ticket = v_ticket; - - /*SELECT (EtiquetasEmitidas or PedidoImpreso or Firmado or nz(Factura)) = FALSE - INTO v_ticket_free - FROM Tickets - WHERE Id_Ticket = v_ticket;*/ - - SELECT Id_Cliente, t.warehouse_id, date(t.Fecha), Id_Consigna, t.Id_Agencia, landing, a.agency_id - INTO v_customer, v_wh, v_shipment, v_consigna, v_agencia, v_landing, v_agency - FROM vn2008.Tickets t LEFT JOIN vn2008.Agencias a ON t.Id_Agencia = a.Id_Agencia WHERE Id_Ticket = v_ticket; - - DROP TEMPORARY TABLE IF EXISTS tmp.agencyHourGetShipped; - CREATE TEMPORARY TABLE tmp.agencyHourGetShipped ENGINE = MEMORY - SELECT v_wh warehouseFk, v_shipment shipped, v_landing landed; - - CALL item_last_buy_ (v_wh, v_shipment); -- rellena la tabla t_item_last_buy con la ultima compra - - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_lot; - CREATE TEMPORARY TABLE tmp.bionic_lot - SELECT v_wh warehouse_id,NULL available, - m.Id_Article item_id,ilb.buy_id - FROM Movimientos m - LEFT JOIN t_item_last_buy ilb ON ilb.item_id = m.Id_Article - WHERE m.Id_Ticket = v_ticket GROUP BY m.Id_Article; - - CALL bionic_calc_component(v_consigna,v_agencia); - - DROP TEMPORARY TABLE IF EXISTS tmp.movement; - CREATE TEMPORARY TABLE tmp.movement - (PRIMARY KEY (Id_Movimiento)) ENGINE = MEMORY - SELECT Id_Movimiento, v_wh warehouse_id - FROM Movimientos m - where m.Id_Ticket = v_ticket; - - CALL bionic_movement_update(IF(v_ticket_free,1,6)); -- si el ticket esta facturado, respeta los precios - - IF v_landing IS NULL THEN - - CALL travel_tree_shipment(v_shipment, v_consigna, v_agency,v_wh); - UPDATE Tickets t - JOIN travel_tree_shipment tts ON t.warehouse_id = tts.warehouse_id - SET t.landing = tts.landing - WHERE Id_Ticket = v_ticket; - - END IF; - -- Limpieza - -- DROP TEMPORARY TABLE t_item_last_buy; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `bionic_free` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -60108,7 +61857,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_item` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_itemKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60116,9 +61865,9 @@ DELIMITER ; /*!50003 SET character_set_results = utf8 */ ; /*!50003 SET collation_connection = utf8_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_item`( +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_itemKk`( v_date DATE, v_consigna INT, v_agencia INT, @@ -60139,38 +61888,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_order` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_order`( - v_date DATE, -- fecha de recepcion de mercancia - v_consigna INT, - v_agencia INT, - v_order INT) -BEGIN - DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; - CREATE TEMPORARY TABLE tmp.bionic_calc - (PRIMARY KEY (item_id)) - ENGINE = MEMORY - SELECT item_id FROM order_row - WHERE order_id = v_order GROUP BY item_id; - - CALL bionic_calc (v_date, v_consigna, v_agencia); - DROP TEMPORARY TABLE tmp.bionic_calc; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_ticket` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_ticketKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60180,7 +61898,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_ticket`( +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_ticketKk`( -- DEPRECATED use vn.ticketComponentPreview v_date DATE, -- fecha de recepcion de mercancia v_consigna INT, @@ -60240,7 +61958,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_type` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_from_typeKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60250,7 +61968,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_type`( +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_from_typeKk`( -- DEPRECATED use vn.ticketCalculate v_date DATE, -- fecha de recepcion de mercancia v_consigna INT, @@ -60272,7 +61990,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_make_update` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_make_updateKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60282,7 +62000,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_make_update`( +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_make_updateKk`( i_ticket INT ,i_agencia INT ,i_consigna INT @@ -60338,7 +62056,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_make_updateTest` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_make_updateTestKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60348,7 +62066,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_make_updateTest`( +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_make_updateTestKk`( i_ticket INT ,i_agencia INT ,i_consigna INT @@ -60402,7 +62120,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_update` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_updateKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60412,7 +62130,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_update`(i_option INT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_updateKk`(i_option INT) BEGIN /** * DEPRECATED use vn.ticketComponentUpdateSale @@ -60620,7 +62338,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_updateTest` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_updateTestKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60630,7 +62348,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_updateTest`(i_option INT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_updateTestKk`(i_option INT) BEGIN /** * A partir de la tabla tmp.movement, crea los Movimientos_componentes @@ -60859,7 +62577,7 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_update_mode` */; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_movement_update_modeKk` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; @@ -60869,7 +62587,7 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_update_mode`(IN idMOV BIGINT, IN i_MODE INT) +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_movement_update_modeKk`(IN idMOV BIGINT, IN i_MODE INT) BEGIN DROP TEMPORARY TABLE IF EXISTS tmp.movement; @@ -61048,6 +62766,71 @@ CLOSE rs; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `bionic_tickets_range_bionizar1` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `bionic_tickets_range_bionizar1`(IN datSTART DATE, IN datEND DATE) +BEGIN + DECLARE done BIT DEFAULT 0; + DECLARE datEND_Midnight DATETIME DEFAULT vn2008.dayend(datEND); + DECLARE v_ticket BIGINT; + DECLARE foo BIGINT; + + DECLARE rs CURSOR FOR + select t.Id_Ticket,mc.Id_Componente + from vn2008.Tickets t + join vn2008.Movimientos m on t.Id_Ticket = m.Id_Ticket + join vn2008.Articles a using(Id_Article) + left join vn2008.Movimientos_componentes mc using(Id_Movimiento) + join vn2008.Tipos tp on a.tipo_id = tp.tipo_id + where t.Id_Ticket IN ( +2289128,2284779,2284635,2286676,2284587,2282128,2278957,2277164,2281389,2276123,2281635,2275445, +2276690,2271157,2277229,2276191,2276066,2277224,2275760,2275660,2274908,2246354,2246354,2274894, +2275234,2270977,2274789,2274816,2274789,2274661,2274661,2246301,2274154,2273365,2272475,2273851, +2273851,2269991,2273086,2273419,2272564,2270541,2264699,2268730,2268730,2264699,2270364,2272806, +2264699,2272134,2272536,2268865,2266791,2272430,2272430,2246535,2272223) +group by t.Id_Ticket; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + + OPEN rs; + + FETCH rs INTO v_ticket ,foo; + + WHILE NOT done DO + -- select v_ticket; + + CALL vn.ticket_recalcComponents(v_ticket); + + call Ditacio(v_ticket + ,'Bioniza Ticket' + ,'T' + , 20 + , 'proc bionic_tickets_range_bionizar' + , NULL); + + FETCH rs INTO v_ticket,foo ; + + END WHILE; + + +CLOSE rs; + + + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -61332,7 +63115,7 @@ BEGIN JOIN Entradas e ON e.Id_Entrada = c.Id_Entrada JOIN travel t ON t.id = e.travel_id WHERE c.Id_Article = v_item - AND t.shipment = CURDATE() AND t.warehouse_id_out IN (7, 40) + AND DATE(t.shipment) = CURDATE() AND t.warehouse_id_out IN (7, 40) AND t.warehouse_id NOT IN (44, 1) AND NOT e.redada AND NOT e.Inventario AND IFNULL(c.Vida, 0) < c.Etiquetas @@ -62444,42 +64227,156 @@ DELIMITER ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_T3_pf`(IN idPRICE INT, IN t3 DOUBLE) +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_T3_pf`(IN vFixedPriceFk INT, IN vPrice DOUBLE) BEGIN -DECLARE idENTRADA BIGINT; -DECLARE idCOMPRA BIGINT; -DECLARE datFEC DATE; -DECLARE wh INT; -DECLARE idART BIGINT; + DECLARE idENTRADA BIGINT; + DECLARE idCOMPRA BIGINT; + DECLARE datFEC DATE; + DECLARE wh INT; + DECLARE idART BIGINT; -SELECT date_start, warehouse_id, item_id INTO datFEC, wh, idART -FROM price_fixed WHERE price_fixed_id = idPRICE; + SELECT date_start, warehouse_id, item_id INTO datFEC, wh, idART + FROM price_fixed + WHERE price_fixed_id = vFixedPriceFk; -SELECT C.Id_Entrada, Id_Compra INTO idENTRADA, idCOMPRA -FROM Compres C -JOIN Entradas E using(Id_Entrada) -JOIN travel TR on TR.id = E.travel_id -WHERE Id_Article = idART -AND wh IN (0, warehouse_id) -AND Novincular = FALSE -AND NOT Redada -AND landing <= datFEC -ORDER BY landing DESC -LIMIT 1; + SELECT C.Id_Entrada, C.Id_Compra + INTO idENTRADA, idCOMPRA + FROM Compres C + JOIN Entradas E using(Id_Entrada) + JOIN travel TR on TR.id = E.travel_id + WHERE Id_Article = idART + AND wh IN (0, warehouse_id) + AND Novincular = FALSE + AND NOT Redada + AND landing <= datFEC + ORDER BY landing DESC + LIMIT 1; -CALL buy_tarifas_table(idENTRADA); + -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén -SELECT + DROP TEMPORARY TABLE IF EXISTS tblTARIFAS; + CREATE TEMPORARY TABLE tblTARIFAS + ENGINE = MEMORY + SELECT * FROM + ( + SELECT * FROM + ( + SELECT t0, t1, t2, t3 + FROM tarifas + WHERE fecha <= datFEC + AND warehouse_id = wh + ORDER BY fecha DESC + + ) sub + UNION ALL + SELECT t0, t1, t2, t3 + FROM tblContadores + ) sub2 + LIMIT 1; - @t2:= round(t3 * (1 + ( (TC.t2 - TC.t3)/100) ),2) as rate_2b, - @t2:= IF(@t2 <= t3, t3 + 0.01, @t2) as rate_2 + SELECT + @t2:= round(vPrice * (1 + ( (TC.t2 - TC.t3)/100) ),2) as rate_2b, -FROM price_fixed PF - JOIN Compres C ON C.Id_Compra = idCOMPRA AND price_fixed_id = idPRICE - JOIN tblTARIFAS TC; + @t2:= IF(@t2 <= vPrice, vPrice + 0.01, @t2) as rate_2 + FROM price_fixed PF + JOIN Compres C ON C.Id_Compra = idCOMPRA AND price_fixed_id = vFixedPriceFk + JOIN tblTARIFAS TC; + DROP TEMPORARY TABLE tblTARIFAS; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `buy_tarifas_T3_pfTest` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`localhost` PROCEDURE `buy_tarifas_T3_pfTest`(IN vFixedPriceFk INT, IN vPrice DOUBLE) +BEGIN + + DECLARE idENTRADA BIGINT; + DECLARE idCOMPRA BIGINT; + DECLARE datFEC DATE; + DECLARE wh INT; + DECLARE idART BIGINT; + + SELECT date_start, warehouse_id, item_id INTO datFEC, wh, idART + FROM price_fixed + WHERE price_fixed_id = vFixedPriceFk; + +SELECT date_start, warehouse_id, item_id + FROM price_fixed + WHERE price_fixed_id = vFixedPriceFk; + + SELECT C.Id_Entrada, C.Id_Compra + INTO idENTRADA, idCOMPRA + FROM Compres C + JOIN Entradas E using(Id_Entrada) + JOIN travel TR on TR.id = E.travel_id + WHERE Id_Article = idART + AND wh IN (0, warehouse_id) + AND Novincular = FALSE + AND NOT Redada + AND landing <= datFEC + ORDER BY landing DESC + LIMIT 1; + +SELECT C.Id_Entrada, C.Id_Compra + FROM Compres C + JOIN Entradas E using(Id_Entrada) + JOIN travel TR on TR.id = E.travel_id + WHERE Id_Article = idART + AND wh IN (0, warehouse_id) + AND Novincular = FALSE + AND NOT Redada + AND landing <= datFEC + ORDER BY landing DESC + LIMIT 1; + + -- Prepara una tabla con las tarifas aplicables en funcion de la fecha y el almacén + + DROP TEMPORARY TABLE IF EXISTS tblTARIFAS; + CREATE TEMPORARY TABLE tblTARIFAS + ENGINE = MEMORY + SELECT * FROM + ( + SELECT * FROM + ( + SELECT t0, t1, t2, t3 + FROM tarifas + WHERE fecha <= datFEC + AND warehouse_id = wh + ORDER BY fecha DESC + + ) sub + UNION ALL + SELECT t0, t1, t2, t3 + FROM tblContadores + ) sub2 + LIMIT 1; + +select * from tblTARIFAS; + + SELECT + @t2:= round(vPrice * (1 + ( (TC.t2 - TC.t3)/100) ),2) as rate_2b, + + @t2:= IF(@t2 <= vPrice, vPrice + 0.01, @t2) as rate_2 + + FROM price_fixed PF + JOIN Compres C ON C.Id_Compra = idCOMPRA AND price_fixed_id = vFixedPriceFk + JOIN tblTARIFAS TC; + + DROP TEMPORARY TABLE tblTARIFAS; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -63810,7 +65707,7 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `clonWeeklyTickets`(IN vWeek INT) BEGIN - DECLARE done BIT DEFAULT 0; + DECLARE vIsDone BOOL; DECLARE vLanding DATE; DECLARE vShipment DATE; DECLARE vWarehouse INT; @@ -63828,27 +65725,67 @@ BEGIN FROM Tickets_turno tt JOIN Tickets t ON tt.Id_Ticket = t.Id_Ticket; - DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vIsDone = TRUE; - SET done = 0; SET vYear = YEAR(CURDATE()) + IF(vWeek < WEEK(CURDATE()),1, 0); OPEN rsTicket; - FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; + myLoop: LOOP + BEGIN + DECLARE vError TEXT; + DECLARE vSalesPersonEmail VARCHAR(150); + DECLARE vMailSent BOOL; + DECLARE vSubject VARCHAR(150); + DECLARE vMessage TEXT; + DECLARE CONTINUE HANDLER FOR SQLEXCEPTION + BEGIN + GET DIAGNOSTICS CONDITION 1 + vError = MESSAGE_TEXT; - WHILE NOT done DO - + IF vError = 'NOT_ZONE_WITH_THIS_PARAMETERS' THEN + SELECT e.email INTO vSalesPersonEmail + FROM vn.client c + JOIN vn.worker sp ON sp.id = c.salesPersonFk + JOIN account.emailUser e ON e.userFk = sp.userFk + WHERE c.id = vClient; + + SET vSubject = CONCAT('Turnos - No se ha podido clonar el ticket ', vTicket); + SET vMessage = CONCAT('No se ha podido clonar el ticket ', vTicket, + ' porque no hay una zona de envío disponible'); + + SELECT COUNT(*) INTO vMailSent + FROM vn.mail + WHERE sender = vSalesPersonEmail + AND subject = vSubject; + + IF NOT vMailSent THEN + INSERT INTO vn2008.mail (`to`,`subject`,`text`) + VALUES (vSalesPersonEmail, vSubject, vMessage); + END IF; + END IF; + END; + + SET vIsDone = FALSE; + FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; + + IF vIsDone THEN + LEAVE myLoop; + END IF; SELECT date INTO vShipment - FROM time - WHERE year = vYear AND week = vWeek - AND WEEKDAY(date) = vWeekDay; - + FROM time + WHERE year = vYear AND week = vWeek + AND WEEKDAY(date) = vWeekDay; + -- busca si el ticket ya ha sido clonado IF (select count(*) FROM Tickets t JOIN ticket_observation tob ON t.Id_Ticket = tob.Id_Ticket - WHERE Id_Consigna = vConsignatario AND Fecha = vShipment AND tob.text LIKE CONCAT('%',vTicket,'%')) = 0 + WHERE Id_Consigna = vConsignatario AND DATE(Fecha) = vShipment AND tob.text LIKE CONCAT('%',vTicket,'%')) = 0 THEN + CALL vn.zoneGetLanded(vShipment, vConsignatario, vAgencia, vWarehouse); + + SELECT landed INTO vLanding from tmp.zoneGetLanded; + IF (SELECT COUNT(*) FROM Agencias WHERE Id_Agencia = vAgencia AND Agencia LIKE '%turno%') THEN SET vAgencia = NULL; END IF; @@ -63873,15 +65810,13 @@ BEGIN INSERT INTO ticket_observation(Id_Ticket,observation_type_id,text) VALUES(vNewTicket,1,'ATENCION: Contiene lineas de TURNO') ON DUPLICATE KEY UPDATE text = CONCAT(ticket_observation.text,VALUES(text),' '); - CALL bionic_calc_clon(vNewTicket); + CALL vn.ticketCalculateClon(vNewTicket, vTicket); END IF; - FETCH rsTicket INTO vTicket, vWeekDay, vClient, vWarehouse, vEmpresa, vConsignatario, vAgencia; - - END WHILE; + END; + END LOOP; CLOSE rsTicket; - - DROP TEMPORARY TABLE IF EXISTS travel_tree_shipment; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -64545,6 +66480,248 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `comparativeKk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `comparativeKk`( + v_date DATETIME + ,days TINYINT + ,i_wh TINYINT + ,i_tipo INT + ,i_filtro INT +) +BEGIN + DECLARE date_cyear_ini DATETIME; + DECLARE date_cyear_end DATETIME; + DECLARE week_count TINYINT DEFAULT 7; + DECLARE w1, w2, w3, w4, w5, w6, w7 INT; + DECLARE y1, y2, y3, y4, y5, y6, y7 INT; + DECLARE wperiod INT;-- DECLARE ws, ys INT; -- PAK 11/01/2016 + DECLARE i INT DEFAULT 0; + DECLARE strFILTRO VARCHAR(255) DEFAULT 'TRUE'; + + IF i_filtro THEN + SELECT `sql` INTO strFILTRO FROM filtros WHERE id = i_filtro; + END IF; + + IF days < 0 OR days > 30 THEN + SET days = 15; + END IF; + + IF i_wh = NULL THEN + SET i_wh = 0; + END IF; + -- JGF 2015-04-16 cambio -21 por -22 para que la semana cuente de domingo a sabado + SET date_cyear_ini = TIMESTAMP(DATE(TIMESTAMPADD(DAY, -22 - WEEKDAY(v_date), v_date)), '00:00:00'); + SET date_cyear_end = TIMESTAMP(DATE(TIMESTAMPADD(DAY, (7 * week_count) -1, date_cyear_ini)), '23:59:59'); + -- Eliminamos el calculo del inventario para fechas en el pasado + + DROP TEMPORARY TABLE IF EXISTS `article_inventory`; + CREATE TEMPORARY TABLE `article_inventory` + ( + `article_id` INT(11) NOT NULL PRIMARY KEY + ) + ENGINE = MEMORY; + + INSERT INTO article_inventory (article_id) + SELECT Id_Article FROM Articles a + JOIN Tipos t ON a.tipo_id = t.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = t.reino_id + WHERE (i_tipo = 0 OR a.tipo_id = i_tipo) + AND r.display <> 0; + + IF v_date < CURDATE() + THEN + ALTER TABLE `article_inventory` + ADD `buy_id` INT NOT NULL DEFAULT 0, + ADD `buy_date` DATE DEFAULT '2000-01-01', + ADD `life` INT DEFAULT 0, + ADD `sd` INT DEFAULT 0, + ADD `avalaible` INT DEFAULT 0, + ADD `visible` INT DEFAULT 0; + + ELSE +select 'multiple2'; + CALL inventario_multiple_2 (v_date, i_wh, days); +select 'multiple'; + CALL article_multiple_buy (v_date, i_wh); +select 'buy_date'; + CALL article_multiple_buy_date (v_date, i_wh); +select 'end'; + + END IF; + + + DROP TEMPORARY TABLE IF EXISTS wtable; + + CREATE TEMPORARY TABLE wtable ( + cy INT(6), + ly INT(6) + ); + + REPEAT + SET i = i + 1; + SET wperiod = vnperiod(TIMESTAMPADD(DAY, 7*(i - 1), date_cyear_ini)); -- PAK 11/01/2016 + INSERT INTO wtable(cy, ly) VALUES(wperiod, wperiod - 100); -- VALUES( ys * 100 + ws, (ys -1) * 100 + ws); -- PAK 11/01/2016 + + UNTIL i = 7 END REPEAT; + + + SELECT cy, ly INTO w1, y1 FROM wtable limit 1; + SELECT cy, ly INTO w2, y2 FROM wtable WHERE cy > w1 limit 1; + SELECT cy, ly INTO w3, y3 FROM wtable WHERE cy > w2 limit 1; + SELECT cy, ly INTO w4, y4 FROM wtable WHERE cy > w3 limit 1; + + SELECT cy, ly INTO w5, y5 FROM wtable WHERE cy > w4 limit 1; + SELECT cy, ly INTO w6, y6 FROM wtable WHERE cy > w5 limit 1; + SELECT cy, ly INTO w7, y7 FROM wtable WHERE cy > w6 limit 1; + DROP TEMPORARY TABLE wtable; + + -- Genera una tabla con los datos del año pasado. + + DROP TEMPORARY TABLE IF EXISTS last_year; + CREATE TEMPORARY TABLE last_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(Periodo = y1, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek1 + ,CAST(SUM(IF(Periodo = y2, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek2 + ,CAST(SUM(IF(Periodo = y3, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek3 + ,CAST(SUM(IF(Periodo = y4, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek4 + ,CAST(SUM(IF(Periodo = y5, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek5 + ,CAST(SUM(IF(Periodo = y6, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek6 + ,CAST(SUM(IF(Periodo = y7, Cantidad, 0)) AS DECIMAL(10,0)) AS lweek7 + + ,CAST(SUM(IF(Periodo = y1, price, 0)) AS DECIMAL(10,0)) AS lprice1 + ,CAST(SUM(IF(Periodo = y2, price, 0)) AS DECIMAL(10,0)) AS lprice2 + ,CAST(SUM(IF(Periodo = y3, price, 0)) AS DECIMAL(10,0)) AS lprice3 + ,CAST(SUM(IF(Periodo = y4, price, 0)) AS DECIMAL(10,0)) AS lprice4 + ,CAST(SUM(IF(Periodo = y5, price, 0)) AS DECIMAL(10,0)) AS lprice5 + ,CAST(SUM(IF(Periodo = y6, price, 0)) AS DECIMAL(10,0)) AS lprice6 + ,CAST(SUM(IF(Periodo = y7, price, 0)) AS DECIMAL(10,0)) AS lprice7 + + FROM Comparativa + JOIN warehouse W on W.id = warehouse_id + WHERE (Periodo BETWEEN y1 and y7) + AND IF(i_wh = 0, W.is_comparative, i_wh = warehouse_id) + GROUP BY Id_Article; + + -- Genera una tabla con los datos de este año. + + DROP TEMPORARY TABLE IF EXISTS cur_year; + CREATE TEMPORARY TABLE cur_year + (KEY (Id_Article)) + ENGINE = MEMORY + SELECT Id_Article + + ,CAST(SUM(IF(week = w1, Total, 0)) AS DECIMAL(10,0)) AS cweek1 + ,CAST(SUM(IF(week = w2, Total, 0)) AS DECIMAL(10,0)) AS cweek2 + ,CAST(SUM(IF(week = w3, Total, 0)) AS DECIMAL(10,0)) AS cweek3 + ,CAST(SUM(IF(week = w4, Total, 0)) AS DECIMAL(10,0)) AS cweek4 + ,CAST(SUM(IF(week = w5, Total, 0)) AS DECIMAL(10,0)) AS cweek5 + ,CAST(SUM(IF(week = w6, Total, 0)) AS DECIMAL(10,0)) AS cweek6 + ,CAST(SUM(IF(week = w7, Total, 0)) AS DECIMAL(10,0)) AS cweek7 + + ,CAST(SUM(IF(week = w1, price, 0)) AS DECIMAL(10,0)) AS cprice1 + ,CAST(SUM(IF(week = w2, price, 0)) AS DECIMAL(10,0)) AS cprice2 + ,CAST(SUM(IF(week = w3, price, 0)) AS DECIMAL(10,0)) AS cprice3 + ,CAST(SUM(IF(week = w4, price, 0)) AS DECIMAL(10,0)) AS cprice4 + ,CAST(SUM(IF(week = w5, price, 0)) AS DECIMAL(10,0)) AS cprice5 + ,CAST(SUM(IF(week = w6, price, 0)) AS DECIMAL(10,0)) AS cprice6 + ,CAST(SUM(IF(week = w7, price, 0)) AS DECIMAL(10,0)) AS cprice7 + + FROM ( + SELECT A.Id_Article + ,CTS.period week + ,SUM(Cantidad) AS Total + ,TRUNCATE(SUM(Cantidad * IF(T.Fecha >= '2015-10-01',M.CostFixat,Preu * (100 - Descuento) / 100)),0) AS price + FROM Movimientos M + LEFT JOIN Tickets T ON T.Id_Ticket = M.Id_Ticket + INNER JOIN `time` CTS ON CTS.`date` = DATE(T.Fecha) + INNER JOIN Articles A USING (Id_Article) + INNER JOIN Tipos tp ON tp.tipo_id = A.tipo_id + LEFT JOIN reinos r ON r.id = tp.reino_id + JOIN warehouse W ON W.id = T.warehouse_id + WHERE Fecha BETWEEN date_cyear_ini AND date_cyear_end + AND T.Id_Cliente NOT IN(400,200) + AND IF(i_wh = 0, W.is_comparative, i_wh = T.warehouse_id) + AND r.display <> 0 + + GROUP BY A.Id_Article, week + ) t + GROUP BY Id_Article; + -- Genera la tabla con la comparativa. + + DROP TEMPORARY TABLE IF EXISTS remcom; + + SET strFILTRO = REPLACE(strFILTRO, 'Id_Article','A.Id_Article'); + SET strFILTRO = REPLACE(strFILTRO, 'tipo_id','tp.tipo_id'); + -- select * from article_inventory; + + DROP TEMPORARY TABLE IF EXISTS tmp.comparative; + + CALL util.exec (sql_printf + ( + 'CREATE TEMPORARY TABLE tmp.comparative ENGINE = MEMORY + SELECT + an.nicho, p.name Productor, C.Packing, C.Costefijo, C.caja + ,A.Color, Id_Tipo as Tipo,A.tipo_id, o.Abreviatura as Origen, A.Categoria + ,A.Tallos, A.Medida, A.Article, TR.CodigoTrabajador + + ,cweek1, cweek2, cweek3, cweek4, cweek5, cweek6, cweek7 + ,lweek1, lweek2, lweek3, lweek4, lweek5, lweek6, lweek7 + + ,cprice1, cprice2, cprice3, cprice4, cprice5, cprice6, cprice7 + ,lprice1, lprice2, lprice3, lprice4, lprice5, lprice6, lprice7 + + ,A.Id_Article, i.buy_id , tp.life , CAST(IFNULL(i.sd,0) AS SIGNED) as sd + ,CAST(i.avalaible AS SIGNED) avalaible, CAST(i.visible AS SIGNED) visible, i.buy_date + ,E.Id_Proveedor AS provider_id + ,A.offer, A.bargain, A.comments, A.relevancy, A.description itemDescription + ,IF(cy.Id_Article IS NULL AND i.visible = 0 AND i.avalaible = 0 AND IFNULL(i.sd, 0) = 0, FALSE, TRUE) AS filtret + ,(IFNULL(it.itemFk,0) != 0) isTagged + + ,A.tag5, A.value5, A.tag6, A.value6, A.tag7, A.value7, A.tag8, A.value8 + ,A.tag9, A.value9, A.tag10, A.value10, A.description,A.isActive + FROM vn2008.article_inventory i + JOIN vn2008.Articles A ON A.Id_Article = i.article_id + LEFT JOIN vn.itemTagged it ON it.itemFk = i.article_id + LEFT JOIN vn2008.Articles_nicho an ON A.Id_Article = an.Id_Article AND an.warehouse_id = %s + LEFT JOIN vn2008.producer p ON p.producer_id = A.producer_id + LEFT JOIN vn2008.Tipos tp ON A.tipo_id = tp.tipo_id + LEFT JOIN vn2008.reinos r ON r.id = tp.reino_id + LEFT JOIN vn2008.Trabajadores TR ON TR.Id_Trabajador = tp.Id_Trabajador + LEFT JOIN vn2008.Compres C ON i.buy_id = C.Id_Compra + LEFT JOIN vn2008.Entradas E USING(Id_Entrada) + LEFT JOIN vn2008.Origen o ON o.id = A.id_origen + LEFT JOIN vn2008.last_year ly ON ly.Id_Article = A.Id_Article + LEFT JOIN vn2008.cur_year cy ON cy.Id_Article = A.Id_Article AND (i.avalaible <> 0 OR i.visible <> 0 OR cweek1 OR cweek2 OR cweek3 OR cweek4 + OR cweek5 OR cweek6 OR cweek7 OR lweek1 OR lweek2 OR lweek3 OR lweek4 OR lweek5 + OR lweek6 OR lweek7) + WHERE r.display <> 0 AND %s ' + + ,i_wh,strFILTRO + )); + + -- Destruye las tablas temporales creadas. + + DROP TEMPORARY TABLE last_year; + DROP TEMPORARY TABLE cur_year; + DROP TEMPORARY TABLE article_inventory; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `compresFromTicket` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -72375,7 +74552,7 @@ BEGIN DECLARE currentDayOfWeek INT; SET currentDayOfWeek = weekday(curdate()); - +/* -- Sin provincia ni dia de envio UPDATE tmp.production_buffer pb LEFT JOIN @@ -72443,7 +74620,7 @@ JOIN SET pb.Hora = IF(pb.Hora is null or pb.Hora = 0 or pb.Hora = 24,t.max_hour, pb.Hora) ,pb.Departure = t.max_hour ; - +*/ -- Pedidos del dia anterior son prioritarios /* UPDATE tmp.production_buffer pb @@ -72468,6 +74645,215 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; CREATE DEFINER=`root`@`%` PROCEDURE `production_control_source`(vWarehouseId INT, vScopeDays TINYINT) +BEGIN + DECLARE vMidnight DATETIME DEFAULT TIMESTAMP(CURDATE(),'23:59:59'); + DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,vMidnight); + DECLARE SAFE_ALERT_LEVEL INT DEFAULT 3; + + CALL prepare_ticket_list(TIMESTAMPADD(DAY,0,CURDATE()-1), vEndingDate); + CALL prepare_client_list; + CALL production_buffer_problems; + + DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; + CREATE TEMPORARY TABLE tmp.production_buffer + (PRIMARY KEY(Id_Ticket)) + ENGINE = MEMORY + SELECT t.Id_Ticket + , t.Id_Cliente + , t.warehouse_id + , t.Alias + , t.Bultos + , IF(HOUR(t.Fecha), HOUR(t.Fecha), HOUR(z.hour)) as Hora + , HOUR(z.hour) as Departure + , MINUTE(t.Fecha) as minuto + , t.Id_Ruta + , IF(a.Vista = 2,ap.zona,0) as zona + , CS.Consignatario + , CS.CODPOSTAL + , CS.POBLACION + , p.name PROVINCIA + , IF(a.Vista= 2, CONCAT(LEFT(z.alias,16),' ',IFNULL(RIGHT(t.Id_Ruta,3),'')), a.Agencia) Agencia + , a.agency_id + , 0 AS `lines` + , CAST( 0 AS DECIMAL(5,2)) AS m3 + , 0 AS problems + , " " as problem + , IFNULL(tls.state,2) AS state + , w.Codigotrabajador + , DATE(t.Fecha) AS Fecha + , Averiguar_ComercialCliente_IdTicket(t.Id_Ticket) AS Comercial + , p.province_id + , tls.productionOrder as state_order + , ifnull(tls.alertLevel,0) alert_level + , t.boxed as palletized + , rg.deviceId ubicacion + FROM tmp.ticket_list tt + JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket + JOIN Consignatarios CS on CS.Id_Consigna = t.Id_Consigna + LEFT JOIN province p on p.province_id = CS.province_id + JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN Agencias_province ap on ap.province_id = CS.province_id AND ap.warehouse_id = t.warehouse_id AND ap.agency_id = a.agency_id + LEFT JOIN vn.ticketState tls on tls.ticket = tt.Id_Ticket + LEFT JOIN Trabajadores w on w.Id_Trabajador = tls.worker + LEFT JOIN zoneNickname z ON z.warehouse_id = ap.warehouse_id and z.agency_id = ap.agency_id AND z.zona = ap.zona + LEFT JOIN vn.routeGate rg ON rg.routeFk = t.Id_Ruta + LEFT JOIN vn.zone z ON z.id = t.zoneFk + WHERE t.warehouse_id = vWarehouseId + AND a.Vista IN (1,2,3); + + -- Líneas y volumen por ticket + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT m.Id_Ticket, COUNT(Id_Movimiento) as `lines`, cast( sum( m.Cantidad * r.cm3 / 1000000 ) as decimal(10,2)) as m3 + FROM tmp.ticket_list tt + JOIN Movimientos m on tt.Id_Ticket = m.Id_Ticket + JOIN bi.rotacion r on m.Id_Article = r.Id_Article + WHERE r.warehouse_id = vWarehouseId + GROUP BY m.Id_Ticket + ) m on m.Id_Ticket = pb.Id_Ticket + SET pb.`lines` = m.`lines`, + pb.m3 = m.m3; + + DELETE FROM tmp.production_buffer + WHERE `lines`= 0; + + -- Cajas + + ALTER TABLE tmp.production_buffer + ADD Cajas DOUBLE DEFAULT NULL; +/* + UPDATE tmp.production_buffer pb + JOIN ( + SELECT t.Id_Ticket, sum(floor(m.Cantidad / c.Packing) * bultoCubico) as Cajas + FROM tmp.ticket_list tt + JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket + JOIN Movimientos m on m.Id_Ticket = t.Id_Ticket + JOIN cache.last_buy lb on lb.warehouse_id = t.warehouse_id AND lb.item_id = m.Id_Article + JOIN Compres c on c.Id_Compra = lb.buy_id + JOIN Cubos cb on cb.Id_Cubo = c.Id_Cubo + WHERE m.Cantidad >= c.Packing + GROUP BY t.Id_Ticket + HAVING Cajas >= 1 + ) sub ON sub.Id_Ticket = pb.Id_Ticket + SET pb.Cajas = sub.Cajas; +*/ + -- Artificial, Seco y Preservado: Reino 4 + + ALTER TABLE tmp.production_buffer + ADD lineasArtificial INT DEFAULT NULL; + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT tt.Id_Ticket, COUNT(m.Id_Movimiento) as Lineas + FROM tmp.ticket_list tt + JOIN Movimientos m ON m.Id_Ticket = tt.Id_Ticket + JOIN Articles a ON a.Id_Article = m.Id_Article + JOIN Tipos tp ON tp.tipo_id = a.tipo_id + JOIN reinos r ON r.id = tp.reino_id + WHERE reino = 'Artificial' + GROUP BY tt.Id_Ticket + HAVING Lineas >= 1 + ) sub ON sub.Id_Ticket = pb.Id_Ticket + SET pb.lineasArtificial = sub.Lineas; + + -- Problemas por ticket + + UPDATE tmp.production_buffer pb + JOIN ( + SELECT Id_Ticket, COUNT(Id_Ticket) as problems, GROUP_CONCAT(problem) problem + FROM tmp.buffer_problems + GROUP BY Id_Ticket + ) p on p.Id_Ticket = pb.Id_Ticket + SET pb.problems = p.problems, + pb.problem = p.problem; + + -- Entradas + + INSERT INTO tmp.production_buffer( + Fecha + , Id_Ticket + , Agencia + , Id_Cliente + , Consignatario + , state + , CodigoTrabajador + , m3 + , `lines` + ) + SELECT DISTINCT c.shipment AS Fecha + , c.Id_Entrada AS Id_Ticket + , warehouse.name + , c.Id_Proveedor + , c.ref AS Consignatario + , IF(BIT_OR(controlado.Id_Compra),6,IF(BIT_OR(preparado.Id_Compra),5,3)) AS state + , c.Id_Trabajador AS CodigoTrabajador + , round(sum(cm3) / 1000000,2) AS m3 + , count(c.Id_Compra) as `lines` + FROM v_compres c + INNER JOIN warehouse ON c.warehouse_id = warehouse.id + LEFT JOIN Compres_ok preparado ON c.Id_Compra = preparado.Id_Compra AND preparado.valor = 1 + LEFT JOIN Compres_ok controlado ON c.Id_Compra = controlado.Id_Compra AND controlado.valor = 2 + WHERE warehouse_id_out = vWarehouseId AND IFNULL(c.Confirmada,FALSE) = FALSE + AND c.shipment >= CURDATE() + GROUP BY Id_Entrada; + + -- Refresca la caché para el cierre dinámico de agencias + + CALL cache.departure_timing(vWarehouseId); + + -- Tickets de recogida + + REPLACE tmp.production_buffer( + Fecha + , Id_Ticket + , Agencia + , Id_Cliente + , Consignatario + , state + , CodigoTrabajador + , alert_level + , warehouse_id + ) + SELECT + DATE(t.Fecha) AS Fecha + , t.Id_Ticket + , a.Agencia + , t.Id_Cliente + , CS.Consignatario + , s.id as state + , w.Codigotrabajador + , ifnull(tls.alertLevel,0) alert_level + , vWarehouseId + FROM vn2008.Tickets t + JOIN vn2008.Consignatarios CS on CS.Id_Consigna = t.Id_Consigna + JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia + LEFT JOIN vn2008.warehouse_pickup wp ON wp.agency_id = a.Id_Agencia + LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket + LEFT JOIN vn.state s ON s.id = tls.state + LEFT JOIN vn2008.Trabajadores w on w.Id_Trabajador = tls.worker + WHERE t.Fecha between TIMESTAMPADD(WEEK,-1,CURDATE()) AND dayend(TIMESTAMPADD(DAY,-1,CURDATE())) + AND wp.warehouse_id = vWarehouseId; + + -- DROP TEMPORARY TABLE tmp.ticket_list; + -- DROP TEMPORARY TABLE IF EXISTS tmp.risk; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `production_control_sourceKk` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `production_control_sourceKk`(vWarehouseId INT, vScopeDays TINYINT) BEGIN DECLARE vMidnight DATETIME DEFAULT TIMESTAMP(CURDATE(),'23:59:59'); DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,vMidnight); @@ -72672,261 +75058,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `production_control_source_Beta` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `production_control_source_Beta`(vWarehouseId INT, vScopeDays TINYINT) -BEGIN - DECLARE vMidnight DATETIME DEFAULT TIMESTAMP(CURDATE(),'23:59:59'); - DECLARE vEndingDate DATETIME DEFAULT TIMESTAMPADD(DAY,vScopeDays,vMidnight); - DECLARE SAFE_ALERT_LEVEL INT DEFAULT 3; - DECLARE vLoadingDelay DECIMAL(5) DEFAULT 2; - - CALL prepare_ticket_list(TIMESTAMPADD(DAY,0,CURDATE()-1), vEndingDate); - CALL prepare_client_list; - CALL production_buffer_problems; - - IF vWarehouseId = 0 THEN - - DELETE tt.* - FROM tmp.ticket_list tt - JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket - WHERE t.warehouse_id NOT IN (1,44); - - ELSE - - DELETE tt.* - FROM tmp.ticket_list tt - JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket - WHERE t.warehouse_id != vWarehouseId; - - END IF; - - /* - DROP TEMPORARY TABLE IF EXISTS tmp.selectedWarehouses; - - IF vWarehouseId = 0 THEN - - CREATE TEMPORARY TABLE tmp.selectedWarehouses - (PRIMARY KEY(id)) - ENGINE = MEMORY - SELECT id - FROM warehouse - WHERE id = vWarehouseId; - - ELSE - - CREATE TEMPORARY TABLE tmp.selectedWarehouses - (PRIMARY KEY(id)) - ENGINE = MEMORY - SELECT id - FROM warehouse - WHERE id IN (1,44); -- Silla FV y Silla PCA - - END IF; - */ - - - DROP TEMPORARY TABLE IF EXISTS tmp.production_buffer; - CREATE TEMPORARY TABLE tmp.production_buffer - (PRIMARY KEY(Id_Ticket)) - ENGINE = MEMORY - SELECT t.Id_Ticket - , t.Id_Cliente - , t.warehouse_id - , t.Alias - , t.Bultos - , HOUR(t.Fecha) as Hora - , HOUR(t.Fecha) + vLoadingDelay as Departure - , MINUTE(t.Fecha) as minuto - , t.Id_Ruta - , IF(a.Vista = 2,ap.zona,0) as zona - , CS.Consignatario - , CS.CODPOSTAL - , CS.POBLACION - , p.name PROVINCIA - , IF(a.Vista= 2, CONCAT(LEFT(z.alias,16),' ',IFNULL(RIGHT(t.Id_Ruta,3),'')), a.Agencia) Agencia - , a.agency_id - , 0 AS `lines` - , CAST( 0 AS DECIMAL(5,2)) AS m3 - , 0 AS problems - , " " as problem - , IFNULL(tls.state,2) AS state - , w.Codigotrabajador - , DATE(t.Fecha) AS Fecha - , Averiguar_ComercialCliente_IdTicket(t.Id_Ticket) AS Comercial - , p.province_id - , tls.productionOrder as state_order - , ifnull(tls.alertLevel,0) alert_level - , t.boxed as palletized - FROM tmp.ticket_list tt - JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket - JOIN Consignatarios CS on CS.Id_Consigna = t.Id_Consigna - LEFT JOIN province p on p.province_id = CS.province_id - JOIN Agencias a ON a.Id_Agencia = t.Id_Agencia - LEFT JOIN Agencias_province ap on ap.province_id = CS.province_id AND ap.warehouse_id = t.warehouse_id AND ap.agency_id = a.agency_id - LEFT JOIN vn.ticketState tls on tls.ticket = tt.Id_Ticket - LEFT JOIN Trabajadores w on w.Id_Trabajador = tls.worker - LEFT JOIN zoneNickname z ON z.warehouse_id = ap.warehouse_id and z.agency_id = ap.agency_id AND z.zona = ap.zona - AND a.Vista IN (1,2,3); - - - -- Líneas y volumen por ticket - - UPDATE tmp.production_buffer pb - JOIN ( - SELECT m.Id_Ticket, COUNT(Id_Movimiento) as `lines`, cast( sum( m.Cantidad * r.cm3 / 1000000 ) as decimal(10,2)) as m3 - FROM tmp.ticket_list tt - JOIN Tickets t ON t.Id_Ticket = tt.Id_Ticket - JOIN Movimientos m on tt.Id_Ticket = m.Id_Ticket - JOIN bi.rotacion r on m.Id_Article = r.Id_Article AND r.warehouse_id = t.warehouse_id - GROUP BY m.Id_Ticket - ) m on m.Id_Ticket = pb.Id_Ticket - SET pb.`lines` = m.`lines`, - pb.m3 = m.m3; - - DELETE FROM tmp.production_buffer - WHERE `lines`= 0; - - -- Cajas - - ALTER TABLE tmp.production_buffer - ADD Cajas DOUBLE DEFAULT NULL; - - UPDATE tmp.production_buffer pb - JOIN ( - SELECT t.Id_Ticket, sum(floor(m.Cantidad / c.Packing) * bultoCubico) as Cajas - FROM tmp.ticket_list tt - JOIN Tickets t on tt.Id_Ticket = t.Id_Ticket - JOIN Movimientos m on m.Id_Ticket = t.Id_Ticket - JOIN cache.last_buy lb on lb.warehouse_id = t.warehouse_id AND lb.item_id = m.Id_Article - JOIN Compres c on c.Id_Compra = lb.buy_id - JOIN Cubos cb on cb.Id_Cubo = c.Id_Cubo - WHERE m.Cantidad > c.Packing - GROUP BY t.Id_Ticket - HAVING Cajas >= 1 - ) sub ON sub.Id_Ticket = pb.Id_Ticket - SET pb.Cajas = sub.Cajas; - - -- Artificial, Seco y Preservado: Reino 4 - - ALTER TABLE tmp.production_buffer - ADD lineasArtificial INT DEFAULT NULL; - - UPDATE tmp.production_buffer pb - JOIN ( - SELECT tt.Id_Ticket, COUNT(m.Id_Movimiento) as Lineas - FROM tmp.ticket_list tt - JOIN Movimientos m ON m.Id_Ticket = tt.Id_Ticket - JOIN Articles a ON a.Id_Article = m.Id_Article - JOIN Tipos tp ON tp.tipo_id = a.tipo_id - JOIN reinos r ON r.id = tp.reino_id - WHERE reino = 'Artificial' - GROUP BY tt.Id_Ticket - HAVING Lineas >= 1 - ) sub ON sub.Id_Ticket = pb.Id_Ticket - SET pb.lineasArtificial = sub.Lineas; - - - -- Problemas por ticket - - UPDATE tmp.production_buffer pb - JOIN ( - SELECT Id_Ticket, COUNT(Id_Ticket) as problems, GROUP_CONCAT(problem) problem - FROM tmp.buffer_problems - GROUP BY Id_Ticket - ) p on p.Id_Ticket = pb.Id_Ticket - SET pb.problems = p.problems, - pb.problem = p.problem; - - -- Hora limite de preparación - - CALL production_buffer_set_priority; - - -- Entradas - - INSERT INTO tmp.production_buffer( - Fecha - , Id_Ticket - , Agencia - , Id_Cliente - , Consignatario - , state - , CodigoTrabajador - , m3 - , `lines` - ) - SELECT DISTINCT c.shipment AS Fecha - , c.Id_Entrada AS Id_Ticket - , warehouse.name - , c.Id_Proveedor - , c.ref AS Consignatario - , IF(BIT_OR(controlado.Id_Compra),6,IF(BIT_OR(preparado.Id_Compra),5,3)) AS state - , c.Id_Trabajador AS CodigoTrabajador - , round(sum(cm3) / 1000000,2) AS m3 - , count(c.Id_Compra) as `lines` - FROM v_compres c - INNER JOIN warehouse ON c.warehouse_id = warehouse.id - LEFT JOIN Compres_ok preparado ON c.Id_Compra = preparado.Id_Compra AND preparado.valor = 1 - LEFT JOIN Compres_ok controlado ON c.Id_Compra = controlado.Id_Compra AND controlado.valor = 2 - WHERE (warehouse_id_out = CASE vWarehouseId WHEN 0 THEN 1 ELSE vWarehouseId END - OR - warehouse_id_out = CASE vWarehouseId WHEN 0 THEN 44 ELSE vWarehouseId END) - AND IFNULL(c.Confirmada,FALSE) = FALSE - AND c.shipment >= CURDATE() - GROUP BY Id_Entrada; - - -- Refresca la caché para el cierre dinámico de agencias - - CALL cache.departure_timing; - - -- Tickets de recogida - - REPLACE tmp.production_buffer( - Fecha - , Id_Ticket - , Agencia - , Id_Cliente - , Consignatario - , state - , CodigoTrabajador - , alert_level - , warehouse_id - ) - SELECT - DATE(t.Fecha) AS Fecha - , t.Id_Ticket - , a.Agencia - , t.Id_Cliente - , CS.Consignatario - , s.id as state - , w.Codigotrabajador - , ifnull(tls.alertLevel,0) alert_level - , t.warehouse_id - FROM vn2008.Tickets t - JOIN tmp.ticket_list tt ON tt.Id_Ticket = t.Id_Ticket - JOIN vn2008.Consignatarios CS on CS.Id_Consigna = t.Id_Consigna - JOIN vn2008.Agencias a ON a.Id_Agencia = t.Id_Agencia - LEFT JOIN vn2008.warehouse_pickup wp ON wp.agency_id = a.Id_Agencia - LEFT JOIN vn.ticketState tls on tls.ticket = t.Id_Ticket - LEFT JOIN vn.state s ON s.id = tls.state - LEFT JOIN vn2008.Trabajadores w on w.Id_Trabajador = tls.worker - WHERE t.Fecha between TIMESTAMPADD(WEEK,-1,CURDATE()) AND dayend(TIMESTAMPADD(DAY,-1,CURDATE())) - ; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `proveedores_saldo` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -75799,41 +77930,69 @@ declare SMP INT; DECLARE SMP_RATE INT; DECLARE SMP_OLD INT; DECLARE SMP_NEW INT; -#declare connections int; -#declare Threads_created INT; -#declare Threads_cached int; -#declare Thread_cache_size int; -#declare sort_buffer_size int; -#declare max_sort_length int; -#declare opened_tables int; SET i = 0; loop1: REPEAT SET i = i + 1; SET @SleepTime = 300; - + SELECT variable_value INTO @SMP_OLD FROM information_schema.global_status WHERE variable_name = 'Sort_merge_passes'; - Select VARIABLE_value into @connections from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'connections'; - Select VARIABLE_value into @Threads_created from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Threads_created'; - Select VARIABLE_value into @Threads_cached from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Threads_cached'; - #Select VARIABLE_value into @opened_tables from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'opened_tables'; - Select VARIABLE_value into @created_tmp_disk_tables from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'created_tmp_disk_tables'; - Select @@global.thread_cache_size into @Thread_cache_size; - Select @@global.sort_buffer_size into @sort_buffer_size; - Select @@global.max_sort_length into @max_sort_length; - + SELECT SLEEP(@SleepTime) INTO @x; SELECT variable_value INTO @SMP_NEW FROM information_schema.global_status WHERE variable_name = 'Sort_merge_passes'; SET @SMP = @SMP_NEW - @SMP_OLD; SET @SMP_RATE = @SMP * 3600 / @SleepTime; - - INSERT INTO sort_merge_results_ernesto (hora, smp_old, smp_new, smp, smp_hour,connections, Threads_created, Threads_cached, Thread_cache_size, sort_buffer_size, max_sort_length, opened_tables, Created_tmp_disk_tables) - VALUES (now(), @SMP_OLD, @SMP_NEW, @SMP, @SMP_RATE, @connections, @Threads_created, @Threads_cached, @Thread_cache_size, @sort_buffer_size, @max_sort_length, @opened_tables, @Created_tmp_disk_tables); - SELECT * FROM sort_merge_results_ernesto order by hora desc; + Select VARIABLE_value into @connections from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'connections'; + Select VARIABLE_value into @Threads_created from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Threads_created'; + Select VARIABLE_value into @Threads_cached from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Threads_cached'; + Select VARIABLE_value into @Innodb_os_log_written from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Innodb_os_log_written'; + + Select VARIABLE_value into @Created_tmp_disk_tables from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Created_tmp_disk_tables'; + Select VARIABLE_value into @created_tmp_tables from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'created_tmp_tables'; + Select VARIABLE_value into @Created_tmp_files from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Created_tmp_files'; + Select VARIABLE_value into @opened_tables from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'opened_tables'; + Select VARIABLE_value into @open_tables from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'open_tables'; + Select VARIABLE_value into @TABLE_OPEN_CACHE_OVERFLOWS from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'TABLE_OPEN_CACHE_OVERFLOWS'; + Select VARIABLE_value into @TABLE_OPEN_CACHE_MISSES from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'TABLE_OPEN_CACHE_MISSES'; + Select VARIABLE_value into @TABLE_OPEN_CACHE_HITS from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'TABLE_OPEN_CACHE_HITS'; + Select VARIABLE_value into @Uptime_since_flush_status from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Uptime_since_flush_status'; + Select VARIABLE_value into @Uptime from information_schema.GLOBAL_STATUS where VARIABLE_NAME like 'Uptime'; + + Select @@global.table_definition_cache into @table_definition_cache; + Select @@global.table_open_cache into @table_open_cache; + Select @@global.table_open_cache_instances into @table_open_cache_instances; + Select @@global.thread_cache_size into @Thread_cache_size; + Select @@global.sort_buffer_size into @sort_buffer_size; + Select @@global.max_sort_length into @max_sort_length; + select @@global.tmp_table_size into @tmp_table_size; + select @@global.join_buffer_size into @join_buffer_size; + select @@global.max_heap_table_size into @max_heap_table_size; + Select @@global.open_files_limit into @open_files_limit; + Select @@global.innodb_open_files into @innodb_open_files; + Select @@global.query_cache_size into @query_cache_size; + Select @@global.query_cache_type into @query_cache_type; - UNTIL i >= 12*18 + SELECT (Open_tables * Uptime / Opened_Tables) AS OpenTablesxUptimeDivOpened INTO @OpenTablesxUptimeDivOpened FROM + (SELECT variable_value Uptime FROM information_schema.global_status + WHERE variable_name = 'Uptime_since_flush_status') up, + (SELECT variable_value Open_tables FROM information_schema.global_status + WHERE variable_name = 'Open_tables') opn, + (SELECT IF(variable_value=0,1,variable_value) Opened_tables + FROM information_schema.global_status + WHERE variable_name = 'Opened_tables') opnd; + + INSERT INTO sort_merge_results_ernesto (hora, uptime, uptime_since_flush, smp_old, smp_new, smp, smp_hour,connections, Threads_created, Threads_cached, Thread_cache_size, sort_buffer_size, max_sort_length, opened_tables, + Created_tmp_disk_tables, created_tmp_tables, Innodb_os_log_written, table_definition_cache, table_open_cache, table_open_cache_instances, open_tables, TABLE_OPEN_CACHE_OVERFLOWS, TABLE_OPEN_CACHE_MISSES, TABLE_OPEN_CACHE_HITS, tmp_table_size, max_heap_table_size, OpenTablesxUptimeDivOpened, join_buffer_size, open_files_limit, innodb_open_files, Created_tmp_files, query_cache_size, query_cache_type) + VALUES (now(), @uptime, @uptime_since_flush, @SMP_OLD, @SMP_NEW, @SMP, @SMP_RATE, @connections, @Threads_created, @Threads_cached, @Thread_cache_size, @sort_buffer_size, @max_sort_length, @opened_tables, + @Created_tmp_disk_tables, @created_tmp_tables, @Innodb_os_log_written, @table_definition_cache, @table_open_cache, @table_open_cache_instances, @open_tables, @TABLE_OPEN_CACHE_OVERFLOWS, @TABLE_OPEN_CACHE_MISSES, @TABLE_OPEN_CACHE_HITS, @tmp_table_size, @max_heap_table_size, @OpenTablesxUptimeDivOpened, @join_buffer_size, @open_files_limit, @innodb_open_files, @Created_tmp_files, @query_cache_size, @query_cache_type); + + if (i mod 3 = 0) then + SELECT * FROM sort_merge_results_ernesto order by hora desc; + End if; + + UNTIL i >= 12 * 15 END REPEAT; END ;; DELIMITER ; @@ -79909,6 +82068,67 @@ BEGIN SET parent = v_new_parent WHERE id = v_node; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `valeria` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`z-developer`@`%` PROCEDURE `valeria`() +BEGIN + + +DECLARE vMes INT DEFAULT 1; +DECLARE vAny INT DEFAULT 2015; + +DROP TABLE IF EXISTS tmp.kkk; +DROP TABLE tmp.kk; +CREATE TABLE tmp.kk +select sum(greatest(peso, volume_weight)) kg, month(MYSQL_TIME) as mes, year(MYSQL_TIME) as año, f.airport_out origen +from vn2008.awb +join vn2008.flight f USING(flight_id) +group by mes, año, origen; + +CREATE TABLE tmp.kkk +SELECT floor(sum(kg)) as totalKg, vMes, vAny + 1 as vAny, origen + FROM tmp.kk + WHERE (mes > vMes AND año = vAny) + OR (mes <= vMes AND año = vAny + 1) + GROUP BY origen + ; + +WHILE vAny < 2018 OR vMes <= 4 DO + + SET vMes = vMes + 1; + + IF vMes = 13 THEN + + SET vMes = 1; + SET vAny = vAny + 1; + + END IF; + + INSERT INTO tmp.kkk + SELECT floor(sum(kg)) as totalKg, vMes, vAny + 1, origen + FROM tmp.kk + WHERE (mes > vMes AND año = vAny) + OR (mes <= vMes AND año = vAny + 1) + GROUP BY origen + ; + + +END WHILE; + END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -80229,53 +82449,6 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 DROP PROCEDURE IF EXISTS `weekly_sales_new` */; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = '' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`%` PROCEDURE `weekly_sales_new`(v_wh SMALLINT, v_date_ini DATETIME, v_date_end DATETIME) -BEGIN - IF v_date_end IS NULL THEN - SET v_date_end = v_date_ini; - END IF; - - SET v_date_end = TIMESTAMPADD(DAY, 1, v_date_end); - - CREATE TEMPORARY TABLE weekly_ticket - (INDEX idx USING HASH (Id_Ticket)) - ENGINE = MEMORY - SELECT Id_Ticket, to_weeks (DATE(Fecha)) week, warehouse_id - FROM Tickets t - JOIN warehouse w ON w.id = t.warehouse_id - WHERE Fecha >= v_date_ini AND Fecha < v_date_end - AND Id_Cliente NOT IN (400, 200) - AND NOT w.fuente - AND v_wh IN (t.warehouse_id, 0); - - CREATE TEMPORARY TABLE weekly_sales - ENGINE = MEMORY - SELECT week, warehouse_id, a.Id_Article item_id, SUM(Cantidad) AS amount, - SUM(Cantidad * Preu * (100 - Descuento) / 100) AS price - FROM Movimientos m - JOIN weekly_ticket t USING (Id_Ticket) - JOIN Articles a USING (Id_Article) - INNER JOIN Tipos USING (tipo_id) - WHERE reino_id != 6 - GROUP BY week, warehouse_id, item_id; - - DROP TEMPORARY TABLE weekly_ticket; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `XDiario_Quadrator` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -80318,6 +82491,106 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__bionic_available_` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_available_`( + vDate DATE, + vAddress INT, + vAgency INT) +BEGIN +/** + * Calcula el disponible para un conjunto de almacenes y fechas + * devueltos por el procedimiento agencyHourGetShipped() + * + * @deprecated Use vn.available_calc() + * @table t_bionic_available Tabla con los ids de cache + */ + DECLARE vAvailableCalc INT; + DECLARE vShipment DATE; + DECLARE vAgencyId INT; + DECLARE vWh INT; + DECLARE vDone BOOL; + DECLARE cTravelTree CURSOR FOR + SELECT warehouseFk, shipped FROM tmp.agencyHourGetShipped; + + DECLARE CONTINUE HANDLER FOR NOT FOUND SET vDone = TRUE; + + -- Establecemos los almacenes y las fechas que van a entrar al disponible + + SELECT agency_id INTO vAgencyId + FROM Agencias WHERE Id_Agencia = vAgency; + + CALL vn.agencyHourGetShipped (vDate, vAddress, vAgencyId); + + DROP TEMPORARY TABLE IF EXISTS t_bionic_available; + CREATE TEMPORARY TABLE t_bionic_available( + calc_id INT UNSIGNED, + PRIMARY KEY (calc_id) + ) + ENGINE = MEMORY; + + OPEN cTravelTree; + l: LOOP + SET vDone = FALSE; + FETCH cTravelTree INTO vWh, vShipment; + + IF vDone THEN + LEAVE l; + END IF; + + CALL `cache`.available_refresh (vAvailableCalc, FALSE, vWh, vShipment); + + INSERT IGNORE INTO t_bionic_available + SET calc_id = vAvailableCalc; + END LOOP; + + CLOSE cTravelTree; + DROP TEMPORARY TABLE tmp.agencyHourGetShipped; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__bionic_from_order` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8 */ ; +/*!50003 SET character_set_results = utf8 */ ; +/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__bionic_from_order`( + v_date DATE, -- fecha de recepcion de mercancia + v_consigna INT, + v_agencia INT, + v_order INT) +BEGIN + DROP TEMPORARY TABLE IF EXISTS tmp.bionic_calc; + CREATE TEMPORARY TABLE tmp.bionic_calc + (PRIMARY KEY (item_id)) + ENGINE = MEMORY + SELECT item_id FROM order_row + WHERE order_id = v_order GROUP BY item_id; + + CALL bionic_calc (v_date, v_consigna, v_agencia); + DROP TEMPORARY TABLE tmp.bionic_calc; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; /*!50003 DROP PROCEDURE IF EXISTS `__entradaCambioUpdate` */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; @@ -81434,6 +83707,53 @@ DELIMITER ; /*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET collation_connection = @saved_col_connection */ ; +/*!50003 DROP PROCEDURE IF EXISTS `__weekly_sales_new` */; +/*!50003 SET @saved_cs_client = @@character_set_client */ ; +/*!50003 SET @saved_cs_results = @@character_set_results */ ; +/*!50003 SET @saved_col_connection = @@collation_connection */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; +/*!50003 SET @saved_sql_mode = @@sql_mode */ ; +/*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; +DELIMITER ;; +CREATE DEFINER=`root`@`%` PROCEDURE `__weekly_sales_new`(v_wh SMALLINT, v_date_ini DATETIME, v_date_end DATETIME) +BEGIN + IF v_date_end IS NULL THEN + SET v_date_end = v_date_ini; + END IF; + + SET v_date_end = TIMESTAMPADD(DAY, 1, v_date_end); + + CREATE TEMPORARY TABLE weekly_ticket + (INDEX idx USING HASH (Id_Ticket)) + ENGINE = MEMORY + SELECT Id_Ticket, to_weeks (DATE(Fecha)) week, warehouse_id + FROM Tickets t + JOIN warehouse w ON w.id = t.warehouse_id + WHERE Fecha >= v_date_ini AND Fecha < v_date_end + AND Id_Cliente NOT IN (400, 200) + AND NOT w.fuente + AND v_wh IN (t.warehouse_id, 0); + + CREATE TEMPORARY TABLE weekly_sales + ENGINE = MEMORY + SELECT week, warehouse_id, a.Id_Article item_id, SUM(Cantidad) AS amount, + SUM(Cantidad * Preu * (100 - Descuento) / 100) AS price + FROM Movimientos m + JOIN weekly_ticket t USING (Id_Ticket) + JOIN Articles a USING (Id_Article) + INNER JOIN Tipos USING (tipo_id) + WHERE reino_id != 6 + GROUP BY week, warehouse_id, item_id; + + DROP TEMPORARY TABLE weekly_ticket; +END ;; +DELIMITER ; +/*!50003 SET sql_mode = @saved_sql_mode */ ; +/*!50003 SET character_set_client = @saved_cs_client */ ; +/*!50003 SET character_set_results = @saved_cs_results */ ; +/*!50003 SET collation_connection = @saved_col_connection */ ; -- -- Current Database: `vncontrol` @@ -81500,62 +83820,58 @@ CREATE TABLE `inter` ( CONSTRAINT `inter_ibfk_1` FOREIGN KEY (`Id_Ticket`) REFERENCES `vn2008`.`Tickets` (`Id_Ticket`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `inter_state` FOREIGN KEY (`state_id`) REFERENCES `vn2008`.`state` (`id`) ON UPDATE CASCADE, CONSTRAINT `responsable` FOREIGN KEY (`Id_Supervisor`) REFERENCES `vn2008`.`Trabajadores` (`Id_Trabajador`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=17335550 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=18117378 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `interBeforeInsert` -BEFORE INSERT ON `inter` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticketTracking_beforeInsert` + BEFORE INSERT ON `inter` + FOR EACH ROW BEGIN +/* + -- PAK 08/05/18 Los tickets no se pueden marcar como servidos en el futuro - /* PAK 08/05/18 Los sacadores no deben de poner los tickets en revisión */ - /* - DECLARE vIsSacador BOOLEAN; + IF NEW.state_id = 16 AND (SELECT date(landed) FROM vn.ticket WHERE id = NEW.Id_Ticket) > CURDATE() THEN -- Entregado + SET NEW.state_id = 22; -- ¿ Fecha ? + END IF; +*//* + -- PAK 08/05/18 Los sacadores no deben de poner los tickets en revisión + + DECLARE vIsSacador BOOL; IF NEW.state_id = 6 THEN -- Revisión - - SELECT (COUNT(*) > 0) INTO vIsSacador + SELECT COUNT(*) > 0 INTO vIsSacador FROM inter WHERE state_id = 5 -- Preparacion AND Id_Trabajador = NEW.Id_Trabajador - AND Id_Ticket = NEW.Id_Ticket; - + AND Id_Ticket = NEW.Id_Ticket; + IF vIsSacador THEN - SET NEW.state_id = 5; - - END IF; - - END IF; - */ - /* PAK 08/05/18 Los tickets no se pueden marcar como servidos en el futuro */ - IF NEW.state_id = 16 AND (SELECT date(landed) FROM vn.ticket WHERE id = NEW.Id_Ticket) > CURDATE() THEN -- Entregado - - SET NEW.state_id = 22; -- ¿ Fecha ? - - END IF; - - /* 08/05/18 PAK Este código parece fósil. Lo comento. + END IF; + END IF; +*//* + -- PAK 08/05/18 Este código parece fósil. Lo comento. DECLARE contados INT; DECLARE vSupervisor INT; - SELECT Id_Trabajador INTO vSupervisor FROM vn2008.Trabajadores WHERE user_id = account.userGetId(); + SELECT Id_Trabajador INTO vSupervisor + FROM vn2008.Trabajadores WHERE user_id = account.userGetId(); SET NEW.Id_Supervisor = IFNULL(vSupervisor,20); - IF NEW.state_id = 5 -- Preparación - THEN - SELECT count(Id_Ticket) INTO contados + IF NEW.state_id = 5 THEN -- Preparación + SELECT COUNT(Id_Ticket) INTO contados FROM vncontrol.inter - WHERE state_id = 5 + WHERE state_id = 5 AND Id_Ticket = NEW.Id_Ticket AND IFNULL(Id_Supervisor,-1) <> vSupervisor AND TIMESTAMPADD(SECOND, 60, odbc_date) >= NOW(); @@ -81564,8 +83880,7 @@ BEGIN CALL util.throw ('FALLO_AL_INSERTAR'); END IF; END IF; - */ - +*/ END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81575,17 +83890,20 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`interAfterInsert` -AFTER INSERT ON `inter` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `ticketTracking_afterInsert` + AFTER INSERT ON `inter` + FOR EACH ROW BEGIN - REPLACE vn2008.Tickets_state(Id_Ticket, inter_id,state_name) - SELECT NEW.Id_Ticket, NEW.inter_id, s.`name` FROM vn2008.state s WHERE s.id = NEW.state_id; + REPLACE vn2008.Tickets_state(Id_Ticket, inter_id, state_name) + SELECT NEW.Id_Ticket, NEW.inter_id, `name` + FROM vn2008.state + WHERE id = NEW.state_id; END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81595,33 +83913,36 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`interAfterUpdate` -AFTER UPDATE ON `inter` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterUpdate` + AFTER UPDATE ON `inter` + FOR EACH ROW BEGIN DECLARE intIdTicket INT; DECLARE intInterId INT; DECLARE strName VARCHAR(15); - IF (NEW.state_id <> OLD.state_id) THEN + IF NEW.state_id <> OLD.state_id THEN REPLACE INTO vn2008.Tickets_state(Id_Ticket, inter_id,state_name) SELECT NEW.Id_Ticket, NEW.inter_id, s.`name` - FROM vn2008.state s WHERE s.id = NEW.state_id; + FROM vn2008.state s + WHERE s.id = NEW.state_id; END IF; - IF (NEW.Id_Ticket <> OLD.Id_Ticket) THEN - + + IF NEW.Id_Ticket <> OLD.Id_Ticket THEN SELECT i.Id_Ticket, i.inter_id, s.`name` - INTO intIdTicket, intInterId, strName + INTO intIdTicket, intInterId, strName FROM vncontrol.inter i JOIN vn2008.state s ON i.state_id = s.id WHERE Id_Ticket = NEW.Id_Ticket ORDER BY odbc_date DESC LIMIT 1; + IF intIdTicket > 0 THEN REPLACE INTO vn2008.Tickets_state(Id_Ticket, inter_id,state_name) VALUES(intIdTicket, intInterId, strName); @@ -81636,14 +83957,15 @@ DELIMITER ; /*!50003 SET @saved_cs_client = @@character_set_client */ ; /*!50003 SET @saved_cs_results = @@character_set_results */ ; /*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; +/*!50003 SET character_set_client = utf8mb4 */ ; +/*!50003 SET character_set_results = utf8mb4 */ ; +/*!50003 SET collation_connection = utf8mb4_general_ci */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; -/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`interAfterDelete` -AFTER DELETE ON `inter` FOR EACH ROW +/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`%`*/ /*!50003 TRIGGER `vncontrol`.`ticketTracking_afterDelete` + AFTER DELETE ON `inter` + FOR EACH ROW BEGIN DECLARE intIdTicket INT; DECLARE intInterId INT; @@ -81656,7 +83978,6 @@ BEGIN END; IF OLD.odbc_date > TIMESTAMPADD(WEEK, -1, CURDATE()) THEN - SELECT i.Id_Ticket, i.inter_id, s.`name` INTO intIdTicket, intInterId, strName FROM vncontrol.inter i @@ -81669,9 +83990,7 @@ BEGIN REPLACE INTO vn2008.Tickets_state(Id_Ticket, inter_id,state_name) VALUES (intIdTicket, intInterId, strName); END IF; - END IF; - END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; @@ -81713,24 +84032,6 @@ DELIMITER ; USE `account`; --- --- Final view structure for view `__accountPam` --- - -/*!50001 DROP VIEW IF EXISTS `__accountPam`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `__accountPam` AS select `u`.`name` AS `name`,`u`.`password` AS `password` from (`user` `u` join `account` `a` on((`u`.`id` = `a`.`id`))) where (`u`.`active` <> 0) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `accountDovecot` -- @@ -82134,24 +84435,6 @@ USE `cache`; USE `edi`; --- --- Final view structure for view `__ekt` --- - -/*!50001 DROP VIEW IF EXISTS `__ekt`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8mb4 */; -/*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `__ekt` AS select `t`.`id` AS `id`,`t`.`barcode` AS `barcode`,`t`.`entry_year` AS `entryYear`,`t`.`delivery_number` AS `deliveryNumber`,`t`.`fec` AS `fec`,`t`.`hor` AS `hor`,`t`.`now` AS `now`,`t`.`ptj` AS `ptj`,`t`.`ref` AS `ref`,`t`.`item` AS `item`,`t`.`pac` AS `pac`,`t`.`qty` AS `qty`,`t`.`ori` AS `ori`,`t`.`cat` AS `cat`,`t`.`agj` AS `agj`,`t`.`kop` AS `kop`,`t`.`ptd` AS `ptd`,`t`.`sub` AS `sub`,`t`.`pro` AS `pro`,`t`.`pri` AS `pri`,`t`.`package` AS `package`,`t`.`auction` AS `auction`,`t`.`klo` AS `klo`,`t`.`k01` AS `k1`,`t`.`k02` AS `k2`,`t`.`k03` AS `k3`,`t`.`k04` AS `k4`,`t`.`s1` AS `s1`,`t`.`s2` AS `s2`,`t`.`s3` AS `s3`,`t`.`s4` AS `s4`,`t`.`s5` AS `s5`,`t`.`s6` AS `s6`,`t`.`ok` AS `ok`,`t`.`trolley_id` AS `trolleyFk`,`t`.`putOrderFk` AS `putOrderFk`,`t`.`scanned` AS `scanned` from `vn2008`.`buy_edi` `t` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `supplyOffer` -- @@ -82342,24 +84625,6 @@ USE `hedera`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `myOrderMyTicket` --- - -/*!50001 DROP VIEW IF EXISTS `myOrderMyTicket`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `myOrderMyTicket` AS select `o`.`id` AS `orderFk`,`ot`.`ticketFk` AS `ticketFk` from (`hedera`.`myOrder` `o` join `hedera`.`orderTicket` `ot` on((`ot`.`orderFk` = `o`.`id`))) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `myOrderRow` -- @@ -82379,6 +84644,24 @@ USE `hedera`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; +-- +-- Final view structure for view `myOrderTicket` +-- + +/*!50001 DROP VIEW IF EXISTS `myOrderTicket`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `myOrderTicket` AS select `o`.`id` AS `orderFk`,`ot`.`ticketFk` AS `ticketFk` from (`hedera`.`myOrder` `o` join `hedera`.`orderTicket` `ot` on((`ot`.`orderFk` = `o`.`id`))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `myTicket` -- @@ -82618,10 +84901,10 @@ USE `pbx`; /*!50001 SET @saved_col_connection = @@collation_connection */; /*!50001 SET character_set_client = utf8mb4 */; /*!50001 SET character_set_results = utf8mb4 */; -/*!50001 SET collation_connection = utf8mb4_unicode_ci */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,NULL AS `callbackextension`,`s`.`secret` AS `secret`,`s`.`caller_id` AS `callerid`,`c`.`host` AS `host`,`c`.`deny` AS `deny`,`c`.`permit` AS `permit`,`c`.`type` AS `type`,`c`.`context` AS `context`,`c`.`incomingLimit` AS `incominglimit`,`c`.`pickupGroup` AS `pickupgroup`,`c`.`careInvite` AS `careinvite`,`c`.`insecure` AS `insecure`,`r`.`ipAddr` AS `ipaddr`,`r`.`regSeconds` AS `regseconds`,`r`.`port` AS `port`,`r`.`defaultUser` AS `defaultuser`,`r`.`userAgent` AS `useragent`,`r`.`lastMs` AS `lastms`,`r`.`fullContact` AS `fullcontact`,`r`.`regServer` AS `regserver` from ((`sip` `s` left join `sipReg` `r` on((`s`.`user_id` = `r`.`userId`))) join `sipConfig` `c`) */; +/*!50001 VIEW `sipConf` AS select `s`.`user_id` AS `id`,`s`.`extension` AS `name`,NULL AS `callbackextension`,`s`.`md5Secret` AS `md5secret`,`u`.`nickname` AS `callerid`,`c`.`host` AS `host`,`c`.`deny` AS `deny`,`c`.`permit` AS `permit`,`c`.`type` AS `type`,`c`.`context` AS `context`,`c`.`incomingLimit` AS `incominglimit`,`c`.`pickupGroup` AS `pickupgroup`,`c`.`careInvite` AS `careinvite`,`c`.`insecure` AS `insecure`,`r`.`ipAddr` AS `ipaddr`,`r`.`regSeconds` AS `regseconds`,`r`.`port` AS `port`,`r`.`defaultUser` AS `defaultuser`,`r`.`userAgent` AS `useragent`,`r`.`lastMs` AS `lastms`,`r`.`fullContact` AS `fullcontact`,`r`.`regServer` AS `regserver` from (((`pbx`.`sip` `s` join `account`.`user` `u` on((`u`.`id` = `s`.`user_id`))) left join `pbx`.`sipReg` `r` on((`s`.`user_id` = `r`.`userId`))) join `pbx`.`sipConfig` `c`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -82872,24 +85155,6 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `agencyHour` --- - -/*!50001 DROP VIEW IF EXISTS `agencyHour`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `agencyHour` AS select `h`.`agency_hour_id` AS `id`,`h`.`agency_id` AS `agencyFk`,`h`.`week_day` AS `weekDay`,`h`.`warehouse_id` AS `warehouseFk`,`h`.`province_id` AS `provinceFk`,`h`.`subtract_day` AS `substractDay`,`h`.`max_hour` AS `maxHour` from `vn2008`.`agency_hour` `h` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `agencyMode` -- @@ -82962,24 +85227,6 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `agencyWeekDayBonus` --- - -/*!50001 DROP VIEW IF EXISTS `agencyWeekDayBonus`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `agencyWeekDayBonus` AS select `a`.`id` AS `id`,`a`.`warehouse_id` AS `warehouseFk`,`a`.`agency_id` AS `agencyFk`,`a`.`weekDay` AS `weekDay`,`a`.`zona` AS `zone`,`a`.`bonus` AS `bonus` from `vn2008`.`agency_weekday_bonus` `a` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `annualAverageInvoiced` -- @@ -83659,7 +85906,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `country` AS select `p`.`Id` AS `id`,`p`.`Pais` AS `country`,`p`.`CEE` AS `CEE`,`p`.`isUeeMember` AS `isUeeMember`,`p`.`Codigo` AS `code`,`p`.`Id_Moneda` AS `currencyFk`,`p`.`Id_Paisreal` AS `politicalCountryFk`,`p`.`geoFk` AS `geoFk` from `vn2008`.`Paises` `p` */; +/*!50001 VIEW `country` AS select `p`.`Id` AS `id`,`p`.`Pais` AS `country`,`p`.`CEE` AS `CEE`,`p`.`isUeeMember` AS `isUeeMember`,`p`.`Codigo` AS `code`,`p`.`Id_Moneda` AS `currencyFk`,`p`.`Id_Paisreal` AS `politicalCountryFk`,`p`.`geoFk` AS `geoFk`,`p`.`hasDailyInvoice` AS `hasDailyInvoice` from `vn2008`.`Paises` `p` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -83731,7 +85978,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `department` AS select `b`.`department_id` AS `id`,`b`.`name` AS `name`,`b`.`father_id` AS `fatherFk`,`b`.`production` AS `isProduction`,`b`.`lft` AS `lft`,`b`.`rgt` AS `rgt`,`b`.`isSelected` AS `isSelected`,`b`.`depth` AS `depth`,`b`.`sons` AS `sons` from `vn2008`.`department` `b` */; +/*!50001 VIEW `department` AS select `b`.`department_id` AS `id`,`b`.`name` AS `name`,`b`.`production` AS `isProduction`,`b`.`lft` AS `lft`,`b`.`rgt` AS `rgt`,`b`.`isSelected` AS `isSelected`,`b`.`depth` AS `depth`,`b`.`sons` AS `sons` from `vn2008`.`department` `b` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -84595,7 +86842,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `itemShelvingAvailable` AS select `s`.`id` AS `saleFk`,`tst`.`updated` AS `Modificado`,`s`.`ticketFk` AS `ticketFk`,`stk`.`isChecked` AS `isPicked`,`s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`i`.`size` AS `size`,`st`.`name` AS `Estado`,`st`.`sectorProdPriority` AS `sectorProdPriority`,`its`.`available` AS `available`,`pk`.`sectorFk` AS `sectorFk`,`sh`.`code` AS `matricula`,`pk`.`id` AS `parking`,`its`.`id` AS `itemShelving`,`am`.`name` AS `Agency`,`t`.`shipped` AS `shipped`,`its`.`grouping` AS `grouping`,`its`.`packing` AS `packing` from ((((((((((`vn`.`sale` `s` join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `vn`.`ticketStateToday` `tst` on((`tst`.`ticket` = `t`.`id`))) join `vn`.`state` `st` on((`st`.`id` = `tst`.`state`))) join `vn`.`item` `i` on((`i`.`id` = `s`.`itemFk`))) join `vn`.`itemShelving` `its` on((`its`.`itemFk` = `s`.`itemFk`))) join `vn`.`shelving` `sh` on((`sh`.`code` = `its`.`shelvingFk`))) join `vn`.`parking` `pk` on((`pk`.`id` = `sh`.`parkingFk`))) join `vn`.`sector` `sc` on(((`sc`.`id` = `pk`.`sectorFk`) and (`sc`.`warehouseFk` = `t`.`warehouseFk`)))) left join `vn`.`saleTracking` `stk` on(((`stk`.`saleFk` = `s`.`id`) and (`stk`.`stateFk` = 26)))) where ((`t`.`shipped` between `util`.`yesterday`() and `util`.`dayend`(curdate())) and (`its`.`available` > 0) and (`sh`.`code` <> 'FUE') and (`its`.`grouping` <= `s`.`quantity`) and `st`.`sectorProdPriority`) */; +/*!50001 VIEW `itemShelvingAvailable` AS select `s`.`id` AS `saleFk`,`tst`.`updated` AS `Modificado`,`s`.`ticketFk` AS `ticketFk`,`stk`.`isChecked` AS `isPicked`,`s`.`itemFk` AS `itemFk`,`s`.`quantity` AS `quantity`,`s`.`concept` AS `concept`,`i`.`size` AS `size`,`st`.`name` AS `Estado`,`st`.`sectorProdPriority` AS `sectorProdPriority`,`its`.`available` AS `available`,`pk`.`sectorFk` AS `sectorFk`,`sh`.`code` AS `matricula`,`pk`.`id` AS `parking`,`its`.`id` AS `itemShelving`,`am`.`name` AS `Agency`,`t`.`shipped` AS `shipped`,`its`.`grouping` AS `grouping`,`its`.`packing` AS `packing`,`z`.`hour` AS `hour` from (((((((((((`vn`.`sale` `s` join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `vn`.`ticketStateToday` `tst` on((`tst`.`ticket` = `t`.`id`))) join `vn`.`state` `st` on((`st`.`id` = `tst`.`state`))) join `vn`.`item` `i` on((`i`.`id` = `s`.`itemFk`))) join `vn`.`itemShelving` `its` on((`its`.`itemFk` = `s`.`itemFk`))) join `vn`.`shelving` `sh` on((`sh`.`code` = `its`.`shelvingFk`))) join `vn`.`parking` `pk` on((`pk`.`id` = `sh`.`parkingFk`))) join `vn`.`sector` `sc` on(((`sc`.`id` = `pk`.`sectorFk`) and (`sc`.`warehouseFk` = `t`.`warehouseFk`)))) left join `vn`.`saleTracking` `stk` on(((`stk`.`saleFk` = `s`.`id`) and (`stk`.`stateFk` = 26)))) left join `vn`.`zone` `z` on((`z`.`id` = `t`.`zoneFk`))) where ((`t`.`shipped` between `util`.`yesterday`() and `util`.`dayend`(curdate())) and (`its`.`available` > 0) and (`sh`.`code` <> 'FUE') and (`its`.`grouping` <= `s`.`quantity`) and `st`.`sectorProdPriority`) */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -84806,12 +87053,12 @@ USE `vn`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `mail` AS select `vn2008`.`mail`.`id` AS `id`,`vn2008`.`mail`.`senderFk` AS `senderFk`,`vn2008`.`mail`.`recipientFk` AS `recipientFk`,`vn2008`.`mail`.`to` AS `sender`,`vn2008`.`mail`.`reply_to` AS `replyTo`,`vn2008`.`mail`.`subject` AS `subject`,`vn2008`.`mail`.`text` AS `body`,`vn2008`.`mail`.`plainTextBody` AS `plainTextBody`,`vn2008`.`mail`.`path` AS `attachment`,`vn2008`.`mail`.`DATE_ODBC` AS `creationDate`,`vn2008`.`mail`.`sent` AS `sent`,`vn2008`.`mail`.`error` AS `status` from `vn2008`.`mail` */; +/*!50001 VIEW `mail` AS select `m`.`id` AS `id`,`m`.`senderFk` AS `senderFk`,`m`.`recipientFk` AS `recipientFk`,`m`.`to` AS `sender`,`m`.`reply_to` AS `replyTo`,`m`.`subject` AS `subject`,`m`.`text` AS `body`,`m`.`plainTextBody` AS `plainTextBody`,`m`.`path` AS `attachment`,`m`.`DATE_ODBC` AS `creationDate`,`m`.`sent` AS `sent`,`m`.`error` AS `status` from `vn2008`.`mail` `m` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -85140,24 +87387,6 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `preparationPercentage` --- - -/*!50001 DROP VIEW IF EXISTS `preparationPercentage`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `preparationPercentage` AS select `p`.`week_day` AS `weekDay`,`p`.`warehouse_id` AS `warehouseFk`,`p`.`percentage` AS `percentage` from `vn2008`.`preparation_percentage` `p` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `priceBuilderDistinctTags` -- @@ -85302,6 +87531,24 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; +-- +-- Final view structure for view `rate` +-- + +/*!50001 DROP VIEW IF EXISTS `rate`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `rate` AS select `r`.`tarifa_id` AS `id`,`r`.`fecha` AS `dated`,`r`.`warehouse_id` AS `warehouseFk`,`r`.`t0` AS `rate0`,`r`.`t1` AS `rate1`,`r`.`t2` AS `rate2`,`r`.`t3` AS `rate3` from `vn2008`.`tarifas` `r` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `receipt` -- @@ -85729,7 +87976,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticket` AS select `t`.`Id_Ticket` AS `id`,`t`.`Id_Cliente` AS `clientFk`,`t`.`warehouse_id` AS `warehouseFk`,`t`.`Fecha` AS `shipped`,`t`.`landing` AS `landed`,`t`.`Alias` AS `nickname`,`t`.`Factura` AS `refFk`,`t`.`Id_Consigna` AS `addressFk`,`t`.`Localizacion` AS `location`,`t`.`Solucion` AS `solution`,`t`.`Id_Ruta` AS `routeFk`,`t`.`empresa_id` AS `companyFk`,`t`.`Id_Agencia` AS `agencyModeFk`,`t`.`Prioridad` AS `priority`,`t`.`Bultos` AS `packages`,`t`.`isDeleted` AS `isDeleted`,`t`.`odbc_date` AS `created` from `vn2008`.`Tickets` `t` */; +/*!50001 VIEW `ticket` AS select `t`.`Id_Ticket` AS `id`,`t`.`Id_Cliente` AS `clientFk`,`t`.`warehouse_id` AS `warehouseFk`,`t`.`Fecha` AS `shipped`,`t`.`landing` AS `landed`,`t`.`Alias` AS `nickname`,`t`.`Factura` AS `refFk`,`t`.`Id_Consigna` AS `addressFk`,`t`.`Localizacion` AS `location`,`t`.`Solucion` AS `solution`,`t`.`Id_Ruta` AS `routeFk`,`t`.`empresa_id` AS `companyFk`,`t`.`Id_Agencia` AS `agencyModeFk`,`t`.`Prioridad` AS `priority`,`t`.`Bultos` AS `packages`,`t`.`isDeleted` AS `isDeleted`,`t`.`zoneFk` AS `zoneFk`,`t`.`odbc_date` AS `created` from `vn2008`.`Tickets` `t` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -85770,6 +88017,24 @@ USE `vn`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; +-- +-- Final view structure for view `ticketGetVolume` +-- + +/*!50001 DROP VIEW IF EXISTS `ticketGetVolume`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `ticketGetVolume` AS select `s`.`ticketFk` AS `ticketFk`,`t`.`routeFk` AS `routeFk`,`s`.`id` AS `saleFk`,`t`.`shipped` AS `shipped`,(((`s`.`quantity` * `r`.`cm3`) * `i`.`compression`) / 1000000) AS `volume` from (((`vn`.`sale` `s` join `vn`.`item` `i` on((`i`.`id` = `s`.`itemFk`))) join `vn`.`ticket` `t` on((`t`.`id` = `s`.`ticketFk`))) join `bi`.`rotacion` `r` on(((`r`.`Id_Article` = `s`.`itemFk`) and (`r`.`warehouse_id` = `t`.`warehouseFk`)))) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; + -- -- Final view structure for view `ticketNotInvoiced` -- @@ -85873,7 +88138,7 @@ USE `vn`; /*!50001 SET collation_connection = utf8_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `ticketToPrepare` AS select `m`.`Id_Ticket` AS `Id_Ticket`,`mk`.`Id_Movimiento` AS `Id_Movimiento`,`mk`.`Id_Movimiento_mark` AS `Id_Movimiento_mark`,`mk`.`Id_Trabajador` AS `Id_Trabjador`,`m`.`Id_Article` AS `Id_Article`,`m`.`Concepte` AS `Concepte`,`art`.`subName` AS `subName`,(`mk`.`original_quantity` - ifnull(`is`.`quantity`,0)) AS `Cantidad`,`mk`.`original_quantity` AS `original_quantity`,hour(`t`.`shipped`) AS `Hora`,hour(`t`.`shipped`) AS `Departure`,minute(`t`.`shipped`) AS `Minuto`,`am`.`agencyFk` AS `agency_id`,`t`.`warehouseFk` AS `warehouse_id`,`a`.`provinceFk` AS `province_id`,`is`.`quantity` AS `picked` from ((((((`vn2008`.`Movimientos_mark` `mk` join `vn2008`.`Movimientos` `m` on((`m`.`Id_Movimiento` = `mk`.`Id_Movimiento`))) join `vn`.`ticket` `t` on((`m`.`Id_Ticket` = `t`.`id`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `vn`.`address` `a` on((`a`.`id` = `t`.`addressFk`))) left join `vn`.`itemShelvingSale` `is` on((`is`.`saleFk` = `mk`.`Id_Movimiento`))) join `vn2008`.`Articles` `art` on((`art`.`Id_Article` = `m`.`Id_Article`))) where ((`mk`.`stateFk` = 26) and (`mk`.`valor` <> 1) and (`t`.`warehouseFk` = 1)) group by `mk`.`Id_Movimiento_mark` */; +/*!50001 VIEW `ticketToPrepare` AS select `m`.`Id_Ticket` AS `Id_Ticket`,`mk`.`Id_Movimiento` AS `Id_Movimiento`,`mk`.`Id_Movimiento_mark` AS `Id_Movimiento_mark`,`mk`.`Id_Trabajador` AS `Id_Trabjador`,`m`.`Id_Article` AS `Id_Article`,`m`.`Concepte` AS `Concepte`,`art`.`subName` AS `subName`,(`mk`.`original_quantity` - ifnull(`is`.`quantity`,0)) AS `Cantidad`,`mk`.`original_quantity` AS `original_quantity`,if(hour(`t`.`shipped`),hour(`t`.`shipped`),hour(`z`.`hour`)) AS `Hora`,hour(`t`.`shipped`) AS `Departure`,minute(`t`.`shipped`) AS `Minuto`,`am`.`agencyFk` AS `agency_id`,`t`.`warehouseFk` AS `warehouse_id`,`a`.`provinceFk` AS `province_id`,`is`.`quantity` AS `picked`,`t`.`zoneFk` AS `zoneFk` from (((((((`vn2008`.`Movimientos_mark` `mk` join `vn2008`.`Movimientos` `m` on((`m`.`Id_Movimiento` = `mk`.`Id_Movimiento`))) join `vn`.`ticket` `t` on((`m`.`Id_Ticket` = `t`.`id`))) join `vn`.`agencyMode` `am` on((`am`.`id` = `t`.`agencyModeFk`))) join `vn`.`address` `a` on((`a`.`id` = `t`.`addressFk`))) left join `vn`.`itemShelvingSale` `is` on((`is`.`saleFk` = `mk`.`Id_Movimiento`))) join `vn2008`.`Articles` `art` on((`art`.`Id_Article` = `m`.`Id_Article`))) left join `vn`.`zone` `z` on((`z`.`id` = `t`.`zoneFk`))) where ((`mk`.`stateFk` = 26) and (`mk`.`valor` <> 1) and (`t`.`warehouseFk` = 1)) group by `mk`.`Id_Movimiento_mark` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -87270,24 +89535,6 @@ USE `vn2008`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `v_descuadre_portekk` --- - -/*!50001 DROP VIEW IF EXISTS `v_descuadre_portekk`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `v_descuadre_portekk` AS select `t`.`Id_Ticket` AS `Id_Ticket`,round(sum((`mc`.`Valor` * `m`.`Cantidad`)),2) AS `suma_componente`,round(`es`.`shipping_charge`,2) AS `teorico_agencia`,round((sum((`mc`.`Valor` * `m`.`Cantidad`)) - `es`.`shipping_charge`),2) AS `diferencia`,`t`.`Fecha` AS `Fecha` from ((((`vn2008`.`Movimientos` `m` left join `vn2008`.`Movimientos_componentes` `mc` on((`m`.`Id_Movimiento` = `mc`.`Id_Movimiento`))) join `vn2008`.`tarifa_componentes` `tc` on(((`tc`.`Id_Componente` = `mc`.`Id_Componente`) and (`tc`.`tarifa_componentes_series_id` = 6)))) join `vn2008`.`Tickets` `t` on((`t`.`Id_Ticket` = `m`.`Id_Ticket`))) left join `vn2008`.`v_expeditions_shipping_chargekk` `es` on((`es`.`Id_Ticket` = `t`.`Id_Ticket`))) where ((`t`.`Fecha` >= '2015-09-01') and (`t`.`empresa_id` in (442,791,567))) group by `t`.`Id_Ticket` having ((abs(`diferencia`) > 0.01) or isnull(`diferencia`)) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `v_empresa` -- @@ -87378,24 +89625,6 @@ USE `vn2008`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `v_expeditions_shipping_chargekk` --- - -/*!50001 DROP VIEW IF EXISTS `v_expeditions_shipping_chargekk`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `v_expeditions_shipping_chargekk` AS select `t`.`Id_Ticket` AS `Id_Ticket`,sum(`az`.`price`) AS `shipping_charge`,`t`.`Fecha` AS `Fecha` from ((((((`Tickets` `t` join `Clientes` `cli` on((`cli`.`id_cliente` = `t`.`Id_Cliente`))) left join `expeditions` `e` on((`e`.`ticket_id` = `t`.`Id_Ticket`))) join `Consignatarios` `c` on((`c`.`id_consigna` = `t`.`Id_Consigna`))) join `Agencias` `a` on((`a`.`Id_Agencia` = `t`.`Id_Agencia`))) join `Agencias_province` `ap` on(((`t`.`warehouse_id` = `ap`.`warehouse_id`) and (`ap`.`province_id` = `c`.`province_id`) and (`ap`.`agency_id` = `a`.`agency_id`)))) join `Agencias_zonas` `az` on(((`az`.`Id_Agencia` = `t`.`Id_Agencia`) and (`az`.`zona` = `ap`.`zona`) and (`t`.`warehouse_id` = `az`.`warehouse_id`) and (`az`.`Id_Article` = `e`.`EsBulto`)))) where ((`t`.`Fecha` >= '2015-10-01') and (`cli`.`real` <> 0) and (`t`.`empresa_id` in (442,791,567))) group by `t`.`Id_Ticket` */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `v_fallo` -- @@ -87522,24 +89751,6 @@ USE `vn2008`; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; --- --- Final view structure for view `v_pedidos_auto_preparadosKk` --- - -/*!50001 DROP VIEW IF EXISTS `v_pedidos_auto_preparadosKk`*/; -/*!50001 SET @saved_cs_client = @@character_set_client */; -/*!50001 SET @saved_cs_results = @@character_set_results */; -/*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; -/*!50001 CREATE ALGORITHM=UNDEFINED */ -/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `v_pedidos_auto_preparadosKk` AS select `t`.`CodigoTrabajador` AS `CodigoTrabajador`,`i`.`Id_Ticket` AS `Id_Ticket`,`i`.`odbc_date` AS `Momento` from ((`vn2008`.`v_jerarquia` `j` left join `vn2008`.`v_inter` `i` on((`j`.`Id_Trabajador` = `i`.`Id_Trabajador`))) join `vn2008`.`Trabajadores` `t` on((`t`.`Id_Trabajador` = `j`.`Id_Trabajador`))) where (`i`.`state_id` = 20) */; -/*!50001 SET character_set_client = @saved_cs_client */; -/*!50001 SET character_set_results = @saved_cs_results */; -/*!50001 SET collation_connection = @saved_col_connection */; - -- -- Final view structure for view `v_phonebook` -- @@ -87656,12 +89867,12 @@ USE `vn2008`; /*!50001 SET @saved_cs_client = @@character_set_client */; /*!50001 SET @saved_cs_results = @@character_set_results */; /*!50001 SET @saved_col_connection = @@collation_connection */; -/*!50001 SET character_set_client = utf8 */; -/*!50001 SET character_set_results = utf8 */; -/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 SET character_set_client = utf8mb4 */; +/*!50001 SET character_set_results = utf8mb4 */; +/*!50001 SET collation_connection = utf8mb4_general_ci */; /*!50001 CREATE ALGORITHM=UNDEFINED */ /*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */ -/*!50001 VIEW `v_user` AS select `u`.`id` AS `id`,`u`.`role` AS `mysql_user_id`,`u`.`name` AS `name`,`u`.`password` AS `password`,`u`.`active` AS `active` from `account`.`user` `u` */; +/*!50001 VIEW `v_user` AS select `u`.`id` AS `id`,abs(`u`.`role`) AS `mysql_user_id`,`u`.`name` AS `name`,'' AS `password`,abs(`u`.`active`) AS `active` from `account`.`user` `u` */; /*!50001 SET character_set_client = @saved_cs_client */; /*!50001 SET character_set_results = @saved_cs_results */; /*!50001 SET collation_connection = @saved_col_connection */; @@ -87879,4 +90090,4 @@ USE `vncontrol`; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2019-05-30 12:39:47 +-- Dump completed on 2019-07-04 11:10:28 diff --git a/db/export-data.sh b/db/export-data.sh index a853d48f7..75eea89fd 100755 --- a/db/export-data.sh +++ b/db/export-data.sh @@ -50,7 +50,6 @@ TABLES=( accion_dits bionic_updating_options businessReasonEnd - cl_est cl_con cl_res cl_dev diff --git a/db/tests/cache/last_buy_refresh.spec.js b/db/tests/cache/last_buy_refresh.spec.js index e6203a00a..485c725bb 100644 --- a/db/tests/cache/last_buy_refresh.spec.js +++ b/db/tests/cache/last_buy_refresh.spec.js @@ -20,21 +20,27 @@ describe('last_buy_refresh()', () => { let lastBuyTable = result[lastBuyTableIndex]; - expect(lastBuyTable.length).toEqual(4); + expect(lastBuyTable.length).toEqual(6); expect(lastBuyTable[0].item_id).toEqual(1); expect(lastBuyTable[1].item_id).toEqual(2); expect(lastBuyTable[2].item_id).toEqual(3); expect(lastBuyTable[3].item_id).toEqual(4); + expect(lastBuyTable[4].item_id).toEqual(8); + expect(lastBuyTable[5].item_id).toEqual(9); expect(lastBuyTable[0].warehouse_id).toEqual(1); expect(lastBuyTable[1].warehouse_id).toEqual(1); expect(lastBuyTable[2].warehouse_id).toEqual(1); expect(lastBuyTable[3].warehouse_id).toEqual(1); + expect(lastBuyTable[4].warehouse_id).toEqual(1); + expect(lastBuyTable[5].warehouse_id).toEqual(1); expect(lastBuyTable[1].buy_id).toEqual(4); expect(lastBuyTable[0].buy_id).toEqual(3); expect(lastBuyTable[2].buy_id).toEqual(5); - expect(lastBuyTable[3].buy_id).toEqual(6); + expect(lastBuyTable[3].buy_id).toEqual(8); + expect(lastBuyTable[4].buy_id).toEqual(6); + expect(lastBuyTable[5].buy_id).toEqual(7); }); }); diff --git a/db/tests/vn/buyUltimate.spec.js b/db/tests/vn/buyUltimate.spec.js index 4ff6c4708..8a5e6a3df 100644 --- a/db/tests/vn/buyUltimate.spec.js +++ b/db/tests/vn/buyUltimate.spec.js @@ -29,21 +29,27 @@ describe('buyUltimate()', () => { let buyUltimateTable = result[buyUltimateTableIndex]; - expect(buyUltimateTable.length).toEqual(4); + expect(buyUltimateTable.length).toEqual(6); expect(buyUltimateTable[0].itemFk).toEqual(1); expect(buyUltimateTable[1].itemFk).toEqual(2); expect(buyUltimateTable[2].itemFk).toEqual(3); expect(buyUltimateTable[3].itemFk).toEqual(4); + expect(buyUltimateTable[4].itemFk).toEqual(8); + expect(buyUltimateTable[5].itemFk).toEqual(9); expect(buyUltimateTable[0].warehouseFk).toEqual(1); expect(buyUltimateTable[1].warehouseFk).toEqual(1); expect(buyUltimateTable[2].warehouseFk).toEqual(1); expect(buyUltimateTable[3].warehouseFk).toEqual(1); + expect(buyUltimateTable[4].warehouseFk).toEqual(1); + expect(buyUltimateTable[5].warehouseFk).toEqual(1); expect(buyUltimateTable[1].buyFk).toEqual(4); expect(buyUltimateTable[0].buyFk).toEqual(3); expect(buyUltimateTable[2].buyFk).toEqual(5); - expect(buyUltimateTable[3].buyFk).toEqual(6); + expect(buyUltimateTable[3].buyFk).toEqual(8); + expect(buyUltimateTable[4].buyFk).toEqual(6); + expect(buyUltimateTable[5].buyFk).toEqual(7); }); }); diff --git a/db/tests/vn/ticketCalculateClon.spec.js b/db/tests/vn/ticketCalculateClon.spec.js index 0b3969f1f..4015d57db 100644 --- a/db/tests/vn/ticketCalculateClon.spec.js +++ b/db/tests/vn/ticketCalculateClon.spec.js @@ -86,18 +86,20 @@ describe('ticket ticketCalculateClon()', () => { stmt = new ParameterizedSQL('CALL vn.ticketCalculateClon(@result, ?)', [params.originalTicketId]); stmts.push(stmt); - - let orderIndex = stmts.push(`SELECT * FROM vn.orderTicket WHERE ticketFk = @result`) - 1; - stmts.push('ROLLBACK'); let sql = ParameterizedSQL.join(stmts, ';'); - let result = await app.models.Ticket.rawStmt(sql); - let expectedOrder = 11; - let newestTicketIdInFixtures = 21; + let error; - expect(result[orderIndex][0].orderFk).toEqual(expectedOrder); - expect(result[orderIndex][0].ticketFk).toBeGreaterThan(newestTicketIdInFixtures); + try { + await app.models.Ticket.rawStmt(sql); + } catch (e) { + error = e; + } + + expect(error).toBeDefined(); + expect(error.statusCode).toBe(500); + expect(error.code).toBe('ER_SIGNAL_EXCEPTION'); }); }); diff --git a/db/tests/vn/ticketCreateWithUser.spec.js b/db/tests/vn/ticketCreateWithUser.spec.js index e45d95f78..51ebfe000 100644 --- a/db/tests/vn/ticketCreateWithUser.spec.js +++ b/db/tests/vn/ticketCreateWithUser.spec.js @@ -14,8 +14,8 @@ describe('ticket ticketCreateWithUser()', () => { shipped: today, warehouseFk: 1, companyFk: 442, - addressFk: 1, - agencyModeFk: 2, + addressFk: 121, + agencyModeFk: 1, routeFk: null, landed: today, userId: 18 @@ -64,8 +64,8 @@ describe('ticket ticketCreateWithUser()', () => { shipped: today, warehouseFk: 1, companyFk: 442, - addressFk: 1, - agencyModeFk: 2, + addressFk: 121, + agencyModeFk: 1, routeFk: null, landed: today, userId: 18 @@ -91,7 +91,6 @@ describe('ticket ticketCreateWithUser()', () => { let sql = ParameterizedSQL.join(stmts, ';'); let result = await app.models.Ticket.rawStmt(sql); - let firstTicketObservation = result[ticketObsevationsIndex][0]; let secondTicketObservation = result[ticketObsevationsIndex][1]; let thirdTicketObservation = result[ticketObsevationsIndex][2]; @@ -116,7 +115,7 @@ describe('ticket ticketCreateWithUser()', () => { warehouseFk: 1, companyFk: 442, addressFk: 0, - agencyModeFk: 2, + agencyModeFk: 1, routeFk: null, landed: today, userId: 18 @@ -162,8 +161,8 @@ describe('ticket ticketCreateWithUser()', () => { shipped: today, warehouseFk: 1, companyFk: 442, - addressFk: 0, - agencyModeFk: 2, + addressFk: 121, + agencyModeFk: 1, routeFk: null, landed: today, userId: 18 @@ -186,7 +185,7 @@ describe('ticket ticketCreateWithUser()', () => { params.userId ]); stmts.push(stmt); - + stmts.push(`select @newTicketId`); let ticketStateCodeIndex = stmts.push(`SELECT code FROM vn.ticketState WHERE ticketFk = @newTicketId`) - 1; stmts.push('ROLLBACK'); @@ -196,6 +195,6 @@ describe('ticket ticketCreateWithUser()', () => { let ticketStateCode = result[ticketStateCodeIndex][0].code; - expect(ticketStateCode).toEqual('DELIVERED'); + expect(ticketStateCode).toEqual('FREE'); }); }); diff --git a/e2e/dms/temp/file.txt b/e2e/dms/temp/file.txt new file mode 100644 index 000000000..5ef648a88 --- /dev/null +++ b/e2e/dms/temp/file.txt @@ -0,0 +1 @@ +It works! \ No newline at end of file diff --git a/e2e/helpers/config.js b/e2e/helpers/config.js index e5862d52c..8e5bda96c 100644 --- a/e2e/helpers/config.js +++ b/e2e/helpers/config.js @@ -1,3 +1,3 @@ -export default { +module.exports = { url: 'http://localhost:5000' }; diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js index b02bff31c..abdb637e3 100644 --- a/e2e/helpers/extensions.js +++ b/e2e/helpers/extensions.js @@ -93,8 +93,11 @@ let actions = { }, selectModule: function(moduleName, done) { + let snakeName = moduleName.replace(/[\w]([A-Z])/g, m => { + return m[0] + '-' + m[1]; + }).toLowerCase(); this.waitToClick(`vn-home a[ui-sref="${moduleName}.index"]`) - .waitForURL(moduleName) + .waitForURL(snakeName) .then(done) .catch(done); }, @@ -141,6 +144,7 @@ let actions = { waitToGetProperty: function(selector, property, done) { this.wait((selector, property) => { const element = document.querySelector(selector); + return element && element[property] != null && element[property] !== ''; }, selector, property) .getProperty(selector, property) @@ -161,10 +165,10 @@ let actions = { .catch(done); }, - waitToFocus: function(selector, done) { + focusElement: function(selector, done) { this.wait(selector) - .evaluate_now(selector => { - let element = document.querySelector(selector); + .evaluate_now(elemenetSelector => { + let element = document.querySelector(elemenetSelector); element.focus(); }, done, selector) .then(done) @@ -267,8 +271,8 @@ let actions = { waitForClassPresent: function(selector, className, done) { this.wait(selector) - .wait((selector, className) => { - if (document.querySelector(selector).classList.contains(className)) + .wait((elementSelector, targetClass) => { + if (document.querySelector(elementSelector).classList.contains(targetClass)) return true; }, selector, className) .then(done) @@ -395,7 +399,7 @@ let actions = { }, autocompleteSearch: function(autocompleteSelector, searchValue, done) { - this.wait(autocompleteSelector) + this.wait(`${autocompleteSelector} input`) .waitToClick(`${autocompleteSelector} input`) .write(`${autocompleteSelector} vn-drop-down input`, searchValue) .waitToClick(`${autocompleteSelector} li.active`) @@ -485,7 +489,14 @@ let actions = { }) .then(done) .catch(done); - } + }, + + waitForSpinnerLoad: function(done) { + let spinnerSelector = 'vn-spinner > div'; + this.waitForClassNotPresent(spinnerSelector, 'is-active') + .then(done) + .catch(done); + }, }; Object.keys(actions).forEach(function(name) { diff --git a/e2e/helpers/nightmare.js b/e2e/helpers/nightmare.js index 664af43c9..7b579eb08 100644 --- a/e2e/helpers/nightmare.js +++ b/e2e/helpers/nightmare.js @@ -1,6 +1,4 @@ -/* eslint no-console: 0 */ const Nightmare = require('nightmare'); - let nightmare; module.exports = function createNightmare(width = 1280, height = 720) { diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index 224c44b73..7586b1846 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -7,8 +7,9 @@ export default { clientsButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="client.index"]', itemsButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="item.index"]', ticketsButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="ticket.index"]', + invoiceOutButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="invoiceOut.index"]', claimsButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="claim.index"]', - returnToModuleIndexButton: `a[translate-attr="{title: 'Return to module index'}"]`, + returnToModuleIndexButton: 'a[ui-sref="order.index"]', userMenuButton: 'vn-topbar #user', userLocalWarehouse: 'vn-topbar vn-popover vn-autocomplete[field="$ctrl.localWarehouseFk"]', userLocalBank: 'vn-topbar vn-popover vn-autocomplete[field="$ctrl.localBankFk"]', @@ -18,7 +19,7 @@ export default { userConfigFirstAutocompleteClear: '#localWarehouse > div > div > div > vn-icon.clear', userConfigSecondAutocompleteClear: '#localBank > div > div > div > vn-icon.clear', userConfigThirdAutocompleteClear: '#localCompany > div > div > div > vn-icon.clear', - acceptVnConfirm: 'vn-confirm button[response=ACCEPT]' + acceptButton: 'vn-confirm button[response=ACCEPT]' }, clientsIndex: { searchClientInput: `${components.vnTextfield}`, @@ -32,7 +33,10 @@ export default { taxNumber: `${components.vnTextfield}[name="fi"]`, socialName: `${components.vnTextfield}[name="socialName"]`, street: `${components.vnTextfield}[name="street"]`, - city: `${components.vnTextfield}[name="city"]`, + postcode: `vn-autocomplete[field="$ctrl.client.postcode"]`, + city: `vn-autocomplete[field="$ctrl.client.city"]`, + province: `vn-autocomplete[field="$ctrl.client.provinceFk"]`, + country: `vn-autocomplete[field="$ctrl.client.countryFk"]`, userName: `${components.vnTextfield}[name="userName"]`, email: `${components.vnTextfield}[name="email"]`, salesPersonAutocomplete: `vn-autocomplete[field="$ctrl.client.salesPersonFk"]`, @@ -61,8 +65,8 @@ export default { equalizationTaxCheckbox: 'vn-check[label="Is equalizated"] md-checkbox', acceptPropagationButton: 'vn-client-fiscal-data > vn-confirm button[response=ACCEPT]', addressInput: `${components.vnTextfield}[name="street"]`, - cityInput: `${components.vnTextfield}[name="city"]`, - postcodeInput: `${components.vnTextfield}[name="postcode"]`, + postcodeAutocomplete: `vn-autocomplete[field="$ctrl.client.postcode"]`, + cityAutocomplete: `vn-autocomplete[field="$ctrl.client.city"]`, provinceAutocomplete: 'vn-autocomplete[field="$ctrl.client.provinceFk"]', countryAutocomplete: 'vn-autocomplete[field="$ctrl.client.countryFk"]', activeCheckbox: 'vn-check[label="Active"] md-checkbox', @@ -86,7 +90,7 @@ export default { newBankEntityButton: 'vn-client-billing-data vn-icon-button[vn-tooltip="New bank entity"] > button', newBankEntityName: 'vn-client-billing-data > vn-dialog vn-textfield[label="Name"] input', newBankEntityBIC: 'vn-client-billing-data > vn-dialog vn-textfield[label="Swift / BIC"] input', - newBankEntityCode: 'vn-client-billing-data > vn-dialog vn-textfield[label="Code"] input', + newBankEntityCode: 'vn-client-billing-data > vn-dialog vn-textfield[label="Entity Code"] input', acceptBankEntityButton: 'vn-client-billing-data > vn-dialog button[response="ACCEPT"]', saveButton: `${components.vnSubmit}` }, @@ -96,8 +100,8 @@ export default { defaultCheckboxInput: 'vn-check[label="Default"] md-checkbox', consigneeInput: `${components.vnTextfield}[name="nickname"]`, streetAddressInput: `${components.vnTextfield}[name="street"]`, - postcodeInput: `${components.vnTextfield}[name="postalCode"]`, - cityInput: `${components.vnTextfield}[name="city"]`, + postcodeAutocomplete: `vn-autocomplete[field="$ctrl.address.postalCode"]`, + cityAutocomplete: `vn-autocomplete[field="$ctrl.address.city"]`, provinceAutocomplete: 'vn-autocomplete[field="$ctrl.address.provinceFk"]', agencyAutocomplete: 'vn-autocomplete[field="$ctrl.address.agencyModeFk"]', phoneInput: `${components.vnTextfield}[name="phone"]`, @@ -112,7 +116,7 @@ export default { firstObservationDescriptionInput: 'vn-client-address-edit [name=observations] :nth-child(1) [model="observation.description"] input', secondObservationTypeAutocomplete: 'vn-client-address-edit [name=observations] :nth-child(2) [field="observation.observationTypeFk"]', secondObservationDescriptionInput: 'vn-client-address-edit [name=observations] :nth-child(2) [model="observation.description"] input', - addObservationButton: 'vn-client-address-edit vn-icon-button[icon="add_circle"]', + addObservationButton: 'vn-client-address-edit div[name="observations"] vn-icon-button[icon="add_circle"]', saveButton: `${components.vnSubmit}`, cancelCreateAddressButton: 'button[ui-sref="client.card.address.index"]', cancelEditAddressButton: 'vn-client-address-edit > form > vn-button-bar > vn-button > button' @@ -160,7 +164,7 @@ export default { balanceButton: 'vn-left-menu a[ui-sref="client.card.balance.index"]', companyAutocomplete: 'vn-client-balance-index vn-autocomplete[field="$ctrl.companyFk"]', newPaymentButton: `${components.vnFloatButton}`, - newPaymentBankInut: 'vn-client-balance-create vn-textfield[field="$ctrl.receipt.bankFk"] input', + newPaymentBank: 'vn-client-balance-create vn-autocomplete[field="$ctrl.receipt.bankFk"]', newPaymentAmountInput: 'vn-client-balance-create vn-input-number[field="$ctrl.receipt.amountPaid"] input', saveButton: 'vn-client-balance-create vn-button[label="Save"]', firstBalanceLine: 'vn-client-balance-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)' @@ -172,7 +176,6 @@ export default { }, itemsIndex: { searchIcon: 'vn-item-index vn-searchbar vn-icon[icon="search"]', - goBackToModuleIndexButton: 'vn-item-descriptor a[href="#!/item/index"]', createItemButton: `${components.vnFloatButton}`, searchResult: 'vn-item-index a.vn-tr', searchResultPreviewButton: 'vn-item-index .buttons > [icon="desktop_windows"]', @@ -207,6 +210,7 @@ export default { cancelButton: 'button[ui-sref="item.index"]' }, itemDescriptor: { + goBackToModuleIndexButton: 'vn-item-descriptor a[href="#!/item/index"]', moreMenu: 'vn-item-descriptor vn-icon-menu > div > vn-icon', moreMenuRegularizeButton: 'vn-item-descriptor vn-drop-down > vn-popover ul > li[name="Regularize stock"]', regularizeQuantityInput: 'vn-item-descriptor > vn-dialog > div > form > div.body > tpl-body > div > vn-textfield > div > div > div.infix > input', @@ -286,9 +290,9 @@ export default { barcode: 'vn-item-summary [name="barcode"]' }, itemDiary: { - thirdTicketId: 'vn-item-diary vn-tbody > vn-tr:nth-child(3) > vn-td:nth-child(2) > span', + secondTicketId: 'vn-item-diary vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(2) > span', firstBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(1) > vn-td.balance', - fifthBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(5) > vn-td.balance', + fourthBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(4) > vn-td.balance', warehouseAutocomplete: 'vn-item-diary vn-autocomplete[field="$ctrl.warehouseFk"]', }, itemLog: { @@ -296,24 +300,36 @@ export default { fifthLineCreatedProperty: 'vn-item-log > vn-log vn-tbody > vn-tr:nth-child(5) > vn-td > vn-one:nth-child(3) > div span:nth-child(3)', }, ticketSummary: { + header: 'vn-ticket-summary > vn-card > div > h5', + state: 'vn-ticket-summary vn-label-value[label="State"] > section > span', + route: 'vn-ticket-summary vn-label-value[label="Route"] > section > span', + total: 'vn-ticket-summary vn-one.taxes > p:nth-child(3) > strong', sale: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr', firstSaleItemId: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span', + firstSaleDescriptorImage: 'vn-ticket-summary vn-item-descriptor-popover > vn-popover vn-item-descriptor img', + itemDescriptorPopover: 'vn-ticket-summary vn-item-descriptor-popover > vn-popover', + itemDescriptorPopoverItemDiaryButton: 'vn-ticket-summary > vn-item-descriptor-popover a[href="#!/item/2/diary?warehouseFk=5&ticketFk=20"]', popoverDiaryButton: 'vn-ticket-summary vn-item-descriptor-popover vn-item-descriptor vn-icon[icon="icon-transaction"]', firstSaleQuantity: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3)', firstSaleDiscount: 'vn-ticket-summary [name="sales"] vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6)', - invoiceOutRef: 'vn-ticket-summary > vn-card > div > vn-horizontal > vn-one:nth-child(1) > vn-label-value:nth-child(6) > section > span' + invoiceOutRef: 'vn-ticket-summary > vn-card > div > vn-horizontal > vn-one:nth-child(1) > vn-label-value:nth-child(6) > section > span', + setOk: 'vn-ticket-summary vn-button[label="SET OK"] > button' }, ticketsIndex: { + openAdvancedSearchButton: 'vn-ticket-index vn-searchbar t-right-icons > vn-icon[icon="keyboard_arrow_down"]', + advancedSearchInvoiceOut: 'vn-ticket-index vn-searchbar vn-ticket-search-panel vn-textfield[model="filter.refFk"] input', newTicketButton: 'vn-ticket-index > a', searchResult: 'vn-ticket-index vn-card > div > vn-table > div > vn-tbody > a.vn-tr', searchResultDate: 'vn-ticket-index vn-table vn-tbody > a:nth-child(1) > vn-td:nth-child(5)', searchTicketInput: `vn-ticket-index ${components.vnTextfield}`, + advancedSearchButton: 'vn-ticket-index vn-searchbar > vn-popover vn-ticket-search-panel vn-submit[label="Search"] input', searchButton: 'vn-ticket-index vn-searchbar vn-icon[icon="search"]', moreMenu: 'vn-ticket-index vn-icon-menu[vn-id="more-button"] > div > vn-icon', moreMenuTurns: 'vn-ticket-index vn-icon-menu vn-drop-down > vn-popover li:nth-child(2)', - sixthWeeklyTicketTurn: 'vn-ticket-weekly > form > div > vn-card > div > vn-table > div > vn-tbody > vn-tr:nth-child(6) > vn-td:nth-child(3) > vn-autocomplete > div > div > input', + sixthWeeklyTicketTurn: 'vn-ticket-weekly vn-table vn-tr:nth-child(6) vn-autocomplete[field="weekly.weekDay"] input', weeklyTicket: 'vn-ticket-weekly vn-table > div > vn-tbody > vn-tr', - sixthWeeklyTicketDeleteIcon: 'vn-ticket-weekly > form vn-tbody > vn-tr:nth-child(6) > vn-td:nth-child(6) > vn-icon-button[icon="delete"]' + sixthWeeklyTicketDeleteIcon: 'vn-ticket-weekly vn-tr:nth-child(6) vn-icon-button[icon="delete"]', + acceptDeleteTurn: 'vn-ticket-weekly > vn-confirm[vn-id="deleteWeekly"] button[response="ACCEPT"]' }, createTicketView: { clientAutocomplete: 'vn-ticket-create vn-autocomplete[field="$ctrl.clientFk"]', @@ -324,16 +340,17 @@ export default { createButton: `${components.vnSubmit}` }, ticketDescriptor: { + idLabelValue: 'vn-ticket-descriptor vn-label-value[label="Id"]', + stateLabelValue: 'vn-ticket-descriptor vn-label-value[label="State"]', + goBackToModuleIndexButton: 'vn-ticket-descriptor a[ui-sref="ticket.index"]', moreMenu: 'vn-ticket-descriptor vn-icon-menu > div > vn-icon', moreMenuAddStowaway: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Add stowaway"]', moreMenuDeleteStowawayButton: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Remove stowaway"]', moreMenuAddToTurn: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Add turn"]', moreMenuDeleteTicket: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Delete ticket"]', moreMenuMakeInvoice: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Make invoice"]', - addStowawayDialogSecondTicket: 'vn-ticket-descriptor > vn-add-stowaway > vn-dialog vn-table vn-tr:nth-child(2)', - shipSelectButton: 'vn-ticket-descriptor > div > div.body > div.quicklinks > vn-button-menu[icon="icon-stowaway"]', + addStowawayDialogFirstTicket: 'vn-ticket-descriptor > vn-add-stowaway > vn-dialog vn-table vn-tbody vn-tr', shipButton: 'vn-ticket-descriptor > div > div.body > div.quicklinks vn-icon[icon="icon-stowaway"]', - shipMenuSecondTicket: 'vn-ticket-descriptor div.quicklinks vn-drop-down li:nth-child(2)', thursdayButton: 'vn-ticket-descriptor > vn-dialog > div > form > div.body > tpl-body > div > vn-tool-bar > vn-button:nth-child(4)', saturdayButton: 'vn-ticket-descriptor > vn-dialog > div > form > div.body > tpl-body > div > vn-tool-bar > vn-button:nth-child(6)', closeStowawayDialog: 'vn-ticket-descriptor > vn-add-stowaway > vn-dialog > div > button[class="close"]', @@ -367,27 +384,33 @@ export default { saleButton: 'vn-left-menu a[ui-sref="ticket.card.sale"]', saleLine: 'vn-table div > vn-tbody > vn-tr', saleDescriptorPopover: 'vn-ticket-sale vn-item-descriptor-popover > vn-popover', - saleDescriptorPopoverSummaryButton: 'vn-item-descriptor-popover a[href="#!/item/1/summary"]', + saleDescriptorPopoverSummaryButton: 'vn-item-descriptor-popover a[ui-sref="item.card.summary({id: $ctrl.item.id})"]', descriptorItemDiaryButton: 'vn-item-descriptor .quicklinks.ng-scope > vn-horizontal > a > vn-icon > i', newItemButton: 'vn-float-button[icon="add"]', + moreMenu: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] > div > button', + moreMenuCreateClaim: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] vn-drop-down > vn-popover ul > li[name="Add claim"]', + moreMenuReserve: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] vn-drop-down > vn-popover ul > li[name="Mark as reserved"]', + moreMenuUnmarkReseved: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] vn-drop-down > vn-popover ul > li[name="Unmark as reserved"]', + moreMenuUpdateDiscount: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] vn-drop-down > vn-popover ul > li[name="Update discount"]', + moreMenuUpdateDiscountInput: 'vn-ticket-sale vn-dialog form vn-ticket-sale-edit-discount vn-input-number[model="$ctrl.newDiscount"] input', + firstSaleClaimIcon: 'vn-ticket-sale vn-table vn-tbody > vn-tr:nth-child(1) vn-icon[icon="icon-claims"]', firstSaleDescriptorImage: 'vn-ticket-sale vn-item-descriptor-popover > vn-popover vn-item-descriptor img', firstSaleText: 'vn-table div > vn-tbody > vn-tr:nth-child(1)', firstSaleThumbnailImage: 'vn-ticket-sale:nth-child(1) vn-tr:nth-child(1) vn-td:nth-child(3) > img', firstSaleZoomedImage: 'body > div > div > img', - firstSaleQuantity: 'vn-textfield[model="sale.quantity"]:nth-child(1) input', - firstSaleQuantityCell: 'vn-ticket-sale vn-tr:nth-child(1) > vn-td-editable', + firstSaleQuantity: 'vn-input-number[model="sale.quantity"]:nth-child(1) input', + firstSaleQuantityCell: 'vn-ticket-sale vn-tr:nth-child(1) > vn-td-editable:nth-child(5)', firstSaleQuantityClearInput: 'vn-textfield[model="sale.quantity"] div.suffix > i', - firstSaleID: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(4) > span', - firstSalePrice: 'vn-ticket-sale:nth-child(1) vn-tr:nth-child(1) > vn-td:nth-child(7) > span', - firstSalePriceInput: 'vn-ticket-sale:nth-child(1) vn-popover.edit.dialog-summary.ng-isolate-scope.vn-popover.shown vn-textfield input', - firstSaleDiscount: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(8) > span', - firstSaleDiscountInput: 'vn-ticket-sale:nth-child(1) vn-ticket-sale-edit-discount vn-textfield input', + firstSaleID: 'vn-ticket-sale:nth-child(1) vn-td-editable:nth-child(4) text > span', + firstSalePrice: 'vn-ticket-sale:nth-child(1) vn-tr:nth-child(1) > vn-td:nth-child(7)', + firstSalePriceInput: 'vn-ticket-sale:nth-child(1) vn-popover.edit.dialog-summary.ng-isolate-scope.vn-popover.shown vn-input-number input', + firstSaleDiscount: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(8)', + firstSaleDiscountInput: 'vn-ticket-sale:nth-child(1) vn-ticket-sale-edit-discount vn-input-number input', firstSaleImport: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(9)', firstSaleReservedIcon: 'vn-ticket-sale vn-tr:nth-child(1) > vn-td:nth-child(2) > vn-icon:nth-child(3)', - firstSaleColour: 'vn-ticket-sale vn-tr:nth-child(1) vn-td:nth-child(6) section:nth-child(1)', - firstSaleLength: 'vn-ticket-sale vn-tr:nth-child(1) vn-td:nth-child(6) section:nth-child(3)', + firstSaleColour: 'vn-ticket-sale vn-tr:nth-child(1) vn-td-editable:nth-child(6) section:nth-child(1)', + firstSaleLength: 'vn-ticket-sale vn-tr:nth-child(1) vn-td-editable:nth-child(6) section:nth-child(3)', firstSaleCheckbox: 'vn-ticket-sale vn-tr:nth-child(1) vn-check[field="sale.checked"] md-checkbox', - secondSaleClaimIcon: 'vn-ticket-sale > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(2) > a > vn-icon', secondSaleColour: 'vn-ticket-sale vn-tr:nth-child(2) vn-td:nth-child(6) section:nth-child(5)', secondSalePrice: 'vn-ticket-sale vn-tr:nth-child(2) vn-td:nth-child(7) > span', secondSaleDiscount: 'vn-ticket-sale vn-tr:nth-child(2) vn-td:nth-child(8)', @@ -399,12 +422,12 @@ export default { thirdSaleCheckbox: 'vn-ticket-sale vn-tr:nth-child(3) vn-check[field="sale.checked"] md-checkbox', deleteSaleButton: 'vn-ticket-sale vn-tool-bar > vn-button[icon="delete"]', transferSaleButton: 'vn-ticket-sale vn-tool-bar > vn-button[icon="call_split"]', - moveToTicketInput: 'vn-ticket-sale vn-popover.transfer vn-textfield[model="$ctrl.moveToTicketFk"] input', + moveToTicketInput: 'vn-ticket-sale vn-popover.transfer vn-textfield[model="$ctrl.receiverTicketId"] input', moveToTicketInputClearButton: 'vn-popover.shown i[title="Clear"]', moveToTicketButton: 'vn-ticket-sale vn-popover.transfer vn-icon[icon="arrow_forward_ios"]', moveToNewTicketButton: 'vn-ticket-sale vn-popover.transfer vn-button[label="New ticket"]', acceptDeleteLineButton: 'vn-ticket-sale > vn-confirm[vn-id="delete-lines"] button[response=ACCEPT]', - acceptDeleteTicketButton: 'vn-ticket-sale > vn-confirm[vn-id="deleteConfirmation"] button[response=ACCEPT]', + acceptDeleteTicketButton: 'vn-ticket-sale > vn-confirm[vn-id="delete-ticket"] button[response=ACCEPT]', stateMenuButton: 'vn-ticket-sale vn-tool-bar > vn-button-menu[label="State"]' }, ticketTracking: { @@ -448,14 +471,17 @@ export default { id: 'vn-ticket-log > vn-log > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr > vn-td.before > vn-one:nth-child(1) > div > span.value.ng-scope.ng-binding' }, ticketService: { - addServiceButton: 'vn-ticket-service > form > vn-card > div > vn-one:nth-child(3) > vn-icon-button > button > vn-icon', + addServiceButton: 'vn-ticket-service vn-icon-button[vn-tooltip="Add service"] > button', + firstAddDescriptionButton: 'vn-ticket-service vn-icon-button[vn-tooltip="New service type"] > button', firstDescriptionAutocomplete: 'vn-ticket-service vn-autocomplete[field="service.description"]', firstQuantityInput: 'vn-ticket-service vn-input-number[label="Quantity"] input', firstPriceInput: 'vn-ticket-service vn-input-number[label="Price"] input', firstVatTypeAutocomplete: 'vn-ticket-service vn-autocomplete[label="Tax class"]', fistDeleteServiceButton: 'vn-ticket-card > vn-main-block > div.content-block.ng-scope > vn-ticket-service > form > vn-card > div > vn-one:nth-child(1) > vn-horizontal:nth-child(1) > vn-auto > vn-icon-button[icon="delete"]', + newDescriptionInput: 'vn-ticket-service > vn-dialog vn-textfield[model="$ctrl.newServiceType.name"] input', serviceLine: 'vn-ticket-service > form > vn-card > div > vn-one:nth-child(2) > vn-horizontal', - saveServiceButton: `${components.vnSubmit}` + saveServiceButton: `${components.vnSubmit}`, + saveDescriptionButton: 'vn-ticket-service > vn-dialog[vn-id="createServiceTypeDialog"] > div > form > div.buttons > tpl-buttons > button' }, createStateView: { stateAutocomplete: 'vn-autocomplete[field="$ctrl.stateFk"]', @@ -468,18 +494,38 @@ export default { searchResult: 'vn-claim-index vn-card > div > vn-table > div > vn-tbody > a', searchButton: 'vn-claim-index vn-searchbar vn-icon[icon="search"]' }, + claimDescriptor: { + moreMenu: 'vn-claim-descriptor vn-icon-menu[vn-id="more-button"]', + moreMenuDeleteClaim: 'vn-claim-descriptor vn-icon-menu vn-drop-down li[name="Delete claim"]', + acceptDeleteClaim: 'vn-claim-descriptor > vn-confirm[vn-id="confirm-delete-claim"] button[response="ACCEPT"]' + }, + claimSummary: { + header: 'vn-claim-summary > vn-card > div > h5', + state: 'vn-claim-summary vn-label-value[label="State"] > section > span', + observation: 'vn-claim-summary vn-textarea[model="$ctrl.summary.claim.observation"] > div > textarea', + firstSaleItemId: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(4) > vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(1) > span', + firstSaleDescriptorImage: 'vn-claim-summary vn-item-descriptor-popover > vn-popover vn-item-descriptor img', + itemDescriptorPopover: 'vn-claim-summary vn-item-descriptor-popover > vn-popover', + itemDescriptorPopoverItemDiaryButton: 'vn-claim-summary > vn-item-descriptor-popover a[href="#!/item/2/diary"]', + firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) > vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span', + firstDevelopmentWorkerGoToClientButton: 'vn-claim-summary > vn-worker-descriptor-popover > vn-popover vn-worker-descriptor div.quicklinks > a[href="#!/client/21/summary"]', + firstActionTicketId: 'vn-claim-summary > vn-card > div > vn-horizontal > vn-auto:nth-child(6) > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span', + firstActionTicketDescriptor: 'vn-claim-summary > vn-ticket-descriptor-popover > vn-popover > div > div.content > vn-ticket-descriptor' + }, claimBasicData: { claimStateAutocomplete: 'vn-claim-basic-data vn-autocomplete[field="$ctrl.claim.claimStateFk"]', - isPaidWithManaCheckbox: 'vn-check[field="$ctrl.claim.isChargedToMana"] md-checkbox', responsabilityInputRange: 'vn-input-range', observationInput: 'vn-textarea[field="$ctrl.claim.observation"] textarea', saveButton: `${components.vnSubmit}` }, claimDetail: { + secondItemDiscount: 'vn-claim-detail > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(7) > span', + discountInput: 'vn-claim-detail vn-popover vn-input-number[model="$ctrl.newDiscount"] > div > div > div.infix > input', + discoutPopoverMana: 'vn-claim-detail > vn-popover > div > div.content > div > vn-horizontal > h5', addItemButton: 'vn-claim-detail a vn-float-button', firstClaimableSaleFromTicket: 'vn-claim-detail > vn-dialog vn-tbody > vn-tr', claimDetailLine: 'vn-claim-detail > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr', - secondItemQuantityInput: 'vn-claim-detail vn-tr:nth-child(2) vn-input-number[model="saleClaimed.quantity"] input', + firstItemQuantityInput: 'vn-claim-detail vn-tr:nth-child(1) vn-input-number[model="saleClaimed.quantity"] input', totalClaimed: 'vn-claim-detail > vn-vertical > vn-card > div > vn-vertical > vn-horizontal > div > vn-label-value:nth-child(2) > section > span', secondItemDeleteButton: 'vn-claim-detail > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(9) > vn-icon-button > button > vn-icon > i' }, @@ -503,11 +549,9 @@ export default { importTicketButton: 'vn-claim-action vn-button[label="Import ticket"]', secondImportableTicket: 'vn-claim-action > vn-vertical > vn-popover > div > div.content > div > vn-table > div > vn-tbody > vn-tr:nth-child(2)', firstLineDestination: 'vn-claim-action vn-tr:nth-child(1) vn-autocomplete[field="saleClaimed.claimDestinationFk"]', - thirdLineDestination: 'vn-claim-action vn-tr:nth-child(3) vn-autocomplete[field="saleClaimed.claimDestinationFk"]', + secondLineDestination: 'vn-claim-action vn-tr:nth-child(2) vn-autocomplete[field="saleClaimed.claimDestinationFk"]', firstDeleteLine: 'vn-claim-action vn-tr:nth-child(1) vn-icon-button[icon="delete"]', - secondDeleteLine: 'vn-claim-action vn-tr:nth-child(2) vn-icon-button[icon="delete"]', - thirdDeleteLine: 'vn-claim-action vn-tr:nth-child(3) vn-icon-button[icon="delete"]' - + isPaidWithManaCheckbox: 'vn-check[field="$ctrl.claim.isChargedToMana"] md-checkbox' }, ordersIndex: { searchResult: 'vn-order-index vn-card > div > vn-table > div > vn-tbody > a.vn-tr', @@ -551,10 +595,6 @@ export default { confirmOrder: 'vn-order-line > vn-vertical > vn-button-bar > vn-button > button', confirmButton: 'vn-order-line > vn-confirm button[response="ACCEPT"]', }, - workerPbx: { - extensionInput: 'vn-worker-pbx vn-textfield[model="$ctrl.worker.sip.extension"] input', - saveButton: 'vn-worker-pbx vn-submit[label="Save"] input' - }, routeIndex: { addNewRouteButton: 'vn-route-index > a[ui-sref="route.create"]' }, @@ -566,6 +606,9 @@ export default { descriptionInput: 'vn-route-create vn-textfield[field="$ctrl.route.description"] input', submitButton: 'vn-route-create vn-submit > input[type="submit"]' }, + routeDescriptor: { + volume: 'vn-route-descriptor vn-label-value[label="Volume"] > section > span' + }, routeSummary: { routeId: 'vn-route-summary > vn-card > div > vn-horizontal > vn-one:nth-child(1) > vn-label-value:nth-child(1) > section > span' }, @@ -585,9 +628,79 @@ export default { secondTicketPriority: 'vn-route-tickets vn-tr:nth-child(2) vn-textfield[model="ticket.priority"] input', thirdTicketPriority: 'vn-route-tickets vn-tr:nth-child(3) vn-textfield[model="ticket.priority"] input', fourthTicketPriority: 'vn-route-tickets vn-tr:nth-child(4) vn-textfield[model="ticket.priority"] input', + eleventhTicketPriority: 'vn-route-tickets vn-tr:nth-child(11) vn-textfield[model="ticket.priority"] input', firstTicketCheckbox: 'vn-route-tickets vn-tr:nth-child(1) vn-check md-checkbox', buscamanButton: 'vn-route-tickets vn-button[icon="icon-buscaman"]', firstTicketDeleteButton: 'vn-route-tickets vn-tr:nth-child(1) vn-icon[icon="delete"]', confirmButton: 'vn-route-tickets > vn-confirm button[response="ACCEPT"]' + }, + workerPbx: { + extensionInput: 'vn-worker-pbx vn-textfield[model="$ctrl.worker.sip.extension"] input', + saveButton: 'vn-worker-pbx vn-submit[label="Save"] input' + }, + workerTimeControl: { + timeDialogInput: 'vn-worker-time-control > vn-dialog input', + mondayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(1) > vn-icon-button > button > vn-icon', + tuesdayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(2) > vn-icon-button > button > vn-icon', + wednesdayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(3) > vn-icon-button > button > vn-icon', + thursdayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(4) > vn-icon-button > button > vn-icon', + fridayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(5) > vn-icon-button > button > vn-icon', + saturdayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(6) > vn-icon-button > button > vn-icon', + sundayAddTimeButton: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(2) > vn-td:nth-child(7) > vn-icon-button > button > vn-icon', + confirmButton: 'vn-worker-time-control > vn-dialog > div > form > div.buttons > tpl-buttons > button', + firstEntryOfMonday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(1) > span', + firstEntryOfTuesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(1) > span', + firstEntryOfWednesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(1) > span', + firstEntryOfThursday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(1) > span', + firstEntryOfFriday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(1) > span', + firstEntryOfSaturday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(1) > span', + firstEntryOfSunday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(1) > span', + secondEntryOfMonday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(2) > span', + secondEntryOfTuesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(2) > span', + secondEntryOfWednesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(2) > span', + secondEntryOfThursday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(2) > span', + secondEntryOfFriday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(2) > span', + secondEntryOfSaturday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(2) > span', + secondEntryOfSunday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(2) > span', + thirdEntryOfMonday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(3) > span', + thirdEntryOfTuesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(3) > span', + thirdEntryOfWednesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(3) > span', + thirdEntryOfThursday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(3) > span', + thirdEntryOfFriday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(3) > span', + thirdEntryOfSaturday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(3) > span', + thirdEntryOfSunday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(3) > span', + fourthEntryOfMonday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > section:nth-child(4) > span', + fourthEntryOfTuesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > section:nth-child(4) > span', + fourthEntryOfWednesday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(3) > section:nth-child(4) > span', + fourthEntryOfThursday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(4) > section:nth-child(4) > span', + fourthEntryOfFriday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(5) > section:nth-child(4) > span', + fourthEntryOfSaturday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(6) > section:nth-child(4) > span', + fourthEntryOfSunday: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(7) > section:nth-child(4) > span', + mondayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(1)', + tuesdayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(2)', + wednesdayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(3)', + thursdayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(4)', + fridayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(5)', + saturdayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(6)', + sundayWorkedHours: 'vn-worker-time-control > div > vn-card > div > vn-horizontal > vn-table > div > vn-tfoot > vn-tr:nth-child(1) > vn-td:nth-child(7)', + weekWorkedHours: 'vn-worker-time-control > div > vn-side-menu > div > vn-vertical > vn-vertical > vn-label-value > section > span', + nextMonthButton: 'vn-worker-time-control > div > vn-side-menu > div > vn-calendar > div > vn-horizontal > vn-auto:nth-child(3) > vn-icon', + navigateBackToIndex: 'vn-worker-descriptor vn-icon[icon="chevron_left"]' + }, + invoiceOutIndex: { + searchInvoiceOutInput: `vn-invoice-out-index ${components.vnTextfield}`, + searchButton: 'vn-invoice-out-index vn-searchbar vn-icon[icon="search"]', + searchResult: 'vn-invoice-out-index vn-card > div > vn-table > div > vn-tbody > a.vn-tr', + }, + invoiceOutDescriptor: { + moreMenu: 'vn-invoice-out-descriptor vn-icon-menu[vn-id="more-button"]', + moreMenuDeleteInvoiceOut: 'vn-invoice-out-descriptor vn-popover li[name="Delete Invoice"]', + moreMenuBookInvoiceOut: 'vn-invoice-out-descriptor vn-popover li[name="Book invoice"]', + moreMenuShowInvoiceOutPdf: 'vn-invoice-out-descriptor vn-popover li[name="Show invoice PDF"]', + acceptDeleteButton: 'vn-invoice-out-descriptor > vn-confirm[vn-id="deleteConfirmation"] button[response="ACCEPT"]', + acceptBookingButton: 'vn-invoice-out-descriptor > vn-confirm[vn-id="bookConfirmation"] button[response="ACCEPT"]' + }, + invoiceOutSummary: { + bookedLabel: 'vn-invoice-out-summary > vn-card > div > vn-horizontal > vn-one > vn-label-value:nth-child(4) > section > span' } }; diff --git a/e2e/paths/02-client-module/01_create_client.spec.js b/e2e/paths/02-client-module/01_create_client.spec.js index 2d7b58b20..b9ea5e112 100644 --- a/e2e/paths/02-client-module/01_create_client.spec.js +++ b/e2e/paths/02-client-module/01_create_client.spec.js @@ -53,7 +53,7 @@ describe('Client create path', () => { .write(selectors.createClientView.name, 'Carol Danvers') .write(selectors.createClientView.socialName, 'AVG tax') .write(selectors.createClientView.street, 'Many places') - .write(selectors.createClientView.city, 'Silla') + .autocompleteSearch(selectors.createClientView.postcode, '46000') .clearInput(selectors.createClientView.email) .write(selectors.createClientView.email, 'incorrect email format') .waitToClick(selectors.createClientView.createButton) @@ -62,6 +62,21 @@ describe('Client create path', () => { expect(result).toEqual('Some fields are invalid'); }); + it(`should check for autocompleted city, province and country`, async() => { + const clientCity = await nightmare + .waitToGetProperty(`${selectors.createClientView.city} input`, 'value'); + + const clientProvince = await nightmare + .waitToGetProperty(`${selectors.createClientView.province} input`, 'value'); + + const clientCountry = await nightmare + .waitToGetProperty(`${selectors.createClientView.country} input`, 'value'); + + expect(clientCity).toEqual('Valencia'); + expect(clientProvince).toEqual('Province one'); + expect(clientCountry).toEqual('España'); + }); + it(`should create a new user with all correct data`, async() => { const result = await nightmare .clearInput(selectors.createClientView.email) diff --git a/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js b/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js index d424f0591..9ae1f6ae4 100644 --- a/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js +++ b/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js @@ -67,11 +67,7 @@ describe('Client Edit fiscalData path', () => { .write(selectors.clientFiscalData.fiscalIdInput, 'INVALID!') .clearInput(selectors.clientFiscalData.addressInput) .write(selectors.clientFiscalData.addressInput, 'Somewhere edited') - .clearInput(selectors.clientFiscalData.postcodeInput) - .write(selectors.clientFiscalData.postcodeInput, '12345') - .clearInput(selectors.clientFiscalData.cityInput) - .write(selectors.clientFiscalData.cityInput, 'N/A') - .autocompleteSearch(selectors.clientFiscalData.provinceAutocomplete, 'Province two') + .autocompleteSearch(selectors.clientFiscalData.postcodeAutocomplete, '46000') .waitToClick(selectors.clientFiscalData.activeCheckbox) .waitToClick(selectors.clientFiscalData.frozenCheckbox) .waitToClick(selectors.clientFiscalData.hasToInvoiceCheckbox) @@ -197,23 +193,31 @@ describe('Client Edit fiscalData path', () => { it('should confirm the postcode have been edited', async() => { const result = await nightmare - .waitToGetProperty(selectors.clientFiscalData.postcodeInput, 'value'); + .waitToGetProperty(`${selectors.clientFiscalData.postcodeAutocomplete} input`, 'value'); - expect(result).toEqual('12345'); + expect(result).toContain('46000'); }); - it('should confirm the city have been edited', async() => { + it('should confirm the city have been autocompleted', async() => { const result = await nightmare - .waitToGetProperty(selectors.clientFiscalData.cityInput, 'value'); + .waitToGetProperty(`${selectors.clientFiscalData.cityAutocomplete} input`, 'value'); - expect(result).toEqual('N/A'); + expect(result).toEqual('Valencia'); }); - it(`should confirm the province have been selected`, async() => { + + it(`should confirm the province have been autocompleted`, async() => { const result = await nightmare .waitToGetProperty(`${selectors.clientFiscalData.provinceAutocomplete} input`, 'value'); - expect(result).toEqual('Province two'); + expect(result).toEqual('Province one'); + }); + + it('should confirm the country have been autocompleted', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientFiscalData.countryAutocomplete} input`, 'value'); + + expect(result).toEqual('España'); }); it('should confirm active checkbox is unchecked', async() => { @@ -223,11 +227,11 @@ describe('Client Edit fiscalData path', () => { expect(result).toBe('unchecked'); }); - it('should confirm frozen checkbox is unchecked', async() => { + it('should confirm frozen checkbox is checked', async() => { const result = await nightmare .checkboxState(selectors.clientFiscalData.frozenCheckbox); - expect(result).toBe('unchecked'); + expect(result).toBe('checked'); }); it('should confirm Has to invoice checkbox is unchecked', async() => { diff --git a/e2e/paths/02-client-module/05_add_address.spec.js b/e2e/paths/02-client-module/05_add_address.spec.js index e082b6d8c..5e21f87d8 100644 --- a/e2e/paths/02-client-module/05_add_address.spec.js +++ b/e2e/paths/02-client-module/05_add_address.spec.js @@ -24,8 +24,7 @@ describe('Client Add address path', () => { const result = await nightmare .waitToClick(selectors.clientAddresses.defaultCheckboxInput) .clearInput(selectors.clientAddresses.streetAddressInput) - .write(selectors.clientAddresses.postcodeInput, '10022') - .autocompleteSearch(selectors.clientAddresses.provinceAutocomplete, 'Province four') + .autocompleteSearch(selectors.clientAddresses.postcodeAutocomplete, '46000') .autocompleteSearch(selectors.clientAddresses.agencyAutocomplete, 'Entanglement') .write(selectors.clientAddresses.phoneInput, '999887744') .write(selectors.clientAddresses.mobileInput, '999887744') @@ -35,11 +34,32 @@ describe('Client Add address path', () => { expect(result).toEqual('Some fields are invalid'); }); + it('should confirm the postcode have been edited', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientAddresses.postcodeAutocomplete} input`, 'value'); + + expect(result).toContain('46000'); + }); + + it('should confirm the city have been autocompleted', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientAddresses.cityAutocomplete} input`, 'value'); + + expect(result).toEqual('Valencia'); + }); + + + it(`should confirm the province have been autocompleted`, async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientAddresses.provinceAutocomplete} input`, 'value'); + + expect(result).toEqual('Province one'); + }); + it(`should create a new address with all it's data`, async() => { const result = await nightmare .write(selectors.clientAddresses.consigneeInput, 'Bruce Bunner') .write(selectors.clientAddresses.streetAddressInput, '320 Park Avenue New York') - .write(selectors.clientAddresses.cityInput, 'New York') .waitToClick(selectors.clientAddresses.saveButton) .waitForLastSnackbar(); diff --git a/e2e/paths/02-client-module/12_lock_of_verified_data.spec.js b/e2e/paths/02-client-module/12_lock_of_verified_data.spec.js index 971d1e5f9..d8378e577 100644 --- a/e2e/paths/02-client-module/12_lock_of_verified_data.spec.js +++ b/e2e/paths/02-client-module/12_lock_of_verified_data.spec.js @@ -8,7 +8,7 @@ describe('Client lock verified data path', () => { beforeAll(() => { nightmare .loginAndModule('salesPerson', 'client') - .accessToSearchResult('Petter Parker') + .accessToSearchResult('Hank Pym') .accessToSection('client.card.fiscalData'); }); @@ -27,7 +27,7 @@ describe('Client lock verified data path', () => { const result = await nightmare .wait(selectors.clientFiscalData.socialNameInput) .clearInput(selectors.clientFiscalData.socialNameInput) - .write(selectors.clientFiscalData.socialNameInput, 'salesPerson was here') + .write(selectors.clientFiscalData.socialNameInput, 'Captain America Civil War') .waitToClick(selectors.clientFiscalData.saveButton) .waitForLastSnackbar(); @@ -39,55 +39,16 @@ describe('Client lock verified data path', () => { .reloadSection('client.card.fiscalData') .waitToGetProperty(selectors.clientFiscalData.socialNameInput, 'value'); - expect(result).toEqual('salesPerson was here'); + expect(result).toEqual('Captain America Civil War'); }); }); describe('as administrative', () => { beforeAll(() => { nightmare - .waitForLogin('administrative'); - }); - - it('should navigate to clients index', async() => { - const url = await nightmare - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.clientsButton) - .wait(selectors.clientsIndex.createClientButton) - .parsedUrl(); - - expect(url.hash).toEqual('#!/client/index'); - }); - - it('should search again for the user Petter Parker', async() => { - const resultCount = await nightmare - .write(selectors.clientsIndex.searchClientInput, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchButton) - .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) - .countElement(selectors.clientsIndex.searchResult); - - expect(resultCount).toEqual(1); - }); - - it(`should click on the search result to access to the Petter Parkers fiscal data`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.clientsIndex.searchResult, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchResult) - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); - }); - - it(`should click on the fiscal data button`, async() => { - const url = await nightmare - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); + .loginAndModule('administrative', 'client') + .accessToSearchResult('Hank Pym') + .accessToSection('client.card.fiscalData'); }); it('should confirm verified data button is enabled for administrative', async() => { @@ -110,18 +71,18 @@ describe('Client lock verified data path', () => { }); it('should confirm Verified data checkbox is checked', async() => { - const result = await nightmare + const isChecked = await nightmare .reloadSection('client.card.fiscalData') .checkboxState(selectors.clientFiscalData.verifiedDataCheckbox); - expect(result).toBe('checked'); + expect(isChecked).toEqual('checked'); }); it('should again edit the social name', async() => { const result = await nightmare .wait(selectors.clientFiscalData.socialNameInput) .clearInput(selectors.clientFiscalData.socialNameInput) - .write(selectors.clientFiscalData.socialNameInput, 'administrative was here') + .write(selectors.clientFiscalData.socialNameInput, 'Ant-Man and the Wasp') .waitToClick(selectors.clientFiscalData.saveButton) .waitForLastSnackbar(); @@ -133,71 +94,32 @@ describe('Client lock verified data path', () => { .reloadSection('client.card.fiscalData') .waitToGetProperty(selectors.clientFiscalData.socialNameInput, 'value'); - expect(result).toEqual('administrative was here'); + expect(result).toEqual('Ant-Man and the Wasp'); }); }); describe('as salesPerson second run', () => { beforeAll(() => { nightmare - .waitForLogin('salesPerson'); - }); - - it('should again click on the Clients button of the top bar menu', async() => { - const url = await nightmare - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.clientsButton) - .wait(selectors.clientsIndex.createClientButton) - .parsedUrl(); - - expect(url.hash).toEqual('#!/client/index'); - }); - - it('should again search for the user Petter Parker', async() => { - const resultCount = await nightmare - .write(selectors.clientsIndex.searchClientInput, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchButton) - .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) - .countElement(selectors.clientsIndex.searchResult); - - expect(resultCount).toEqual(1); - }); - - it(`should click on the search result to access to the client's fiscal data`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.clientsIndex.searchResult, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchResult) - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); - }); - - it(`should click on the fiscal data button to start editing`, async() => { - const url = await nightmare - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); + .loginAndModule('salesPerson', 'client') + .accessToSearchResult('Hank Pym') + .accessToSection('client.card.fiscalData'); }); it('should confirm verified data button is disabled once again for salesPerson', async() => { - const result = await nightmare - .wait(selectors.clientFiscalData.verifiedDataCheckbox) + const isChecked = await nightmare + .waitForClassPresent(selectors.clientFiscalData.verifiedDataCheckbox, 'md-checked') .evaluate(selector => { return document.querySelector(selector).getAttribute('disabled'); }, selectors.clientFiscalData.verifiedDataCheckbox); - expect(result).toBeTruthy(); + expect(isChecked).toBeTruthy(); }); it('should not be able to save change throwing a verified data error', async() => { const result = await nightmare .clearInput(selectors.clientFiscalData.socialNameInput) - .write(selectors.clientFiscalData.socialNameInput, 'salesPerson was here') + .write(selectors.clientFiscalData.socialNameInput, 'This wont happen') .waitToClick(selectors.clientFiscalData.saveButton) .waitForSnackbar(); @@ -209,64 +131,25 @@ describe('Client lock verified data path', () => { beforeAll(() => { nightmare .forceReloadSection('client.card.fiscalData') - .waitForLogin('salesAssistant'); - }); - - it('should now navigate to clients index', async() => { - const url = await nightmare - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.clientsButton) - .wait(selectors.clientsIndex.createClientButton) - .parsedUrl(); - - expect(url.hash).toEqual('#!/client/index'); - }); - - it('should now search again for the user Petter Parker', async() => { - const resultCount = await nightmare - .write(selectors.clientsIndex.searchClientInput, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchButton) - .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) - .countElement(selectors.clientsIndex.searchResult); - - expect(resultCount).toEqual(1); - }); - - it(`should click on the search result to access to the Petter Parkers fiscal data`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.clientsIndex.searchResult, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchResult) - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); - }); - - it(`should click on the fiscal data button`, async() => { - const url = await nightmare - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); + .loginAndModule('salesAssistant', 'client') + .accessToSearchResult('Hank Pym') + .accessToSection('client.card.fiscalData'); }); it('should confirm verified data button is enabled for salesAssistant', async() => { - const result = await nightmare - .wait(selectors.clientFiscalData.verifiedDataCheckbox) + const isDisabled = await nightmare + .waitForClassPresent(selectors.clientFiscalData.verifiedDataCheckbox, 'md-checked') .evaluate(selector => { - return document.querySelector(selector).getAttribute('disabled'); + return document.querySelector(selector).getAttribute('aria-disabled'); }, selectors.clientFiscalData.verifiedDataCheckbox); - expect(result).toBeFalsy(); + expect(isDisabled).toEqual('false'); }); it('should now edit the social name', async() => { const result = await nightmare .clearInput(selectors.clientFiscalData.socialNameInput) - .write(selectors.clientFiscalData.socialNameInput, 'salesAssistant was here') + .write(selectors.clientFiscalData.socialNameInput, 'new social name edition') .waitToClick(selectors.clientFiscalData.saveButton) .waitForLastSnackbar(); @@ -278,65 +161,26 @@ describe('Client lock verified data path', () => { .reloadSection('client.card.fiscalData') .waitToGetProperty(selectors.clientFiscalData.socialNameInput, 'value'); - expect(result).toEqual('salesAssistant was here'); + expect(result).toEqual('new social name edition'); }); }); describe('as salesPerson third run', () => { beforeAll(() => { nightmare - .waitForLogin('salesPerson'); - }); - - it('should now click on the Clients button of the top bar menu', async() => { - const url = await nightmare - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.clientsButton) - .wait(selectors.clientsIndex.createClientButton) - .parsedUrl(); - - expect(url.hash).toEqual('#!/client/index'); - }); - - it('should once again search for the user Petter Parker', async() => { - const resultCount = await nightmare - .write(selectors.clientsIndex.searchClientInput, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchButton) - .waitForNumberOfElements(selectors.clientsIndex.searchResult, 1) - .countElement(selectors.clientsIndex.searchResult); - - expect(resultCount).toEqual(1); - }); - - it(`should click on the search result to access to the client's fiscal data`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.clientsIndex.searchResult, 'Petter Parker') - .waitToClick(selectors.clientsIndex.searchResult) - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); - }); - - it(`should click on the fiscal data button to start editing`, async() => { - const url = await nightmare - .waitToClick(selectors.clientFiscalData.fiscalDataButton) - .waitForURL('fiscal-data') - .parsedUrl(); - - expect(url.hash).toContain('fiscal-data'); + .loginAndModule('salesPerson', 'client') + .accessToSearchResult('Hank Pym') + .accessToSection('client.card.fiscalData'); }); it('should confirm verified data button is enabled once again', async() => { - const result = await nightmare - .wait(selectors.clientFiscalData.verifiedDataCheckbox) + const isChecked = await nightmare + .waitForClassPresent(selectors.clientFiscalData.verifiedDataCheckbox, 'md-checked') .evaluate(selector => { return document.querySelector(selector).getAttribute('disabled'); }, selectors.clientFiscalData.verifiedDataCheckbox); - expect(result).toBeTruthy(); + expect(isChecked).toBeTruthy(); }); it('should confirm the form is enabled for salesPerson', async() => { diff --git a/e2e/paths/02-client-module/14_risk.spec.js b/e2e/paths/02-client-module/14_balance.spec.js similarity index 96% rename from e2e/paths/02-client-module/14_risk.spec.js rename to e2e/paths/02-client-module/14_balance.spec.js index ec80713aa..b661d998b 100644 --- a/e2e/paths/02-client-module/14_risk.spec.js +++ b/e2e/paths/02-client-module/14_balance.spec.js @@ -1,7 +1,7 @@ import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; -xdescribe('Client balance path', () => { +describe('Client balance path', () => { const nightmare = createNightmare(); beforeAll(() => { @@ -48,8 +48,7 @@ xdescribe('Client balance path', () => { it('should create a new payment that clears the debt', async() => { let result = await nightmare - .clearInput(selectors.clientBalance.newPaymentBankInut) - .write(selectors.clientBalance.newPaymentBankInut, '2') + .autocompleteSearch(selectors.clientBalance.newPaymentBank, 'Pay on receipt') .waitToClick(selectors.clientBalance.saveButton) .waitForLastSnackbar(); @@ -117,7 +116,7 @@ xdescribe('Client balance path', () => { let result = await nightmare .waitToGetProperty(selectors.clientBalance.firstBalanceLine, 'innerText'); - expect(result).toContain('50'); + expect(result).toEqual('€50.00'); }); it('should now click on the Clients button of the top bar menu', async() => { diff --git a/e2e/paths/03-worker-module/01_pbx.spec.js b/e2e/paths/03-worker-module/01_pbx.spec.js index 8d9a531c3..49d4db133 100644 --- a/e2e/paths/03-worker-module/01_pbx.spec.js +++ b/e2e/paths/03-worker-module/01_pbx.spec.js @@ -18,7 +18,7 @@ describe('Worker pbx path', () => { .waitToClick(selectors.workerPbx.saveButton) .waitForLastSnackbar(); - expect(result).toEqual('Invalid extension'); + expect(result).toEqual('Extension format is invalid'); }); it('should sucessfully save the changes', async() => { diff --git a/e2e/paths/03-worker-module/02_time_control.spec.js b/e2e/paths/03-worker-module/02_time_control.spec.js new file mode 100644 index 000000000..89273d26c --- /dev/null +++ b/e2e/paths/03-worker-module/02_time_control.spec.js @@ -0,0 +1,418 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('Worker time control path', () => { + const nightmare = createNightmare(); + + beforeAll(() => { + nightmare + .loginAndModule('hr', 'worker') + .accessToSearchResult('HankPym') + .accessToSection('worker.card.timeControl'); + }); + + describe('as HHRR', () => { + describe('on Monday', () => { + it('should scan in Hank Pym', async() => { + const scanTime = '07:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.mondayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfMonday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should scan out Hank Pym for break`, async() => { + const scanTime = '10:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.mondayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfMonday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should scan out Hank Pym and forget to scan in from the break`, async() => { + const scanTime = '15:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.mondayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should add the break's scan in for Hank Pym and be in the right order`, async() => { + const scanTime = '10:20'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.mondayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.fourthEntryOfMonday, 'innerText'); + + expect(result).toEqual('15:00'); + }); + + it(`should the third entry be the scan in from break`, async() => { + const scanTime = '10:20'; + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfMonday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 hours`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.mondayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + }); + + describe('on Tuesday', () => { + it('should happily scan in Hank Pym', async() => { + const scanTime = '08:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfTuesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should happily scan out Hank Pym for break`, async() => { + const scanTime = '10:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfTuesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should happily scan in Hank Pym from the break`, async() => { + const scanTime = '10:20'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfTuesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should happily scan out Hank Pym for the day`, async() => { + const scanTime = '16:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.tuesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.fourthEntryOfTuesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 happy hours`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.tuesdayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + }); + + describe('on Wednesday', () => { + it('should cheerfully scan in Hank Pym', async() => { + const scanTime = '09:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfWednesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should cheerfully scan out Hank Pym for break`, async() => { + const scanTime = '10:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfWednesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should cheerfully scan in Hank Pym from the break`, async() => { + const scanTime = '10:20'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfWednesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should cheerfully scan out Hank Pym for the day`, async() => { + const scanTime = '17:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.wednesdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.fourthEntryOfWednesday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 cheerfull hours`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.wednesdayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + }); + + describe('on Thursday', () => { + it('should joyfully scan in Hank Pym', async() => { + const scanTime = '09:59'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.thursdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfThursday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should joyfully scan out Hank Pym for break`, async() => { + const scanTime = '10:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.thursdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfThursday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should joyfully scan in Hank Pym from the break`, async() => { + const scanTime = '10:20'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.thursdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfThursday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should joyfully scan out Hank Pym for the day`, async() => { + const scanTime = '17:59'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.thursdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.fourthEntryOfThursday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 joyfull hours`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.thursdayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + }); + + describe('on Friday', () => { + it('should smilingly scan in Hank Pym', async() => { + const scanTime = '07:30'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.fridayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfFriday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should smilingly scan out Hank Pym for break`, async() => { + const scanTime = '10:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.fridayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfFriday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should smilingly scan in Hank Pym from the break`, async() => { + const scanTime = '10:20'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.fridayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.thirdEntryOfFriday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should smilingly scan out Hank Pym for the day`, async() => { + const scanTime = '15:30'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.fridayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.fourthEntryOfFriday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 hours with a smile on his face`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.fridayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + }); + }); + + describe('as salesBoss', () => { + describe('on Saturday', () => { + beforeAll(() => { + nightmare + .loginAndModule('salesBoss', 'worker') + .accessToSearchResult('HankPym') + .accessToSection('worker.card.timeControl'); + }); + + it('should lovingly scan in Hank Pym', async() => { + const scanTime = '06:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.saturdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfSaturday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should lovingly scan out Hank Pym for the day with no break to leave a bit early`, async() => { + const scanTime = '13:40'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.saturdayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfSaturday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 hours with all his will`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.saturdayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + }); + + describe('on Sunday', () => { + it('should gladly scan in Hank Pym', async() => { + const scanTime = '05:00'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.sundayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.firstEntryOfSunday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should gladly scan out Hank Pym for the day with no break to leave a bit early`, async() => { + const scanTime = '12:40'; + const result = await nightmare + .waitToClick(selectors.workerTimeControl.sundayAddTimeButton) + .clearInput(selectors.workerTimeControl.timeDialogInput) + .write(selectors.workerTimeControl.timeDialogInput, scanTime) + .waitToClick(selectors.workerTimeControl.confirmButton) + .waitToGetProperty(selectors.workerTimeControl.secondEntryOfSunday, 'innerText'); + + expect(result).toEqual(scanTime); + }); + + it(`should check Hank Pym worked 8 glad hours`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.workerTimeControl.sundayWorkedHours, 'innerText'); + + expect(result).toEqual('08:00 h.'); + }); + + it(`should check Hank Pym doesn't have hours set on the next months first week`, async() => { + const wholeWeekHours = await nightmare + .waitToClick(selectors.workerTimeControl.nextMonthButton) + .waitToGetProperty(selectors.workerTimeControl.weekWorkedHours, 'innerText'); + + expect(wholeWeekHours).toEqual('00:00 Hours'); + }); + + it(`should check he didn't scan in this week yet`, async() => { + const wholeWeekHours = await nightmare + .waitToClick(selectors.workerTimeControl.navigateBackToIndex) + .accessToSearchResult('salesBoss') + .accessToSection('worker.card.timeControl') + .waitToGetProperty(selectors.workerTimeControl.weekWorkedHours, 'innerText'); + + expect(wholeWeekHours).toEqual('00:00 Hours'); + }); + }); + }); + + describe('after all this amazing week', () => { + beforeAll(() => { + nightmare + .loginAndModule('HankPym', 'worker') + .accessToSearchResult('HankPym') + .accessToSection('worker.card.timeControl'); + }); + + it('should Hank Pym check his hours are alright', async() => { + const wholeWeekHours = await nightmare + .waitForTextInElement(selectors.workerTimeControl.weekWorkedHours, '56:00 Hours') + .waitToGetProperty(selectors.workerTimeControl.weekWorkedHours, 'innerText'); + + expect(wholeWeekHours).toEqual('56:00 Hours'); + }); + }); +}); diff --git a/e2e/paths/04-item-module/09_regularize.spec.js b/e2e/paths/04-item-module/09_regularize.spec.js index 8d352b493..0208a0eb5 100644 --- a/e2e/paths/04-item-module/09_regularize.spec.js +++ b/e2e/paths/04-item-module/09_regularize.spec.js @@ -174,9 +174,9 @@ describe('Item regularize path', () => { expect(url.hash).toEqual('#!/ticket/index'); }); - it('should search for the ticket with id 23 once again', async() => { + it('should search for the ticket with id 25 once again', async() => { const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, 23) + .write(selectors.ticketsIndex.searchTicketInput, 25) .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult); @@ -186,7 +186,7 @@ describe('Item regularize path', () => { it(`should now click on the search result to access to the ticket summary`, async() => { const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, '23') + .waitForTextInElement(selectors.ticketsIndex.searchResult, '25') .waitToClick(selectors.ticketsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); diff --git a/e2e/paths/04-item-module/10_item_index.spec.js b/e2e/paths/04-item-module/10_item_index.spec.js index 64b7b2874..b83b37c59 100644 --- a/e2e/paths/04-item-module/10_item_index.spec.js +++ b/e2e/paths/04-item-module/10_item_index.spec.js @@ -39,7 +39,7 @@ describe('Item index path', () => { it('should navigate forth and back to see the images column is still visible', async() => { const imageVisible = await nightmare .waitToClick(selectors.itemsIndex.searchResult) - .waitToClick(selectors.itemsIndex.goBackToModuleIndexButton) + .waitToClick(selectors.itemDescriptor.goBackToModuleIndexButton) .waitToClick(selectors.itemsIndex.searchIcon) .wait(selectors.itemsIndex.searchResult) .isVisible(selectors.itemsIndex.firstItemImage); @@ -76,7 +76,7 @@ describe('Item index path', () => { it('should now navigate forth and back to see the ids column is now visible', async() => { const idVisible = await nightmare .waitToClick(selectors.itemsIndex.searchResult) - .waitToClick(selectors.itemsIndex.goBackToModuleIndexButton) + .waitToClick(selectors.itemDescriptor.goBackToModuleIndexButton) .waitToClick(selectors.itemsIndex.searchIcon) .wait(selectors.itemsIndex.searchResult) .isVisible(selectors.itemsIndex.firstItemId); diff --git a/e2e/paths/05-ticket-module/01_create_ticket_observations.spec.js b/e2e/paths/05-ticket-module/01_observations.spec.js similarity index 77% rename from e2e/paths/05-ticket-module/01_create_ticket_observations.spec.js rename to e2e/paths/05-ticket-module/01_observations.spec.js index 3430a6771..42193ea57 100644 --- a/e2e/paths/05-ticket-module/01_create_ticket_observations.spec.js +++ b/e2e/paths/05-ticket-module/01_observations.spec.js @@ -7,13 +7,12 @@ describe('Ticket Create notes path', () => { beforeAll(() => { return nightmare .loginAndModule('employee', 'ticket') - .accessToSearchResult('id:1') + .accessToSearchResult(1) .accessToSection('ticket.card.observation'); }); - it(`should click create a new note and delete a former one`, async() => { + it('should create a new note', async() => { let result = await nightmare - .waitToClick(selectors.ticketNotes.firstNoteRemoveButton) .waitToClick(selectors.ticketNotes.addNoteButton) .autocompleteSearch(selectors.ticketNotes.firstNoteTypeAutocomplete, 'observation one') .write(selectors.ticketNotes.firstDescriptionInput, 'description') @@ -23,7 +22,7 @@ describe('Ticket Create notes path', () => { expect(result).toEqual('Data saved!'); }); - it(`should confirm the note is the expected one`, async() => { + it('should confirm the note is the expected one', async() => { let result = await nightmare .reloadSection('ticket.card.observation') .waitToGetProperty(`${selectors.ticketNotes.firstNoteTypeAutocomplete} input`, 'value'); @@ -35,4 +34,13 @@ describe('Ticket Create notes path', () => { expect(firstDescription).toEqual('description'); }); + + it('should delete the note', async() => { + let result = await nightmare + .waitToClick(selectors.ticketNotes.firstNoteRemoveButton) + .waitToClick(selectors.ticketNotes.submitNotesButton) + .waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); }); diff --git a/e2e/paths/05-ticket-module/02_ticket_expeditions_and_log.spec.js b/e2e/paths/05-ticket-module/02_expeditions_and_log.spec.js similarity index 98% rename from e2e/paths/05-ticket-module/02_ticket_expeditions_and_log.spec.js rename to e2e/paths/05-ticket-module/02_expeditions_and_log.spec.js index c979fb1fb..8e4645051 100644 --- a/e2e/paths/05-ticket-module/02_ticket_expeditions_and_log.spec.js +++ b/e2e/paths/05-ticket-module/02_expeditions_and_log.spec.js @@ -35,6 +35,6 @@ describe('Ticket expeditions and log path', () => { expect(changedBy).toEqual('production'); expect(actionTaken).toEqual('Deletes'); - expect(id).toEqual('3'); + expect(id).toEqual('2'); }); }); diff --git a/e2e/paths/05-ticket-module/03_list_sale.spec.js b/e2e/paths/05-ticket-module/03_sale.spec.js similarity index 89% rename from e2e/paths/05-ticket-module/03_list_sale.spec.js rename to e2e/paths/05-ticket-module/03_sale.spec.js index b261cc612..7334d29e1 100644 --- a/e2e/paths/05-ticket-module/03_list_sale.spec.js +++ b/e2e/paths/05-ticket-module/03_sale.spec.js @@ -7,7 +7,7 @@ describe('Ticket List sale path', () => { beforeAll(() => { return nightmare .loginAndModule('employee', 'ticket') - .accessToSearchResult('id:8') + .accessToSearchResult(12) .accessToSection('ticket.card.sale'); }); @@ -15,21 +15,21 @@ describe('Ticket List sale path', () => { const value = await nightmare .waitToGetProperty(selectors.ticketSales.firstSaleColour, 'innerText'); - expect(value).toContain('Silver'); + expect(value).toContain('Black'); }); it('should confirm the first ticket sale contains the lenght', async() => { const value = await nightmare .waitToGetProperty(selectors.ticketSales.firstSaleText, 'innerText'); - expect(value).toContain('5'); + expect(value).toContain('1'); }); it('should confirm the first ticket sale contains the price', async() => { const value = await nightmare .waitToGetProperty(selectors.ticketSales.firstSalePrice, 'innerText'); - expect(value).toContain('1.30'); + expect(value).toContain('1.72'); }); it('should confirm the first ticket sale contains the discount', async() => { @@ -43,7 +43,7 @@ describe('Ticket List sale path', () => { const value = await nightmare .waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText'); - expect(value).toContain('19.50'); + expect(value).toContain('34.40'); }); it('should navigate to the catalog by pressing the new item button', async() => { diff --git a/e2e/paths/05-ticket-module/04_create_ticket_packages.spec.js b/e2e/paths/05-ticket-module/04_packages.spec.js similarity index 100% rename from e2e/paths/05-ticket-module/04_create_ticket_packages.spec.js rename to e2e/paths/05-ticket-module/04_packages.spec.js diff --git a/e2e/paths/05-ticket-module/05_create_new_tracking_state.spec.js b/e2e/paths/05-ticket-module/05_tracking_state.spec.js similarity index 100% rename from e2e/paths/05-ticket-module/05_create_new_tracking_state.spec.js rename to e2e/paths/05-ticket-module/05_tracking_state.spec.js diff --git a/e2e/paths/05-ticket-module/06_edit_basic_data_steps.spec.js b/e2e/paths/05-ticket-module/06_basic_data_steps.spec.js similarity index 97% rename from e2e/paths/05-ticket-module/06_edit_basic_data_steps.spec.js rename to e2e/paths/05-ticket-module/06_basic_data_steps.spec.js index be8d5c983..4e0fe9945 100644 --- a/e2e/paths/05-ticket-module/06_edit_basic_data_steps.spec.js +++ b/e2e/paths/05-ticket-module/06_basic_data_steps.spec.js @@ -25,7 +25,7 @@ describe('Ticket Edit basic data path', () => { const result = await nightmare .waitToGetProperty(selectors.ticketBasicData.stepTwoTotalPriceDif, 'innerText'); - expect(result).toContain('-€4.50'); + expect(result).toContain('-€184.25'); }); it(`should then click next to move on to step three`, async() => { diff --git a/e2e/paths/05-ticket-module/07_edit_sale.spec.js b/e2e/paths/05-ticket-module/07_edit_sale.spec.js index 3deffa33b..4faab234a 100644 --- a/e2e/paths/05-ticket-module/07_edit_sale.spec.js +++ b/e2e/paths/05-ticket-module/07_edit_sale.spec.js @@ -1,28 +1,26 @@ import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; -// #1387 e2e Ticket Edit sale path -xdescribe('Ticket Edit sale path', () => { +describe('Ticket Edit sale path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('salesPerson', 'ticket') - .accessToSearchResult('16') + .accessToSearchResult(16) .accessToSection('ticket.card.sale'); }); - it(`should click on the second claim id to navigate over there`, async() => { + it(`should click on the first sale claim icon to navigate over there`, async() => { const url = await nightmare - .waitToClick(selectors.ticketSales.secondSaleClaimIcon) + .waitToClick(selectors.ticketSales.firstSaleClaimIcon) .wait(selectors.claimBasicData.claimStateAutocomplete) .parsedUrl(); expect(url.hash).toEqual('#!/claim/2/basic-data'); }); - - it('should now click on the Tickets button of the top bar menu', async() => { + it('should navigate to the tickets index', async() => { const url = await nightmare .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) @@ -33,28 +31,17 @@ xdescribe('Ticket Edit sale path', () => { expect(url.hash).toEqual('#!/ticket/index'); }); - it('should again search for a specific ticket', async() => { - const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, '16') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .countElement(selectors.ticketsIndex.searchResult); - - expect(result).toEqual(1); - }); - - it(`should now click on the search result to access to the ticket Sale`, async() => { + it(`should search for a ticket and then navigate to it's sales`, async() => { const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .accessToSearchResult(16) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); expect(url.hash).toContain('/sale'); }); - it(`should check the zoomed image isnt present`, async() => { + it(`should check the zoomed image isn't present`, async() => { const result = await nightmare .countElement(selectors.ticketSales.firstSaleZoomedImage); @@ -71,7 +58,7 @@ xdescribe('Ticket Edit sale path', () => { it(`should click on the zoomed image to close it`, async() => { const result = await nightmare - .wait(1000) + .wait(100) .clickIfVisible(selectors.ticketSales.firstSaleZoomedImage) .countElement(selectors.ticketSales.firstSaleZoomedImage); @@ -124,12 +111,8 @@ xdescribe('Ticket Edit sale path', () => { .waitToClick(selectors.globalItems.applicationsMenuButton) .wait(selectors.globalItems.applicationsMenuVisible) .waitToClick(selectors.globalItems.ticketsButton) - .write(selectors.ticketsIndex.searchTicketInput, '16') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .accessToSearchResult(16) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); @@ -138,17 +121,17 @@ xdescribe('Ticket Edit sale path', () => { it('should try to add a higher quantity value and then receive an error', async() => { const result = await nightmare - .waitToFocus(selectors.ticketSales.firstSaleQuantityCell) - .write(selectors.ticketSales.firstSaleQuantity, '9\u000d') + .focusElement(selectors.ticketSales.firstSaleQuantityCell) + .write(selectors.ticketSales.firstSaleQuantity, '11\u000d') .waitForLastSnackbar(); expect(result).toEqual('The new quantity should be smaller than the old one'); }); - it('should remove 1 from quantity', async() => { + it('should remove 1 from the first sale quantity', async() => { const result = await nightmare - .waitToFocus(selectors.ticketSales.firstSaleQuantityCell) - .write(selectors.ticketSales.firstSaleQuantity, '4\u000d') + .focusElement(selectors.ticketSales.firstSaleQuantityCell) + .write(selectors.ticketSales.firstSaleQuantity, '9\u000d') .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); @@ -156,7 +139,7 @@ xdescribe('Ticket Edit sale path', () => { it('should update the price', async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.firstSalePrice) + .waitToClick(`${selectors.ticketSales.firstSalePrice} > span`) .write(selectors.ticketSales.firstSalePriceInput, '5\u000d') .waitForLastSnackbar(); @@ -165,7 +148,8 @@ xdescribe('Ticket Edit sale path', () => { it('should confirm the price have been updated', async() => { const result = await nightmare - .waitToGetProperty(selectors.ticketSales.firstSalePrice, 'innerText'); + .wait(1999) + .waitToGetProperty(`${selectors.ticketSales.firstSalePrice} span`, 'innerText'); expect(result).toContain('5.00'); }); @@ -174,14 +158,13 @@ xdescribe('Ticket Edit sale path', () => { const result = await nightmare .waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText'); - expect(result).toContain('20.00'); + expect(result).toContain('45.00'); }); it('should update the discount', async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.firstSaleDiscount) + .waitToClick(`${selectors.ticketSales.firstSaleDiscount} > span`) .write(selectors.ticketSales.firstSaleDiscountInput, '50\u000d') - // .write('body', '\u000d') // simulates enter .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); @@ -189,29 +172,29 @@ xdescribe('Ticket Edit sale path', () => { it('should confirm the discount have been updated', async() => { const result = await nightmare - .waitForTextInElement(selectors.ticketSales.firstSaleDiscount, '50 %') - .waitToGetProperty(selectors.ticketSales.firstSaleDiscount, 'innerText'); + .waitForTextInElement(`${selectors.ticketSales.firstSaleDiscount} > span`, '50 %') + .waitToGetProperty(`${selectors.ticketSales.firstSaleDiscount} > span`, 'innerText'); expect(result).toContain('50 %'); }); it('should confirm the total import for that item have been updated', async() => { const result = await nightmare - .waitForTextInElement(selectors.ticketSales.firstSaleImport, '10.00') + .waitForTextInElement(selectors.ticketSales.firstSaleImport, '22.50') .waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText'); - expect(result).toContain('10.00'); + expect(result).toContain('22.50'); }); it('should select the third sale and create a claim of it', async() => { const url = await nightmare .waitToClick(selectors.ticketSales.thirdSaleCheckbox) - .waitToClick(selectors.ticketSales.moreMenuButton) + .waitToClick(selectors.ticketSales.moreMenu) .waitToClick(selectors.ticketSales.moreMenuCreateClaim) .wait(selectors.claimBasicData.claimStateAutocomplete) .parsedUrl(); - expect(url.hash).toEqual('#!/claim/5/basic-data'); + expect(url.hash).toContain('basic-data'); }); it('should click on the Claims button of the top bar menu', async() => { @@ -246,21 +229,10 @@ xdescribe('Ticket Edit sale path', () => { expect(url.hash).toEqual('#!/ticket/index'); }); - it('should search the ticket', async() => { - const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, '16') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .countElement(selectors.ticketsIndex.searchResult); - - expect(result).toEqual(1); - }); - - it(`should click on the result to access to the ticket Sale`, async() => { + it('should search for a ticket then access to the sales section', async() => { const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .accessToSearchResult(16) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); @@ -272,6 +244,7 @@ xdescribe('Ticket Edit sale path', () => { .waitToClick(selectors.ticketSales.thirdSaleCheckbox) .waitToClick(selectors.ticketSales.deleteSaleButton) .waitToClick(selectors.ticketSales.acceptDeleteLineButton) + .waitForSpinnerLoad() .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); @@ -284,45 +257,33 @@ xdescribe('Ticket Edit sale path', () => { expect(result).toEqual(3); }); - it('should select the third sale and attempt to send it to a frozen client ticket', async() => { + it('should select the third sale and transfer it to a valid ticket', async() => { + const targetTicketId = 12; + const result = await nightmare .waitToClick(selectors.ticketSales.thirdSaleCheckbox) .waitToClick(selectors.ticketSales.transferSaleButton) - .write(selectors.ticketSales.moveToTicketInput, 2) + .write(selectors.ticketSales.moveToTicketInput, targetTicketId) .waitToClick(selectors.ticketSales.moveToTicketButton) - .waitForLastSnackbar(); - - expect(result).toEqual(`The sales of this ticket can't be modified`); - }); - - it('should transfer the third sale to a valid ticket', async() => { - const result = await nightmare - .waitToClick(selectors.ticketSales.moveToTicketInputClearButton) - .write(selectors.ticketSales.moveToTicketInput, 12) - .waitToClick(selectors.ticketSales.moveToTicketButton) - .waitForURL('ticket/12/sale') + .waitForURL(`ticket/${targetTicketId}/sale`) .parsedUrl(); - expect(result.hash).toContain(`ticket/12/sale`); + expect(result.hash).toContain(`ticket/${targetTicketId}/sale`); }); it('should confirm the transfered line is the correct one', async() => { const result = await nightmare - .wait(selectors.ticketSales.firstSaleText) - .waitToGetProperty(selectors.ticketSales.firstSaleText, 'innerText'); + .wait(selectors.ticketSales.secondSaleText) + .waitToGetProperty(selectors.ticketSales.secondSaleText, 'innerText'); - expect(result).toContain(`Melee weapon heavy shield 1x0.5m`); + expect(result).toContain(`Ranged weapon longbow 2m`); }); it('should go back to the original ticket sales section', async() => { const url = await nightmare - .waitToClick(selectors.itemsIndex.goBackToModuleIndexButton) - .write(selectors.ticketsIndex.searchTicketInput, '16') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton) + .accessToSearchResult(16) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); @@ -339,13 +300,9 @@ xdescribe('Ticket Edit sale path', () => { it('should go back to the receiver ticket sales section', async() => { const url = await nightmare - .waitToClick(selectors.itemsIndex.goBackToModuleIndexButton) - .write(selectors.ticketsIndex.searchTicketInput, 'id:12') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton) + .accessToSearchResult(12) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); @@ -353,78 +310,66 @@ xdescribe('Ticket Edit sale path', () => { }); it('should transfer the sale back to the original ticket', async() => { + const targetTicketId = 16; + const result = await nightmare - .waitToClick(selectors.ticketSales.firstSaleCheckbox) + .waitToClick(selectors.ticketSales.secondSaleCheckbox) .waitToClick(selectors.ticketSales.transferSaleButton) - .write(selectors.ticketSales.moveToTicketInput, '16') + .write(selectors.ticketSales.moveToTicketInput, targetTicketId) .waitToClick(selectors.ticketSales.moveToTicketButton) - .waitForURL('ticket/16/sale') + .waitForURL(`ticket/${targetTicketId}/sale`) .parsedUrl(); - expect(result.hash).toContain(`ticket/16/sale`); + expect(result.hash).toContain(`ticket/${targetTicketId}/sale`); }); it('should confirm the original ticket received the line', async() => { const result = await nightmare - // .waitForNumberOfElements(selectors.ticketSales.saleLine, 3) + .waitForNumberOfElements(selectors.ticketSales.saleLine, 3) .countElement(selectors.ticketSales.saleLine); expect(result).toEqual(3); }); - it('should now go back to the original ticket sales section', async() => { + it(`should throw an error when attempting to create a ticket for an inactive client`, async() => { + const result = await nightmare + .waitToClick(selectors.ticketSales.firstSaleCheckbox) + .waitToClick(selectors.ticketSales.transferSaleButton) + .waitToClick(selectors.ticketSales.moveToNewTicketButton) + .waitToClick(selectors.ticketSales.acceptDeleteTicketButton) + .waitForLastSnackbar(); + + expect(result).toEqual(`You can't create a ticket for a inactive client`); + }); + + it('should go now to the ticket sales section of an active, not frozen client', async() => { const url = await nightmare - .waitToClick(selectors.itemsIndex.goBackToModuleIndexButton) - .write(selectors.ticketsIndex.searchTicketInput, 'id:8') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 24') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton) + .accessToSearchResult(13) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); expect(url.hash).toContain('/sale'); }); - it('should select the second and third sale and tranfer them to a new ticket then get to the ticket index', async() => { + it(`should select all sales, tranfer them to a new ticket and delete the sender ticket as it would've been left empty`, async() => { + const senderTicketId = 13; + const url = await nightmare .waitToClick(selectors.ticketSales.firstSaleCheckbox) .waitToClick(selectors.ticketSales.transferSaleButton) .waitToClick(selectors.ticketSales.moveToNewTicketButton) - .resetLogin() - .waitForLogin('salesPerson') - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.ticketsButton) - .wait(selectors.ticketsIndex.searchTicketInput) - .parsedUrl(); - - expect(url.hash).toEqual('#!/ticket/index'); - }); - - it('should search for a specific created ticket', async() => { - const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, 'nickname:(address 24) stateFk:2') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .countElement(selectors.ticketsIndex.searchResult); - - expect(result).toEqual(1); - }); - - it(`should click on the search result to access to the ticket Sale once more`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 24') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) - .waitForURL('/sale') + .waitToClick(selectors.ticketSales.acceptDeleteTicketButton) + .wait((selector, ticketId) => { + return document.querySelector(selector).innerText.toLowerCase().indexOf(`${ticketId}`) == -1; + }, selectors.ticketDescriptor.idLabelValue, senderTicketId) .parsedUrl(); expect(url.hash).toContain('/sale'); }); - it('should confirm the new ticket received both lines', async() => { + it('should confirm the new ticket received the line', async() => { const result = await nightmare .countElement(selectors.ticketSales.saleLine); @@ -441,8 +386,8 @@ xdescribe('Ticket Edit sale path', () => { it('should mark the first sale as reserved', async() => { const result = await nightmare .waitToClick(selectors.ticketSales.firstSaleCheckbox) - .waitToClick(selectors.ticketSales.moreMenuButton) - .waitToClick(selectors.ticketSales.moreMenuReseveOption) + .waitToClick(selectors.ticketSales.moreMenu) + .waitToClick(selectors.ticketSales.moreMenuReserve) .waitForClassNotPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide') .isVisible(selectors.ticketSales.firstSaleReservedIcon); @@ -451,9 +396,8 @@ xdescribe('Ticket Edit sale path', () => { it('should unmark the first sale as reserved', async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.firstSaleCheckbox) - .waitToClick(selectors.ticketSales.moreMenuButton) - .waitToClick(selectors.ticketSales.moreMenuUnmarkResevedOption) + .waitToClick(selectors.ticketSales.moreMenu) + .waitToClick(selectors.ticketSales.moreMenuUnmarkReseved) .waitForClassPresent(selectors.ticketSales.firstSaleReservedIcon, 'ng-hide') .isVisible(selectors.ticketSales.firstSaleReservedIcon); @@ -462,8 +406,7 @@ xdescribe('Ticket Edit sale path', () => { it('should update all sales discount', async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.selectAllSalesCheckbox) - .waitToClick(selectors.ticketSales.moreMenuButton) + .waitToClick(selectors.ticketSales.moreMenu) .waitToClick(selectors.ticketSales.moreMenuUpdateDiscount) .write(selectors.ticketSales.moreMenuUpdateDiscountInput, 100) .write('body', '\u000d') @@ -473,80 +416,39 @@ xdescribe('Ticket Edit sale path', () => { expect(result).toContain('0.00'); }); - it('should log in as Production role and go to the ticket index', async() => { + it('should log in as Production role and go to a target ticket summary', async() => { const url = await nightmare - .waitForLogin('production') - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.ticketsButton) - .wait(selectors.ticketsIndex.searchTicketInput) + .loginAndModule('production', 'ticket') + .accessToSearchResult(13) + .waitForURL('/summary') .parsedUrl(); - expect(url.hash).toEqual('#!/ticket/index'); + expect(url.hash).toContain('/summary'); }); - it('should now search for a specific ticket', async() => { + it(`should check it's state is deleted`, async() => { const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, '16') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .countElement(selectors.ticketsIndex.searchResult); + .waitToGetProperty(selectors.ticketDescriptor.stateLabelValue, 'innerText'); - expect(result).toEqual(1); - }); - - it(`should now click on the search result to access to the ticket Tracking`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketTracking.trackingButton) - .waitForURL('/tracking/index') - .parsedUrl(); - - expect(url.hash).toContain('/tracking/index'); - }); - - it(`should click on the edit ticket tracking state button`, async() => { - const url = await nightmare - .waitToClick(selectors.ticketTracking.createStateButton) - .waitForURL('/tracking/edit') - .parsedUrl(); - - expect(url.hash).toContain('/tracking/edit'); - }); - - it(`should set the state of the ticket to preparation`, async() => { - const url = await nightmare - .autocompleteSearch(selectors.ticketTracking.stateAutocomplete, 'Preparación') - .waitToClick(selectors.ticketTracking.saveButton) - .waitForURL('/tracking/index') - .parsedUrl(); - - expect(url.hash).toContain('/tracking/index'); - }); - - it(`should click on the ticket Sale menu button`, async() => { - const url = await nightmare - .waitToClick(selectors.ticketSales.saleButton) - .waitForURL('/sale') - .parsedUrl(); - - expect(url.hash).toContain('/sale'); + expect(result).toEqual('State Eliminado'); }); describe('when state is preparation and loged as Production', () => { it(`should not be able to edit the sale price`, async() => { const result = await nightmare - .wait(selectors.ticketSales.firstSaleID) - .exists(selectors.ticketSales.firstSalePrice); + .waitToClick(selectors.ticketDescriptor.goBackToModuleIndexButton) + .accessToSearchResult(8) + .accessToSection('ticket.card.sale') + .waitToClick(selectors.ticketSales.firstSalePrice) + .exists(selectors.ticketSales.firstSalePriceInput); expect(result).toBeFalsy(); }); it(`should not be able to edit the sale discount`, async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.firstSaleID) - .exists(selectors.ticketSales.firstSaleDiscount); + .waitToClick(selectors.ticketSales.firstSaleDiscount) + .exists(selectors.ticketSales.firstSaleDiscountInput); expect(result).toBeFalsy(); }); @@ -559,33 +461,11 @@ xdescribe('Ticket Edit sale path', () => { expect(result).toBeFalsy(); }); - it('should log in as salesPerson role and go to the ticket index', async() => { + it('should log in as salesPerson then go to the sales of a target ticket', async() => { const url = await nightmare - .waitForLogin('salesPerson') - .waitToClick(selectors.globalItems.applicationsMenuButton) - .wait(selectors.globalItems.applicationsMenuVisible) - .waitToClick(selectors.globalItems.ticketsButton) - .wait(selectors.ticketsIndex.searchTicketInput) - .parsedUrl(); - - expect(url.hash).toEqual('#!/ticket/index'); - }); - - it('should once again search for a specific ticket', async() => { - const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, '16') - .waitToClick(selectors.ticketsIndex.searchButton) - .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) - .countElement(selectors.ticketsIndex.searchResult); - - expect(result).toEqual(1); - }); - - it(`should click on the search result to access to the ticket Sale once again`, async() => { - const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') - .waitToClick(selectors.ticketsIndex.searchResult) - .waitToClick(selectors.ticketSales.saleButton) + .loginAndModule('salesPerson', 'ticket') + .accessToSearchResult(8) + .accessToSection('ticket.card.sale') .waitForURL('/sale') .parsedUrl(); @@ -594,23 +474,23 @@ xdescribe('Ticket Edit sale path', () => { }); describe('when state is preparation and loged as salesPerson', () => { - it(`shouldnt be able to edit the sale price`, async() => { + it(`shouldn't be able to edit the sale price`, async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.firstSaleID) - .exists(selectors.ticketSales.firstSalePrice); + .waitToClick(selectors.ticketSales.firstSalePrice) + .exists(selectors.ticketSales.firstSalePriceInput); expect(result).toBeFalsy(); }); - it(`shouldnt be able to edit the sale discount`, async() => { + it(`should be able to edit the sale discount`, async() => { const result = await nightmare - .waitToClick(selectors.ticketSales.firstSaleID) - .exists(selectors.ticketSales.firstSaleDiscount); + .waitToClick(selectors.ticketSales.firstSaleDiscount) + .exists(selectors.ticketSales.firstSaleDiscountInput); expect(result).toBeFalsy(); }); - it(`shouldnt be able to edit the sale state`, async() => { + it(`should not be able to edit the sale state`, async() => { const result = await nightmare .waitToClick(selectors.ticketSales.stateMenuButton) .exists(selectors.ticketSales.stateMenuOptions); diff --git a/e2e/paths/05-ticket-module/08_list_components.spec.js b/e2e/paths/05-ticket-module/08_components.spec.js similarity index 100% rename from e2e/paths/05-ticket-module/08_list_components.spec.js rename to e2e/paths/05-ticket-module/08_components.spec.js diff --git a/e2e/paths/05-ticket-module/09_ticket_weekly.spec.js b/e2e/paths/05-ticket-module/09_ticket_weekly.spec.js index 4b7a5266b..a42e6c527 100644 --- a/e2e/paths/05-ticket-module/09_ticket_weekly.spec.js +++ b/e2e/paths/05-ticket-module/09_ticket_weekly.spec.js @@ -49,7 +49,7 @@ describe('Ticket descriptor path', () => { expect(url.hash).toContain('/summary'); }); - it('should add the ticket to thirsday turn using the descriptor more menu', async() => { + it('should add the ticket to thursday turn using the descriptor more menu', async() => { const result = await nightmare .waitToClick(selectors.ticketDescriptor.moreMenu) .waitToClick(selectors.ticketDescriptor.moreMenuAddToTurn) @@ -139,9 +139,12 @@ describe('Ticket descriptor path', () => { expect(result).toEqual('Saturday'); }); + // Test #1450 here + it('should delete the weekly ticket 11', async() => { const result = await nightmare .waitToClick(selectors.ticketsIndex.sixthWeeklyTicketDeleteIcon) + .waitToClick(selectors.ticketsIndex.acceptDeleteTurn) .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); diff --git a/e2e/paths/05-ticket-module/10_ticket_request.spec.js b/e2e/paths/05-ticket-module/10_request.spec.js similarity index 100% rename from e2e/paths/05-ticket-module/10_ticket_request.spec.js rename to e2e/paths/05-ticket-module/10_request.spec.js diff --git a/e2e/paths/05-ticket-module/11_ticket_diary.spec.js b/e2e/paths/05-ticket-module/11_diary.spec.js similarity index 80% rename from e2e/paths/05-ticket-module/11_ticket_diary.spec.js rename to e2e/paths/05-ticket-module/11_diary.spec.js index 933628e5d..7ff6bc08f 100644 --- a/e2e/paths/05-ticket-module/11_ticket_diary.spec.js +++ b/e2e/paths/05-ticket-module/11_diary.spec.js @@ -12,7 +12,7 @@ describe('Ticket diary path', () => { it('should search for a specific ticket', async() => { const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, 'id:1') + .write(selectors.ticketsIndex.searchTicketInput, 1) .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult); @@ -22,7 +22,7 @@ describe('Ticket diary path', () => { it(`should click on the search result to access to the ticket summary`, async() => { const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21') + .waitForTextInElement(selectors.ticketsIndex.searchResult, 'Bat cave') .waitToClick(selectors.ticketsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); @@ -31,26 +31,27 @@ describe('Ticket diary path', () => { }); it(`should navigate to the item diary from the 1st sale item id descriptor popover`, async() => { + const itemId = 2; const url = await nightmare .waitToClick(selectors.ticketSummary.firstSaleItemId) .waitToClick(selectors.ticketSummary.popoverDiaryButton) .waitForLogin('employee') - .goto(`${config.url}#!/item/1/diary?warehouseFk=1&ticketFk=1`) + .goto(`${config.url}#!/item/${itemId}/diary?warehouseFk=1&ticketFk=1`) .parsedUrl(); expect(url.hash).toContain('/diary'); }); - it(`should check the seventh line id is marked as counter`, async() => { + it(`should check the second line id is marked as counter`, async() => { const result = await nightmare - .waitToGetProperty(selectors.itemDiary.thirdTicketId, 'className'); + .waitToGetProperty(selectors.itemDiary.secondTicketId, 'className'); expect(result).toContain('counter'); }); - it(`should check the fifth line balance is marked as counter`, async() => { + it(`should check the third line balance is marked as counter`, async() => { const result = await nightmare - .waitToGetProperty(`${selectors.itemDiary.fifthBalance} > span`, 'className'); + .waitToGetProperty(`${selectors.itemDiary.fourthBalance} > span`, 'className'); expect(result).toContain('counter'); }); diff --git a/e2e/paths/05-ticket-module/12_descriptor.spec.js b/e2e/paths/05-ticket-module/12_descriptor.spec.js index 5d47d504d..bfc6ad501 100644 --- a/e2e/paths/05-ticket-module/12_descriptor.spec.js +++ b/e2e/paths/05-ticket-module/12_descriptor.spec.js @@ -6,13 +6,13 @@ describe('Ticket descriptor path', () => { beforeAll(() => { nightmare - .loginAndModule('employee', 'ticket'); + .loginAndModule('salesperson', 'ticket'); }); describe('Delete ticket', () => { it('should search for an specific ticket', async() => { const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, '17') + .write(selectors.ticketsIndex.searchTicketInput, 18) .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult); @@ -22,7 +22,7 @@ describe('Ticket descriptor path', () => { it(`should click on the search result to access to the ticket summary`, async() => { const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 26') + .waitForTextInElement(selectors.ticketsIndex.searchResult, 'Cerebro') .waitToClick(selectors.ticketsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); @@ -49,7 +49,7 @@ describe('Ticket descriptor path', () => { it(`should search for the deleted ticket and check it's date`, async() => { const result = await nightmare - .write(selectors.ticketsIndex.searchTicketInput, 17) + .write(selectors.ticketsIndex.searchTicketInput, 18) .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .wait(selectors.ticketsIndex.searchResultDate) @@ -63,7 +63,7 @@ describe('Ticket descriptor path', () => { it('should search for a ticket', async() => { const result = await nightmare .clearInput(selectors.ticketsIndex.searchTicketInput) - .write(selectors.ticketsIndex.searchTicketInput, 20) + .write(selectors.ticketsIndex.searchTicketInput, 16) .waitToClick(selectors.ticketsIndex.searchButton) .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) .countElement(selectors.ticketsIndex.searchResult); @@ -71,9 +71,9 @@ describe('Ticket descriptor path', () => { expect(result).toEqual(1); }); - it(`should click on the search result to access to the ticket summary`, async() => { + it(`should now click on the search result to access to the ticket summary`, async() => { const url = await nightmare - .waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 28') + .waitForTextInElement(selectors.ticketsIndex.searchResult, 'Many Places') .waitToClick(selectors.ticketsIndex.searchResult) .waitForURL('/summary') .parsedUrl(); @@ -85,16 +85,16 @@ describe('Ticket descriptor path', () => { const isVisible = await nightmare .waitToClick(selectors.ticketDescriptor.moreMenu) .waitToClick(selectors.ticketDescriptor.moreMenuAddStowaway) - .wait(selectors.ticketDescriptor.addStowawayDialogSecondTicket) - .isVisible(selectors.ticketDescriptor.addStowawayDialogSecondTicket); + .wait(selectors.ticketDescriptor.addStowawayDialogFirstTicket) + .isVisible(selectors.ticketDescriptor.addStowawayDialogFirstTicket); expect(isVisible).toBeTruthy(); }); - it('should add the second ticket as stowaway', async() => { + it('should add a ticket as stowaway', async() => { const result = await nightmare - .waitToClick(selectors.ticketDescriptor.addStowawayDialogSecondTicket) + .waitToClick(selectors.ticketDescriptor.addStowawayDialogFirstTicket) .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); @@ -103,32 +103,37 @@ describe('Ticket descriptor path', () => { it(`should navigate to the added ticket using the descriptors ship button`, async() => { const url = await nightmare .waitToClick(selectors.ticketDescriptor.closeStowawayDialog) - .waitToClick(selectors.ticketDescriptor.shipSelectButton) - .waitToClick(selectors.ticketDescriptor.shipMenuSecondTicket) - .waitForURL('#!/ticket/22/sale') + .waitToClick(selectors.ticketDescriptor.shipButton) + .waitForURL('#!/ticket/17/summary') .parsedUrl(); - expect(url.hash).toContain('#!/ticket/22/sale'); + expect(url.hash).toContain('#!/ticket/17/summary'); + }); + + it(`should check the state of the stowaway ticket is embarked`, async() => { + const state = await nightmare + .waitToGetProperty(selectors.ticketDescriptor.stateLabelValue, 'innerText'); + + expect(state).toEqual('State Embarcando'); }); it(`should navigate to the ship ticket using the descriptors ship button`, async() => { const url = await nightmare .waitToClick(selectors.ticketDescriptor.shipButton) - .waitForURL('#!/ticket/20/summary') + .waitForURL('#!/ticket/16/summary') .parsedUrl(); - expect(url.hash).toContain('#!/ticket/20/summary'); + expect(url.hash).toContain('#!/ticket/16/summary'); }); it(`should navigate back to the added ticket using the descriptors ship button`, async() => { const url = await nightmare .waitToClick(selectors.ticketDescriptor.closeStowawayDialog) - .waitToClick(selectors.ticketDescriptor.shipSelectButton) - .waitToClick(selectors.ticketDescriptor.shipMenuSecondTicket) - .waitForURL('#!/ticket/22/sale') + .waitToClick(selectors.ticketDescriptor.shipButton) + .waitForURL('#!/ticket/17/summary') .parsedUrl(); - expect(url.hash).toContain('#!/ticket/22/sale'); + expect(url.hash).toContain('#!/ticket/17/summary'); }); it('should delete the stowaway', async() => { @@ -151,7 +156,7 @@ describe('Ticket descriptor path', () => { describe('Make invoice', () => { it('should login as adminBoss role then search for a ticket', async() => { - const invoiceableTicketId = 11; + const invoiceableTicketId = 14; const url = await nightmare .loginAndModule('adminBoss', 'ticket') diff --git a/e2e/paths/05-ticket-module/13_create_ticket_services.spec.js b/e2e/paths/05-ticket-module/13_create_ticket_services.spec.js deleted file mode 100644 index 04d3e60e9..000000000 --- a/e2e/paths/05-ticket-module/13_create_ticket_services.spec.js +++ /dev/null @@ -1,75 +0,0 @@ -import selectors from '../../helpers/selectors.js'; -import createNightmare from '../../helpers/nightmare'; - -xdescribe('Ticket services path', () => { - const nightmare = createNightmare(); - - beforeAll(() => { - nightmare - .loginAndModule('employee', 'ticket') - .accessToSearchResult(8) - .accessToSection('ticket.card.service'); - }); - - it('should edit the first service', async() => { - const result = await nightmare - .autocompleteSearch(selectors.ticketService.firstDescriptionAutocomplete, 'Documentos') - .clearInput(selectors.ticketService.firstQuantityInput) - .write(selectors.ticketService.firstQuantityInput, 99) - .clearInput(selectors.ticketService.firstPriceInput) - .write(selectors.ticketService.firstPriceInput, 999) - .autocompleteSearch(selectors.ticketService.firstVatTypeAutocomplete, 'General VAT') - .waitToClick(selectors.ticketService.saveServiceButton) - .waitForLastSnackbar(); - - expect(result).toEqual('Data saved!'); - }, 15000); - - it('should confirm the service description was edited correctly', async() => { - const result = await nightmare - .reloadSection('ticket.card.service') - .waitToGetProperty(`${selectors.ticketService.firstDescriptionAutocomplete} input`, 'value'); - - expect(result).toEqual('Documentos'); - }); - - it('should confirm the service quantity was edited correctly', async() => { - const result = await nightmare - .waitToGetProperty(selectors.ticketService.firstQuantityInput, 'value'); - - expect(result).toEqual('99'); - }); - - it('should confirm the service price was edited correctly', async() => { - const result = await nightmare - .waitToGetProperty(selectors.ticketService.firstPriceInput, 'value'); - - expect(result).toEqual('999'); - }); - - it('should confirm the service VAT was edited correctly', async() => { - const result = await nightmare - .waitToGetProperty(`${selectors.ticketService.firstVatTypeAutocomplete} input`, 'value'); - - expect(result).toEqual('General VAT'); - }); - - it('should delete the service', async() => { - const result = await nightmare - .waitToClick(selectors.ticketService.fistDeleteServiceButton) - .waitForNumberOfElements(selectors.ticketService.serviceLine, 0) - .waitToClick(selectors.ticketService.saveServiceButton) - .waitForLastSnackbar(); - - expect(result).toEqual('Data saved!'); - }); - - it('should confirm the service was sucessfully removed', async() => { - const result = await nightmare - .reloadSection('ticket.card.service') - .waitForNumberOfElements(selectors.ticketService.serviceLine, 0) - .countElement(selectors.ticketService.serviceLine); - - expect(result).toEqual(0); - }); -}); diff --git a/e2e/paths/05-ticket-module/13_services.spec.js b/e2e/paths/05-ticket-module/13_services.spec.js new file mode 100644 index 000000000..31d262778 --- /dev/null +++ b/e2e/paths/05-ticket-module/13_services.spec.js @@ -0,0 +1,143 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('Ticket services path', () => { + const nightmare = createNightmare(); + const invoicedTicketId = 1; + + describe('as employee', () => { + beforeAll(() => { + nightmare + .loginAndModule('employee', 'ticket') + .accessToSearchResult(invoicedTicketId) + .accessToSection('ticket.card.service'); + }); + + it('should find the add descripton button disabled for this user role', async() => { + const result = await nightmare + .waitToClick(selectors.ticketService.addServiceButton) + .wait(selectors.ticketService.firstAddDescriptionButton) + .evaluate(selector => { + return document.querySelector(selector).disabled; + }, selectors.ticketService.firstAddDescriptionButton); + + expect(result).toBeTruthy(); + }); + + it('should receive an error if you attempt to save a service without access rights', async() => { + const result = await nightmare + .clearInput(selectors.ticketService.firstPriceInput) + .write(selectors.ticketService.firstPriceInput, 999) + .waitToClick(selectors.ticketService.saveServiceButton) + .waitForLastSnackbar(); + + expect(result).toEqual(`The current ticket can't be modified`); + }); + }); + + describe('as administrative', () => { + let editableTicketId = 16; + it('should navigate to the services of a target ticket', async() => { + const url = await nightmare + .loginAndModule('administrative', 'ticket') + .accessToSearchResult(editableTicketId) + .accessToSection('ticket.card.service') + .waitForURL('/service') + .parsedUrl(); + + expect(url.hash).toContain('/service'); + }); + + it('should click on the add button to prepare the form to create a new service', async() => { + const result = await nightmare + .waitToClick(selectors.ticketService.addServiceButton) + .isVisible(selectors.ticketService.firstDescriptionAutocomplete); + + expect(result).toBeTruthy(); + }); + + it('should receive an error if you attempt to save it with empty fields', async() => { + const result = await nightmare + .waitToClick(selectors.ticketService.saveServiceButton) + .waitForLastSnackbar(); + + expect(result).toEqual(`can't be blank`); + }); + + it('should click on the add new description to open the dialog', async() => { + const result = await nightmare + .waitToClick(selectors.ticketService.firstAddDescriptionButton) + .waitForClassPresent('vn-ticket-service > vn-dialog', 'shown') + .isVisible(selectors.ticketService.newDescriptionInput); + + expect(result).toBeTruthy(); + }); + + it('should receive an error if description is empty on submit', async() => { + const result = await nightmare + .waitToClick(selectors.ticketService.saveDescriptionButton) + .waitForLastSnackbar(); + + expect(result).toEqual(`Name can't be empty`); + }); + + it('should create a new description then add price then create the service', async() => { + const result = await nightmare + .write(selectors.ticketService.newDescriptionInput, 'accurate description') + .waitToClick(selectors.ticketService.saveDescriptionButton) + .write(selectors.ticketService.firstPriceInput, 999) + .waitToClick(selectors.ticketService.saveServiceButton) + .waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); + + it('should confirm the service description was created correctly', async() => { + const result = await nightmare + .reloadSection('ticket.card.service') + .waitToGetProperty(`${selectors.ticketService.firstDescriptionAutocomplete} input`, 'value'); + + expect(result).toEqual('accurate description'); + }); + + it('should confirm the service quantity was created correctly', async() => { + const result = await nightmare + .waitToGetProperty(selectors.ticketService.firstQuantityInput, 'value'); + + expect(result).toEqual('1'); + }); + + it('should confirm the service price was created correctly', async() => { + const result = await nightmare + .waitToGetProperty(selectors.ticketService.firstPriceInput, 'value'); + + expect(result).toEqual('999'); + }); + + it('should confirm the service VAT was created correctly', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.ticketService.firstVatTypeAutocomplete} input`, 'value'); + + expect(result).toEqual('General VAT'); + }); + + it('should delete the service', async() => { + const result = await nightmare + .waitToClick(selectors.ticketService.fistDeleteServiceButton) + .waitForNumberOfElements(selectors.ticketService.serviceLine, 0) + .waitToClick(selectors.ticketService.saveServiceButton) + .waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); + + it(`should confirm the service wasn't sucessfully removed`, async() => { + const result = await nightmare + .reloadSection('ticket.card.service') + .waitForNumberOfElements(selectors.ticketService.serviceLine, 0) + .countElement(selectors.ticketService.serviceLine); + + expect(result).toEqual(0); + }); + }); +}); diff --git a/e2e/paths/05-ticket-module/14_create_ticket.spec.js b/e2e/paths/05-ticket-module/14_create_ticket.spec.js index 9d6ab639f..253b14976 100644 --- a/e2e/paths/05-ticket-module/14_create_ticket.spec.js +++ b/e2e/paths/05-ticket-module/14_create_ticket.spec.js @@ -25,6 +25,7 @@ describe('Ticket create path', () => { .datePicker(selectors.createTicketView.deliveryDateInput, 1, null) .autocompleteSearch(selectors.createTicketView.warehouseAutocomplete, 'Warehouse One') .autocompleteSearch(selectors.createTicketView.agencyAutocomplete, 'Silla247') + .wait(1999) .waitToClick(selectors.createTicketView.createButton) .waitForLastSnackbar(); diff --git a/e2e/paths/05-ticket-module/16_summary.spec.js b/e2e/paths/05-ticket-module/16_summary.spec.js new file mode 100644 index 000000000..d532bc139 --- /dev/null +++ b/e2e/paths/05-ticket-module/16_summary.spec.js @@ -0,0 +1,105 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('Ticket Summary path', () => { + const nightmare = createNightmare(); + const ticketId = 20; + + it('should navigate to the target ticket summary section', async() => { + let url = await nightmare + .loginAndModule('employee', 'ticket') + .accessToSearchResult(ticketId) + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it(`should display details from the ticket and it's client on the top of the header`, async() => { + let result = await nightmare + .waitForSpinnerLoad() + .waitToGetProperty(selectors.ticketSummary.header, 'innerText'); + + expect(result).toContain(`Ticket #${ticketId}`); + expect(result).toContain('Bruce Banner (109)'); + expect(result).toContain('Somewhere in Thailand'); + }); + + it('should display ticket details', async() => { + let result = await nightmare + .waitToGetProperty(selectors.ticketSummary.state, 'innerText'); + + expect(result).toContain('Arreglar'); + }); + + it('should display delivery details', async() => { + let result = await nightmare + .waitToGetProperty(selectors.ticketSummary.route, 'innerText'); + + expect(result).toContain('3'); + }); + + it('should display the ticket total', async() => { + let result = await nightmare + .waitToGetProperty(selectors.ticketSummary.total, 'innerText'); + + expect(result).toContain('€155.54'); + }); + + it('should display the ticket line(s)', async() => { + let result = await nightmare + .waitToGetProperty(selectors.ticketSummary.firstSaleItemId, 'innerText'); + + expect(result).toContain('000002'); + }); + + it(`should click on the first sale ID making the item descriptor visible`, async() => { + const visible = await nightmare + .waitToClick(selectors.ticketSummary.firstSaleItemId) + .waitImgLoad(selectors.ticketSummary.firstSaleDescriptorImage) + .isVisible(selectors.ticketSummary.itemDescriptorPopover); + + expect(visible).toBeTruthy(); + }); + + it(`should check the url for the item diary link of the descriptor is for the right item id`, async() => { + const exists = await nightmare + .exists(selectors.ticketSummary.itemDescriptorPopoverItemDiaryButton); + + expect(exists).toBeTruthy(); + }); + + it('should click on the SET OK button and throw a privileges error', async() => { + let result = await nightmare + .waitToClick(selectors.ticketSummary.setOk) + .waitForLastSnackbar(); + + expect(result).toEqual(`You don't have enough privileges`); + }); + + it('should log in as production then navigate to the summary of the same ticket', async() => { + let url = await nightmare + .loginAndModule('production', 'ticket') + .accessToSearchResult(ticketId) + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it('should click on the SET OK button', async() => { + let result = await nightmare + .waitToClick(selectors.ticketSummary.setOk) + .waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); + + it('should confirm the ticket state was updated', async() => { + let result = await nightmare + .waitForSpinnerLoad() + .waitToGetProperty(selectors.ticketSummary.state, 'innerText'); + + expect(result).toContain('OK'); + }); +}); diff --git a/e2e/paths/06-claim-module/01_edit_basic_data.spec.js b/e2e/paths/06-claim-module/01_basic_data.spec.js similarity index 82% rename from e2e/paths/06-claim-module/01_edit_basic_data.spec.js rename to e2e/paths/06-claim-module/01_basic_data.spec.js index f863c86e2..2df37a147 100644 --- a/e2e/paths/06-claim-module/01_edit_basic_data.spec.js +++ b/e2e/paths/06-claim-module/01_basic_data.spec.js @@ -11,10 +11,9 @@ describe('Claim edit basic data path', () => { .accessToSection('claim.card.basicData'); }); - it(`should edit claim state, is paid with mana and observation fields`, async() => { + it(`should edit claim state and observation fields`, async() => { const result = await nightmare .autocompleteSearch(selectors.claimBasicData.claimStateAutocomplete, 'Gestionado') - .waitToClick(selectors.claimBasicData.isPaidWithManaCheckbox) .clearTextarea(selectors.claimBasicData.observationInput) .write(selectors.claimBasicData.observationInput, 'edited observation') .waitToClick(selectors.claimBasicData.saveButton) @@ -40,13 +39,6 @@ describe('Claim edit basic data path', () => { expect(result).toEqual('Gestionado'); }); - it('should confirm the Is paid with mana checkbox is checked', async() => { - const result = await nightmare - .checkboxState(selectors.claimBasicData.isPaidWithManaCheckbox); - - expect(result).toBe('checked'); - }); - it('should confirm the claim observation was edited', async() => { const result = await nightmare .waitToGetProperty(selectors.claimBasicData.observationInput, 'value'); @@ -57,7 +49,6 @@ describe('Claim edit basic data path', () => { it(`should edit the claim to leave it untainted`, async() => { const result = await nightmare .autocompleteSearch(selectors.claimBasicData.claimStateAutocomplete, 'Pendiente') - .waitToClick(selectors.claimBasicData.isPaidWithManaCheckbox) .clearTextarea(selectors.claimBasicData.observationInput) .write(selectors.claimBasicData.observationInput, 'Observation one') .waitToClick(selectors.claimBasicData.saveButton) diff --git a/e2e/paths/06-claim-module/02_create_development.spec.js b/e2e/paths/06-claim-module/02_development.spec.js similarity index 100% rename from e2e/paths/06-claim-module/02_create_development.spec.js rename to e2e/paths/06-claim-module/02_development.spec.js diff --git a/e2e/paths/06-claim-module/03_detail.spec.js b/e2e/paths/06-claim-module/03_detail.spec.js index 9eb3fee1c..43d291bb3 100644 --- a/e2e/paths/06-claim-module/03_detail.spec.js +++ b/e2e/paths/06-claim-module/03_detail.spec.js @@ -1,13 +1,14 @@ import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; -describe('Claim detail', () => { +// #1528 e2e claim/detail +xdescribe('Claim detail', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('salesPerson', 'claim') - .accessToSearchResult('4') + .accessToSearchResult(1) .accessToSection('claim.card.detail'); }); @@ -27,25 +28,54 @@ describe('Claim detail', () => { expect(result).toEqual(2); }); - it('should edit de second item claimed quantity', async() => { + it('should edit de first item claimed quantity', async() => { const result = await nightmare - .clearInput(selectors.claimDetail.secondItemQuantityInput) - .write(selectors.claimDetail.secondItemQuantityInput, 10) + .clearInput(selectors.claimDetail.firstItemQuantityInput) + .write(selectors.claimDetail.firstItemQuantityInput, 4) .write('body', '\u000d') // simulates enter .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); }); - it('should confirm the second item, and the claimed total were correctly edited', async() => { + it('should confirm the first item quantity, and the claimed total were correctly edited', async() => { const claimedQuantity = await nightmare - .waitToGetProperty(selectors.claimDetail.secondItemQuantityInput, 'value'); + .waitToGetProperty(selectors.claimDetail.firstItemQuantityInput, 'value'); const totalClaimed = await nightmare .waitToGetProperty(selectors.claimDetail.totalClaimed, 'innerText'); - expect(claimedQuantity).toEqual('10'); - expect(totalClaimed).toContain('29.50'); + expect(claimedQuantity).toEqual('4'); + expect(totalClaimed).toContain('€47.62'); + }); + + it('should login as salesAssistant and navigate to the claim.detail section', async() => { + const url = await nightmare + .loginAndModule('salesAssistant', 'claim') + .accessToSearchResult(1) + .accessToSection('claim.card.detail') + .waitForURL('/detail') + .parsedUrl(); + + expect(url.hash).toContain('/detail'); + }); + + it('should edit de second item claimed discount', async() => { + const result = await nightmare + .waitToClick(selectors.claimDetail.secondItemDiscount) + .write(selectors.claimDetail.discountInput, 100) + .write('body', '\u000d') // simulates enter + .waitForLastSnackbar(); + + expect(result).toEqual('Data saved!'); + }); + + it('should check the mana is the expected one', async() => { + const result = await nightmare + .waitToClick(selectors.claimDetail.secondItemDiscount) + .waitToGetProperty(selectors.claimDetail.discoutPopoverMana, 'innerText'); + + expect(result).toContain('MANÁ: €106'); }); it('should delete the second item from the claim', async() => { @@ -63,11 +93,8 @@ describe('Claim detail', () => { expect(result).toEqual(1); }); - it('should login as salesAssistant to be redirected to the next claim section', async() => { + it('should add the deleted ticket from to the claim', async() => { const result = await nightmare - .loginAndModule('salesAssistant', 'claim') - .accessToSearchResult('2') - .accessToSection('claim.card.detail') .waitToClick(selectors.claimDetail.addItemButton) .waitToClick(selectors.claimDetail.firstClaimableSaleFromTicket) .waitForLastSnackbar(); @@ -82,4 +109,13 @@ describe('Claim detail', () => { expect(url.hash).toContain('development'); }); + + it('should navigate back to claim.detail to confirm the claim contains now two items', async() => { + const result = await nightmare + .accessToSection('claim.card.detail') + .wait(selectors.claimDetail.claimDetailLine) + .countElement(selectors.claimDetail.claimDetailLine); + + expect(result).toEqual(2); + }); }); diff --git a/e2e/paths/06-claim-module/04_claim_action.spec.js b/e2e/paths/06-claim-module/04_claim_action.spec.js index 2a61c088f..de998a0f2 100644 --- a/e2e/paths/06-claim-module/04_claim_action.spec.js +++ b/e2e/paths/06-claim-module/04_claim_action.spec.js @@ -1,13 +1,13 @@ import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; -describe('Claim edit basic data path', () => { +describe('Claim action path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('administrative', 'claim') - .accessToSearchResult('4') + .accessToSearchResult(4) .accessToSection('claim.card.action'); }); @@ -19,7 +19,7 @@ describe('Claim edit basic data path', () => { expect(result).toEqual('Data saved!'); }); - it('should import the eighth ticket', async() => { + it('should import the second importable ticket', async() => { const result = await nightmare .waitToClick(selectors.claimAction.importTicketButton) .waitToClick(selectors.claimAction.secondImportableTicket) @@ -28,17 +28,16 @@ describe('Claim edit basic data path', () => { expect(result).toEqual('Data saved!'); }); - it('should edit the fourth line destination field', async() => { + it('should edit the second line destination field', async() => { const result = await nightmare - .autocompleteSearch(selectors.claimAction.thirdLineDestination, 'Bueno') + .autocompleteSearch(selectors.claimAction.secondLineDestination, 'Bueno') .waitForLastSnackbar(); expect(result).toEqual('Data saved!'); }); - it('should delete two first lines', async() => { + it('should delete the first line', async() => { const result = await nightmare - .waitToClick(selectors.claimAction.secondDeleteLine) .waitToClick(selectors.claimAction.firstDeleteLine) .waitForLastSnackbar(); @@ -60,4 +59,20 @@ describe('Claim edit basic data path', () => { expect(result).toEqual('Data saved!'); }); + + it('should check the "is paid with mana" checkbox', async() => { + const result = await nightmare + .waitToClick(selectors.claimAction.isPaidWithManaCheckbox) + .waitForSnackbar(); + + expect(result).toEqual(jasmine.arrayContaining(['Data saved!'])); + }); + + it('should confirm the "is paid with mana" checkbox is checked', async() => { + const result = await nightmare + .reloadSection('claim.card.action') + .checkboxState(selectors.claimAction.isPaidWithManaCheckbox); + + expect(result).toBe('checked'); + }); }); diff --git a/e2e/paths/06-claim-module/05_summary.spec.js b/e2e/paths/06-claim-module/05_summary.spec.js new file mode 100644 index 000000000..07e4c9080 --- /dev/null +++ b/e2e/paths/06-claim-module/05_summary.spec.js @@ -0,0 +1,95 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('claim Summary path', () => { + const nightmare = createNightmare(); + const claimId = 4; + + it('should navigate to the target claim summary section', async() => { + let url = await nightmare + .loginAndModule('employee', 'claim') + .accessToSearchResult(claimId) + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it(`should display details from the claim and it's client on the top of the header`, async() => { + let result = await nightmare + .waitForSpinnerLoad() + .waitToGetProperty(selectors.claimSummary.header, 'innerText'); + + expect(result).toContain('4 -'); + expect(result).toContain('Tony Stark'); + }); + + it('should display the claim state', async() => { + let result = await nightmare + .waitToGetProperty(selectors.claimSummary.state, 'innerText'); + + expect(result).toContain('Resuelto'); + }); + + it('should display the observation', async() => { + let result = await nightmare + .waitToGetProperty(selectors.claimSummary.observation, 'value'); + + expect(result).toContain('observation four'); + }); + + it('should display the claimed line(s)', async() => { + let result = await nightmare + .waitToGetProperty(selectors.claimSummary.firstSaleItemId, 'innerText'); + + expect(result).toContain('000002'); + }); + + it(`should click on the first sale ID making the item descriptor visible`, async() => { + const visible = await nightmare + .waitToClick(selectors.claimSummary.firstSaleItemId) + .waitImgLoad(selectors.claimSummary.firstSaleDescriptorImage) + .isVisible(selectors.claimSummary.itemDescriptorPopover); + + expect(visible).toBeTruthy(); + }); + + it(`should check the url for the item diary link of the descriptor is for the right item id`, async() => { + const exists = await nightmare + .exists(selectors.claimSummary.itemDescriptorPopoverItemDiaryButton); + + expect(exists).toBeTruthy(); + }); + + it('should display the claim development details', async() => { + let result = await nightmare + .waitToGetProperty(selectors.claimSummary.firstDevelopmentWorker, 'innerText'); + + expect(result).toContain('salesAssistantNick'); + }); + + it(`should click on the first development worker making the worker descriptor visible`, async() => { + const visible = await nightmare + .waitToClick(selectors.claimSummary.firstDevelopmentWorker) + .wait(selectors.claimSummary.firstDevelopmentWorkerGoToClientButton) + .isVisible(selectors.claimSummary.firstDevelopmentWorkerGoToClientButton); + + expect(visible).toBeTruthy(); + }); + + it(`should check the url for the go to clientlink of the descriptor is for the right client id`, async() => { + const exists = await nightmare + .exists(selectors.claimSummary.firstDevelopmentWorkerGoToClientButton); + + expect(exists).toBeTruthy(); + }); + + it(`should click on the first action ticket ID making the ticket descriptor visible`, async() => { + const visible = await nightmare + .waitToClick(selectors.claimSummary.firstActionTicketId) + .wait(selectors.claimSummary.firstActionTicketDescriptor) + .isVisible(selectors.claimSummary.firstActionTicketDescriptor); + + expect(visible).toBeTruthy(); + }); +}); diff --git a/e2e/paths/06-claim-module/06_descriptor.spec.js b/e2e/paths/06-claim-module/06_descriptor.spec.js new file mode 100644 index 000000000..f43440129 --- /dev/null +++ b/e2e/paths/06-claim-module/06_descriptor.spec.js @@ -0,0 +1,70 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('claim Descriptor path', () => { + const nightmare = createNightmare(); + const claimId = 1; + + it('should navigate to the target claim summary section', async() => { + let url = await nightmare + .loginAndModule('employee', 'claim') + .accessToSearchResult(claimId) + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it(`should not be able to see the delete claim button of the descriptor more menu`, async() => { + let exists = await nightmare + .waitToClick(selectors.claimDescriptor.moreMenu) + .exists(selectors.claimDescriptor.moreMenuDeleteClaim); + + expect(exists).toBeFalsy(); + }); + + it(`should log in as salesAssistant and navigate to the target claim`, async() => { + let url = await nightmare + .loginAndModule('salesAssistant', 'claim') + .accessToSearchResult(claimId) + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it(`should be able to see the delete claim button of the descriptor more menu`, async() => { + let exists = await nightmare + .waitToClick(selectors.claimDescriptor.moreMenu) + .exists(selectors.claimDescriptor.moreMenuDeleteClaim); + + expect(exists).toBeTruthy(); + }); + + it(`should delete the claim`, async() => { + let result = await nightmare + .waitToClick(selectors.claimDescriptor.moreMenuDeleteClaim) + .waitToClick(selectors.claimDescriptor.acceptDeleteClaim) + .waitForLastSnackbar(); + + expect(result).toEqual('Claim deleted!'); + }); + + it(`should have been relocated to the claim index`, async() => { + let url = await nightmare + .waitForURL('/claim/index') + .parsedUrl(); + + expect(url.hash).toContain('/claim/index'); + }); + + it(`should search for the deleted claim to find no results`, async() => { + const result = await nightmare + .write(selectors.claimsIndex.searchClaimInput, claimId) + .waitToClick(selectors.claimsIndex.searchButton) + .waitForNumberOfElements(selectors.claimsIndex.searchResult, 0) + .countElement(selectors.claimsIndex.searchResult); + + expect(result).toEqual(0); + }); +}); diff --git a/e2e/paths/07-order-module/01_edit_basic_data.spec.js b/e2e/paths/07-order-module/01_edit_basic_data.spec.js index e48573b2a..973697e9c 100644 --- a/e2e/paths/07-order-module/01_edit_basic_data.spec.js +++ b/e2e/paths/07-order-module/01_edit_basic_data.spec.js @@ -3,11 +3,13 @@ import createNightmare from '../../helpers/nightmare'; describe('Order edit basic data path', () => { const nightmare = createNightmare(); + const today = new Date().getDate(); + describe('when confirmed order', () => { beforeAll(() => { nightmare .loginAndModule('employee', 'order') - .accessToSearchResult('1') + .accessToSearchResult(1) .accessToSection('order.card.basicData'); }); @@ -24,19 +26,20 @@ describe('Order edit basic data path', () => { describe('when order with rows', () => { it('should now navigate to order index', async() => { + const orderId = 16; const url = await nightmare .waitToClick(selectors.globalItems.returnToModuleIndexButton) - .waitToClick(selectors.globalItems.acceptVnConfirm) + .waitToClick(selectors.globalItems.acceptButton) .wait(selectors.ordersIndex.createOrderButton) - .accessToSearchResult('16') + .accessToSearchResult(orderId) .accessToSection('order.card.basicData') .wait(selectors.orderBasicData.observationInput) .parsedUrl(); - expect(url.hash).toEqual('#!/order/16/basic-data'); + expect(url.hash).toEqual(`#!/order/${orderId}/basic-data`); }); - it('should not be able to change the company', async() => { + it('should not be able to change anything', async() => { const result = await nightmare .write(selectors.orderBasicData.observationInput, 'observation') .waitToClick(selectors.orderBasicData.saveButton) @@ -47,17 +50,36 @@ describe('Order edit basic data path', () => { }); describe('when new order', () => { - it('should once more navigate to order index', async() => { + it('should navigate to the order index and click the new order button', async() => { const url = await nightmare .waitToClick(selectors.globalItems.returnToModuleIndexButton) - .waitToClick(selectors.globalItems.acceptVnConfirm) - .wait(selectors.ordersIndex.createOrderButton) - .accessToSearchResult('18') + .waitToClick(selectors.globalItems.acceptButton) + .waitToClick(selectors.ordersIndex.createOrderButton) + .waitForURL('#!/order/create') + .parsedUrl(); + + expect(url.hash).toContain('#!/order/create'); + }); + + it('should now create a new one', async() => { + const url = await nightmare + .autocompleteSearch(selectors.createOrderView.clientAutocomplete, 'Jessica Jones') + .datePicker(selectors.createOrderView.landedDatePicker, 0, today) + .autocompleteSearch(selectors.createOrderView.agencyAutocomplete, 'inhouse pickup') + .waitToClick(selectors.createOrderView.createButton) + .waitForURL('/catalog') + .parsedUrl(); + + expect(url.hash).toContain('/catalog'); + }); + + it('should navigate to the basic data section of the new order', async() => { + const url = await nightmare .accessToSection('order.card.basicData') .wait(selectors.orderBasicData.observationInput) .parsedUrl(); - expect(url.hash).toEqual('#!/order/18/basic-data'); + expect(url.hash).toContain('/basic-data'); }); it('should be able to modify all the properties', async() => { @@ -65,8 +87,7 @@ describe('Order edit basic data path', () => { .autocompleteSearch(selectors.orderBasicData.clientAutocomplete, 'Tony Stark') .autocompleteSearch(selectors.orderBasicData.addressAutocomplete, 'Tony Stark') .autocompleteSearch(selectors.orderBasicData.agencyAutocomplete, 'Silla247') - .clearTextarea(selectors.orderBasicData.observationInput) - .write(selectors.orderBasicData.observationInput, 'Observation modified') + .write(selectors.orderBasicData.observationInput, 'my observation') .waitToClick(selectors.orderBasicData.saveButton) .waitForLastSnackbar(); @@ -92,7 +113,7 @@ describe('Order edit basic data path', () => { const result = await nightmare .waitToGetProperty(selectors.orderBasicData.observationInput, 'value'); - expect(result).toEqual('Observation modified'); + expect(result).toEqual('my observation'); }); }); }); diff --git a/e2e/paths/07-order-module/03_lines.spec.js b/e2e/paths/07-order-module/03_lines.spec.js index b7d28d2f4..8128fdc07 100644 --- a/e2e/paths/07-order-module/03_lines.spec.js +++ b/e2e/paths/07-order-module/03_lines.spec.js @@ -6,7 +6,7 @@ describe('Order lines', () => { beforeAll(() => { nightmare .loginAndModule('employee', 'order') - .accessToSearchResult('16') + .accessToSearchResult(16) .accessToSection('order.card.line'); }); diff --git a/e2e/paths/08-route-module/03_tickets.spec.js b/e2e/paths/08-route-module/03_tickets.spec.js index 0ae3fe0ad..c1a0350b3 100644 --- a/e2e/paths/08-route-module/03_tickets.spec.js +++ b/e2e/paths/08-route-module/03_tickets.spec.js @@ -1,35 +1,18 @@ import selectors from '../../helpers/selectors.js'; import createNightmare from '../../helpers/nightmare'; -describe('Route basic Data path', () => { +// #1528 e2e claim/detail +xdescribe('Route basic Data path', () => { const nightmare = createNightmare(); beforeAll(() => { nightmare .loginAndModule('delivery', 'route') - .accessToSearchResult(2) + .accessToSearchResult(3) .accessToSection('route.card.tickets'); }); - it('should now modify the first ticket priority', async() => { - const result = await nightmare - .write(selectors.routeTickets.firstTicketPriority, 4) - .write('body', '\u000d') // simulates enter - .waitForLastSnackbar(); - - expect(result).toEqual('Data saved!'); - }); - - it('should next modify the first ticket priority', async() => { - const result = await nightmare - .write(selectors.routeTickets.firstTicketPriority, 3) - .write('body', '\u000d') // simulates enter - .waitForLastSnackbar(); - - expect(result).toEqual('Data saved!'); - }); - - it('should once more modify the first ticket priority', async() => { + it('should modify the first ticket priority', async() => { const result = await nightmare .write(selectors.routeTickets.firstTicketPriority, 2) .write('body', '\u000d') // simulates enter @@ -38,44 +21,6 @@ describe('Route basic Data path', () => { expect(result).toEqual('Data saved!'); }); - it('should finally modify the first ticket priority', async() => { - const result = await nightmare - .write(selectors.routeTickets.firstTicketPriority, 1) - .write('body', '\u000d') // simulates enter - .waitForLastSnackbar(); - - expect(result).toEqual('Data saved!'); - }); - - it('should reload the section as a pre-step to check the first ticket priority', async() => { - const result = await nightmare - .reloadSection('route.card.tickets') - .waitToGetProperty(selectors.routeTickets.firstTicketPriority, 'value'); - - expect(result).toEqual('1'); - }); - - it('should confirm the second ticket priority', async() => { - const result = await nightmare - .waitToGetProperty(selectors.routeTickets.secondTicketPriority, 'value'); - - expect(result).toEqual('2'); - }); - - it('should confirm the third ticket priority', async() => { - const result = await nightmare - .waitToGetProperty(selectors.routeTickets.thirdTicketPriority, 'value'); - - expect(result).toEqual('3'); - }); - - it('should confirm the fourth ticket priority', async() => { - const result = await nightmare - .waitToGetProperty(selectors.routeTickets.fourthTicketPriority, 'value'); - - expect(result).toEqual('4'); - }); - it('should confirm the buscamanButton is disabled', async() => { const result = await nightmare .evaluate(selector => { @@ -85,7 +30,7 @@ describe('Route basic Data path', () => { expect(result).toBeTruthy(); }); - it('should check the first ticket checkbox and confirm the buscamanButton button isnt disabled anymore', async() => { + it('should check the first ticket checkbox and confirm the buscamanButton button is no longer disabled', async() => { const result = await nightmare .waitToClick(selectors.routeTickets.firstTicketCheckbox) .evaluate(selector => { @@ -95,11 +40,18 @@ describe('Route basic Data path', () => { expect(result).toBeFalsy(); }); + it('should check the route volume on the descriptor', async() => { + const result = await nightmare + .waitToGetProperty(selectors.routeDescriptor.volume, 'innerText'); + + expect(result).toEqual('1.1 / 18 m³'); + }); + it('should count how many tickets are in route', async() => { const result = await nightmare .countElement('vn-route-tickets vn-textfield[model="ticket.priority"]'); - expect(result).toEqual(4); + expect(result).toEqual(11); }); it('should delete the first ticket in route', async() => { @@ -108,13 +60,29 @@ describe('Route basic Data path', () => { .waitToClick(selectors.routeTickets.confirmButton) .waitForLastSnackbar(); - expect(result).toEqual('Ticket deleted from route'); + expect(result).toEqual('Ticket removed from route'); + }); + + it('should again delete the first ticket in route', async() => { + const result = await nightmare + .waitToClick(selectors.routeTickets.firstTicketDeleteButton) + .waitToClick(selectors.routeTickets.confirmButton) + .waitForLastSnackbar(); + + expect(result).toEqual('Ticket removed from route'); }); it('should now count how many tickets are in route to find one less', async() => { const result = await nightmare .countElement('vn-route-tickets vn-textfield[model="ticket.priority"]'); - expect(result).toEqual(3); + expect(result).toEqual(9); + }); + + it('should confirm the route volume on the descriptor has been updated by the changes made', async() => { + const result = await nightmare + .waitToGetProperty(selectors.routeDescriptor.volume, 'innerText'); + + expect(result).toEqual('0.9 / 18 m³'); }); }); diff --git a/e2e/paths/09-invoice-out-module/01_descriptor.spec.js b/e2e/paths/09-invoice-out-module/01_descriptor.spec.js new file mode 100644 index 000000000..a00d6387d --- /dev/null +++ b/e2e/paths/09-invoice-out-module/01_descriptor.spec.js @@ -0,0 +1,174 @@ +import selectors from '../../helpers/selectors.js'; +import createNightmare from '../../helpers/nightmare'; + +describe('InvoiceOut descriptor path', () => { + const nightmare = createNightmare(); + let bookedDate; + + describe('as Administrative', () => { + beforeAll(() => { + nightmare + .loginAndModule('administrative', 'ticket'); + }); + + it('should search for tickets with an specific invoiceOut', async() => { + const result = await nightmare + .waitToClick(selectors.ticketsIndex.openAdvancedSearchButton) + .write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222') + .waitToClick(selectors.ticketsIndex.advancedSearchButton) + .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1) + .countElement(selectors.ticketsIndex.searchResult); + + expect(result).toEqual(1); + }); + + it('should navigate to the invoiceOut index', async() => { + const url = await nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.invoiceOutButton) + .wait(selectors.invoiceOutIndex.searchInvoiceOutInput) + .parsedUrl(); + + expect(url.hash).toEqual('#!/invoice-out/index'); + }); + + it('should search for the target invoiceOut', async() => { + const result = await nightmare + .write(selectors.invoiceOutIndex.searchInvoiceOutInput, 'T2222222') + .waitToClick(selectors.invoiceOutIndex.searchButton) + .waitForNumberOfElements(selectors.invoiceOutIndex.searchResult, 1) + .countElement(selectors.invoiceOutIndex.searchResult); + + expect(result).toEqual(1); + }); + + it(`should click on the search result to access to the invoiceOut summary`, async() => { + const url = await nightmare + .accessToSearchResult('T2222222') + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it('should delete the invoiceOut using the descriptor more menu', async() => { + const result = await nightmare + .waitToClick(selectors.invoiceOutDescriptor.moreMenu) + .waitToClick(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut) + .waitToClick(selectors.invoiceOutDescriptor.acceptDeleteButton) + .waitForLastSnackbar(); + + expect(result).toEqual('InvoiceOut deleted'); + }); + + it('should have been relocated to the invoiceOut index', async() => { + const url = await nightmare + .parsedUrl(); + + expect(url.hash).toEqual('#!/invoice-out/index'); + }); + + it(`should search for the deleted invouceOut to find no results`, async() => { + const result = await nightmare + .write(selectors.invoiceOutIndex.searchInvoiceOutInput, 'T2222222') + .waitToClick(selectors.invoiceOutIndex.searchButton) + .waitForNumberOfElements(selectors.invoiceOutIndex.searchResult, 0) + .countElement(selectors.invoiceOutIndex.searchResult); + + expect(result).toEqual(0); + }); + + it('should navigate to the ticket index', async() => { + const url = await nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.ticketsButton) + .wait(selectors.ticketsIndex.searchTicketInput) + .parsedUrl(); + + expect(url.hash).toEqual('#!/ticket/index'); + }); + + it('should search for tickets with an specific invoiceOut to find no results', async() => { + const result = await nightmare + .waitToClick(selectors.ticketsIndex.openAdvancedSearchButton) + .write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222') + .waitToClick(selectors.ticketsIndex.advancedSearchButton) + .waitForNumberOfElements(selectors.ticketsIndex.searchResult, 0) + .countElement(selectors.ticketsIndex.searchResult); + + expect(result).toEqual(0); + }); + + it('should now navigate to the invoiceOut index', async() => { + const url = await nightmare + .waitToClick(selectors.globalItems.applicationsMenuButton) + .wait(selectors.globalItems.applicationsMenuVisible) + .waitToClick(selectors.globalItems.invoiceOutButton) + .wait(selectors.invoiceOutIndex.searchInvoiceOutInput) + .parsedUrl(); + + expect(url.hash).toEqual('#!/invoice-out/index'); + }); + + it(`should search and access to the invoiceOut summary`, async() => { + const url = await nightmare + .accessToSearchResult('T1111111') + .waitForURL('/summary') + .parsedUrl(); + + expect(url.hash).toContain('/summary'); + }); + + it(`should check the invoiceOut is booked in the summary data`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.invoiceOutSummary.bookedLabel, 'innerText'); + + bookedDate = result; + + expect(result.length).toBeGreaterThan(1); + }); + + it('should re-book the invoiceOut using the descriptor more menu', async() => { + const result = await nightmare + .waitToClick(selectors.invoiceOutDescriptor.moreMenu) + .waitToClick(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut) + .waitToClick(selectors.invoiceOutDescriptor.acceptBookingButton) + .waitForLastSnackbar(); + + expect(result).toEqual('InvoiceOut booked'); + }); + + it(`should check the invoiceOut booked in the summary data`, async() => { + const result = await nightmare + .waitToGetProperty(selectors.invoiceOutSummary.bookedLabel, 'innerText'); + + expect(result).not.toEqual(bookedDate); + }); + }); + + describe('as salesPerson', () => { + beforeAll(() => { + nightmare + .loginAndModule('salesPerson', 'invoiceOut') + .accessToSearchResult('A1111111'); + }); + + it(`should check the salesPerson role doens't see the book option in the more menu`, async() => { + const result = await nightmare + .waitToClick(selectors.invoiceOutDescriptor.moreMenu) + .wait(selectors.invoiceOutDescriptor.moreMenuShowInvoiceOutPdf) + .exists(selectors.invoiceOutDescriptor.moreMenuBookInvoiceOut); + + expect(result).toBeFalsy(); + }); + + it(`should check the salesPerson role doens't see the delete option in the more menu`, async() => { + const result = await nightmare + .exists(selectors.invoiceOutDescriptor.moreMenuDeleteInvoiceOut); + + expect(result).toBeFalsy(); + }); + }); +}); diff --git a/front/core/components/autocomplete/autocomplete.html b/front/core/components/autocomplete/autocomplete.html index 2cd9a244a..4caca44bc 100755 --- a/front/core/components/autocomplete/autocomplete.html +++ b/front/core/components/autocomplete/autocomplete.html @@ -14,11 +14,14 @@ translate-attr="{title: 'Clear'}"> - + \ No newline at end of file diff --git a/front/core/components/autocomplete/autocomplete.js b/front/core/components/autocomplete/autocomplete.js index f651fd774..b2ac40c45 100755 --- a/front/core/components/autocomplete/autocomplete.js +++ b/front/core/components/autocomplete/autocomplete.js @@ -30,6 +30,8 @@ export default class Autocomplete extends Input { componentHandler.upgradeElement( this.element.querySelector('.mdl-textfield')); + + this.registerEvents(); } $postLink() { @@ -40,6 +42,15 @@ export default class Autocomplete extends Input { this.refreshSelection(); } + /** + * Registers all event emitters + */ + registerEvents() { + this.input.addEventListener('focus', event => { + this.emit('focus', {event}); + }); + } + get model() { return this._model; } @@ -79,10 +90,10 @@ export default class Autocomplete extends Input { } set field(value) { - if (angular.equals(value, this._field)) - return; - this._field = value; + + if (!value) return; + this.refreshSelection(); this.emit('change', {value}); } @@ -125,7 +136,9 @@ export default class Autocomplete extends Input { || this.selectionIsValid(this._selection)) return; - this.selection = this.fetchSelection(); + const selection = this.fetchSelection(); + if (!this.selection) + this.selection = selection; } fetchSelection() { @@ -217,9 +230,10 @@ export default class Autocomplete extends Input { if (this.form) this.form.$setDirty(); } - onDropDownSelect(value) { + onDropDownSelect(item) { + const value = item[this.valueField]; + this.selection = item; this.setValue(value); - this.field = value; } onClearClick(event) { @@ -228,7 +242,7 @@ export default class Autocomplete extends Input { } onKeyDown(event) { - if (event.defaultPrevented) return; + // if (event.defaultPrevented) return; switch (event.keyCode) { case 38: // Up @@ -290,6 +304,7 @@ ngModule.component('vnAutocomplete', { label: '@', field: '=?', disabled: ' \ No newline at end of file diff --git a/front/core/components/button-menu/button-menu.js b/front/core/components/button-menu/button-menu.js index 41f26cfbe..99f3879ee 100644 --- a/front/core/components/button-menu/button-menu.js +++ b/front/core/components/button-menu/button-menu.js @@ -8,7 +8,10 @@ export default class ButtonMenu extends Input { super($element, $scope); this.$transclude = $transclude; this.input = this.element.querySelector('.mdl-button'); - $element.on('click', e => this.onClick(e)); + $element.on('click', e => { + if (!this.disabled) + this.onClick(e); + }); } get model() { @@ -53,7 +56,8 @@ export default class ButtonMenu extends Input { event.preventDefault(); } - onDropDownSelect(value) { + onDropDownSelect(item) { + const value = item[this.valueField]; this.field = value; this.emit('change', {value}); } diff --git a/front/core/components/button-menu/button-menu.spec.js b/front/core/components/button-menu/button-menu.spec.js index d8654466f..1e8c048ff 100644 --- a/front/core/components/button-menu/button-menu.spec.js +++ b/front/core/components/button-menu/button-menu.spec.js @@ -7,6 +7,7 @@ describe('Component vnButtonMenu', () => { beforeEach(inject(($compile, $rootScope) => { $element = $compile(``)($rootScope); controller = $element.controller('vnIconMenu'); + controller.valueField = 'name'; })); afterEach(() => { @@ -31,10 +32,10 @@ describe('Component vnButtonMenu', () => { describe('onDropDownSelect(value)', () => { it(`should set field to the given value and emit the change event`, () => { spyOn(controller, 'emit'); - controller.onDropDownSelect('mariano'); + controller.onDropDownSelect({name: 'Item name'}); - expect(controller.field).toBe('mariano'); - expect(controller.emit).toHaveBeenCalledWith('change', {value: 'mariano'}); + expect(controller.field).toBe('Item name'); + expect(controller.emit).toHaveBeenCalledWith('change', {value: 'Item name'}); }); }); }); diff --git a/front/core/components/calendar/index.html b/front/core/components/calendar/index.html index e505bfad9..189e9b4eb 100644 --- a/front/core/components/calendar/index.html +++ b/front/core/components/calendar/index.html @@ -26,37 +26,55 @@ -
+
L
-
+
M
-
+
X
-
+
J
-
+
V
-
+
S
-
+
D
-
- - {{::day.dated | date: 'd'}} - - {{::day.dated | date: 'd'}} +
+
+
+ {{::day.dated | date: 'd'}} +
+
+
+ + {{::event.name}} + +
+
+
diff --git a/front/core/components/calendar/index.js b/front/core/components/calendar/index.js index b8ca084fa..5289d1d8d 100644 --- a/front/core/components/calendar/index.js +++ b/front/core/components/calendar/index.js @@ -12,7 +12,25 @@ export default class Calendar extends Component { this.events = []; this.defaultDate = new Date(); this.displayControls = true; + this.disabled = false; this.skip = 1; + + this.window.addEventListener('resize', () => { + this.checkSize(); + }); + } + + /** + * Resizes the calendar + * based on component height + */ + checkSize() { + const height = this.$element[0].clientHeight; + + if (height < 530) + this.$element.addClass('small'); + else + this.$element.removeClass('small'); } /** @@ -49,8 +67,10 @@ export default class Calendar extends Component { this.addEvent(event); }); - if (value.length && this.defaultDate) + if (value.length && this.defaultDate) { this.repaint(); + this.checkSize(); + } } /** @@ -165,16 +185,28 @@ export default class Calendar extends Component { * @param {Date} dated - Date of month * @param {String} className - Default class style */ - insertDay(dated, className = '') { - let event = this.events.find(event => { + insertDay(dated) { + let events = this.events.filter(event => { return event.dated >= dated && event.dated <= dated; }); - // Weeekends - if (dated.getMonth() === this.currentMonth.getMonth() && dated.getDay() == 0) - className = 'red'; + const params = {dated, events}; - this.days.push({dated, className, event}); + const isSaturday = dated.getDay() === 6; + const isSunday = dated.getDay() === 0; + const isCurrentMonth = dated.getMonth() === this.currentMonth.getMonth(); + const hasEvents = events.length > 0; + + if (isCurrentMonth && isSunday && !hasEvents) + params.style = {color: '#f42121'}; + + if (isCurrentMonth && isSaturday && !hasEvents) + params.style = {color: '#666666'}; + + if (!isCurrentMonth && !hasEvents) + params.style = {color: '#9b9b9b'}; + + this.days.push(params); } /** @@ -182,7 +214,7 @@ export default class Calendar extends Component { * * @param {Object} options - Event params * @param {Date} options.dated - Day to add event - * @param {String} options.title - Tooltip description + * @param {String} options.name - Tooltip description * @param {String} options.className - ClassName style * @param {Object} options.style - Style properties * @param {Boolean} options.isRemovable - True if is removable by users @@ -194,12 +226,7 @@ export default class Calendar extends Component { options.dated = new Date(options.dated); options.dated.setHours(0, 0, 0, 0); - const event = this.events.findIndex(event => { - return event.dated >= options.dated && event.dated <= options.dated; - }); - - if (event < 0) - this.events.push(options); + this.events.push(options); } /** @@ -252,6 +279,7 @@ export default class Calendar extends Component { * @param {Integer} index - Index from days array */ select(index) { + if (this.disabled) return; let day = this.days[index]; day.index = index; @@ -264,6 +292,8 @@ export default class Calendar extends Component { * @param {Integer} weekday - weekday index */ selectAll(weekday) { + if (this.disabled) return; + let selected = []; for (let i in this.days) { const day = this.days[i]; @@ -274,6 +304,16 @@ export default class Calendar extends Component { } this.emit('selection', {values: selected}); } + + renderStyle(style) { + if (style) { + return { + 'background-color': style.backgroundColor, + 'font-weight': style.fontWeight, + 'color': style.color + }; + } + } } Calendar.$inject = ['$element', '$scope']; @@ -284,11 +324,12 @@ ngModule.component('vnCalendar', { bindings: { model: '<', data: ' { let currentDate = new Date().toString(); controller.data = [ - {dated: currentDate, title: 'Event 1'}, - {dated: currentDate, title: 'Event 2'}, + {dated: currentDate, name: 'Event 1'}, + {dated: currentDate, name: 'Event 2'}, ]; expect(controller.events[0].dated instanceof Object).toBeTruthy(); @@ -34,12 +34,11 @@ describe('Component vnCalendar', () => { controller.events = []; controller.addEvent({ dated: new Date(), - title: 'My event', - className: 'color' + name: 'My event' }); const firstEvent = controller.events[0]; - expect(firstEvent.title).toEqual('My event'); + expect(firstEvent.name).toEqual('My event'); expect(firstEvent.isRemovable).toBeDefined(); expect(firstEvent.isRemovable).toBeTruthy(); }); @@ -50,19 +49,17 @@ describe('Component vnCalendar', () => { controller.events = [{ dated: curDate, - title: 'My event 1', - className: 'color' + name: 'My event 1' }]; controller.addEvent({ dated: curDate, - title: 'My event 2', - className: 'color' + name: 'My event 2' }); const firstEvent = controller.events[0]; - expect(controller.events.length).toEqual(1); - expect(firstEvent.title).toEqual('My event 1'); + expect(controller.events.length).toEqual(2); + expect(firstEvent.name).toEqual('My event 1'); }); }); @@ -71,7 +68,7 @@ describe('Component vnCalendar', () => { const curDate = new Date(); controller._events = [{ dated: curDate, - title: 'My event 1', + name: 'My event 1', className: 'color' }]; controller.removeEvent(curDate); diff --git a/front/core/components/calendar/style.scss b/front/core/components/calendar/style.scss index 6baaa0f65..333bfb428 100644 --- a/front/core/components/calendar/style.scss +++ b/front/core/components/calendar/style.scss @@ -1,143 +1,123 @@ @import "variables"; +vn-calendar.small { + .events { + display: none + } +} + vn-calendar { display: block; - max-width: 250px; .header vn-one { text-align: center; - padding: 0.2em 0 + padding: 0.2em 0; + height: 1.5em } - .body { - .days { - justify-content: flex-start; - align-items: flex-start; - flex-wrap: wrap; + + .weekdays { + color: $color-font-secondary; + margin-bottom: 0.5em; + padding: 0.5em 0; + font-weight: bold; + font-size: 0.8em; + } + + .weekdays section { + cursor: pointer + } + + .weekdays section, .day { + position: relative; + text-align: center; + box-sizing: border-box; + width: 14.28%; + outline: 0; + } + + .days { + justify-content: flex-start; + align-items: flex-start; + flex-wrap: wrap; + } + + + .day { + .content { + position: absolute; + bottom: 0; + right: 0; + left: 0; + top: 0 } - .weekdays { - border-bottom: 1px solid $color-hover-cd; - border-top: 1px solid $color-hover-cd; - color: $color-font-secondary; - font-weight: bold + .day-number { + transition: background-color 0.3s; + text-align:center; + float:inline-end; + margin: 0 auto; + border-radius: 50%; + font-size: 0.85em; + width:2.2em; + height: 1.2em; + padding: 0.5em 0; + cursor: pointer; + outline: 0 } - .day { - box-sizing: border-box; - padding: 0.1em; - width: 14.2857143%; - line-height: 1.5em; - outline: 0; - - span { - transition: background-color 0.3s; - text-align: center; - font-size: .8em; - border-radius: 50%; - display: block; - padding: 0.2em; - cursor: pointer - } + .day-number:hover { + background-color: lighten($color-font-secondary, 20%); + opacity: 0.8 } + } - .day:hover span { - background-color: #DDD + .day::after { + content: ""; + display: block; + padding-top: 100%; + } + + .day.primary .day-number { + background-color: $color-main; + color: $color-font-bg; + } + + .events { + margin-top: 0.5em; + font-size: 0.6em + } + + + .events { + color: $color-font-secondary; + + .event { + margin-bottom: .1em; } + } - .day.gray { + .chip { + background-color: $color-main; + color: $color-font-bg; + display: inline-block; + border-radius: .3em; + padding: 0.3em .8em; + max-width: 5em; + } + + .day.gray { + .day-number { color: $color-font-secondary } + } - .day.orange { - font-weight: bold; - color: $color-main; - } - - .day.orange-circle { - color: $color-font; - & > span { - background-color: $color-main - } - } + - .day.orange-circle:hover { - & > span { - background-color: $color-main-medium - } - } - - .day.light-orange { - color: $color-main-medium - } - - .day.green { - font-weight: bold; - color: $color-success; - } - - .day.green-circle { - color: $color-font; - & > span { - background-color: $color-success - } - } - - .day.green-circle:hover { - & > span { - background-color: $color-success-medium - } - } - - .day.light-green { - font-weight: bold; - color: $color-success-medium - } - - .day.blue { - font-weight: bold; - color: $color-notice; - } - - .day.blue-circle { - color: $color-font; - & > span { - background-color: $color-notice - } - } - - .day.blue-circle:hover { - & > span { - background-color: $color-notice-medium - } - } - - .day.light-blue { - font-weight: bold; - color: $color-notice-medium - } - - .day.red { - font-weight: bold; - color: $color-alert - } - - .day.red-circle { - color: $color-font; - & > span { - background-color: $color-alert - } - } - - .day.red-circle:hover { - & > span { - background-color: $color-alert-medium - } - } - - .day.light-red { - font-weight: bold; - color: $color-alert-medium; + .day.sunday { + .day-number { + color: $color-alert; + font-weight: bold } } } diff --git a/front/core/components/check/check.html b/front/core/components/check/check.html index 55a2f9c8c..4ca9f83a5 100644 --- a/front/core/components/check/check.html +++ b/front/core/components/check/check.html @@ -4,7 +4,7 @@ ng-disabled="::$ctrl.disabled" ng-checked="$ctrl.isChecked" ng-model="$ctrl.model"> - {{::$ctrl.label}} + {{::$ctrl.label}} + + {{legend.name}} + \ No newline at end of file diff --git a/front/core/components/color-legend/index.js b/front/core/components/color-legend/index.js new file mode 100644 index 000000000..f72a501a7 --- /dev/null +++ b/front/core/components/color-legend/index.js @@ -0,0 +1,24 @@ +import ngModule from '../../module'; +import Component from '../../lib/component'; +import './style.scss'; + +export default class Controller extends Component { + constructor($element, $scope, $attrs) { + super($element, $scope); + this.$attrs = $attrs; + } + + onClick(legend) { + this.emit('click', {legend}); + } +} + +Controller.$inject = ['$element', '$scope', '$attrs']; + +ngModule.component('vnColorLegend', { + template: require('./index.html'), + controller: Controller, + bindings: { + data: ' -
{{::$ctrl.question}}
- {{::$ctrl.message}} +
{{::$ctrl.message}}
+ {{::$ctrl.question}}
diff --git a/front/core/components/crud-model/crud-model.js b/front/core/components/crud-model/crud-model.js index 9d07e01ba..4f3058305 100644 --- a/front/core/components/crud-model/crud-model.js +++ b/front/core/components/crud-model/crud-model.js @@ -207,6 +207,8 @@ export default class CrudModel extends ModelProxy { sendRequest(filter, append) { this.cancelRequest(); this.canceler = this.$q.defer(); + this.isRefreshing = !append; + this.isPaging = append; let params = Object.assign( {filter}, @@ -220,7 +222,10 @@ export default class CrudModel extends ModelProxy { return this.$http.get(this._url, options).then( json => this.onRemoteDone(json, filter, append), json => this.onRemoteError(json) - ); + ).finally(() => { + this.isRefreshing = false; + this.isPaging = false; + }); } onRemoteDone(json, filter, append) { diff --git a/front/core/components/dialog/dialog.js b/front/core/components/dialog/dialog.js index 7ea588a27..4c4535b4c 100644 --- a/front/core/components/dialog/dialog.js +++ b/front/core/components/dialog/dialog.js @@ -45,8 +45,7 @@ export default class Dialog extends Component { this.element.style.display = 'flex'; this.transitionTimeout = setTimeout(() => this.$element.addClass('shown'), 30); - if (this.onOpen) - this.onOpen(); + this.emit('open'); } /** @@ -55,6 +54,7 @@ export default class Dialog extends Component { hide() { this.fireResponse(); this.realHide(); + this.emit('close'); } /** @@ -120,7 +120,6 @@ ngModule.component('vnDialog', { buttons: '?tplButtons' }, bindings: { - onOpen: '&?', onResponse: '&?' }, controller: Dialog diff --git a/front/core/components/dialog/dialog.spec.js b/front/core/components/dialog/dialog.spec.js index 4937fdba3..b889f1bc0 100644 --- a/front/core/components/dialog/dialog.spec.js +++ b/front/core/components/dialog/dialog.spec.js @@ -7,7 +7,7 @@ describe('Component vnDialog', () => { beforeEach(angular.mock.inject($componentController => { $element = angular.element(''); controller = $componentController('vnDialog', {$element, $transclude: null}); - controller.onOpen = jasmine.createSpy('onOpen'); + controller.emit = jasmine.createSpy('emit'); })); describe('show()', () => { @@ -17,15 +17,15 @@ describe('Component vnDialog', () => { controller.show(); expect(controller.element.style.display).toEqual('none'); - expect(controller.onOpen).not.toHaveBeenCalledWith(); + expect(controller.emit).not.toHaveBeenCalledWith('open'); }); - it(`should set shown on the controller, set style.display on the element and call onOpen()`, () => { + it(`should set shown on the controller, set style.display on the element and emit onOpen() event`, () => { controller.show(); expect(controller.element.style.display).toEqual('flex'); expect(controller.shown).toBeTruthy(); - expect(controller.onOpen).toHaveBeenCalledWith(); + expect(controller.emit).toHaveBeenCalledWith('open'); }); }); diff --git a/front/core/components/drop-down/drop-down.html b/front/core/components/drop-down/drop-down.html index 9ec18044a..5fef1dd5e 100755 --- a/front/core/components/drop-down/drop-down.html +++ b/front/core/components/drop-down/drop-down.html @@ -8,7 +8,7 @@ model="$ctrl.search" class="search" ng-blur="$ctrl.onFocusOut()" - label = "Search"> + label="Search">
diff --git a/front/core/components/drop-down/drop-down.js b/front/core/components/drop-down/drop-down.js index d1cc11601..f027d1bf3 100755 --- a/front/core/components/drop-down/drop-down.js +++ b/front/core/components/drop-down/drop-down.js @@ -186,7 +186,7 @@ export default class DropDown extends Component { this.field = value; } - this.emit('select', {value: value}); + this.emit('select', {item}); } if (!this.multiple) diff --git a/front/core/components/icon-menu/icon-menu.html b/front/core/components/icon-menu/icon-menu.html index f59f24125..93de718ff 100644 --- a/front/core/components/icon-menu/icon-menu.html +++ b/front/core/components/icon-menu/icon-menu.html @@ -5,7 +5,7 @@
\ No newline at end of file diff --git a/front/core/components/index.js b/front/core/components/index.js index a7bd664c4..09ee97963 100644 --- a/front/core/components/index.js +++ b/front/core/components/index.js @@ -20,7 +20,7 @@ import './multi-check/multi-check'; import './date-picker/date-picker'; import './button/button'; import './check/check'; -import './radio/radio'; +import './radio-group/radio-group'; import './textarea/textarea'; import './icon-button/icon-button'; import './submit/submit'; @@ -38,8 +38,10 @@ import './td-editable'; import './th'; import './input-range'; import './chip'; +import './color-legend'; import './input-number'; import './input-time'; +import './input-file'; import './treeview'; import './treeview/child'; import './calendar'; diff --git a/front/core/components/input-file/index.html b/front/core/components/input-file/index.html new file mode 100644 index 000000000..59cfcff7d --- /dev/null +++ b/front/core/components/input-file/index.html @@ -0,0 +1,39 @@ +
+
+
+
+
+ {{$ctrl.value}} +
+ + +
+
+
+
+ + info_outline + + + +
+
+
+
diff --git a/front/core/components/input-file/index.js b/front/core/components/input-file/index.js new file mode 100644 index 000000000..b54d5af2c --- /dev/null +++ b/front/core/components/input-file/index.js @@ -0,0 +1,132 @@ +import ngModule from '../../module'; +import Input from '../../lib/input'; +import './style.scss'; + +export default class InputFile extends Input { + constructor($element, $scope, $attrs, vnTemplate) { + super($element, $scope); + this.element = $element[0]; + this.hasFocus = false; + this._multiple = false; + this._value = 'Select a file'; + + vnTemplate.normalizeInputAttrs($attrs); + + this.registerEvents(); + } + + /** + * Registers all event emitters + */ + registerEvents() { + this.input.addEventListener('change', event => { + const target = event.target; + const fileNames = Array.from(target.files).map(file => { + return file.name; + }); + const names = fileNames.join(', '); + const label = this.element.querySelector('.value'); + label.innerHTML = names; + this.files = target.files; + + this.emit('change', {files: target.files, event}); + }); + } + + get value() { + return this._value; + } + + set value(value) { + this._value = value; + } + + /** + * Gets current value + */ + get files() { + return this._files; + } + + /** + * Sets input value + * + * @param {Number} value - Value + */ + set files(value) { + this._files = value; + this.hasValue = !(value === null || value === undefined || value === ''); + + if (this.hasValue) + this.element.classList.add('not-empty'); + else + this.element.classList.remove('not-empty'); + } + + /** + * Gets if multiple file selection + */ + get multiple() { + return this._multiple; + } + + /** + * Sets multiple file selection + * + * @param {Boolean} value - True if is multiple + */ + set multiple(value) { + this._multiple = value; + + if (value) + this.input.multiple = true; + else + this.input.multiple = false; + } + + /** + * Returns a list of valid file types + */ + get accept() { + return this._accept; + } + + /** + * Sets a list of valid file types + * + * @param {String} value - Valid file types + */ + set accept(value) { + this._accept = value; + } + + /** + * Fires file selection explorer event + */ + openFileSelector() { + this.input.click(); + } +} + +InputFile.$inject = ['$element', '$scope', '$attrs', 'vnTemplate']; + +ngModule.component('vnInputFile', { + template: require('./index.html'), + controller: InputFile, + transclude: { + leftIcons: '?tLeftIcons', + rightIcons: '?tRightIcons' + }, + bindings: { + label: '@?', + name: '@?', + disabled: ' { + let $scope; + let $attrs; + let $timeout; + let $element; + let controller; + + beforeEach(ngModule('vnCore')); + + beforeEach(angular.mock.inject(($componentController, $rootScope) => { + $scope = $rootScope.$new(); + $attrs = {}; + $element = angular.element('
'); + controller = $componentController('vnInputFile', {$element, $scope, $attrs, $timeout, $transclude: () => {}}); + controller.input = $element[0].querySelector('input'); + controller.validate = () => {}; + })); + + describe('files() setter', () => { + it(`should set a value, and then add the class 'not-empty'`, () => { + controller.files = [{name: 'MyFile'}]; + + let classes = controller.element.classList.toString(); + + expect(classes).toContain('not-empty'); + }); + + it(`should set an empty value, and then remove the class 'not-empty'`, () => { + controller.files = null; + + let classes = controller.element.classList.toString(); + + expect(classes).not.toContain('not-empty'); + }); + }); +}); diff --git a/front/core/components/input-file/style.scss b/front/core/components/input-file/style.scss new file mode 100644 index 000000000..83a66a262 --- /dev/null +++ b/front/core/components/input-file/style.scss @@ -0,0 +1,15 @@ +@import "variables"; +@import '../textfield/style.scss'; + +vn-input-file { + @extend vn-textfield; + .value { + color: $color-font-secondary; + cursor: pointer; + padding: 4px 0; + outline: 0 + } + input { + display: none !important + } +} \ No newline at end of file diff --git a/front/core/components/input-number/index.html b/front/core/components/input-number/index.html index cb3f24bd5..9fd024280 100644 --- a/front/core/components/input-number/index.html +++ b/front/core/components/input-number/index.html @@ -22,7 +22,10 @@ ng-focus="$ctrl.hasFocus = true" ng-blur="$ctrl.hasFocus = false" tabindex="{{$ctrl.input.tabindex}}"/> - +
diff --git a/front/core/components/input-number/index.js b/front/core/components/input-number/index.js index 6c32ebb98..6c9f378e8 100644 --- a/front/core/components/input-number/index.js +++ b/front/core/components/input-number/index.js @@ -184,10 +184,15 @@ InputNumber.$inject = ['$element', '$scope', '$attrs', 'vnTemplate']; ngModule.component('vnInputNumber', { template: require('./index.html'), controller: InputNumber, + transclude: { + leftIcons: '?tLeftIcons', + rightIcons: '?tRightIcons' + }, bindings: { label: '@?', name: '@?', disabled: ' + + {{::option.label}} + + \ No newline at end of file diff --git a/front/core/components/radio-group/radio-group.js b/front/core/components/radio-group/radio-group.js new file mode 100644 index 000000000..80c77a7e2 --- /dev/null +++ b/front/core/components/radio-group/radio-group.js @@ -0,0 +1,41 @@ +import ngModule from '../../module'; +import Component from '../../lib/component'; +import './style.scss'; + +export default class Controller extends Component { + constructor($element, $scope, $attrs) { + super($element, $scope); + this.hasInfo = Boolean($attrs.info); + this.info = $attrs.info || null; + } + + get model() { + return this._model; + } + + set model(value) { + this._model = value; + } + + get field() { + return this._model; + } + + set field(value) { + this._model = value; + } +} + +Controller.$inject = ['$element', '$scope', '$attrs']; + +ngModule.component('vnRadioGroup', { + template: require('./radio-group.html'), + controller: Controller, + + bindings: { + field: '=?', + options: ' -*[text]* diff --git a/front/core/components/radio/radio.js b/front/core/components/radio/radio.js deleted file mode 100644 index 70dbc059d..000000000 --- a/front/core/components/radio/radio.js +++ /dev/null @@ -1,15 +0,0 @@ -import ngModule from '../../module'; -import template from './radio.html'; - -directive.$inject = ['vnTemplate']; -export default function directive(vnTemplate) { - return { - restrict: 'E', - template: (_, $attrs) => - vnTemplate.get(template, $attrs, { - enabled: 'true', - className: 'mdl-radio mdl-js-radio mdl-js-ripple-effect' - }) - }; -} -ngModule.directive('vnRadio', directive); diff --git a/front/core/components/submit/submit.js b/front/core/components/submit/submit.js index c1199d033..41d63cf1d 100644 --- a/front/core/components/submit/submit.js +++ b/front/core/components/submit/submit.js @@ -1,7 +1,9 @@ import ngModule from '../../module'; +import Input from '../../lib/input'; -export default class Controller { - constructor($element) { +export default class Controller extends Input { + constructor($element, $scope) { + super($element, $scope); this.$element = $element; this.input = $element[0].querySelector('input'); } @@ -11,7 +13,7 @@ export default class Controller { } } -Controller.$inject = ['$element']; +Controller.$inject = ['$element', '$scope']; ngModule.component('vnSubmit', { template: require('./submit.html'), diff --git a/front/core/components/table/index.html b/front/core/components/table/index.html index 45754b49e..a5abd1c66 100644 --- a/front/core/components/table/index.html +++ b/front/core/components/table/index.html @@ -1,8 +1,11 @@
- - Enter a new search + + - - No results + + Enter a new search + + + No results
\ No newline at end of file diff --git a/front/core/components/table/index.js b/front/core/components/table/index.js index b905212e5..d091e8345 100644 --- a/front/core/components/table/index.js +++ b/front/core/components/table/index.js @@ -14,6 +14,14 @@ export default class Table { }); } + get isRefreshing() { + return (this.model && this.model.isRefreshing); + } + + get isPaging() { + return (this.model && this.model.isPaging); + } + setOrder(field, order) { this.field = field; this.order = order; diff --git a/front/core/components/table/style.scss b/front/core/components/table/style.scss index 0322c6f43..87af10834 100644 --- a/front/core/components/table/style.scss +++ b/front/core/components/table/style.scss @@ -63,6 +63,10 @@ vn-table { padding-bottom: .8em; } & > vn-th, + & > vn-td { + overflow: hidden; + } + & > vn-th, & > vn-td, & > vn-td-editable { vertical-align: middle; @@ -70,7 +74,6 @@ vn-table { text-align: left; padding: .6em .5em; white-space: nowrap; - overflow: hidden; text-overflow: ellipsis; max-width: 5em; @@ -113,34 +116,31 @@ vn-table { &.clickable { @extend %clickable; } - & > vn-td > .chip { + & > vn-td .chip { padding: .3em; border-radius: .3em; } - &.notice, - & > .notice, - & > vn-td > .notice { + + & > vn-td .chip.notice { color: $color-font-bg; - background-color: $color-notice-medium; + background-color: $color-notice-medium } - &.success, - & > .success, - & > vn-td > .success { + + & > vn-td .chip.success { color: $color-font-bg; - background-color: $color-success-medium; + background-color: $color-success-medium } - &.warning, - & > .warning, - & > vn-td > .warning { + + & > vn-td .chip.warning { color: $color-font-bg; background-color: $color-main-medium; } - &.alert, - & > .alert, - & > vn-td > .alert { + + & > vn-td .chip.alert { color: $color-font-bg; background-color: $color-alert-medium; } + & > [actions] { width: 1px; @@ -160,7 +160,7 @@ vn-table { } vn-autocomplete { div.mdl-textfield { - padding: 0px !important; + padding: 0 !important; } label.mdl-textfield__label:after { bottom: 0; diff --git a/front/core/components/td-editable/index.js b/front/core/components/td-editable/index.js index ebf214564..64f29cddc 100644 --- a/front/core/components/td-editable/index.js +++ b/front/core/components/td-editable/index.js @@ -1,43 +1,71 @@ import ngModule from '../../module'; import Component from '../../lib/component'; -import {focus} from '../../directives/focus'; +import Input from '../../lib/input'; import './style.scss'; export default class Controller extends Component { constructor($element, $scope, $transclude, $timeout) { super($element, $scope); this.$timeout = $timeout; - let element = $element[0]; - element.tabIndex = 0; + this.element.tabIndex = 0; - element.addEventListener('focus', () => { + this.element.addEventListener('focus', () => { if (this.field || this.disabled) return; $transclude((tClone, tScope) => { this.field = tClone; this.tScope = tScope; this.element.querySelector('.field').appendChild(this.field[0]); - element.tabIndex = -1; + this.element.tabIndex = -1; }, null, 'field'); - element.classList.add('selected'); + this.element.classList.add('selected'); }); - element.addEventListener('focusout', event => { - if (!this.field || this.disabled) return; - // this.destroyTimer(); - this.lastEvent = event; - let target = event.relatedTarget; - while (target && target != element) - target = target.parentNode; + this.element.addEventListener('focusout', event => this.hideField(event)); - if (!target) { - this.tScope.$destroy(); - this.field.remove(); - this.field = null; - element.classList.remove('selected'); - element.tabIndex = 0; + this.element.addEventListener('keyup', event => { + if (event.key === 'Enter') + this.hideField(event); + }); + + this.element.addEventListener('click', event => { + if (this.disabled) return; + + let target = event.target; + while (target) { + if (target == this.field[0]) return; + target = target.parentNode; + } + + let inputCtrl = this.field[0].firstElementChild.$ctrl; + if (inputCtrl instanceof Input) { + let evt = new MouseEvent('click', { + bubbles: true, + cancelable: true, + view: window + }); + inputCtrl.input.dispatchEvent(evt); } }); } + + hideField(event) { + if (!this.field || !this.tScope) return; + + this.lastEvent = event; + let target = event.relatedTarget; + while (target && target != this.element) + target = target.parentNode; + + if (!target) { + this.tScope.$destroy(); + this.tScope = null; + this.field.remove(); + this.field = null; + this.element.classList.remove('selected'); + this.element.tabIndex = 0; + } + } + destroyTimer() { if (this.timer) { this.$timeout.cancel(this.timer); @@ -48,6 +76,21 @@ export default class Controller extends Component { $onDestroy() { this.destroyTimer(); } + + get disabled() { + return this._disabled; + } + + set disabled(value) { + this._disabled = value; + + const classList = this.element.classList; + + if (value) + classList.add('disabled'); + else + classList.remove('disabled'); + } } Controller.$inject = ['$element', '$scope', '$transclude', '$timeout']; diff --git a/front/core/components/td-editable/style.scss b/front/core/components/td-editable/style.scss index 19c56cb02..e37e1086c 100644 --- a/front/core/components/td-editable/style.scss +++ b/front/core/components/td-editable/style.scss @@ -1,11 +1,21 @@ @import "variables"; vn-td-editable { + cursor: pointer; + outline: none; + position: relative; + overflow: visible; + text { - border-bottom: 1px solid rgba(0,0,0,.12); + border: 1px dashed rgba(0, 0, 0, .15); + border-radius: 1em; + padding: 5px 10px; min-height: 15px; - cursor: pointer; - display: block + display: block; + overflow: hidden; + &:hover { + border-color: $color-main; + } } text::after { @@ -13,25 +23,17 @@ vn-td-editable { content: ''; clear: both; } - - outline: none; - position: relative; - &:not([disabled="true"]) { - cursor: initial - } - &[disabled="true"] { - cursor: not-allowed; - } &.selected > .text { visibility: hidden; } & > .field { display: none; - position: absolute; - top: 0; - left: 0; width: 100%; height: 100%; + position: absolute; + z-index:10; + top: 0; + left: 0; box-sizing: border-box; align-items: center; padding: .6em; @@ -54,4 +56,11 @@ vn-td-editable { &.selected > .field { display: flex; } +} + +vn-td-editable.disabled { + cursor: initial; +} +vn-td-editable.disabled text { + border: none; } \ No newline at end of file diff --git a/front/core/components/textfield/style.scss b/front/core/components/textfield/style.scss index 36792ef90..96ea21345 100644 --- a/front/core/components/textfield/style.scss +++ b/front/core/components/textfield/style.scss @@ -29,6 +29,10 @@ vn-textfield { } } + .suffix vn-icon-button { + padding: 0 + } + t-left-icons { padding-right: 0.5em } @@ -47,6 +51,7 @@ vn-textfield { i.clear { visibility: hidden; cursor: pointer; + outline: 0; &:hover { color: #222; @@ -144,6 +149,10 @@ vn-textfield { .infix.invalid + .underline { background-color: #d50000; } + + label span:nth-child(2) { + color: $color-alert + } } vn-table { diff --git a/front/core/components/textfield/textfield.html b/front/core/components/textfield/textfield.html index 86bffb159..22756497f 100644 --- a/front/core/components/textfield/textfield.html +++ b/front/core/components/textfield/textfield.html @@ -14,7 +14,10 @@ ng-focus="$ctrl.hasFocus = true" ng-blur="$ctrl.hasFocus = false" tabindex="{{$ctrl.input.tabindex}}"/> - +
diff --git a/front/core/components/textfield/textfield.js b/front/core/components/textfield/textfield.js index fcf823c6b..bf6d5bfd5 100644 --- a/front/core/components/textfield/textfield.js +++ b/front/core/components/textfield/textfield.js @@ -84,6 +84,7 @@ ngModule.component('vnTextfield', { label: '@?', name: '@?', disabled: ' { - input.setAttribute('disabled', 'true'); - updateMaterial(input); + element.setAttribute('disabled', 'true'); + updateMaterial(element); }); $element[0].querySelectorAll('vn-drop-down').forEach(element => { element.parentNode.removeChild(element); @@ -78,7 +83,7 @@ function vnAcl(aclService, $timeout) { let action = $attrs.vnAclAction || 'disabled'; let conditions = getDynamicConditions($attrs); - permissionElement($scope, $element, action); + permissionElement($element, action); if (Object.keys(conditions).length) { let watchConditions = $scope.$watch(() => { @@ -86,7 +91,7 @@ function vnAcl(aclService, $timeout) { let hasPermission = $scope.$eval($attrs[attrName]); if (!hasPermission) { updateAcls(conditions[attrName].role, hasPermission); - permissionElement($scope, $element, action); + permissionElement($element, action); delete conditions[attrName]; } }); diff --git a/front/core/directives/focus.js b/front/core/directives/focus.js index 91fcffbb2..b57241078 100644 --- a/front/core/directives/focus.js +++ b/front/core/directives/focus.js @@ -1,13 +1,20 @@ import ngModule from '../module'; export function focus(input) { + const element = input; let selector = 'input, textarea, button, submit'; if (!input.matches(selector)) input = input.querySelector(selector); if (!input) { - console.warn(`vnFocus: Can't find a focusable element`); + const focusEvent = new MouseEvent('focus', { + bubbles: true, + cancelable: true, + view: window + }); + element.dispatchEvent(focusEvent); + return; } diff --git a/front/core/directives/http-click.js b/front/core/directives/http-click.js new file mode 100644 index 000000000..5e69d81d1 --- /dev/null +++ b/front/core/directives/http-click.js @@ -0,0 +1,29 @@ +import ngModule from '../module'; + +/** + * Disables a clicked element while request is being processed + * Enables again when promise ends + * + * @param {Object} $parse + * @return {Object} The directive + */ +export function directive($parse) { + return { + restrict: 'A', + link: function($scope, $element, $attrs) { + const cb = $parse($attrs.vnHttpClick); + const element = $element[0]; + $element.on('click', () => { + element.$ctrl.disabled = true; + + cb($scope).finally(() => { + element.$ctrl.disabled = false; + }); + }); + } + }; +} + +directive.$inject = ['$parse']; + +ngModule.directive('vnHttpClick', directive); diff --git a/front/core/directives/http-submit.js b/front/core/directives/http-submit.js new file mode 100644 index 000000000..0cf17866e --- /dev/null +++ b/front/core/directives/http-submit.js @@ -0,0 +1,37 @@ +import ngModule from '../module'; + +/** + * Disables a submitted form while request is being processed + * Enables again when promise ends + * + * @param {Object} $parse + * @return {Object} The directive + */ +export function directive($parse) { + return { + restrict: 'A', + link: function($scope, $element, $attrs) { + const cb = $parse($attrs.vnHttpSubmit); + const element = $element[0]; + $element.on('submit', () => { + const selector = 'vn-textfield, vn-autocomplete, vn-submit'; + const elements = element.querySelectorAll(selector); + const fields = angular.element(elements); + + angular.forEach(fields, field => { + field.$ctrl.disabled = true; + }); + + cb($scope).finally(() => { + angular.forEach(fields, field => { + field.$ctrl.disabled = false; + }); + }); + }); + } + }; +} + +directive.$inject = ['$parse']; + +ngModule.directive('vnHttpSubmit', directive); diff --git a/front/core/directives/index.js b/front/core/directives/index.js index 7db806caf..08adfac07 100644 --- a/front/core/directives/index.js +++ b/front/core/directives/index.js @@ -13,3 +13,5 @@ import './title'; import './uvc'; import './draggable'; import './droppable'; +import './http-click'; +import './http-submit'; diff --git a/front/core/directives/specs/focus.spec.js b/front/core/directives/specs/focus.spec.js index 541a0b640..4a8c64f82 100644 --- a/front/core/directives/specs/focus.spec.js +++ b/front/core/directives/specs/focus.spec.js @@ -24,16 +24,9 @@ describe('Directive focus', () => { let childHtml = ''; compile(html, childHtml); - expect($element[0].firstChild.focus).toHaveBeenCalled(); + expect($element[0].firstChild.focus).toHaveBeenCalledWith(); }); - it('should print a warning message on console', () => { - let html = ``; - console.warn = jasmine.createSpy('warn'); - compile(html); - - expect(console.warn).toHaveBeenCalledWith(`vnFocus: Can't find a focusable element`); - }); it('should call focus function on the element', () => { let html = ``; diff --git a/front/core/filters/percentage.js b/front/core/filters/percentage.js index 157871ed8..58e67ffa6 100644 --- a/front/core/filters/percentage.js +++ b/front/core/filters/percentage.js @@ -9,7 +9,7 @@ export default function percentage() { return function(input) { if (input == null || input === '') return null; - return input * 100 + ' %'; + return `${input} %`; }; } ngModule.filter('percentage', percentage); diff --git a/front/core/locale/es.yml b/front/core/locale/es.yml index 1b8d527c5..ee57de376 100644 --- a/front/core/locale/es.yml +++ b/front/core/locale/es.yml @@ -37,9 +37,17 @@ September: Septiembre October: Octubre November: Noviembre December: Diciembre +Monday: Lunes +Tuesday: Martes +Wednesday: Miércoles +Thursday: Jueves +Friday: Viernes +Saturday: Sábado +Sunday: Domingo Has delivery: Hay reparto Loading: Cargando Fields to show: Campos a mostrar Create new one: Crear nuevo Toggle: Desplegar/Plegar -Check all: Seleccionar todo \ No newline at end of file +Check all: Seleccionar todo +Select a file: Selecciona un fichero \ No newline at end of file diff --git a/front/core/module.js b/front/core/module.js index d5fc76578..96685092d 100644 --- a/front/core/module.js +++ b/front/core/module.js @@ -1,6 +1,7 @@ import {ng, ngDeps} from './vendor'; const ngModule = ng.module('vnCore', ngDeps); +ngModule.constant('moment', require('moment-timezone')); export default ngModule; config.$inject = ['$translateProvider', '$translatePartialLoaderProvider']; diff --git a/front/core/styles/salixfont.css b/front/core/styles/salixfont.css index eea133d1d..5bea56e13 100644 --- a/front/core/styles/salixfont.css +++ b/front/core/styles/salixfont.css @@ -23,6 +23,12 @@ -moz-osx-font-smoothing: grayscale; } +.icon-basketadd:before { + content: "\e955"; +} +.icon-catalog:before { + content: "\e952"; +} .icon-agency:before { content: "\e910"; } @@ -275,3 +281,264 @@ .icon-worker:before { content: "\e943"; } +.icon-deliveryprices:before { + content: "\e956"; +} +.icon-basketadd:before { + content: "\e955"; +} +.icon-catalog:before { + content: "\e952"; +} +.icon-agency:before { + content: "\e910"; +} +.icon-delivery:before { + content: "\e94a"; +} +.icon-wand:before { + content: "\e954"; +} +.icon-unavailable:before { + content: "\e953"; +} +.icon-buscaman:before { + content: "\e951"; +} +.icon-pbx:before { + content: "\e950"; +} +.icon-calendar:before { + content: "\e94f"; +} +.icon-linesplit:before { + content: "\e945"; +} +.icon-invoices:before { + content: "\e91c"; +} +.icon-pets:before { + content: "\e94e"; +} +.icon-100:before { + content: "\e940"; +} +.icon-accessory:before { + content: "\e90a"; +} +.icon-actions:before { + content: "\e900"; +} +.icon-addperson:before { + content: "\e901"; +} +.icon-albaran:before { + content: "\e902"; +} +.icon-apps:before { + content: "\e948"; +} +.icon-artificial:before { + content: "\e903"; +} +.icon-barcode:before { + content: "\e904"; +} +.icon-basket:before { + content: "\e942"; +} +.icon-bin:before { + content: "\e905"; +} +.icon-botanical:before { + content: "\e906"; +} +.icon-bucket:before { + content: "\e907"; +} +.icon-claims:before { + content: "\e908"; +} +.icon-clone:before { + content: "\e909"; +} +.icon-columnadd:before { + content: "\e944"; +} +.icon-columndelete:before { + content: "\e90f"; +} +.icon-components:before { + content: "\e90b"; +} +.icon-consignatarios:before { + content: "\e90d"; +} +.icon-control:before { + content: "\e93f"; +} +.icon-credit:before { + content: "\e90e"; +} +.icon-details:before { + content: "\e911"; +} +.icon-disabled:before { + content: "\e91b"; +} +.icon-doc:before { + content: "\e913"; +} +.icon-entry:before { + content: "\e914"; +} +.icon-exit:before { + content: "\e947"; +} +.icon-eye:before { + content: "\e915"; +} +.icon-fiscal:before { + content: "\e912"; +} +.icon-flower:before { + content: "\e916"; +} +.icon-frozen:before { + content: "\e917"; +} +.icon-greenery:before { + content: "\e93c"; +} +.icon-greuge:before { + content: "\e918"; +} +.icon-grid:before { + content: "\e919"; +} +.icon-handmade:before { + content: "\e90c"; +} +.icon-history:before { + content: "\e91a"; +} +.icon-info:before { + content: "\e949"; +} +.icon-item:before { + content: "\e941"; +} +.icon-languaje:before { + content: "\e91d"; +} +.icon-linedelete:before { + content: "\e946"; +} +.icon-lines:before { + content: "\e91e"; +} +.icon-linesprepaired:before { + content: "\e94b"; +} +.icon-logout:before { + content: "\e91f"; +} +.icon-mana:before { + content: "\e920"; +} +.icon-mandatory:before { + content: "\e921"; +} +.icon-niche:before { + content: "\e922"; +} +.icon-no036:before { + content: "\e923"; +} +.icon-notes:before { + content: "\e924"; +} +.icon-noweb:before { + content: "\e925"; +} +.icon-onlinepayment:before { + content: "\e926"; +} +.icon-package:before { + content: "\e927"; +} +.icon-payment:before { + content: "\e928"; +} +.icon-person:before { + content: "\e929"; +} +.icon-photo:before { + content: "\e92a"; +} +.icon-plant:before { + content: "\e92b"; +} +.icon-recovery:before { + content: "\e92d"; +} +.icon-regentry:before { + content: "\e92e"; +} +.icon-reserve:before { + content: "\e92f"; +} +.icon-revision:before { + content: "\e94c"; +} +.icon-risk:before { + content: "\e930"; +} +.icon-services:before { + content: "\e94d"; +} +.icon-settings:before { + content: "\e931"; +} +.icon-sms:before { + content: "\e932"; +} +.icon-solclaim:before { + content: "\e933"; +} +.icon-solunion:before { + content: "\e934"; +} +.icon-splur:before { + content: "\e935"; +} +.icon-stowaway:before { + content: "\e92c"; +} +.icon-supplier:before { + content: "\e936"; +} +.icon-tags:before { + content: "\e937"; +} +.icon-tax:before { + content: "\e938"; +} +.icon-ticket:before { + content: "\e939"; +} +.icon-traceability:before { + content: "\e93a"; +} +.icon-transaction:before { + content: "\e93b"; +} +.icon-volume:before { + content: "\e93d"; +} +.icon-web:before { + content: "\e93e"; +} +.icon-worker:before { + content: "\e943"; +} \ No newline at end of file diff --git a/front/core/styles/salixfont.svg b/front/core/styles/salixfont.svg old mode 100755 new mode 100644 index 4b55506e4..04dd47f6f --- a/front/core/styles/salixfont.svg +++ b/front/core/styles/salixfont.svg @@ -89,6 +89,9 @@ + + + \ No newline at end of file diff --git a/front/core/styles/salixfont.ttf b/front/core/styles/salixfont.ttf old mode 100755 new mode 100644 index 3fb247cc1..b11c6f64c Binary files a/front/core/styles/salixfont.ttf and b/front/core/styles/salixfont.ttf differ diff --git a/front/core/styles/salixfont.woff b/front/core/styles/salixfont.woff old mode 100755 new mode 100644 index b3b3f1768..f88e6bfbf Binary files a/front/core/styles/salixfont.woff and b/front/core/styles/salixfont.woff differ diff --git a/front/core/vendor.js b/front/core/vendor.js index 7de458072..629c4de4e 100644 --- a/front/core/vendor.js +++ b/front/core/vendor.js @@ -1,5 +1,4 @@ import '@babel/polyfill'; - import * as ng from 'angular'; export {ng}; @@ -10,13 +9,15 @@ import 'mg-crud'; import 'oclazyload'; import 'angular-material'; import 'angular-material/modules/scss/angular-material.scss'; +import 'angular-moment'; export const ngDeps = [ 'pascalprecht.translate', 'ui.router', 'mgCrud', 'oc.lazyLoad', - 'ngMaterial' + 'ngMaterial', + 'angularMoment' ]; import 'material-design-lite'; diff --git a/front/package-lock.json b/front/package-lock.json index a81776d0c..2fc1af6d2 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -46,6 +46,14 @@ "resolved": "https://registry.npmjs.org/angular-material/-/angular-material-1.1.12.tgz", "integrity": "sha512-hvYgVSAxmXy+ozm+FcdGrTrBKm/TLubCgJ8xZR3LNYYmLfsIfzh4Eyk87inmTCXS02KYL0EX2dUeiVmanHlIaQ==" }, + "angular-moment": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/angular-moment/-/angular-moment-1.3.0.tgz", + "integrity": "sha512-KG8rvO9MoaBLwtGnxTeUveSyNtrL+RNgGl1zqWN36+HDCCVGk2DGWOzqKWB6o+eTTbO3Opn4hupWKIElc8XETA==", + "requires": { + "moment": ">=2.8.0 <3.0.0" + } + }, "angular-translate": { "version": "2.18.1", "resolved": "https://registry.npmjs.org/angular-translate/-/angular-translate-2.18.1.tgz", @@ -101,9 +109,9 @@ "integrity": "sha1-8tcgwiCS90Mih3XHXjYSYyUB8TE=" }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -130,26 +138,39 @@ "angular": "^1.6.1" } }, - "npm": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.5.0.tgz", - "integrity": "sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ==", + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "moment-timezone": { + "version": "0.5.25", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.25.tgz", + "integrity": "sha512-DgEaTyN/z0HFaVcVbSyVCUU6HeFdnNC3vE4c9cgu2dgMTvjBUBdBzWfasTBmAW45u5OIMeCJtU8yNjM22DHucw==", "requires": { - "JSONStream": "^1.3.4", + "moment": ">= 2.9.0" + } + }, + "npm": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.9.0.tgz", + "integrity": "sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w==", + "requires": { + "JSONStream": "^1.3.5", "abbrev": "~1.1.1", "ansicolors": "~0.3.2", "ansistyles": "~0.1.3", - "aproba": "~1.2.0", + "aproba": "^2.0.0", "archy": "~1.0.0", "bin-links": "^1.1.2", "bluebird": "^3.5.3", - "byte-size": "^4.0.3", - "cacache": "^11.2.0", + "byte-size": "^5.0.1", + "cacache": "^11.3.2", "call-limit": "~1.1.0", - "chownr": "~1.0.1", - "ci-info": "^1.6.0", + "chownr": "^1.1.1", + "ci-info": "^2.0.0", "cli-columns": "^3.1.2", - "cli-table3": "^0.5.0", + "cli-table3": "^0.5.1", "cmd-shim": "~2.0.2", "columnify": "~1.5.4", "config-chain": "^1.1.12", @@ -173,13 +194,18 @@ "inherits": "~2.0.3", "ini": "^1.3.5", "init-package-json": "^1.10.3", - "is-cidr": "^2.0.6", + "is-cidr": "^3.0.0", "json-parse-better-errors": "^1.0.2", "lazy-property": "~1.0.0", - "libcipm": "^2.0.2", - "libnpmhook": "^4.0.1", + "libcipm": "^3.0.3", + "libnpm": "^2.0.1", + "libnpmaccess": "*", + "libnpmhook": "^5.0.2", + "libnpmorg": "*", + "libnpmsearch": "*", + "libnpmteam": "*", "libnpx": "^10.2.0", - "lock-verify": "^2.0.2", + "lock-verify": "^2.1.0", "lockfile": "^1.0.4", "lodash._baseindexof": "*", "lodash._baseuniq": "~4.6.0", @@ -192,47 +218,46 @@ "lodash.union": "~4.6.0", "lodash.uniq": "~4.5.0", "lodash.without": "~4.4.0", - "lru-cache": "^4.1.3", + "lru-cache": "^4.1.5", "meant": "~1.0.1", "mississippi": "^3.0.0", "mkdirp": "~0.5.1", "move-concurrently": "^1.0.1", "node-gyp": "^3.8.0", "nopt": "~4.0.1", - "normalize-package-data": "~2.4.0", - "npm-audit-report": "^1.3.1", + "normalize-package-data": "^2.5.0", + "npm-audit-report": "^1.3.2", "npm-cache-filename": "~1.0.2", "npm-install-checks": "~3.0.0", "npm-lifecycle": "^2.1.0", "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.1.0", - "npm-profile": "^3.0.2", - "npm-registry-client": "^8.6.0", - "npm-registry-fetch": "^1.1.0", + "npm-packlist": "^1.4.1", + "npm-pick-manifest": "^2.2.3", + "npm-profile": "*", + "npm-registry-fetch": "^3.9.0", "npm-user-validate": "~1.0.0", "npmlog": "~4.1.2", "once": "~1.4.0", "opener": "^1.5.1", "osenv": "^0.1.5", - "pacote": "^8.1.6", + "pacote": "^9.5.0", "path-is-inside": "~1.0.2", "promise-inflight": "~1.0.1", "qrcode-terminal": "^0.12.0", - "query-string": "^6.1.0", + "query-string": "^6.2.0", "qw": "~1.0.1", "read": "~1.0.7", "read-cmd-shim": "~1.0.1", "read-installed": "~4.0.3", "read-package-json": "^2.0.13", - "read-package-tree": "^5.2.1", - "readable-stream": "^2.3.6", + "read-package-tree": "^5.2.2", + "readable-stream": "^3.1.1", "readdir-scoped-modules": "*", "request": "^2.88.0", "retry": "^0.12.0", - "rimraf": "~2.6.2", + "rimraf": "^2.6.3", "safe-buffer": "^5.1.2", - "semver": "^5.5.1", + "semver": "^5.6.0", "sha": "~2.0.1", "slide": "~1.1.6", "sorted-object": "~2.0.1", @@ -244,7 +269,7 @@ "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", "umask": "~1.1.0", - "unique-filename": "~1.1.0", + "unique-filename": "^1.1.1", "unpipe": "~1.0.0", "update-notifier": "^2.5.0", "uuid": "^3.3.2", @@ -252,11 +277,11 @@ "validate-npm-package-name": "~3.0.0", "which": "^1.3.1", "worker-farm": "^1.6.0", - "write-file-atomic": "^2.3.0" + "write-file-atomic": "^2.4.2" }, "dependencies": { "JSONStream": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "requires": { "jsonparse": "^1.2.0", @@ -268,7 +293,7 @@ "bundled": true }, "agent-base": { - "version": "4.2.0", + "version": "4.2.1", "bundled": true, "requires": { "es6-promisify": "^5.0.0" @@ -318,7 +343,7 @@ "bundled": true }, "aproba": { - "version": "1.2.0", + "version": "2.0.0", "bundled": true }, "archy": { @@ -331,6 +356,28 @@ "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "asap": { @@ -419,10 +466,6 @@ "version": "1.0.0", "bundled": true }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, "builtins": { "version": "1.0.3", "bundled": true @@ -432,27 +475,51 @@ "bundled": true }, "byte-size": { - "version": "4.0.3", + "version": "5.0.1", "bundled": true }, "cacache": { - "version": "11.2.0", + "version": "11.3.2", "bundled": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "figgy-pudding": "^3.1.0", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.3", + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", "rimraf": "^2.6.2", - "ssri": "^6.0.0", - "unique-filename": "^1.1.0", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "1.1.1", + "bundled": true + }, + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } } }, "call-limit": { @@ -481,15 +548,15 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true }, "ci-info": { - "version": "1.6.0", + "version": "2.0.0", "bundled": true }, "cidr-regex": { - "version": "2.0.9", + "version": "2.0.10", "bundled": true, "requires": { "ip-regex": "^2.1.0" @@ -508,7 +575,7 @@ } }, "cli-table3": { - "version": "0.5.0", + "version": "0.5.1", "bundled": true, "requires": { "colors": "^1.1.2", @@ -570,7 +637,7 @@ "bundled": true }, "colors": { - "version": "1.1.2", + "version": "1.3.3", "bundled": true, "optional": true }, @@ -601,6 +668,28 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "config-chain": { @@ -639,6 +728,10 @@ "run-queue": "^1.0.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, "iferr": { "version": "0.1.5", "bundled": true @@ -763,6 +856,28 @@ "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "ecc-jsbn": { @@ -804,7 +919,7 @@ } }, "es6-promise": { - "version": "4.2.4", + "version": "4.2.6", "bundled": true }, "es6-promisify": { @@ -829,6 +944,12 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + } } }, "extend": { @@ -868,6 +989,28 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "forever-agent": { @@ -889,6 +1032,28 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "fs-minipass": { @@ -920,6 +1085,26 @@ "iferr": { "version": "0.1.5", "bundled": true + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, @@ -951,6 +1136,10 @@ "wide-align": "^1.1.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -963,7 +1152,7 @@ } }, "genfun": { - "version": "4.0.1", + "version": "5.0.0", "bundled": true }, "gentle-fs": { @@ -980,6 +1169,10 @@ "slide": "^1.1.6" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, "iferr": { "version": "0.1.5", "bundled": true @@ -991,8 +1184,11 @@ "bundled": true }, "get-stream": { - "version": "3.0.0", - "bundled": true + "version": "4.1.0", + "bundled": true, + "requires": { + "pump": "^3.0.0" + } }, "getpass": { "version": "0.1.7", @@ -1035,6 +1231,12 @@ "timed-out": "^4.0.0", "unzip-response": "^2.0.1", "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + } } }, "graceful-fs": { @@ -1169,25 +1371,24 @@ "version": "2.1.0", "bundled": true }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-ci": { "version": "1.1.0", "bundled": true, "requires": { "ci-info": "^1.0.0" + }, + "dependencies": { + "ci-info": { + "version": "1.6.0", + "bundled": true + } } }, "is-cidr": { - "version": "2.0.6", + "version": "3.0.0", "bundled": true, "requires": { - "cidr-regex": "^2.0.8" + "cidr-regex": "^2.0.10" } }, "is-fullwidth-code-point": { @@ -1302,43 +1503,175 @@ } }, "libcipm": { - "version": "2.0.2", + "version": "3.0.3", "bundled": true, "requires": { "bin-links": "^1.1.2", "bluebird": "^3.5.1", + "figgy-pudding": "^3.5.1", "find-npm-prefix": "^1.0.2", "graceful-fs": "^4.1.11", + "ini": "^1.3.5", "lock-verify": "^2.0.2", "mkdirp": "^0.5.1", "npm-lifecycle": "^2.0.3", "npm-logical-tree": "^1.2.1", "npm-package-arg": "^6.1.0", - "pacote": "^8.1.6", - "protoduck": "^5.0.0", + "pacote": "^9.1.0", "read-package-json": "^2.0.13", "rimraf": "^2.6.2", "worker-farm": "^1.6.0" } }, - "libnpmhook": { - "version": "4.0.1", + "libnpm": { + "version": "2.0.1", "bundled": true, "requires": { - "figgy-pudding": "^3.1.0", - "npm-registry-fetch": "^3.0.0" + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "find-npm-prefix": "^1.0.2", + "libnpmaccess": "^3.0.1", + "libnpmconfig": "^1.2.1", + "libnpmhook": "^5.0.2", + "libnpmorg": "^1.0.0", + "libnpmpublish": "^1.1.0", + "libnpmsearch": "^2.0.0", + "libnpmteam": "^1.0.1", + "lock-verify": "^2.0.2", + "npm-lifecycle": "^2.1.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "npm-profile": "^4.0.1", + "npm-registry-fetch": "^3.8.0", + "npmlog": "^4.1.2", + "pacote": "^9.2.3", + "read-package-json": "^2.0.13", + "stringify-package": "^1.0.0" + } + }, + "libnpmaccess": { + "version": "3.0.1", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0" }, "dependencies": { - "npm-registry-fetch": { - "version": "3.1.1", + "aproba": { + "version": "2.0.0", + "bundled": true + } + } + }, + "libnpmconfig": { + "version": "1.2.1", + "bundled": true, + "requires": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", "bundled": true, "requires": { - "bluebird": "^3.5.1", - "figgy-pudding": "^3.1.0", - "lru-cache": "^4.1.2", - "make-fetch-happen": "^4.0.0", - "npm-package-arg": "^6.0.0" + "locate-path": "^3.0.0" } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "bundled": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "bundled": true + } + } + }, + "libnpmhook": { + "version": "5.0.2", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + } + }, + "libnpmorg": { + "version": "1.0.0", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "bundled": true + } + } + }, + "libnpmpublish": { + "version": "1.1.1", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + } + }, + "libnpmsearch": { + "version": "2.0.0", + "bundled": true, + "requires": { + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + } + }, + "libnpmteam": { + "version": "1.0.1", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "bundled": true } } }, @@ -1365,10 +1698,10 @@ } }, "lock-verify": { - "version": "2.0.2", + "version": "2.1.0", "bundled": true, "requires": { - "npm-package-arg": "^5.1.2 || 6", + "npm-package-arg": "^6.1.0", "semver": "^5.4.1" } }, @@ -1443,7 +1776,7 @@ "bundled": true }, "lru-cache": { - "version": "4.1.3", + "version": "4.1.5", "bundled": true, "requires": { "pseudomap": "^1.0.2", @@ -1565,6 +1898,12 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + } } }, "ms": { @@ -1633,17 +1972,26 @@ } }, "normalize-package-data": { - "version": "2.4.0", + "version": "2.5.0", "bundled": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "bundled": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "npm-audit-report": { - "version": "1.3.1", + "version": "1.3.2", "bundled": true, "requires": { "cli-table3": "^0.5.0", @@ -1651,7 +1999,7 @@ } }, "npm-bundled": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true }, "npm-cache-filename": { @@ -1694,7 +2042,7 @@ } }, "npm-packlist": { - "version": "1.1.12", + "version": "1.4.1", "bundled": true, "requires": { "ignore-walk": "^3.0.1", @@ -1702,157 +2050,33 @@ } }, "npm-pick-manifest": { - "version": "2.1.0", + "version": "2.2.3", "bundled": true, "requires": { + "figgy-pudding": "^3.5.1", "npm-package-arg": "^6.0.0", "semver": "^5.4.1" } }, "npm-profile": { - "version": "3.0.2", + "version": "4.0.1", "bundled": true, "requires": { "aproba": "^1.1.2 || 2", - "make-fetch-happen": "^2.5.0 || 3 || 4" - } - }, - "npm-registry-client": { - "version": "8.6.0", - "bundled": true, - "requires": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } + "figgy-pudding": "^3.4.1", + "npm-registry-fetch": "^3.8.0" } }, "npm-registry-fetch": { - "version": "1.1.0", + "version": "3.9.0", "bundled": true, "requires": { + "JSONStream": "^1.3.4", "bluebird": "^3.5.1", - "figgy-pudding": "^2.0.1", - "lru-cache": "^4.1.2", - "make-fetch-happen": "^3.0.0", - "npm-package-arg": "^6.0.0", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - } - } - }, - "figgy-pudding": { - "version": "2.0.1", - "bundled": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^10.0.4", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.0", - "lru-cache": "^4.1.2", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^3.0.1", - "ssri": "^5.2.4" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "^1.1.4", - "smart-buffer": "^1.0.13" - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "^4.1.0", - "socks": "^1.1.10" - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" } }, "npm-run-path": { @@ -1957,34 +2181,57 @@ } }, "pacote": { - "version": "8.1.6", + "version": "9.5.0", "bundled": true, "requires": { - "bluebird": "^3.5.1", - "cacache": "^11.0.2", - "get-stream": "^3.0.0", - "glob": "^7.1.2", - "lru-cache": "^4.1.3", + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", "make-fetch-happen": "^4.0.1", "minimatch": "^3.0.4", - "minipass": "^2.3.3", + "minipass": "^2.3.5", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "normalize-package-data": "^2.4.0", "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.10", - "npm-pick-manifest": "^2.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", "osenv": "^0.1.5", "promise-inflight": "^1.0.1", "promise-retry": "^1.1.1", - "protoduck": "^5.0.0", + "protoduck": "^5.0.1", "rimraf": "^2.6.2", "safe-buffer": "^5.1.2", - "semver": "^5.5.0", - "ssri": "^6.0.0", - "tar": "^4.4.3", - "unique-filename": "^1.1.0", - "which": "^1.3.0" + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } } }, "parallel-transform": { @@ -1994,6 +2241,28 @@ "cyclist": "~0.2.2", "inherits": "^2.0.3", "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "path-exists": { @@ -2012,6 +2281,10 @@ "version": "2.0.1", "bundled": true }, + "path-parse": { + "version": "1.0.6", + "bundled": true + }, "performance-now": { "version": "2.1.0", "bundled": true @@ -2058,10 +2331,10 @@ "bundled": true }, "protoduck": { - "version": "5.0.0", + "version": "5.0.1", "bundled": true, "requires": { - "genfun": "^4.0.1" + "genfun": "^5.0.0" } }, "prr": { @@ -2116,7 +2389,7 @@ "bundled": true }, "query-string": { - "version": "6.1.0", + "version": "6.2.0", "bundled": true, "requires": { "decode-uri-component": "^0.2.0", @@ -2182,7 +2455,7 @@ } }, "read-package-tree": { - "version": "5.2.1", + "version": "5.2.2", "bundled": true, "requires": { "debuglog": "^1.0.1", @@ -2193,16 +2466,12 @@ } }, "readable-stream": { - "version": "2.3.6", + "version": "3.1.1", "bundled": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdir-scoped-modules": { @@ -2273,10 +2542,10 @@ "bundled": true }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "run-queue": { @@ -2284,6 +2553,12 @@ "bundled": true, "requires": { "aproba": "^1.1.1" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + } } }, "safe-buffer": { @@ -2295,7 +2570,7 @@ "bundled": true }, "semver": { - "version": "5.5.1", + "version": "5.6.0", "bundled": true }, "semver-diff": { @@ -2315,6 +2590,28 @@ "requires": { "graceful-fs": "^4.1.2", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "shebang-command": { @@ -2421,7 +2718,7 @@ } }, "spdx-license-ids": { - "version": "3.0.0", + "version": "3.0.3", "bundled": true }, "sshpk": { @@ -2460,6 +2757,28 @@ "requires": { "readable-stream": "^2.1.5", "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-shift": { @@ -2496,7 +2815,7 @@ } }, "string_decoder": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "requires": { "safe-buffer": "~5.1.0" @@ -2580,6 +2899,28 @@ "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "timed-out": { @@ -2623,7 +2964,7 @@ "bundled": true }, "unique-filename": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "requires": { "unique-slug": "^2.0.0" @@ -2784,7 +3125,7 @@ "bundled": true }, "write-file-atomic": { - "version": "2.3.0", + "version": "2.4.2", "bundled": true, "requires": { "graceful-fs": "^4.1.11", @@ -2855,19 +3196,11 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/require-yaml/-/require-yaml-0.0.1.tgz", "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", - "requires": { - "js-yaml": "^3.10.0" - }, "dependencies": { - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" diff --git a/front/package.json b/front/package.json index 78ddecce8..07ae364c2 100644 --- a/front/package.json +++ b/front/package.json @@ -15,14 +15,16 @@ "angular-animate": "^1.7.7", "angular-aria": "^1.7.7", "angular-material": "^1.1.12", + "angular-moment": "^1.3.0", "angular-translate": "^2.18.1", "angular-translate-loader-partial": "^2.18.1", "flatpickr": "^4.5.2", "fs-extra": "^5.0.0", - "js-yaml": "^3.12.1", + "js-yaml": "^3.13.1", "material-design-lite": "^1.3.0", "mg-crud": "^1.1.2", - "npm": "^6.5.0", + "moment-timezone": "^0.5.25", + "npm": "^6.9.0", "oclazyload": "^0.6.3", "require-yaml": "0.0.1", "validator": "^6.3.0" diff --git a/front/salix/components/login/style.scss b/front/salix/components/login/style.scss index bf3ad786f..c58f4aec1 100644 --- a/front/salix/components/login/style.scss +++ b/front/salix/components/login/style.scss @@ -37,6 +37,9 @@ vn-login { & > vn-check { padding-top: .5em; display: block; + .md-label { + white-space: inherit; + } } & > .footer { margin-top: 2em; diff --git a/front/salix/styles/display.scss b/front/salix/styles/display.scss index d842c1cc3..8c5827194 100644 --- a/front/salix/styles/display.scss +++ b/front/salix/styles/display.scss @@ -26,10 +26,6 @@ line-height: 0px; } -input:disabled, button:disabled { - cursor: not-allowed !important; -} - input[type="submit"]:disabled, button:disabled { opacity: 0.7; } diff --git a/front/salix/styles/margin.scss b/front/salix/styles/margin.scss index 8be2d8efe..640bea9ed 100644 --- a/front/salix/styles/margin.scss +++ b/front/salix/styles/margin.scss @@ -84,6 +84,32 @@ html [margin-large-h], .margin-large-h { margin-right: $margin-large; } +/* Huge */ + +html [margin-huge], .margin-huge { + margin: $margin-huge; +} +html [margin-huge-top], .margin-huge-top { + margin-top: $margin-huge; +} +html [margin-huge-left], .margin-huge-left { + margin-left: $margin-huge; +} +html [margin-huge-right], .margin-huge-right { + margin-right: $margin-huge; +} +html [margin-huge-bottom], .margin-huge-bottom { + margin-bottom: $margin-huge; +} +html [margin-huge-v], .margin-huge-v { + margin-top: $margin-huge; + margin-bottom: $margin-huge; +} +html [margin-huge-h], .margin-huge-h { + margin-left: $margin-huge; + margin-right: $margin-huge; +} + /* Minus Small */ diff --git a/front/salix/styles/misc.scss b/front/salix/styles/misc.scss index 4997cac05..5332a38b6 100644 --- a/front/salix/styles/misc.scss +++ b/front/salix/styles/misc.scss @@ -183,4 +183,11 @@ fieldset[disabled] .mdl-textfield .mdl-textfield__label, } } } +} + +vn-empty-rows { + display: block; + text-align: center; + padding: 1.5em; + box-sizing: border-box; } \ No newline at end of file diff --git a/front/salix/styles/variables.scss b/front/salix/styles/variables.scss index ea496f4f4..5fd31a8c6 100644 --- a/front/salix/styles/variables.scss +++ b/front/salix/styles/variables.scss @@ -22,6 +22,7 @@ $margin-none: 0; $margin-small: 8px; $margin-medium: 16px; $margin-large: 32px; +$margin-huge: 100px; // Light theme @@ -51,6 +52,8 @@ $color-hover-cd: rgba(0, 0, 0, .1); $color-hover-dc: .7; $color-disabled: .6; +$color-font-link-medium: lighten($color-font-link, 20%); +$color-font-link-light: lighten($color-font-link, 35%); $color-main-medium: lighten($color-main, 20%); $color-main-light: lighten($color-main, 35%); $color-success-medium: lighten($color-success, 20%); diff --git a/gulpfile.js b/gulpfile.js index 8b13a8a8b..b696431c0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -4,6 +4,8 @@ const exec = require('child_process').exec; const PluginError = require('plugin-error'); const argv = require('minimist')(process.argv.slice(2)); const log = require('fancy-log'); +const request = require('request'); +const e2eConfig = require('./e2e/helpers/config.js'); // Configuration @@ -149,8 +151,19 @@ function e2eOnly() { if (argv.show || argv.s) process.env.E2E_SHOW = true; + process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = true; + const specFiles = [ + `${__dirname}/e2e/paths/01*/*[sS]pec.js`, + `${__dirname}/e2e/paths/02*/*[sS]pec.js`, + `${__dirname}/e2e/paths/03*/*[sS]pec.js`, + `${__dirname}/e2e/paths/04*/*[sS]pec.js`, + `${__dirname}/e2e/paths/05*/*[sS]pec.js`, + `${__dirname}/e2e/paths/06*/*[sS]pec.js`, + `${__dirname}/e2e/paths/07*/*[sS]pec.js`, + `${__dirname}/e2e/paths/08*/*[sS]pec.js`, + `${__dirname}/e2e/paths/09*/*[sS]pec.js`, `${__dirname}/e2e/paths/**/*[sS]pec.js`, `${__dirname}/e2e/helpers/extensions.js` ]; @@ -177,7 +190,31 @@ function e2eOnly() { } e2eOnly.description = `Runs the e2e tests only`; -e2e = gulp.series(docker, e2eOnly); +async function backendStatus() { + const milliseconds = 250; + return new Promise(resolve => { + let timer; + let attempts = 1; + timer = setInterval(() => { + const url = `${e2eConfig.url}/api/Applications/status`; + request.get(url, (err, res) => { + if (res.body == 'true') { + clearInterval(timer); + resolve(attempts); + } else + attempts++; + }); + }, milliseconds); + }); +} +backendStatus.description = `Performs a simple requests to check the backend status`; + +e2e = gulp.series(docker, async function isBackendReady() { + const attempts = await backendStatus(); + log(`Backend ready after ${attempts} attempt(s)`); + + return attempts; +}, e2eOnly); e2e.description = `Restarts database and runs the e2e tests`; function smokesOnly() { @@ -522,5 +559,6 @@ module.exports = { watch, docker, dockerStart, - dockerWait + dockerWait, + backendStatus }; diff --git a/loopback/common/models/vn-model.js b/loopback/common/models/vn-model.js index c2bf8463e..d03d52ae8 100644 --- a/loopback/common/models/vn-model.js +++ b/loopback/common/models/vn-model.js @@ -152,8 +152,9 @@ module.exports = function(Self) { } try { - await realMethod.call(this, data, options); - if (cb) cb(); + const result = await realMethod.call(this, data, options); + + if (cb) cb(null, result); } catch (err) { let myErr = replaceErr(err, replaceErrFunc); if (cb) diff --git a/loopback/locale/en.json b/loopback/locale/en.json index f7792a56a..4a86734fd 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -43,5 +43,12 @@ "The secret can't be blank": "The secret can't be blank", "Invalid TIN": "Invalid Tax number", "This ticket can't be invoiced": "This ticket can't be invoiced", - "The value should be a number": "The value should be a number" + "The value should be a number": "The value should be a number", + "The current ticket can't be modified": "The current ticket can't be modified", + "Extension format is invalid": "Extension format is invalid", + "NO_ZONE_FOR_THIS_PARAMETERS": "NO_ZONE_FOR_THIS_PARAMETERS", + "This client can't be invoiced": "This client can't be invoiced", + "The introduced hour already exists": "The introduced hour already exists", + "Invalid parameters to create a new ticket": "Invalid parameters to create a new ticket", + "Concept cannot be blank": "Concept cannot be blank" } \ No newline at end of file diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 2f92c298f..256b51205 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -25,7 +25,6 @@ "Observation type must be unique": "El tipo de observación no puede repetirse", "The credit must be an integer greater than or equal to zero": "The credit must be an integer greater than or equal to zero", "The grade must be similar to the last one": "El grade debe ser similar al último", - "NO_AGENCY_AVAILABLE": "NO_AGENCY_AVAILABLE", "Only manager can change the credit": "Solo el gerente puede cambiar el credito de este cliente", "Name cannot be blank": "El nombre no puede estar en blanco", "Phone cannot be blank": "El teléfono no puede estar en blanco", @@ -54,7 +53,6 @@ "Agency cannot be blank": "La agencia no puede quedar en blanco", "You can't make changes on a client with verified data": "No puedes hacer cambios en un cliente con datos comprobados", "This address doesn't exist": "Este consignatario no existe", - "The sales of this ticket can't be modified": "Los movimientos de este tiquet no pueden ser modificadas", "You can't create an order for a inactive client": "You can't create an order for a inactive client", "You can't create an order for a client that doesn't has tax data verified": "You can't create an order for a client that doesn't has tax data verified", "You must delete the claim id %d first": "Antes debes borrar la reclamacion %d", @@ -78,10 +76,23 @@ "We weren't able to send this SMS": "No hemos podido enviar el SMS", "This client can't be invoiced": "Este cliente no puede ser facturado", "This ticket can't be invoiced": "Este ticket no puede ser facturado", - "That item is not available on that day": "El item no esta disponible para esa fecha", - "That item doesn't exists": "El artículo no existe", "You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado", "This ticket can not be modified": "Este ticket no puede ser modificado", + "The introduced hour already exists": "Esta hora ya ha sido introducida", + "INFINITE_LOOP": "Existe una dependencia entre dos Jefes", + "The sales of the current ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas", + "The sales of the receiver ticket can't be modified": "Las lineas del ticket al que envias no pueden ser modificadas", + "NO_AGENCY_AVAILABLE": "No hay agencias disponibles", + "The current ticket can't be modified": "El ticket actual no puede ser modificado", + "The sales of this ticket can't be modified": "Las lineas de este ticket no pueden ser modificadas", + "Please select at least one sale": "Por favor selecciona al menos una linea", + "All sales must belong to the same ticket": "Todas las lineas deben pertenecer al mismo ticket", + "NO_ZONE_FOR_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada", + "This item doesn't exists": "El artículo no existe", "NOT_ZONE_WITH_THIS_PARAMETERS": "Para este día no hay ninguna zona configurada", - "Extension format is invalid": "El formato de la extensión es inválido" + "Extension format is invalid": "El formato de la extensión es inválido", + "Invalid parameters to create a new ticket": "Parámetros inválidos para crear un nuevo ticket", + "This item is not available": "Este artículo no está disponible", + "This postcode already exists": "Este código postal ya existe", + "Concept cannot be blank": "Concept cannot be blank" } \ No newline at end of file diff --git a/loopback/server/boot/root.js b/loopback/server/boot/root.js index 7a4563f61..f70b32cb0 100644 --- a/loopback/server/boot/root.js +++ b/loopback/server/boot/root.js @@ -1,4 +1,3 @@ - module.exports = function(app) { let models = app.models(); models.forEach(function(model) { @@ -27,9 +26,11 @@ module.exports = function(app) { app.enableAuth(); + // eslint-disable-next-line new-cap let router = app.loopback.Router(); router.get('/status', app.loopback.status()); app.use(router); + /* let ds = app.dataSources.auth; //ds.automigrate(function() { diff --git a/loopback/server/boot/storage.js b/loopback/server/boot/storage.js new file mode 100644 index 000000000..d34804059 --- /dev/null +++ b/loopback/server/boot/storage.js @@ -0,0 +1,18 @@ +const uuid = require('uuid/v1'); +const md5 = require('md5'); + +module.exports = app => { + const storageConnector = app.dataSources.storage.connector; + + storageConnector.getFilename = function(file) { + return `${uuid()}.${storageConnector.getFileExtension(file.name)}`; + }; + + storageConnector.getFileExtension = function(fileName) { + return fileName.split('.').pop(); + }; + + storageConnector.getPathHash = function(id) { + return md5(id.toString()).substring(0, 3); + }; +}; diff --git a/loopback/server/datasources.json b/loopback/server/datasources.json index 401b9483d..6f6ef8648 100644 --- a/loopback/server/datasources.json +++ b/loopback/server/datasources.json @@ -14,5 +14,20 @@ "multipleStatements": true, "connectTimeout": 20000, "acquireTimeout": 20000 + }, + "storage": { + "name": "storage", + "connector": "loopback-component-storage", + "provider": "filesystem", + "root": "./e2e/dms", + "maxFileSize": "10485760", + "allowedContentTypes": [ + "application/pdf", + "application/zip", + "application/rar", + "image/png", + "image/jpeg", + "image/jpg" + ] } } diff --git a/loopback/server/middleware.development.json b/loopback/server/middleware.development.json index 9cb38a275..071c11a30 100644 --- a/loopback/server/middleware.development.json +++ b/loopback/server/middleware.development.json @@ -3,7 +3,7 @@ "strong-error-handler": { "params": { "debug": true, - "log": false + "log": true } } } diff --git a/loopback/server/middleware/error-handler.js b/loopback/server/middleware/error-handler.js index 8772220de..725826ae7 100644 --- a/loopback/server/middleware/error-handler.js +++ b/loopback/server/middleware/error-handler.js @@ -24,7 +24,13 @@ module.exports = function() { if (err.sqlState == '45000') return next(new UserError(req.__(err.sqlMessage))); - if (!err.statusCode || err.statusCode >= 500) + // Logs error to console + + let env = process.env.NODE_ENV; + let useCustomLogging = env && env != 'development' && + (!err.statusCode || err.statusCode >= 500); + + if (useCustomLogging) logToConsole(req, err); next(err); diff --git a/modules/agency/back/methods/agency/specs/getAgenciesWithWarehouse.spec.js b/modules/agency/back/methods/agency/specs/getAgenciesWithWarehouse.spec.js new file mode 100644 index 000000000..10e0d6685 --- /dev/null +++ b/modules/agency/back/methods/agency/specs/getAgenciesWithWarehouse.spec.js @@ -0,0 +1,35 @@ +const app = require('vn-loopback/server/server'); + +describe('Agency getAgenciesWithWarehouse()', () => { + const today = new Date(); + it('should return the agencies that can handle the given delivery request', async() => { + let filter = { + addressFk: 101, + landed: today, + warehouseFk: 1 + }; + + let result = await app.models.Agency.getAgenciesWithWarehouse(filter); + let agencies = result[0]; + + expect(agencies.length).toEqual(5); + expect(agencies[0].agencyMode).toEqual('inhouse pickup'); + expect(agencies[1].agencyMode).toEqual('Silla247'); + expect(agencies[2].agencyMode).toEqual('Silla247Expensive'); + expect(agencies[3].agencyMode).toEqual('Other agency'); + expect(agencies[4].agencyMode).toEqual('Refund'); + }); + + it('should return no agencies if the date is incorrect', async() => { + let filter = { + addressFk: 101, + landed: null, + warehouseFk: 1 + }; + + let result = await app.models.Agency.getAgenciesWithWarehouse(filter); + let agencies = result[0]; + + expect(agencies.length).toEqual(0); + }); +}); diff --git a/modules/agency/back/methods/agency/specs/getFirstShipped.spec.js b/modules/agency/back/methods/agency/specs/getFirstShipped.spec.js new file mode 100644 index 000000000..04cb7f268 --- /dev/null +++ b/modules/agency/back/methods/agency/specs/getFirstShipped.spec.js @@ -0,0 +1,16 @@ +const app = require('vn-loopback/server/server'); + +describe('Agency getFirstShipped()', () => { + it('should return the first shipped and landed possible for the filter', async() => { + let filter = { + agencyModeFk: 1, + addressFk: 101, + warehouseFk: 1 + }; + + let result = await app.models.Agency.getFirstShipped(filter); + + expect(result.shipped).toBeDefined(); + expect(result.landed).toBeDefined(); + }); +}); diff --git a/modules/agency/back/methods/agency/specs/landsThatDay.spec.js b/modules/agency/back/methods/agency/specs/landsThatDay.spec.js new file mode 100644 index 000000000..73a036e2a --- /dev/null +++ b/modules/agency/back/methods/agency/specs/landsThatDay.spec.js @@ -0,0 +1,15 @@ +const app = require('vn-loopback/server/server'); + +describe('Agency landsThatDay()', () => { + const today = new Date(); + it('should return a list of agencies that can land a shipment on a day for an address', async() => { + let filter = { + addressFk: 101, + landed: today, + }; + + let agencies = await app.models.Agency.landsThatDay(filter); + + expect(agencies.length).toBeGreaterThanOrEqual(3); + }); +}); diff --git a/modules/agency/back/methods/zone/editPrices.js b/modules/agency/back/methods/zone/editPrices.js new file mode 100644 index 000000000..b0203dc4b --- /dev/null +++ b/modules/agency/back/methods/zone/editPrices.js @@ -0,0 +1,81 @@ +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethod('editPrices', { + description: 'Changes the price and bonus of a delivery day', + accessType: 'WRITE', + accepts: [{ + arg: 'id', + type: 'Number', + description: 'The zone id', + http: {source: 'path'} + }, + { + arg: 'delivered', + type: 'Date', + required: true, + }, + { + arg: 'price', + type: 'Number', + required: true, + }, + { + arg: 'bonus', + type: 'Number', + required: true, + }, + { + arg: 'option', + type: 'String', + required: true, + }], + returns: { + type: 'object', + root: true + }, + http: { + path: `/:id/editPrices`, + verb: 'POST' + } + }); + + Self.editPrices = async(id, delivered, price, bonus, option) => { + const models = Self.app.models; + + let filter = { + where: { + zoneFk: id + } + }; + + let where; + let shouldPropagate = true; + + if (option == 'Only this day') { + shouldPropagate = false; + where = {delivered}; + } else if (option == 'From this day') { + where = { + delivered: { + gte: delivered + } + }; + } + + filter = mergeFilters(filter, {where}); + + const days = await models.ZoneCalendar.find(filter); + const areAllFromSameZone = days.every(day => day.zoneFk === id); + + if (!areAllFromSameZone) + throw new UserError('All delivery days must belong to the same zone'); + + if (shouldPropagate) { + const zone = await models.Zone.findById(id); + zone.updateAttributes({price, bonus}); + } + + return models.ZoneCalendar.updateAll(filter.where, {price, bonus}); + }; +}; diff --git a/modules/agency/back/methods/zone/specs/editPrices.spec.js b/modules/agency/back/methods/zone/specs/editPrices.spec.js new file mode 100644 index 000000000..ad0541641 --- /dev/null +++ b/modules/agency/back/methods/zone/specs/editPrices.spec.js @@ -0,0 +1,81 @@ +const app = require('vn-loopback/server/server'); + +describe('agency editPrices()', () => { + const zoneId = 1; + let originalZone; + + beforeAll(async done => { + originalZone = await app.models.Zone.findById(zoneId); + done(); + }); + + afterAll(async done => { + await await app.models.ZoneCalendar.updateAll({zoneFk: zoneId}, { + price: originalZone.price, + bonus: originalZone.bonus + }); + done(); + }); + + it('should apply price and bonus for a selected day', async() => { + const delivered = new Date(); + delivered.setHours(0, 0, 0, 0); + await app.models.Zone.editPrices(zoneId, delivered, 4.00, 2.00, 'Only this day'); + + const editedDays = await app.models.ZoneCalendar.find({ + where: { + zoneFk: zoneId, + delivered: delivered + } + }); + const firstEditedDay = editedDays[0]; + + expect(editedDays.length).toEqual(1); + expect(firstEditedDay.price).toEqual(4.00); + expect(firstEditedDay.bonus).toEqual(2.00); + }); + + it('should apply price and bonus for all delivery days starting from selected day', async() => { + const delivered = new Date(); + delivered.setHours(0, 0, 0, 0); + await app.models.Zone.editPrices(1, delivered, 5.50, 1.00, 'From this day'); + + const editedDays = await app.models.ZoneCalendar.find({ + where: { + zoneFk: zoneId, + delivered: { + gte: delivered + } + } + }); + const firstEditedDay = editedDays[0]; + const lastEditedDay = editedDays[editedDays.length - 1]; + + expect(editedDays.length).toEqual(5); + expect(firstEditedDay.price).toEqual(5.50); + expect(firstEditedDay.bonus).toEqual(1.00); + expect(lastEditedDay.price).toEqual(5.50); + expect(lastEditedDay.bonus).toEqual(1.00); + }); + + it('should apply price and bonus for all delivery days', async() => { + const delivered = new Date(); + delivered.setHours(0, 0, 0, 0); + await app.models.Zone.editPrices(1, delivered, 7.00, 0.00, 'All days'); + + const editedDays = await app.models.ZoneCalendar.find({ + where: { + zoneFk: zoneId + } + }); + const firstEditedDay = editedDays[0]; + const lastEditedDay = editedDays[editedDays.length - 1]; + + expect(editedDays.length).toEqual(5); + expect(firstEditedDay.price).toEqual(7.00); + expect(firstEditedDay.bonus).toEqual(0.00); + expect(lastEditedDay.price).toEqual(7.00); + expect(lastEditedDay.bonus).toEqual(0.00); + }); +}); + diff --git a/modules/agency/back/models/zone-calendar.json b/modules/agency/back/models/zone-calendar.json index 35926a0db..bed9a8011 100644 --- a/modules/agency/back/models/zone-calendar.json +++ b/modules/agency/back/models/zone-calendar.json @@ -14,6 +14,12 @@ "delivered": { "id": true, "type": "Date" + }, + "price": { + "type": "Number" + }, + "bonus": { + "type": "Number" } }, "relations": { diff --git a/modules/agency/back/models/zone.js b/modules/agency/back/models/zone.js index d282224b9..c7ba642f3 100644 --- a/modules/agency/back/models/zone.js +++ b/modules/agency/back/models/zone.js @@ -1,5 +1,6 @@ module.exports = Self => { require('../methods/zone/clone')(Self); + require('../methods/zone/editPrices')(Self); Self.validatesPresenceOf('warehouseFk', { message: `Warehouse cannot be blank` diff --git a/modules/agency/front/basic-data/index.html b/modules/agency/front/basic-data/index.html index f0ee393d1..7eaac4ef9 100644 --- a/modules/agency/front/basic-data/index.html +++ b/modules/agency/front/basic-data/index.html @@ -10,7 +10,8 @@ + field="$ctrl.zone.name" + vn-acl="deliveryBoss"> @@ -20,7 +21,8 @@ url="/agency/api/Warehouses" show-field="name" value-field="id" - label="Warehouse"> + label="Warehouse" + vn-acl="deliveryBoss"> + label="Agency" + vn-acl="deliveryBoss"> + min="0" step="1" + vn-acl="deliveryBoss"> + model="$ctrl.zone.hour" + vn-acl="deliveryBoss"> + min="0" step="0.01" + vn-acl="deliveryBoss"> + min="0" step="0.01" + vn-acl="deliveryBoss"> - + + - + + diff --git a/modules/agency/front/calendar/index.html b/modules/agency/front/calendar/index.html index d02be3059..5ea7d70a0 100644 --- a/modules/agency/front/calendar/index.html +++ b/modules/agency/front/calendar/index.html @@ -1,21 +1,74 @@ - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + +
Edit price
+ + + + + + + + + + +
+ + + + +
\ No newline at end of file diff --git a/modules/agency/front/calendar/index.js b/modules/agency/front/calendar/index.js index bf1625585..5e6cb19b9 100644 --- a/modules/agency/front/calendar/index.js +++ b/modules/agency/front/calendar/index.js @@ -1,49 +1,26 @@ import ngModule from '../module'; +import './style.scss'; class Controller { - constructor($element, $scope, $stateParams, $http) { + constructor($element, $scope, $http, $filter, $translate, $stateParams, vnApp) { this.$element = $element; - this.$stateParams = $stateParams; - this.$scope = $scope; + this.$ = $scope; this.$http = $http; + this.$filter = $filter; + this.$translate = $translate; + this.$stateParams = $stateParams; + this.vnApp = vnApp; this.stMonthDate = new Date(); this.ndMonthDate = new Date(); this.ndMonthDate.setMonth(this.ndMonthDate.getMonth() + 1); + this.selectedDay = {}; } $postLink() { - this.stMonth = this.$scope.stMonth; - this.ndMonth = this.$scope.ndMonth; + this.stMonth = this.$.stMonth; + this.ndMonth = this.$.ndMonth; } - // Disabled until implementation - // of holidays by node - /* get zone() { - return this._zone; - } - - set zone(value) { - this._zone = value; - - if (!value) return; - - let query = '/agency/api/LabourHolidays/getByWarehouse'; - this.$http.get(query, {params: {warehouseFk: value.warehouseFk}}).then(res => { - if (!res.data) return; - const events = []; - res.data.forEach(holiday => { - events.push({ - date: holiday.dated, - className: 'red', - title: holiday.description || holiday.name, - isRemovable: false - }); - }); - - this.events = this.events.concat(events); - }); - } */ - get data() { return this._data; } @@ -52,97 +29,106 @@ class Controller { this._data = value; if (!value) return; + const events = []; value.forEach(event => { events.push({ + name: `P: ${this.$filter('currency')(event.price)}`, + description: 'Price', dated: event.delivered, - className: 'green-circle', - title: 'Has delivery' + style: {backgroundColor: '#a3d131'}, + data: {price: event.price} + }); + events.push({ + name: `B: ${this.$filter('currency')(event.bonus)}`, + description: 'Bonus', + dated: event.delivered, + data: {bonus: event.bonus} }); }); this.events = events; } - onSelection(calendar, values) { - let totalEvents = 0; - values.forEach(day => { - const exists = calendar.events.findIndex(event => { - return event.dated >= day.dated && event.dated <= day.dated - && event.isRemovable; - }); + onSelection(values) { + if (values.length > 1) return false; - if (exists > -1) totalEvents++; + this.options = [ + {label: 'Only this day', value: 'Only this day'}, + {label: 'From this day', value: 'From this day'}, + {label: 'All days', value: 'All days'} + ]; + const selection = values[0]; + const events = selection.events; + const hasEvents = events.length > 0; + + if (!hasEvents) + return this.vnApp.showMessage(this.$translate.instant(`There's no delivery for this day`)); + + this.selectedDay = { + delivered: selection.dated, + option: 'Only this day' + }; + + events.forEach(event => { + this.selectedDay = Object.assign(this.selectedDay, event.data); }); - - if (totalEvents > (values.length / 2)) - this.removeEvents(calendar, values); - else - this.insertEvents(calendar, values); + this.$.priceDialog.show(); } - insertEvents(calendar, days) { - days.forEach(day => { - const event = calendar.events.find(event => { - return event.dated >= day.dated && event.dated <= day.dated; - }); + onResponse(response) { + if (response == 'ACCEPT') { + try { + const data = { + delivered: this.selectedDay.delivered, + price: this.selectedDay.price, + bonus: this.selectedDay.bonus, + option: this.selectedDay.option + }; - if (event) return false; + this.$.watcher.check(); - this.$scope.model.insert({ - zoneFk: this.zone.id, - delivered: day.dated - }); - - calendar.addEvent({ - dated: day.dated, - className: 'green-circle', - title: 'Has delivery' - }); - }); - - this.$scope.model.save().then(() => { - this.events = calendar.events; - }); - } - - removeEvents(calendar, days) { - let dates = []; - days.forEach(day => { - const event = calendar.events.find(event => { - return event.dated >= day.dated && event.dated <= day.dated; - }); - - if (event && !event.isRemovable) + const path = `/api/Zones/${this.zone.id}/editPrices`; + this.$http.post(path, data).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.$.model.refresh(); + this.card.reload(); + }); + } catch (e) { + this.vnApp.showError(this.$translate.instant(e.message)); return false; + } + } - dates.push(day.dated); + return this.onClose(); + } - calendar.removeEvent(day.dated); - }); + onClose() { + this.$.watcher.updateOriginalData(); + } - if (dates.length == 0) return; - const params = {zoneFk: this.zone.id, dates}; - this.$http.post('/agency/api/zoneCalendars/removeByDate', params).then(() => { - this.events = calendar.events; + onMoveNext(calendars) { + calendars.forEach(calendar => { + calendar.moveNext(2); }); } - onMoveNext(calendar) { - calendar.moveNext(2); - } - - onMovePrevious(calendar) { - calendar.movePrevious(2); + onMovePrevious(calendars) { + calendars.forEach(calendar => { + calendar.movePrevious(2); + }); } } -Controller.$inject = ['$element', '$scope', '$stateParams', '$http']; +Controller.$inject = ['$element', '$scope', '$http', '$filter', '$translate', '$stateParams', 'vnApp']; ngModule.component('vnZoneCalendar', { template: require('./index.html'), controller: Controller, bindings: { zone: '<' + }, + require: { + card: '^vnZoneCard' } }); diff --git a/modules/agency/front/calendar/locale/es.yml b/modules/agency/front/calendar/locale/es.yml new file mode 100644 index 000000000..a37eeb272 --- /dev/null +++ b/modules/agency/front/calendar/locale/es.yml @@ -0,0 +1,6 @@ +Prices: Precios +Edit price: Modificar precio +Only this day: Solo este día +From this day: A partir de este día +All days: Todos los días +There's no delivery for this day: No hay reparto para este día \ No newline at end of file diff --git a/modules/agency/front/calendar/style.scss b/modules/agency/front/calendar/style.scss new file mode 100644 index 000000000..7ff389799 --- /dev/null +++ b/modules/agency/front/calendar/style.scss @@ -0,0 +1,7 @@ +vn-calendar:nth-child(2n + 1) { + border-right:1px solid #ddd +} + +.calendarControlsHeader { + justify-content: space-between; +} \ No newline at end of file diff --git a/modules/agency/front/create/index.html b/modules/agency/front/create/index.html index d25c91219..461829259 100644 --- a/modules/agency/front/create/index.html +++ b/modules/agency/front/create/index.html @@ -6,7 +6,7 @@ save="post">
-
+ { + return this.$scope.watcher.submit().then(res => { this.$state.go('zone.card.location', {id: res.data.id}); }); } diff --git a/modules/agency/front/create/locale/es.yml b/modules/agency/front/create/locale/es.yml index 24b3f6784..8af004818 100644 --- a/modules/agency/front/create/locale/es.yml +++ b/modules/agency/front/create/locale/es.yml @@ -1,3 +1,3 @@ Traveling days: Días de viaje -Estimated hour (ETD): Hora estimada (ETD) +Closure hour (ETD): Hora de cierre (ETD) Bonus: Bonificación \ No newline at end of file diff --git a/modules/agency/front/descriptor/index.html b/modules/agency/front/descriptor/index.html index 7f122bcf6..8338090c4 100644 --- a/modules/agency/front/descriptor/index.html +++ b/modules/agency/front/descriptor/index.html @@ -30,7 +30,7 @@ -
- + @@ -26,7 +26,7 @@ Name Agency Warehouse - Hour + Hour Price @@ -44,7 +44,9 @@ + icon="icon-clone" + vn-acl="deliveryBoss" + vn-acl-action="remove"> - + + \ No newline at end of file diff --git a/modules/agency/front/location/calendar.html b/modules/agency/front/location/calendar.html new file mode 100644 index 000000000..ad58aee1a --- /dev/null +++ b/modules/agency/front/location/calendar.html @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file diff --git a/modules/agency/front/location/calendar.js b/modules/agency/front/location/calendar.js new file mode 100644 index 000000000..802a9946e --- /dev/null +++ b/modules/agency/front/location/calendar.js @@ -0,0 +1,150 @@ +import ngModule from '../module'; + +class Controller { + constructor($element, $scope, $stateParams, $http) { + this.$element = $element; + this.$stateParams = $stateParams; + this.$scope = $scope; + this.$http = $http; + this.stMonthDate = new Date(); + this.ndMonthDate = new Date(); + this.ndMonthDate.setMonth(this.ndMonthDate.getMonth() + 1); + } + + $postLink() { + this.stMonth = this.$scope.stMonth; + this.ndMonth = this.$scope.ndMonth; + } + + // Disabled until implementation + // of holidays by node + /* get zone() { + return this._zone; + } + + set zone(value) { + this._zone = value; + + if (!value) return; + + let query = '/agency/api/LabourHolidays/getByWarehouse'; + this.$http.get(query, {params: {warehouseFk: value.warehouseFk}}).then(res => { + if (!res.data) return; + const events = []; + res.data.forEach(holiday => { + events.push({ + date: holiday.dated, + className: 'red', + title: holiday.description || holiday.name, + isRemovable: false + }); + }); + + this.events = this.events.concat(events); + }); + } */ + + get data() { + return this._data; + } + + set data(value) { + this._data = value; + + if (!value) return; + const events = []; + value.forEach(event => { + events.push({ + name: 'Has delivery', + dated: event.delivered, + style: {backgroundColor: '#a3d131'} + }); + }); + + this.events = events; + } + + onSelection(values, calendar) { + let totalEvents = 0; + values.forEach(day => { + const exists = calendar.events.findIndex(event => { + return event.dated >= day.dated && event.dated <= day.dated + && event.isRemovable; + }); + + if (exists > -1) totalEvents++; + }); + + if (totalEvents > (values.length / 2)) + this.removeEvents(calendar, values); + else + this.insertEvents(calendar, values); + } + + insertEvents(calendar, days) { + days.forEach(day => { + const event = calendar.events.find(event => { + return event.dated >= day.dated && event.dated <= day.dated; + }); + + if (event) return false; + + this.$scope.model.insert({ + zoneFk: this.zone.id, + delivered: day.dated, + price: this.zone.price, + bonus: this.zone.bonus + }); + + calendar.addEvent({ + name: 'Has delivery', + dated: day.dated, + style: {backgroundColor: '#a3d131'} + }); + }); + + this.$scope.model.save().then(() => { + this.events = calendar.events; + }); + } + + removeEvents(calendar, days) { + let dates = []; + days.forEach(day => { + const event = calendar.events.find(event => { + return event.dated >= day.dated && event.dated <= day.dated; + }); + + if (event && !event.isRemovable) + return false; + + dates.push(day.dated); + + calendar.removeEvent(day.dated); + }); + + if (dates.length == 0) return; + const params = {zoneFk: this.zone.id, dates}; + this.$http.post('/agency/api/zoneCalendars/removeByDate', params).then(() => { + this.events = calendar.events; + }); + } + + onMoveNext(calendar) { + calendar.moveNext(2); + } + + onMovePrevious(calendar) { + calendar.movePrevious(2); + } +} + +Controller.$inject = ['$element', '$scope', '$stateParams', '$http']; + +ngModule.component('vnZoneLocationCalendar', { + template: require('./calendar.html'), + controller: Controller, + bindings: { + zone: '<' + } +}); diff --git a/modules/agency/front/location/index.html b/modules/agency/front/location/index.html index 42662ef2b..fb9bf863c 100644 --- a/modules/agency/front/location/index.html +++ b/modules/agency/front/location/index.html @@ -18,6 +18,6 @@ - + \ No newline at end of file diff --git a/modules/agency/front/routes.json b/modules/agency/front/routes.json index fe4e74707..9f0930b77 100644 --- a/modules/agency/front/routes.json +++ b/modules/agency/front/routes.json @@ -6,7 +6,8 @@ "dependencies": ["worker"], "menu": [ {"state": "zone.card.basicData", "icon": "settings"}, - {"state": "zone.card.location", "icon": "my_location"} + {"state": "zone.card.location", "icon": "my_location"}, + {"state": "zone.card.calendar", "icon": "icon-deliveryprices"} ], "routes": [ { @@ -15,27 +16,31 @@ "abstract": true, "component": "ui-view", "description": "Zones" - }, { + }, + { "url": "/index?q", "state": "zone.index", "component": "vn-zone-index", "description": "Zones" - }, { + }, + { "url": "/create", "state": "zone.create", "component": "vn-zone-create", "description": "New zone" - }, { + }, + { "url": "/:id", "state": "zone.card", "component": "vn-zone-card", "abstract": true, "description": "Detail" - }, { - "url": "/location?q", - "state": "zone.card.location", - "component": "vn-zone-location", - "description": "Locations", + }, + { + "url": "/summary", + "state": "zone.card.summary", + "component": "vn-zone-summary", + "description": "Summary", "params": { "zone": "$ctrl.zone" } @@ -50,10 +55,19 @@ } }, { - "url": "/summary", - "state": "zone.card.summary", - "component": "vn-zone-summary", - "description": "Summary", + "url": "/location?q", + "state": "zone.card.location", + "component": "vn-zone-location", + "description": "Locations", + "params": { + "zone": "$ctrl.zone" + } + }, + { + "url": "/calendar", + "state": "zone.card.calendar", + "component": "vn-zone-calendar", + "description": "Prices", "params": { "zone": "$ctrl.zone" } diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index 379eec368..45a9ec0d6 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -19,12 +19,112 @@ module.exports = Self => { } }); - async function addSalesToTicket(salesToRefund, ticketFk, options) { + Self.importToNewRefundTicket = async(ctx, id) => { + const models = Self.app.models; + const token = ctx.req.accessToken; + const userId = token.userId; + const tx = await Self.beginTransaction({}); + const filter = { + where: {id: id}, + include: [ + { + relation: 'ticket', + scope: { + fields: ['id', 'clientFk', 'warehouseFk', 'companyFk', 'addressFk'] + } + } + ] + }; + const salesFilter = { + where: {claimFk: id}, + include: [ + { + relation: 'sale', + scope: { + fields: [ + 'id', + 'itemFk', + 'concept', + 'price', + 'discount', + 'reserved', + 'isPicked', + 'created', + 'priceFixed', + 'isPriceFixed'] + } + } + ] + }; + + try { + let options = {transaction: tx}; + const worker = await models.Worker.findOne({ + where: {userFk: userId} + }, options); + + const obsevationType = await models.ObservationType.findOne({ + where: {description: 'comercial'} + }, options); + + const agency = await models.AgencyMode.findOne({ + where: {code: 'refund'} + }, options); + + const state = await models.State.findOne({ + where: {code: 'DELIVERED'} + }, options); + + + const claim = await models.Claim.findOne(filter, options); + const today = new Date(); + + const newRefundTicket = await models.Ticket.new(ctx, { + clientFk: claim.ticket().clientFk, + shipped: today, + landed: today, + warehouseFk: claim.ticket().warehouseFk, + companyFk: claim.ticket().companyFk, + addressFk: claim.ticket().addressFk, + agencyModeFk: agency.id, + userId: userId + }, options); + + await saveObservation({ + description: `Reclama ticket: ${claim.ticketFk}`, + ticketFk: newRefundTicket.id, + observationTypeFk: obsevationType.id + }, options); + + await models.TicketTracking.create({ + ticketFk: newRefundTicket.id, + stateFk: state.id, + workerFk: worker.id + }, options); + + const salesToRefund = await models.ClaimBeginning.find(salesFilter, options); + const createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, options); + await insertIntoClaimEnd(createdSales, id, worker.id, options); + + await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [ + newRefundTicket.id, claim.ticketFk + ], options); + + await tx.commit(); + + return newRefundTicket; + } catch (e) { + await tx.rollback(); + throw e; + } + }; + + async function addSalesToTicket(salesToRefund, ticketId, options) { let formatedSales = []; salesToRefund.forEach(sale => { let formatedSale = { itemFk: sale.sale().itemFk, - ticketFk: ticketFk, + ticketFk: ticketId, concept: sale.sale().concept, quantity: -Math.abs(sale.quantity), price: sale.sale().price, @@ -39,7 +139,7 @@ module.exports = Self => { } async function insertIntoClaimEnd(createdSales, claimId, workerId, options) { - let formatedSales = []; + const formatedSales = []; createdSales.forEach(sale => { let formatedSale = { saleFk: sale.id, @@ -48,101 +148,17 @@ module.exports = Self => { }; formatedSales.push(formatedSale); }); - return await Self.app.models.ClaimEnd.create(formatedSales, options); + await Self.app.models.ClaimEnd.create(formatedSales, options); } async function saveObservation(observation, options) { - let query = `INSERT INTO vn.ticketObservation(ticketFk, observationTypeFk, description) VALUES(?, ?, ?) - ON DUPLICATE KEY UPDATE description = CONCAT(vn.ticketObservation.description, VALUES(description),' ')`; + const query = `INSERT INTO vn.ticketObservation (ticketFk, observationTypeFk, description) VALUES(?, ?, ?) + ON DUPLICATE KEY + UPDATE description = CONCAT(vn.ticketObservation.description, VALUES(description),' ')`; await Self.rawSql(query, [ observation.ticketFk, observation.observationTypeFk, observation.description ], options); } - - Self.importToNewRefundTicket = async(ctx, id) => { - let models = Self.app.models; - let token = ctx.req.accessToken; - let userId = token.userId; - let worker = await models.Worker.findOne({where: {userFk: userId}}); - let obsevationType = await models.ObservationType.findOne({where: {description: 'comercial'}}); - let agency = await models.AgencyMode.findOne({where: {code: 'refund'}}); - let state = await models.State.findOne({where: {code: 'DELIVERED'}}); - - let filter = { - where: {id: id}, - include: [ - { - relation: 'ticket', - scope: { - fields: ['id', 'clientFk', 'warehouseFk', 'companyFk', 'addressFk'] - } - } - ] - }; - - let claim = await models.Claim.findOne(filter); - - let today = new Date(); - - let params = { - clientFk: claim.ticket().clientFk, - shipped: today, - landed: today, - warehouseFk: claim.ticket().warehouseFk, - companyFk: claim.ticket().companyFk, - addressFk: claim.ticket().addressFk, - agencyModeFk: agency.id, - userId: userId - }; - - let salesFilter = { - where: {claimFk: id}, - include: [ - { - relation: 'sale', - scope: { - fields: ['id', 'itemFk', 'concept', 'price', 'discount', 'reserved', 'isPicked', 'created', 'priceFixed', 'isPriceFixed'] - } - } - ] - }; - - let tx = await Self.beginTransaction({}); - - try { - let options = {transaction: tx}; - - let newRefundTicket = await models.Ticket.new(ctx, params, options); - - let observation = { - description: `Reclama ticket: ${claim.ticketFk}`, - ticketFk: newRefundTicket.id, - observationTypeFk: obsevationType.id - }; - await saveObservation(observation, options); - - await models.TicketTracking.create({ - ticketFk: newRefundTicket.id, - stateFk: state.id, - workerFk: worker.id - }, options); - - let salesToRefund = await models.ClaimBeginning.find(salesFilter); - let createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, options); - insertIntoClaimEnd(createdSales, id, worker.id, options); - - await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [ - newRefundTicket.id, claim.ticketFk - ], options); - - await tx.commit(); - - return newRefundTicket; - } catch (e) { - await tx.rollback(); - throw e; - } - }; }; diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js index b7f961b13..15d5be4dc 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.spec.js @@ -28,13 +28,11 @@ describe('claimBeginning', () => { let refundTicketState = await app.models.TicketState.findById(ticket.id); salesInsertedInClaimEnd = await app.models.ClaimEnd.find({where: {claimFk: claimId}}); - expect(refundTicketSales.length).toEqual(2); + expect(refundTicketSales.length).toEqual(1); expect(refundTicketSales[0].quantity).toEqual(-5); - expect(refundTicketSales[1].quantity).toEqual(-4); expect(refundTicketObservations[0].description).toEqual('Reclama ticket: 11'); expect(refundTicketState.stateFk).toEqual(16); expect(salesInsertedInClaimEnd[0].saleFk).toEqual(refundTicketSales[0].id); - expect(salesInsertedInClaimEnd[1].saleFk).toEqual(refundTicketSales[1].id); }); }); }); diff --git a/modules/claim/back/methods/claim/createFromSales.js b/modules/claim/back/methods/claim/createFromSales.js index 0e4e34603..1d5597da7 100644 --- a/modules/claim/back/methods/claim/createFromSales.js +++ b/modules/claim/back/methods/claim/createFromSales.js @@ -26,26 +26,32 @@ module.exports = Self => { Self.createFromSales = async(ctx, params) => { let model = Self.app.models; + let userId = ctx.req.accessToken.userId; let tx = await Self.beginTransaction({}); + try { let options = {transaction: tx}; - - let userId = ctx.req.accessToken.userId; - let worker = await Self.app.models.Worker.findOne({where: {userFk: userId}}); + const worker = await Self.app.models.Worker.findOne({ + where: {userFk: userId} + }, options); params.claim.workerFk = worker.id; let newClaim = await Self.create(params.claim, options); let promises = []; - for (let i = 0; i < params.sales.length; i++) { - promises.push(model.ClaimBeginning.create({ - saleFk: params.sales[i].id, - claimFk: newClaim.id, - quantity: params.sales[i].quantity - }, options)); - } - await Promise.all(promises); - await tx.commit(); + for (const sale of params.sales) { + const newClaimBeginning = model.ClaimBeginning.create({ + saleFk: sale.id, + claimFk: newClaim.id, + quantity: sale.quantity + }, options); + + promises.push(newClaimBeginning); + } + + await Promise.all(promises); + + await tx.commit(); return newClaim; } catch (e) { await tx.rollback(); diff --git a/modules/claim/back/models/claim-state.json b/modules/claim/back/models/claim-state.json index 2f76a9f77..1707253b0 100644 --- a/modules/claim/back/models/claim-state.json +++ b/modules/claim/back/models/claim-state.json @@ -17,6 +17,13 @@ "required": true } }, + "relations": { + "role": { + "type": "belongsTo", + "model": "Role", + "foreignKey": "roleFk" + } + }, "acls": [ { "accessType": "READ", diff --git a/modules/claim/front/action/index.html b/modules/claim/front/action/index.html index 4aa8909b9..acee9b3e6 100644 --- a/modules/claim/front/action/index.html +++ b/modules/claim/front/action/index.html @@ -18,7 +18,7 @@ + + + + @@ -105,11 +115,10 @@ - {{$ctrl.resolvedStateText}} + disabled="$ctrl.claim.claimStateFk == $ctrl.resolvedState" + vn-http-click="$ctrl.regularize()"> + + diff --git a/modules/client/front/address/create/index.js b/modules/client/front/address/create/index.js index 1334e6714..bcccc0730 100644 --- a/modules/client/front/address/create/index.js +++ b/modules/client/front/address/create/index.js @@ -1,8 +1,8 @@ import ngModule from '../../module'; export default class Controller { - constructor($scope, $state) { - this.$scope = $scope; + constructor($, $state) { + this.$ = $; this.$state = $state; this.data = { address: { @@ -14,8 +14,30 @@ export default class Controller { this.address = this.data.address; } + get postcodeSelection() { + return this._postcodeSelection; + } + + set postcodeSelection(selection) { + this._postcodeSelection = selection; + + if (!selection) return; + + const town = selection.town; + const province = town.province; + const country = province.country; + + this.address.city = town.name; + this.address.provinceFk = province.id; + this.address.countryFk = country.id; + } + + onResponse(response) { + this.address.postalCode = response.code; + } + onSubmit() { - this.$scope.watcher.submit().then(res => { + this.$.watcher.submit().then(res => { if (res.data && this.data.isDefaultAddress) this.client.defaultAddressFk = res.data.id; diff --git a/modules/client/front/address/create/index.spec.js b/modules/client/front/address/create/index.spec.js index cd1651b4b..45b009de7 100644 --- a/modules/client/front/address/create/index.spec.js +++ b/modules/client/front/address/create/index.spec.js @@ -14,8 +14,8 @@ describe('Client', () => { $state = _$state_; $state.params.id = '1234'; controller = $componentController('vnClientAddressCreate', {$state}); - controller.$scope.watcher = watcher; - controller.$scope.watcher.submit = () => { + controller.$.watcher = watcher; + controller.$.watcher.submit = () => { return { then: callback => { callback({data: {id: 124}}); @@ -49,5 +49,30 @@ describe('Client', () => { expect(controller.$state.go).toHaveBeenCalledWith('client.card.address.index'); }); }); + + describe('postcodeSelection() setter', () => { + it(`should set the town, province and contry properties`, () => { + controller.postcodeSelection = { + townFk: 1, + code: 46001, + town: { + id: 1, + name: 'New York', + province: { + id: 1, + name: 'New york', + country: { + id: 2, + name: 'USA' + } + } + } + }; + + expect(controller.address.city).toEqual('New York'); + expect(controller.address.provinceFk).toEqual(1); + expect(controller.address.countryFk).toEqual(2); + }); + }); }); }); diff --git a/modules/client/front/address/edit/index.html b/modules/client/front/address/edit/index.html index ea5aedde4..b7361b71b 100644 --- a/modules/client/front/address/edit/index.html +++ b/modules/client/front/address/edit/index.html @@ -25,7 +25,7 @@ data="types" auto-load="true"> - + @@ -40,12 +40,36 @@ - - + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + + + + + @@ -89,17 +113,23 @@ + + - - + + + + + diff --git a/modules/client/front/address/edit/index.js b/modules/client/front/address/edit/index.js index c230dea91..14c5880bc 100644 --- a/modules/client/front/address/edit/index.js +++ b/modules/client/front/address/edit/index.js @@ -20,7 +20,29 @@ export default class Controller { this.$state.go('client.card.address.index'); } - submit() { + get postcodeSelection() { + return this._postcodeSelection; + } + + set postcodeSelection(selection) { + this._postcodeSelection = selection; + + if (!selection) return; + + const town = selection.town; + const province = town.province; + const country = province.country; + + this.address.city = town.name; + this.address.provinceFk = province.id; + this.address.countryFk = country.id; + } + + onResponse(response) { + this.address.postalCode = response.code; + } + + onSubmit() { this.$.watcher.check(); this.$.watcher.realSubmit() .then(() => this.$.model.save(true)) diff --git a/modules/client/front/address/edit/index.spec.js b/modules/client/front/address/edit/index.spec.js index aa1f59669..ea0da9559 100644 --- a/modules/client/front/address/edit/index.spec.js +++ b/modules/client/front/address/edit/index.spec.js @@ -55,5 +55,31 @@ describe('Client', () => { expect(controller.$state.go).toHaveBeenCalledWith('client.card.address.index'); }); }); + + describe('postcodeSelection() setter', () => { + it(`should set the town, province and contry properties`, () => { + controller.address = {}; + controller.postcodeSelection = { + townFk: 1, + code: 46001, + town: { + id: 1, + name: 'New York', + province: { + id: 1, + name: 'New york', + country: { + id: 2, + name: 'USA' + } + } + } + }; + + expect(controller.address.city).toEqual('New York'); + expect(controller.address.provinceFk).toEqual(1); + expect(controller.address.countryFk).toEqual(2); + }); + }); }); }); diff --git a/modules/client/front/address/index/index.html b/modules/client/front/address/index/index.html index d8971cd35..8696e321f 100644 --- a/modules/client/front/address/index/index.html +++ b/modules/client/front/address/index/index.html @@ -1,7 +1,7 @@ @@ -67,7 +67,7 @@ - + + diff --git a/modules/client/front/address/index/index.js b/modules/client/front/address/index/index.js index eeabaf5d8..3bc77ec62 100644 --- a/modules/client/front/address/index/index.js +++ b/modules/client/front/address/index/index.js @@ -5,30 +5,6 @@ class Controller { this.$http = $http; this.$scope = $scope; this.$stateParams = $stateParams; - this.filter = { - include: { - observations: 'observationType' - }, - order: ['isActive DESC', 'nickname ASC'] - }; - } - - get client() { - return this._client; - } - - set client(value) { - this._client = value; - this.sortAddresses(); - } - - get addresses() { - return this._addresses; - } - - set addresses(value) { - this._addresses = value; - this.sortAddresses(); } setDefault(address) { @@ -43,8 +19,8 @@ class Controller { } isDefaultAddress(address) { - if (!this.client) return; - return this.client.defaultAddressFk === address.id; + if (this.client) + return this.client.defaultAddressFk === address.id; } /** @@ -52,7 +28,7 @@ class Controller { */ sortAddresses() { if (!this.client || !this.addresses) return; - this.$scope.model.data = this.addresses.sort((a, b) => { + this.addresses = this.addresses.sort((a, b) => { return this.isDefaultAddress(b) - this.isDefaultAddress(a); }); } diff --git a/modules/client/front/balance/create/index.html b/modules/client/front/balance/create/index.html index 69a638044..4cf769d4f 100644 --- a/modules/client/front/balance/create/index.html +++ b/modules/client/front/balance/create/index.html @@ -22,12 +22,13 @@ - - + diff --git a/modules/client/front/basic-data/index.html b/modules/client/front/basic-data/index.html index f31ab8138..6fb455a76 100644 --- a/modules/client/front/basic-data/index.html +++ b/modules/client/front/basic-data/index.html @@ -5,63 +5,65 @@ form="form" save="patch"> -
- - - - - - - - - - - - - - - - - - - - - - - - - - - + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/modules/client/front/billing-data/index.html b/modules/client/front/billing-data/index.html index b17f5dbf1..a7bcb71bd 100644 --- a/modules/client/front/billing-data/index.html +++ b/modules/client/front/billing-data/index.html @@ -98,28 +98,33 @@ + model="$ctrl.newBankEntity.name" + required="true"> - + show-field="country" + required="true"> + label="Entity Code" + model="$ctrl.newBankEntity.id" + ng-show="country.selection.code === 'ES'"> + model="$ctrl.newBankEntity.bic" + required="true"> diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index 761877600..edd6db654 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -59,8 +59,6 @@ export default class Controller { try { if (!this.newBankEntity.name) throw new Error(`Name can't be empty`); - if (!this.newBankEntity.id) - throw new Error(`Code can't be empty`); if (!this.newBankEntity.bic) throw new Error(`Swift / BIC can't be empty`); diff --git a/modules/client/front/billing-data/index.spec.js b/modules/client/front/billing-data/index.spec.js index 7ce5440df..de4c6acc2 100644 --- a/modules/client/front/billing-data/index.spec.js +++ b/modules/client/front/billing-data/index.spec.js @@ -71,18 +71,6 @@ describe('Client', () => { expect(vnApp.showError).toHaveBeenCalledWith(`Swift / BIC can't be empty`); }); - it(`should throw an error if id property is empty`, () => { - controller.newBankEntity = { - name: 'My new bank entity', - bic: 'ES123', - countryFk: 1, - id: null - }; - controller.onBankEntityResponse('ACCEPT'); - - expect(vnApp.showError).toHaveBeenCalledWith(`Code can't be empty`); - }); - it('should request to create a new bank entity', () => { let newBankEntity = { name: 'My new bank entity', diff --git a/modules/client/front/billing-data/locale/es.yml b/modules/client/front/billing-data/locale/es.yml index 84de93695..15373914e 100644 --- a/modules/client/front/billing-data/locale/es.yml +++ b/modules/client/front/billing-data/locale/es.yml @@ -16,4 +16,4 @@ Save: Guardar New bank entity: Nueva entidad bancaria Name can't be empty: El nombre no puede quedar vacío Swift / BIC can't be empty: El Swift / BIC no puede quedar vacío -Code: Código \ No newline at end of file +Entity Code: Código \ No newline at end of file diff --git a/modules/client/front/create/index.html b/modules/client/front/create/index.html index dc80af713..5df43ef4c 100644 --- a/modules/client/front/create/index.html +++ b/modules/client/front/create/index.html @@ -6,7 +6,7 @@ save="post">
-
+ @@ -33,34 +33,50 @@ - - - + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + + + - + - - - + + -
+ + + + + \ No newline at end of file diff --git a/modules/client/front/create/index.js b/modules/client/front/create/index.js index d7b1032fb..241de110f 100644 --- a/modules/client/front/create/index.js +++ b/modules/client/front/create/index.js @@ -1,20 +1,46 @@ import ngModule from '../module'; export default class Controller { - constructor($scope, $state) { + constructor($scope, $state, $http, $translate, vnApp) { this.$ = $scope; this.$state = $state; + this.$http = $http; + this.$translate = $translate; + this.vnApp = vnApp; this.client = { active: true }; } + + get postcodeSelection() { + return this._postcodeSelection; + } + + set postcodeSelection(selection) { + this._postcodeSelection = selection; + + if (!selection) return; + + const town = selection.town; + const province = town.province; + const country = province.country; + + this.client.city = town.name; + this.client.provinceFk = province.id; + this.client.countryFk = country.id; + } + + onResponse(response) { + this.client.postcode = response.code; + } + onSubmit() { - this.$.watcher.submit().then( + return this.$.watcher.submit().then( json => this.$state.go('client.card.basicData', {id: json.data.id}) ); } } -Controller.$inject = ['$scope', '$state']; +Controller.$inject = ['$scope', '$state', '$http', '$translate', 'vnApp']; ngModule.component('vnClientCreate', { template: require('./index.html'), diff --git a/modules/client/front/create/index.spec.js b/modules/client/front/create/index.spec.js index fb8aa227e..b59dffe44 100644 --- a/modules/client/front/create/index.spec.js +++ b/modules/client/front/create/index.spec.js @@ -39,5 +39,30 @@ describe('Client', () => { expect(controller.$state.go).toHaveBeenCalledWith('client.card.basicData', {id: '1234'}); }); }); + + describe('postcodeSelection() setter', () => { + it(`should set the town, province and contry properties`, () => { + controller.postcodeSelection = { + townFk: 1, + code: 46001, + town: { + id: 1, + name: 'New York', + province: { + id: 1, + name: 'New york', + country: { + id: 2, + name: 'USA' + } + } + } + }; + + expect(controller.client.city).toEqual('New York'); + expect(controller.client.provinceFk).toEqual(1); + expect(controller.client.countryFk).toEqual(2); + }); + }); }); }); diff --git a/modules/client/front/descriptor/index.js b/modules/client/front/descriptor/index.js index 533b01ef6..1eecdc15a 100644 --- a/modules/client/front/descriptor/index.js +++ b/modules/client/front/descriptor/index.js @@ -25,7 +25,7 @@ class Controller { tooltip: 'Client ticket list' }, btnTwo: { - icon: 'icon-basket', + icon: 'icon-basketadd', state: `order.create({clientFk: ${value.id}})`, tooltip: 'New order' } diff --git a/modules/client/front/dms/create/index.html b/modules/client/front/dms/create/index.html new file mode 100644 index 000000000..3fa96a9da --- /dev/null +++ b/modules/client/front/dms/create/index.html @@ -0,0 +1,64 @@ + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
diff --git a/modules/client/front/dms/create/index.js b/modules/client/front/dms/create/index.js new file mode 100644 index 000000000..a3b32228f --- /dev/null +++ b/modules/client/front/dms/create/index.js @@ -0,0 +1,97 @@ +import ngModule from '../../module'; +import './style.scss'; + +class Controller { + constructor($scope, $http, $state, $translate, vnApp) { + this.$ = $scope; + this.$http = $http; + this.$state = $state; + this.$translate = $translate; + this.vnApp = vnApp; + this.dms = { + files: [], + hasFile: false + }; + } + + get client() { + return this._client; + } + + set client(value) { + this._client = value; + + if (value) + this.setDefaultParams(); + } + + setDefaultParams() { + const params = {filter: { + where: {code: 'paymentsLaw'} + }}; + this.$http.get('/api/DmsTypes/findOne', {params}).then(res => { + const dmsType = res.data && res.data; + const companyId = window.localStorage.defaultCompanyFk; + const warehouseId = window.localStorage.defaultWarehouseFk; + const defaultParams = { + reference: this.client.id, + warehouseId: warehouseId, + companyId: companyId, + dmsTypeId: dmsType.id, + description: this.$translate.instant('ClientFileDescription', { + dmsTypeName: dmsType.name, + clientId: this.client.id, + clientName: this.client.name + }).toUpperCase() + }; + + this.dms = Object.assign(this.dms, defaultParams); + }); + } + + onSubmit() { + const query = `/api/clients/${this.client.id}/uploadFile`; + const options = { + method: 'POST', + url: query, + params: this.dms, + headers: { + 'Content-Type': undefined + }, + transformRequest: files => { + const formData = new FormData(); + + for (let i = 0; i < files.length; i++) + formData.append(files[i].name, files[i]); + + return formData; + }, + data: this.dms.files + }; + this.$http(options).then(res => { + if (res) { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.$.watcher.updateOriginalData(); + this.$state.go('client.card.dms.index'); + } + }); + } + + onFileChange(files) { + if (files.length > 0) { + this.$.$applyAsync(() => { + this.dms.hasFile = true; + }); + } + } +} + +Controller.$inject = ['$scope', '$http', '$state', '$translate', 'vnApp']; + +ngModule.component('vnClientDmsCreate', { + template: require('./index.html'), + controller: Controller, + bindings: { + client: '<' + } +}); diff --git a/modules/client/front/dms/create/index.spec.js b/modules/client/front/dms/create/index.spec.js new file mode 100644 index 000000000..2825d4d25 --- /dev/null +++ b/modules/client/front/dms/create/index.spec.js @@ -0,0 +1,60 @@ +import './index'; + +describe('Client', () => { + describe('Component vnClientDmsCreate', () => { + let controller; + let $scope; + let $httpBackend; + let $httpParamSerializer; + + beforeEach(ngModule('client')); + + beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => { + $scope = $rootScope.$new(); + $httpBackend = _$httpBackend_; + $httpParamSerializer = _$httpParamSerializer_; + controller = $componentController('vnClientDmsCreate', {$scope}); + controller._client = {id: 101, name: 'Bruce wayne'}; + })); + + describe('client() setter', () => { + it('should set the client data and then call setDefaultParams()', () => { + spyOn(controller, 'setDefaultParams'); + controller.client = { + id: 15, + name: 'Bruce wayne' + }; + + expect(controller.client).toBeDefined(); + expect(controller.setDefaultParams).toHaveBeenCalledWith(); + }); + }); + + describe('setDefaultParams()', () => { + it('should perform a GET query and define the dms property on controller', () => { + const params = {filter: { + where: {code: 'paymentsLaw'} + }}; + let serializedParams = $httpParamSerializer(params); + $httpBackend.when('GET', `/api/DmsTypes/findOne?${serializedParams}`).respond({id: 12, code: 'paymentsLaw'}); + $httpBackend.expect('GET', `/api/DmsTypes/findOne?${serializedParams}`); + controller.setDefaultParams(); + $httpBackend.flush(); + + expect(controller.dms).toBeDefined(); + expect(controller.dms.reference).toEqual(101); + expect(controller.dms.dmsTypeId).toEqual(12); + }); + }); + + describe('onFileChange()', () => { + it('should set dms hasFile property to true if has any files', () => { + const files = [{id: 1, name: 'MyFile'}]; + controller.onFileChange(files); + $scope.$apply(); + + expect(controller.dms.hasFile).toBeTruthy(); + }); + }); + }); +}); diff --git a/modules/client/front/dms/create/locale/en.yml b/modules/client/front/dms/create/locale/en.yml new file mode 100644 index 000000000..56f6a658b --- /dev/null +++ b/modules/client/front/dms/create/locale/en.yml @@ -0,0 +1 @@ +ClientFileDescription: "{{dmsTypeName}} from client {{clientName}} id {{clientId}}" \ No newline at end of file diff --git a/modules/client/front/dms/create/locale/es.yml b/modules/client/front/dms/create/locale/es.yml new file mode 100644 index 000000000..2de9e68d3 --- /dev/null +++ b/modules/client/front/dms/create/locale/es.yml @@ -0,0 +1,5 @@ +Upload file: Subir fichero +Upload: Subir +File: Fichero +ClientFileDescription: "{{dmsTypeName}} del cliente {{clientName}} id {{clientId}}" +Attached file: Fichero adjunto \ No newline at end of file diff --git a/modules/client/front/dms/create/style.scss b/modules/client/front/dms/create/style.scss new file mode 100644 index 000000000..b47544b12 --- /dev/null +++ b/modules/client/front/dms/create/style.scss @@ -0,0 +1,7 @@ +vn-ticket-request { + vn-textfield { + margin: 0!important; + max-width: 100px; + } +} + diff --git a/modules/client/front/dms/index/index.html b/modules/client/front/dms/index/index.html new file mode 100644 index 000000000..40f01c4e0 --- /dev/null +++ b/modules/client/front/dms/index/index.html @@ -0,0 +1,95 @@ + + + + + + + + + Id + Type + Reference + Description + Attached file + File + Employee + Created + + + + + + {{::document.dmsFk}} + + + {{::document.dms.dmsType.name}} + + + + + {{::document.dms.reference}} + + + + + {{::document.dms.description}} + + + + + + + {{::document.dms.file}} + + + {{::document.dms.worker.user.nickname | dashIfEmpty}} + + + {{::document.dms.created | dateTime:'dd/MM/yyyy HH:mm'}} + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/ticket/front/dms/index.js b/modules/client/front/dms/index/index.js similarity index 53% rename from modules/ticket/front/dms/index.js rename to modules/client/front/dms/index/index.js index ab6456b5f..2a5da4072 100644 --- a/modules/ticket/front/dms/index.js +++ b/modules/client/front/dms/index/index.js @@ -1,16 +1,27 @@ -import ngModule from '../module'; +import ngModule from '../../module'; import './style.scss'; class Controller { - constructor($stateParams, $scope, vnToken) { + constructor($stateParams, $scope, vnToken, $http, vnApp, $translate) { this.$stateParams = $stateParams; this.$ = $scope; this.accessToken = vnToken.token; + this.$http = $http; + this.vnApp = vnApp; + this.$translate = $translate; this.filter = { include: { relation: 'dms', scope: { - fields: ['dmsTypeFk', 'workerFk', 'file', 'created'], + fields: [ + 'dmsTypeFk', + 'workerFk', + 'reference', + 'description', + 'hasFile', + 'file', + 'created', + ], include: [{ relation: 'dmsType', scope: { @@ -41,11 +52,27 @@ class Controller { this.$.workerDescriptor.workerFk = workerFk; this.$.workerDescriptor.show(); } + + showDeleteConfirm(index) { + this.dmsIndex = index; + this.$.confirm.show(); + } + + deleteDms(response) { + if (response === 'ACCEPT') { + const dmsFk = this.clientDms[this.dmsIndex].dmsFk; + const query = `/api/ClientDms/${dmsFk}/removeFile`; + this.$http.post(query).then(() => { + this.$.model.remove(this.dmsIndex); + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }); + } + } } -Controller.$inject = ['$stateParams', '$scope', 'vnToken']; +Controller.$inject = ['$stateParams', '$scope', 'vnToken', '$http', 'vnApp', '$translate']; -ngModule.component('vnTicketDms', { +ngModule.component('vnClientDmsIndex', { template: require('./index.html'), controller: Controller, }); diff --git a/modules/client/front/dms/index/locale/es.yml b/modules/client/front/dms/index/locale/es.yml new file mode 100644 index 000000000..0994c7d86 --- /dev/null +++ b/modules/client/front/dms/index/locale/es.yml @@ -0,0 +1,9 @@ +Type: Tipo +File management: Gestión documental +File: Fichero +Hard copy: Copia +This file will be deleted: Este fichero va a ser borrado +Are you sure?: Estas seguro? +File deleted: Fichero eliminado +Remove file: Eliminar fichero +Download file: Descargar fichero \ No newline at end of file diff --git a/modules/ticket/front/dms/style.scss b/modules/client/front/dms/index/style.scss similarity index 100% rename from modules/ticket/front/dms/style.scss rename to modules/client/front/dms/index/style.scss diff --git a/modules/client/front/fiscal-data/index.html b/modules/client/front/fiscal-data/index.html index 14920b011..04bd1815f 100644 --- a/modules/client/front/fiscal-data/index.html +++ b/modules/client/front/fiscal-data/index.html @@ -5,7 +5,7 @@ form="form" save="patch"> -
+ - - - + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + - + - - - + + - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/client/front/log/index.js b/modules/client/front/log/index.js index 4552588e4..2f01d229c 100644 --- a/modules/client/front/log/index.js +++ b/modules/client/front/log/index.js @@ -4,44 +4,6 @@ class Controller { constructor($scope, $stateParams) { this.$scope = $scope; this.$stateParams = $stateParams; - this.filter = { - include: [{ - relation: 'user', - scope: { - fields: ['name'], - }, - }], - }; - } - - get logs() { - return this._logs; - } - - set logs(value) { - this._logs = value; - - if (this.logs) { - this.logs.forEach(log => { - log.oldProperties = this.getInstance(log.oldInstance); - log.newProperties = this.getInstance(log.newInstance); - }); - } - } - - getInstance(instance) { - let validDate = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/; - const properties = []; - if (typeof instance == 'object' && instance != null) { - Object.keys(instance).forEach(property => { - if (validDate.test(instance[property])) - instance[property] = new Date(instance[property]).toLocaleString('es-ES'); - - properties.push({key: property, value: instance[property]}); - }); - return properties; - } - return null; } } diff --git a/modules/client/front/log/index.spec.js b/modules/client/front/log/index.spec.js deleted file mode 100644 index 6071f2510..000000000 --- a/modules/client/front/log/index.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import './index'; - -describe('Client', () => { - describe('Component vnClientLog', () => { - let $componentController; - let $scope; - let controller; - - beforeEach(ngModule('client')); - - beforeEach(angular.mock.inject((_$componentController_, $rootScope) => { - $componentController = _$componentController_; - $scope = $rootScope.$new(); - controller = $componentController('vnClientLog', {$scope: $scope}); - controller.$scope.model = {data: [{newInstance: {id: 1}, oldInstance: {id: 2}}]}; - })); - - describe('logs setter', () => { - it('should call the function getInstance() twice', () => { - spyOn(controller, 'getInstance'); - controller.logs = [{newInstance: {id: 1}, oldInstance: {id: 2}}]; - - expect(controller.getInstance.calls.count()).toBe(2); - expect(controller.getInstance).toHaveBeenCalledWith({id: 1}); - expect(controller.getInstance).toHaveBeenCalledWith({id: 2}); - }); - }); - - describe('getInstance(instance)', () => { - it('should transform the object given in to an array', () => { - let newInstance = controller.getInstance(controller.$scope.model.data[0].newInstance); - - expect(newInstance).toEqual([{key: 'id', value: 1}]); - }); - }); - }); -}); diff --git a/modules/client/front/postcode/index.html b/modules/client/front/postcode/index.html new file mode 100644 index 000000000..5ff80440e --- /dev/null +++ b/modules/client/front/postcode/index.html @@ -0,0 +1,47 @@ + + +
New postcode
+

Please, ensure you put the correct data!

+ + + + + + + + + + + + +
+ + + + +
\ No newline at end of file diff --git a/modules/client/front/postcode/index.js b/modules/client/front/postcode/index.js new file mode 100644 index 000000000..08a419dab --- /dev/null +++ b/modules/client/front/postcode/index.js @@ -0,0 +1,70 @@ +import ngModule from '../module'; +import Component from 'core/lib/component'; +import './style.scss'; + +class Controller extends Component { + constructor($element, $scope, $http, $translate, vnApp) { + super($element, $scope); + this.$ = $scope; + this.$http = $http; + this.$translate = $translate; + this.vnApp = vnApp; + } + + get townSelection() { + return this._townSelection; + } + + set townSelection(selection) { + this._townSelection = selection; + + if (!selection) return; + + const province = selection.province; + const country = province.country; + + this.data.provinceFk = province.id; + this.data.countryFk = country.id; + } + + open() { + this.$.postcodeDialog.show(); + } + + onOpen() { + this.$.postcode.focus(); + } + + onResponse(response) { + if (response == 'ACCEPT') { + try { + if (!this.data.code) + throw new Error(`The postcode can't be empty`); + if (!this.data.townFk) + throw new Error(`The town can't be empty`); + + this.$http.patch(`/api/postcodes`, this.data).then(response => { + if (response.data) { + this.vnApp.showMessage(this.$translate.instant('The postcode has been saved')); + + this.emit('response', {response: response.data}); + } + }); + } catch (e) { + this.vnApp.showError(this.$translate.instant(e.message)); + return false; + } + } + return true; + } +} + +Controller.$inject = ['$element', '$scope', '$http', '$translate', 'vnApp']; + +ngModule.component('vnClientPostcode', { + template: require('./index.html'), + controller: Controller, + bindings: { + data: '<', + } +}); diff --git a/modules/client/front/postcode/index.spec.js b/modules/client/front/postcode/index.spec.js new file mode 100644 index 000000000..ce5cd5f2e --- /dev/null +++ b/modules/client/front/postcode/index.spec.js @@ -0,0 +1,34 @@ +import './index'; + +describe('Client', () => { + describe('Component vnClientPostcode', () => { + let controller; + let $httpBackend; + let $element; + + beforeEach(ngModule('client')); + + beforeEach(angular.mock.inject(($componentController, _$httpBackend_) => { + $httpBackend = _$httpBackend_; + $element = angular.element(''); + controller = $componentController('vnClientPostcode', {$element}); + controller.client = {id: 101}; + })); + + describe('onResponse()', () => { + it('should perform a POST query and show a success snackbar', () => { + let params = {townFk: 1, provinceFk: 1, countryFk: 1, code: '46460'}; + controller.data = {townFk: 1, provinceFk: 1, countryFk: 1, code: '46460'}; + + spyOn(controller.vnApp, 'showMessage'); + $httpBackend.when('PATCH', `/api/postcodes`, params).respond(200, params); + $httpBackend.expect('PATCH', `/api/postcodes`, params).respond(params); + + controller.onResponse('ACCEPT'); + $httpBackend.flush(); + + expect(controller.vnApp.showMessage).toHaveBeenCalledWith('The postcode has been saved'); + }); + }); + }); +}); diff --git a/modules/client/front/postcode/locale/es.yml b/modules/client/front/postcode/locale/es.yml new file mode 100644 index 000000000..ab8b0fc21 --- /dev/null +++ b/modules/client/front/postcode/locale/es.yml @@ -0,0 +1,5 @@ +New postcode: Nuevo código postal +Please, ensure you put the correct data!: ¡Por favor, asegúrate de poner los datos correctos! +The postcode can't be empty: El código postal no puede quedar vacío +The town can't be empty: La población no puede quedar vacía +The postcode has been saved: El código postal ha sido guardado \ No newline at end of file diff --git a/modules/client/front/postcode/style.scss b/modules/client/front/postcode/style.scss new file mode 100644 index 000000000..b9ef984b7 --- /dev/null +++ b/modules/client/front/postcode/style.scss @@ -0,0 +1,9 @@ +@import "variables"; + +vn-client-postcode { + vn-dialog { + p { + color: $color-alert + } + } +} \ No newline at end of file diff --git a/modules/client/front/routes.json b/modules/client/front/routes.json index a927d0aa7..c0e042086 100644 --- a/modules/client/front/routes.json +++ b/modules/client/front/routes.json @@ -24,7 +24,8 @@ {"state": "client.card.creditInsurance.index", "icon": "icon-solunion"}, {"state": "client.card.contact", "icon": "contact_phone"}, {"state": "client.card.sample.index", "icon": "mail"}, - {"state": "client.card.webPayment", "icon": "icon-onlinepayment"} + {"state": "client.card.webPayment", "icon": "icon-onlinepayment"}, + {"state": "client.card.dms.index", "icon": "cloud_upload"} ] } ], @@ -314,6 +315,27 @@ "state": "client.card.log", "component": "vn-client-log", "description": "Log" + }, + { + "url": "/dms", + "state": "client.card.dms", + "abstract": true, + "component": "ui-view" + }, + { + "url": "/index", + "state": "client.card.dms.index", + "component": "vn-client-dms-index", + "description": "File management" + }, + { + "url": "/create", + "state": "client.card.dms.create", + "component": "vn-client-dms-create", + "description": "Upload file", + "params": { + "client": "$ctrl.client" + } } ] } diff --git a/modules/client/front/sample/index/index.html b/modules/client/front/sample/index/index.html index 7420cd14b..48543d135 100644 --- a/modules/client/front/sample/index/index.html +++ b/modules/client/front/sample/index/index.html @@ -23,8 +23,16 @@ {{::sample.created | dateTime:'dd/MM/yyyy HH:mm' }} - {{::sample.type.description}} - {{::sample.worker.user.nickname}} + + {{::sample.type.description}} + + + + {{::sample.worker.user.nickname}} + + {{::sample.company.code}} @@ -33,6 +41,10 @@
+ + diff --git a/modules/client/front/sample/index/index.js b/modules/client/front/sample/index/index.js index 646544eb6..4ce12e27c 100644 --- a/modules/client/front/sample/index/index.js +++ b/modules/client/front/sample/index/index.js @@ -1,7 +1,8 @@ import ngModule from '../../module'; class Controller { - constructor($stateParams) { + constructor($scope, $stateParams) { + this.$ = $scope; this.$stateParams = $stateParams; this.filter = { include: [ @@ -32,9 +33,19 @@ class Controller { ] }; } + showWorkerDescriptor(event, workerFk) { + if (event.defaultPrevented) return; + + event.preventDefault(); + event.stopImmediatePropagation(); + + this.selectedWorker = workerFk; + this.$.workerDescriptor.parent = event.target; + this.$.workerDescriptor.show(); + } } -Controller.$inject = ['$stateParams']; +Controller.$inject = ['$scope', '$stateParams']; ngModule.component('vnClientSampleIndex', { template: require('./index.html'), diff --git a/modules/client/front/summary/index.html b/modules/client/front/summary/index.html index 37bee2814..69a08332e 100644 --- a/modules/client/front/summary/index.html +++ b/modules/client/front/summary/index.html @@ -155,13 +155,13 @@ value="{{$ctrl.summary.mana.mana | currency: 'EUR':2}}"> + value="{{$ctrl.claimRate($ctrl.summary.claimsRatio.priceIncreasing) | percentage}}"> + value="{{$ctrl.claimingRate($ctrl.summary.claimsRatio.claimingRate) | percentage}}"> diff --git a/modules/client/front/summary/index.js b/modules/client/front/summary/index.js index 79f268835..a35f330f1 100644 --- a/modules/client/front/summary/index.js +++ b/modules/client/front/summary/index.js @@ -29,6 +29,16 @@ class Controller { }); return total; } + + claimRate(priceIncreasing) { + if (priceIncreasing) + return priceIncreasing * 100; + } + + claimingRate(rate) { + if (rate) + return rate * 100; + } } Controller.$inject = ['$http']; diff --git a/modules/client/front/web-access/index.js b/modules/client/front/web-access/index.js index ef1ccd16c..6282db5fb 100644 --- a/modules/client/front/web-access/index.js +++ b/modules/client/front/web-access/index.js @@ -41,21 +41,25 @@ export default class Controller { } onPassChange(response) { - if (response == 'ACCEPT') + if (response == 'ACCEPT') { try { if (!this.newPassword) - throw new Error(`Passwords can't be empty`); + throw new Error(`You must enter a new password`); if (this.newPassword != this.repeatPassword) throw new Error(`Passwords don't match`); let account = { password: this.newPassword }; - this.$http.patch(`/client/api/Accounts/${this.client.id}`, account); + this.$http.patch(`/client/api/Accounts/${this.client.id}`, account).then(res => { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }); } catch (e) { this.vnApp.showError(this.$translate.instant(e.message)); + return false; } + } return true; } diff --git a/modules/client/front/web-access/index.spec.js b/modules/client/front/web-access/index.spec.js index c9e33e51e..caaf5c7ff 100644 --- a/modules/client/front/web-access/index.spec.js +++ b/modules/client/front/web-access/index.spec.js @@ -80,13 +80,13 @@ describe('Component VnClientWebAccess', () => { }); describe(`when password is empty`, () => { - it(`should throw Passwords can't be empty error`, () => { + it(`should throw 'You must enter a new password' error`, () => { controller.client = {id: '1234'}; controller.newPassword = ''; controller.canChangePassword = true; controller.onPassChange('ACCEPT'); - expect(vnApp.showError).toHaveBeenCalledWith(`Passwords can't be empty`); + expect(vnApp.showError).toHaveBeenCalledWith(`You must enter a new password`); }); }); diff --git a/modules/client/front/web-access/locale/es.yml b/modules/client/front/web-access/locale/es.yml index 2d1905c16..4a3ac0ab4 100644 --- a/modules/client/front/web-access/locale/es.yml +++ b/modules/client/front/web-access/locale/es.yml @@ -2,4 +2,6 @@ User: Usuario Enable web access: Habilitar acceso web New password: Nueva contraseña Repeat password: Repetir contraseña -Change password: Cambiar contraseña \ No newline at end of file +Change password: Cambiar contraseña +Passwords don't match: Las contraseñas no coinciden +You must enter a new password: Debes introducir una nueva contraseña \ No newline at end of file diff --git a/modules/invoiceOut/back/methods/invoiceOut/book.js b/modules/invoiceOut/back/methods/invoiceOut/book.js index 745e8e3c5..a3a909f2a 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/book.js +++ b/modules/invoiceOut/back/methods/invoiceOut/book.js @@ -21,6 +21,10 @@ module.exports = Self => { }); Self.book = async ref => { - return Self.rawSql(`CALL vn.invoiceOutAgain(?)`, [ref]); + let ticketAddress = await Self.app.models.Ticket.findOne({where: {invoiceOut: ref}}); + let invoiceCompany = await Self.app.models.InvoiceOut.findOne({where: {ref: ref}}); + let [taxArea] = await Self.rawSql(`Select vn.addressTaxArea(?, ?) AS code`, [ticketAddress.address, invoiceCompany.company]); + + return Self.rawSql(`CALL vn.invoiceOutAgain(?, ?)`, [ref, taxArea.code]); }; }; diff --git a/modules/invoiceOut/back/methods/invoiceOut/filter.js b/modules/invoiceOut/back/methods/invoiceOut/filter.js index e9f60473a..348bf64d8 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/filter.js +++ b/modules/invoiceOut/back/methods/invoiceOut/filter.js @@ -95,7 +95,7 @@ module.exports = Self => { } }); - filter = mergeFilters(ctx.args.filter, {where}); + filter = mergeFilters(filter, {where}); let stmts = []; let stmt; diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js index 383e952b6..345e29125 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/book.spec.js @@ -1,10 +1,12 @@ const app = require('vn-loopback/server/server'); describe('invoiceOut book()', () => { - const invoiceOutId = 5; + const invoiceOutId = 1; let invoiceOutRef; let OriginalInvoiceOut; let updatedInvoiceOut; + let bookedDate; + afterAll(async done => { updatedInvoiceOut.updateAttributes({booked: OriginalInvoiceOut.booked, hasPdf: OriginalInvoiceOut.hasPdf}); @@ -14,7 +16,9 @@ describe('invoiceOut book()', () => { it('should check that invoice out booked is untainted', async() => { const invoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); - expect(invoiceOut.booked).toBeNull(); + bookedDate = invoiceOut.booked; + + expect(invoiceOut.booked).toBeDefined(); expect(invoiceOut.hasPdf).toBeTruthy(); }); @@ -26,7 +30,7 @@ describe('invoiceOut book()', () => { updatedInvoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); - expect(updatedInvoiceOut.booked).toEqual(jasmine.any(Object)); + expect(updatedInvoiceOut.booked).not.toEqual(bookedDate); expect(updatedInvoiceOut.hasPdf).toBeFalsy(); }); }); diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/delete.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/delete.spec.js index 1fba84cbd..0d272a81d 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/delete.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/delete.spec.js @@ -2,37 +2,35 @@ const app = require('vn-loopback/server/server'); describe('invoiceOut delete()', () => { const invoiceOutId = 2; - let OriginalInvoiceOut; - let OriginalTickets; + let originalInvoiceOut; + let originalTicket; + afterAll(async done => { - const newInvoiceOut = await app.models.InvoiceOut.create(OriginalInvoiceOut); - await newInvoiceOut.updateAttribute('ref', OriginalInvoiceOut.ref); + const newInvoiceOut = await app.models.InvoiceOut.create(originalInvoiceOut); + await newInvoiceOut.updateAttribute('ref', originalInvoiceOut.ref); const promises = []; - OriginalTickets.forEach(ticket => { - promises.push(ticket.updateAttribute('refFk', newInvoiceOut.ref)); - }); + promises.push(originalTicket.updateAttribute('refFk', newInvoiceOut.ref)); Promise.all(promises); done(); }); - it('should check that there is two tickets from the invoice id 2', async() => { + it('should check that there is one ticket in the target invoiceOut', async() => { const invoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); const tickets = await app.models.Ticket.find({where: {refFk: invoiceOut.ref}}); - expect(tickets.length).toEqual(2); - expect(tickets[0].id).toEqual(2); + expect(tickets.length).toEqual(1); + expect(tickets[0].id).toEqual(3); }); - it(`should check the two tickets from the invoice id 2 that are not invoiced`, async() => { - OriginalInvoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); + it(`should delete the target invoiceOut then check the ticket doesn't have a refFk anymore`, async() => { + originalInvoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); await app.models.InvoiceOut.delete(invoiceOutId); - OriginalTickets = await app.models.Ticket.find({where: {id: {inq: [2, 3]}}}); - const invoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); + originalTicket = await app.models.Ticket.findById(3); + const deletedInvoiceOut = await app.models.InvoiceOut.findById(invoiceOutId); - expect(OriginalTickets[0].refFk).toBeNull(); - expect(OriginalTickets[1].refFk).toBeNull(); - expect(invoiceOut).toBeNull(); + expect(deletedInvoiceOut).toBeNull(); + expect(originalTicket.refFk).toBeNull(); }); }); diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/download.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/download.spec.js new file mode 100644 index 000000000..09289896f --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/download.spec.js @@ -0,0 +1,10 @@ +const app = require('vn-loopback/server/server'); + +describe('InvoiceOut download()', () => { + it('should return the downloaded fine name', async() => { + let result = await app.models.InvoiceOut.download(1); + + expect(result[1]).toEqual('text/plain'); + expect(result[2]).toEqual('filename="README.md"'); + }); +}); diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/filter.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/filter.spec.js new file mode 100644 index 000000000..09f67eced --- /dev/null +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/filter.spec.js @@ -0,0 +1,109 @@ +const app = require('vn-loopback/server/server'); + +describe('InvoiceOut filter()', () => { + let today = new Date(); + today.setHours(2, 0, 0, 0); + + it('should return the invoice out matching ref', async() => { + let ctx = { + args: { + search: 'T4444444', + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].ref).toEqual('T4444444'); + }); + + it('should return the invoice out matching clientFk', async() => { + let ctx = { + args: { + clientFk: 102, + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].ref).toEqual('T2222222'); + }); + + it('should return the invoice out matching hasPdf', async() => { + let ctx = { + args: { + hasPdf: true, + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(5); + }); + + it('should return the invoice out matching amount', async() => { + let ctx = { + args: { + amount: 121.36, + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].ref).toEqual('T2222222'); + }); + + it('should return the invoice out matching min and max', async() => { + let ctx = { + args: { + min: 0, + max: 100, + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(3); + }); + + // #1428 cuadrar formato de horas + xit('should return the invoice out matching issued', async() => { + let ctx = { + args: { + issued: today, + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(1); + }); + + // #1428 cuadrar formato de horas + xit('should return the invoice out matching created', async() => { + let ctx = { + args: { + created: today, + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(5); + }); + + // #1428 cuadrar formato de horas + xit('should return the invoice out matching dued', async() => { + let ctx = { + args: { + dued: today + } + }; + + let result = await app.models.InvoiceOut.filter(ctx); + + expect(result.length).toEqual(1); + }); +}); diff --git a/modules/invoiceOut/back/methods/invoiceOut/specs/summary.spec.js b/modules/invoiceOut/back/methods/invoiceOut/specs/summary.spec.js index c1b90c7a7..1b1b84d15 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/specs/summary.spec.js +++ b/modules/invoiceOut/back/methods/invoiceOut/specs/summary.spec.js @@ -8,26 +8,26 @@ describe('invoiceOut summary()', () => { }); it(`should return a summary object containing data from it's tickets`, async() => { - const result = await app.models.InvoiceOut.summary(1); - const tickets = result.invoiceOut.tickets(); + const summary = await app.models.InvoiceOut.summary(1); + const tickets = summary.invoiceOut.tickets(); - expect(result.invoiceOut.ref).toEqual('T1111111'); - expect(tickets.length).toEqual(1); + expect(summary.invoiceOut.ref).toEqual('T1111111'); + expect(tickets.length).toEqual(2); }); it(`should return a summary object containing it's supplier country`, async() => { - const result = await app.models.InvoiceOut.summary(1); - const supplier = result.invoiceOut.supplier(); + const summary = await app.models.InvoiceOut.summary(1); + const supplier = summary.invoiceOut.supplier(); - expect(result.invoiceOut.ref).toEqual('T1111111'); + expect(summary.invoiceOut.ref).toEqual('T1111111'); expect(supplier.id).toEqual(442); expect(supplier.countryFk).toEqual(1); }); it(`should return a summary object containing idata from it's tax types`, async() => { - const result = await app.models.InvoiceOut.summary(1); + const summary = await app.models.InvoiceOut.summary(1); - expect(result.invoiceOut.ref).toEqual('T1111111'); - expect(result.invoiceOut.taxesBreakdown.length).toEqual(2); + expect(summary.invoiceOut.ref).toEqual('T1111111'); + expect(summary.invoiceOut.taxesBreakdown.length).toEqual(2); }); }); diff --git a/modules/item/back/methods/item/clone.js b/modules/item/back/methods/item/clone.js index 501cdc8d7..f543164fc 100644 --- a/modules/item/back/methods/item/clone.js +++ b/modules/item/back/methods/item/clone.js @@ -30,7 +30,7 @@ module.exports = Self => { const origin = await Self.findById(itemId, null, options); if (!origin) - throw new UserError(`That item doesn't exists`); + throw new UserError(`This item doesn't exists`); origin.itemTag = undefined; origin.description = undefined; @@ -40,12 +40,9 @@ module.exports = Self => { const newItem = await Self.create(origin, options); - let promises = []; - - await cloneTaxes(origin.id, newItem.id, promises, options); - await cloneBotanical(origin.id, newItem.id, promises, options); - await cloneTags(origin.id, newItem.id, promises, options); - await Promise.all(promises); + await cloneTaxes(origin.id, newItem.id, options); + await cloneBotanical(origin.id, newItem.id, options); + await cloneTags(origin.id, newItem.id, options); await tx.commit(); return newItem; @@ -59,36 +56,37 @@ module.exports = Self => { * Clone original taxes to new item * @param {Integer} originalId - Original item id * @param {Integer} newId - New item id - * @param {Array} promises - Array of promises * @param {Object} options - Transaction options */ - async function cloneTaxes(originalId, newId, promises, options) { + async function cloneTaxes(originalId, newId, options) { const models = Self.app.models; const originalTaxes = await models.ItemTaxCountry.find({ where: {itemFk: originalId}, fields: ['botanical', 'countryFk', 'taxClassFk'] }, options); - originalTaxes.forEach(tax => { + const promises = []; + for (tax of originalTaxes) { tax.itemFk = newId; - const newItemTax = models.ItemTaxCountry.upsertWithWhere({ + const newTax = models.ItemTaxCountry.upsertWithWhere({ itemFk: newId, countryFk: tax.countryFk, }, tax, options); - promises.push(newItemTax); - }); + promises.push(newTax); + } + + await Promise.all(promises); } /** * Clone original botanical to new item * @param {Integer} originalId - Original item id * @param {Integer} newId - New item id - * @param {Array} promises - Array of promises * @param {Object} options - Transaction options */ - async function cloneBotanical(originalId, newId, promises, options) { + async function cloneBotanical(originalId, newId, options) { const models = Self.app.models; const botanical = await models.ItemBotanical.findOne({ where: {itemFk: originalId}, @@ -97,8 +95,8 @@ module.exports = Self => { if (botanical) { botanical.itemFk = newId; - const newBotanical = models.ItemBotanical.create(botanical, options); - promises.push(newBotanical); + + await models.ItemBotanical.create(botanical, options); } } @@ -106,10 +104,9 @@ module.exports = Self => { * Clone original item tags to new item * @param {Integer} originalId - Original item id * @param {Integer} newId - New item id - * @param {Array} promises - Array of promises * @param {Object} options - Transaction options */ - async function cloneTags(originalId, newId, promises, options) { + async function cloneTags(originalId, newId, options) { const models = Self.app.models; const originalTags = await models.ItemTag.find({ where: { @@ -118,11 +115,14 @@ module.exports = Self => { fields: ['tagFk', 'value', 'priority'] }, options); - originalTags.forEach(tag => { + const promises = []; + for (tag of originalTags) { tag.itemFk = newId; + const newItemTag = models.ItemTag.create(tag, options); - const newTag = models.ItemTag.create(tag, options); - promises.push(newTag); - }); + promises.push(newItemTag); + } + + await Promise.all(promises); } }; diff --git a/modules/item/back/methods/item/filter.js b/modules/item/back/methods/item/filter.js index 05cd87ca2..325df3302 100644 --- a/modules/item/back/methods/item/filter.js +++ b/modules/item/back/methods/item/filter.js @@ -89,7 +89,7 @@ module.exports = Self => { } }); - filter = mergeFilters(ctx.args.filter, {where}); + filter = mergeFilters(filter, {where}); let stmts = []; let stmt; diff --git a/modules/item/back/methods/item/specs/clone.spec.js b/modules/item/back/methods/item/specs/clone.spec.js index 8ac228485..55142ee63 100644 --- a/modules/item/back/methods/item/specs/clone.spec.js +++ b/modules/item/back/methods/item/specs/clone.spec.js @@ -28,7 +28,7 @@ describe('item clone()', () => { let itemFk = 999; await app.models.Item.clone(itemFk) .catch(e => { - expect(e.message).toContain(`That item doesn't exists`); + expect(e.message).toContain(`This item doesn't exists`); error = e; }); diff --git a/modules/item/back/methods/item/specs/getDiary.spec.js b/modules/item/back/methods/item/specs/getDiary.spec.js index dc678fb09..d47ac1d7d 100644 --- a/modules/item/back/methods/item/specs/getDiary.spec.js +++ b/modules/item/back/methods/item/specs/getDiary.spec.js @@ -1,11 +1,14 @@ const app = require('vn-loopback/server/server'); describe('item getDiary()', () => { - it('should return 3 entries, the first one with the property balance -100', async() => { + it('should check the property balance of the 4 resultant entries', async() => { let params = {where: {itemFk: 1, warehouseFk: 2}}; let result = await app.models.Item.getDiary(params); expect(result.length).toBe(4); expect(result[0].balance).toBe(-100); + expect(result[1].balance).toBe(-110); + expect(result[2].balance).toBe(-110); + expect(result[3].balance).toBe(-210); }); }); diff --git a/modules/item/back/methods/item/specs/getLastEntries.spec.js b/modules/item/back/methods/item/specs/getLastEntries.spec.js index 5147dd126..5c996d8e3 100644 --- a/modules/item/back/methods/item/specs/getLastEntries.spec.js +++ b/modules/item/back/methods/item/specs/getLastEntries.spec.js @@ -9,7 +9,7 @@ describe('item getLastEntries()', () => { expect(result.length).toEqual(1); }); - it('should return three entries for a given item', async() => { + it('should return five entries for a given item', async() => { let date = new Date(); date.setMonth(date.getMonth() - 2, 1); @@ -17,6 +17,6 @@ describe('item getLastEntries()', () => { let filter = {where: {itemFk: 1, date: date}}; let result = await app.models.Item.getLastEntries(filter); - expect(result.length).toEqual(3); + expect(result.length).toEqual(5); }); }); diff --git a/modules/item/back/models/item-tag.js b/modules/item/back/models/item-tag.js index 0e2bfb694..891d11558 100644 --- a/modules/item/back/models/item-tag.js +++ b/modules/item/back/models/item-tag.js @@ -4,14 +4,10 @@ module.exports = Self => { require('../methods/item-tag/filterItemTags')(Self); Self.rewriteDbError(function(err) { + if (err.code === 'ER_DUP_ENTRY') + return new UserError(`The tag can't be repeated`); if (err.code === 'ER_BAD_NULL_ERROR') return new UserError(`Tag value cannot be blank`); return err; }); - - Self.rewriteDbError(function(err) { - if (err.code === 'ER_DUP_ENTRY') - return new UserError(`The tag can't be repeated`); - return err; - }); }; diff --git a/modules/item/front/basic-data/index.html b/modules/item/front/basic-data/index.html index b12e9fc53..a6ddd2e3f 100644 --- a/modules/item/front/basic-data/index.html +++ b/modules/item/front/basic-data/index.html @@ -73,6 +73,7 @@ diff --git a/modules/item/front/fetched-tags/index.html b/modules/item/front/fetched-tags/index.html index c613a042d..6982ab6ac 100644 --- a/modules/item/front/fetched-tags/index.html +++ b/modules/item/front/fetched-tags/index.html @@ -1,7 +1,7 @@ - {{::$ctrl.item.name}} + {{$ctrl.name}} -

{{::$ctrl.subName}}

+

{{$ctrl.subName}}

- + @@ -75,6 +75,7 @@ diff --git a/modules/item/front/log/index.html b/modules/item/front/log/index.html index 3734ba056..209cf9e56 100644 --- a/modules/item/front/log/index.html +++ b/modules/item/front/log/index.html @@ -1,9 +1 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/item/front/log/index.js b/modules/item/front/log/index.js index edb540760..9253147c7 100644 --- a/modules/item/front/log/index.js +++ b/modules/item/front/log/index.js @@ -4,44 +4,6 @@ class Controller { constructor($scope, $stateParams) { this.$scope = $scope; this.$stateParams = $stateParams; - this.filter = { - include: [{ - relation: 'user', - scope: { - fields: ['name'], - }, - }], - }; - } - - get logs() { - return this._logs; - } - - set logs(value) { - this._logs = value; - - if (this.logs) { - this.logs.forEach(log => { - log.oldProperties = this.getInstance(log.oldInstance); - log.newProperties = this.getInstance(log.newInstance); - }); - } - } - - getInstance(instance) { - let validDate = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/; - const properties = []; - if (typeof instance == 'object' && instance != null) { - Object.keys(instance).forEach(property => { - if (validDate.test(instance[property])) - instance[property] = new Date(instance[property]).toLocaleString('es-ES'); - - properties.push({key: property, value: instance[property]}); - }); - return properties; - } - return null; } } diff --git a/modules/order/back/methods/order-row/specs/addToOrder.spec.js b/modules/order/back/methods/order-row/specs/addToOrder.spec.js index c38cb2a8c..3b832dee2 100644 --- a/modules/order/back/methods/order-row/specs/addToOrder.spec.js +++ b/modules/order/back/methods/order-row/specs/addToOrder.spec.js @@ -1,20 +1,21 @@ const app = require('vn-loopback/server/server'); describe('order addToOrder()', () => { + const orderId = 8; let rowToDelete; afterAll(async done => { - await app.models.OrderRow.removes({rows: [rowToDelete], actualOrderId: 20}); + await app.models.OrderRow.removes({rows: [rowToDelete], actualOrderId: orderId}); done(); }); it('should add a row to a given order', async() => { - let unmodifiedRows = await app.models.OrderRow.find({where: {orderFk: 20}}); + let unmodifiedRows = await app.models.OrderRow.find({where: {orderFk: orderId}}); - expect(unmodifiedRows.length).toBe(1); + expect(unmodifiedRows.length).toBe(2); let params = { - orderFk: 20, + orderFk: orderId, items: [{ itemFk: 1, quantity: 10, @@ -24,10 +25,10 @@ describe('order addToOrder()', () => { await app.models.OrderRow.addToOrder(params); - let modifiedRows = await app.models.OrderRow.find({where: {orderFk: 20}}); + let modifiedRows = await app.models.OrderRow.find({where: {orderFk: orderId}}); rowToDelete = modifiedRows[modifiedRows.length - 1].id; - expect(modifiedRows.length).toBe(2); + expect(modifiedRows.length).toBe(3); }); }); diff --git a/modules/order/back/methods/order/filter.js b/modules/order/back/methods/order/filter.js index 4a4fd2c85..5dffef195 100644 --- a/modules/order/back/methods/order/filter.js +++ b/modules/order/back/methods/order/filter.js @@ -47,6 +47,10 @@ module.exports = Self => { arg: 'workerFk', type: 'Integer', description: `The salesperson id` + }, { + arg: 'myTeam', + type: 'Boolean', + description: `Whether to show only tickets for the current logged user team (For now it shows only the current user tickets)` }, { arg: 'isConfirmed', type: 'Boolean', @@ -65,7 +69,30 @@ module.exports = Self => { Self.filter = async(ctx, filter) => { let conn = Self.dataSource.connector; + let worker = await Self.app.models.Worker.findOne({ + where: {userFk: ctx.req.accessToken.userId}, + include: [ + {relation: 'collegues'} + ] + }); + let teamIds = []; + if (worker.collegues().length && ctx.args.myTeam) { + worker.collegues().forEach(collegue => { + teamIds.push(collegue.collegueFk); + }); + } + + if (worker.collegues().length === 0 && ctx.args.myTeam) { + worker = await Self.app.models.Worker.findOne({ + fields: ['id'], + where: {userFk: ctx.req.accessToken.userId} + }); + teamIds = [worker && worker.id]; + } + + if (ctx.args && ctx.args.myTeam) + ctx.args.teamIds = teamIds; let where = buildFilter(ctx.args, (param, value) => { switch (param) { case 'search': @@ -86,6 +113,8 @@ module.exports = Self => { return {'ort.ticketFk': value}; case 'isConfirmed': return {'o.confirmed': value ? 1 : 0}; + case 'myTeam': + return {'c.salesPersonFk': {inq: teamIds}}; case 'id': param = `o.${param}`; return {[param]: value}; diff --git a/modules/order/back/methods/order/new.js b/modules/order/back/methods/order/new.js index 259fb3ea2..4f1f2c3aa 100644 --- a/modules/order/back/methods/order/new.js +++ b/modules/order/back/methods/order/new.js @@ -4,11 +4,24 @@ module.exports = Self => { Self.remoteMethod('new', { description: 'Create a new order and returns the new ID', accessType: 'WRITE', - accepts: [{ - arg: 'params', - type: 'object', - http: {source: 'body'} - }], + accepts: [ + { + arg: 'landed', + description: 'The landed for the order', + type: 'date', + required: true + }, { + arg: 'addressId', + description: 'The address for the order', + type: 'number', + required: true + }, { + arg: 'agencyModeId', + description: 'The agencyMode for the order', + type: 'number', + required: true + } + ], returns: { type: 'number', root: true @@ -19,9 +32,9 @@ module.exports = Self => { } }); - Self.new = async params => { + Self.new = async(landed, addressId, agencyModeId) => { let address = await Self.app.models.Address.findOne({ - where: {id: params.addressFk}, + where: {id: addressId}, fields: ['clientFk'], include: [ {relation: 'client', @@ -35,18 +48,15 @@ module.exports = Self => { }); if (address.client().type().code === 'normal') { - if (address.client().isFreezed) - throw new UserError(`You can't create an order for a frozen client`); - if (!address.client().isActive) throw new UserError(`You can't create an order for a inactive client`); } query = `CALL vn.orderListCreate(?, ?, ?, ?);`; [result] = await Self.rawSql(query, [ - params.landed, - params.agencyModeFk, - params.addressFk, + landed, + agencyModeId, + addressId, 'SALIX' ]); diff --git a/modules/order/back/methods/order/newFromTicket.js b/modules/order/back/methods/order/newFromTicket.js index 533ec6ff9..285f60ee8 100644 --- a/modules/order/back/methods/order/newFromTicket.js +++ b/modules/order/back/methods/order/newFromTicket.js @@ -23,11 +23,11 @@ module.exports = Self => { where: {id: ticketFk} }); - let orderID = await Self.app.models.Order.new({ - addressFk: ticket.addressFk, - landed: ticket.landed, - agencyModeFk: ticket.agencyModeFk - }); + let landed = ticket.landed; + let addressFk = ticket.addressFk; + let agencyModeFk = ticket.agencyModeFk; + + let orderID = await Self.app.models.Order.new(landed, addressFk, agencyModeFk); return orderID; }; diff --git a/modules/order/back/methods/order/specs/catalogFilter.spec.js b/modules/order/back/methods/order/specs/catalogFilter.spec.js index e800e14ff..ac779493e 100644 --- a/modules/order/back/methods/order/specs/catalogFilter.spec.js +++ b/modules/order/back/methods/order/specs/catalogFilter.spec.js @@ -8,7 +8,7 @@ describe('order catalogFilter()', () => { } }; let tags = []; - let orderFk = 20; + let orderFk = 11; let orderBy = {field: 'relevancy DESC, name', way: 'DESC'}; let result = await app.models.Order.catalogFilter(orderFk, orderBy, filter, tags); let firstItemId = result[0].id; @@ -26,7 +26,7 @@ describe('order catalogFilter()', () => { }; let tags = [{tagFk: 56, value: 'Melee Reinforced weapon'}]; - let orderFk = 20; + let orderFk = 11; let orderBy = {field: 'relevancy DESC, name', way: 'DESC'}; let result = await app.models.Order.catalogFilter(orderFk, orderBy, filter, tags); diff --git a/modules/order/back/methods/order/specs/filter.spec.js b/modules/order/back/methods/order/specs/filter.spec.js index a64ecb17f..fc987613a 100644 --- a/modules/order/back/methods/order/specs/filter.spec.js +++ b/modules/order/back/methods/order/specs/filter.spec.js @@ -1,9 +1,13 @@ const app = require('vn-loopback/server/server'); describe('order filter()', () => { - it('should call the filter method with a basic search', async() => { - let ctx = {params: {}}; + let ctx = { + req: {accessToken: {userId: 9}}, + args: {}, + params: {} + }; + it('should call the filter method with a basic search', async() => { let filter = {where: {'o.id': 2}}; let result = await app.models.Order.filter(ctx, filter); let orderId = result[0].id; @@ -12,21 +16,17 @@ describe('order filter()', () => { }); it('should call the filter method with a single advanced search', async() => { - let ctx = {params: {}}; - let filter = {where: {'o.confirmed': false}}; let result = await app.models.Order.filter(ctx, filter); - expect(result.length).toEqual(6); + expect(result.length).toEqual(16); }); it('should call the filter method with a complex advanced search', async() => { - let ctx = {params: {}}; - - let filter = {where: {'o.confirmed': false, 'c.salesPersonFk': 18}}; + let filter = {where: {'o.confirmed': false, 'c.salesPersonFk': 19}}; let result = await app.models.Order.filter(ctx, filter); - expect(result.length).toEqual(1); + expect(result.length).toEqual(7); expect(result[0].id).toEqual(16); }); }); diff --git a/modules/order/back/methods/order/specs/getTotalVolume.spec.js b/modules/order/back/methods/order/specs/getTotalVolume.spec.js index 58916d8a5..04eb8f911 100644 --- a/modules/order/back/methods/order/specs/getTotalVolume.spec.js +++ b/modules/order/back/methods/order/specs/getTotalVolume.spec.js @@ -4,7 +4,7 @@ describe('order getTotalVolume()', () => { it('should return the total', async() => { let result = await app.models.Order.getTotalVolume(1); - expect(result.totalVolume).toEqual(0.066); - expect(result.totalBoxes).toEqual(0.5); + expect(result.totalVolume).toEqual(1.562); + expect(result.totalBoxes).toEqual(11.1); }); }); diff --git a/modules/order/back/methods/order/specs/getVAT.spec.js b/modules/order/back/methods/order/specs/getVAT.spec.js index bc0abd9af..5306535d2 100644 --- a/modules/order/back/methods/order/specs/getVAT.spec.js +++ b/modules/order/back/methods/order/specs/getVAT.spec.js @@ -1,16 +1,9 @@ const app = require('vn-loopback/server/server'); describe('order getVAT()', () => { - it('should call the getVAT method and return the response', async() => { + it('should return the order VAT', async() => { const result = await app.models.Order.getVAT(1); expect(result).toEqual(20.29); }); - - it(`should call the getVAT method and return zero if doesn't have lines`, async() => { - await app.models.Order.getVAT(13) - .then(response => { - expect(response).toEqual(0); - }); - }); }); diff --git a/modules/order/back/methods/order/specs/getVolumes.spec.js b/modules/order/back/methods/order/specs/getVolumes.spec.js index 881d17e93..4113a8e07 100644 --- a/modules/order/back/methods/order/specs/getVolumes.spec.js +++ b/modules/order/back/methods/order/specs/getVolumes.spec.js @@ -4,6 +4,6 @@ describe('order getVolumes()', () => { it('should return the volumes of a given order id', async() => { let [result] = await app.models.Order.getVolumes(1); - expect(result.volume).toEqual(0.04); + expect(result.volume).toEqual(1.09); }); }); diff --git a/modules/order/back/methods/order/specs/new.spec.js b/modules/order/back/methods/order/specs/new.spec.js index 88f5776b6..1cd3e8ce8 100644 --- a/modules/order/back/methods/order/specs/new.spec.js +++ b/modules/order/back/methods/order/specs/new.spec.js @@ -10,23 +10,13 @@ describe('order new()', () => { done(); }); - it('should throw an error if the client is frozen', async() => { + it('should throw an error if the client isnt active', async() => { let error; - let params = {addressFk: 121}; + let landed = new Date(); + let addressFk = 6; + let agencyModeFk = 1; - await app.models.Order.new(params) - .catch(e => { - error = e; - }); - - expect(error).toEqual(new UserError(`You can't create an order for a frozen client`)); - }); - - it('should throw an error if the client isnt frozen and isnt active', async() => { - let error; - let params = {addressFk: 6}; - - await app.models.Order.new(params) + await app.models.Order.new(landed, addressFk, agencyModeFk) .catch(e => { error = e; }); @@ -34,14 +24,12 @@ describe('order new()', () => { expect(error).toEqual(new UserError(`You can't create an order for a inactive client`)); }); - it('should create a new order for the user with id 105 when all conditions are met', async() => { - let params = { - landed: new Date(), - agencyModeFk: 1, - addressFk: 125 - }; + it('should create a new order a user when all conditions are met', async() => { + let landed = new Date(); + let addressFk = 121; + let agencyModeFk = 1; - orderId = await app.models.Order.new(params); + orderId = await app.models.Order.new(landed, addressFk, agencyModeFk); let highestOrderIdInFixtures = 3; diff --git a/modules/order/back/methods/order/specs/updateBasicData.spec.js b/modules/order/back/methods/order/specs/updateBasicData.spec.js index dc9e6b7e6..9b92e69ca 100644 --- a/modules/order/back/methods/order/specs/updateBasicData.spec.js +++ b/modules/order/back/methods/order/specs/updateBasicData.spec.js @@ -1,9 +1,9 @@ const app = require('vn-loopback/server/server'); describe('Order updateBasicData', () => { + const orderId = 21; afterAll(async done => { let validparams = {note: null}; - let orderId = 21; await app.models.Order.updateBasicData(validparams, orderId); @@ -38,11 +38,10 @@ describe('Order updateBasicData', () => { expect(error.toString()).toContain(`You can't make changes on the basic data of an confirmed order or with rows`); }); - it('should return an error if the user is administrative and the isTaxDataChecked value is true BUT the params aint valid', async() => { + it('should return an error if the current user is administrative and the isTaxDataChecked value is true BUT the params aint valid', async() => { let error; let invalidparams = {invalid: 'param for update'}; - let orderId = 21; await app.models.Order.updateBasicData(invalidparams, orderId) .catch(e => { @@ -54,7 +53,6 @@ describe('Order updateBasicData', () => { it('should update the client fiscal data and return the count if changes made', async() => { let validparams = {note: 'test note'}; - let orderId = 21; let order = await app.models.Order.findById(orderId); diff --git a/modules/order/front/catalog/index.html b/modules/order/front/catalog/index.html index 7f6e13ee1..550ac5cd9 100644 --- a/modules/order/front/catalog/index.html +++ b/modules/order/front/catalog/index.html @@ -39,13 +39,18 @@ - - No results + + + + + + Enter a new search + + + No results + +
diff --git a/modules/order/front/catalog/index.js b/modules/order/front/catalog/index.js index a21d9dc18..77136d654 100644 --- a/modules/order/front/catalog/index.js +++ b/modules/order/front/catalog/index.js @@ -128,6 +128,10 @@ class Controller { if (this.order && this.order.isConfirmed) this.$state.go('order.card.line'); } + + get isRefreshing() { + return this.$scope.model && this.$scope.model.isRefreshing; + } } Controller.$inject = ['$scope', '$state']; diff --git a/modules/order/front/create/card.js b/modules/order/front/create/card.js index dc590d8dd..e51eed18a 100644 --- a/modules/order/front/create/card.js +++ b/modules/order/front/create/card.js @@ -96,8 +96,8 @@ class Controller { createOrder() { let params = { landed: this.order.landed, - addressFk: this.order.addressFk, - agencyModeFk: this.order.agencyModeFk + addressId: this.order.addressFk, + agencyModeId: this.order.agencyModeFk }; this.$http.post(`order/api/Orders/new`, params).then(res => { this.vnApp.showSuccess(this.translate.instant('Data saved!')); diff --git a/modules/order/front/create/card.spec.js b/modules/order/front/create/card.spec.js index 635fa26f5..55b3e1007 100644 --- a/modules/order/front/create/card.spec.js +++ b/modules/order/front/create/card.spec.js @@ -90,8 +90,8 @@ describe('Order', () => { spyOn(controller.vnApp, 'showSuccess'); spyOn(controller.$state, 'go'); - $httpBackend.when('POST', 'order/api/Orders/new', {landed: 101, addressFk: 101, agencyModeFk: 101}).respond(200, 1); - $httpBackend.expect('POST', 'order/api/Orders/new', {landed: 101, addressFk: 101, agencyModeFk: 101}); + $httpBackend.when('POST', 'order/api/Orders/new', {landed: 101, addressId: 101, agencyModeId: 101}).respond(200, 1); + $httpBackend.expect('POST', 'order/api/Orders/new', {landed: 101, addressId: 101, agencyModeId: 101}); controller.createOrder(); $httpBackend.flush(); diff --git a/modules/order/front/filter/index.js b/modules/order/front/filter/index.js index 3a738ee5b..5e54b5cbc 100644 --- a/modules/order/front/filter/index.js +++ b/modules/order/front/filter/index.js @@ -51,6 +51,7 @@ class Controller { } set category(value) { + this.catalog.$scope.model.data = []; this.itemTypes = []; this.type = null; diff --git a/modules/order/front/index/index.html b/modules/order/front/index/index.html index dc3c54fdf..141e98000 100644 --- a/modules/order/front/index/index.html +++ b/modules/order/front/index/index.html @@ -25,7 +25,7 @@ Id Client - Sales person + Sales person Confirmed Created from Created diff --git a/modules/order/front/line/index.html b/modules/order/front/line/index.html index 91c05657b..bdda0739d 100644 --- a/modules/order/front/line/index.html +++ b/modules/order/front/line/index.html @@ -43,6 +43,7 @@ diff --git a/modules/order/front/search-panel/index.html b/modules/order/front/search-panel/index.html index 2a6f33b8c..953524625 100644 --- a/modules/order/front/search-panel/index.html +++ b/modules/order/front/search-panel/index.html @@ -57,8 +57,6 @@ label="Ticket id" model="filter.ticketFk"> - - - + + + + + - {{$ctrl.summary.isConfirmed}} diff --git a/modules/order/front/volume/index.html b/modules/order/front/volume/index.html index 4772ccd43..e368e9c1b 100644 --- a/modules/order/front/volume/index.html +++ b/modules/order/front/volume/index.html @@ -42,6 +42,7 @@ diff --git a/modules/route/back/methods/route/guessPriority.js b/modules/route/back/methods/route/guessPriority.js index 324cf9182..bb5b34ca3 100644 --- a/modules/route/back/methods/route/guessPriority.js +++ b/modules/route/back/methods/route/guessPriority.js @@ -6,7 +6,7 @@ module.exports = Self => { arg: 'id', type: 'number', required: true, - description: 'Guess priority', + description: 'Route Id ', http: {source: 'path'} }], returns: { diff --git a/modules/route/back/methods/route/specs/filter.spec.js b/modules/route/back/methods/route/specs/filter.spec.js new file mode 100644 index 000000000..ba32c956c --- /dev/null +++ b/modules/route/back/methods/route/specs/filter.spec.js @@ -0,0 +1,122 @@ +const app = require('vn-loopback/server/server'); + +describe('Route filter()', () => { + let today = new Date(); + today.setHours(2, 0, 0, 0); + + it('should return the routes matching "search"', async() => { + let ctx = { + args: { + search: 1, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(1); + expect(result[0].id).toEqual(1); + }); + + // #1428 cuadrar formato de horas + xit('should return the routes matching "from"', async() => { + let ctx = { + args: { + from: today, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(7); + }); + + it('should return the routes matching "to"', async() => { + let ctx = { + args: { + to: today, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(7); + }); + + it('should return the routes matching "m3"', async() => { + let ctx = { + args: { + m3: 0.1, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(1); + }); + + it('should return the routes matching "description"', async() => { + let ctx = { + args: { + description: 'third route', + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(1); + }); + + it('should return the routes matching "workerFk"', async() => { + let ctx = { + args: { + workerFk: 56, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(5); + }); + + it('should return the routes matching "warehouseFk"', async() => { + let ctx = { + args: { + warehouseFk: 1, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(7); + + ctx.args.warehouseFk = 2; + + result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(0); + }); + + it('should return the routes matching "vehicleFk"', async() => { + let ctx = { + args: { + vehicleFk: 2, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(1); + }); + + it('should return the routes matching "agencyModeFk"', async() => { + let ctx = { + args: { + agencyModeFk: 7, + } + }; + + let result = await app.models.Route.filter(ctx); + + expect(result.length).toEqual(4); + }); +}); diff --git a/modules/route/back/methods/route/specs/guessPriority.spec.js b/modules/route/back/methods/route/specs/guessPriority.spec.js new file mode 100644 index 000000000..cc536787a --- /dev/null +++ b/modules/route/back/methods/route/specs/guessPriority.spec.js @@ -0,0 +1,41 @@ +const app = require('vn-loopback/server/server'); + +describe('route guessPriority()', () => { + const targetRouteId = 2; + let routeTicketsToRestore; + + afterAll(async done => { + let restoreFixtures = []; + routeTicketsToRestore.forEach(ticket => { + restoreFixtures.push(ticket.updateAttribute('priority', null)); + }); + await Promise.all(restoreFixtures); + + done(); + }); + + it('should confirm the tickets in the target route have no priority yet', async() => { + routeTicketsToRestore = await app.models.Ticket.find({where: {routeFk: targetRouteId}}); + + expect(routeTicketsToRestore.length).toEqual(4); + expect(routeTicketsToRestore[0].priority).toBeNull(); + expect(routeTicketsToRestore[0].id).toEqual(7); + expect(routeTicketsToRestore[1].priority).toBeNull(); + expect(routeTicketsToRestore[1].id).toEqual(8); + expect(routeTicketsToRestore[2].priority).toBeNull(); + expect(routeTicketsToRestore[2].id).toEqual(9); + }); + + it('should call guessPriority() and then check the tickets in the target route now have their priorities defined', async() => { + await app.models.Route.guessPriority(targetRouteId); + let routeTickets = await app.models.Ticket.find({where: {routeFk: targetRouteId}, fields: ['id', 'priority']}); + + expect(routeTickets.length).toEqual(4); + expect(routeTickets[0].priority).toEqual(1); + expect(routeTickets[0].id).toEqual(7); + expect(routeTickets[1].priority).toEqual(3); + expect(routeTickets[1].id).toEqual(8); + expect(routeTickets[2].priority).toEqual(2); + expect(routeTickets[2].id).toEqual(9); + }); +}); diff --git a/modules/route/back/methods/route/specs/summary.spec.js b/modules/route/back/methods/route/specs/summary.spec.js index 06972c7ba..5b31ff19f 100644 --- a/modules/route/back/methods/route/specs/summary.spec.js +++ b/modules/route/back/methods/route/specs/summary.spec.js @@ -11,7 +11,7 @@ describe('route summary()', () => { const result = await app.models.Route.summary(1); const agency = result.route.agencyMode(); - expect(agency.name).toEqual('inhouse pickup'); + expect(agency.name).toEqual('Silla247'); }); it(`should return a summary object containing it's vehicle`, async() => { @@ -28,7 +28,7 @@ describe('route summary()', () => { expect(worker.nickname).toEqual('deliveryNick'); }); - it(`should return a summary object containing data from it's tickets`, async() => { + it(`should return a summary object containing data from the tickets`, async() => { const result = await app.models.Route.summary(2); expect(result.tickets.length).toEqual(4); diff --git a/modules/route/back/methods/route/specs/updateVolume.spec.js b/modules/route/back/methods/route/specs/updateVolume.spec.js new file mode 100644 index 000000000..75ee3c139 --- /dev/null +++ b/modules/route/back/methods/route/specs/updateVolume.spec.js @@ -0,0 +1,46 @@ +const app = require('vn-loopback/server/server'); + +describe('route updateVolume()', () => { + const routeId = 1; + const workerFk = 9; + const ctx = {req: {accessToken: {userId: workerFk}}}; + let originalRoute; + let ticketToRestore; + let logIdToDestroy; + + + afterAll(async done => { + await originalRoute.updateAttributes({m3: 2.7}); + await ticketToRestore.updateAttributes({routeFk: 2}); + await app.models.RouteLog.destroyById(logIdToDestroy); + done(); + }); + + it('should confirm the original volume of the route is the expected', async() => { + originalRoute = await app.models.Route.findById(routeId); + + expect(originalRoute.m3).toEqual(2.7); + }); + + it('should confirm the route volume is updated when a ticket is added', async() => { + ticketToRestore = await app.models.Ticket.findById(8); + let updatedTicket = await app.models.Ticket.findById(8); + + await updatedTicket.updateAttributes({routeFk: routeId}); + await app.models.Route.updateVolume(ctx, routeId); + + let updatedRoute = await app.models.Route.findById(routeId); + + expect(updatedRoute.m3).not.toEqual(originalRoute.m3); + }); + + it('should confirm the change is logged', async() => { + let logs = await app.models.RouteLog.find({fields: ['id', 'newInstance']}); + let m3Log = logs.filter(log => { + return log.newInstance.m3 === 3.1; + }); + logIdToDestroy = m3Log[0].id; + + expect(m3Log.length).toEqual(1); + }); +}); diff --git a/modules/route/back/methods/route/updateVolume.js b/modules/route/back/methods/route/updateVolume.js new file mode 100644 index 000000000..27e96ebab --- /dev/null +++ b/modules/route/back/methods/route/updateVolume.js @@ -0,0 +1,42 @@ +module.exports = Self => { + Self.remoteMethodCtx('updateVolume', { + description: 'Update the volume in a route', + accessType: 'WRITE', + accepts: { + arg: 'id', + type: 'number', + required: true, + description: 'Route id', + http: {source: 'path'} + }, + returns: { + type: 'number', + root: true + }, + http: { + path: `/:id/updateVolume`, + verb: 'POST' + } + }); + + Self.updateVolume = async(ctx, id) => { + let query = `CALL vn.routeUpdateM3(?)`; + let userId = ctx.req.accessToken.userId; + let originalRoute = await Self.app.models.Route.findById(id); + + await Self.rawSql(query, [id]); + let updatedRoute = await Self.app.models.Route.findById(id); + + let logRecord = { + originFk: id, + userFk: userId, + action: 'update', + changedModel: 'Route', + changedModelId: id, + oldInstance: {m3: originalRoute.m3}, + newInstance: {m3: updatedRoute.m3} + }; + + return await Self.app.models.RouteLog.create(logRecord); + }; +}; diff --git a/modules/route/back/models/route.js b/modules/route/back/models/route.js index bd637822f..c27719930 100644 --- a/modules/route/back/models/route.js +++ b/modules/route/back/models/route.js @@ -3,4 +3,5 @@ module.exports = Self => { require('../methods/route/summary')(Self); require('../methods/route/getTickets')(Self); require('../methods/route/guessPriority')(Self); + require('../methods/route/updateVolume')(Self); }; diff --git a/modules/route/front/descriptor/index.html b/modules/route/front/descriptor/index.html index 2a2600177..dac65333e 100644 --- a/modules/route/front/descriptor/index.html +++ b/modules/route/front/descriptor/index.html @@ -13,7 +13,8 @@ value-field="callback" translate-fields="['name']" data="$ctrl.moreOptions" - on-change="$ctrl.onMoreChange(value)"> + on-change="$ctrl.onMoreChange(value)" + on-open="$ctrl.onMoreOpen()"> - \ No newline at end of file + + + \ No newline at end of file diff --git a/modules/route/front/descriptor/index.js b/modules/route/front/descriptor/index.js index ca2a3de0c..15472726e 100644 --- a/modules/route/front/descriptor/index.js +++ b/modules/route/front/descriptor/index.js @@ -1,16 +1,29 @@ import ngModule from '../module'; +import {createDecipher} from 'crypto'; class Controller { - constructor($, $http, vnApp, $translate) { + constructor($, $http, vnApp, $translate, aclService) { this.$http = $http; this.vnApp = vnApp; this.$translate = $translate; this.$ = $; + this.aclService = aclService; this.moreOptions = [ {callback: this.showRouteReport, name: 'Show route report'}, - {callback: this.sendRouteReport, name: 'Send route report'} + {callback: this.sendRouteReport, name: 'Send route report'}, + {callback: this.showUpdateVolumeDialog, name: 'Update volume', acl: 'deliveryBoss'} ]; } + + onMoreOpen() { + let options = this.moreOptions.filter(option => { + const hasAclProperty = Object.hasOwnProperty.call(option, 'acl'); + + return !hasAclProperty || (hasAclProperty && this.aclService.hasAny([option.acl])); + }); + this.$.moreButton.data = options; + } + set quicklinks(value = {}) { this._quicklinks = Object.assign(value, this._quicklinks); } @@ -34,9 +47,23 @@ class Controller { this.vnApp.showSuccess(this.$translate.instant('Report sent')); }); } + + showUpdateVolumeDialog() { + this.$.updateVolumeConfirmation.show(); + } + + updateVolume(response) { + if (response === 'ACCEPT') { + let url = `/route/api/Routes/${this.route.id}/updateVolume`; + this.$http.post(url).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Volume updated')); + this.card.reload(); + }); + } + } } -Controller.$inject = ['$scope', '$http', 'vnApp', '$translate']; +Controller.$inject = ['$scope', '$http', 'vnApp', '$translate', 'aclService']; ngModule.component('vnRouteDescriptor', { template: require('./index.html'), @@ -44,5 +71,8 @@ ngModule.component('vnRouteDescriptor', { route: '<', quicklinks: '<' }, + require: { + card: '^vnRouteCard' + }, controller: Controller }); diff --git a/modules/route/front/descriptor/locale/es.yml b/modules/route/front/descriptor/locale/es.yml index 3fd58aed6..f2347b996 100644 --- a/modules/route/front/descriptor/locale/es.yml +++ b/modules/route/front/descriptor/locale/es.yml @@ -1,4 +1,6 @@ Volume exceded: Volumen excedido Volume: Volumen Send route report: Enviar informe de ruta -Show route report: Ver informe de ruta \ No newline at end of file +Show route report: Ver informe de ruta +Update volume: Actualizar volumen +Volume updated: Volumen actualizado \ No newline at end of file diff --git a/modules/route/front/index/index.html b/modules/route/front/index/index.html index f35988754..15c75a85c 100644 --- a/modules/route/front/index/index.html +++ b/modules/route/front/index/index.html @@ -17,7 +17,7 @@ - + diff --git a/modules/route/front/log/index.html b/modules/route/front/log/index.html index 925ea1d14..45a41fc0f 100644 --- a/modules/route/front/log/index.html +++ b/modules/route/front/log/index.html @@ -1,9 +1 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/route/front/log/index.js b/modules/route/front/log/index.js index 85358bd72..ff0a2a9d1 100644 --- a/modules/route/front/log/index.js +++ b/modules/route/front/log/index.js @@ -4,44 +4,6 @@ class Controller { constructor($scope, $stateParams) { this.$scope = $scope; this.$stateParams = $stateParams; - this.filter = { - include: [{ - relation: 'user', - scope: { - fields: ['name'], - }, - }], - }; - } - - get logs() { - return this._logs; - } - - set logs(value) { - this._logs = value; - - if (this.logs) { - this.logs.forEach(log => { - log.oldProperties = this.getInstance(log.oldInstance); - log.newProperties = this.getInstance(log.newInstance); - }); - } - } - - getInstance(instance) { - let validDate = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/; - const properties = []; - if (typeof instance == 'object' && instance != null) { - Object.keys(instance).forEach(property => { - if (validDate.test(instance[property])) - instance[property] = new Date(instance[property]).toLocaleString('es-ES'); - - properties.push({key: property, value: instance[property]}); - }); - return properties; - } - return null; } } diff --git a/modules/route/front/log/index.spec.js b/modules/route/front/log/index.spec.js deleted file mode 100644 index f8b6f8272..000000000 --- a/modules/route/front/log/index.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import './index'; - -describe('Route', () => { - describe('Component vnRouteLog', () => { - let $componentController; - let $scope; - let controller; - - beforeEach(ngModule('route')); - - beforeEach(angular.mock.inject((_$componentController_, $rootScope) => { - $componentController = _$componentController_; - $scope = $rootScope.$new(); - controller = $componentController('vnRouteLog', {$scope: $scope}); - controller.$scope.model = {data: [{newInstance: {id: 1}, oldInstance: {id: 2}}]}; - })); - - describe('logs setter', () => { - it('should call the function getInstance() twice', () => { - spyOn(controller, 'getInstance'); - controller.logs = [{newInstance: {id: 1}, oldInstance: {id: 2}}]; - - expect(controller.getInstance.calls.count()).toBe(2); - expect(controller.getInstance).toHaveBeenCalledWith({id: 1}); - expect(controller.getInstance).toHaveBeenCalledWith({id: 2}); - }); - }); - - describe('getInstance(instance)', () => { - it('should transform the object given in to an array', () => { - let newInstance = controller.getInstance(controller.$scope.model.data[0].newInstance); - - expect(newInstance).toEqual([{key: 'id', value: 1}]); - }); - }); - }); -}); diff --git a/modules/route/front/tickets/index.html b/modules/route/front/tickets/index.html index a8d8655e7..af266d35a 100644 --- a/modules/route/front/tickets/index.html +++ b/modules/route/front/tickets/index.html @@ -110,5 +110,5 @@ + on-response="$ctrl.removeTicketFromRoute(response)"> \ No newline at end of file diff --git a/modules/route/front/tickets/index.js b/modules/route/front/tickets/index.js index 2b3aa26f1..ce12d88ac 100644 --- a/modules/route/front/tickets/index.js +++ b/modules/route/front/tickets/index.js @@ -69,17 +69,25 @@ class Controller { this.$.confirm.show(); } - deleteFromRoute(response) { + removeTicketFromRoute(response) { if (response === 'ACCEPT') { let params = {routeFk: null}; let query = `/api/Tickets/${this.selectedTicket}/`; this.$http.patch(query, params).then(() => { - this.vnApp.showSuccess(this.$translate.instant('Ticket deleted from route')); - this.$.model.refresh(); + this.vnApp.showSuccess(this.$translate.instant('Ticket removed from route')); + this.updateVolume(); }); } } + updateVolume() { + let url = `/route/api/Routes/${this.$stateParams.id}/updateVolume`; + this.$http.post(url).then(() => { + this.card.reload(); + this.$.model.refresh(); + }); + } + guessPriority() { let query = `/api/Routes/${this.$stateParams.id}/guessPriority/`; this.$http.get(query).then(() => { @@ -107,5 +115,8 @@ Controller.$inject = ['$stateParams', '$scope', '$translate', '$http', 'vnApp']; ngModule.component('vnRouteTickets', { template: require('./index.html'), + require: { + card: '^vnRouteCard' + }, controller: Controller }); diff --git a/modules/route/front/tickets/locale/es.yml b/modules/route/front/tickets/locale/es.yml index e339f6b20..d668e0a8a 100644 --- a/modules/route/front/tickets/locale/es.yml +++ b/modules/route/front/tickets/locale/es.yml @@ -1,6 +1,6 @@ Remove ticket: Borrar ticket Open buscaman: Abrir buscaman -Ticket deleted from route: Ticket borrado de la ruta +Ticket removed from route: Ticket borrado de la ruta Order changed: Orden cambiado Delete ticket from route?: ¿Borrar ticket de la ruta? Sort routes: Ordenar rutas \ No newline at end of file diff --git a/modules/ticket/back/methods/sale/moveToNewTicket.js b/modules/ticket/back/methods/sale/moveToNewTicket.js deleted file mode 100644 index d8acad514..000000000 --- a/modules/ticket/back/methods/sale/moveToNewTicket.js +++ /dev/null @@ -1,78 +0,0 @@ -let UserError = require('vn-loopback/util/user-error'); - -module.exports = Self => { - Self.remoteMethodCtx('moveToNewTicket', { - description: 'Change the state of a ticket', - accessType: '', - accepts: [{ - arg: 'ticketParams', - type: 'object', - required: true, - description: '[sales IDs], newTicketFk, actualTicketFk', - http: {source: 'body'} - }, { - arg: 'sales', - type: 'object', - required: true, - description: '[sales IDs]', - http: {source: 'body'} - }], - returns: { - type: 'string', - root: true - }, - http: { - path: `/moveToNewTicket`, - verb: 'post' - } - }); - - Self.moveToNewTicket = async(ctx, params) => { - let userId = ctx.req.accessToken.userId; - let model = Self.app.models; - let thisTicketIsEditable = await model.Ticket.isEditable(params.ticket.oldTicketFk); - if (!thisTicketIsEditable) - throw new UserError(`The sales of this ticket can't be modified`); - - let travelDates = await model.Agency.getFirstShipped(params.ticket); - let shipped = new Date(travelDates.vShipped); - shipped.setMinutes(shipped.getMinutes() + shipped.getTimezoneOffset()); - - let landed = new Date(travelDates.vLanded); - landed.setMinutes(landed.getMinutes() + landed.getTimezoneOffset()); - - let newTicketParams = { - clientFk: params.ticket.clientFk, - addressFk: params.ticket.addressFk, - agencyModeFk: params.ticket.agencyModeFk, - warehouseFk: params.ticket.warehouseFk, - shipped: shipped, - landed: landed, - userId: userId - }; - - let tx = await Self.beginTransaction({}); - try { - let options = {transaction: tx}; - - let newTicket = await model.Ticket.new(ctx, newTicketParams, options); - - let selectedSalesId = []; - params.sales.forEach(sale => { - selectedSalesId.push(sale.id); - }); - - await model.Sale.updateAll( - {id: {inq: selectedSalesId}}, - {ticketFk: newTicket.id}, - options - ); - - await tx.commit(); - return newTicket; - } catch (e) { - await tx.rollback(); - throw e; - } - }; -}; diff --git a/modules/ticket/back/methods/sale/moveToTicket.js b/modules/ticket/back/methods/sale/moveToTicket.js index 5e3779551..149989727 100644 --- a/modules/ticket/back/methods/sale/moveToTicket.js +++ b/modules/ticket/back/methods/sale/moveToTicket.js @@ -1,14 +1,13 @@ let UserError = require('vn-loopback/util/user-error'); module.exports = Self => { - Self.remoteMethod('moveToTicket', { - description: 'Moves a line to a given ticket', - accessType: '', + Self.remoteMethodCtx('moveToTicket', { + description: 'Moves lines to a new or a given ticket', accepts: [{ arg: 'params', type: 'object', required: true, - description: '[sales IDs], newTicketFk, actualTicketFk', + description: 'currentTicket, receiverTicket, [sales IDs], removeEmptyTicket', http: {source: 'body'} }], returns: { @@ -21,16 +20,71 @@ module.exports = Self => { } }); - Self.moveToTicket = async params => { - let thisTicketIsEditable = await Self.app.models.Ticket.isEditable(params.actualTicketFk); - if (!thisTicketIsEditable) - throw new UserError(`The sales of this ticket can't be modified`); + Self.moveToTicket = async(ctx, params) => { + const models = Self.app.models; + const userId = ctx.req.accessToken.userId; + let currentTicket = await models.Ticket.findById(params.currentTicket.currentTicketId); + let newTicketData = {}; + let receiverTicket = params.receiverTicket; - let newTicketIsEditable = await Self.app.models.Ticket.isEditable(params.newTicketFk); - if (!newTicketIsEditable) - throw new UserError(`The sales of this ticket can't be modified`); + let isCurrentTicketEditable = await models.Ticket.isEditable(params.currentTicket.currentTicketId); + if (!isCurrentTicketEditable) + throw new UserError(`The sales of the current ticket can't be modified`); - for (let i = 0; i < params.sales.length; i++) - await Self.app.models.Sale.update({id: params.sales[i].id}, {ticketFk: params.newTicketFk}); + if (params.receiverTicket.id) { + let isReceiverTicketEditable = await models.Ticket.isEditable(params.receiverTicket.id); + if (!isReceiverTicketEditable) + throw new UserError(`The sales of the receiver ticket can't be modified`); + } + + if (!params.receiverTicket.id) { + let travelDates = await models.Agency.getFirstShipped(params.currentTicket); + + if (!travelDates) + throw new UserError(`Invalid parameters to create a new ticket`); + let shipped = new Date(travelDates.shipped); + let landed = new Date(travelDates.landed); + + newTicketData = { + clientFk: params.currentTicket.clientFk, + addressFk: params.currentTicket.addressFk, + agencyModeFk: params.currentTicket.agencyModeFk, + warehouseFk: params.currentTicket.warehouseFk, + shipped: shipped, + landed: landed, + userId: userId + }; + } + + let tx = await Self.beginTransaction({}); + + try { + let options = {transaction: tx}; + + if (!params.receiverTicket.id) + receiverTicket = await models.Ticket.new(ctx, newTicketData, options); + + let promises = []; + for (let sale of params.sales) { + promises.push( + models.Sale.update( + {id: sale.id}, + {ticketFk: receiverTicket.id}, + options + ) + ); + } + + if (params.removeEmptyTicket) + promises.push(currentTicket.updateAttributes({isDeleted: true}, options)); + + await Promise.all(promises); + await tx.commit(); + + return receiverTicket; + } catch (error) { + await tx.rollback(); + throw error; + } }; }; diff --git a/modules/ticket/back/methods/sale/specs/moveToTicket.spec.js b/modules/ticket/back/methods/sale/specs/moveToTicket.spec.js index 1cf540a1b..8380ebb13 100644 --- a/modules/ticket/back/methods/sale/specs/moveToTicket.spec.js +++ b/modules/ticket/back/methods/sale/specs/moveToTicket.spec.js @@ -1,14 +1,22 @@ const app = require('vn-loopback/server/server'); describe('sale moveToTicket()', () => { + let createdTicketId; + + afterAll(async done => { + await app.models.Ticket.destroyById(createdTicketId); + done(); + }); + it('should throw an error if the ticket is not editable', async() => { + const ctx = {req: {accessToken: {userId: 101}}}; let error; - let params = {actualTicketFk: 10}; + const params = {currentTicket: {currentTicketId: 10}}; - await app.models.Sale.moveToTicket(params) + await app.models.Sale.moveToTicket(ctx, params) .catch(response => { - expect(response.message).toEqual(`The sales of this ticket can't be modified`); + expect(response.message).toEqual(`The sales of the current ticket can't be modified`); error = response; }); @@ -16,64 +24,98 @@ describe('sale moveToTicket()', () => { }); it('should throw an error if the receiving ticket is not editable', async() => { + const ctx = {req: {accessToken: {userId: 101}}}; let error; - let params = {actualTicketFk: 1, newTicketFk: 10}; + const params = {currentTicket: {currentTicketId: 16}, receiverTicket: {id: 1}}; - await app.models.Sale.moveToTicket(params) + await app.models.Sale.moveToTicket(ctx, params) .catch(response => { - expect(response.message).toEqual(`The sales of this ticket can't be modified`); + expect(response.message).toEqual(`The sales of the receiver ticket can't be modified`); error = response; }); expect(error).toBeDefined(); }); - it('should transfer the sales from one ticket to another', async() => { - let senderTicketSales = await app.models.Ticket.getSales(11); - let receiverTicketSales = await app.models.Ticket.getSales(13); + it('should throw an error when attempting to create a new ticket without delivery dates', async() => { + const ctx = {req: {accessToken: {userId: 101}}}; + let error; - expect(senderTicketSales.length).toEqual(2); - expect(receiverTicketSales.length).toEqual(0); + const params = {currentTicket: {currentTicketId: 18}, receiverTicket: {id: undefined}}; + + await app.models.Sale.moveToTicket(ctx, params) + .catch(response => { + expect(response.message).toEqual(`Invalid parameters to create a new ticket`); + error = response; + }); + + expect(error).toBeDefined(); + }); + + it('should transfer the sales from one ticket to a new one', async() => { + const ctx = {req: {accessToken: {userId: 101}}}; + let currentTicket = await app.models.Ticket.findById(11); + currentTicket.currentTicketId = currentTicket.id; + currentTicket.id = undefined; + + let currentTicketSales = await app.models.Ticket.getSales(currentTicket.currentTicketId); + + expect(currentTicketSales.length).toEqual(2); let params = { - actualTicketFk: 11, - newTicketFk: 13, + currentTicket: currentTicket, + receiverTicket: {id: undefined}, sales: [ - {id: 7}, - {id: 8}] + {id: currentTicketSales[0].id}, + {id: currentTicketSales[1].id} + ] }; - await app.models.Sale.moveToTicket(params); + let createdTicket = await app.models.Sale.moveToTicket(ctx, params); + createdTicketId = createdTicket.id; - senderTicketSales = await app.models.Ticket.getSales(11); - receiverTicketSales = await app.models.Ticket.getSales(13); + currentTicketSales = await app.models.Ticket.getSales(currentTicket.currentTicketId); + receiverTicketSales = await app.models.Ticket.getSales(createdTicket.id); - expect(senderTicketSales.length).toEqual(0); + expect(currentTicketSales.length).toEqual(0); expect(receiverTicketSales.length).toEqual(2); }); - it('should transfers back the sales', async() => { - let senderTicketSales = await app.models.Ticket.getSales(13); - let receiverTicketSales = await app.models.Ticket.getSales(11); + it('should transfer back the sales and set the created ticket as deleted', async() => { + const ctx = {req: {accessToken: {userId: 101}}}; + let receiverTicketId = 11; + let currentTicket = await app.models.Ticket.findById(createdTicketId); + currentTicket.currentTicketId = createdTicketId; + currentTicket.id = undefined; - expect(senderTicketSales.length).toEqual(2); + let createdTicket = await app.models.Ticket.findById(createdTicketId); + let createdTicketSales = await app.models.Ticket.getSales(createdTicketId); + let receiverTicketSales = await app.models.Ticket.getSales(receiverTicketId); + + expect(createdTicket.isDeleted).toBeFalsy(); + expect(createdTicketSales.length).toEqual(2); expect(receiverTicketSales.length).toEqual(0); let params = { - actualTicketFk: 13, - newTicketFk: 11, + removeEmptyTicket: true, + currentTicket: currentTicket, + receiverTicket: {id: receiverTicketId}, sales: [ - {id: 7}, - {id: 8}] + {id: createdTicketSales[0].id}, + {id: createdTicketSales[1].id} + ] }; - await app.models.Sale.moveToTicket(params); + await app.models.Sale.moveToTicket(ctx, params); - senderTicketSales = await app.models.Ticket.getSales(13); - receiverTicketSales = await app.models.Ticket.getSales(11); + createdTicket = await app.models.Ticket.findById(createdTicketId); - expect(senderTicketSales.length).toEqual(0); + createdTicketSales = await app.models.Ticket.getSales(createdTicketId); + receiverTicketSales = await app.models.Ticket.getSales(receiverTicketId); + + expect(createdTicket.isDeleted).toBeTruthy(); + expect(createdTicketSales.length).toEqual(0); expect(receiverTicketSales.length).toEqual(2); }); }); diff --git a/modules/ticket/back/methods/sale/specs/priceDifference.spec.js b/modules/ticket/back/methods/sale/specs/priceDifference.spec.js index 164e05d17..4c0cb1566 100644 --- a/modules/ticket/back/methods/sale/specs/priceDifference.spec.js +++ b/modules/ticket/back/methods/sale/specs/priceDifference.spec.js @@ -7,18 +7,18 @@ describe('sale priceDifference()', () => { tomorrow.setDate(tomorrow.getDate() + 1); let data = { landed: tomorrow, - addressFk: 121, + addressFk: 126, agencyModeFk: 7, warehouseFk: 1 }; - let result = await app.models.Sale.priceDifference(11, data); + let result = await app.models.Sale.priceDifference(16, data); - expect(result.totalUnitPrice).toEqual(4.03); - expect(result.totalNewPrice).toEqual(4.03); + expect(result.totalUnitPrice).toEqual(215.77); + expect(result.totalNewPrice).toEqual(215.77); expect(result.totalDifference).toEqual(0); }); - it('should return an error if the ticket state is not valid for modifications', async() => { + it('should return an error if the ticket is not editable', async() => { let error; let data = { landed: new Date(), @@ -35,4 +35,3 @@ describe('sale priceDifference()', () => { expect(error).toEqual(new UserError(`The sales of this ticket can't be modified`)); }); }); - diff --git a/modules/ticket/back/methods/sale/specs/updatePrice.spec.js b/modules/ticket/back/methods/sale/specs/updatePrice.spec.js index 6d84781e7..b0c8b8017 100644 --- a/modules/ticket/back/methods/sale/specs/updatePrice.spec.js +++ b/modules/ticket/back/methods/sale/specs/updatePrice.spec.js @@ -1,31 +1,75 @@ const app = require('vn-loopback/server/server'); describe('sale updatePrice()', () => { - it('should throw an error if the price is not a number', async() => { - let error; + let originalSale; + let originalSalesPersonMana; + let createdSaleComponent; + let saleId = 7; + let manaComponentId; - let params = {price: `this price is so wrong!`}; + beforeAll(async done => { + let componentRate = await app.models.ComponentRate.findOne({where: {code: 'mana'}}); + manaComponentId = componentRate.id; + originalSale = await app.models.Sale.findById(saleId); + originalSalesPersonMana = await app.models.WorkerMana.findById(18); - await app.models.Sale.updatePrice(params) + done(); + }); + + afterAll(async done => { + await originalSale.save(); + await app.models.SaleComponent.updateAll({componentFk: manaComponentId, saleFk: saleId}, {value: 0}); + await originalSalesPersonMana.save(); + + done(); + }); + + + it('should throw an error if the ticket is not editable', async() => { + let immutableSaleId = 1; + let price = 5; + + await app.models.Sale.updatePrice(immutableSaleId, price) .catch(response => { - expect(response).toEqual(new Error('The value should be a number')); + expect(response).toEqual(new Error(`The sales of this ticket can't be modified`)); error = response; }); expect(error).toBeDefined(); }); - it(`should throw an error if the price is undefined`, async() => { - let error; + it('should return 0 if the price is an empty string', async() => { + let price = ''; - let params = {ticketFk: 1, price: undefined}; + await app.models.Sale.updatePrice(saleId, price); + let saleUpdated = await app.models.Sale.findById(saleId); - await app.models.Sale.updatePrice(params) - .catch(response => { - expect(response).toEqual(new Error('The value should be a number')); - error = response; - }); + expect(saleUpdated.price).toEqual(0); + }); - expect(error).toBeDefined(); + it('should now set price as a decimal number in a string', async() => { + let price = '8'; + + await app.models.Sale.updatePrice(saleId, price); + let saleUpdated = await app.models.Sale.findById(saleId); + + expect(saleUpdated.price).toEqual(8); + }); + + it('should set price as a decimal number and check the sale has the mana component', async() => { + let price = 5.3; + + await app.models.Sale.updatePrice(saleId, price); + let saleUpdated = await app.models.Sale.findById(saleId); + createdSaleComponent = await app.models.SaleComponent.findOne({where: {saleFk: saleId, componentFk: manaComponentId}}); + + expect(saleUpdated.price).toEqual(price); + expect(createdSaleComponent.value).toEqual(-2.13); + }); + + it('should check that the mana of salesPerson changed', async() => { + let updatedSalesPersonMana = await app.models.WorkerMana.findById(18); + + expect(updatedSalesPersonMana.amount).not.toEqual(originalSalesPersonMana.amount); }); }); diff --git a/modules/ticket/back/methods/sale/updateDiscount.js b/modules/ticket/back/methods/sale/updateDiscount.js deleted file mode 100644 index 641182076..000000000 --- a/modules/ticket/back/methods/sale/updateDiscount.js +++ /dev/null @@ -1,63 +0,0 @@ -let UserError = require('vn-loopback/util/user-error'); - -module.exports = Self => { - Self.remoteMethodCtx('updateDiscount', { - description: 'Changes the discount of a sale', - accessType: 'WRITE', - accepts: [{ - arg: 'params', - type: 'object', - required: true, - description: 'sale ID, newDiscount, price', - http: {source: 'body'} - }], - returns: { - type: 'string', - root: true - }, - http: { - path: `/updateDiscount`, - verb: 'post' - } - }); - - Self.updateDiscount = async(ctx, params) => { - if (isNaN(params.editLines[0].discount)) - throw new UserError(`The value should be a number`); - - let model = Self.app.models; - let ticket = await model.Ticket.findById(params.editLines[0].ticketFk, { - include: { - relation: 'client', - scope: { - fields: ['salesPersonFk'] - } - }, - }); - - if (ticket.refFk) - throw new UserError(`The sales of this ticket can't be modified`); - - let componentToUse; - let usesMana = await model.WorkerMana.findOne({where: {workerFk: ticket.client().salesPersonFk}, fields: 'amount'}); - - if (usesMana) - componentToUse = 37; - else - componentToUse = 34; - - for (let i = 0; i < params.editLines.length; i++) { - let currentLine = await model.Sale.findOne({where: {id: params.editLines[i].id}, fields: 'price'}); - let value = ((-currentLine.price * params.editLines[i].discount) / 100); - await model.SaleComponent.upsert({saleFk: params.editLines[i].id, value: value, componentFk: componentToUse}); - - await model.Sale.update({id: params.editLines[i].id}, {discount: params.editLines[i].discount}); - } - - if (usesMana) { - query = ` - call vn.manaSpellersRequery(?)`; - await Self.rawSql(query, [ticket.client().salesPersonFk]); - } - }; -}; diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index aa4df9d28..e5907aa75 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -1,87 +1,97 @@ let UserError = require('vn-loopback/util/user-error'); module.exports = Self => { - Self.remoteMethodCtx('updatePrice', { - description: 'Changes the discount of a sale', + Self.remoteMethod('updatePrice', { + description: 'Changes the price of a sale', accessType: 'WRITE', - accepts: [{ - arg: 'params', - type: 'object', - required: true, - description: 'sale ID, newPrice', - http: {source: 'body'} - }], + accepts: [ + { + arg: 'id', + description: 'The sale id', + type: 'number', + required: true, + http: {source: 'path'} + }, { + arg: 'newPrice', + description: 'The new price', + type: 'number', + required: true + } + ], returns: { - type: 'string', + type: 'Number', root: true }, http: { - path: `/updatePrice`, + path: `/:id/updatePrice`, verb: 'post' } }); - Self.getTicket = async params => { - let model = Self.app.models; - let thisTicketIsEditable = await model.Ticket.isEditable(params.ticketFk); + Self.updatePrice = async(id, newPrice) => { + let models = Self.app.models; + let tx = await Self.beginTransaction({}); - if (!thisTicketIsEditable) - throw new UserError(`The sales of this ticket can't be modified`); + try { + let options = {transaction: tx}; - return await model.Ticket.find({ - where: { - id: params.ticketFk - }, - include: [{ - relation: 'client', - scope: { - fields: ['salesPersonFk'] + let filter = { + include: { + relation: 'ticket', + scope: { + include: { + relation: 'client', + scope: { + fields: ['salesPersonFk'] + } + }, + fields: ['id', 'clientFk'] + } } - }], - fields: ['id', 'clientFk'] - }); - }; + }; + let sale = await models.Sale.findById(id, filter, options); - Self.updatePrice = async params => { - if (isNaN(params.price)) - throw new UserError(`The value should be a number`); + let isEditable = await models.Ticket.isEditable(sale.ticketFk); + if (!isEditable) + throw new UserError(`The sales of this ticket can't be modified`); - if (!params.price) params.price = 0; + let salesPerson = sale.ticket().client().salesPersonFk; + let usesMana = await models.WorkerMana.findOne({where: {workerFk: salesPerson}, fields: 'amount'}, options); + let componentCode = usesMana ? 'mana' : 'buyerDiscount'; - let model = Self.app.models; + let discount = await models.ComponentRate.findOne({where: {code: componentCode}}, options); + let componentId = discount.id; + let componentValue = newPrice - sale.price; - let ticket = await Self.getTicket(params); - let usesMana = await model.WorkerMana.findOne({where: {workerFk: ticket[0].client().salesPersonFk}, fields: 'amount'}); - let currentLine = await Self.app.models.Sale.findOne({where: {id: params.id}}); + let where = { + componentFk: componentId, + saleFk: id + }; + let saleComponent = await models.SaleComponent.findOne({where}, options); - let componentToUse; - if (usesMana) - componentToUse = 37; - else - componentToUse = 34; - - let value = (params.price - currentLine.price); - - let saleComponent = await Self.app.models.SaleComponent.findOne({ - where: { - componentFk: componentToUse, - saleFk: params.id + if (saleComponent) { + await models.SaleComponent.updateAll(where, { + value: saleComponent.value + componentValue + }, options); + } else { + await models.SaleComponent.create({ + saleFk: id, + componentFk: componentId, + value: componentValue + }, options); } - }); - if (saleComponent) - saleComponent.updateAttributes({value: saleComponent.value + value}); - else { - await Self.app.models.SaleComponent.create({ - saleFk: params.id, - componentFk: componentToUse, - value: value - }); + await sale.updateAttributes({price: newPrice}, options); + + query = `call vn.manaSpellersRequery(?)`; + await Self.rawSql(query, [salesPerson], options); + + await tx.commit(); + + return sale; + } catch (error) { + await tx.rollback(); + throw error; } - - await currentLine.updateAttributes({price: params.price}); - - query = `call vn.manaSpellersRequery(?)`; - await Self.rawSql(query, [ticket[0].client().salesPersonFk]); }; }; diff --git a/modules/ticket/back/methods/ticket-dms/removeFile.js b/modules/ticket/back/methods/ticket-dms/removeFile.js new file mode 100644 index 000000000..52a0c524f --- /dev/null +++ b/modules/ticket/back/methods/ticket-dms/removeFile.js @@ -0,0 +1,33 @@ +module.exports = Self => { + Self.remoteMethodCtx('removeFile', { + description: 'Removes a ticket document', + accessType: 'WRITE', + accepts: { + arg: 'id', + type: 'Number', + description: 'The document id', + http: {source: 'path'} + }, + returns: { + type: 'Object', + root: true + }, + http: { + path: `/:id/removeFile`, + verb: 'POST' + } + }); + + Self.removeFile = async(ctx, id) => { + const models = Self.app.models; + const targetTicketDms = await models.TicketDms.findById(id); + const targetDms = await models.Dms.findById(targetTicketDms.dmsFk); + const trashDmsType = await models.DmsType.findOne({where: {code: 'trash'}}); + + await models.Dms.removeFile(ctx, targetTicketDms.dmsFk); + await targetTicketDms.destroy(); + + return targetDms.updateAttribute('dmsTypeFk', trashDmsType.id); + }; +}; + diff --git a/modules/ticket/back/methods/ticket-dms/specs/removeFile.spec.js b/modules/ticket/back/methods/ticket-dms/specs/removeFile.spec.js new file mode 100644 index 000000000..b1cd5686a --- /dev/null +++ b/modules/ticket/back/methods/ticket-dms/specs/removeFile.spec.js @@ -0,0 +1,18 @@ +const app = require('vn-loopback/server/server'); + +describe('TicketDms removeFile()', () => { + const ticketDmsId = 1; + it(`should return an error for a user without enough privileges`, async() => { + let clientId = 101; + let ctx = {req: {accessToken: {userId: clientId}}}; + + let error; + await app.models.TicketDms.removeFile(ctx, ticketDmsId).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/modules/ticket/back/methods/ticket-request/confirm.js b/modules/ticket/back/methods/ticket-request/confirm.js index cf46ac2c3..79551796d 100644 --- a/modules/ticket/back/methods/ticket-request/confirm.js +++ b/modules/ticket/back/methods/ticket-request/confirm.js @@ -45,20 +45,15 @@ module.exports = Self => { include: {relation: 'ticket'} }); - let query = `CALL vn.getItemVisibleAvailable(?,?,?,?)`; - - let params = [ + let [[stock]] = await Self.rawSql(`CALL vn.getItemVisibleAvailable(?,?,?,?)`, [ ctx.args.itemFk, request.ticket().shipped, request.ticket().warehouseFk, false - ]; - console.log(params); - let [res] = await Self.rawSql(query, params); - let available = res[0].available; - if (!available) - throw new UserError(`That item is not available on that day`); + ]); + if (stock.available < quantity) + throw new UserError(`This item is not available`); if (request.saleFk) { let sale = await models.Sale.findById(request.saleFk); diff --git a/modules/ticket/back/methods/ticket-tracking/changeState.js b/modules/ticket/back/methods/ticket-tracking/changeState.js index f70ae93a5..9a4c63ece 100644 --- a/modules/ticket/back/methods/ticket-tracking/changeState.js +++ b/modules/ticket/back/methods/ticket-tracking/changeState.js @@ -25,26 +25,26 @@ module.exports = Self => { Self.changeState = async(ctx, params) => { let userId = ctx.req.accessToken.userId; - let $ = Self.app.models; + let models = Self.app.models; if (!params.stateFk && !params.code) throw new UserError('State cannot be blank'); if (params.code) { - let state = await $.State.findOne({where: {code: params.code}, fields: ['id']}); + let state = await models.State.findOne({where: {code: params.code}, fields: ['id']}); params.stateFk = state.id; } - let isProduction = await $.Account.hasRole(userId, 'production'); - let isSalesPerson = await $.Account.hasRole(userId, 'salesPerson'); + let isProduction = await models.Account.hasRole(userId, 'production'); + let isSalesPerson = await models.Account.hasRole(userId, 'salesPerson'); - let ticket = await $.TicketState.findById( + let ticket = await models.TicketState.findById( params.ticketFk, {fields: ['stateFk']} ); - let oldState = await $.State.findById(ticket.stateFk); - let newState = await $.State.findById(params.stateFk); + let oldState = await models.State.findById(ticket.stateFk); + let newState = await models.State.findById(params.stateFk); let isAllowed = isProduction || isSalesPerson && oldState.isEditable() @@ -54,10 +54,10 @@ module.exports = Self => { throw new UserError(`You don't have enough privileges`, 'ACCESS_DENIED'); if (newState.code != 'PICKER_DESIGNED') { - let worker = await $.Worker.findOne({where: {userFk: userId}}); + let worker = await models.Worker.findOne({where: {userFk: userId}}); params.workerFk = worker.id; } - return await $.TicketTracking.create(params); + return await models.TicketTracking.create(params); }; }; diff --git a/modules/ticket/back/methods/ticket-weekly/filter.js b/modules/ticket/back/methods/ticket-weekly/filter.js new file mode 100644 index 000000000..7d1b56374 --- /dev/null +++ b/modules/ticket/back/methods/ticket-weekly/filter.js @@ -0,0 +1,70 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; +const buildFilter = require('vn-loopback/util/filter').buildFilter; +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; + +module.exports = Self => { + Self.remoteMethodCtx('filter', { + description: 'Find all instances of the model matched by filter from the data source.', + accessType: 'READ', + accepts: [ + { + arg: 'filter', + type: 'Object', + description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string', + http: {source: 'query'} + }, { + arg: 'search', + type: 'String', + description: `If it's and integer searchs by id, otherwise it searchs by client id`, + http: {source: 'query'} + } + ], + returns: { + type: ['Object'], + root: true + }, + http: { + path: `/filter`, + verb: 'GET' + } + }); + + Self.filter = async(ctx, filter) => { + let conn = Self.dataSource.connector; + + let where = buildFilter(ctx.args, (param, value) => { + switch (param) { + case 'search': + return {or: [ + {ticketFk: value}, + {clientFk: value} + ]}; + } + }); + + filter = mergeFilters(ctx.args.filter, {where}); + + let stmts = []; + let stmt; + + stmt = new ParameterizedSQL( + `SELECT t.id AS ticketFk, c.id AS clientFk, c.name AS clientName, tw.weekDay, + wh.name AS warehouseName, w.id AS workerFk, u.nickName + FROM ticketWeekly tw + JOIN ticket t ON t.id = tw.ticketFk + JOIN client c ON c.id = t.clientFk + JOIN worker w ON w.id = c.salesPersonFk + JOIN account.user u ON u.id = w.userFk + JOIN warehouse wh ON wh.id = t.warehouseFk` + ); + + + stmt.merge(conn.makeSuffix(filter)); + let itemsIndex = stmts.push(stmt) - 1; + + let sql = ParameterizedSQL.join(stmts, ';'); + let result = await conn.executeStmt(sql); + return itemsIndex === 0 ? result : result[itemsIndex]; + }; +}; diff --git a/modules/ticket/back/methods/ticket/addSale.js b/modules/ticket/back/methods/ticket/addSale.js new file mode 100644 index 000000000..dd3bdd218 --- /dev/null +++ b/modules/ticket/back/methods/ticket/addSale.js @@ -0,0 +1,71 @@ + +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethod('addSale', { + description: 'Inserts a new sale for the current ticket', + accessType: 'WRITE', + accepts: [{ + arg: 'id', + type: 'Number', + required: true, + description: 'The ticket id', + http: {source: 'path'} + }, + { + arg: 'itemId', + type: 'Number', + required: true + }, + { + arg: 'quantity', + type: 'Number', + required: true + }], + returns: { + type: 'Object', + root: true + }, + http: { + path: `/:id/addSale`, + verb: 'POST' + } + }); + + Self.addSale = async(id, itemId, quantity) => { + const models = Self.app.models; + + const isEditable = await models.Ticket.isEditable(id); + if (!isEditable) + throw new UserError(`The sales of this ticket can't be modified`); + + const item = await models.Item.findById(itemId); + const ticket = await models.Ticket.findById(id); + + const shouldRefresh = false; + const [[stock]] = await Self.rawSql(`CALL vn.itemGetVisibleAvailable(?, ?, ?, ?)`, [ + itemId, + ticket.shipped, + ticket.warehouseFk, + shouldRefresh + ]); + + if (stock.available < quantity) + throw new UserError(`This item is not available`); + + const newSale = await models.Sale.create({ + ticketFk: id, + itemFk: item.id, + concept: item.name, + quantity: quantity + }); + + await Self.rawSql('CALL vn.ticketCalculateSale(?)', [newSale.id]); + + return models.Sale.findById(newSale.id, { + include: { + relation: 'item' + } + }); + }; +}; diff --git a/modules/ticket/back/methods/ticket/checkEmptiness.js b/modules/ticket/back/methods/ticket/checkEmptiness.js new file mode 100644 index 000000000..2cc70deda --- /dev/null +++ b/modules/ticket/back/methods/ticket/checkEmptiness.js @@ -0,0 +1,37 @@ +module.exports = function(Self) { + Self.remoteMethod('checkEmptiness', { + description: 'Checks if the ticket has no packages, componenets and purchase requests', + accessType: 'READ', + accepts: [ + { + arg: 'id', + type: 'number', + required: true, + description: 'Ticket id', + http: {source: 'path'} + } + ], + returns: { + arg: 'data', + type: 'boolean', + root: true + }, + http: { + path: `/:id/checkEmptiness`, + verb: 'get' + } + }); + + Self.checkEmptiness = async id => { + const packages = await Self.app.models.TicketPackaging.find({where: {ticketFk: id}}); + const services = await Self.app.models.TicketService.find({where: {ticketFk: id}}); + const purchaseRequests = await Self.app.models.TicketRequest.find({where: {ticketFk: id}}); + + emptyTicket = !packages.length && !services.length && !purchaseRequests.length; + + if (emptyTicket) + return true; + + return false; + }; +}; diff --git a/modules/ticket/back/methods/ticket/deleted.js b/modules/ticket/back/methods/ticket/delete.js similarity index 63% rename from modules/ticket/back/methods/ticket/deleted.js rename to modules/ticket/back/methods/ticket/delete.js index a7fa29a50..bca9e0428 100644 --- a/modules/ticket/back/methods/ticket/deleted.js +++ b/modules/ticket/back/methods/ticket/delete.js @@ -1,7 +1,7 @@ const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { - Self.remoteMethodCtx('deleted', { + Self.remoteMethodCtx('delete', { description: 'Sets the isDeleted value of a ticket to 1', accessType: 'WRITE', accepts: [{ @@ -16,25 +16,25 @@ module.exports = Self => { root: true }, http: { - path: `/deleted`, + path: `/delete`, verb: 'post' } }); - Self.deleted = async(ctx, params) => { + Self.delete = async(ctx, params) => { let claimOfATicket = await Self.app.models.Claim.findOne({where: {ticketFk: params.id}}); if (claimOfATicket) throw new UserError('You must delete the claim id %d first', 'DELETE_CLAIM_FIRST', claimOfATicket.id); let currentTicket = await Self.app.models.Ticket.findById(params.id); - await currentTicket.updateAttributes({isDeleted: '1'}); + await currentTicket.updateAttributes({isDeleted: true}); - if (ctx.req.accessToken) { - let token = ctx.req.accessToken; - let currentUserId = token && token.userId; - let worker = await Self.app.models.Worker.findOne({where: {userFk: currentUserId}}); - params.workerFk = worker.id; - } - return await Self.app.models.TicketTracking.create({ticketFk: params.id, stateFk: 17, workerFk: params.workerFk}); + let userId = ctx.req.accessToken.userId; + let worker = await Self.app.models.Worker.findOne({where: {userFk: userId}}); + params.workerFk = worker.id; + let state = await Self.app.models.State.findOne({where: {code: 'ERASED'}}); + + + return await Self.app.models.TicketTracking.create({ticketFk: params.id, stateFk: state.id, workerFk: params.workerFk}); }; }; diff --git a/modules/ticket/back/methods/ticket/filter.js b/modules/ticket/back/methods/ticket/filter.js index c006f0985..7bf4cf4de 100644 --- a/modules/ticket/back/methods/ticket/filter.js +++ b/modules/ticket/back/methods/ticket/filter.js @@ -120,6 +120,10 @@ module.exports = Self => { if (ctx.args && (ctx.args.mine || ctx.args.myTeam)) ctx.args.teamIds = teamIds; + if (ctx.args && ctx.args.to) { + const dateTo = ctx.args.to; + dateTo.setHours(23, 59, 0, 0); + } let orderTickets = []; if (ctx.args && ctx.args.orderFk) { @@ -212,7 +216,8 @@ module.exports = Self => { (INDEX (ticketFk)) ENGINE = MEMORY SELECT id ticketFk, clientFk, warehouseFk, shipped - FROM tmp.filter`); + FROM tmp.filter + WHERE alertLevel = 0 OR alertLevel IS NULL`); stmts.push('CALL ticketGetProblems()'); stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.ticket'); diff --git a/modules/ticket/back/methods/ticket/getSales.js b/modules/ticket/back/methods/ticket/getSales.js index 25b8aaff3..0c33d9db9 100644 --- a/modules/ticket/back/methods/ticket/getSales.js +++ b/modules/ticket/back/methods/ticket/getSales.js @@ -51,7 +51,7 @@ module.exports = Self => { claimMap[claim.saleFk] = claim; for (line of lines) { - line.tags = map[line.itemFk]; + line.item = map[line.itemFk]; line.claim = claimMap[line.id]; } diff --git a/modules/ticket/back/methods/ticket/getSalesPersonMana.js b/modules/ticket/back/methods/ticket/getSalesPersonMana.js index 1289374cd..8ac1d7a38 100644 --- a/modules/ticket/back/methods/ticket/getSalesPersonMana.js +++ b/modules/ticket/back/methods/ticket/getSalesPersonMana.js @@ -19,10 +19,7 @@ module.exports = Self => { }); Self.getSalesPersonMana = async ticketFk => { - let ticket = await Self.app.models.Ticket.find({ - where: { - id: ticketFk - }, + let ticket = await Self.app.models.Ticket.findById(ticketFk, { include: [{ relation: 'client', scope: { @@ -31,7 +28,11 @@ module.exports = Self => { }], fields: ['id', 'clientFk'] }); - let mana = await Self.app.models.WorkerMana.findOne({where: {workerFk: ticket[0].client().salesPersonFk}, fields: 'amount'}); + + if (!ticket) + return 0; + + let mana = await Self.app.models.WorkerMana.findOne({where: {workerFk: ticket.client().salesPersonFk}, fields: 'amount'}); return mana ? mana.amount : 0; }; diff --git a/modules/ticket/back/methods/ticket/isEditable.js b/modules/ticket/back/methods/ticket/isEditable.js index 95805948a..b8cb9e181 100644 --- a/modules/ticket/back/methods/ticket/isEditable.js +++ b/modules/ticket/back/methods/ticket/isEditable.js @@ -24,9 +24,8 @@ module.exports = Self => { where: {ticketFk: ticketFk} }); let alertLevel = state ? state.alertLevel : null; - let exists = await Self.app.models.Ticket.findOne({ - where: {id: ticketFk}, - fields: ['isDeleted', 'clientFk'], + let ticket = await Self.app.models.Ticket.findById(ticketFk, { + fields: ['isDeleted', 'clientFk', 'refFk'], include: [{ relation: 'client', scope: { @@ -37,10 +36,12 @@ module.exports = Self => { }] }); - if (exists && exists.client().type().code !== 'normal') - return true; + const isDeleted = ticket && ticket.isDeleted; + const isOnDelivery = (alertLevel && alertLevel > 0); + const isNotNormalClient = ticket && ticket.client().type().code == 'normal'; + const isInvoiced = ticket && ticket.refFk; - if (!exists || exists.isDeleted == 1 || (alertLevel && alertLevel > 0)) + if (!ticket || ((isDeleted || isOnDelivery) && isNotNormalClient) || isInvoiced) return false; return true; diff --git a/modules/ticket/back/methods/ticket/makeInvoice.js b/modules/ticket/back/methods/ticket/makeInvoice.js index f24e17e70..adffdd365 100644 --- a/modules/ticket/back/methods/ticket/makeInvoice.js +++ b/modules/ticket/back/methods/ticket/makeInvoice.js @@ -26,19 +26,20 @@ module.exports = function(Self) { Self.makeInvoice = async(ctx, id) => { let userId = ctx.req.accessToken.userId; - let $ = Self.app.models; + let models = Self.app.models; let tx = await Self.beginTransaction({}); try { let options = {transaction: tx}; - let ticket = await $.Ticket.findById(id, {fields: ['id', 'clientFk', 'companyFk']}); + let filter = {fields: ['id', 'clientFk', 'companyFk']}; + let ticket = await models.Ticket.findById(id, filter, options); - let clientCanBeInvoiced = await $.Client.canBeInvoiced(ticket.clientFk); + let clientCanBeInvoiced = await models.Client.canBeInvoiced(ticket.clientFk); if (!clientCanBeInvoiced) throw new UserError(`This client can't be invoiced`); - let ticketCanBeInvoiced = await $.Ticket.canBeInvoiced(ticket.id); + let ticketCanBeInvoiced = await models.Ticket.canBeInvoiced(ticket.id); if (!ticketCanBeInvoiced) throw new UserError(`This ticket can't be invoiced`); @@ -50,9 +51,12 @@ module.exports = function(Self) { query = `CALL vn.invoiceFromTicket(?)`; await Self.rawSql(query, [ticket.id], options); - query = `CALL vn.invoiceOutMake(?, ?, @invoiceId); - SELECT @invoiceId AS invoiceId;`; - result = await Self.rawSql(query, [serial, null], options); + result = await Self.rawSql( + `CALL vn.invoiceOutMake(?, ?, @invoiceId); + SELECT @invoiceId AS invoiceId;`, + [serial, null], + options + ); let invoice = result[1][0].invoiceId; if (serial != 'R' && invoice) { @@ -60,7 +64,7 @@ module.exports = function(Self) { await Self.rawSql(query, [invoice], options); } - let user = await Self.app.models.Worker.findOne({where: {userFk: userId}}); + let user = await models.Worker.findOne({where: {userFk: userId}}, options); query = `INSERT INTO printServerQueue(reportFk, param1, workerFk) VALUES (?, ?, ?)`; await Self.rawSql(query, [3, invoice, user.id], options); diff --git a/modules/ticket/back/methods/ticket/new.js b/modules/ticket/back/methods/ticket/new.js index 9be919689..defa25963 100644 --- a/modules/ticket/back/methods/ticket/new.js +++ b/modules/ticket/back/methods/ticket/new.js @@ -22,8 +22,8 @@ module.exports = Self => { }); Self.new = async(ctx, params, options) => { - let $ = Self.app.models; - let address = await $.Address.findOne({ + let models = Self.app.models; + let address = await models.Address.findOne({ where: {id: params.addressFk}, fields: ['id', 'clientFk'], include: [ @@ -42,12 +42,9 @@ module.exports = Self => { let agencyMode; if (params && params.agencyModeFk) - agencyMode = await $.AgencyMode.findById(params.agencyModeFk); + agencyMode = await models.AgencyMode.findById(params.agencyModeFk); if (address.client().type().code === 'normal' && (!agencyMode || agencyMode.code != 'refund')) { - if (address.client().isFreezed) - throw new UserError(`You can't create a ticket for a frozen client`); - if (!address.client().isActive) throw new UserError(`You can't create a ticket for a inactive client`); } @@ -64,7 +61,7 @@ module.exports = Self => { try { if (!params.shipped && params.landed) { - params.shipped = await $.Agency.getShipped(ctx, { + params.shipped = await models.Agency.getShipped(ctx, { landed: params.landed, addressFk: address.id, agencyModeFk: params.agencyModeFk, @@ -73,7 +70,7 @@ module.exports = Self => { } if (params.shipped && !params.landed) { - const landedResult = await $.Agency.getLanded(ctx, { + const landedResult = await models.Agency.getLanded(ctx, { shipped: params.shipped, addressFk: address.id, agencyModeFk: params.agencyModeFk, @@ -99,7 +96,7 @@ module.exports = Self => { params.userId ], options); - let ticket = await $.Ticket.findById(result[1][0].newTicketId, null, options); + let ticket = await models.Ticket.findById(result[1][0].newTicketId, null, options); let cleanInstance = JSON.parse(JSON.stringify(ticket)); let logRecord = { @@ -112,7 +109,7 @@ module.exports = Self => { newInstance: cleanInstance }; - await $.TicketLog.create(logRecord, options); + await models.TicketLog.create(logRecord, options); if (tx) await tx.commit(); return await ticket; diff --git a/modules/ticket/back/methods/ticket/specs/addSale.spec.js b/modules/ticket/back/methods/ticket/specs/addSale.spec.js new file mode 100644 index 000000000..b035a74db --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/addSale.spec.js @@ -0,0 +1,49 @@ +const app = require('vn-loopback/server/server'); + +describe('ticket addSale()', () => { + const ticketId = 13; + let newSale; + + afterAll(async done => { + const sale = await app.models.Sale.findById(newSale.id); + await sale.destroy(); + + done(); + }); + + it('should create a new sale for the ticket with id 13', async() => { + const itemId = 4; + const quantity = 10; + newSale = await app.models.Ticket.addSale(ticketId, itemId, quantity); + + expect(newSale.itemFk).toEqual(4); + }); + + it('should not be able to add a sale if the item quantity is not available', async() => { + const itemId = 11; + const quantity = 10; + + let error; + await app.models.Ticket.addSale(ticketId, itemId, quantity).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`This item is not available`); + }); + + expect(error).toBeDefined(); + }); + + it('should not be able to add a sale if the ticket is not editable', async() => { + const notEditableTicketId = 1; + const itemId = 4; + const quantity = 10; + let error; + await app.models.Ticket.addSale(notEditableTicketId, itemId, quantity).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`The sales of this ticket can't be modified`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/modules/ticket/back/methods/ticket/specs/checkEmptiness.spec.js b/modules/ticket/back/methods/ticket/specs/checkEmptiness.spec.js new file mode 100644 index 000000000..1d67f4c98 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/checkEmptiness.spec.js @@ -0,0 +1,27 @@ +const app = require('vn-loopback/server/server'); + +describe('ticket checkEmptiness()', () => { + it('should return false if the ticket contains any packages', async() => { + let result = await app.models.Ticket.checkEmptiness(3); + + expect(result).toBeFalsy(); + }); + + it('should return false if the ticket contains any services', async() => { + let result = await app.models.Ticket.checkEmptiness(8); + + expect(result).toBeFalsy(); + }); + + it('should return false if the ticket contains any purchase request', async() => { + let result = await app.models.Ticket.checkEmptiness(11); + + expect(result).toBeFalsy(); + }); + + it('should return true if the ticket does not contain any packages, services or purchase request', async() => { + let result = await app.models.Ticket.checkEmptiness(4); + + expect(result).toBeTruthy(); + }); +}); diff --git a/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js b/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js index 0d27d69b3..347ee9e7e 100644 --- a/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js +++ b/modules/ticket/back/methods/ticket/specs/componentUpdate.spec.js @@ -1,19 +1,23 @@ const app = require('vn-loopback/server/server'); describe('ticket componentUpdate()', () => { - let firstvalueBeforeChange; - let secondvalueBeforeChange; - let componentOfSaleSeven = `SELECT value FROM vn.saleComponent - WHERE saleFk = 7 AND componentFk = 15`; - - let componentOfSaleEight = `SELECT value FROM vn.saleComponent - WHERE saleFk = 8 AND componentFk = 15`; + const ticketId = 11; const today = new Date(); const tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); - let ticketId = 11; + + let deliveryComponentId; + let firstvalueBeforeChange; + let secondvalueBeforeChange; + let componentOfSaleSeven; + let componentOfSaleEight; beforeAll(async done => { + let deliveryComponenet = await app.models.ComponentRate.findOne({where: {code: 'delivery'}}); + deliveryComponentId = deliveryComponenet.id; + componentOfSaleSeven = `SELECT value FROM vn.saleComponent WHERE saleFk = 7 AND componentFk = ${deliveryComponentId}`; + componentOfSaleEight = `SELECT value FROM vn.saleComponent WHERE saleFk = 8 AND componentFk = ${deliveryComponentId}`; + [componentValue] = await app.models.SaleComponent.rawSql(componentOfSaleSeven); firstvalueBeforeChange = componentValue.value; @@ -25,9 +29,9 @@ describe('ticket componentUpdate()', () => { it('should change the agencyMode to modify the sale components value', async() => { let data = { - clientFk: 101, + clientFk: 102, agencyModeFk: 8, - addressFk: 121, + addressFk: 122, warehouseFk: 1, companyFk: 442, shipped: today, @@ -53,9 +57,9 @@ describe('ticket componentUpdate()', () => { it('should change the agencyMode to go back to the originals sale components value', async() => { let data = { - clientFk: 101, + clientFk: 102, agencyModeFk: 7, - addressFk: 121, + addressFk: 122, warehouseFk: 1, companyFk: 442, shipped: today, diff --git a/modules/ticket/back/methods/ticket/specs/deleted.spec.js b/modules/ticket/back/methods/ticket/specs/delete.spec.js similarity index 92% rename from modules/ticket/back/methods/ticket/specs/deleted.spec.js rename to modules/ticket/back/methods/ticket/specs/delete.spec.js index 4127a56b7..1b017e989 100644 --- a/modules/ticket/back/methods/ticket/specs/deleted.spec.js +++ b/modules/ticket/back/methods/ticket/specs/delete.spec.js @@ -24,7 +24,7 @@ describe('ticket deleted()', () => { it('should set a ticket to deleted and log the change on TicketState table', async() => { let ctx = {req: {accessToken: {userId: 9}}}; let params = {id: ticket.id}; - await app.models.Ticket.deleted(ctx, params); + await app.models.Ticket.delete(ctx, params); let deletedTicket = await app.models.Ticket.findOne({where: {id: ticket.id}, fields: ['isDeleted']}); let changedState = await app.models.TicketState.findOne({where: {ticketFk: ticket.id}}); @@ -39,7 +39,7 @@ describe('ticket deleted()', () => { let error; try { - await app.models.Ticket.deleted(ctx, params); + await app.models.Ticket.delete(ctx, params); } catch (e) { error = e; } diff --git a/modules/ticket/back/methods/ticket/specs/filter.spec.js b/modules/ticket/back/methods/ticket/specs/filter.spec.js index 648cfe3ba..357ef2bdb 100644 --- a/modules/ticket/back/methods/ticket/specs/filter.spec.js +++ b/modules/ticket/back/methods/ticket/specs/filter.spec.js @@ -1,13 +1,13 @@ const app = require('vn-loopback/server/server'); describe('ticket filter()', () => { - it('should call the filter method', async() => { + it('should return the tickets matching the filter', async() => { let ctx = {req: {accessToken: {userId: 9}}, args: {}}; - let filter = {order: 'shipped DESC'}; + let filter = {order: 'id DESC'}; let result = await app.models.Ticket.filter(ctx, filter); let ticketId = result[0].id; - expect(ticketId).toEqual(15); + expect(ticketId).toEqual(24); }); }); diff --git a/modules/ticket/back/methods/ticket/specs/getSales.spec.js b/modules/ticket/back/methods/ticket/specs/getSales.spec.js index cefa9ff4d..4e57f570f 100644 --- a/modules/ticket/back/methods/ticket/specs/getSales.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getSales.spec.js @@ -5,10 +5,10 @@ describe('ticket getSales()', () => { let sales = await app.models.Ticket.getSales(16); expect(sales.length).toEqual(4); - expect(sales[0].tags).toBeDefined(); - expect(sales[1].tags).toBeDefined(); - expect(sales[2].tags).toBeDefined(); - expect(sales[3].tags).toBeDefined(); + expect(sales[0].item).toBeDefined(); + expect(sales[1].item).toBeDefined(); + expect(sales[2].item).toBeDefined(); + expect(sales[3].item).toBeDefined(); expect(sales[0].claim).toBeDefined(); }); }); diff --git a/modules/ticket/back/methods/ticket/specs/getSalespersonMana.spec.js b/modules/ticket/back/methods/ticket/specs/getSalespersonMana.spec.js index 3d7e084be..84e958dfa 100644 --- a/modules/ticket/back/methods/ticket/specs/getSalespersonMana.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getSalespersonMana.spec.js @@ -4,11 +4,11 @@ describe('ticket getSalesPersonMana()', () => { it('should get the mana of a salesperson of a given ticket', async() => { let mana = await app.models.Ticket.getSalesPersonMana(1); - expect(mana).toEqual(221); + expect(mana).toEqual(124); }); - it('should return 0 if the given ticket does not exists', async() => { - let mana = await app.models.Ticket.getSalesPersonMana(20); + it('should return 0 if the given ticket does not exist', async() => { + let mana = await app.models.Ticket.getSalesPersonMana(99); expect(mana).toEqual(0); }); diff --git a/modules/ticket/back/methods/ticket/specs/getTaxes.spec.js b/modules/ticket/back/methods/ticket/specs/getTaxes.spec.js index 2d8488cd3..74f336bbd 100644 --- a/modules/ticket/back/methods/ticket/specs/getTaxes.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getTaxes.spec.js @@ -4,6 +4,6 @@ describe('ticket getTaxes()', () => { it('should return the tax of a given ticket', async() => { let result = await app.models.Ticket.getTaxes(1); - expect(result[0].tax).toEqual(7.64); + expect(result[0].tax).toEqual(77.54); }); }); diff --git a/modules/ticket/back/methods/ticket/specs/getTotal.spec.js b/modules/ticket/back/methods/ticket/specs/getTotal.spec.js index bcdcd4889..c3494bba9 100644 --- a/modules/ticket/back/methods/ticket/specs/getTotal.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getTotal.spec.js @@ -4,11 +4,11 @@ describe('ticket getTotal()', () => { it('should return the total of a ticket', async() => { let result = await app.models.Ticket.getTotal(1); - expect(result).toEqual(158.09); + expect(result).toEqual(893.87); }); it(`should return zero if the ticket doesn't have lines`, async() => { - let result = await app.models.Ticket.getTotal(13); + let result = await app.models.Ticket.getTotal(21); expect(result).toEqual(0); }); diff --git a/modules/ticket/back/methods/ticket/specs/getTotalVolume.spec.js b/modules/ticket/back/methods/ticket/specs/getTotalVolume.spec.js index d1ba56e84..a99dd6578 100644 --- a/modules/ticket/back/methods/ticket/specs/getTotalVolume.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getTotalVolume.spec.js @@ -4,7 +4,7 @@ describe('ticket getTotalVolume()', () => { it('should return the total volume of a ticket', async() => { let ticketFk = 1; - let expectedResult = 0.066; + let expectedResult = 1.562; let result = await app.models.Ticket.getTotalVolume(ticketFk); diff --git a/modules/ticket/back/methods/ticket/specs/getVAT.spec.js b/modules/ticket/back/methods/ticket/specs/getVAT.spec.js index 70fa0fa39..8ba2a3285 100644 --- a/modules/ticket/back/methods/ticket/specs/getVAT.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getVAT.spec.js @@ -1,17 +1,10 @@ const app = require('vn-loopback/server/server'); describe('ticket getVAT()', () => { - it('should call the getVAT method and return the response', async() => { + it('should return the ticket VAT', async() => { await app.models.Ticket.getVAT(1) .then(response => { - expect(response).toEqual(20.49); - }); - }); - - it(`should call the getVAT method and return zero if doesn't have lines`, async() => { - await app.models.Ticket.getVAT(13) - .then(response => { - expect(response).toEqual(0); + expect(response).toEqual(84.64); }); }); }); diff --git a/modules/ticket/back/methods/ticket/specs/getVolume.spec.js b/modules/ticket/back/methods/ticket/specs/getVolume.spec.js index b512a978b..8acf673af 100644 --- a/modules/ticket/back/methods/ticket/specs/getVolume.spec.js +++ b/modules/ticket/back/methods/ticket/specs/getVolume.spec.js @@ -5,7 +5,7 @@ describe('ticket getVolume()', () => { let ticketFk = 1; await app.models.Ticket.getVolume(ticketFk) .then(response => { - expect(response[0].m3).toEqual(0.04); + expect(response[0].m3).toEqual(1.09); }); }); }); diff --git a/modules/ticket/back/methods/ticket/specs/isEditable.spec.js b/modules/ticket/back/methods/ticket/specs/isEditable.spec.js index 87523dbf1..328de4827 100644 --- a/modules/ticket/back/methods/ticket/specs/isEditable.spec.js +++ b/modules/ticket/back/methods/ticket/specs/isEditable.spec.js @@ -1,25 +1,25 @@ const app = require('vn-loopback/server/server'); describe('ticket isEditable()', () => { - it('should return false if the ticket given is not editable', async () => { + it('should return false if the given ticket is not editable', async() => { let result = await app.models.Ticket.isEditable(2); expect(result).toEqual(false); }); - it('should return false if the ticket given does not exist', async () => { + it('should return false if the given ticket does not exist', async() => { let result = await app.models.Ticket.isEditable(99999); expect(result).toEqual(false); }); - it('should return false if the ticket given isDeleted', async () => { - let result = await app.models.Ticket.isEditable(21); + it('should return false if the given ticket isDeleted', async() => { + let result = await app.models.Ticket.isEditable(19); expect(result).toEqual(false); }); - it('should return true if the ticket given is editable', async () => { + it('should return true if the given ticket is editable', async() => { let result = await app.models.Ticket.isEditable(16); expect(result).toEqual(true); diff --git a/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js b/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js index b33b92e13..6725c379a 100644 --- a/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js +++ b/modules/ticket/back/methods/ticket/specs/makeInvoice.spec.js @@ -2,24 +2,24 @@ const app = require('vn-loopback/server/server'); describe('ticket makeInvoice()', () => { let invoice; + let ticketId = 11; afterAll(async done => { let ticket = await app.models.Ticket.findById(11); - ticket.updateAttributes({refFk: null}); + await ticket.updateAttributes({refFk: null}); let ticketTracking = await app.models.TicketTracking.findOne({order: 'id DESC', limit: 1}); - ticketTracking.destroy(); + await ticketTracking.destroy(); let invoiceOut = await app.models.InvoiceOut.findById(invoice.invoiceFk); - invoiceOut.destroy(); + await invoiceOut.destroy(); done(); }); it('should invoice a ticket', async() => { let ctx = {req: {accessToken: {userId: 9}}}; - let ticketFk = 11; - invoice = await app.models.Ticket.makeInvoice(ctx, ticketFk); + invoice = await app.models.Ticket.makeInvoice(ctx, ticketId); expect(invoice.invoiceFk).not.toBeNaN(); expect(invoice.serial).toEqual('T'); @@ -27,10 +27,9 @@ describe('ticket makeInvoice()', () => { it('should not invoice an already invoiced ticket', async() => { let ctx = {req: {accessToken: {userId: 9}}}; - let ticketFk = 11; let error; - await app.models.Ticket.makeInvoice(ctx, ticketFk).catch(e => { + await app.models.Ticket.makeInvoice(ctx, ticketId).catch(e => { error = e; }).finally(() => { expect(error.message).toEqual(`This ticket can't be invoiced`); diff --git a/modules/ticket/back/methods/ticket/specs/new.spec.js b/modules/ticket/back/methods/ticket/specs/new.spec.js index 9b1c43c57..80147c2f2 100644 --- a/modules/ticket/back/methods/ticket/specs/new.spec.js +++ b/modules/ticket/back/methods/ticket/specs/new.spec.js @@ -13,18 +13,6 @@ describe('ticket new()', () => { done(); }); - it('should throw an error if the client is frozen', async() => { - let error; - let params = {addressFk: 121}; - - await app.models.Ticket.new(ctx, params) - .catch(e => { - error = e; - }); - - expect(error).toEqual(new UserError(`You can't create a ticket for a frozen client`)); - }); - it('should throw an error if the client isnt frozen and isnt active', async() => { let error; let params = {addressFk: 6}; diff --git a/modules/ticket/back/methods/ticket/specs/subtotal.spec.js b/modules/ticket/back/methods/ticket/specs/subtotal.spec.js index c204f806a..bd706b6b5 100644 --- a/modules/ticket/back/methods/ticket/specs/subtotal.spec.js +++ b/modules/ticket/back/methods/ticket/specs/subtotal.spec.js @@ -4,11 +4,11 @@ describe('ticket subtotal()', () => { it('should return the subtotal of a ticket', async() => { let result = await app.models.Ticket.subtotal(1); - expect(result).toEqual(137.60); + expect(result).toEqual(809.23); }); - it(`should return zero if the ticket doesn't have lines`, async() => { - let result = await app.models.Ticket.subtotal(13); + it(`should return 0 if the ticket doesn't have lines`, async() => { + let result = await app.models.Ticket.subtotal(21); expect(result).toEqual(0.00); }); diff --git a/modules/ticket/back/methods/ticket/specs/summary.spec.js b/modules/ticket/back/methods/ticket/specs/summary.spec.js index 2041555ba..c67db0520 100644 --- a/modules/ticket/back/methods/ticket/specs/summary.spec.js +++ b/modules/ticket/back/methods/ticket/specs/summary.spec.js @@ -5,7 +5,7 @@ describe('ticket summary()', () => { let result = await app.models.Ticket.summary(1); expect(result.id).toEqual(1); - expect(result.nickname).toEqual('address 21'); + expect(result.nickname).toEqual('Bat cave'); }); it('should return a summary object containing sales from 1 ticket', async() => { @@ -17,13 +17,13 @@ describe('ticket summary()', () => { it('should return a summary object containing subtotal for 1 ticket', async() => { let result = await app.models.Ticket.summary(1); - expect(Math.round(result.subtotal * 100) / 100).toEqual(137.60); + expect(Math.round(result.subtotal * 100) / 100).toEqual(809.23); }); it('should return a summary object containing VAT for 1 ticket', async() => { let result = await app.models.Ticket.summary(1); - expect(Math.round(result.vat * 100) / 100).toEqual(20.49); + expect(Math.round(result.vat * 100) / 100).toEqual(84.64); }); it('should return a summary object containing total for 1 ticket', async() => { diff --git a/modules/ticket/back/methods/ticket/specs/threeLastActive.spec.js b/modules/ticket/back/methods/ticket/specs/threeLastActive.spec.js index 6e6416d78..d3cd9ba93 100644 --- a/modules/ticket/back/methods/ticket/specs/threeLastActive.spec.js +++ b/modules/ticket/back/methods/ticket/specs/threeLastActive.spec.js @@ -2,7 +2,7 @@ const app = require('vn-loopback/server/server'); describe('ticket threeLastActive()', () => { it('should return the last three active tickets', async() => { - let params = {clientFk: 101, ticketFk: 1}; + let params = {clientFk: 109, ticketFk: 19}; let result = await app.models.Ticket.threeLastActive(params); expect(result.length).toEqual(3); diff --git a/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js b/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js new file mode 100644 index 000000000..30216c199 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/updateDiscount.spec.js @@ -0,0 +1,93 @@ +const app = require('vn-loopback/server/server'); + +describe('sale updateDiscount()', () => { + const originalSaleId = 8; + let componentId; + let originalSale; + let salesPersonMana; + + beforeAll(async done => { + originalSale = await app.models.Sale.findById(originalSaleId); + let manaDiscount = await app.models.ComponentRate.findOne({where: {code: 'mana'}}); + componentId = manaDiscount.id; + + let ticket = await app.models.Ticket.findById(originalSale.ticketFk); + let client = await app.models.Client.findById(ticket.clientFk); + salesPersonMana = await app.models.WorkerMana.findById(client.salesPersonFk); + + done(); + }); + + afterAll(async done => { + await originalSale.save(); + await app.models.SaleComponent.updateAll({componentFk: componentId, saleFk: originalSaleId}, {value: 0}); + await salesPersonMana.save(); + + done(); + }); + + + it('should throw an error if no sales were selected', async() => { + let error; + const ticketId = 11; + const sales = []; + const newDiscount = 10; + + try { + await app.models.Ticket.updateDiscount(ticketId, sales, newDiscount); + } catch (err) { + error = err; + } + + expect(error.message).toEqual('Please select at least one sale'); + }); + + it('should throw an error if no sales belong to different tickets', async() => { + let error; + const ticketId = 11; + const sales = [1, 14]; + const newDiscount = 10; + + try { + await app.models.Ticket.updateDiscount(ticketId, sales, newDiscount); + } catch (err) { + error = err; + } + + expect(error.message).toEqual('All sales must belong to the same ticket'); + }); + + it('should throw an error if the ticket is invoiced already', async() => { + let error; + const ticketId = 1; + const sales = [1]; + const newDiscount = 100; + + try { + await app.models.Ticket.updateDiscount(ticketId, sales, newDiscount); + } catch (err) { + error = err; + } + + expect(error.message).toEqual(`The sales of this ticket can't be modified`); + }); + + it('should update the discount if the salesPerson has mana', async() => { + const ticketId = 11; + const sales = [originalSaleId]; + const newDiscount = 100; + + await app.models.Ticket.updateDiscount(ticketId, sales, newDiscount); + + let updatedSale = await app.models.Sale.findById(originalSaleId); + let createdSaleComponent = await app.models.SaleComponent.findOne({ + where: { + componentFk: componentId, + saleFk: originalSaleId + } + }); + + expect(createdSaleComponent.componentFk).toEqual(componentId); + expect(updatedSale.discount).toEqual(100); + }); +}); diff --git a/modules/ticket/back/methods/ticket/specs/updateEditableTicket.spec.js b/modules/ticket/back/methods/ticket/specs/updateEditableTicket.spec.js index e792b925f..378b01961 100644 --- a/modules/ticket/back/methods/ticket/specs/updateEditableTicket.spec.js +++ b/modules/ticket/back/methods/ticket/specs/updateEditableTicket.spec.js @@ -4,7 +4,7 @@ describe('ticket updateEditableTicket()', () => { const validTicketId = 12; const invalidTicketId = 1; const data = {addressFk: 1}; - const originalData = {addressFk: 121}; + const originalData = {addressFk: 123}; afterAll(async done => { await app.models.Ticket.updateEditableTicket(validTicketId, originalData); diff --git a/modules/ticket/back/methods/ticket/specs/uploadFile.spec.js b/modules/ticket/back/methods/ticket/specs/uploadFile.spec.js new file mode 100644 index 000000000..78b935ab5 --- /dev/null +++ b/modules/ticket/back/methods/ticket/specs/uploadFile.spec.js @@ -0,0 +1,19 @@ +const app = require('vn-loopback/server/server'); + +describe('Ticket uploadFile()', () => { + it(`should return an error for a user without enough privileges`, async() => { + let ticketId = 15; + let currentUserId = 101; + let ticketTypeId = 14; + let ctx = {req: {accessToken: {userId: currentUserId}}, args: {dmsTypeId: ticketTypeId}}; + + let error; + await app.models.Ticket.uploadFile(ctx, ticketId).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/modules/ticket/back/methods/ticket/threeLastActive.js b/modules/ticket/back/methods/ticket/threeLastActive.js index 2966514a4..fa4eab99d 100644 --- a/modules/ticket/back/methods/ticket/threeLastActive.js +++ b/modules/ticket/back/methods/ticket/threeLastActive.js @@ -20,7 +20,7 @@ module.exports = Self => { Self.threeLastActive = async params => { let query = ` - SELECT t.id,t.shipped,a.name AS agencyName,w.name AS warehouseName + SELECT t.id, t.shipped, a.name AS agencyName, w.name AS warehouseName FROM vn.ticket t JOIN vn.ticketState ts ON t.id = ts.ticketFk JOIN vn.agencyMode a ON t.agencyModeFk = a.id diff --git a/modules/ticket/back/methods/ticket/updateDiscount.js b/modules/ticket/back/methods/ticket/updateDiscount.js new file mode 100644 index 000000000..3a5e6fe91 --- /dev/null +++ b/modules/ticket/back/methods/ticket/updateDiscount.js @@ -0,0 +1,122 @@ +let UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethod('updateDiscount', { + description: 'Changes the discount of a sale', + accessType: 'WRITE', + accepts: [ + { + arg: 'id', + description: 'The ticket id', + type: 'number', + required: true, + http: {source: 'path'} + }, + { + arg: 'salesIds', + description: 'The sales id', + type: ['number'], + required: true, + }, { + arg: 'newDiscount', + description: 'The new discount', + type: 'number', + required: true + } + ], + returns: { + type: 'string', + root: true + }, + http: { + path: `/:id/updateDiscount`, + verb: 'post' + } + }); + + Self.updateDiscount = async(id, salesIds, newDiscount) => { + const models = Self.app.models; + const tx = await Self.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const filter = { + fields: ['id', 'ticketFk', 'price'], + where: { + id: {inq: salesIds} + }, + include: { + relation: 'ticket', + scope: { + include: { + relation: 'client', + scope: { + fields: ['salesPersonFk'] + } + }, + fields: ['id', 'clientFk'] + } + } + }; + + let sales = await models.Sale.find(filter, options); + + if (sales.length === 0) + throw new UserError('Please select at least one sale'); + + const allFromSameTicket = sales.every(sale => sale.ticketFk === id); + if (!allFromSameTicket) + throw new UserError('All sales must belong to the same ticket'); + + const isEditable = await models.Ticket.isEditable(id); + if (!isEditable) + throw new UserError(`The sales of this ticket can't be modified`); + + const ticket = await models.Ticket.findById(id, { + include: { + relation: 'client', + scope: { + fields: ['salesPersonFk'] + } + }, + }); + const salesPersonId = ticket.client().salesPersonFk; + const usesMana = await models.WorkerMana.findOne({ + where: { + workerFk: salesPersonId + }, + fields: 'amount'}, options); + + const componentCode = usesMana ? 'mana' : 'buyerDiscount'; + const discountComponent = await models.ComponentRate.findOne({ + where: {code: componentCode}}, options); + + const componentId = discountComponent.id; + + let promises = []; + for (let sale of sales) { + const value = ((-sale.price * newDiscount) / 100); + const newComponent = models.SaleComponent.upsert({ + saleFk: sale.id, + value: value, + componentFk: componentId}, options); + + const updatedSale = models.Sale.update({id: sale.id}, + {discount: newDiscount}, options); + + promises.push([newComponent, updatedSale]); + } + + await Promise.all(promises); + + query = `call vn.manaSpellersRequery(?)`; + await Self.rawSql(query, [salesPersonId], options); + + await tx.commit(); + } catch (error) { + await tx.rollback(); + throw error; + } + }; +}; diff --git a/modules/ticket/back/methods/ticket/uploadFile.js b/modules/ticket/back/methods/ticket/uploadFile.js new file mode 100644 index 000000000..7c968f5c9 --- /dev/null +++ b/modules/ticket/back/methods/ticket/uploadFile.js @@ -0,0 +1,78 @@ +module.exports = Self => { + Self.remoteMethodCtx('uploadFile', { + description: 'Upload and attach a document', + accessType: 'WRITE', + accepts: [{ + arg: 'id', + type: 'Number', + description: 'The ticket id', + http: {source: 'path'} + }, + { + arg: 'warehouseId', + type: 'Number', + description: '' + }, + { + arg: 'companyId', + type: 'Number', + description: '' + }, + { + arg: 'dmsTypeId', + type: 'Number', + description: '' + }, + { + arg: 'reference', + type: 'String', + description: '' + }, + { + arg: 'description', + type: 'String', + description: '' + }, + { + arg: 'hasFile', + type: 'Boolean', + description: '' + }], + returns: { + type: 'Object', + root: true + }, + http: { + path: `/:id/uploadFile`, + verb: 'POST' + } + }); + + Self.uploadFile = async(ctx, id) => { + const models = Self.app.models; + const promises = []; + const tx = await Self.beginTransaction({}); + + try { + const options = {transaction: tx}; + + const uploadedFiles = await models.Dms.uploadFile(ctx, options); + uploadedFiles.forEach(dms => { + const newTicketDms = models.TicketDms.create({ + ticketFk: id, + dmsFk: dms.id + }, options); + + promises.push(newTicketDms); + }); + const resolvedPromises = await Promise.all(promises); + + await tx.commit(); + + return resolvedPromises; + } catch (err) { + await tx.rollback(); + throw err; + } + }; +}; diff --git a/modules/ticket/back/models/component-rate.json b/modules/ticket/back/models/component-rate.json index 6e796cbb2..3a69c6eb6 100644 --- a/modules/ticket/back/models/component-rate.json +++ b/modules/ticket/back/models/component-rate.json @@ -26,6 +26,9 @@ }, "componentTypeRate": { "type": "Number" + }, + "code": { + "type": "String" } }, "relations": { diff --git a/modules/ticket/back/models/sale-component.json b/modules/ticket/back/models/sale-component.json index e2649e09b..49edab2ae 100644 --- a/modules/ticket/back/models/sale-component.json +++ b/modules/ticket/back/models/sale-component.json @@ -11,7 +11,12 @@ "type": "Number" }, "saleFk": { - "id": true + "type": "Number", + "id": 2 + }, + "componentFk": { + "type": "Number", + "id": 1 } }, "relations": { diff --git a/modules/ticket/back/models/sale.js b/modules/ticket/back/models/sale.js index 129d14bb8..df5b95839 100644 --- a/modules/ticket/back/models/sale.js +++ b/modules/ticket/back/models/sale.js @@ -3,9 +3,11 @@ module.exports = Self => { require('../methods/sale/priceDifference')(Self); require('../methods/sale/moveToTicket')(Self); require('../methods/sale/reserve')(Self); - require('../methods/sale/moveToNewTicket')(Self); require('../methods/sale/removes')(Self); - require('../methods/sale/updateDiscount')(Self); require('../methods/sale/updatePrice')(Self); require('../methods/sale/updateQuantity')(Self); + + Self.validatesPresenceOf('concept', { + message: `Concept cannot be blank` + }); }; diff --git a/modules/ticket/back/models/sale.json b/modules/ticket/back/models/sale.json index 17a8c604e..894a2608f 100644 --- a/modules/ticket/back/models/sale.json +++ b/modules/ticket/back/models/sale.json @@ -13,7 +13,8 @@ "description": "Identifier" }, "concept": { - "type": "String" + "type": "String", + "required": true }, "quantity": { "type": "Number" diff --git a/modules/ticket/back/models/stowaway.js b/modules/ticket/back/models/stowaway.js new file mode 100644 index 000000000..714d823b0 --- /dev/null +++ b/modules/ticket/back/models/stowaway.js @@ -0,0 +1,16 @@ +const LoopBackContext = require('loopback-context'); +module.exports = function(Self) { + Self.observe('before save', async function(ctx) { + if (ctx.isNewInstance) { + let where = { + code: 'BOARDING' + }; + let state = await Self.app.models.State.findOne({where}); + let params = {ticketFk: ctx.instance.id, stateFk: state.id}; + const loopBackContext = LoopBackContext.getCurrentContext(); + + let httpCtx = {req: loopBackContext.active}; + await Self.app.models.TicketTracking.changeState(httpCtx, params); + } + }); +}; diff --git a/modules/ticket/back/models/ticket-dms.js b/modules/ticket/back/models/ticket-dms.js new file mode 100644 index 000000000..ddb338632 --- /dev/null +++ b/modules/ticket/back/models/ticket-dms.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/ticket-dms/removeFile')(Self); +}; diff --git a/modules/ticket/back/models/ticket-dms.json b/modules/ticket/back/models/ticket-dms.json index b725d47cd..b7b24dce0 100644 --- a/modules/ticket/back/models/ticket-dms.json +++ b/modules/ticket/back/models/ticket-dms.json @@ -3,8 +3,7 @@ "base": "Loggable", "log": { "model": "TicketLog", - "relation": "ticket", - "showField": "dmsFk" + "relation": "ticket" }, "options": { "mysql": { @@ -12,11 +11,6 @@ } }, "properties": { - "ticketFk": { - "type": "Number", - "id": true, - "required": true - }, "dmsFk": { "type": "Number", "id": true, diff --git a/modules/ticket/back/models/ticket-log.json b/modules/ticket/back/models/ticket-log.json index 80c501e2e..950742e98 100644 --- a/modules/ticket/back/models/ticket-log.json +++ b/modules/ticket/back/models/ticket-log.json @@ -26,23 +26,23 @@ "changedModel": { "type": "String" }, - "oldInstance": { - "type": "Object" + "oldInstance": { + "type": "Object" }, - "newInstance": { - "type": "Object" + "newInstance": { + "type": "Object" }, - "creationDate": { - "type": "Date" + "creationDate": { + "type": "Date" }, - "changedModelId": { - "type": "Number" + "changedModelId": { + "type": "Number" }, - "changedModelValue": { - "type": "String" + "changedModelValue": { + "type": "String" }, - "description": { - "type": "String" + "description": { + "type": "String" } }, "relations": { diff --git a/modules/ticket/back/models/ticket-service.js b/modules/ticket/back/models/ticket-service.js index 751885116..aab6b4f34 100644 --- a/modules/ticket/back/models/ticket-service.js +++ b/modules/ticket/back/models/ticket-service.js @@ -5,9 +5,18 @@ module.exports = Self => { let changes = ctx.currentInstance || ctx.instance; if (changes) { let ticketId = changes.ticketFk; - let ticket = await Self.app.models.Ticket.findById(ticketId); - if (ticket.refFk) - throw new UserError('You cannot add or modify services to an invoiced ticket'); + let isEditable = await Self.app.models.Ticket.isEditable(ticketId); + if (!isEditable) + throw new UserError(`The current ticket can't be modified`); } }); + + Self.observe('before delete', async ctx => { + const models = Self.app.models; + const service = await models.TicketService.findById(ctx.where.id); + const isEditable = await Self.app.models.Ticket.isEditable(service.ticketFk); + + if (!isEditable) + throw new UserError(`The current ticket can't be modified`); + }); }; diff --git a/modules/ticket/back/models/ticket-weekly.js b/modules/ticket/back/models/ticket-weekly.js new file mode 100644 index 000000000..8456ef49a --- /dev/null +++ b/modules/ticket/back/models/ticket-weekly.js @@ -0,0 +1,3 @@ +module.exports = Self => { + require('../methods/ticket-weekly/filter')(Self); +}; diff --git a/modules/ticket/back/models/ticket.js b/modules/ticket/back/models/ticket.js index b2db9aac6..a058bbd89 100644 --- a/modules/ticket/back/models/ticket.js +++ b/modules/ticket/back/models/ticket.js @@ -1,3 +1,4 @@ + module.exports = Self => { require('../methods/ticket/changeWorker')(Self); require('../methods/ticket/getVolume')(Self); @@ -10,7 +11,7 @@ module.exports = Self => { require('../methods/ticket/new')(Self); require('../methods/ticket/isEditable')(Self); require('../methods/ticket/threeLastActive')(Self); - require('../methods/ticket/deleted')(Self); + require('../methods/ticket/delete')(Self); require('../methods/ticket/getVAT')(Self); require('../methods/ticket/getSales')(Self); require('../methods/ticket/getSalesPersonMana')(Self); @@ -19,4 +20,28 @@ module.exports = Self => { require('../methods/ticket/canBeInvoiced')(Self); require('../methods/ticket/makeInvoice')(Self); require('../methods/ticket/updateEditableTicket')(Self); + require('../methods/ticket/checkEmptiness')(Self); + require('../methods/ticket/updateDiscount')(Self); + require('../methods/ticket/uploadFile')(Self); + require('../methods/ticket/addSale')(Self); + + Self.observe('before save', async function(ctx) { + if (ctx.isNewInstance) return; + + let changes = ctx.data || ctx.instance; + + if (changes.routeFk === null && ctx.currentInstance.routeFk != null) { + let instance = JSON.parse(JSON.stringify(ctx.currentInstance)); + let userId = ctx.options.accessToken.userId; + let logRecord = { + originFk: ctx.currentInstance.routeFk, + userFk: userId, + action: 'delete', + changedModel: 'Route', + oldInstance: {ticket: instance.id}, + newInstance: null + }; + await Self.app.models.RouteLog.create(logRecord); + } + }); }; diff --git a/modules/ticket/back/models/ticket.json b/modules/ticket/back/models/ticket.json index 65678297c..7b6c4a64b 100644 --- a/modules/ticket/back/models/ticket.json +++ b/modules/ticket/back/models/ticket.json @@ -111,6 +111,11 @@ "type": "hasOne", "model": "TicketState", "foreignKey": "ticketFk" + }, + "zone": { + "type": "belongsTo", + "model": "Zone", + "foreignKey": "zoneFk" } } } \ No newline at end of file diff --git a/modules/ticket/front/basic-data/step-two/index.html b/modules/ticket/front/basic-data/step-two/index.html index a8c3859e5..1ecd061e2 100644 --- a/modules/ticket/front/basic-data/step-two/index.html +++ b/modules/ticket/front/basic-data/step-two/index.html @@ -18,7 +18,8 @@ + item="::sale.item" + name="::sale.concept"> {{::sale.quantity}} diff --git a/modules/ticket/front/basic-data/step-two/index.js b/modules/ticket/front/basic-data/step-two/index.js index 739f08a87..1d18f6ba0 100644 --- a/modules/ticket/front/basic-data/step-two/index.js +++ b/modules/ticket/front/basic-data/step-two/index.js @@ -37,8 +37,7 @@ class Controller { getTotalDifferenceOfPrice() { let totalPriceDifference = 0; this.ticket.sale.items.forEach(item => { - let itemTotalPriceDifference = item.quantity * item.component.difference; - totalPriceDifference += itemTotalPriceDifference; + totalPriceDifference += item.component.difference; }); this.totalPriceDifference = totalPriceDifference; } diff --git a/modules/ticket/front/basic-data/step-two/index.spec.js b/modules/ticket/front/basic-data/step-two/index.spec.js index 8fe400584..1ca89fd90 100644 --- a/modules/ticket/front/basic-data/step-two/index.spec.js +++ b/modules/ticket/front/basic-data/step-two/index.spec.js @@ -60,7 +60,7 @@ describe('Ticket', () => { controller.getTotalDifferenceOfPrice(); - expect(controller.totalPriceDifference).toEqual(3); + expect(controller.totalPriceDifference).toEqual(0.3); }); }); }); diff --git a/modules/ticket/front/component/index.html b/modules/ticket/front/component/index.html index 27ba166d0..228a0270c 100644 --- a/modules/ticket/front/component/index.html +++ b/modules/ticket/front/component/index.html @@ -41,6 +41,7 @@ diff --git a/modules/ticket/front/descriptor/addStowaway.js b/modules/ticket/front/descriptor/addStowaway.js index 514d46503..b5f6d82fe 100644 --- a/modules/ticket/front/descriptor/addStowaway.js +++ b/modules/ticket/front/descriptor/addStowaway.js @@ -1,10 +1,10 @@ import ngModule from '../module'; class Controller { - constructor($state, $scope, $http, vnApp, $translate) { + constructor($state, $, $http, vnApp, $translate) { this.vnApp = vnApp; this.$translate = $translate; - this.$scope = $scope; + this.$ = $; this.$state = $state; this.$http = $http; } @@ -22,15 +22,16 @@ class Controller { .then(() => { this.cardReload(); this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.$.dialog.hide(); }); } show() { - this.$scope.dialog.show(); + this.$.dialog.show(); } hide() { - this.$scope.dialog.hide(); + this.$.dialog.hide(); } } diff --git a/modules/ticket/front/descriptor/index.js b/modules/ticket/front/descriptor/index.js index 709b0331e..53e300bfd 100644 --- a/modules/ticket/front/descriptor/index.js +++ b/modules/ticket/front/descriptor/index.js @@ -127,7 +127,7 @@ class Controller { deleteTicket(response) { if (response === 'ACCEPT') { let params = {id: this.ticket.id}; - this.$http.post(`/ticket/api/Tickets/deleted`, params).then(() => { + this.$http.post(`/ticket/api/Tickets/delete`, params).then(() => { this.$state.go('ticket.index'); this.vnApp.showSuccess(this.$translate.instant('Ticket deleted')); }); diff --git a/modules/ticket/front/descriptor/index.spec.js b/modules/ticket/front/descriptor/index.spec.js index 96e87a4ce..05f91d34e 100644 --- a/modules/ticket/front/descriptor/index.spec.js +++ b/modules/ticket/front/descriptor/index.spec.js @@ -62,7 +62,7 @@ describe('Ticket Component vnTicketDescriptor', () => { spyOn(controller.$state, 'go'); spyOn(controller.vnApp, 'showSuccess'); - $httpBackend.expectPOST(`/ticket/api/Tickets/deleted`, {id: 2}).respond(); + $httpBackend.expectPOST(`/ticket/api/Tickets/delete`, {id: 2}).respond(); controller.deleteTicket('ACCEPT'); $httpBackend.flush(); diff --git a/modules/ticket/front/dms/create/index.html b/modules/ticket/front/dms/create/index.html new file mode 100644 index 000000000..527c6030d --- /dev/null +++ b/modules/ticket/front/dms/create/index.html @@ -0,0 +1,63 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/modules/ticket/front/dms/create/index.js b/modules/ticket/front/dms/create/index.js new file mode 100644 index 000000000..1b28b2417 --- /dev/null +++ b/modules/ticket/front/dms/create/index.js @@ -0,0 +1,95 @@ +import ngModule from '../../module'; +import './style.scss'; + +class Controller { + constructor($scope, $http, $state, $translate, vnApp) { + this.$ = $scope; + this.$http = $http; + this.$state = $state; + this.$translate = $translate; + this.vnApp = vnApp; + this.dms = { + files: [], + hasFile: false + }; + } + + get ticket() { + return this._ticket; + } + + set ticket(value) { + this._ticket = value; + + if (value) + this.setDefaultParams(); + } + + setDefaultParams() { + const params = {filter: { + where: {code: 'ticket'} + }}; + this.$http.get('/api/DmsTypes/findOne', {params}).then(res => { + const dmsTypeId = res.data && res.data.id; + const defaultParams = { + reference: this.ticket.id, + warehouseId: this.ticket.warehouseFk, + companyId: this.ticket.companyFk, + dmsTypeId: dmsTypeId, + description: this.$translate.instant('FileDescription', { + ticketId: this.ticket.id, + clientId: this.ticket.client.id, + clientName: this.ticket.client.name + }).toUpperCase() + }; + + this.dms = Object.assign(this.dms, defaultParams); + }); + } + + onSubmit() { + const query = `/api/tickets/${this.ticket.id}/uploadFile`; + const options = { + method: 'POST', + url: query, + params: this.dms, + headers: { + 'Content-Type': undefined + }, + transformRequest: files => { + const formData = new FormData(); + + for (let i = 0; i < files.length; i++) + formData.append(files[i].name, files[i]); + + return formData; + }, + data: this.dms.files + }; + this.$http(options).then(res => { + if (res) { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.$.watcher.updateOriginalData(); + this.$state.go('ticket.card.dms.index'); + } + }); + } + + onFileChange(files) { + if (files.length > 0) { + this.$.$applyAsync(() => { + this.dms.hasFile = true; + }); + } + } +} + +Controller.$inject = ['$scope', '$http', '$state', '$translate', 'vnApp']; + +ngModule.component('vnTicketDmsCreate', { + template: require('./index.html'), + controller: Controller, + bindings: { + ticket: '<' + } +}); diff --git a/modules/ticket/front/dms/create/index.spec.js b/modules/ticket/front/dms/create/index.spec.js new file mode 100644 index 000000000..1b8cdadfa --- /dev/null +++ b/modules/ticket/front/dms/create/index.spec.js @@ -0,0 +1,65 @@ +import './index'; + +describe('Ticket', () => { + describe('Component vnTicketDmsCreate', () => { + let controller; + let $scope; + let $httpBackend; + let $httpParamSerializer; + + beforeEach(ngModule('ticket')); + + beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => { + $scope = $rootScope.$new(); + $httpBackend = _$httpBackend_; + $httpParamSerializer = _$httpParamSerializer_; + controller = $componentController('vnTicketDmsCreate', {$scope}); + controller._ticket = { + id: 15, + client: {id: 101, name: 'Bruce wayne'}, + warehouseFk: 1, + companyFk: 1 + }; + })); + + describe('client() setter', () => { + it('should set the ticket data and then call setDefaultParams()', () => { + spyOn(controller, 'setDefaultParams'); + controller.ticket = { + id: 15, + name: 'Bruce wayne' + }; + + expect(controller.ticket).toBeDefined(); + expect(controller.setDefaultParams).toHaveBeenCalledWith(); + }); + }); + + describe('setDefaultParams()', () => { + it('should perform a GET query and define the dms property on controller', () => { + const params = {filter: { + where: {code: 'ticket'} + }}; + let serializedParams = $httpParamSerializer(params); + $httpBackend.when('GET', `/api/DmsTypes/findOne?${serializedParams}`).respond({id: 14, code: 'ticket'}); + $httpBackend.expect('GET', `/api/DmsTypes/findOne?${serializedParams}`); + controller.setDefaultParams(); + $httpBackend.flush(); + + expect(controller.dms).toBeDefined(); + expect(controller.dms.reference).toEqual(15); + expect(controller.dms.dmsTypeId).toEqual(14); + }); + }); + + describe('onFileChange()', () => { + it('should set dms hasFile property to true if has any files', () => { + const files = [{id: 1, name: 'MyFile'}]; + controller.onFileChange(files); + $scope.$apply(); + + expect(controller.dms.hasFile).toBeTruthy(); + }); + }); + }); +}); diff --git a/modules/ticket/front/dms/create/locale/en.yml b/modules/ticket/front/dms/create/locale/en.yml new file mode 100644 index 000000000..9f4c026a4 --- /dev/null +++ b/modules/ticket/front/dms/create/locale/en.yml @@ -0,0 +1 @@ +FileDescription: Ticket id {{ticketId}} from client {{clientName}} id {{clientId}} \ No newline at end of file diff --git a/modules/ticket/front/dms/create/locale/es.yml b/modules/ticket/front/dms/create/locale/es.yml new file mode 100644 index 000000000..e074da48b --- /dev/null +++ b/modules/ticket/front/dms/create/locale/es.yml @@ -0,0 +1,5 @@ +Upload file: Subir fichero +Upload: Subir +File: Fichero +FileDescription: Ticket id {{ticketId}} del cliente {{clientName}} id {{clientId}} +Attached file: Fichero adjunto \ No newline at end of file diff --git a/modules/ticket/front/dms/create/style.scss b/modules/ticket/front/dms/create/style.scss new file mode 100644 index 000000000..b47544b12 --- /dev/null +++ b/modules/ticket/front/dms/create/style.scss @@ -0,0 +1,7 @@ +vn-ticket-request { + vn-textfield { + margin: 0!important; + max-width: 100px; + } +} + diff --git a/modules/ticket/front/dms/index.html b/modules/ticket/front/dms/index.html deleted file mode 100644 index 878fd3277..000000000 --- a/modules/ticket/front/dms/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - Id - Type - Employee - Created - - - - - - {{::document.dmsFk}} - {{::document.dms.dmsType.name}} - - - {{::document.dms.worker.user.nickname | dashIfEmpty}} - - {{::document.dms.created | dateTime:'dd/MM/yyyy HH:mm'}} - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/modules/ticket/front/dms/index/index.html b/modules/ticket/front/dms/index/index.html new file mode 100644 index 000000000..9000ca91e --- /dev/null +++ b/modules/ticket/front/dms/index/index.html @@ -0,0 +1,95 @@ + + + + + + + + + Id + Type + Reference + Description + Attached file + File + Employee + Created + + + + + + {{::document.dmsFk}} + + + {{::document.dms.dmsType.name}} + + + + + {{::document.dms.reference}} + + + + + {{::document.dms.description}} + + + + + + + {{::document.dms.file}} + + + {{::document.dms.worker.user.nickname | dashIfEmpty}} + + + {{::document.dms.created | dateTime:'dd/MM/yyyy HH:mm'}} + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/ticket/front/dms/index/index.js b/modules/ticket/front/dms/index/index.js new file mode 100644 index 000000000..f2c65be26 --- /dev/null +++ b/modules/ticket/front/dms/index/index.js @@ -0,0 +1,78 @@ +import ngModule from '../../module'; +import './style.scss'; + +class Controller { + constructor($stateParams, $scope, $http, $translate, vnToken, vnApp) { + this.$stateParams = $stateParams; + this.$ = $scope; + this.$http = $http; + this.$translate = $translate; + this.accessToken = vnToken.token; + this.vnApp = vnApp; + this.filter = { + include: { + relation: 'dms', + scope: { + fields: [ + 'dmsTypeFk', + 'workerFk', + 'reference', + 'description', + 'hasFile', + 'file', + 'created', + ], + include: [{ + relation: 'dmsType', + scope: { + fields: ['name'] + } + }, + { + relation: 'worker', + scope: { + fields: ['userFk'], + include: { + relation: 'user', + scope: { + fields: ['nickname'] + } + }, + } + }] + }, + } + }; + } + + showWorkerDescriptor(event, workerFk) { + event.preventDefault(); + event.stopImmediatePropagation(); + this.$.workerDescriptor.parent = event.target; + this.$.workerDescriptor.workerFk = workerFk; + this.$.workerDescriptor.show(); + } + + showDeleteConfirm(index) { + this.dmsIndex = index; + this.$.confirm.show(); + } + + deleteDms(response) { + if (response === 'ACCEPT') { + const dmsFk = this.ticketDms[this.dmsIndex].dmsFk; + const query = `/api/TicketDms/${dmsFk}/removeFile`; + this.$http.post(query).then(() => { + this.$.model.remove(this.dmsIndex); + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }); + } + } +} + +Controller.$inject = ['$stateParams', '$scope', '$http', '$translate', 'vnToken', 'vnApp']; + +ngModule.component('vnTicketDmsIndex', { + template: require('./index.html'), + controller: Controller, +}); diff --git a/modules/ticket/front/dms/index.spec.js b/modules/ticket/front/dms/index/index.spec.js similarity index 100% rename from modules/ticket/front/dms/index.spec.js rename to modules/ticket/front/dms/index/index.spec.js diff --git a/modules/ticket/front/dms/index/locale/es.yml b/modules/ticket/front/dms/index/locale/es.yml new file mode 100644 index 000000000..c6742ef3c --- /dev/null +++ b/modules/ticket/front/dms/index/locale/es.yml @@ -0,0 +1,3 @@ +Type: Tipo +File management: Gestión documental +Are you sure you want to continue?: ¿Seguro que quieres continuar? \ No newline at end of file diff --git a/modules/ticket/front/dms/index/style.scss b/modules/ticket/front/dms/index/style.scss new file mode 100644 index 000000000..a6758e2e6 --- /dev/null +++ b/modules/ticket/front/dms/index/style.scss @@ -0,0 +1,6 @@ +vn-client-risk-index { + .totalBox { + display: table; + float: right; + } +} \ No newline at end of file diff --git a/modules/ticket/front/dms/locale/es.yml b/modules/ticket/front/dms/locale/es.yml deleted file mode 100644 index 6422279d9..000000000 --- a/modules/ticket/front/dms/locale/es.yml +++ /dev/null @@ -1,2 +0,0 @@ -Type: Tipo -File management: Gestión documental \ No newline at end of file diff --git a/modules/ticket/front/index.js b/modules/ticket/front/index.js index 027cb424b..a9a987b56 100644 --- a/modules/ticket/front/index.js +++ b/modules/ticket/front/index.js @@ -31,5 +31,5 @@ import './request/index'; import './request/create'; import './log'; import './weekly'; -import './dms'; - +import './dms/index'; +import './dms/create'; diff --git a/modules/ticket/front/index/index.html b/modules/ticket/front/index/index.html index f43b90f59..a438d9359 100644 --- a/modules/ticket/front/index/index.html +++ b/modules/ticket/front/index/index.html @@ -30,7 +30,7 @@
- + diff --git a/modules/ticket/front/locale/es.yml b/modules/ticket/front/locale/es.yml index d57ca3fdf..a1abc81fc 100644 --- a/modules/ticket/front/locale/es.yml +++ b/modules/ticket/front/locale/es.yml @@ -44,6 +44,7 @@ Price gap: Diferencia de precio Quantity: Cantidad Remove lines: Borrar lineas Route: Ruta +SET OK: PONER OK Shipment: Salida Shipped: F. envío Some fields are invalid: Algunos campos no son válidos diff --git a/modules/ticket/front/log/index.html b/modules/ticket/front/log/index.html index facc14fa2..9e975cceb 100644 --- a/modules/ticket/front/log/index.html +++ b/modules/ticket/front/log/index.html @@ -1,9 +1 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/ticket/front/log/index.js b/modules/ticket/front/log/index.js index fb1177162..6a486d3d0 100644 --- a/modules/ticket/front/log/index.js +++ b/modules/ticket/front/log/index.js @@ -4,45 +4,6 @@ class Controller { constructor($scope, $stateParams) { this.$scope = $scope; this.$stateParams = $stateParams; - this.filter = { - include: [{ - relation: 'user', - scope: { - fields: ['name'], - }, - }], - }; - } - - get logs() { - return this._logs; - } - - set logs(value) { - this._logs = value; - - if (this.logs) { - this.logs.forEach(log => { - log.oldProperties = this.getInstance(log.oldInstance); - log.newProperties = this.getInstance(log.newInstance); - }); - } - } - - getInstance(instance) { - const properties = []; - let validDate = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/; - - if (typeof instance == 'object' && instance != null) { - Object.keys(instance).forEach(property => { - if (validDate.test(instance[property])) - instance[property] = new Date(instance[property]).toLocaleString('es-ES'); - - properties.push({key: property, value: instance[property]}); - }); - return properties; - } - return null; } } diff --git a/modules/ticket/front/log/index.spec.js b/modules/ticket/front/log/index.spec.js deleted file mode 100644 index ef4c72ef6..000000000 --- a/modules/ticket/front/log/index.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import './index'; - -describe('Ticket', () => { - describe('Component vnTicketLog', () => { - let $componentController; - let $scope; - let controller; - - beforeEach(ngModule('ticket')); - - beforeEach(angular.mock.inject((_$componentController_, $rootScope) => { - $componentController = _$componentController_; - $scope = $rootScope.$new(); - controller = $componentController('vnTicketLog', {$scope: $scope}); - controller.$scope.model = {data: [{newInstance: {id: 1}, oldInstance: {id: 2}}]}; - })); - - describe('logs setter', () => { - it('should call the function getInstance() twice', () => { - spyOn(controller, 'getInstance'); - controller.logs = [{newInstance: {id: 1}, oldInstance: {id: 2}}]; - - expect(controller.getInstance.calls.count()).toBe(2); - expect(controller.getInstance).toHaveBeenCalledWith({id: 1}); - expect(controller.getInstance).toHaveBeenCalledWith({id: 2}); - }); - }); - - describe('getInstance(instance)', () => { - it('should transform the object given in to an array', () => { - const newInstance = controller.getInstance(controller.$scope.model.data[0].newInstance); - - expect(newInstance).toEqual([{key: 'id', value: 1}]); - }); - }); - }); -}); diff --git a/modules/ticket/front/package/index.html b/modules/ticket/front/package/index.html index 7478bac5d..e774012c5 100644 --- a/modules/ticket/front/package/index.html +++ b/modules/ticket/front/package/index.html @@ -1,6 +1,6 @@ diff --git a/modules/ticket/front/request/index/index.html b/modules/ticket/front/request/index/index.html index 015aa0615..24dcd39f6 100644 --- a/modules/ticket/front/request/index/index.html +++ b/modules/ticket/front/request/index/index.html @@ -43,7 +43,7 @@ - {{::request.atender.user.nickname | dashIfEmpty}} @@ -63,6 +63,7 @@ diff --git a/modules/ticket/front/request/index/index.js b/modules/ticket/front/request/index/index.js index f1cef924b..2c8996760 100644 --- a/modules/ticket/front/request/index/index.js +++ b/modules/ticket/front/request/index/index.js @@ -67,6 +67,17 @@ class Controller { this.$.workerDescriptor.parent = event.target; this.$.workerDescriptor.show(); } + + getRequestState(state) { + switch (state) { + case null: + return 'New'; + case false: + return 'Denied'; + case true: + return 'Acepted'; + } + } } Controller.$inject = ['$scope', '$stateParams']; diff --git a/modules/ticket/front/routes.json b/modules/ticket/front/routes.json index e16de74f5..431c4187b 100644 --- a/modules/ticket/front/routes.json +++ b/modules/ticket/front/routes.json @@ -19,7 +19,7 @@ {"state": "ticket.card.picture", "icon": "image"}, {"state": "ticket.card.log", "icon": "history"}, {"state": "ticket.card.request.index", "icon": "icon-100"}, - {"state": "ticket.card.dms", "icon": "cloud_download"} + {"state": "ticket.card.dms.index", "icon": "cloud_download"} ], "keybindings": [ {"key": "t", "state": "ticket.index"} @@ -181,7 +181,7 @@ "component": "vn-ticket-log", "description": "Log" }, { - "url" : "/weekly", + "url" : "/weekly?q", "state": "ticket.weekly", "component": "vn-ticket-weekly", "description": "Weekly" @@ -216,8 +216,23 @@ { "url": "/dms", "state": "ticket.card.dms", - "component": "vn-ticket-dms", + "abstract": true, + "component": "ui-view" + }, + { + "url": "/index", + "state": "ticket.card.dms.index", + "component": "vn-ticket-dms-index", "description": "File management" + }, + { + "url": "/create", + "state": "ticket.card.dms.create", + "component": "vn-ticket-dms-create", + "description": "Upload file", + "params": { + "ticket": "$ctrl.ticket" + } } ] } \ No newline at end of file diff --git a/modules/ticket/front/sale-checked/index.html b/modules/ticket/front/sale-checked/index.html index 4126e3477..cc4db0aaf 100644 --- a/modules/ticket/front/sale-checked/index.html +++ b/modules/ticket/front/sale-checked/index.html @@ -37,6 +37,7 @@ diff --git a/modules/ticket/front/sale-tracking/index.html b/modules/ticket/front/sale-tracking/index.html index 020052e01..c3c918c09 100644 --- a/modules/ticket/front/sale-tracking/index.html +++ b/modules/ticket/front/sale-tracking/index.html @@ -41,6 +41,7 @@ diff --git a/modules/ticket/front/sale/editDiscount.html b/modules/ticket/front/sale/editDiscount.html index cdc5f0839..e4c7cf9cd 100644 --- a/modules/ticket/front/sale/editDiscount.html +++ b/modules/ticket/front/sale/editDiscount.html @@ -2,20 +2,17 @@
MANÁ: {{$ctrl.mana | currency: 'EUR':0}}
- % - +

New price

-

{{($ctrl.edit[0].quantity * $ctrl.edit[0].price) - - (($ctrl.newDiscount * ($ctrl.edit[0].quantity * $ctrl.edit[0].price))/100) - | currency: 'EUR':2}}

+

{{$ctrl.newPrice | currency: 'EUR':2}}

\ No newline at end of file diff --git a/modules/ticket/front/sale/editDiscount.js b/modules/ticket/front/sale/editDiscount.js index 3df684ff3..e623e2eba 100644 --- a/modules/ticket/front/sale/editDiscount.js +++ b/modules/ticket/front/sale/editDiscount.js @@ -11,7 +11,7 @@ class Controller { set edit(value) { this._edit = value; - this.clear(); + this.clearDiscount(); this.setNewDiscount(); } @@ -28,35 +28,53 @@ class Controller { return this._bulk; } + get newDiscount() { + return this._newDiscount; + } + + set newDiscount(value) { + this._newDiscount = value; + this.updateNewPrice(); + } + + updateNewPrice() { + if (this.newDiscount && this.edit[0]) + this.newPrice = (this.edit[0].quantity * this.edit[0].price) - ((this.newDiscount * (this.edit[0].quantity * this.edit[0].price)) / 100); + } + setNewDiscount() { if (!this.newDiscount && this.edit[0]) this.newDiscount = this.edit[0].discount; } updateDiscount() { - let editLines = []; + let salesIds = []; let modified = false; for (let i = 0; i < this.edit.length; i++) { if (this.newDiscount != this.edit[0].discount || this.bulk || !this.newDiscount) { - editLines.push({id: this.edit[i].id, discount: this.newDiscount, ticketFk: this.$state.params.id}); + salesIds.push(this.edit[i].id); modified = true; } } + if (modified) { - this.$http.post(`/ticket/api/Sales/updateDiscount`, {editLines}).then(() => { + const params = {salesIds: salesIds, newDiscount: this.newDiscount}; + const query = `/api/Tickets/${this.$state.params.id}/updateDiscount`; + this.$http.post(query, params).then(() => { this.vnApp.showSuccess(this.$translate.instant('Data saved!')); - this.clear(); + this.clearDiscount(); modified = false; + this.vnTicketSale.$scope.model.refresh(); }).catch(e => { - this.vnApp.showError(e.data.error.message); + this.vnApp.showError(e.message); }); this.onHide(); } else - this.vnApp.showError(this.$translate.instant('There is no changes to save')); + this.vnApp.showError(this.$translate.instant('There are no changes to save')); } - clear() { + clearDiscount() { this.newDiscount = null; } } @@ -71,5 +89,8 @@ ngModule.component('vnTicketSaleEditDiscount', { mana: ' - - @@ -32,15 +33,15 @@ - @@ -55,7 +56,7 @@ - @@ -92,66 +93,86 @@ + vn-tooltip="{{::$ctrl.$translate.instant('Reserved')}}"> + - - - - - - {{::sale.itemFk | zeroFill:6}} + + + + + + + {{sale.itemFk | zeroFill:6}} - - - {{sale.quantity}} - - - - - - + + + + + + + + {{sale.quantity}} + + + + + + + + item="sale.item" + name="sale.concept" + sub-name="sale.subName"> - - - - {{sale.price | currency: 'EUR':2}} - - - + + + + + + + + {{sale.price | currency: 'EUR':2}} - - - - {{sale.discount}} % - - - - {{sale.discount}} % - - - {{$ctrl.getSaleTotal(sale) | currency: 'EUR':2}} - - - -
- + + + + + {{sale.discount | percentage}} + + + + {{$ctrl.getSaleTotal(sale) | currency: 'EUR':2}} + + + + + + + +
@@ -173,21 +194,20 @@
MANÁ: {{$ctrl.mana | currency: 'EUR':0}}
- - +

New price

-

{{($ctrl.sale.quantity * $ctrl.editedPrice) - - (($ctrl.sale.discount * ($ctrl.sale.quantity * $ctrl.editedPrice))/100) - | currency: 'EUR':2}}

+

{{$ctrl.newPrice | currency: 'EUR':2}}

@@ -195,7 +215,7 @@ @@ -215,7 +235,7 @@ @@ -248,11 +268,13 @@ - No results + + No results + + ng-click="$ctrl.checkEmptiness(ticket.id)"> {{::ticket.id}} {{::ticket.shipped | dateTime: 'dd/MM/yyyy HH:mm'}} {{::ticket.agencyName}} @@ -263,18 +285,18 @@ + ng-click="$ctrl.checkEmptiness($ctrl.receiverTicketId)"> + ng-click="$ctrl.checkEmptiness()"> - - + + \ No newline at end of file diff --git a/modules/ticket/front/sale/index.js b/modules/ticket/front/sale/index.js index 9ebebf7b5..909f6068b 100644 --- a/modules/ticket/front/sale/index.js +++ b/modules/ticket/front/sale/index.js @@ -9,7 +9,6 @@ class Controller { this.$state = $state; this.$stateParams = $state.params; this.$http = $http; - this.deletable = false; this.edit = {}; this.moreOptions = [ {callback: this.markAsReserved, name: 'Mark as reserved'}, @@ -18,17 +17,26 @@ class Controller { {callback: this.createClaim, name: 'Add claim'}, {callback: this.showSMSDialog, name: 'Send SMS'} ]; - + this._sales = []; this.imagesPath = '//verdnatura.es/vn-image-data/catalog'; } + get sales() { + return this._sales; + } + set sales(value) { this._sales = value; this.refreshTotal(); } - get sales() { - return this._sales; + get editedPrice() { + return this._editedPrice; + } + + set editedPrice(value) { + this._editedPrice = value; + this.updateNewPrice(); } refreshTotal() { @@ -38,19 +46,22 @@ class Controller { loadSubTotal() { if (!this.$stateParams.id || !this.sales) return; - this.$http.get(`/ticket/api/Tickets/${this.$stateParams.id}/subtotal`).then(res => { + this.$http.get(`/api/Tickets/${this.$stateParams.id}/subtotal`).then(res => { this.subtotal = res.data || 0.0; }); } getSaleTotal(sale) { + if (!sale.quantity || !sale.price) + return; + return sale.quantity * sale.price * ((100 - sale.discount) / 100); } loadVAT() { this.VAT = 0.0; if (!this.$stateParams.id || !this.sales) return; - this.$http.get(`/ticket/api/Tickets/${this.$stateParams.id}/getVAT`).then(res => { + this.$http.get(`/api/Tickets/${this.$stateParams.id}/getVAT`).then(res => { this.VAT = res.data || 0.0; }); } @@ -91,63 +102,89 @@ class Controller { return false; } + /** + * Returns checked instances + * + * @return {Array} Checked instances + */ getCheckedLines() { - let lines = []; - let data = this.sales; - if (data) { - for (let i = 0; i < data.length; i++) { - if (data[i].checked) - lines.push({id: data[i].id, instance: i}); - } - } - return lines; + if (!this.sales) return; + + return this.sales.filter(sale => { + return sale.checked; + }); + } + + /** + * Returns an array of indexes + * from checked instances + * + * @return {Array} Indexes of checked instances + */ + getCheckedLinesIndex() { + if (!this.sales) return; + + let indexes = []; + this.sales.forEach((sale, index) => { + if (sale.checked) indexes.push(index); + }); + + return indexes; + } + + removeCheckedLines() { + const sales = this.getCheckedLines(); + + sales.forEach(sale => { + const index = this.sales.indexOf(sale); + this.sales.splice(index, 1); + }); + + this.refreshTotal(); } - // Change State onStateOkClick() { let filter = {where: {code: 'OK'}, fields: ['id']}; let json = encodeURIComponent(JSON.stringify(filter)); - this.$http.get(`/ticket/api/States?filter=${json}`).then(res => { + return this.$http.get(`/api/States?filter=${json}`).then(res => { this.onStateChange(res.data[0].id); }); } onStateChange(value) { let params = {ticketFk: this.$state.params.id, stateFk: value}; - this.$http.post(`/ticket/api/TicketTrackings/changeState`, params).then(() => { + this.$http.post(`/api/TicketTrackings/changeState`, params).then(() => { this.card.reload(); this.vnApp.showSuccess(this.$translate.instant('Data saved!')); }); } - // Remove Lines onRemoveLinesClick(response) { if (response === 'ACCEPT') { let sales = this.getCheckedLines(); + + // Remove unsaved instances + sales.forEach((sale, index) => { + if (!sale.id) sales.splice(index); + }); + let params = {sales: sales, actualTicketFk: this.ticket.id}; - let query = `/ticket/api/Sales/removes`; + let query = `/api/Sales/removes`; this.$http.post(query, params).then(() => { - this.removeInstances(sales); + this.removeCheckedLines(); this.vnApp.showSuccess(this.$translate.instant('Data saved!')); }); } } - removeInstances(instances) { - for (let i of instances) - this.sales.splice(i.instance, 1); - this.refreshTotal(); - } - showRemoveLinesDialog() { this.$scope.deleteLines.show(); } - // Move Lines showTransferPopover(event) { let filter = {clientFk: this.ticket.clientFk, ticketFk: this.ticket.id}; let json = encodeURIComponent(JSON.stringify(filter)); - let query = `/ticket/api/Tickets/threeLastActive?filter=${json}`; + let query = `/api/Tickets/threeLastActive?filter=${json}`; this.$http.get(query).then(res => { this.lastThreeTickets = res.data; }); @@ -155,44 +192,61 @@ class Controller { this.$scope.transfer.show(); } - moveLines(ticketID) { - let sales = this.getCheckedLines(); - let params = {sales: sales, newTicketFk: ticketID, actualTicketFk: this.ticket.id}; - this.$http.post(`/ticket/api/Sales/moveToTicket`, params).then(() => { - this.goToTicket(ticketID); - }); + checkEmptiness(receiverTicketId) { + let sales = this.getCheckedLines(); + let areAllSalesSelected = sales.length === this.$scope.model.data.length; + this.receiverTicketId = receiverTicketId; + + + if (areAllSalesSelected) { + let query = `/api/Tickets/${this.ticket.id}/checkEmptiness`; + this.$http.get(query).then(res => { + if (res.data) + this.$scope.deleteTicket.show(); + if (!res.data) + this.moveLines(false); + }); + } + + if (!areAllSalesSelected) + this.moveLines(false); } - linesToNewTicket() { - let ticket = { - oldTicketFk: this.ticket.id, + moveLines(removeEmptyTicket) { + let sales = this.getCheckedLines(); + + let currentTicketData = { + currentTicketId: this.ticket.id, clientFk: this.ticket.clientFk, addressFk: this.ticket.addressFk, agencyModeFk: this.ticket.agencyModeFk, warehouseFk: this.ticket.warehouseFk }; - let sales = this.getCheckedLines(); + let params = { + currentTicket: currentTicketData, + receiverTicket: this.receiverTicketId ? {id: this.receiverTicketId} : currentTicketData, + sales: sales, + removeEmptyTicket: removeEmptyTicket + }; - this.$http.post(`/api/Sales/MoveToNewTicket`, {ticket: ticket, sales: sales}).then(res => { - let url = this.$state.href('ticket.card.sale', {id: res.data.id}, {absolute: true}); - window.open(url, '_blank'); - this.$scope.transfer.hide(); - this.$scope.model.refresh(); + this.$http.post(`/api/Sales/moveToTicket`, params).then(res => { + if (res.data) { + this.receiverTicketId = null; + this.goToTicket(res.data.id); + } }); } createClaim() { - let claim = { + const claim = { ticketFk: this.ticket.id, clientFk: this.ticket.clientFk, ticketCreated: this.ticket.shipped }; - let sales = this.getCheckedLines(); - for (let i = 0; i < sales.length; i++) - sales[i].quantity = this.sales[sales[i].instance].quantity; - this.$http.post(`claim/api/Claims/createFromSales`, {claim: claim, sales: sales}).then(res => { + const sales = this.getCheckedLines(); + this.$http.post(`/api/Claims/createFromSales`, {claim: claim, sales: sales}).then(res => { this.$state.go('claim.card.basicData', {id: res.data.id}); }); } @@ -230,8 +284,8 @@ class Controller { this.$scope.popover.relocate(); } - // Edit Line showEditPricePopover(event, sale) { + if (!this.isEditable) return; this.sale = sale; this.editedPrice = this.sale.price; this.edit = { @@ -245,17 +299,24 @@ class Controller { updatePrice() { if (this.editedPrice != this.sale.price) { - this.$http.post(`/ticket/api/Sales/updatePrice`, {id: this.edit.id, price: this.editedPrice, ticketFk: this.ticket.id}).then(() => { - this.sale.price = this.edit.price; + this.$http.post(`/api/Sales/${this.edit.id}/updatePrice`, {newPrice: this.editedPrice}).then(res => { + if (res.data) + this.sale.price = res.data.price; + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); - this.$scope.model.refresh(); }); } this.$scope.editPricePopover.hide(); } - showEditPopover(event, sale) { + updateNewPrice() { + this.newPrice = this.sale.quantity * this.editedPrice - ((this.sale.discount * (this.sale.quantity * this.editedPrice)) / 100); + } + + showEditDiscountPopover(event, sale) { + if (!this.isEditable) return; + this.sale = sale; this.edit = [{ ticketFk: this.ticket.id, @@ -283,24 +344,14 @@ class Controller { this.$scope.editPopover.hide(); } - updateQuantity(id, quantity) { - this.$http.post(`/ticket/api/Sales/${id}/updateQuantity`, {quantity: parseInt(quantity)}).then(() => { - this.vnApp.showSuccess(this.$translate.instant('Data saved!')); - }).catch(e => { - this.vnApp.showError(e.data.error.message); - }).finally(() => { - this.$scope.model.refresh(); - }); - } - - /** + /* * Unmark sale as reserved */ unmarkAsReserved() { this.setReserved(false); } - /** + /* * Mark sale as reserved */ markAsReserved() { @@ -308,11 +359,22 @@ class Controller { } setReserved(reserved) { - let sales = this.getCheckedLines(); - let params = {sales: sales, ticketFk: this.ticket.id, reserved: reserved}; + let selectedSales = this.getCheckedLines(); + let params = {sales: selectedSales, ticketFk: this.ticket.id, reserved: reserved}; - this.$http.post(`/ticket/api/Sales/reserve`, params).then(() => { - this.$scope.model.refresh(); + let reservedSales = new Map(); + this.$http.post(`/api/Sales/reserve`, params).then(res => { + let isReserved = res.config.data.reserved; + + res.config.data.sales.forEach(sale => { + reservedSales.set(sale.id, {reserved: isReserved}); + }); + + this.sales.forEach(sale => { + const reservedSale = reservedSales.get(sale.id); + if (reservedSale) + sale.reserved = reservedSale.reserved; + }); }); } @@ -325,10 +387,9 @@ class Controller { showSMSDialog() { const address = this.ticket.address; - const lines = this.getCheckedLines(); - const items = lines.map(line => { - const instance = this.sales[line.instance]; - return `${instance.quantity} ${instance.concept}`; + const sales = this.getCheckedLines(); + const items = sales.map(sale => { + return `${sale.quantity} ${sale.concept}`; }); const notAvailables = items.join(', '); const params = { @@ -352,6 +413,79 @@ class Controller { hasInvoice() { return this.ticket.refFk !== null; } + + /** + * Inserts a new instance + */ + add() { + this.$scope.model.insert({}); + } + + /* + * Creates a new sale if it's a new instance + * Updates the sale quantity for existing instance + */ + onChangeQuantity(sale) { + if (!sale.id) + this.addSale(sale); + else + this.updateQuantity(sale); + } + + /* + * Updates a sale quantity + */ + updateQuantity(sale) { + const data = {quantity: parseInt(sale.quantity)}; + const query = `/api/Sales/${sale.id}/updateQuantity`; + this.$http.post(query, data).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }).catch(e => { + this.$scope.model.refresh(); + throw e; + }); + } + + /* + * Updates a sale concept + */ + updateConcept(sale) { + const data = {concept: sale.concept}; + const query = `/api/Sales/${sale.id}`; + this.$http.patch(query, data).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }).catch(e => { + this.$scope.model.refresh(); + throw e; + }); + } + + /* + * Adds a new sale + */ + addSale(sale) { + const data = { + itemId: sale.itemFk, + quantity: sale.quantity + }; + const query = `/api/tickets/${this.ticket.id}/addSale`; + this.$http.post(query, data).then(res => { + if (!res.data) return; + + const newSale = res.data; + + sale.id = newSale.id; + sale.image = newSale.item.image; + sale.subName = newSale.item.subName; + sale.concept = newSale.concept; + sale.quantity = newSale.quantity; + sale.discount = newSale.discount; + sale.price = newSale.price; + sale.item = newSale.item; + + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }); + } } Controller.$inject = ['$scope', '$state', '$http', 'vnApp', '$translate']; diff --git a/modules/ticket/front/sale/locale/es.yml b/modules/ticket/front/sale/locale/es.yml index 707de7c0f..b8966232f 100644 --- a/modules/ticket/front/sale/locale/es.yml +++ b/modules/ticket/front/sale/locale/es.yml @@ -1,4 +1,5 @@ New price: Nuevo precio +Add item: Añadir artículo Add turn: Añadir a turno Delete ticket: Borrar ticket Mark as reserved: Marcar como reservado @@ -16,13 +17,6 @@ You have to allow pop-ups in your web browser to use this functionality: Disc: Dto Available: Disponible In which day you want to add the ticket?: ¿A que dia quieres añadir el ticket? -Monday: Lunes -Tuesday: Martes -Wednesday: Miércoles -Thursday: Jueves -Friday: Viernes -Saturday: Sábado -Sunday: Domingo Add claim: Crear reclamación Claim: Reclamación Transfer lines: Transferir líneas @@ -31,4 +25,6 @@ Reserved: Reservado SMSAvailability: >- Verdnatura le comunica: Pedido {{ticketFk}} día {{created | date: "dd/MM/yyyy"}}. {{notAvailables}} no disponible/s. Disculpe las molestias. -Continue anyway?: ¿Continuar de todas formas? \ No newline at end of file +Continue anyway?: ¿Continuar de todas formas? +This ticket is now empty: El ticket ha quedado vacio +Do you want to delete it?: ¿Quieres borrarlo? \ No newline at end of file diff --git a/modules/ticket/front/sale/editDiscount.spec.js b/modules/ticket/front/sale/specs/editDiscount.spec.js similarity index 83% rename from modules/ticket/front/sale/editDiscount.spec.js rename to modules/ticket/front/sale/specs/editDiscount.spec.js index 2fef13106..afe94bd73 100644 --- a/modules/ticket/front/sale/editDiscount.spec.js +++ b/modules/ticket/front/sale/specs/editDiscount.spec.js @@ -1,4 +1,4 @@ -import './editDiscount.js'; +import '../editDiscount.js'; describe('Ticket', () => { describe('Component vnTicketSaleEditDiscount', () => { @@ -18,9 +18,9 @@ describe('Ticket', () => { }; }}; $state = _$state_; - $state.params.id = 1; + $state.params.id = 11; controller = $componentController('vnTicketSaleEditDiscount', {$scope, $state}); - controller._edit = [{id: 3, discount: 15}]; + controller._edit = [{id: 3}]; controller.onHide = () => {}; })); @@ -58,24 +58,26 @@ describe('Ticket', () => { controller.bulk = true; controller.newDiscount = 15; - $httpBackend.expectPOST(`/ticket/api/Sales/updateDiscount`).respond(); + $httpBackend.expectPOST(`/api/Tickets/11/updateDiscount`).respond(); controller.updateDiscount(); $httpBackend.flush(); }); - it('should call vnApp.showError if the discount value hasnt has been modified and the bulk value is false', () => { + it(`should throw if there's no changes on discount and it isn't bulk`, () => { controller.bulk = false; + controller.newDiscount = 15; + controller.edit = [{discount: 15}]; spyOn(controller.vnApp, 'showError'); controller.updateDiscount(); - expect(controller.vnApp.showError).toHaveBeenCalledWith('There is no changes to save'); + expect(controller.vnApp.showError).toHaveBeenCalledWith('There are no changes to save'); }); }); - describe('clear()', () => { + describe('clearDiscount()', () => { it('should set newDiscount to null', () => { - controller.clear(); + controller.clearDiscount(); expect(controller.newDiscount).toEqual(null); }); diff --git a/modules/ticket/front/sale/index.spec.js b/modules/ticket/front/sale/specs/index.spec.js similarity index 65% rename from modules/ticket/front/sale/index.spec.js rename to modules/ticket/front/sale/specs/index.spec.js index 23bc4b809..938b4c252 100644 --- a/modules/ticket/front/sale/index.spec.js +++ b/modules/ticket/front/sale/specs/index.spec.js @@ -1,4 +1,4 @@ -import './index.js'; +import '../index.js'; describe('Ticket', () => { describe('Component vnTicketSale', () => { @@ -45,8 +45,8 @@ describe('Ticket', () => { $httpBackend = _$httpBackend_; $httpBackend.whenGET(/api\/Tickets\/1\/getSales.*/).respond(sales); - $httpBackend.whenGET(`/ticket/api/Tickets/1/getVAT`).respond(200, 10.5); - $httpBackend.whenGET(`/ticket/api/Tickets/1/subtotal`).respond(200, 227.5); + $httpBackend.whenGET(`/api/Tickets/1/getVAT`).respond(200, 10.5); + $httpBackend.whenGET(`/api/Tickets/1/subtotal`).respond(200, 227.5); $element = $compile('')($scope); controller = $element.controller('vnTicketSale'); @@ -64,8 +64,10 @@ describe('Ticket', () => { it('should perform a query and call windows open', () => { spyOn(controller.$state, 'go'); - let res = {id: 1}; - $httpBackend.expectPOST(`claim/api/Claims/createFromSales`).respond(res); + const claim = {id: 1}; + const sales = [{id: 1}, {id: 2}]; + $httpBackend.when('POST', `/api/Claims/createFromSales`, {claim, sales}).respond(claim); + $httpBackend.expect('POST', `/api/Claims/createFromSales`).respond(claim); controller.createClaim(); $httpBackend.flush(); @@ -93,7 +95,7 @@ describe('Ticket', () => { it('should make an array of the instances with the property checked true()', () => { let sale = controller.sales[1]; sale.checked = true; - let expectedResult = [{id: sale.id, instance: 1}]; + let expectedResult = [sale]; expect(controller.getCheckedLines()).toEqual(expectedResult); }); @@ -106,7 +108,7 @@ describe('Ticket', () => { let res = [{id: 3}]; spyOn(controller, 'onStateChange'); - $httpBackend.whenGET(`/ticket/api/States?filter=${filter}`).respond(res); + $httpBackend.whenGET(`/api/States?filter=${filter}`).respond(res); controller.onStateOkClick(); $httpBackend.flush(); @@ -116,7 +118,7 @@ describe('Ticket', () => { describe('onStateChange()', () => { it('should perform a post and then call a function', () => { - $httpBackend.expectPOST(`/ticket/api/TicketTrackings/changeState`).respond(); + $httpBackend.expectPOST(`/api/TicketTrackings/changeState`).respond(); controller.onStateChange(3); $httpBackend.flush(); }); @@ -126,7 +128,7 @@ describe('Ticket', () => { it('should call getCheckedLines, call removeInstances, and make a query', () => { controller.sales[1].checked = true; - $httpBackend.whenPOST(`/ticket/api/Sales/removes`).respond(); + $httpBackend.whenPOST(`/api/Sales/removes`).respond(); controller.onRemoveLinesClick('ACCEPT'); $httpBackend.flush(); @@ -156,17 +158,15 @@ describe('Ticket', () => { describe('setReserved()', () => { it('should call getCheckedLines, $.index.accept and make a query ', () => { - controller.sales[1].checked = true; + const sale = controller.sales[1]; + sale.checked = true; let expectedRequest = { - sales: [{ - id: sales[1].id, - instance: 1 - }], + sales: [sale], ticketFk: ticket.id, reserved: false }; - $httpBackend.expectPOST(`/ticket/api/Sales/reserve`, expectedRequest).respond(); + $httpBackend.expectPOST(`/api/Sales/reserve`, expectedRequest).respond(); controller.unmarkAsReserved(false); $httpBackend.flush(); }); @@ -184,5 +184,55 @@ describe('Ticket', () => { expect(controller.newSMS.message).not.toEqual(''); }); }); + + describe('updateQuantity()', () => { + it('should make a POST query saving sale quantity', () => { + const data = {quantity: 10}; + const sale = sales[0]; + sale.quantity = 10; + + $httpBackend.when('POST', `/api/Sales/1/updateQuantity`, data).respond(); + $httpBackend.expect('POST', `/api/Sales/1/updateQuantity`, data).respond(); + controller.updateQuantity(sale); + $httpBackend.flush(); + }); + }); + + describe('updateConcept()', () => { + it('should make a POST query saving sale concept', () => { + const data = {concept: 'My new weapon'}; + const sale = sales[0]; + sale.concept = 'My new weapon'; + + $httpBackend.when('PATCH', `/api/Sales/1`, data).respond(); + $httpBackend.expect('PATCH', `/api/Sales/1`, data).respond(); + controller.updateConcept(sale); + $httpBackend.flush(); + }); + }); + + describe('addSale()', () => { + it('should make a POST query adding a new sale', () => { + const newSale = {itemFk: 4, quantity: 10}; + const params = {itemId: 4, quantity: 10}; + + const expectedResult = { + id: 30, + quantity: 10, + discount: 0, + price: 0, + itemFk: 4, + item: { + subName: 'Item subName', + image: '30.png' + } + }; + + $httpBackend.when('POST', `/api/tickets/1/addSale`, params).respond(expectedResult); + $httpBackend.expect('POST', `/api/tickets/1/addSale`, params).respond(expectedResult); + controller.addSale(newSale); + $httpBackend.flush(); + }); + }); }); }); diff --git a/modules/ticket/front/services/index.html b/modules/ticket/front/services/index.html index 9f943b7a4..dc7f5b92c 100644 --- a/modules/ticket/front/services/index.html +++ b/modules/ticket/front/services/index.html @@ -2,18 +2,17 @@ vn-id="model" url="/ticket/api/TicketServices" link="{ticketFk: $ctrl.$stateParams.id}" - data="services" + data="$ctrl.services" auto-load="true"> + data="$ctrl.services">
- + + + - \ No newline at end of file + + + + + +
New service type
+ + + + +
+ + + + +
\ No newline at end of file diff --git a/modules/ticket/front/services/index.js b/modules/ticket/front/services/index.js index b9bccd446..8d2566948 100644 --- a/modules/ticket/front/services/index.js +++ b/modules/ticket/front/services/index.js @@ -1,21 +1,71 @@ import ngModule from '../module'; +import UserError from 'core/lib/user-error'; class Controller { - constructor($scope, $stateParams) { + constructor($http, $scope, $stateParams, vnApp, $translate, $element) { + this.$http = $http; this.$scope = $scope; this.$stateParams = $stateParams; + this.vnApp = vnApp; + this.$translate = $translate; + this.$element = $element; + this.services = []; + } + + $onInit() { + this.getDefaultTaxClass(); + } + + getDefaultTaxClass() { + let config = {params: { + filter: { + where: { + code: 'G' + } + } + }}; + + let query = '/api/TaxClasses/findOne'; + this.$http.get(query, config).then(res => { + if (res.data) + this.defaultTaxClass = res.data; + }); } add() { this.$scope.model.insert({ - taxClassFk: 2, + taxClassFk: this.defaultTaxClass.id, quantity: 1, ticketFk: this.$stateParams.id }); } + onNewServiceTypeOpen() { + this.newServiceType.name = ''; + + this.nameInput = this.$element[0].querySelector('.edit input'); + this.nameInput.focus(); + } + + newServiceTypeDialog(elementIndex) { + this.$scope.createServiceTypeDialog.show(); + this.currentServiceIndex = elementIndex; + } + + onNewServiceTypeResponse(response) { + if (response == 'ACCEPT') { + if (!this.newServiceType.name) + throw new UserError(`Name can't be empty`); + + this.$http.post(`/api/TicketServiceTypes`, this.newServiceType).then(response => { + this.services[this.currentServiceIndex].description = response.data.name; + }); + } + } + onSubmit() { this.$scope.watcher.check(); + this.$scope.model.save().then(() => { this.$scope.watcher.notifySaved(); this.$scope.model.refresh(); @@ -23,7 +73,7 @@ class Controller { } } -Controller.$inject = ['$scope', '$stateParams']; +Controller.$inject = ['$http', '$scope', '$stateParams', 'vnApp', '$translate', '$element']; ngModule.component('vnTicketService', { template: require('./index.html'), diff --git a/modules/ticket/front/services/index.spec.js b/modules/ticket/front/services/index.spec.js new file mode 100644 index 000000000..410b7a090 --- /dev/null +++ b/modules/ticket/front/services/index.spec.js @@ -0,0 +1,71 @@ +import './index.js'; +import UserError from 'core/lib/user-error'; + +describe('Ticket component vnTicketService', () => { + let controller; + let $httpBackend; + let $httpParamSerializer; + let $scope; + let $element; + + beforeEach(ngModule('ticket')); + + beforeEach(angular.mock.inject(($componentController, _$httpBackend_, _$httpParamSerializer_, $rootScope) => { + $element = angular.element(`
`); + $httpBackend = _$httpBackend_; + $httpParamSerializer = _$httpParamSerializer_; + $scope = $rootScope.$new(); + controller = $componentController('vnTicketService', {$scope, $element}); + })); + + describe('getDefaultTaxClass', () => { + it('should set the default tax class in the controller', () => { + const config = { + filter: { + where: { + code: 'G' + } + } + }; + let serializedParams = $httpParamSerializer(config); + + $httpBackend.when('GET', `/api/TaxClasses/findOne?${serializedParams}`).respond({id: 4000, name: 'Whatever', code: 'GG'}); + $httpBackend.expect('GET', `/api/TaxClasses/findOne?${serializedParams}`); + controller.getDefaultTaxClass(); + $httpBackend.flush(); + + expect(controller.defaultTaxClass.code).toEqual('GG'); + }); + }); + + describe('onNewServiceTypeResponse', () => { + it(`should throw an error if the new service description is empty`, () => { + controller.newServiceType = {name: undefined}; + + let error; + try { + controller.onNewServiceTypeResponse('ACCEPT'); + } catch (e) { + error = e.message; + } + + expect(error).toBe(`Name can't be empty`); + }); + + it('should set the description of the selected service upon service type creation', () => { + controller.services = [ + {id: 1, description: 'not too great service'} + ]; + + controller.newServiceType = {name: 'totally new stuff'}; + controller.currentServiceIndex = 0; + + $httpBackend.when('POST', '/api/TicketServiceTypes').respond({id: 4001, name: 'great service!'}); + $httpBackend.expect('POST', '/api/TicketServiceTypes'); + controller.onNewServiceTypeResponse('ACCEPT'); + $httpBackend.flush(); + + expect(controller.services[0].description).toEqual('great service!'); + }); + }); +}); diff --git a/modules/ticket/front/services/locale/es.yml b/modules/ticket/front/services/locale/es.yml index 9059c9250..08788fc09 100644 --- a/modules/ticket/front/services/locale/es.yml +++ b/modules/ticket/front/services/locale/es.yml @@ -1,4 +1,5 @@ Service: Servicios Tax class: Tipo IVA Add service: Añadir servicio -Remove service: Quitar servicio \ No newline at end of file +Remove service: Quitar servicio +New service type: Nuevo tipo de servicio \ No newline at end of file diff --git a/modules/ticket/front/summary/index.html b/modules/ticket/front/summary/index.html index 866283a6a..7105e0515 100644 --- a/modules/ticket/front/summary/index.html +++ b/modules/ticket/front/summary/index.html @@ -2,7 +2,7 @@
Ticket #{{$ctrl.summary.id}} - {{$ctrl.summary.client.name}} ({{$ctrl.summary.client.id}}) - {{$ctrl.summary.nickname}} @@ -101,6 +101,7 @@ {{::sale.price | currency: 'EUR':2}} @@ -184,8 +185,11 @@ + diff --git a/modules/ticket/front/summary/index.js b/modules/ticket/front/summary/index.js index 52ffa40cf..2bdbe7fef 100644 --- a/modules/ticket/front/summary/index.js +++ b/modules/ticket/front/summary/index.js @@ -84,6 +84,17 @@ class Controller { this.getSummary(); }); } + + getRequestState(state) { + switch (state) { + case null: + return 'New'; + case false: + return 'Denied'; + case true: + return 'Acepted'; + } + } } Controller.$inject = ['$scope', '$state', '$http', 'vnApp', '$translate']; diff --git a/modules/ticket/front/volume/index.html b/modules/ticket/front/volume/index.html index cfb095bd5..ef21d8f50 100644 --- a/modules/ticket/front/volume/index.html +++ b/modules/ticket/front/volume/index.html @@ -46,6 +46,7 @@ {{::sale.quantity}} diff --git a/modules/ticket/front/weekly/index.html b/modules/ticket/front/weekly/index.html index 3ae3bf7e0..708e15ba2 100644 --- a/modules/ticket/front/weekly/index.html +++ b/modules/ticket/front/weekly/index.html @@ -1,14 +1,25 @@ + primary-key="ticketFk"> -
+
+
+ + + + + + +
@@ -30,27 +41,35 @@ - - {{::weekly.ticket.client.name}} + + {{::weekly.clientName}} - - {{::weekly.ticket.warehouse.name}} - {{::weekly.ticket.client.salesPerson.firstName}} {{::weekly.ticket.client.salesPerson.name}} + {{::weekly.warehouseName}} + + + {{::weekly.nickName}} + + @@ -60,14 +79,17 @@
- +
- + + - \ No newline at end of file + question="You are going to delete this turn" + message="This turn will be removed! Continue anyway?"> + diff --git a/modules/ticket/front/weekly/index.js b/modules/ticket/front/weekly/index.js index 0d2355a17..ddac0d1b5 100644 --- a/modules/ticket/front/weekly/index.js +++ b/modules/ticket/front/weekly/index.js @@ -2,35 +2,13 @@ import ngModule from '../module'; import './style.scss'; export default class Controller { - constructor($scope, vnApp, $translate) { - this.$scope = $scope; + constructor($scope, vnApp, $translate, $http) { + this.$ = $scope; this.vnApp = vnApp; - this._ = $translate; + this.$translate = $translate; + this.$http = $http; this.ticketSelected = null; - this.filter = { - include: { - relation: 'ticket', - scope: { - fields: ['id', 'clientFk', 'companyFk', 'warehouseFk'], - include: [ - { - relation: 'client', - scope: { - fields: ['salesPersonFk', 'name'], - include: { - relation: 'salesPerson', - scope: { - fields: ['id', 'firstName', 'name'] - } - } - } - }, - {relation: 'warehouse'} - ] - } - } - }; this.weekdays = [ {id: 0, name: 'Monday'}, @@ -43,28 +21,53 @@ export default class Controller { ]; } - onSave() { - this.vnApp.showSuccess(this._.instant('Data saved!')); + onWeekdayUpdate(ticketFk, weekDay) { + const params = {ticketFk, weekDay}; + this.$http.patch('/ticket/api/TicketWeeklies/', params).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + }); } + deleteWeekly(index) { + this.ticketIndex = index; + this.$.deleteWeekly.show(); + event.stopImmediatePropagation(); + } + + onSearch(params) { + if (params) + this.$.model.applyFilter(null, params); + else + this.$.model.clear(); + } + + showClientDescriptor(event, clientFk) { - this.$scope.clientDescriptor.clientFk = clientFk; - this.$scope.clientDescriptor.parent = event.target; - this.$scope.clientDescriptor.show(); + this.$.clientDescriptor.clientFk = clientFk; + this.$.clientDescriptor.parent = event.target; + this.$.clientDescriptor.show(); event.preventDefault(); event.stopImmediatePropagation(); } showTicketDescriptor(event, ticketFk) { - this.$scope.ticketDescriptor.ticketFk = ticketFk; - this.$scope.ticketDescriptor.parent = event.target; - this.$scope.ticketDescriptor.show(); + this.$.ticketDescriptor.ticketFk = ticketFk; + this.$.ticketDescriptor.parent = event.target; + this.$.ticketDescriptor.show(); + event.preventDefault(); + event.stopImmediatePropagation(); + } + + showWorkerDescriptor(event, workerFk) { + this.$.workerDescriptor.workerFk = workerFk; + this.$.workerDescriptor.parent = event.target; + this.$.workerDescriptor.show(); event.preventDefault(); event.stopImmediatePropagation(); } onDescriptorLoad() { - this.$scope.popover.relocate(); + this.$.popover.relocate(); } preventNavigation(event) { @@ -72,13 +75,19 @@ export default class Controller { event.stopImmediatePropagation(); } - deleteWeekly(expedition) { - this.expeditionId = expedition.id; - this.$scope.deleteWeekly.show(); + returnDialog(response) { + const ticket = this.$.model.data[this.ticketIndex]; + if (response === 'ACCEPT') { + this.$http.delete(`/ticket/api/TicketWeeklies/${ticket.ticketFk}`).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Data saved!')); + this.$.model.remove(this.ticketIndex); + }); + } } } -Controller.$inject = ['$scope', 'vnApp', '$translate']; + +Controller.$inject = ['$scope', 'vnApp', '$translate', '$http']; ngModule.component('vnTicketWeekly', { template: require('./index.html'), diff --git a/modules/ticket/front/weekly/locale/es.yml b/modules/ticket/front/weekly/locale/es.yml index 949e2bcb8..e4e7ef068 100644 --- a/modules/ticket/front/weekly/locale/es.yml +++ b/modules/ticket/front/weekly/locale/es.yml @@ -1,2 +1,6 @@ Turn: Turno Ticket ID: ID Ticket +Weekly: Turnos +You are going to delete this turn: Vas a eliminar este turno +This turn will be removed! Continue anyway?: Se eliminará este turno! ¿Continuar de todas formas? +Search turns by id or client id: Busca turnos por el identificador o el identificador del cliente \ No newline at end of file diff --git a/modules/worker/back/methods/worker-calendar/absences.js b/modules/worker/back/methods/worker-calendar/absences.js index 0dc3d9af0..72e75f227 100644 --- a/modules/worker/back/methods/worker-calendar/absences.js +++ b/modules/worker/back/methods/worker-calendar/absences.js @@ -1,5 +1,4 @@ const UserError = require('vn-loopback/util/user-error'); -const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethodCtx('absences', { @@ -38,28 +37,13 @@ module.exports = Self => { Self.absences = async(ctx, workerFk, yearStarted, yearEnded) => { const models = Self.app.models; - const conn = Self.dataSource.connector; - const myUserId = ctx.req.accessToken.userId; - const myWorker = await models.Worker.findOne({where: {userFk: myUserId}}); - const calendar = {totalHolidays: 0, holidaysEnjoyed: 0}; - const holidays = []; - const stmts = []; + const isSubordinate = await models.Worker.isSubordinate(ctx, workerFk); - // Get subordinates - stmts.push(new ParameterizedSQL('CALL vn.subordinateGetList(?)', [myWorker.id])); - let subordinatesIndex = stmts.push('SELECT * FROM tmp.subordinate') - 1; - let sql = ParameterizedSQL.join(stmts, ';'); - let result = await conn.executeStmt(sql); - - const subordinates = result[subordinatesIndex]; - const isSubordinate = subordinates.find(subordinate => { - return subordinate.workerFk === workerFk; - }); - const isHr = await models.Account.hasRole(myUserId, 'hr'); - - if (!isHr && workerFk !== myWorker.id && !isSubordinate) + if (!isSubordinate) throw new UserError(`You don't have enough privileges`); + const calendar = {totalHolidays: 0, holidaysEnjoyed: 0}; + const holidays = []; // Get absences of year let absences = await Self.find({ diff --git a/modules/worker/back/methods/worker-mana/specs/getCurrentWorkerMana.spec.js b/modules/worker/back/methods/worker-mana/specs/getCurrentWorkerMana.spec.js index 1d48eef58..8d626e720 100644 --- a/modules/worker/back/methods/worker-mana/specs/getCurrentWorkerMana.spec.js +++ b/modules/worker/back/methods/worker-mana/specs/getCurrentWorkerMana.spec.js @@ -4,7 +4,7 @@ describe('workerMana getCurrentWorkerMana()', () => { it('should get the mana of the logged worker', async() => { let mana = await app.models.WorkerMana.getCurrentWorkerMana({req: {accessToken: {userId: 18}}}); - expect(mana).toEqual(221); + expect(mana).toEqual(124); }); it('should return 0 if the user doesnt uses mana', async() => { diff --git a/modules/worker/back/methods/worker-time-control/addTime.js b/modules/worker/back/methods/worker-time-control/addTime.js new file mode 100644 index 000000000..cb639f9af --- /dev/null +++ b/modules/worker/back/methods/worker-time-control/addTime.js @@ -0,0 +1,42 @@ +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethodCtx('addTime', { + description: 'Adds a new hour registry', + accessType: 'WRITE', + accepts: [{ + arg: 'data', + type: 'object', + required: true, + description: 'workerFk, timed', + http: {source: 'body'} + }], + returns: [{ + type: 'Object', + root: true + }], + http: { + path: `/addTime`, + verb: 'POST' + } + }); + + Self.addTime = async(ctx, data) => { + const Worker = Self.app.models.Worker; + const myUserId = ctx.req.accessToken.userId; + const myWorker = await Worker.findOne({where: {userFk: myUserId}}); + const isSubordinate = await Worker.isSubordinate(ctx, data.workerFk); + const isTeamBoss = await Self.app.models.Account.hasRole(myUserId, 'teamBoss'); + + if (isSubordinate === false || (isSubordinate && myWorker.id == data.workerFk && !isTeamBoss)) + throw new UserError(`You don't have enough privileges`); + + const subordinate = await Worker.findById(data.workerFk); + + return Self.create({ + userFk: subordinate.userFk, + timed: data.timed, + manual: 1 + }); + }; +}; diff --git a/modules/worker/back/methods/worker-time-control/filter.js b/modules/worker/back/methods/worker-time-control/filter.js new file mode 100644 index 000000000..041c6cbfb --- /dev/null +++ b/modules/worker/back/methods/worker-time-control/filter.js @@ -0,0 +1,46 @@ +const mergeFilters = require('vn-loopback/util/filter').mergeFilters; +const UserError = require('vn-loopback/util/user-error'); + +module.exports = Self => { + Self.remoteMethod('filter', { + description: 'Find all instances of the model matched by filter from the data source.', + accessType: 'READ', + accepts: [{ + arg: 'ctx', + type: 'Object', + http: {source: 'context'} + }, { + arg: 'filter', + type: 'Object', + description: `Filter defining where, order, offset, and limit - must be a JSON-encoded string` + }, { + arg: 'workerFk', + type: 'Number', + required: true, + description: `The worker id` + }], + returns: { + type: ['Object'], + root: true + }, + http: { + path: '/filter', + verb: 'GET' + } + }); + + Self.filter = async(ctx, filter) => { + const Worker = Self.app.models.Worker; + const isSubordinate = await Worker.isSubordinate(ctx, ctx.args.workerFk); + + if (isSubordinate === false) + throw new UserError(`You don't have enough privileges`); + + const subordinate = await Worker.findById(ctx.args.workerFk); + filter = mergeFilters(filter, {where: { + userFk: subordinate.userFk + }}); + + return Self.find(filter); + }; +}; diff --git a/modules/worker/back/methods/worker-time-control/specs/filter.spec.js b/modules/worker/back/methods/worker-time-control/specs/filter.spec.js new file mode 100644 index 000000000..913dfb355 --- /dev/null +++ b/modules/worker/back/methods/worker-time-control/specs/filter.spec.js @@ -0,0 +1,45 @@ +const app = require('vn-loopback/server/server'); + +describe('workerTimeControl filter()', () => { + it('should return 1 result filtering by id', async() => { + let ctx = {req: {accessToken: {userId: 106}}, args: {workerFk: 106}}; + const firstHour = new Date(); + firstHour.setHours(7, 0, 0, 0); + const lastHour = new Date(); + lastHour.setDate(lastHour.getDate() + 1); + lastHour.setHours(15, 0, 0, 0); + + const filter = { + where: { + timed: {between: [firstHour, lastHour]} + } + }; + let result = await app.models.WorkerTimeControl.filter(ctx, filter); + + expect(result.length).toEqual(4); + }); + + it('should return a privilege error for a non subordinate worker', async() => { + let ctx = {req: {accessToken: {userId: 107}}, args: {workerFk: 106}}; + const firstHour = new Date(); + firstHour.setHours(7, 0, 0, 0); + const lastHour = new Date(); + lastHour.setDate(lastHour.getDate() + 1); + lastHour.setHours(15, 0, 0, 0); + + const filter = { + where: { + timed: {between: [firstHour, lastHour]} + } + }; + + let error; + await app.models.WorkerTimeControl.filter(ctx, filter).catch(e => { + error = e; + }).finally(() => { + expect(error.message).toEqual(`You don't have enough privileges`); + }); + + expect(error).toBeDefined(); + }); +}); diff --git a/modules/worker/back/methods/worker/isSubordinate.js b/modules/worker/back/methods/worker/isSubordinate.js new file mode 100644 index 000000000..a85484668 --- /dev/null +++ b/modules/worker/back/methods/worker/isSubordinate.js @@ -0,0 +1,41 @@ +module.exports = Self => { + Self.remoteMethod('isSubordinate', { + description: 'Check if an employee is subordinate', + accessType: 'READ', + accepts: [{ + arg: 'ctx', + type: 'Object', + http: {source: 'context'} + }, { + arg: 'id', + type: 'number', + required: true, + description: 'The worker id', + http: {source: 'path'} + }], + returns: { + type: 'boolean', + root: true + }, + http: { + path: `/:id/isSubordinate`, + verb: 'GET' + } + }); + + Self.isSubordinate = async(ctx, id) => { + const models = Self.app.models; + const myUserId = ctx.req.accessToken.userId; + + const mySubordinates = await Self.mySubordinates(ctx); + const isSubordinate = mySubordinates.find(subordinate => { + return subordinate.workerFk === id; + }); + + const isHr = await models.Account.hasRole(myUserId, 'hr'); + if (isHr || isSubordinate) + return true; + + return false; + }; +}; diff --git a/modules/worker/back/methods/worker/mySubordinates.js b/modules/worker/back/methods/worker/mySubordinates.js new file mode 100644 index 000000000..571edc7f8 --- /dev/null +++ b/modules/worker/back/methods/worker/mySubordinates.js @@ -0,0 +1,39 @@ + +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; + +module.exports = Self => { + Self.remoteMethod('mySubordinates', { + description: 'Returns a list of a subordinate workers', + accessType: 'READ', + accepts: [{ + arg: 'ctx', + type: 'Object', + http: {source: 'context'} + }], + returns: { + type: ['Object'], + root: true + }, + http: { + path: `/mySubordinates`, + verb: 'GET' + } + }); + + Self.mySubordinates = async ctx => { + const conn = Self.dataSource.connector; + const myUserId = ctx.req.accessToken.userId; + const myWorker = await Self.app.models.Worker.findOne({ + where: {userFk: myUserId} + }); + const stmts = []; + + stmts.push(new ParameterizedSQL('CALL vn.subordinateGetList(?)', [myWorker.id])); + stmts.push('SELECT * FROM tmp.subordinate'); + + let sql = ParameterizedSQL.join(stmts, ';'); + let result = await conn.executeStmt(sql); + + return result[1]; + }; +}; diff --git a/modules/worker/back/methods/worker/specs/isSubordinate.spec.js b/modules/worker/back/methods/worker/specs/isSubordinate.spec.js new file mode 100644 index 000000000..53a620fcc --- /dev/null +++ b/modules/worker/back/methods/worker/specs/isSubordinate.spec.js @@ -0,0 +1,27 @@ +const app = require('vn-loopback/server/server'); + +describe('worker isSubordinate()', () => { + it('should return truthy if a worker is a subordinate', async() => { + let ctx = {req: {accessToken: {userId: 19}}}; + let workerFk = 106; + let result = await app.models.Worker.isSubordinate(ctx, workerFk); + + expect(result).toBeTruthy(); + }); + + it('should return truthy for an hr person', async() => { + let ctx = {req: {accessToken: {userId: 37}}}; + let workerFk = 106; + let result = await app.models.Worker.isSubordinate(ctx, workerFk); + + expect(result).toBeTruthy(); + }); + + it('should return truthy if the current user is himself', async() => { + let ctx = {req: {accessToken: {userId: 106}}}; + let workerFk = 106; + let result = await app.models.Worker.isSubordinate(ctx, workerFk); + + expect(result).toBeTruthy(); + }); +}); diff --git a/modules/worker/back/methods/worker/specs/mySubordinates.spec.js b/modules/worker/back/methods/worker/specs/mySubordinates.spec.js new file mode 100644 index 000000000..5a458a1bc --- /dev/null +++ b/modules/worker/back/methods/worker/specs/mySubordinates.spec.js @@ -0,0 +1,19 @@ +const app = require('vn-loopback/server/server'); + +describe('worker mySubordinates()', () => { + it('should return an array of subordinates greather than 1', async() => { + let ctx = {req: {accessToken: {userId: 9}}}; + let result = await app.models.Worker.mySubordinates(ctx); + + expect(result.length).toBeGreaterThan(1); + }); + + it('should return an array of one subordinate', async() => { + let ctx = {req: {accessToken: {userId: 106}}}; + let result = await app.models.Worker.mySubordinates(ctx); + const workerFk = 106; + + expect(result.length).toEqual(1); + expect(result[0].workerFk).toEqual(workerFk); + }); +}); diff --git a/modules/worker/back/models/worker-time-control.js b/modules/worker/back/models/worker-time-control.js index 0366cc8c3..4ec5bf8dd 100644 --- a/modules/worker/back/models/worker-time-control.js +++ b/modules/worker/back/models/worker-time-control.js @@ -1,6 +1,8 @@ const UserError = require('vn-loopback/util/user-error'); module.exports = Self => { + require('../methods/worker-time-control/filter')(Self); + require('../methods/worker-time-control/addTime')(Self); require('../methods/worker-time-control/addAutoTime')(Self); require('../methods/worker-time-control/getHoursWorked')(Self); require('../methods/worker-time-control/getWorkedWeek')(Self); diff --git a/modules/worker/back/models/worker-time-control.json b/modules/worker/back/models/worker-time-control.json index 1f8501b07..bfd6a44aa 100644 --- a/modules/worker/back/models/worker-time-control.json +++ b/modules/worker/back/models/worker-time-control.json @@ -33,4 +33,4 @@ "foreignKey": "warehouseFk" } } -} \ No newline at end of file +} diff --git a/modules/worker/back/models/worker.js b/modules/worker/back/models/worker.js index 1ae37924a..1d2a62ce4 100644 --- a/modules/worker/back/models/worker.js +++ b/modules/worker/back/models/worker.js @@ -1,4 +1,6 @@ module.exports = Self => { require('../methods/worker/filter')(Self); + require('../methods/worker/mySubordinates')(Self); + require('../methods/worker/isSubordinate')(Self); require('../methods/worker/getWorkerInfo')(Self); }; diff --git a/modules/worker/front/calendar/index.html b/modules/worker/front/calendar/index.html index 472ceab33..9427ca9e8 100644 --- a/modules/worker/front/calendar/index.html +++ b/modules/worker/front/calendar/index.html @@ -1,14 +1,9 @@ - - - - -
Holidays
- - {{'Used' | translate}} {{$ctrl.calendar.holidaysEnjoyed}} - {{'of' | translate}} {{$ctrl.calendar.totalHolidays}} {{'days' | translate}} - -
-
+ + +
+
- -
+ + + + +
Holidays
+ + {{'Used' | translate}} {{$ctrl.calendar.holidaysEnjoyed}} + {{'of' | translate}} {{$ctrl.calendar.totalHolidays}} {{'days' | translate}} + +
+ +
+
+
\ No newline at end of file diff --git a/modules/worker/front/calendar/index.js b/modules/worker/front/calendar/index.js index 06e2d0f33..d1b042619 100644 --- a/modules/worker/front/calendar/index.js +++ b/modules/worker/front/calendar/index.js @@ -45,10 +45,11 @@ class Controller { const holidayName = holidayDetail || holidayType; events.push({ + name: holidayName, + description: holidayName, dated: holiday.dated, - className: 'red', - title: holidayName, - isRemovable: false + isRemovable: false, + style: {backgroundColor: '#FFFF00'} }); }); this.events = this.events.concat(events); @@ -62,11 +63,10 @@ class Controller { absences.forEach(absence => { const absenceType = absence.absenceType; events.push({ + name: absenceType.name, + description: absenceType.name, dated: absence.dated, - title: absenceType.name, - style: { - background: absenceType.rgb - } + style: {backgroundColor: absenceType.rgb} }); }); this.events = this.events.concat(events); @@ -106,6 +106,24 @@ class Controller { return months; } + + get absenceTypes() { + return this._absenceTypes; + } + + set absenceTypes(value) { + if (value) { + this._absenceTypes = value; + this.legends = []; + this._absenceTypes.forEach(absenceType => { + let legend = {}; + legend.id = absenceType.id; + legend.color = absenceType.rgb; + legend.name = absenceType.name; + this.legends.push(legend); + }); + } + } } Controller.$inject = ['$scope', '$http']; diff --git a/modules/worker/front/calendar/index.spec.js b/modules/worker/front/calendar/index.spec.js index d8f42f762..f29b8fecc 100644 --- a/modules/worker/front/calendar/index.spec.js +++ b/modules/worker/front/calendar/index.spec.js @@ -85,7 +85,7 @@ describe('Worker', () => { }); describe('setHolidays()', () => { - it(`should `, () => { + it(`should set holidays`, () => { const data = {holidays: [ {dated: new Date(), detail: {description: 'New year'}}, {dated: new Date(), detail: {description: 'Easter'}} @@ -93,13 +93,13 @@ describe('Worker', () => { controller.setHolidays(data); expect(controller.events.length).toEqual(2); - expect(controller.events[0].title).toEqual('New year'); + expect(controller.events[0].name).toEqual('New year'); expect(controller.events[0].isRemovable).toEqual(false); }); }); describe('setWorkerCalendar()', () => { - it(`should `, () => { + it(`should set absences of differente types`, () => { const data = {absences: [ {dated: new Date(), absenceType: {name: 'Holiday', rgb: '#000'}}, {dated: new Date(), absenceType: {name: 'Leave', rgb: '#000'}} @@ -107,11 +107,41 @@ describe('Worker', () => { controller.setWorkerCalendar(data); expect(controller.events.length).toEqual(2); - expect(controller.events[0].title).toEqual('Holiday'); + expect(controller.events[0].name).toEqual('Holiday'); expect(controller.events[0].style).toBeDefined(); - expect(controller.events[1].title).toEqual('Leave'); + expect(controller.events[1].name).toEqual('Leave'); expect(controller.events[1].style).toBeDefined(); }); }); + + describe('absenceTypes() setter', () => { + it(`should set the absence types in the controller`, () => { + const absenceTypes = [ + {id: 1, name: 'Holiday', rgb: '#000'}, + {id: 2, name: 'Leave', rgb: '#000'} + ]; + + expect(controller._absenceTypes).not.toBeDefined(); + + controller.absenceTypes = absenceTypes; + + expect(controller._absenceTypes.length).toEqual(2); + }); + + it(`should set the absence types in the controller as formated legends`, () => { + const absenceTypes = [ + {id: 1, name: 'Holiday', rgb: '#000'}, + {id: 2, name: 'Leave', rgb: '#000'} + ]; + + expect(controller.legends).not.toBeDefined(); + + controller.absenceTypes = absenceTypes; + + expect(controller.legends.length).toEqual(2); + expect(controller.legends[0].color).toBeDefined(); + expect(controller.legends[1].color).toBeDefined(); + }); + }); }); }); diff --git a/modules/worker/front/calendar/style.scss b/modules/worker/front/calendar/style.scss index 70503336a..5028edf32 100644 --- a/modules/worker/front/calendar/style.scss +++ b/modules/worker/front/calendar/style.scss @@ -1,5 +1,13 @@ @import "variables"; +.calendar-list .calendar { + border-bottom:1px solid #ddd +} + +.calendar-list .calendar:nth-child(2n + 1) { + border-right:1px solid #ddd +} + .calendar-list { align-items: flex-start; flex-wrap: wrap; @@ -9,7 +17,7 @@ box-sizing: border-box; padding: $pad-medium; overflow: hidden; - width: 20em + width: 50% } } diff --git a/modules/worker/front/index.js b/modules/worker/front/index.js index dce6d394a..71c529ea8 100644 --- a/modules/worker/front/index.js +++ b/modules/worker/front/index.js @@ -10,4 +10,5 @@ import './basic-data'; import './pbx'; import './department'; import './calendar'; +import './time-control'; import './log'; diff --git a/modules/worker/front/locale/es.yml b/modules/worker/front/locale/es.yml index e827b018d..3fa727801 100644 --- a/modules/worker/front/locale/es.yml +++ b/modules/worker/front/locale/es.yml @@ -16,4 +16,5 @@ User name: Usuario Departments: Departamentos Calendar: Calendario Search workers by id, firstName, lastName or user name: Buscar trabajadores por el identificador, nombre, apellidos o nombre de usuario -Data saved! User must access web: ¡Datos guardados! El usuario deberá acceder con su contraseña a la web para que los cambios surtan efecto. \ No newline at end of file +Time control: Control de horario +Data saved! User must access web: ¡Datos guardados! El usuario deberá acceder con su contraseña a la web para que los cambios surtan efecto. diff --git a/modules/worker/front/log/index.html b/modules/worker/front/log/index.html index 1c3c76459..8ba6b285b 100644 --- a/modules/worker/front/log/index.html +++ b/modules/worker/front/log/index.html @@ -1,8 +1,17 @@ + + History - + Date @@ -15,7 +24,7 @@ - + {{::log.creationDate | dateTime:'dd/MM/yyyy HH:mm'}}
@@ -23,7 +32,7 @@ Changed by: {{::log.user.name | dashIfEmpty}} @@ -45,7 +54,7 @@ {{::log.user.name | dashIfEmpty}} @@ -89,7 +98,7 @@ - + { + log.oldProperties = this.getInstance(log.oldInstance); + log.newProperties = this.getInstance(log.newInstance); + }); + } } showWorkerDescriptor(event, workerFk) { @@ -22,6 +51,22 @@ export default class Controller { this.$.workerDescriptor.parent = event.target; this.$.workerDescriptor.show(); } + + getInstance(instance) { + const properties = []; + let validDate = /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$/; + + if (typeof instance == 'object' && instance != null) { + Object.keys(instance).forEach(property => { + if (validDate.test(instance[property])) + instance[property] = new Date(instance[property]).toLocaleString('es-ES'); + + properties.push({key: property, value: instance[property]}); + }); + return properties; + } + return null; + } } Controller.$inject = ['$scope']; @@ -30,6 +75,8 @@ ngModule.component('vnLog', { controller: Controller, template: require('./index.html'), bindings: { - model: '<' + model: '<', + originId: '<', + url: '@' } }); diff --git a/modules/worker/front/pbx/index.html b/modules/worker/front/pbx/index.html index 32eedd377..c0b34a73b 100644 --- a/modules/worker/front/pbx/index.html +++ b/modules/worker/front/pbx/index.html @@ -6,7 +6,7 @@ - diff --git a/modules/worker/front/routes.json b/modules/worker/front/routes.json index 8b2fe193d..1b4f9ec2a 100644 --- a/modules/worker/front/routes.json +++ b/modules/worker/front/routes.json @@ -6,7 +6,8 @@ "menu": [ {"state": "worker.card.basicData", "icon": "settings"}, {"state": "worker.card.pbx", "icon": "icon-pbx"}, - {"state": "worker.card.calendar", "icon": "icon-calendar"} + {"state": "worker.card.calendar", "icon": "icon-calendar"}, + {"state": "worker.card.timeControl", "icon": "access_time"} ], "routes": [ { @@ -64,6 +65,15 @@ "worker": "$ctrl.worker" } }, + { + "url": "/time-control", + "state": "worker.card.timeControl", + "component": "vn-worker-time-control", + "description": "Time control", + "params": { + "worker": "$ctrl.worker" + } + }, { "url" : "/department", "state": "worker.department", diff --git a/modules/worker/front/time-control/index.html b/modules/worker/front/time-control/index.html new file mode 100644 index 000000000..941c0dbb6 --- /dev/null +++ b/modules/worker/front/time-control/index.html @@ -0,0 +1,87 @@ + + +
+ + + + + + +
{{::$ctrl.weekdayNames[$index].name}}
+ {{::weekday.dated | date: 'dd'}} + + {{::weekday.dated | date: 'MMMM'}} + +
+
+
+ + + +
+ + + {{hour.timed | dateTime: 'HH:mm'}} +
+
+
+
+ + + + {{$ctrl.getWeekdayTotalHours(weekday)}} h. + + + + + + + + + +
+
+
+ + + +
Hours
+ + +
+
+ + +
+
+ + + +
+
+ Add time +
+ +
+
+ + + + +
\ No newline at end of file diff --git a/modules/worker/front/time-control/index.js b/modules/worker/front/time-control/index.js new file mode 100644 index 000000000..2d23d378c --- /dev/null +++ b/modules/worker/front/time-control/index.js @@ -0,0 +1,246 @@ +import ngModule from '../module'; +import './style.scss'; + +class Controller { + constructor($scope, $http, $stateParams, $element) { + this.$stateParams = $stateParams; + this.$ = $scope; + this.$http = $http; + this.$element = $element; + this.defaultDate = new Date(); + this.currentWeek = []; + this.weekDays = []; + this.weekdayNames = [ + {name: 'Monday'}, + {name: 'Tuesday'}, + {name: 'Wednesday'}, + {name: 'Thursday'}, + {name: 'Friday'}, + {name: 'Saturday'}, + {name: 'Sunday'} + ]; + } + + + /** + * Gets worker data + */ + get worker() { + return this._worker; + } + + /** + * Sets worker data and retrieves + * worker hours + * + * @param {Object} value - Worker data + */ + set worker(value) { + this._worker = value; + + if (value) { + this.$.$applyAsync(() => { + this.getHours(); + }); + } + } + + /** + * Gets worker hours data + * + */ + get hours() { + return this._hours; + } + + /** + * Gets worker hours data + * + * @param {Object} value - Hours data + */ + set hours(value) { + this._hours = value; + if (value) this.build(); + } + + getHours() { + const params = {workerFk: this.worker.id}; + const filter = { + where: { + timed: {between: [this.started, this.ended]} + } + }; + + return this.$.model.applyFilter(filter, params); + } + + refresh() { + this.getHours().then(() => this.build()); + } + + build() { + let weekdays = new Array(7); + const currentWeek = []; + + for (let i = 0; i < weekdays.length; i++) { + const dated = new Date(); + dated.setHours(0, 0, 0, 0); + dated.setMonth(this.started.getMonth()); + dated.setDate(this.started.getDate() + i); + + const hours = this.hours.filter(hour => { + const timed = new Date(hour.timed); + const weekDay = timed.getDay() == 0 ? 7 : timed.getDay(); + return weekDay == (i + 1); + }); + + const sortedHours = hours.sort((a, b) => { + return new Date(a.timed) - new Date(b.timed); + }); + + weekdays[i] = {dated, hours: sortedHours}; + + currentWeek.push({ + dated: dated, + className: 'orange-circle', + title: 'Current week', + isRemovable: false + }); + } + + this.currentWeek = currentWeek; + this.weekDays = weekdays; + } + + get weekOffset() { + const currentDate = this.defaultDate; + const weekDay = currentDate.getDay() + 1; + + return weekDay - 2; + } + + /** + * Returns week start date + * from current selected week + */ + get started() { + const started = new Date(); + started.setMonth(this.defaultDate.getMonth()); + started.setDate(this.defaultDate.getDate() - this.weekOffset); + started.setHours(0, 0, 0, 0); + + return started; + } + + /** + * Returns week end date + * from current selected week + */ + get ended() { + const ended = new Date(); + ended.setHours(0, 0, 0, 0); + ended.setMonth(this.started.getMonth()); + ended.setDate(this.started.getDate() + 7); + + return ended; + } + + getWeekdayTotalHours(weekday) { + if (weekday.hours.length == 0) return 0; + + const hours = weekday.hours; + + let totalStamp = 0; + + hours.forEach((hour, index) => { + let currentHour = new Date(hour.timed); + let previousHour = new Date(hour.timed); + + if (index > 0 && (index % 2 == 1)) + previousHour = new Date(hours[index - 1].timed); + + const dif = Math.abs(previousHour - currentHour); + + totalStamp += dif; + }); + + if (totalStamp / 3600 / 1000 > 5) + totalStamp += (20 * 60 * 1000); + + weekday.total = totalStamp; + + return this.formatHours(totalStamp); + } + + get weekTotalHours() { + let total = 0; + + this.weekDays.forEach(weekday => { + if (weekday.total) + total += weekday.total; + }); + return this.formatHours(total); + } + + formatHours(timestamp) { + let hour = Math.floor(timestamp / 3600 / 1000); + let min = Math.floor(timestamp / 60 / 1000 - 60 * hour); + + if (hour < 10) hour = `0${hour}`; + if (min < 10) min = `0${min}`; + + return `${hour}:${min}`; + } + + onMoveNext() { + this.refresh(); + } + + onMovePrevious() { + this.refresh(); + } + + onSelection(value) { + const selected = value[0].dated; + this.defaultDate.setMonth(selected.getMonth()); + this.defaultDate.setDate(selected.getDate() - 1); + this.refresh(); + } + + showAddTimeDialog(weekday) { + const timed = new Date(weekday.dated); + const now = new Date(); + + now.setHours(now.getHours(), now.getMinutes(), 0, 0); + now.setMonth(timed.getMonth()); + now.setDate(timed.getDate()); + + this.newTime = now; + this.selectedWeekday = weekday; + this.$.addTimeDialog.show(); + + const selector = 'vn-dialog[vn-id="addTimeDialog"] input[type="time"]'; + const input = this.$element[0].querySelector(selector); + input.focus(); + } + + addTime(response) { + if (response === 'ACCEPT') { + let data = {workerFk: this.worker.id, timed: this.newTime}; + let query = `/api/WorkerTimeControls/addTime`; + this.$http.post(query, data).then(() => { + this.refresh(); + }); + } + } +} + +Controller.$inject = ['$scope', '$http', '$stateParams', '$element']; + +ngModule.component('vnWorkerTimeControl', { + template: require('./index.html'), + controller: Controller, + bindings: { + worker: '<' + } +}); diff --git a/modules/worker/front/time-control/index.spec.js b/modules/worker/front/time-control/index.spec.js new file mode 100644 index 000000000..a86c4336c --- /dev/null +++ b/modules/worker/front/time-control/index.spec.js @@ -0,0 +1,96 @@ +import './index.js'; + +describe('Worker', () => { + describe('Component vnWorkerTimeControl', () => { + let $scope; + let controller; + let $element; + + beforeEach(ngModule('worker')); + + beforeEach(angular.mock.inject(($componentController, $rootScope) => { + $scope = $rootScope.$new(); + $element = angular.element(''); + controller = $componentController('vnWorkerTimeControl', {$scope, $element}); + })); + + describe('worker() setter', () => { + it(`should set worker data and then call getHours() method`, () => { + spyOn(controller, 'getHours'); + controller.worker = {id: 106}; + $scope.$apply(); + + expect(controller.getHours).toHaveBeenCalledWith(); + }); + }); + + describe('hours() setter', () => { + it(`should set hours data and then call build() method`, () => { + spyOn(controller, 'build'); + controller.hours = [{id: 1}, {id: 2}]; + $scope.$apply(); + + expect(controller.build).toHaveBeenCalledWith(); + }); + }); + + describe('getWeekdayTotalHours() ', () => { + it(`should return a total worked hours from 07:00 to 15:00`, () => { + const hourOne = new Date(); + hourOne.setHours(7, 0, 0, 0); + const hourTwo = new Date(); + hourTwo.setHours(10, 0, 0, 0); + const hourThree = new Date(); + hourThree.setHours(10, 20, 0, 0); + const hourFour = new Date(); + hourFour.setHours(15, 0, 0, 0); + + const weekday = {hours: [ + {id: 1, timed: hourOne}, + {id: 2, timed: hourTwo}, + {id: 3, timed: hourThree}, + {id: 4, timed: hourFour} + ]}; + + const result = controller.getWeekdayTotalHours(weekday); + + expect(result).toEqual('08:00'); + }); + }); + + describe('weekTotalHours() ', () => { + it(`should return a total worked hours from a week`, () => { + const hourOne = new Date(); + hourOne.setHours(7, 0, 0, 0); + const hourTwo = new Date(); + hourTwo.setHours(10, 0, 0, 0); + const hourThree = new Date(); + hourThree.setHours(10, 20, 0, 0); + const hourFour = new Date(); + hourFour.setHours(15, 0, 0, 0); + + const weekday = {hours: [ + {id: 1, timed: hourOne}, + {id: 2, timed: hourTwo}, + {id: 3, timed: hourThree}, + {id: 4, timed: hourFour} + ]}; + controller.weekDays = [weekday]; + + const weekdayHours = controller.getWeekdayTotalHours(weekday); + const weekHours = controller.weekTotalHours; + + expect(weekdayHours).toEqual('08:00'); + expect(weekHours).toEqual('08:00'); + }); + }); + + describe('formatHours() ', () => { + it(`should format a passed timestamp to hours and minutes`, () => { + const result = controller.formatHours(3600000); + + expect(result).toEqual('01:00'); + }); + }); + }); +}); diff --git a/modules/worker/front/time-control/locale/es.yml b/modules/worker/front/time-control/locale/es.yml new file mode 100644 index 000000000..cfb0239a6 --- /dev/null +++ b/modules/worker/front/time-control/locale/es.yml @@ -0,0 +1,7 @@ +In: Entrada +Out: Salida +Hour: Hora +Hours: Horas +Add time: Añadir hora +Week total: Total por semana +Current week: Semana actual \ No newline at end of file diff --git a/modules/worker/front/time-control/style.scss b/modules/worker/front/time-control/style.scss new file mode 100644 index 000000000..9917fa3fb --- /dev/null +++ b/modules/worker/front/time-control/style.scss @@ -0,0 +1,28 @@ +@import "variables"; + +vn-worker-time-control { + vn-thead > vn-tr > vn-td > div { + margin-bottom: 5px; + color: $color-main + } + + vn-td.hours { + vertical-align: top; + + & > section { + position: relative; + padding: .6em 0; + + & > vn-icon { + position: absolute; + margin-left: -1.3em; + margin-top: -3px; + color: $color-font-secondary; + } + } + } + + .totalBox { + max-width: none + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2f4f27153..dfbc9f198 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10941 +1,5737 @@ { - "name": "salix-back", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/core": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.3.tgz", - "integrity": "sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.3", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.3.3", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.2.2", - "@babel/types": "^7.3.3", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "name": "salix-back", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.3.tgz", - "integrity": "sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A==", - "dev": true, - "requires": { - "@babel/types": "^7.3.3", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-call-delegate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", - "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-define-map": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", - "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.0.0", - "lodash": "^4.17.10" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", - "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", - "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-module-transforms": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", - "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/template": "^7.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-wrap-function": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", - "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.0.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.2.3", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", - "dev": true, - "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" - } - }, - "@babel/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", - "dev": true, - "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.3.0" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.3.tgz", - "integrity": "sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz", - "integrity": "sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", - "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.2.0" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", - "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", - "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.10" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.3.tgz", - "integrity": "sha512-n0CLbsg7KOXsMF4tSTLCApNMoXk0wOPb0DYfsOO1e7SfIb9gOyfbpKI2MZ+AXfqvlfzq2qsflJ1nEns48Caf2w==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.1.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz", - "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", - "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", - "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", - "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", - "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", - "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", - "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", - "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", - "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", - "dev": true, - "requires": { - "regexp-tree": "^0.1.0" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", - "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", - "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.1.0" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz", - "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==", - "dev": true, - "requires": { - "@babel/helper-call-delegate": "^7.1.0", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", - "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", - "dev": true, - "requires": { - "regenerator-transform": "^0.13.3" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", - "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", - "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", - "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - } - }, - "@babel/polyfill": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", - "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==", - "dev": true, - "requires": { - "core-js": "^2.5.7", - "regenerator-runtime": "^0.12.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", - "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==", - "dev": true + "@babel/core": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", + "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.5", + "@babel/types": "^7.4.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", - "dev": true - } - } - }, - "@babel/preset-env": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", - "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.3.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.2.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.2.0", - "@babel/plugin-transform-classes": "^7.2.0", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.2.0", - "@babel/plugin-transform-dotall-regex": "^7.2.0", - "@babel/plugin-transform-duplicate-keys": "^7.2.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.2.0", - "@babel/plugin-transform-function-name": "^7.2.0", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "@babel/plugin-transform-modules-systemjs": "^7.2.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", - "@babel/plugin-transform-new-target": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.2.0", - "@babel/plugin-transform-parameters": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.2.0", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.2.0", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.2.0", - "browserslist": "^4.3.4", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.3.0" - } - }, - "@babel/register": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.0.0.tgz", - "integrity": "sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g==", - "dev": true, - "requires": { - "core-js": "^2.5.7", - "find-cache-dir": "^1.0.0", - "home-or-tmp": "^3.0.0", - "lodash": "^4.17.10", - "mkdirp": "^0.5.1", - "pirates": "^4.0.0", - "source-map-support": "^0.5.9" - }, - "dependencies": { - "core-js": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.1.tgz", - "integrity": "sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==", - "dev": true + "@babel/generator": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" - } - }, - "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.10" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.3.tgz", - "integrity": "sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" - } - }, - "@kyleshockey/object-assign-deep": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@kyleshockey/object-assign-deep/-/object-assign-deep-0.4.2.tgz", - "integrity": "sha1-hJAPDu/DcnmPR1G1JigwuCCJIuw=" - }, - "@types/body-parser": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", - "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz", - "integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.1.tgz", - "integrity": "sha512-QgbIMRU1EVRry5cIu1ORCQP4flSYqLM1lS5LYyGWfKnFT3E58f0gKto7BR13clBFVrVZ0G0rbLZ1hUpSkgQQOA==", - "requires": { - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/mime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", - "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" - }, - "@types/node": { - "version": "10.12.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.26.tgz", - "integrity": "sha512-nMRqS+mL1TOnIJrL6LKJcNZPB8V3eTfRo9FQA2b5gDvrHurC8XbSA86KNe0dShlEL7ReWJv/OU9NL7Z0dnqWTg==" - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" - }, - "@types/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.3.tgz", - "integrity": "sha512-xy3m06+Iu4D32+6soz6zLnwznigXJRuFNTovBX2M4GqVqLb0dnyWLbPnpcXvUSdEN+9DVyDeaq2jyH1eIL2LZQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/wast-parser": "1.8.3" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.3.tgz", - "integrity": "sha512-vq1TISG4sts4f0lDwMUM0f3kpe0on+G3YyV5P0IySHFeaLKRYZ++n2fCFfG4TcCMYkqFeTUYFxm75L3ddlk2xA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.3.tgz", - "integrity": "sha512-BmWEynI4FnZbjk8CaYZXwcv9a6gIiu+rllRRouQUo73hglanXD3AGFJE7Q4JZCoVE0p5/jeX6kf5eKa3D4JxwQ==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.3.tgz", - "integrity": "sha512-iVIMhWnNHoFB94+/2l7LpswfCsXeMRnWfExKtqsZ/E2NxZyUx9nTeKK/MEMKTQNEpyfznIUX06OchBHQ+VKi/Q==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.3.tgz", - "integrity": "sha512-K1UxoJML7GKr1QXR+BG7eXqQkvu+eEeTjlSl5wUFQ6W6vaOc5OwSxTcb3oE9x/3+w4NHhrIKD4JXXCZmLdL2cg==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.3" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.3.tgz", - "integrity": "sha512-387zipfrGyO77/qm7/SDUiZBjQ5KGk4qkrVIyuoubmRNIiqn3g+6ijY8BhnlGqsCCQX5bYKOnttJobT5xoyviA==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.3.tgz", - "integrity": "sha512-lPLFdQfaRssfnGEJit5Sk785kbBPPPK4ZS6rR5W/8hlUO/5v3F+rN8XuUcMj/Ny9iZiyKhhuinWGTUuYL4VKeQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.3.tgz", - "integrity": "sha512-R1nJW7bjyJLjsJQR5t3K/9LJ0QWuZezl8fGa49DZq4IVaejgvkbNlKEQxLYTC579zgT4IIIVHb5JA59uBPHXyw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.3.tgz", - "integrity": "sha512-P6F7D61SJY73Yz+fs49Q3+OzlYAZP86OfSpaSY448KzUy65NdfzDmo2NPVte+Rw4562MxEAacvq/mnDuvRWOcg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-buffer": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/wasm-gen": "1.8.3" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.3.tgz", - "integrity": "sha512-UD4HuLU99hjIvWz1pD68b52qsepWQlYCxDYVFJQfHh3BHyeAyAlBJ+QzLR1nnS5J6hAzjki3I3AoJeobNNSZlg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.3.tgz", - "integrity": "sha512-XXd3s1BmkC1gpGABuCRLqCGOD6D2L+Ma2BpwpjrQEHeQATKWAQtxAyU9Z14/z8Ryx6IG+L4/NDkIGHrccEhRUg==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.3.tgz", - "integrity": "sha512-Wv/WH9Zo5h5ZMyfCNpUrjFsLZ3X1amdfEuwdb7MLdG3cPAjRS6yc6ElULlpjLiiBTuzvmLhr3ENsuGyJ3wyCgg==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.3.tgz", - "integrity": "sha512-nB19eUx3Yhi1Vvv3yev5r+bqQixZprMtaoCs1brg9Efyl8Hto3tGaUoZ0Yb4Umn/gQCyoEGFfUxPLp1/8+Jvnw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-buffer": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/helper-wasm-section": "1.8.3", - "@webassemblyjs/wasm-gen": "1.8.3", - "@webassemblyjs/wasm-opt": "1.8.3", - "@webassemblyjs/wasm-parser": "1.8.3", - "@webassemblyjs/wast-printer": "1.8.3" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.3.tgz", - "integrity": "sha512-sDNmu2nLBJZ/huSzlJvd9IK8B1EjCsOl7VeMV9VJPmxKYgTJ47lbkSP+KAXMgZWGcArxmcrznqm7FrAPQ7vVGg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/ieee754": "1.8.3", - "@webassemblyjs/leb128": "1.8.3", - "@webassemblyjs/utf8": "1.8.3" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.3.tgz", - "integrity": "sha512-j8lmQVFR+FR4/645VNgV4R/Jz8i50eaPAj93GZyd3EIJondVshE/D9pivpSDIXyaZt+IkCodlzOoZUE4LnQbeA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-buffer": "1.8.3", - "@webassemblyjs/wasm-gen": "1.8.3", - "@webassemblyjs/wasm-parser": "1.8.3" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.3.tgz", - "integrity": "sha512-NBI3SNNtRoy4T/KBsRZCAWUzE9lI94RH2nneLwa1KKIrt/2zzcTavWg6oY05ArCbb/PZDk3OUi63CD1RYtN65w==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-api-error": "1.8.3", - "@webassemblyjs/helper-wasm-bytecode": "1.8.3", - "@webassemblyjs/ieee754": "1.8.3", - "@webassemblyjs/leb128": "1.8.3", - "@webassemblyjs/utf8": "1.8.3" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.3.tgz", - "integrity": "sha512-gZPst4CNcmGtKC1eYQmgCx6gwQvxk4h/nPjfPBbRoD+Raw3Hs+BS3yhrfgyRKtlYP+BJ8LcY9iFODEQofl2qbg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/floating-point-hex-parser": "1.8.3", - "@webassemblyjs/helper-api-error": "1.8.3", - "@webassemblyjs/helper-code-frame": "1.8.3", - "@webassemblyjs/helper-fsm": "1.8.3", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.3.tgz", - "integrity": "sha512-DTA6kpXuHK4PHu16yAD9QVuT1WZQRT7079oIFFmFSjqjLWGXS909I/7kiLTn931mcj7wGsaUNungjwNQ2lGQ3Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/wast-parser": "1.8.3", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "accept-language": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", - "integrity": "sha1-9QJfF79lpGaoRYOMz5jNuHfYM4Q=", - "requires": { - "bcp47": "^1.1.2", - "stable": "^0.1.6" - } - }, - "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", - "requires": { - "mime-types": "~2.1.16", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz", - "integrity": "sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "ambi": { - "version": "2.5.0", - "resolved": "http://registry.npmjs.org/ambi/-/ambi-2.5.0.tgz", - "integrity": "sha1-fI43K+SIkRV+fOoBy2+RQ9H3QiA=", - "requires": { - "editions": "^1.1.1", - "typechecker": "^4.3.0" - }, - "dependencies": { - "typechecker": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.4.1.tgz", - "integrity": "sha1-+XuV9RsDhBchLWd9RaNz7nvO1+Y=", - "requires": { - "editions": "^1.3.3" - } - } - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "angular-mocks": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.7.7.tgz", - "integrity": "sha512-EIUUAigjCgyk4Lqspf1iM0RItOPtlKoHlqDyrYsgVmMqj5xS41BDXIqedcMAFn6Lln5Qe9YDsGQ3ZHAAoX1SgA==", - "dev": true - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "dev": true, - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - } - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "util": { - "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - } - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", - "requires": { - "stack-chain": "^1.3.7" - } - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" - }, - "dependencies": { - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "@babel/helper-call-delegate": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", + "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } }, - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } + "@babel/helper-define-map": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz", + "integrity": "sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" + } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } + "@babel/helper-hoist-variables": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/helper-module-transforms": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz", + "integrity": "sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.4.4", + "lodash": "^4.17.11" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.0.2.tgz", - "integrity": "sha1-R0IRyV5s8qVH20YeT2d4tR0I+mU=" - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcp47": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", - "integrity": "sha1-NUvjMH/9CEM6ePXh4glYRfifx/4=" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bcryptjs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", - "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" - }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "bignumber.js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", - "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==" - }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true - }, - "bl": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.1.2.tgz", - "integrity": "sha512-DvC0x+PxmSJNx8wXoFV15pC2+GOJ3ohb4F1REq3X32a2Z3nEBpR1Guu740M7ouYAImFj4BXDNilLNZbygtG9lQ==", - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "@babel/helper-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.4.tgz", + "integrity": "sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", - "dev": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bops": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bops/-/bops-1.0.0.tgz", - "integrity": "sha1-YxqJKPEXhBfrb3Bs9prNteWk6q0=", - "requires": { - "base64-js": "1.0.2", - "to-utf8": "0.0.1" - } - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", - "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000929", - "electron-to-chromium": "^1.3.103", - "node-releases": "^1.1.3" - } - }, - "btoa": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz", - "integrity": "sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=" - }, - "buffer": { - "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", - "dev": true - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "bufferstreams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.0.1.tgz", - "integrity": "sha1-z7GtlWjTujz+k1upq92VLeiKqyo=", - "dev": true, - "requires": { - "readable-stream": "^1.0.33" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "@babel/helper-replace-supers": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz", + "integrity": "sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "@babel/helpers": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "dev": true, + "requires": { + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "caniuse-lite": { - "version": "1.0.30000938", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000938.tgz", - "integrity": "sha512-ekW8NQ3/FvokviDxhdKLZZAx7PptXNwxKgXtnR5y+PR3hckwuP3yJ1Ir+4/c97dsHNqtAyfKUGdw8P4EYzBNgw==", - "dev": true - }, - "canonical-json": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/canonical-json/-/canonical-json-0.0.4.tgz", - "integrity": "sha1-ZXnAcsPbXEd+xB3JePvyuPQQdKM=" - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - }, - "dependencies": { - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cldrjs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.0.tgz", - "integrity": "sha1-N76S2NGo5myO4S8TA+0xbYXY6zc=" - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "@babel/parser": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", + "dev": true }, - "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-deep": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", - "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "requires": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha1-wF2uDLeVkdBbMHCoQzqYyaiczFM=" - }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "commondir": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz", - "integrity": "sha1-ifAP3NUbUZxXhzP+xWPmptp/W+I=" - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", - "requires": { - "mime-db": ">= 1.36.0 < 2" - }, - "dependencies": { - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - } - } - }, - "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.14", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz", + "integrity": "sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz", + "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "consolidate": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", - "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "http://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-security-policy-builder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz", - "integrity": "sha512-j+Nhmj1yfZAikJLImCvPJFE29x/UuBi+/MWqggGGc515JKaZrjuei2RhULJmy0MsstW3E3htl002bwmBNMKr7w==" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "dev": true, - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-fetch": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-0.0.8.tgz", - "integrity": "sha1-Ae2U3EB98sAPGAf95wCnz6SKIFw=", - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, - "csextends": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/csextends/-/csextends-1.1.1.tgz", - "integrity": "sha1-zFPBNJ+vfwrmzfb2xKTZFW08TsE=", - "requires": { - "coffee-script": "^1.12.5" - } - }, - "css-loader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.0.tgz", - "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "loader-utils": "^1.2.1", - "lodash": "^4.17.11", - "postcss": "^7.0.6", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.3", - "postcss-modules-scope": "^2.0.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - }, - "dependencies": { - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - } - } - }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - } - } - }, - "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, - "dargs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", - "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "dasherize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", - "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" - }, - "date-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", - "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-defaults": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/deep-defaults/-/deep-defaults-1.0.5.tgz", - "integrity": "sha512-5ev/sNkiHTmeTqbDJEDgdQa/Ub0eOMQNix9l+dLLGbwOos7/in5HdvHXI014wqxsET4YeJG9Eq4qj0PJRL8rSw==", - "dev": true, - "requires": { - "lodash": "^4.17.5" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "default-gateway": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", - "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", - "dev": true, - "requires": { - "execa": "^0.10.0", - "ip-regex": "^2.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "@babel/plugin-transform-async-to-generator": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz", + "integrity": "sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/plugin-transform-block-scoping": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", + "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "denque": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.0.tgz", - "integrity": "sha512-gh513ac7aiKrAgjiIBWZG0EASyDF9p4JMWwKA8YU5s9figrL5SRNEMT6FDynsegakuhWd1wVqTvqvqAoDxw7wQ==", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "deprecate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.0.tgz", - "integrity": "sha512-b5dDNQYdy2vW9WXUD8+RQlfoxvqztLLhDE+T7Gd37I5E8My7nJkKu6FmhdDeRWJ8B+yjZKuwjCta8pgi8kgSqA==", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-prefetch-control": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz", - "integrity": "sha1-YN20V3dOF48flBXwyrsOhbCzALI=" - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dont-sniff-mimetype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz", - "integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g=" - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplex": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/duplex/-/duplex-1.0.0.tgz", - "integrity": "sha1-arxcFuwX5MV4V4cnEmcAWQ06Ldo=" - }, - "duplexer": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.0.4.tgz", - "integrity": "sha1-r8t/H4uNdPggcmFx1dZKyeSo/yA=" - }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "@babel/plugin-transform-classes": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz", + "integrity": "sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.4", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" + } }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz", + "integrity": "sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz", + "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz", + "integrity": "sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz", + "integrity": "sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz", + "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.6" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz", + "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.5.4" + } + }, + "@babel/polyfill": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.4.tgz", + "integrity": "sha512-WlthFLfhQQhh+A2Gn5NSFl0Huxz36x86Jn+E9OW7ibK8edKPq+KLy4apM1yDpQ8kJOVi1OVjpP4vSDLdrI04dg==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.2" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", + "dev": true + } + } + }, + "@babel/preset-env": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.5.tgz", + "integrity": "sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.4", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.4", + "@babel/plugin-transform-classes": "^7.4.4", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.4.4", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-modules-systemjs": "^7.4.4", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.4.5", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + } + }, + "@babel/register": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.4.4.tgz", + "integrity": "sha512-sn51H88GRa00+ZoMqCVgOphmswG4b7mhf9VOB0LUBAieykq2GnRFerlN+JQkO/ntT7wz4jaHNSRPg9IdMPEUkA==", + "dev": true, + "requires": { + "core-js": "^3.0.0", + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.11", + "mkdirp": "^0.5.1", + "pirates": "^4.0.0", + "source-map-support": "^0.5.9" + }, + "dependencies": { + "core-js": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.4.tgz", + "integrity": "sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", + "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "@google-cloud/common": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.32.1.tgz", + "integrity": "sha512-bLdPzFvvBMtVkwsoBtygE9oUm3yrNmPa71gvOgucYI/GqvNP2tb6RYsDHPq98kvignhcgHGDI5wyNgxaCo8bKQ==", + "requires": { + "@google-cloud/projectify": "^0.3.3", + "@google-cloud/promisify": "^0.4.0", + "@types/request": "^2.48.1", + "arrify": "^2.0.0", + "duplexify": "^3.6.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^3.1.1", + "pify": "^4.0.1", + "retry-request": "^4.0.0", + "teeny-request": "^3.11.3" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + } + } + }, + "@google-cloud/paginator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-0.2.0.tgz", + "integrity": "sha512-2ZSARojHDhkLvQ+CS32K+iUhBsWg3AEw+uxtqblA7xoCABDyhpj99FPp35xy6A+XlzMhOSrHHaxFE+t6ZTQq0w==", + "requires": { + "arrify": "^1.0.1", + "extend": "^3.0.1", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "@google-cloud/projectify": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-0.3.3.tgz", + "integrity": "sha512-7522YHQ4IhaafgSunsFF15nG0TGVmxgXidy9cITMe+256RgqfcrfWphiMufW+Ou4kqagW/u3yxwbzVEW3dk2Uw==" + }, + "@google-cloud/promisify": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.4.0.tgz", + "integrity": "sha512-4yAHDC52TEMCNcMzVC8WlqnKKKq+Ssi2lXoUg9zWWkZ6U6tq9ZBRYLHHCRdfU+EU9YJsVmivwGcKYCjRGjnf4Q==" + }, + "@google-cloud/storage": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-2.5.0.tgz", + "integrity": "sha512-q1mwB6RUebIahbA3eriRs8DbG2Ij81Ynb9k8hMqTPkmbd8/S6Z0d6hVvfPmnyvX9Ej13IcmEYIbymuq/RBLghA==", + "requires": { + "@google-cloud/common": "^0.32.0", + "@google-cloud/paginator": "^0.2.0", + "@google-cloud/promisify": "^0.4.0", + "arrify": "^1.0.0", + "async": "^2.0.1", + "compressible": "^2.0.12", + "concat-stream": "^2.0.0", + "date-and-time": "^0.6.3", + "duplexify": "^3.5.0", + "extend": "^3.0.0", + "gcs-resumable-upload": "^1.0.0", + "hash-stream-validation": "^0.2.1", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "onetime": "^5.1.0", + "pumpify": "^1.5.1", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "teeny-request": "^3.11.3", + "through2": "^3.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + } + } + }, + "@kyleshockey/object-assign-deep": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@kyleshockey/object-assign-deep/-/object-assign-deep-0.4.2.tgz", + "integrity": "sha1-hJAPDu/DcnmPR1G1JigwuCCJIuw=" + }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "requires": { + "@types/node": "*" + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/express": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz", + "integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz", + "integrity": "sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==", + "requires": { + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true }, - "string_decoder": { - "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - } - } - }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "eachr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/eachr/-/eachr-2.0.4.tgz", - "integrity": "sha1-Rm98qhBwj2EFCeMsgHqv5X/BIr8=", - "requires": { - "typechecker": "^2.0.8" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "editions": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz", - "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "ejs": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", - "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" - }, - "electron": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/electron/-/electron-1.8.8.tgz", - "integrity": "sha512-1f9zJehcTTGjrkb06o6ds+gsRq6SYhZJyxOk6zIWjRH8hVy03y/RzUDELzNas71f5vcvXmfGVvyjeEsadDI8tg==", - "dev": true, - "requires": { - "@types/node": "^8.0.24", - "electron-download": "^3.0.1", - "extract-zip": "^1.0.3" - }, - "dependencies": { "@types/node": { - "version": "8.10.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.39.tgz", - "integrity": "sha512-rE7fktr02J8ybFf6eysife+WF+L4sAHWzw09DgdCebEu+qDwMvv4zl6Bc+825ttGZP73kCKxa3dhJOoGJ8+5mA==", - "dev": true - } - } - }, - "electron-download": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz", - "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "fs-extra": "^0.30.0", - "home-path": "^1.0.1", - "minimist": "^1.2.0", - "nugget": "^2.0.0", - "path-exists": "^2.1.0", - "rc": "^1.1.2", - "semver": "^5.3.0", - "sumchecker": "^1.2.0" - }, - "dependencies": { - "fs-extra": { - "version": "0.30.0", - "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } + "version": "10.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.10.tgz", + "integrity": "sha512-V8wj+w2YMNvGuhgl/MA5fmTxgjmVHVoasfIaxMMZJV6Y8Kk+Ydpi1z2whoShDCJ2BuNVoqH/h1hrygnBxkrw/Q==" }, - "jsonfile": { - "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "electron-to-chromium": { - "version": "1.3.113", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz", - "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "requires": { - "shimmer": "^1.2.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encode-3986": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/encode-3986/-/encode-3986-1.0.0.tgz", - "integrity": "sha1-lA1RSY+HQa3hhLda0UObMXwMemA=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "engine.io-client": { - "version": "3.2.1", - "resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "enqueue": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/enqueue/-/enqueue-1.0.2.tgz", - "integrity": "sha1-kBTpvOVw7pPKlubI5jrVTBkra8g=", - "dev": true, - "requires": { - "sliced": "0.0.5" - }, - "dependencies": { - "sliced": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", - "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=", - "dev": true - } - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "requires": { - "es6-promise": "^4.0.3" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "dev": true, - "requires": { - "recast": "~0.11.12", - "through": "~2.3.6" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.0.tgz", - "integrity": "sha512-jrOhiYyENRrRnWlMYANlGZTqb89r2FuRT+615AabBoajhNjeh9ywDNlh2LU9vTqf0WYN+L3xdXuIi7xuj/tK9w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, - "dependencies": { - "ajv": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", - "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } + "@types/request": { + "version": "2.48.1", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz", + "integrity": "sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg==", + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "@types/tough-cookie": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", + "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==" }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "eslint-config-google": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.11.0.tgz", - "integrity": "sha512-z541Fs5TFaY7/35v/z100InQ2f3V2J7e3u/0yKrnImgsHjh6JWgSRngfC/mZepn/+XN16jUydt64k//kxXc1fw==", - "dev": true - }, - "eslint-plugin-jasmine": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.10.1.tgz", - "integrity": "sha1-VzO3CedR9LxA4x4cFpib0s377Jc=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true - }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=" - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eventemitter2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", - "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", - "dev": true - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "expect-ct": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.1.1.tgz", - "integrity": "sha512-ngXzTfoRGG7fYens3/RMb6yYoVLvLMfmsSllP/mZPxNHgFq41TmPSLF/nLY7fwoclI2vElvAmILFWGUYqdjfCg==" - }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } }, - "finalhandler": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - } + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extendr": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/extendr/-/extendr-2.1.0.tgz", - "integrity": "sha1-MBqgu+pWX00tyPVw8qImEahSe1Y=", - "requires": { - "typechecker": "~2.0.1" - }, - "dependencies": { - "typechecker": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.0.8.tgz", - "integrity": "sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4=" - } - } - }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extract-opts": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-2.2.0.tgz", - "integrity": "sha1-H6KOunNSxttID4hc63GkaBC+bX0=", - "requires": { - "typechecker": "~2.0.1" - }, - "dependencies": { - "typechecker": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.0.8.tgz", - "integrity": "sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4=" - } - } - }, - "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", - "dev": true, - "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" - }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-patch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.0.7.tgz", - "integrity": "sha512-DQeoEyPYxdTtfmB3yDlxkLyKTdbJ6ABfFGcMynDqjvGhPYLto/pZyb/dG2Nyd/n9CArjEWN9ZST++AFmgzgbGw==", - "requires": { - "deep-equal": "^1.0.1" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "feature-policy": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.2.0.tgz", - "integrity": "sha512-2hGrlv6efG4hscYVZeaYjpzpT6I2OZgYqE2yDUzeAcKj2D1SH0AsEzqJNXzdoglEddcIXQQYop3lD97XpG75Jw==" - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.4.5" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - } - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "first-chunk-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-0.1.0.tgz", - "integrity": "sha1-dV0+wU1JqG49L8wIvurVwMornAo=" - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", - "dev": true - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "requires": { - "async": "^2.0.1", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.11" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - } - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "frameguard": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.0.0.tgz", - "integrity": "sha1-e8rUae57lukdEs6zlZx4I1qScuk=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-access": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "requires": { - "null-check": "^1.0.0" - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, - "fs-readfile-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-2.0.1.tgz", - "integrity": "sha1-gAI4I5gfn//+AWCei+Zo9prknnA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", - "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accept-language": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", + "integrity": "sha1-9QJfF79lpGaoRYOMz5jNuHfYM4Q=", + "requires": { + "bcp47": "^1.1.2", + "stable": "^0.1.6" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", + "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "dev": true + }, + "ambi": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ambi/-/ambi-2.5.0.tgz", + "integrity": "sha1-fI43K+SIkRV+fOoBy2+RQ9H3QiA=", + "requires": { + "editions": "^1.1.1", + "typechecker": "^4.3.0" + }, + "dependencies": { + "typechecker": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.7.0.tgz", + "integrity": "sha512-4LHc1KMNJ6NDGO+dSM/yNfZQRtp8NN7psYrPHUblD62Dvkwsp3VShsbM78kOgpcmMkRTgvwdKOTjctS+uMllgQ==", + "requires": { + "editions": "^2.1.0" + }, + "dependencies": { + "editions": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/editions/-/editions-2.1.3.tgz", + "integrity": "sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw==", + "requires": { + "errlop": "^1.1.1", + "semver": "^5.6.0" + } + } + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular-mocks": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/angular-mocks/-/angular-mocks-1.7.8.tgz", + "integrity": "sha512-LB13ESBT0eJrhQhfPXyLR9qm4LI9g44hyBFwUqZKEHEA4DpfxVTu0ONipiNoN0zWtmEAezA8u2gjcoaO2TStig==", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } }, "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } }, "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true }, "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function-source": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/function-source/-/function-source-0.1.0.tgz", - "integrity": "sha1-2RBL8+RniLVUaMAr8bL6vPj8Ga8=", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "g11n-pipeline": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/g11n-pipeline/-/g11n-pipeline-2.0.5.tgz", - "integrity": "sha1-SyFGf187Np0m3y8B2S8hU+AzQSU=", - "requires": { - "swagger-client": "^3.3.1" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "requires": { - "is-property": "^1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, - "globalize": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.4.0.tgz", - "integrity": "sha1-TACnneZ9c5qbf/g7ZrkNAlfCdJM=", - "requires": { - "cldrjs": "^0.5.0" - } - }, - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "http://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "got": { - "version": "6.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, - "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - } - } - } - }, - "gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", - "dev": true, - "requires": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "gulp-env": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/gulp-env/-/gulp-env-0.4.0.tgz", - "integrity": "sha1-g3BkaUmjJJPcBtrZSgZDKW+q2+g=", - "dev": true, - "requires": { - "ini": "^1.3.4", - "through2": "^2.0.0" - } - }, - "gulp-file": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/gulp-file/-/gulp-file-0.4.0.tgz", - "integrity": "sha1-RRNWoqxQicbbkaBEQlKgVDZXAGs=", - "dev": true, - "requires": { - "through2": "^0.4.1", - "vinyl": "^2.1.0" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", - "dev": true, - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - } - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "~0.4.0" - } - } - } - }, - "gulp-install": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gulp-install/-/gulp-install-1.1.0.tgz", - "integrity": "sha1-k4a0bLRmm0cle2rfTj6i6DySiho=", - "dev": true, - "requires": { - "dargs": "^5.1.0", - "gulp-util": "^3.0.7", - "lodash.groupby": "^4.6.0", - "p-queue": "^1.0.0", - "through2": "^2.0.3", - "which": "^1.2.14" - } - }, - "gulp-jasmine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-jasmine/-/gulp-jasmine-3.0.0.tgz", - "integrity": "sha1-ATFIbwzVmv/toY4AxkOZKpGWljs=", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "jasmine": "^2.8.0", - "jasmine-terminal-reporter": "^1.0.3", - "plugin-error": "^0.1.2", - "through2": "^2.0.0" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - } - } - } - }, - "gulp-merge-json": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/gulp-merge-json/-/gulp-merge-json-1.3.1.tgz", - "integrity": "sha512-J1N//k3Kfa0RgtzuJdn1pz+ROQF2AH2gOHGhebSc7NvATIKgeRTThPlBaOK+jvYfhNVpviWILAFo8QvUgNV4ig==", - "dev": true, - "requires": { - "deprecate": "^1.0.0", - "json5": "^1.0.1", - "lodash.mergewith": "^4.6.1", - "plugin-error": "^1.0.1", - "through": "^2.3.8", - "vinyl": "^2.1.0" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "gulp-nodemon": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/gulp-nodemon/-/gulp-nodemon-2.4.2.tgz", - "integrity": "sha512-r8ShC9yzL3lK5qUsTStMeZRwqLG6t2m4lEBVcfUYzVkiYSeYXu9xYXG5rfvzBOPZOZ2dWugTKr+zeWbnMnzWDA==", - "dev": true, - "requires": { - "colors": "^1.2.1", - "gulp": "^4.0.0", - "nodemon": "^1.18.7" - }, - "dependencies": { - "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true - } - } - }, - "gulp-print": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-2.0.1.tgz", - "integrity": "sha1-Gs7ljqyK8tPErTMp2+RldYOTxBQ=", - "dev": true, - "requires": { - "gulp-util": "^3.0.6", - "map-stream": "~0.0.6" - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "gulp-wrap": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/gulp-wrap/-/gulp-wrap-0.13.0.tgz", - "integrity": "sha1-kPsLSieiZkM4Mv98YSLbXB7olMY=", - "dev": true, - "requires": { - "consolidate": "^0.14.1", - "es6-promise": "^3.1.2", - "fs-readfile-promise": "^2.0.1", - "gulp-util": "^3.0.3", - "js-yaml": "^3.2.6", - "lodash": "^4.11.1", - "node.extend": "^1.1.2", - "through2": "^2.0.1", - "tryit": "^1.0.1", - "vinyl-bufferstream": "^1.0.1" - }, - "dependencies": { - "es6-promise": { - "version": "3.3.1", - "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, - "is": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", - "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", - "dev": true - }, - "node.extend": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", - "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", - "dev": true, - "requires": { - "has": "^1.0.3", - "is": "^3.2.1" - } - } - } - }, - "gulp-yaml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gulp-yaml/-/gulp-yaml-1.0.1.tgz", - "integrity": "sha1-AIHJMhOCe66xJzD5P97on9a+Ey0=", - "dev": true, - "requires": { - "bufferstreams": "1.1.0", - "gulp-util": "^3.0.6", - "js-yaml": "^3.4.3", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "bufferstreams": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.0.tgz", - "integrity": "sha1-BzzRIDCMBnjufXxItp4G60U4reA=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dev": true, - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "helmet": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.15.1.tgz", - "integrity": "sha512-hgoNe/sjKlKNvJ3g9Gz149H14BjMMWOCmW/DTXl7IfyKGtIK37GePwZrHNfr4aPXdKVyXcTj26RgRFbPKDy9lw==", - "requires": { - "depd": "2.0.0", - "dns-prefetch-control": "0.1.0", - "dont-sniff-mimetype": "1.0.0", - "expect-ct": "0.1.1", - "feature-policy": "0.2.0", - "frameguard": "3.0.0", - "helmet-crossdomain": "0.3.0", - "helmet-csp": "2.7.1", - "hide-powered-by": "1.0.0", - "hpkp": "2.0.0", - "hsts": "2.1.0", - "ienoopen": "1.0.0", - "nocache": "2.0.0", - "referrer-policy": "1.1.0", - "x-xss-protection": "1.1.0" - }, - "dependencies": { - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - } - } - }, - "helmet-crossdomain": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.3.0.tgz", - "integrity": "sha512-YiXhj0E35nC4Na5EPE4mTfoXMf9JTGpN4OtB4aLqShKuH9d2HNaJX5MQoglO6STVka0uMsHyG5lCut5Kzsy7Lg==" - }, - "helmet-csp": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.7.1.tgz", - "integrity": "sha512-sCHwywg4daQ2mY0YYwXSZRsgcCeerUwxMwNixGA7aMLkVmPTYBl7gJoZDHOZyXkqPrtuDT3s2B1A+RLI7WxSdQ==", - "requires": { - "camelize": "1.0.0", - "content-security-policy-builder": "2.0.0", - "dasherize": "2.0.0", - "platform": "1.3.5" - } - }, - "hide-powered-by": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.0.0.tgz", - "integrity": "sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys=" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "home-or-tmp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", - "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true - }, - "home-path": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz", - "integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==", - "dev": true - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hpkp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", - "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI=" - }, - "hsts": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.1.0.tgz", - "integrity": "sha512-zXhh/DqgrTXJ7erTN6Fh5k/xjMhDGXCqdYN3wvxUvGUQvnxcFfUd8E+6vLg/nk3ss1TYMb+DhRl25fYABioTvA==" - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-loader": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", - "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", - "dev": true, - "requires": { - "es6-templates": "^0.2.2", - "fastparse": "^1.1.1", - "html-minifier": "^3.0.1", - "loader-utils": "^1.0.2", - "object-assign": "^4.1.0" - } - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, - "html-webpack-plugin": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz", - "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==", - "dev": true, - "requires": { - "html-minifier": "^3.5.20", - "loader-utils": "^1.1.0", - "lodash": "^4.17.11", - "pretty-error": "^2.1.1", - "tapable": "^1.1.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "readable-stream": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", - "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http-status": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.3.1.tgz", - "integrity": "sha512-PcI9NUm6EUOhHlaxYABCqDQQWS7IgoBZ/PmPkhuzj+oR01ffjv3EJfKnnWJZcUhILtUh6/NdJi1Zs/mIr6v8DA==" - }, - "httpntlm": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", - "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", - "requires": { - "httpreq": ">=0.4.22", - "underscore": "~1.7.0" - } - }, - "httpreq": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", - "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=" - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "i18n": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/i18n/-/i18n-0.8.3.tgz", - "integrity": "sha1-LYzxwkciYCwgQdAbpq5eqlE4jw4=", - "requires": { - "debug": "*", - "make-plural": "^3.0.3", - "math-interval-parser": "^1.1.0", - "messageformat": "^0.3.1", - "mustache": "*", - "sprintf-js": ">=1.0.3" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.0.0.tgz", - "integrity": "sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "ienoopen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz", - "integrity": "sha1-NGpCj0dKrI9QzzeE6i0PFvYr2ms=" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", - "dev": true - }, - "ignorefs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ignorefs/-/ignorefs-1.2.0.tgz", - "integrity": "sha1-2ln7hYl25KXkNwLM0fKC/byeV1Y=", - "requires": { - "editions": "^1.3.3", - "ignorepatterns": "^1.1.0" - } - }, - "ignorepatterns": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ignorepatterns/-/ignorepatterns-1.1.0.tgz", - "integrity": "sha1-rI9DbyI5td+2bV8NOpBKh6xnzF4=" - }, - "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "dev": true, - "requires": { - "ansi-regex": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", - "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", - "dev": true, - "requires": { - "default-gateway": "^2.6.0", - "ipaddr.js": "^1.5.2" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", - "dev": true - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } - }, - "isemail": { - "version": "2.2.1", - "resolved": "http://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", - "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isomorphic-form-data": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-form-data/-/isomorphic-form-data-0.0.1.tgz", - "integrity": "sha1-Am9ifgMrDNhBPsyHVZKLlKRosGI=", - "requires": { - "form-data": "^1.0.0-rc3" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jasmine": { - "version": "2.99.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", - "integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=", - "dev": true, - "requires": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.99.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "jasmine-core": { - "version": "2.99.1", - "resolved": "http://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", - "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", - "dev": true - }, - "jasmine-reporters": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz", - "integrity": "sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1", - "xmldom": "^0.1.22" - } - }, - "jasmine-spec-reporter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", - "dev": true, - "requires": { - "colors": "1.1.2" - } - }, - "jasmine-terminal-reporter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/jasmine-terminal-reporter/-/jasmine-terminal-reporter-1.0.3.tgz", - "integrity": "sha1-iW8eyP30v2rs3UHFA+2nNH9hUms=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "pluralize": "^1.2.1" - }, - "dependencies": { - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - } - } - }, - "jayson": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-2.1.2.tgz", - "integrity": "sha512-2GejcQnEV35KYTXoBvzALIDdO/1oyEIoJHBnaJFhJhcurv0x2JqUXQW6xlDUhcNOpN9t+d2w+JGA6vOphb+5mg==", - "requires": { - "@types/node": "^10.3.5", - "JSONStream": "^1.3.1", - "commander": "^2.12.2", - "es6-promisify": "^5.0.0", - "eyes": "^0.1.8", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.11", - "uuid": "^3.2.1" - } - }, - "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==", - "dev": true - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "requires": { - "xmlcreate": "^1.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-buffer": { - "version": "2.0.11", - "resolved": "http://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz", - "integrity": "sha1-PkQf2jCYvo0eMXGtWRvGKjPi1V8=" - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", - "dev": true - }, - "karma": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.0.1.tgz", - "integrity": "sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A==", - "dev": true, - "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "braces": "^2.3.2", - "chokidar": "^2.0.3", - "colors": "^1.1.0", - "connect": "^3.6.0", - "core-js": "^2.2.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "flatted": "^2.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^4.17.11", - "log4js": "^4.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", - "socket.io": "2.1.1", - "source-map": "^0.6.1", - "tmp": "0.0.33", - "useragent": "2.3.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", - "dev": true, - "requires": { - "fs-access": "^1.0.0", - "which": "^1.2.1" - } - }, - "karma-firefox-launcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", - "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", - "dev": true - }, - "karma-jasmine": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", - "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", - "dev": true, - "requires": { - "jasmine-core": "^3.3" - }, - "dependencies": { - "jasmine-core": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.3.0.tgz", - "integrity": "sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA==", - "dev": true - } - } - }, - "karma-junit-reporter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-1.2.0.tgz", - "integrity": "sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y=", - "dev": true, - "requires": { - "path-is-absolute": "^1.0.0", - "xmlbuilder": "8.2.2" - }, - "dependencies": { - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", - "dev": true - } - } - }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "karma-webpack": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-3.0.5.tgz", - "integrity": "sha512-nRudGJWstvVuA6Tbju9tyGUfXTtI1UXMXoRHVmM2/78D0q6s/Ye2IC157PKNDC15PWFGR0mVIRtWLAdcfsRJoA==", - "dev": true, - "requires": { - "async": "^2.0.0", - "babel-runtime": "^6.0.0", - "loader-utils": "^1.0.0", - "lodash": "^4.0.0", - "source-map": "^0.5.6", - "webpack-dev-middleware": "^2.0.6" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "dev": true, - "requires": { - "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - } - } - }, - "keypress": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", - "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=", - "dev": true - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", - "dev": true, - "requires": { - "package-json": "^4.0.0" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "dev": true, - "requires": { - "flush-write-stream": "^1.0.2" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "dependencies": { - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - } - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.groupby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", - "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - }, - "dependencies": { - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - } - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log4js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.0.2.tgz", - "integrity": "sha512-KE7HjiieVDPPdveA3bJZSuu0n8chMkFl8mIoisBFxwEJ9FmXe4YzNuiqSwYUiR1K8q8/5/8Yd6AClENY1RA9ww==", - "dev": true, - "requires": { - "date-format": "^2.0.0", - "debug": "^3.1.0", - "flatted": "^2.0.0", - "rfdc": "^1.1.2", - "streamroller": "^1.0.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "loglevelnext": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", - "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", - "dev": true, - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, - "loopback": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/loopback/-/loopback-3.25.0.tgz", - "integrity": "sha512-898BSxoY2BQMHTUYkfBrfAN0T1XxxEWKW0cQY08oXmU/Rh9I+bSPjokg5aRO9Aa+OHqp3R+BrVBYmTUuWFrYfQ==", - "requires": { - "async": "^2.0.1", - "bcryptjs": "^2.1.0", - "bluebird": "^3.1.1", - "body-parser": "^1.12.0", - "canonical-json": "0.0.4", - "debug": "^2.1.2", - "depd": "^1.0.0", - "ejs": "^2.3.1", - "express": "^4.14.0", - "inflection": "^1.6.0", - "isemail": "^2.2.1", - "loopback-connector-remote": "^3.0.0", - "loopback-datasource-juggler": "^3.28.0", - "loopback-filters": "^1.0.0", - "loopback-phase": "^3.0.0", - "nodemailer": "^4.0.1", - "nodemailer-direct-transport": "^3.3.2", - "nodemailer-stub-transport": "^1.1.0", - "serve-favicon": "^2.2.0", - "stable": "^0.1.5", - "strong-globalize": "^4.1.1", - "strong-remoting": "^3.11.0", - "uid2": "0.0.3", - "underscore.string": "^3.3.5" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "requires": { - "lodash": "^4.17.11" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loopback-boot": { - "version": "2.27.1", - "resolved": "http://registry.npmjs.org/loopback-boot/-/loopback-boot-2.27.1.tgz", - "integrity": "sha512-8w1EYcQCPwUrs5iplJv0iHMzmvfBRDRxsO40ladB8TL4Jat6jXfOaE0zAm1/9gh9pMCstHh01Nr52GpfCIHGZA==", - "requires": { - "async": "~0.9.0", - "commondir": "0.0.1", - "debug": "^2.0.0", - "lodash": "^4.17.5", - "semver": "^4.1.0", - "strong-globalize": "^2.6.2", - "toposort": "^0.2.10" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "http://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "semver": { - "version": "4.3.6", - "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" - }, - "strong-globalize": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-2.10.0.tgz", - "integrity": "sha512-g2nNtA6YKBDXhIe6TC/b0lInge8WxcAlFss9OKNGiUHUlOkhIdBHn9AGMLVbKyfI9T8ijEBATcwFIPayWUpOdQ==", - "requires": { - "async": "^1.5.2", - "debug": "^3.1.0", - "esprima": "^4.0.0", - "estraverse": "^4.2.0", - "g11n-pipeline": "^2.0.1", - "htmlparser2": "^3.9.0", - "lodash": "^4.15.0", - "md5": "^2.0.0", - "mkdirp": "^0.5.1", - "mktmpdir": "^0.1.1", - "optional": "^0.1.3", - "os-locale": "^2.1.0", - "posix-getopt": "^1.2.0", - "word-count": "^0.2.1", - "xtend": "^4.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loopback-component-explorer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/loopback-component-explorer/-/loopback-component-explorer-6.3.1.tgz", - "integrity": "sha512-BQRbZaHPJmflq67VjAavfM/NpRI1p8B4NJtTwf+olwjq51dnPuTAhOOF5kgy6LTo+2PFCi/mK5dIoApHHMXRRw==", - "requires": { - "debug": "^3.1.0", - "lodash": "^4.17.5", - "loopback-swagger": "^5.0.0", - "strong-globalize": "^4.1.1", - "swagger-ui": "^2.2.5" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "swagger-ui": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/swagger-ui/-/swagger-ui-2.2.10.tgz", - "integrity": "sha1-sl56IWZOXZC/OR2zDbCN5B6FLXs=" - } - } - }, - "loopback-connector": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-4.5.1.tgz", - "integrity": "sha512-tgpOUIW7gPUHlp6yH0u8RSjl4zBmmRZCFy4dWrriniz8IadF5bSo06LOVTOJRtrsbuW8163d0o8W1dNKG7XDfA==", - "requires": { - "async": "^2.1.5", - "bluebird": "^3.4.6", - "debug": "^3.1.0", - "msgpack5": "^4.2.0", - "strong-globalize": "^4.1.1", - "uuid": "^3.0.1" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loopback-connector-mysql": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-5.3.1.tgz", - "integrity": "sha512-Htx4nMq/rSfcR8c/1Zikzh978ZAATUSWdDWmrk50+Xtc4Q7fKTlJnFId8/gg+N0tgDh54K1lcJeg7J9E/cd3sQ==", - "requires": { - "async": "^2.6.1", - "debug": "^3.1.0", - "lodash": "^4.17.4", - "loopback-connector": "^4.0.0", - "mysql": "^2.11.1", - "strong-globalize": "^4.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loopback-connector-remote": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/loopback-connector-remote/-/loopback-connector-remote-3.4.1.tgz", - "integrity": "sha512-O22X2Gcq8YzZF9DvRjOCyktQlASw1/22i/zzqxJHNKSQA5aQYeTB0w5FttOiKxcw6Q/jzL476hUvUE/NaZVZ1Q==", - "requires": { - "loopback-datasource-juggler": "^3.0.0", - "strong-remoting": "^3.0.0" - } - }, - "loopback-context": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/loopback-context/-/loopback-context-3.4.0.tgz", - "integrity": "sha512-Vd9bjgQlqQoG9dkb73waNvWqJFv8HVyrTSYh2JgnclTGEihijIJ4g/tGeOJ9Xwpe/0ZuGdHZN+iGFJRo1U7gdQ==", - "requires": { - "cls-hooked": "^4.2.0" - } - }, - "loopback-datasource-juggler": { - "version": "3.28.1", - "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-3.28.1.tgz", - "integrity": "sha512-jzAHS5ZooDXjVX88nkRVIqhVvzX74A3FAJuVnbu/6xo+58Pcec5BqOmZWVymSFtUGrAFz2d4r5Jwrd25qIW+fg==", - "requires": { - "async": "^2.6.0", - "bluebird": "^3.1.1", - "debug": "^3.1.0", - "depd": "^1.0.0", - "inflection": "^1.6.0", - "lodash": "^4.17.4", - "loopback-connector": "^4.4.0", - "minimatch": "^3.0.3", - "qs": "^6.5.0", - "shortid": "^2.2.6", - "strong-globalize": "^4.1.1", - "traverse": "^0.6.6", - "uuid": "^3.0.1" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "requires": { - "lodash": "^4.17.11" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loopback-datatype-geopoint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loopback-datatype-geopoint/-/loopback-datatype-geopoint-1.0.0.tgz", - "integrity": "sha1-/apcerjXMKmrflRVS+Fl8xzfYQA=" - }, - "loopback-filters": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loopback-filters/-/loopback-filters-1.0.0.tgz", - "integrity": "sha512-uFQQLfj4T27CM6dzlWMH6aF1lf/Qj97VmXMlVnNWcG+Pd8R8ZbU4i/shArYXArXfis+ICD80YadrPbf9DYRbOA==", - "requires": { - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "loopback-phase": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/loopback-phase/-/loopback-phase-3.3.0.tgz", - "integrity": "sha512-0NAMtZ2P7VHtW2vgADmDFzFCeniCJwL4I3AdAxX5Ds8IFDQNbnRFnBQSvg+F50HcB7ZkKmR5gtOxtr7bXbqaAQ==", - "requires": { - "async": "^2.6.1", - "debug": "^3.1.0", - "strong-globalize": "^4.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "requires": { - "lodash": "^4.17.11" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loopback-swagger": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/loopback-swagger/-/loopback-swagger-5.7.1.tgz", - "integrity": "sha512-jjGFP/dI/VVkuhRJjbysnmos1Jd1ILRY+PvbyfcKapCuZNt1rrPjlX1htP4sTsuGK/SUZuH6fsZiBG7Ppyi2FQ==", - "requires": { - "async": "^2.1.4", - "debug": "^3.1.0", - "ejs": "^2.5.5", - "lodash": "^4.17.2", - "strong-globalize": "^4.1.1" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", - "requires": { - "ms": "^2.1.1" - } - } - } - } - } - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "make-plural": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-3.0.6.tgz", - "integrity": "sha1-IDOgO6wpC487uRJY9lud9+iwHKc=", - "requires": { - "minimist": "^1.2.0" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - } - }, - "math-interval-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-1.1.0.tgz", - "integrity": "sha1-2+2lsGsySZc8bfYXD94jhvCv2JM=", - "requires": { - "xregexp": "^2.0.0" - } - }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", - "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "messageformat": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/messageformat/-/messageformat-0.3.1.tgz", - "integrity": "sha1-5Y//gkXps5cXmeW0PbWLPpQX9aI=", - "requires": { - "async": "~1.5.2", - "glob": "~6.0.4", - "make-plural": "~3.0.3", - "nopt": "~3.0.6", - "watchr": "~2.4.13" - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "requires": { - "mime-db": "~1.30.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "minstache": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minstache/-/minstache-1.2.0.tgz", - "integrity": "sha1-/xzEA6woRPaNvxjGYhKb5+sO/EE=", - "dev": true, - "requires": { - "commander": "1.0.4" - }, - "dependencies": { - "commander": { - "version": "1.0.4", - "resolved": "http://registry.npmjs.org/commander/-/commander-1.0.4.tgz", - "integrity": "sha1-Xt6xruI8T7VBprcNaSq+8ZZpotM=", - "dev": true, - "requires": { - "keypress": "0.1.x" - } - } - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } - } - }, - "mktmpdir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/mktmpdir/-/mktmpdir-0.1.1.tgz", - "integrity": "sha1-OKyCCVDXjvoLnN38A/99XFp4bbk=", - "requires": { - "rimraf": "~2.2.8" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "msgpack-js": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/msgpack-js/-/msgpack-js-0.3.0.tgz", - "integrity": "sha1-Aw7AjFlW+cp9F9QKVy1Tlv7BCSM=", - "requires": { - "bops": "~0.0.6" - }, - "dependencies": { - "base64-js": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", - "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=" - }, - "bops": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/bops/-/bops-0.0.7.tgz", - "integrity": "sha1-tKClqDmkBkVK8P4FqLkaenZqVOI=", - "requires": { - "base64-js": "0.0.2", - "to-utf8": "0.0.1" - } - } - } - }, - "msgpack-stream": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/msgpack-stream/-/msgpack-stream-0.0.13.tgz", - "integrity": "sha1-UKZzrE6uyl43cBkk0JPUM1DB5Sw=", - "requires": { - "bops": "1.0.0", - "msgpack-js": "0.3.0", - "through": "2.3.4" - }, - "dependencies": { - "through": { - "version": "2.3.4", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.4.tgz", - "integrity": "sha1-SV5A6Nio6uvHwnXqiMK4/BTFZFU=" - } - } - }, - "msgpack5": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-4.2.1.tgz", - "integrity": "sha512-Xo7nE9ZfBVonQi1rSopNAqPdts/QHyuSEUwIEzAkB+V2FtmkkLUbP6MyVqVVQxsZYI65FpvW3Bb8Z9ZWEjbgHQ==", - "requires": { - "bl": "^2.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.3.6", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "multiline": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/multiline/-/multiline-1.0.2.tgz", - "integrity": "sha1-abHyX/B00oKJBPJE3dBrfZbvbJM=", - "dev": true, - "requires": { - "strip-indent": "^1.0.0" - } - }, - "multipipe": { - "version": "0.1.2", - "resolved": "http://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - } - }, - "mustache": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", - "integrity": "sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==" - }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "mux-demux": { - "version": "3.7.9", - "resolved": "http://registry.npmjs.org/mux-demux/-/mux-demux-3.7.9.tgz", - "integrity": "sha1-NTZ3GP02AcgLzi63YlMVdtekrO8=", - "requires": { - "duplex": "~1.0.0", - "json-buffer": "~2.0.4", - "msgpack-stream": "~0.0.10", - "stream-combiner": "0.0.2", - "stream-serializer": "~1.1.1", - "through": "~2.3.1", - "xtend": "~1.0.3" - }, - "dependencies": { - "xtend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-1.0.3.tgz", - "integrity": "sha1-P12Tc1PM7Y4IU5mlY/2yJUHClgo=" - } - } - }, - "mysql": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.16.0.tgz", - "integrity": "sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==", - "requires": { - "bignumber.js": "4.1.0", - "readable-stream": "2.3.6", - "safe-buffer": "5.1.2", - "sqlstring": "2.3.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "mysql2": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-1.6.5.tgz", - "integrity": "sha512-zedaOOyb3msuuZcJJnxIX/EGOpmljDG7B+UevRH5lqcv+yhy9eCwkArBz8/AO+/rlY3/oCsOdG8R5oD6k0hNfg==", - "dev": true, - "requires": { - "denque": "^1.4.0", - "generate-function": "^2.3.1", - "iconv-lite": "^0.4.24", - "long": "^4.0.0", - "lru-cache": "^4.1.3", - "named-placeholders": "^1.1.2", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.1" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - } - } - }, - "named-placeholders": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", - "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", - "dev": true, - "requires": { - "lru-cache": "^4.1.3" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - } - } - }, - "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", - "dev": true - }, - "nanoid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.1.tgz", - "integrity": "sha512-k1u2uemjIGsn25zmujKnotgniC/gxQ9sdegdezeDiKdkDW56THUMqlz3urndKCXJxA6yPzSZbXx/QCMe/pxqsA==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "nightmare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/nightmare/-/nightmare-3.0.1.tgz", - "integrity": "sha512-WptvyPfp5mHRRYHzt6+4xazaR9cc437BuLJI6cLFnqwwgxgdtsFImfBVDeTUCPAeLrkp5VryX5jlw7Wwg+UnFQ==", - "dev": true, - "requires": { - "debug": "^2.2.0", - "deep-defaults": "^1.0.3", - "defaults": "^1.0.2", - "electron": "^1.8.4", - "enqueue": "^1.0.2", - "function-source": "^0.1.0", - "jsesc": "^0.5.0", - "minstache": "^1.2.0", - "mkdirp": "^0.5.1", - "multiline": "^1.0.2", - "once": "^1.3.3", - "rimraf": "^2.4.3", - "sliced": "1.0.1", - "split2": "^2.0.1" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "nocache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.0.0.tgz", - "integrity": "sha1-ICtIAhoMTL3i34DeFaF0Q8i0OYA=" - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } - } - }, - "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "0.0.4" - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-releases": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.7.tgz", - "integrity": "sha512-bKdrwaqJUPHqlCzDD7so/R+Nk0jGv9a11ZhLrD9f6i947qGLrGAhU3OxRENa19QQmwzGy/g6zCDEuLGDO8HPvA==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } - }, - "node-sass": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", - "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.3.2", - "lodash.mergewith": "^4.6.0", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.10.0", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } - } - }, - "nodemailer": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.7.0.tgz", - "integrity": "sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw==" - }, - "nodemailer-direct-transport": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz", - "integrity": "sha1-6W+vuQNYVglH5WkBfZfmBzilCoY=", - "requires": { - "nodemailer-shared": "1.1.0", - "smtp-connection": "2.12.0" - } - }, - "nodemailer-fetch": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", - "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=" - }, - "nodemailer-shared": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", - "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", - "requires": { - "nodemailer-fetch": "1.6.0" - } - }, - "nodemailer-stub-transport": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nodemailer-stub-transport/-/nodemailer-stub-transport-1.1.0.tgz", - "integrity": "sha1-EUIdLWa07m9AU1T5FMH0ZB6ySw0=" - }, - "nodemon": { - "version": "1.18.10", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.10.tgz", - "integrity": "sha512-we51yBb1TfEvZamFchRgcfLbVYgg0xlGbyXmOtbBzDwxwgewYS/YbZ5tnlnsH51+AoSTTsT3A2E/FloUbtH8cQ==", - "dev": true, - "requires": { - "chokidar": "^2.1.0", - "debug": "^3.1.0", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.0.4", - "pstree.remy": "^1.1.6", - "semver": "^5.5.0", - "supports-color": "^5.2.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.2", - "update-notifier": "^2.5.0" - }, - "dependencies": { - "chokidar": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.1.tgz", - "integrity": "sha512-gfw3p2oQV2wEt+8VuMlNsPjCxDxvvgnm/kz+uATu805mWVF8IJN7uz9DN7iBz+RMJISmiVbCOBFs9qBGMjtPfQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" - } + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "requires": { + "stack-chain": "^1.3.7" + } + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sdk": { + "version": "2.487.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.487.0.tgz", + "integrity": "sha512-bdImYaIzvRL4nn8DEvI39VCrQYPDeC/PTYg++EBobhaFh8ksbsTzBnIFAn5IxtlRsXWUzaZVyOgRTGqiiS6YHA==", + "requires": { + "buffer": "4.9.1", + "events": "1.1.1", + "ieee754": "1.1.8", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.3.2", + "xml2js": "0.4.19" + }, + "dependencies": { + "sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.0.2.tgz", + "integrity": "sha1-R0IRyV5s8qVH20YeT2d4tR0I+mU=" + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcp47": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/bcp47/-/bcp47-1.1.2.tgz", + "integrity": "sha1-NUvjMH/9CEM6ePXh4glYRfifx/4=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", + "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bops": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bops/-/bops-1.0.0.tgz", + "integrity": "sha1-YxqJKPEXhBfrb3Bs9prNteWk6q0=", + "requires": { + "base64-js": "1.0.2", + "to-utf8": "0.0.1" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" - } + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz", + "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000975", + "electron-to-chromium": "^1.3.164", + "node-releases": "^1.1.23" + } + }, + "btoa": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz", + "integrity": "sha1-PkC4FmP4HS3WWWpMtxSo3BbPq+A=" + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "bufferstreams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.0.1.tgz", + "integrity": "sha1-z7GtlWjTujz+k1upq92VLeiKqyo=", + "dev": true, + "requires": { + "readable-stream": "^1.0.33" }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" + }, + "caniuse-lite": { + "version": "1.0.30000979", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000979.tgz", + "integrity": "sha512-gcu45yfq3B7Y+WB05fOMfr0EiSlq+1u+m6rPHyJli/Wy3PVQNGaU7VA4bZE5qw+AU2UVOBR/N5g1bzADUqdvFw==", + "dev": true + }, + "canonical-json": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/canonical-json/-/canonical-json-0.0.4.tgz", + "integrity": "sha1-ZXnAcsPbXEd+xB3JePvyuPQQdKM=" + }, + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cldrjs": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.1.tgz", + "integrity": "sha512-xyiP8uAm8K1IhmpDndZLraloW1yqu0L+HYdQ7O1aGPxx9Cr+BMnPANlNhSt++UKfxytL2hd2NPXgTjiy7k43Ew==" + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "requires": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "requires": { + "mime-db": ">= 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "configstore": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-security-policy-builder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.0.0.tgz", + "integrity": "sha512-j+Nhmj1yfZAikJLImCvPJFE29x/UuBi+/MWqggGGc515JKaZrjuei2RhULJmy0MsstW3E3htl002bwmBNMKr7w==" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "core-js-compat": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz", + "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==", + "dev": true, + "requires": { + "browserslist": "^4.6.2", + "core-js-pure": "3.1.4", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz", + "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-fetch": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-0.0.8.tgz", + "integrity": "sha1-Ae2U3EB98sAPGAf95wCnz6SKIFw=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + }, + "dependencies": { + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "csextends": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/csextends/-/csextends-1.2.0.tgz", + "integrity": "sha512-S/8k1bDTJIwuGgQYmsRoE+8P+ohV32WhQ0l4zqrc0XDdxOhjQQD7/wTZwCzoZX53jSX3V/qwjT+OkPTxWQcmjg==" + }, + "css-loader": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", + "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", + "dev": true, + "requires": { + "camelcase": "^5.2.0", + "icss-utils": "^4.1.0", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.14", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^2.0.6", + "postcss-modules-scope": "^2.1.0", + "postcss-modules-values": "^2.0.0", + "postcss-value-parser": "^3.3.0", + "schema-utils": "^1.0.0" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + }, + "dependencies": { + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + } + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dasherize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", + "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" + }, + "date-and-time": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.6.3.tgz", + "integrity": "sha512-lcWy3AXDRJOD7MplwZMmNSRM//kZtJaLz4n6D1P5z9wEmZGBKhJRBIr1Xs9KNQJmdXPblvgffynYji4iylUTcA==" + }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { "ms": "2.0.0" - } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-defaults": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/deep-defaults/-/deep-defaults-1.0.5.tgz", + "integrity": "sha512-5ev/sNkiHTmeTqbDJEDgdQa/Ub0eOMQNix9l+dLLGbwOos7/in5HdvHXI014wqxsET4YeJG9Eq4qj0PJRL8rSw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "denque": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "deprecate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.0.tgz", + "integrity": "sha512-b5dDNQYdy2vW9WXUD8+RQlfoxvqztLLhDE+T7Gd37I5E8My7nJkKu6FmhdDeRWJ8B+yjZKuwjCta8pgi8kgSqA==", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-prefetch-control": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz", + "integrity": "sha1-YN20V3dOF48flBXwyrsOhbCzALI=" + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dont-sniff-mimetype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz", + "integrity": "sha1-WTKJDcn04vGeXrAqIAJuXl78j1g=" + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/duplex/-/duplex-1.0.0.tgz", + "integrity": "sha1-arxcFuwX5MV4V4cnEmcAWQ06Ldo=" + }, + "duplexer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.0.4.tgz", + "integrity": "sha1-r8t/H4uNdPggcmFx1dZKyeSo/yA=" + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "eachr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/eachr/-/eachr-2.0.4.tgz", + "integrity": "sha1-Rm98qhBwj2EFCeMsgHqv5X/BIr8=", + "requires": { + "typechecker": "^2.0.8" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", + "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" + }, + "electron": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/electron/-/electron-2.0.18.tgz", + "integrity": "sha512-PQRHtFvLxHdJzMMIwTddUtkS+Te/fZIs+PHO+zPmTUTBE76V3Od3WRGzMQwiJHxN679licmCKhJpMyxZfDEVWQ==", + "dev": true, + "requires": { + "@types/node": "^8.0.24", + "electron-download": "^3.0.1", + "extract-zip": "^1.0.3" }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "@types/node": { + "version": "8.10.49", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.49.tgz", + "integrity": "sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w==", + "dev": true + } + } + }, + "electron-download": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz", + "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "fs-extra": "^0.30.0", + "home-path": "^1.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.0", + "path-exists": "^2.1.0", + "rc": "^1.1.2", + "semver": "^5.3.0", + "sumchecker": "^1.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "electron-to-chromium": { + "version": "1.3.185", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.185.tgz", + "integrity": "sha512-h2iW0AHIwix8ifNJg/RkXhQjUDqBME8TvX8qQQMvvF2Tb6F2KnO6febvI+JqI9CdZOWnl90CPxdBRWGDrdk9UA==", + "dev": true + }, + "elliptic": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "requires": { + "shimmer": "^1.2.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encode-3986": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/encode-3986/-/encode-3986-1.0.0.tgz", + "integrity": "sha1-lA1RSY+HQa3hhLda0UObMXwMemA=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "enqueue": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enqueue/-/enqueue-1.0.2.tgz", + "integrity": "sha1-kBTpvOVw7pPKlubI5jrVTBkra8g=", + "dev": true, + "requires": { + "sliced": "0.0.5" + }, + "dependencies": { + "sliced": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", + "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=", + "dev": true + } + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "errlop": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/errlop/-/errlop-1.1.1.tgz", + "integrity": "sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw==", + "requires": { + "editions": "^2.1.2" + }, + "dependencies": { + "editions": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/editions/-/editions-2.1.3.tgz", + "integrity": "sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw==", + "requires": { + "errlop": "^1.1.1", + "semver": "^5.6.0" + } + } + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "errs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/errs/-/errs-0.3.2.tgz", + "integrity": "sha1-eYCZstvTfKK8dJ5TinwTB9C1BJk=" + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.50", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", + "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-templates": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", + "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", + "dev": true, + "requires": { + "recast": "~0.11.12", + "through": "~2.3.6" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "eslint-config-google": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.11.0.tgz", + "integrity": "sha512-z541Fs5TFaY7/35v/z100InQ2f3V2J7e3u/0yKrnImgsHjh6JWgSRngfC/mZepn/+XN16jUydt64k//kxXc1fw==", + "dev": true + }, + "eslint-plugin-jasmine": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.10.1.tgz", + "integrity": "sha1-VzO3CedR9LxA4x4cFpib0s377Jc=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventemitter2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI=" + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "expect-ct": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz", + "integrity": "sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extendr": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/extendr/-/extendr-2.1.0.tgz", + "integrity": "sha1-MBqgu+pWX00tyPVw8qImEahSe1Y=", + "requires": { + "typechecker": "~2.0.1" + }, + "dependencies": { + "typechecker": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.0.8.tgz", + "integrity": "sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4=" + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-opts": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-2.2.0.tgz", + "integrity": "sha1-H6KOunNSxttID4hc63GkaBC+bX0=", + "requires": { + "typechecker": "~2.0.1" + }, + "dependencies": { + "typechecker": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.0.8.tgz", + "integrity": "sha1-6D2oS7ZMWEzLNFg4V2xAsDN9uC4=" + } + } + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-patch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.1.0.tgz", + "integrity": "sha512-PipOsAKamRw7+CXtKiieehyjUeDVPJ5J7b2kdJYerEf6TSUQoD2ijpVyZ88KQm5YXziff4h762bz3+vzf56khg==", + "requires": { + "deep-equal": "^1.0.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-text-encoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz", + "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==" + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "feature-policy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", + "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==" + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "filed-mimefix": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/filed-mimefix/-/filed-mimefix-0.1.3.tgz", + "integrity": "sha1-Cwtn0HWmP8dPJv3znH+dQxSWe7U=", + "requires": { + "mime": "^1.4.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-0.1.0.tgz", + "integrity": "sha1-dV0+wU1JqG49L8wIvurVwMornAo=" + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "frameguard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.1.0.tgz", + "integrity": "sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "fs-readfile-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-readfile-promise/-/fs-readfile-promise-2.0.1.tgz", + "integrity": "sha1-gAI4I5gfn//+AWCei+Zo9prknnA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function-source": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/function-source/-/function-source-0.1.0.tgz", + "integrity": "sha1-2RBL8+RniLVUaMAr8bL6vPj8Ga8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "g11n-pipeline": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/g11n-pipeline/-/g11n-pipeline-2.0.6.tgz", + "integrity": "sha512-ykVjThha+dGKAR/F31kCUxMn7vu1JrmUkDxMs+h7TvjGbQoNx29hsw618GQKm9eT4Qo6E+8zJAnt0BT3gMtggQ==", + "requires": { + "swagger-client": "^3.8.3" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.0", @@ -10944,280 +5740,5722 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" - } }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaxios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz", + "integrity": "sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==", + "requires": { + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.3.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "gcp-metadata": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz", + "integrity": "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==", + "requires": { + "gaxios": "^1.0.2", + "json-bigint": "^0.3.0" + } + }, + "gcs-resumable-upload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz", + "integrity": "sha512-uBz7uHqp44xjSDzG3kLbOYZDjxxR/UAGbB47A0cC907W6yd2LkcyFDTHg+bjivkHMwiJlKv4guVWcjPCk2zScg==", + "requires": { + "abort-controller": "^2.0.2", + "configstore": "^4.0.0", + "gaxios": "^1.5.0", + "google-auth-library": "^3.0.0", + "pumpify": "^1.5.1", + "stream-events": "^1.0.4" + }, + "dependencies": { + "abort-controller": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-2.0.3.tgz", + "integrity": "sha512-EPSq5wr2aFyAZ1PejJB32IX9Qd4Nwus+adnp7STYFM5/23nLPBazqZ1oor6ZqbH+4otaaGXTlC8RN5hq3C8w9Q==", + "requires": { + "event-target-shim": "^5.0.0" + } + } + } + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" - } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globalize": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/globalize/-/globalize-1.4.2.tgz", + "integrity": "sha512-IfKeYI5mAITBmT5EnH8kSQB5uGson4Fkj2XtTpyEbIS7IHNfLHoeTyLJ6tfjiKC6cJXng3IhVurDk5C7ORqFhQ==", + "requires": { + "cldrjs": "^0.5.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "google-auth-library": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz", + "integrity": "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==", + "requires": { + "base64-js": "^1.3.0", + "fast-text-encoding": "^1.0.0", + "gaxios": "^1.2.1", + "gcp-metadata": "^1.0.0", + "gtoken": "^2.3.2", + "https-proxy-agent": "^2.2.1", + "jws": "^3.1.5", + "lru-cache": "^5.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + } + } + }, + "google-p12-pem": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.4.tgz", + "integrity": "sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==", + "requires": { + "node-forge": "^0.8.0", + "pify": "^4.0.0" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" + }, + "gtoken": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz", + "integrity": "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==", + "requires": { + "gaxios": "^1.0.4", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.5", + "mime": "^2.2.0", + "pify": "^4.0.0" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + } + } + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "gulp-cli": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulp-env": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gulp-env/-/gulp-env-0.4.0.tgz", + "integrity": "sha1-g3BkaUmjJJPcBtrZSgZDKW+q2+g=", + "dev": true, + "requires": { + "ini": "^1.3.4", + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulp-file": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gulp-file/-/gulp-file-0.4.0.tgz", + "integrity": "sha1-RRNWoqxQicbbkaBEQlKgVDZXAGs=", + "dev": true, + "requires": { + "through2": "^0.4.1", + "vinyl": "^2.1.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "gulp-install": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-install/-/gulp-install-1.1.0.tgz", + "integrity": "sha1-k4a0bLRmm0cle2rfTj6i6DySiho=", + "dev": true, + "requires": { + "dargs": "^5.1.0", + "gulp-util": "^3.0.7", + "lodash.groupby": "^4.6.0", + "p-queue": "^1.0.0", + "through2": "^2.0.3", + "which": "^1.2.14" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulp-jasmine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-jasmine/-/gulp-jasmine-3.0.0.tgz", + "integrity": "sha1-ATFIbwzVmv/toY4AxkOZKpGWljs=", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "jasmine": "^2.8.0", + "jasmine-terminal-reporter": "^1.0.3", + "plugin-error": "^0.1.2", + "through2": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jasmine": { + "version": "2.99.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", + "integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.99.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulp-merge-json": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/gulp-merge-json/-/gulp-merge-json-1.3.1.tgz", + "integrity": "sha512-J1N//k3Kfa0RgtzuJdn1pz+ROQF2AH2gOHGhebSc7NvATIKgeRTThPlBaOK+jvYfhNVpviWILAFo8QvUgNV4ig==", + "dev": true, + "requires": { + "deprecate": "^1.0.0", + "json5": "^1.0.1", + "lodash.mergewith": "^4.6.1", + "plugin-error": "^1.0.1", + "through": "^2.3.8", + "vinyl": "^2.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "gulp-nodemon": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/gulp-nodemon/-/gulp-nodemon-2.4.2.tgz", + "integrity": "sha512-r8ShC9yzL3lK5qUsTStMeZRwqLG6t2m4lEBVcfUYzVkiYSeYXu9xYXG5rfvzBOPZOZ2dWugTKr+zeWbnMnzWDA==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "gulp": "^4.0.0", + "nodemon": "^1.18.7" + } + }, + "gulp-print": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-print/-/gulp-print-2.0.1.tgz", + "integrity": "sha1-Gs7ljqyK8tPErTMp2+RldYOTxBQ=", + "dev": true, + "requires": { + "gulp-util": "^3.0.6", + "map-stream": "~0.0.6" + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulp-wrap": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/gulp-wrap/-/gulp-wrap-0.13.0.tgz", + "integrity": "sha1-kPsLSieiZkM4Mv98YSLbXB7olMY=", + "dev": true, + "requires": { + "consolidate": "^0.14.1", + "es6-promise": "^3.1.2", + "fs-readfile-promise": "^2.0.1", + "gulp-util": "^3.0.3", + "js-yaml": "^3.2.6", + "lodash": "^4.11.1", + "node.extend": "^1.1.2", + "through2": "^2.0.1", + "tryit": "^1.0.1", + "vinyl-bufferstream": "^1.0.1" + }, + "dependencies": { + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulp-yaml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gulp-yaml/-/gulp-yaml-1.0.1.tgz", + "integrity": "sha1-AIHJMhOCe66xJzD5P97on9a+Ey0=", + "dev": true, + "requires": { + "bufferstreams": "1.1.0", + "gulp-util": "^3.0.6", + "js-yaml": "^3.4.3", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "bufferstreams": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.0.tgz", + "integrity": "sha1-BzzRIDCMBnjufXxItp4G60U4reA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-stream-validation": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", + "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", + "requires": { + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "helmet": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.18.0.tgz", + "integrity": "sha512-TsKlGE5UVkV0NiQ4PllV9EVfZklPjyzcMEMjWlyI/8S6epqgRT+4s4GHVgc25x0TixsKvp3L7c91HQQt5l0+QA==", + "requires": { + "depd": "2.0.0", + "dns-prefetch-control": "0.1.0", + "dont-sniff-mimetype": "1.0.0", + "expect-ct": "0.2.0", + "feature-policy": "0.3.0", + "frameguard": "3.1.0", + "helmet-crossdomain": "0.3.0", + "helmet-csp": "2.7.1", + "hide-powered-by": "1.0.0", + "hpkp": "2.0.0", + "hsts": "2.2.0", + "ienoopen": "1.1.0", + "nocache": "2.1.0", + "referrer-policy": "1.2.0", + "x-xss-protection": "1.1.0" + } + }, + "helmet-crossdomain": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.3.0.tgz", + "integrity": "sha512-YiXhj0E35nC4Na5EPE4mTfoXMf9JTGpN4OtB4aLqShKuH9d2HNaJX5MQoglO6STVka0uMsHyG5lCut5Kzsy7Lg==" + }, + "helmet-csp": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.7.1.tgz", + "integrity": "sha512-sCHwywg4daQ2mY0YYwXSZRsgcCeerUwxMwNixGA7aMLkVmPTYBl7gJoZDHOZyXkqPrtuDT3s2B1A+RLI7WxSdQ==", + "requires": { + "camelize": "1.0.0", + "content-security-policy-builder": "2.0.0", + "dasherize": "2.0.0", + "platform": "1.3.5" + } + }, + "hide-powered-by": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.0.0.tgz", + "integrity": "sha1-SoWtZYgfYoV/xwr3F0oRhNzM4ys=" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-path": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz", + "integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hpkp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", + "integrity": "sha1-EOFCJk52IVpdMMROxD3mTe5tFnI=" + }, + "hsts": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", + "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", + "requires": { + "depd": "2.0.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-loader": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.5.tgz", + "integrity": "sha1-X7zYfNY6XEmn/OL+VvQl4Fcpxow=", + "dev": true, + "requires": { + "es6-templates": "^0.2.2", + "fastparse": "^1.1.1", + "html-minifier": "^3.0.1", + "loader-utils": "^1.0.2", + "object-assign": "^4.1.0" + } + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz", + "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==", + "dev": true, + "requires": { + "html-minifier": "^3.5.20", + "loader-utils": "^1.1.0", + "lodash": "^4.17.11", + "pretty-error": "^2.1.1", + "tapable": "^1.1.0", + "util.promisify": "1.0.0" + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http-status": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/http-status/-/http-status-1.3.2.tgz", + "integrity": "sha512-vR1YTaDyi2BukI0UiH01xy92oiZi4in7r0dmSPnrZg72Vu1SzyOLalwWP5NUk1rNiB2L+XVK2lcSVOqaertX8A==" + }, + "httpntlm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", + "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", + "requires": { + "httpreq": ">=0.4.22", + "underscore": "~1.7.0" + } + }, + "httpreq": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", + "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=" + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "i18n": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/i18n/-/i18n-0.8.3.tgz", + "integrity": "sha1-LYzxwkciYCwgQdAbpq5eqlE4jw4=", + "requires": { + "debug": "*", + "make-plural": "^3.0.3", + "math-interval-parser": "^1.1.0", + "messageformat": "^0.3.1", + "mustache": "*", + "sprintf-js": ">=1.0.3" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, + "ienoopen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz", + "integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "ignorefs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ignorefs/-/ignorefs-1.2.0.tgz", + "integrity": "sha1-2ln7hYl25KXkNwLM0fKC/byeV1Y=", + "requires": { + "editions": "^1.3.3", + "ignorepatterns": "^1.1.0" + } + }, + "ignorepatterns": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ignorepatterns/-/ignorepatterns-1.1.0.tgz", + "integrity": "sha1-rI9DbyI5td+2bV8NOpBKh6xnzF4=" + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflection": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { "once": "^1.3.0", "wrappy": "1" - } + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { "number-is-nan": "^1.0.0" - } + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isemail": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isomorphic-form-data": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-form-data/-/isomorphic-form-data-0.0.1.tgz", + "integrity": "sha1-Am9ifgMrDNhBPsyHVZKLlKRosGI=", + "requires": { + "form-data": "^1.0.0-rc3" }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "form-data": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", + "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", + "requires": { + "async": "^2.0.1", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.11" + } + } + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jade": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", + "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", + "requires": { + "commander": "0.6.1", + "mkdirp": "0.3.0" }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "commander": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=" + }, + "mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + } + } + }, + "jasmine": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.4.0.tgz", + "integrity": "sha512-sR9b4n+fnBFDEd7VS2el2DeHgKcPiMVn44rtKFumq9q7P/t8WrxsVIZPob4UDdgcDNCwyDqwxCt4k9TDRmjPoQ==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "jasmine-core": "~3.4.0" }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jasmine-core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.4.0.tgz", + "integrity": "sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg==", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-reporters": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.3.2.tgz", + "integrity": "sha512-u/7AT9SkuZsUfFBLLzbErohTGNsEUCKaQbsVYnLFW1gEuL2DzmBL4n8v90uZsqIqlWvWUgian8J6yOt5Fyk/+A==", + "dev": true, + "requires": { "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } + "xmldom": "^0.1.22" }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } + "dependencies": { + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + } + } + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" }, - "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + } + } + }, + "jasmine-terminal-reporter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/jasmine-terminal-reporter/-/jasmine-terminal-reporter-1.0.3.tgz", + "integrity": "sha1-iW8eyP30v2rs3UHFA+2nNH9hUms=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "pluralize": "^1.2.1" + } + }, + "jayson": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-2.1.2.tgz", + "integrity": "sha512-2GejcQnEV35KYTXoBvzALIDdO/1oyEIoJHBnaJFhJhcurv0x2JqUXQW6xlDUhcNOpN9t+d2w+JGA6vOphb+5mg==", + "requires": { + "@types/node": "^10.3.5", + "JSONStream": "^1.3.1", + "commander": "^2.12.2", + "es6-promisify": "^5.0.0", + "eyes": "^0.1.8", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.11", + "uuid": "^3.2.1" + } + }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "requires": { + "xmlcreate": "^1.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-bigint": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", + "requires": { + "bignumber.js": "^7.0.0" + } + }, + "json-buffer": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz", + "integrity": "sha1-PkQf2jCYvo0eMXGtWRvGKjPi1V8=" + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "karma": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.1.0.tgz", + "integrity": "sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" }, - "npm-packlist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-firefox-launcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", + "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", + "dev": true + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", + "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", + "dev": true, + "requires": { + "jasmine-core": "^3.3" }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "jasmine-core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.4.0.tgz", + "integrity": "sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg==", + "dev": true + } + } + }, + "karma-junit-reporter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-1.2.0.tgz", + "integrity": "sha1-T5xAzt+xo5X4rvh2q/lhiZF8Y5Y=", + "dev": true, + "requires": { + "path-is-absolute": "^1.0.0", + "xmlbuilder": "8.2.2" + }, + "dependencies": { + "xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", + "dev": true + } + } + }, + "karma-sourcemap-loader": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", + "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "karma-webpack": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-3.0.5.tgz", + "integrity": "sha512-nRudGJWstvVuA6Tbju9tyGUfXTtI1UXMXoRHVmM2/78D0q6s/Ye2IC157PKNDC15PWFGR0mVIRtWLAdcfsRJoA==", + "dev": true, + "requires": { + "async": "^2.0.0", + "babel-runtime": "^6.0.0", + "loader-utils": "^1.0.0", + "lodash": "^4.0.0", + "source-map": "^0.5.6", + "webpack-dev-middleware": "^2.0.6" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + } + } + }, + "keypress": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", + "integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=", + "dev": true + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "liboneandone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/liboneandone/-/liboneandone-1.2.0.tgz", + "integrity": "sha512-EB6Ak9qw+U4HAOnKqPtatxQ9pLclvtsBsggrvOuD4zclJ5xOeEASojsLKEC3O8KJ1Q4obE2JHhOeDuqWXvkoUQ==", + "requires": { + "mocha": "^2.5.3", + "request": "^2.74.0" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" + } + }, + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "log4js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.4.0.tgz", + "integrity": "sha512-xwRvmxFsq8Hb7YeS+XKfvCrsH114bXex6mIwJ2+KmYVi23pB3+hlzyGq1JPycSFTJWNLhD/7PCtM0RfPy6/2yg==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.5" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", + "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", + "dev": true + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, + "loopback": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/loopback/-/loopback-3.26.0.tgz", + "integrity": "sha512-QDREGpTTjLwMgteSIajFXMklW4slbVO5PvY2bPXBn3EUfPzmWXfaDiSlzwbbRbw+cyMUAr2EorL1r0+IsIslWg==", + "requires": { + "async": "^2.0.1", + "bcryptjs": "^2.1.0", + "bluebird": "^3.1.1", + "body-parser": "^1.12.0", + "canonical-json": "0.0.4", + "debug": "^2.1.2", + "depd": "^1.0.0", + "ejs": "^2.3.1", + "express": "^4.14.0", + "inflection": "^1.6.0", + "isemail": "^2.2.1", + "loopback-connector-remote": "^3.0.0", + "loopback-datasource-juggler": "^3.28.0", + "loopback-filters": "^1.0.0", + "loopback-phase": "^3.0.0", + "nodemailer": "^4.0.1", + "nodemailer-direct-transport": "^3.3.2", + "nodemailer-stub-transport": "^1.1.0", + "serve-favicon": "^2.2.0", + "stable": "^0.1.5", + "strong-globalize": "^4.1.1", + "strong-remoting": "^3.11.0", + "uid2": "0.0.3", + "underscore.string": "^3.3.5" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + } + } + }, + "loopback-boot": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/loopback-boot/-/loopback-boot-2.28.0.tgz", + "integrity": "sha512-DTZnoWEMukgG2PrtguJ0Xk9HmIlHgcynGoxkDPa9oFiJ7l+8v92Ym8q7RQxOf8Nqws1kykPQ7PNuia+9AoeC7w==", + "requires": { + "async": "^0.9.2", + "commondir": "^1.0.1", + "debug": "^3.2.6", + "lodash": "^4.17.11", + "semver": "^5.6.0", + "strong-globalize": "^4.1.3", + "toposort": "^2.0.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-component-explorer": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/loopback-component-explorer/-/loopback-component-explorer-6.4.0.tgz", + "integrity": "sha512-vDRR4gqkvGOEXh5yL383xGuGxUW9xtF+NCY6/lJu1VAgupKltZxEx3Vw+L3nsGvQrlkJTSmiK3jk72qxkoBtbw==", + "requires": { + "debug": "^3.1.0", + "lodash": "^4.17.11", + "loopback-swagger": "^5.0.0", + "strong-globalize": "^4.1.1", + "swagger-ui": "^2.2.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-component-storage": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/loopback-component-storage/-/loopback-component-storage-3.6.1.tgz", + "integrity": "sha512-KM+Q8XhaLtpUfCabeBxYDxs9ZuKyvWiP+iCLmnjem2UZvPp04B5MCLz4A3Rc1jqKQugAe3Ijk15hZQE+Zob8PQ==", + "requires": { + "async": "^2.6.1", + "debug": "^3.1.0", + "formidable": "^1.2.1", + "pkgcloud": "^2.0.0", + "strong-globalize": "^4.1.1", + "uuid": "^3.2.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-connector": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/loopback-connector/-/loopback-connector-4.8.0.tgz", + "integrity": "sha512-X5A4YaS6iifomym97ll/J/V+iPZ3Av69J6gmG3QXkq2JtzDtAOh6g2ITgo9aYJ/rzRf9HESH3Ys7aqeppDkpZQ==", + "requires": { + "async": "^2.1.5", + "bluebird": "^3.4.6", + "debug": "^3.1.0", + "msgpack5": "^4.2.0", + "strong-globalize": "^4.1.1", + "uuid": "^3.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-connector-mysql": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/loopback-connector-mysql/-/loopback-connector-mysql-5.4.1.tgz", + "integrity": "sha512-+nXuodxmAVotvXGYrJRyzF21AT+3250Rodhsbh7lUrwRHOsYuja6ulT15P1P9NAoHeoZkzbw6XV9DQSJe6JyXw==", + "requires": { + "async": "^2.6.1", + "debug": "^3.1.0", + "lodash": "^4.17.11", + "loopback-connector": "^4.0.0", + "mysql": "^2.11.1", + "strong-globalize": "^4.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-connector-remote": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/loopback-connector-remote/-/loopback-connector-remote-3.4.1.tgz", + "integrity": "sha512-O22X2Gcq8YzZF9DvRjOCyktQlASw1/22i/zzqxJHNKSQA5aQYeTB0w5FttOiKxcw6Q/jzL476hUvUE/NaZVZ1Q==", + "requires": { + "loopback-datasource-juggler": "^3.0.0", + "strong-remoting": "^3.0.0" + } + }, + "loopback-context": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/loopback-context/-/loopback-context-3.4.0.tgz", + "integrity": "sha512-Vd9bjgQlqQoG9dkb73waNvWqJFv8HVyrTSYh2JgnclTGEihijIJ4g/tGeOJ9Xwpe/0ZuGdHZN+iGFJRo1U7gdQ==", + "requires": { + "cls-hooked": "^4.2.0" + } + }, + "loopback-datasource-juggler": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/loopback-datasource-juggler/-/loopback-datasource-juggler-3.31.1.tgz", + "integrity": "sha512-B33enq3yKcSsMha/xysomLG7y8rHuTOkKPtsZjg5P63PmtAPVZ8DaA5KJPQ8J5rNINdjVactVAvx7hd4h0cEQA==", + "requires": { + "async": "^2.6.0", + "bluebird": "^3.1.1", + "debug": "^3.1.0", + "depd": "^1.0.0", + "inflection": "^1.6.0", + "lodash": "^4.17.4", + "loopback-connector": "^4.4.0", + "minimatch": "^3.0.3", + "qs": "^6.5.0", + "shortid": "^2.2.6", + "strong-globalize": "^4.1.1", + "traverse": "^0.6.6", + "uuid": "^3.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-datatype-geopoint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loopback-datatype-geopoint/-/loopback-datatype-geopoint-1.0.0.tgz", + "integrity": "sha1-/apcerjXMKmrflRVS+Fl8xzfYQA=" + }, + "loopback-filters": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loopback-filters/-/loopback-filters-1.0.0.tgz", + "integrity": "sha512-uFQQLfj4T27CM6dzlWMH6aF1lf/Qj97VmXMlVnNWcG+Pd8R8ZbU4i/shArYXArXfis+ICD80YadrPbf9DYRbOA==", + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-phase": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/loopback-phase/-/loopback-phase-3.3.0.tgz", + "integrity": "sha512-0NAMtZ2P7VHtW2vgADmDFzFCeniCJwL4I3AdAxX5Ds8IFDQNbnRFnBQSvg+F50HcB7ZkKmR5gtOxtr7bXbqaAQ==", + "requires": { + "async": "^2.6.1", + "debug": "^3.1.0", + "strong-globalize": "^4.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loopback-swagger": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/loopback-swagger/-/loopback-swagger-5.7.3.tgz", + "integrity": "sha512-RKmmaaiYS6gkAybiY17Poh1NBPrOI5rYlEJY+cf5VlL5p0e1MK9ivfOVDFpfPaxXEnYt7NL/Cz/iZ9QuKyfA5g==", + "requires": { + "async": "^2.1.4", + "debug": "^3.1.0", + "ejs": "^2.5.5", + "lodash": "^4.17.11", + "strong-globalize": "^4.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "make-plural": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-3.0.6.tgz", + "integrity": "sha1-IDOgO6wpC487uRJY9lud9+iwHKc=", + "requires": { + "minimist": "^1.2.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "math-interval-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-1.1.0.tgz", + "integrity": "sha1-2+2lsGsySZc8bfYXD94jhvCv2JM=", + "requires": { + "xregexp": "^2.0.0" + } + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "messageformat": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/messageformat/-/messageformat-0.3.1.tgz", + "integrity": "sha1-5Y//gkXps5cXmeW0PbWLPpQX9aI=", + "requires": { + "async": "~1.5.2", + "glob": "~6.0.4", + "make-plural": "~3.0.3", + "nopt": "~3.0.6", + "watchr": "~2.4.13" + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "minstache": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minstache/-/minstache-1.2.0.tgz", + "integrity": "sha1-/xzEA6woRPaNvxjGYhKb5+sO/EE=", + "dev": true, + "requires": { + "commander": "1.0.4" + }, + "dependencies": { + "commander": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/commander/-/commander-1.0.4.tgz", + "integrity": "sha1-Xt6xruI8T7VBprcNaSq+8ZZpotM=", + "dev": true, + "requires": { + "keypress": "0.1.x" + } + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "mktmpdir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mktmpdir/-/mktmpdir-0.1.1.tgz", + "integrity": "sha1-OKyCCVDXjvoLnN38A/99XFp4bbk=", + "requires": { + "rimraf": "~2.2.8" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + }, + "dependencies": { + "commander": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=" + }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "escape-string-regexp": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "msgpack-js": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/msgpack-js/-/msgpack-js-0.3.0.tgz", + "integrity": "sha1-Aw7AjFlW+cp9F9QKVy1Tlv7BCSM=", + "requires": { + "bops": "~0.0.6" + }, + "dependencies": { + "base64-js": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", + "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=" + }, + "bops": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/bops/-/bops-0.0.7.tgz", + "integrity": "sha1-tKClqDmkBkVK8P4FqLkaenZqVOI=", + "requires": { + "base64-js": "0.0.2", + "to-utf8": "0.0.1" + } + } + } + }, + "msgpack-stream": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/msgpack-stream/-/msgpack-stream-0.0.13.tgz", + "integrity": "sha1-UKZzrE6uyl43cBkk0JPUM1DB5Sw=", + "requires": { + "bops": "1.0.0", + "msgpack-js": "0.3.0", + "through": "2.3.4" + }, + "dependencies": { + "through": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.4.tgz", + "integrity": "sha1-SV5A6Nio6uvHwnXqiMK4/BTFZFU=" + } + } + }, + "msgpack5": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/msgpack5/-/msgpack5-4.2.1.tgz", + "integrity": "sha512-Xo7nE9ZfBVonQi1rSopNAqPdts/QHyuSEUwIEzAkB+V2FtmkkLUbP6MyVqVVQxsZYI65FpvW3Bb8Z9ZWEjbgHQ==", + "requires": { + "bl": "^2.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.3.6", + "safe-buffer": "^5.1.2" + } + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "multiline": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/multiline/-/multiline-1.0.2.tgz", + "integrity": "sha1-abHyX/B00oKJBPJE3dBrfZbvbJM=", + "dev": true, + "requires": { + "strip-indent": "^1.0.0" + } + }, + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + } + }, + "mustache": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-3.0.1.tgz", + "integrity": "sha512-jFI/4UVRsRYdUbuDTKT7KzfOp7FiD5WzYmmwNwXyUVypC0xjoTL78Fqc0jHUPIvvGD+6DQSPHIt1NE7D1ArsqA==" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mux-demux": { + "version": "3.7.9", + "resolved": "https://registry.npmjs.org/mux-demux/-/mux-demux-3.7.9.tgz", + "integrity": "sha1-NTZ3GP02AcgLzi63YlMVdtekrO8=", + "requires": { + "duplex": "~1.0.0", + "json-buffer": "~2.0.4", + "msgpack-stream": "~0.0.10", + "stream-combiner": "0.0.2", + "stream-serializer": "~1.1.1", + "through": "~2.3.1", + "xtend": "~1.0.3" + } + }, + "mysql": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.17.1.tgz", + "integrity": "sha512-7vMqHQ673SAk5C8fOzTG2LpPcf3bNt0oL3sFpxPEEFp1mdlDcrLK0On7z8ZYKaaHrHwNcQ/MTUz7/oobZ2OyyA==", + "requires": { + "bignumber.js": "7.2.1", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + } + }, + "mysql2": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-1.6.5.tgz", + "integrity": "sha512-zedaOOyb3msuuZcJJnxIX/EGOpmljDG7B+UevRH5lqcv+yhy9eCwkArBz8/AO+/rlY3/oCsOdG8R5oD6k0hNfg==", + "dev": true, + "requires": { + "denque": "^1.4.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.4.24", + "long": "^4.0.0", + "lru-cache": "^4.1.3", + "named-placeholders": "^1.1.2", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "named-placeholders": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", + "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", + "dev": true, + "requires": { + "lru-cache": "^4.1.3" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "nanoid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.3.tgz", + "integrity": "sha512-NbaoqdhIYmY6FXDRB4eYtDVC9Z9eCbn8TyaiC16LNKtpPv/aqa0tOPD8y6gNE4yUNnaZ7LLhYtXOev/6+cBtfw==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "nightmare": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/nightmare/-/nightmare-3.0.2.tgz", + "integrity": "sha512-z6Sr7k71pFcNHFH0orejum9xMzrsdU1lcxlbvNGRsKgDltmu4r52sK5opDnoqfyWS+w9SNthj/4Bbt5zNofzhw==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "deep-defaults": "^1.0.3", + "defaults": "^1.0.2", + "electron": "^2.0.18", + "enqueue": "^1.0.2", + "function-source": "^0.1.0", + "jsesc": "^0.5.0", + "minstache": "^1.2.0", + "mkdirp": "^0.5.1", + "multiline": "^1.0.2", + "once": "^1.3.3", + "rimraf": "^2.4.3", + "sliced": "1.0.1", + "split2": "^2.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "node-forge": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-releases": { + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.24.tgz", + "integrity": "sha512-wym2jptfuKowMmkZsfCSTsn8qAVo8zm+UiQA6l5dNqUcpfChZSnS/vbbpOeXczf+VdPhutxh+99lWHhdd6xKzg==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", + "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.11", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "node.extend": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", + "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", + "dev": true, + "requires": { + "has": "^1.0.3", + "is": "^3.2.1" + } + }, + "nodemailer": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-4.7.0.tgz", + "integrity": "sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw==" + }, + "nodemailer-direct-transport": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz", + "integrity": "sha1-6W+vuQNYVglH5WkBfZfmBzilCoY=", + "requires": { + "nodemailer-shared": "1.1.0", + "smtp-connection": "2.12.0" + } + }, + "nodemailer-fetch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", + "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=" + }, + "nodemailer-shared": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", + "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", + "requires": { + "nodemailer-fetch": "1.6.0" + } + }, + "nodemailer-stub-transport": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nodemailer-stub-transport/-/nodemailer-stub-transport-1.1.0.tgz", + "integrity": "sha1-EUIdLWa07m9AU1T5FMH0ZB6ySw0=" + }, + "nodemon": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.19.1.tgz", + "integrity": "sha512-/DXLzd/GhiaDXXbGId5BzxP1GlsqtMGM9zTmkWrgXtSqjKmGSbLicM/oAy4FR0YWm14jCHRwnR31AHS2dYFHrg==", + "dev": true, + "requires": { + "chokidar": "^2.1.5", + "debug": "^3.1.0", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.6", + "semver": "^5.5.0", + "supports-color": "^5.2.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^2.5.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", "gauge": "~2.7.3", "set-blocking": "~2.0.0" - } + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "nugget": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", + "throttleit": "0.0.2" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-diff": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/object-diff/-/object-diff-0.0.4.tgz", + "integrity": "sha1-2IOwRE/o/W4E5ZXXu2ZWgskWBH8=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { "wrappy": "1" - } + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optional": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", + "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==" + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" - } + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-queue": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-1.2.0.tgz", + "integrity": "sha1-Y5y4sHJwwVtx16ZEao4wQU88ltE=", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pkgcloud": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkgcloud/-/pkgcloud-2.1.0.tgz", + "integrity": "sha512-0029nB7g1Y9ESCPLESORiZaG19Yh9aHXZqe/odvJS9O5SJao2RUA1h8Oksz+qw4yS8ZaexcCEGqRPmQ+il7+yA==", + "requires": { + "@google-cloud/storage": "^2.4.3", + "async": "^2.6.1", + "aws-sdk": "^2.382.0", + "errs": "^0.3.2", + "eventemitter2": "^5.0.1", + "fast-json-patch": "^2.1.0", + "filed-mimefix": "^0.1.3", + "ip": "^1.1.5", + "liboneandone": "^1.2.0", + "lodash": "^4.17.10", + "mime": "^2.4.1", + "qs": "^6.5.2", + "request": "^2.88.0", + "through2": "^3.0.1", + "url-join": "^4.0.0", + "xml2js": "^0.4.19" }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + } + } + }, + "platform": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", + "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "portfinder": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "posix-getopt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.2.0.tgz", + "integrity": "sha1-Su7rfa3mb8qKk2XdqfawBXQctiE=" + }, + "postcss": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", + "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-modules-scope": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz", + "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", + "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "~0.1.2", + "through2": "~0.2.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==" + }, + "pstree.remy": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.7.tgz", + "integrity": "sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-browser": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/querystring-browser/-/querystring-browser-1.0.4.tgz", + "integrity": "sha1-8uNYgYQKgZvHsb9Zf68JeeZiLcY=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } + } + }, + "raw-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { + "dependencies": { + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -11225,5728 +11463,4204 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "referrer-policy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz", + "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==" + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", + "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp-tree": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.10.tgz", + "integrity": "sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } } - } }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "dev": true, - "requires": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^1.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^1.1.2", - "throttleit": "0.0.2" - } - }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-diff": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/object-diff/-/object-diff-0.0.4.tgz", - "integrity": "sha1-2IOwRE/o/W4E5ZXXu2ZWgskWBH8=" - }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optional": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", - "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==" - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-queue": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-1.2.0.tgz", - "integrity": "sha1-Y5y4sHJwwVtx16ZEao4wQU88ltE=", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", - "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "http://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.0.tgz", - "integrity": "sha512-8t5BsXy1LUIjn3WWOlOuFDuKswhQb/tkak641lvBgmPOBUQHXveORtlMCp6OdPV1dtuTaEahKA8VNz6uLfKBtA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "platform": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz", - "integrity": "sha512-TuvHS8AOIZNAlE77WUDiR4rySV/VMptyMfcfeoMgs4P8apaZM3JrnbzBiixKUv+XR6i+BXrQh8WAnjaSPFO65Q==" - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "posix-getopt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.2.0.tgz", - "integrity": "sha1-Su7rfa3mb8qKk2XdqfawBXQctiE=" - }, - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" } - } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.4.tgz", - "integrity": "sha512-WvuSaTKXUqYJbnT7R3YrsNrHv/C5vRfr5VglS4bFOk0MYT4CLBfc/xgExA+x2RftlYgiBDvWmVs191Xv8S8gZQ==", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6", - "postcss-value-parser": "^3.3.1" - } - }, - "postcss-modules-scope": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz", - "integrity": "sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^7.0.6" - } - }, - "postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" - } - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "dev": true, - "requires": { - "speedometer": "~0.1.2", - "through2": "~0.2.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, - "readable-stream": { - "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "require-yaml": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/require-yaml/-/require-yaml-0.0.1.tgz", + "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", + "requires": { + "js-yaml": "^3.13.1" + } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true }, - "through2": { - "version": "0.2.3", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", - "dev": true, - "requires": { - "readable-stream": "~1.1.9", - "xtend": "~2.1.1" - } + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "~0.4.0" - } - } - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pstree.remy": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.6.tgz", - "integrity": "sha512-NdF35+QsqD7EgNEI5mkI/X+UwaxVEbQaz9f4IooEmMUv6ZPmlTQYGjBPJGgrlzNdjSvIy4MWMg6Q6vCgBO2K+w==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - } - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-browser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/querystring-browser/-/querystring-browser-1.0.4.tgz", - "integrity": "sha1-8uNYgYQKgZvHsb9Zf68JeeZiLcY=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", - "dev": true - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, - "raw-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", - "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true, - "requires": { - "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "referrer-policy": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.1.0.tgz", - "integrity": "sha1-NXdOtzW/UPtsB46DM0tHI1AgfXk=" - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", - "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", - "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexp-tree": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.4.tgz", - "integrity": "sha512-DohP6WXzgrc7gFs9GsTQgigUfMXZqXkPk+20qkMF6YCy0Qk0FsHL1/KtxTycGR/62DHRtJ1MHQF2g8YzywP4kA==", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "regexpu-core": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", - "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^7.0.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.0.2" - } - }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "^1.0.1" - } - }, - "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", - "dev": true - }, - "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.2.tgz", - "integrity": "sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==", - "dev": true, - "requires": { - "css-select": "^1.1.0", - "dom-converter": "~0.2", - "htmlparser2": "~3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" - }, - "dependencies": { - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "http://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1", - "domhandler": "2.1", - "domutils": "1.1", - "readable-stream": "1.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-yaml": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/require-yaml/-/require-yaml-0.0.1.tgz", - "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", - "requires": { - "js-yaml": "^3.13.1" - }, - "dependencies": { - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rfdc": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", - "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA==", - "dev": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safefs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/safefs/-/safefs-3.2.2.tgz", - "integrity": "sha1-gXDBRE1wOOCMrqBaN0+uL6NJ4Vw=", - "requires": { - "graceful-fs": "*" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "sass-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", - "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", - "dev": true, - "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "scandirectory": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/scandirectory/-/scandirectory-2.5.0.tgz", - "integrity": "sha1-bOA/VKCQtmjjy+2/IO354xBZPnI=", - "requires": { - "ignorefs": "^1.0.0", - "safefs": "^3.1.2", - "taskgroup": "^4.0.5" - } - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - }, - "dependencies": { - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs=" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } - } - }, - "seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=", - "dev": true - }, - "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", - "dev": true - }, - "serve-favicon": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", - "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", - "requires": { - "etag": "~1.8.1", - "fresh": "0.5.2", - "ms": "2.1.1", - "parseurl": "~1.3.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "dev": true, - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shimmer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.0.tgz", - "integrity": "sha512-xTCx2vohXC2EWWDqY/zb4+5Mu28D+HYNSOuFzsyRDRvI/e1ICb69afwaUwfjr+25ZXldbOLyp+iDUZHq8UnTag==" - }, - "shortid": { - "version": "2.2.14", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.14.tgz", - "integrity": "sha512-4UnZgr9gDdA1kaKj/38IiudfC3KHKhDc1zi/HSxd9FQDR0VLwH3/y79tZJLsVYPsJgIjeHjqIWaWVRJUj9qZOQ==", - "requires": { - "nanoid": "^2.0.0" - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "dev": true, - "requires": { - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "sliced": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", - "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", - "dev": true - }, - "smtp-connection": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", - "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", - "requires": { - "httpntlm": "1.6.1", - "nodemailer-shared": "1.1.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "soap": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/soap/-/soap-0.26.0.tgz", - "integrity": "sha512-tTS3lnGl6lfjQQuJgNnWOgC0Xa6qYQSwl2G7DX3kCdGmek/FTNmHDM/7icKP1KBMFfCrKpAWEbZiGefa92SCYw==", - "requires": { - "bluebird": "^3.5.0", - "concat-stream": "^1.5.1", - "debug": "^2.6.9", - "ejs": "~2.5.5", - "finalhandler": "^1.0.3", - "httpntlm": "^1.5.2", - "lodash": "^4.17.5", - "request": ">=2.9.0", - "sax": ">=0.6", - "serve-static": "^1.11.1", - "strip-bom": "~0.3.1", - "uuid": "^3.1.0", - "xml-crypto": "~0.8.0" - } - }, - "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", - "dev": true, - "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", - "dev": true - }, - "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "socket.io-parser": { - "version": "3.2.0", - "resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", - "dev": true - }, - "spdy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", - "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "split2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", - "dev": true, - "requires": { - "through2": "^2.0.2" - } - }, - "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" - }, - "sqlstring": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", - "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" - }, - "sse": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/sse/-/sse-0.0.8.tgz", - "integrity": "sha512-cviG7JH31TUhZeaEVhac3zTzA+2FwA7qvHziAHpb7mC7RNVJ/RbHN+6LIGsS2ugP4o2H15DWmrSMK+91CboIcg==", - "requires": { - "options": "0.0.6" - } - }, - "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stable": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", - "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=" - }, - "stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-combiner": { - "version": "0.0.2", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.2.tgz", - "integrity": "sha1-3+DnRnV0JWXnbGBWeI6lwjvZfbQ=", - "requires": { - "duplexer": "~0.0.3" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-serializer": { - "version": "1.1.2", - "resolved": "http://registry.npmjs.org/stream-serializer/-/stream-serializer-1.1.2.tgz", - "integrity": "sha1-wfl9FdolH1lK4n1B7IraCahG408=" - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "streamroller": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.3.tgz", - "integrity": "sha512-P7z9NwP51EltdZ81otaGAN3ob+/F88USJE546joNq7bqRNTe6jc74fTBDyynxP4qpIfKlt/CesEYicuMzI0yJg==", - "dev": true, - "requires": { - "async": "^2.6.1", - "date-format": "^2.0.0", - "debug": "^3.1.0", - "fs-extra": "^7.0.0", - "lodash": "^4.17.10" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-0.3.1.tgz", - "integrity": "sha1-noo57/RW/5q8LwWfXyIluw8/fKU=", - "requires": { - "first-chunk-stream": "^0.1.0", - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "strong-error-handler": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-2.3.2.tgz", - "integrity": "sha512-MT68SXVUPB1MNKEkIOUEgKOUCXWf3QV3TmgQRxJHyVplV/IbKFW/60UhAapViDt18cwr1XmgrNbtZ/2cF2qKdg==", - "requires": { - "accepts": "^1.3.3", - "debug": "^2.2.0", - "ejs": "^2.5.7", - "http-status": "^1.0.0", - "js2xmlparser": "^3.0.0", - "strong-globalize": "^3.1.0" - } - }, - "strong-globalize": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-3.3.0.tgz", - "integrity": "sha512-WrCZPABG/c4e55aH9S1mIW4054YL492cFwJFoF1WZZsJQ39gBYgGjdccTYI5Kj6uTlXH5hjepCQfwE5gCHJnKQ==", - "requires": { - "accept-language": "^3.0.18", - "async": "^2.4.1", - "debug": "^3.1.0", - "esprima": "^4.0.0", - "estraverse": "^4.2.0", - "g11n-pipeline": "^2.0.1", - "globalize": "^1.3.0", - "htmlparser2": "^3.9.2", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "mktmpdir": "^0.1.1", - "optional": "^0.1.3", - "os-locale": "^2.0.0", - "posix-getopt": "^1.2.0", - "word-count": "^0.2.2", - "xtend": "^4.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" } - } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "strong-remoting": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/strong-remoting/-/strong-remoting-3.13.2.tgz", - "integrity": "sha512-iuDUKgymD4+cIwu8Y0Ey3p1lVbZdgvH7HrFVGHwkFhEqC71Sxi/AMQb2f2HFcINBM6BDW7vn0iw9132hhVshHg==", - "requires": { - "async": "^2.0.1", - "body-parser": "^1.12.4", - "debug": "^3.1.0", - "depd": "^1.1.0", - "escape-string-regexp": "^1.0.5", - "eventemitter2": "^5.0.1", - "express": "4.x", - "inflection": "^1.7.1", - "jayson": "^2.0.5", - "js2xmlparser": "^3.0.0", - "loopback-datatype-geopoint": "^1.0.0", - "loopback-phase": "^3.1.0", - "mux-demux": "^3.7.9", - "qs": "^6.2.1", - "request": "^2.83.0", - "sse": "0.0.8", - "strong-error-handler": "^3.0.0", - "strong-globalize": "^4.1.0", - "traverse": "^0.6.6", - "xml2js": "^0.4.8" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "requires": { - "lodash": "^4.17.11" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" - }, - "strong-error-handler": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-3.2.0.tgz", - "integrity": "sha512-WBU5itMkVPoEPf1W3ptb0AjtPvRWabDzVO4Lcy8MbJQUbo8vdWngLAcNQptQovdFoMGLgQAgJzZkelm6FRADuQ==", - "requires": { - "@types/express": "^4.16.0", - "accepts": "^1.3.3", - "debug": "^3.1.0", - "ejs": "^2.6.1", - "http-status": "^1.1.2", - "js2xmlparser": "^3.0.0", - "strong-globalize": "^4.1.0" - } - }, - "strong-globalize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.2.tgz", - "integrity": "sha512-2ks3/fuQy4B/AQDTAaEvTXYSqH4TWrv9VGlbZ4YujzijEJbIWbptF/9dO13duv87aRhWdM5ABEiTy7ZmnmBhdQ==", - "requires": { - "accept-language": "^3.0.18", - "debug": "^4.0.1", - "globalize": "^1.3.0", - "lodash": "^4.17.4", - "md5": "^2.2.1", - "mkdirp": "^0.5.1", - "os-locale": "^3.0.1", - "yamljs": "^0.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } } - } - } - } - }, - "style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "sumchecker": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz", - "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "es6-promise": "^4.0.5" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "swagger-client": { - "version": "3.8.22", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.8.22.tgz", - "integrity": "sha512-Jm+X3p6B6hvdSIZ3hJRltrHP2z3if6zt+fmYZaFwyAiPt6IU25PHkipqC92KSCy/pK2bpo9ZQfmphFEtuGc3ig==", - "requires": { - "@kyleshockey/js-yaml": "^1.0.1", - "@kyleshockey/object-assign-deep": "^0.4.0", - "babel-runtime": "^6.26.0", - "btoa": "1.1.2", - "buffer": "^5.1.0", - "cookie": "^0.3.1", - "cross-fetch": "0.0.8", - "deep-extend": "^0.5.1", - "encode-3986": "^1.0.0", - "fast-json-patch": "^2.0.6", - "isomorphic-form-data": "0.0.1", - "lodash": "^4.16.2", - "qs": "^6.3.0", - "querystring-browser": "^1.0.4", - "url": "^0.11.0", - "utf8-bytes": "0.0.1", - "utfstring": "^2.0.0" - }, - "dependencies": { - "@kyleshockey/js-yaml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@kyleshockey/js-yaml/-/js-yaml-1.0.1.tgz", - "integrity": "sha512-coFyIk1LvTscq1cUU4nCCfYwv+cmG4fCP+wgDKgYZjhM4f++YwZy+g0k+1tUqa4GuUpBTEOGH2KUqKFFWdT73g==", - "requires": { - "argparse": "^1.0.7" - } }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - } - } - }, - "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", - "dev": true, - "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", - "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true }, - "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", - "dev": true + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true }, - "string-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz", - "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.0.0" - } + "retry-request": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz", + "integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==", + "requires": { + "debug": "^4.1.1", + "through2": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } }, - "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", - "dev": true, - "requires": { - "ansi-regex": "^4.0.0" - } - } - } - }, - "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", - "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "taskgroup": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/taskgroup/-/taskgroup-4.3.1.tgz", - "integrity": "sha1-feGT/r12gnPEV3MElwJNUSwnkVo=", - "requires": { - "ambi": "^2.2.0", - "csextends": "^1.0.3" - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, - "terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.9" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", - "integrity": "sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg==", - "dev": true, - "requires": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "terser": "^3.16.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" }, - "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } + "safefs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/safefs/-/safefs-3.2.2.tgz", + "integrity": "sha1-gXDBRE1wOOCMrqBaN0+uL6NJ4Vw=", + "requires": { + "graceful-fs": "*" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "scandirectory": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/scandirectory/-/scandirectory-2.5.0.tgz", + "integrity": "sha1-bOA/VKCQtmjjy+2/IO354xBZPnI=", + "requires": { + "ignorefs": "^1.0.0", + "safefs": "^3.1.2", + "taskgroup": "^4.0.5" + } }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", - "dev": true - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", - "dev": true, - "requires": { - "through2": "^2.0.3" - } - }, - "to-utf8": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", - "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=" - }, - "toposort": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-0.2.12.tgz", - "integrity": "sha1-x9KYTz1IwhcxXMMtdwiIt3lJHoE=" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1" - } - } - } - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - }, - "dependencies": { - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "requires": { - "mime-db": "~1.37.0" - } - } - } - }, - "typechecker": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.1.0.tgz", - "integrity": "sha1-0cIJOlT/ihn1jP+HfuqlTyJC04M=" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", - "dev": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uid2": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", - "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "undefsafe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", - "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", - "dev": true, - "requires": { - "debug": "^2.2.0" - } - }, - "underscore": { - "version": "1.7.0", - "resolved": "http://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" - }, - "underscore.string": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", - "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", - "requires": { - "sprintf-js": "^1.0.3", - "util-deprecate": "^1.0.2" - } - }, - "undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", - "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", - "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } - } }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "url-join": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", - "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", - "dev": true - }, - "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", - "dev": true, - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "^1.0.1" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", - "dev": true, - "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - } - }, - "utf8-bytes": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/utf8-bytes/-/utf8-bytes-0.0.1.tgz", - "integrity": "sha1-EWsCVEjJtQAIHN+/H01sbDfYg30=" - }, - "utfstring": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/utfstring/-/utfstring-2.0.0.tgz", - "integrity": "sha512-/ugBfyvIoLe9xqkFHio3CxXnpUKQ1p2LfTxPr6QTRj6GiwpHo73YGdh03UmAzDQNOWpNIE0J5nLss00L4xlWgg==" - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", - "dev": true - }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-bufferstream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vinyl-bufferstream/-/vinyl-bufferstream-1.0.1.tgz", - "integrity": "sha1-BTeGn1gO/6TKRay0dXnkuf5jCBo=", - "dev": true, - "requires": { - "bufferstreams": "1.0.1" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "vn-loopback": { - "version": "file:loopback" - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "watchr": { - "version": "2.4.13", - "resolved": "https://registry.npmjs.org/watchr/-/watchr-2.4.13.tgz", - "integrity": "sha1-10hHu01vkPYf4sdPn2hmKqDgdgE=", - "requires": { - "eachr": "^2.0.2", - "extendr": "^2.1.0", - "extract-opts": "^2.2.0", - "ignorefs": "^1.0.0", - "safefs": "^3.1.2", - "scandirectory": "^2.5.0", - "taskgroup": "^4.2.0", - "typechecker": "^2.0.8" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webpack": { - "version": "4.29.5", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.5.tgz", - "integrity": "sha512-DuWlYUT982c7XVHodrLO9quFbNpVq5FNxLrMUfYUTlgKW0+yPimynYf1kttSQpEneAL1FH3P3OLNgkyImx8qIQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.3", - "@webassemblyjs/helper-module-context": "1.8.3", - "@webassemblyjs/wasm-edit": "1.8.3", - "@webassemblyjs/wasm-parser": "1.8.3", - "acorn": "^6.0.5", - "acorn-dynamic-import": "^4.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-cli": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.3.tgz", - "integrity": "sha512-Ik3SjV6uJtWIAN5jp5ZuBMWEAaP5E4V78XJ2nI+paFPh8v4HPSwo/myN0r29Xc/6ZKnd2IdrAlpSgNOu2CDQ6Q==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.0", - "findup-sync": "^2.0.0", - "global-modules": "^1.0.0", - "import-local": "^2.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.5.0", - "v8-compile-cache": "^2.0.2", - "yargs": "^12.0.4" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", - "dev": true - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "2.0.6", - "resolved": "http://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz", - "integrity": "sha512-tj5LLD9r4tDuRIDa5Mu9lnY2qBBehAITv6A9irqXhw/HQquZgTx3BCd57zYbU2gMDnncA49ufK2qVQSbaKJwOw==", - "dev": true, - "requires": { - "loud-rejection": "^1.6.0", - "memory-fs": "~0.4.1", - "mime": "^2.1.0", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "url-join": "^2.0.2", - "webpack-log": "^1.0.1" - }, - "dependencies": { - "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", - "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.0.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "express": "^4.16.2", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", - "import-local": "^2.0.0", - "internal-ip": "^3.0.1", - "ip": "^1.1.5", - "killable": "^1.0.0", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", - "schema-utils": "^1.0.0", - "selfsigned": "^1.9.1", - "semver": "^5.6.0", - "serve-index": "^1.7.2", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "^4.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "3.4.0", - "webpack-log": "^2.0.0", - "yargs": "12.0.2" - }, - "dependencies": { - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } } - } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "selfsigned": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + }, + "dependencies": { + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + } } - } - }, - "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", - "dev": true, - "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=", + "dev": true + }, + "serialize-javascript": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "dev": true + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "shortid": { + "version": "2.2.14", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.14.tgz", + "integrity": "sha512-4UnZgr9gDdA1kaKj/38IiudfC3KHKhDc1zi/HSxd9FQDR0VLwH3/y79tZJLsVYPsJgIjeHjqIWaWVRJUj9qZOQ==", + "requires": { + "nanoid": "^2.0.0" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=", + "dev": true + }, + "smtp-connection": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", + "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", + "requires": { + "httpntlm": "1.6.1", + "nodemailer-shared": "1.1.0" + } + }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "soap": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/soap/-/soap-0.26.0.tgz", + "integrity": "sha512-tTS3lnGl6lfjQQuJgNnWOgC0Xa6qYQSwl2G7DX3kCdGmek/FTNmHDM/7icKP1KBMFfCrKpAWEbZiGefa92SCYw==", + "requires": { + "bluebird": "^3.5.0", + "concat-stream": "^1.5.1", + "debug": "^2.6.9", + "ejs": "~2.5.5", + "finalhandler": "^1.0.3", + "httpntlm": "^1.5.2", + "lodash": "^4.17.5", + "request": ">=2.9.0", + "sax": ">=0.6", + "serve-static": "^1.11.1", + "strip-bom": "~0.3.1", + "uuid": "^3.1.0", + "xml-crypto": "~0.8.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "ejs": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "dev": true + }, + "spdy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "split-array-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", + "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", + "requires": { + "is-stream-ended": "^0.1.4" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" + }, + "sse": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/sse/-/sse-0.0.8.tgz", + "integrity": "sha512-cviG7JH31TUhZeaEVhac3zTzA+2FwA7qvHziAHpb7mC7RNVJ/RbHN+6LIGsS2ugP4o2H15DWmrSMK+91CboIcg==", + "requires": { + "options": "0.0.6" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.2.tgz", + "integrity": "sha1-3+DnRnV0JWXnbGBWeI6lwjvZfbQ=", + "requires": { + "duplexer": "~0.0.3" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "stream-serializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/stream-serializer/-/stream-serializer-1.1.2.tgz", + "integrity": "sha1-wfl9FdolH1lK4n1B7IraCahG408=" + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "streamroller": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.5.tgz", + "integrity": "sha512-iGVaMcyF5PcUY0cPbW3xFQUXnr9O4RZXNBBjhuLZgrjLO4XCLLGfx4T2sGqygSeylUjwgWRsnNbT9aV0Zb8AYw==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-0.3.1.tgz", + "integrity": "sha1-noo57/RW/5q8LwWfXyIluw8/fKU=", + "requires": { + "first-chunk-stream": "^0.1.0", + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "strong-error-handler": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-2.3.2.tgz", + "integrity": "sha512-MT68SXVUPB1MNKEkIOUEgKOUCXWf3QV3TmgQRxJHyVplV/IbKFW/60UhAapViDt18cwr1XmgrNbtZ/2cF2qKdg==", + "requires": { + "accepts": "^1.3.3", + "debug": "^2.2.0", + "ejs": "^2.5.7", + "http-status": "^1.0.0", + "js2xmlparser": "^3.0.0", + "strong-globalize": "^3.1.0" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "strong-globalize": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-3.3.0.tgz", + "integrity": "sha512-WrCZPABG/c4e55aH9S1mIW4054YL492cFwJFoF1WZZsJQ39gBYgGjdccTYI5Kj6uTlXH5hjepCQfwE5gCHJnKQ==", + "requires": { + "accept-language": "^3.0.18", + "async": "^2.4.1", + "debug": "^3.1.0", + "esprima": "^4.0.0", + "estraverse": "^4.2.0", + "g11n-pipeline": "^2.0.1", + "globalize": "^1.3.0", + "htmlparser2": "^3.9.2", + "lodash": "^4.17.4", + "md5": "^2.2.1", + "mkdirp": "^0.5.1", + "mktmpdir": "^0.1.1", + "optional": "^0.1.3", + "os-locale": "^2.0.0", + "posix-getopt": "^1.2.0", + "word-count": "^0.2.2", + "xtend": "^4.0.1", + "yamljs": "^0.3.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "strong-globalize": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.3.tgz", + "integrity": "sha512-SJegV7w5D4AodEspZJtJ7rls3fmi+Zc0PdyJCqBsg4RN9B8TC80/uAI2fikC+s1Jp9FLvr2vDX8f0Fqc62M4OA==", + "requires": { + "accept-language": "^3.0.18", + "debug": "^4.1.1", + "globalize": "^1.4.2", + "lodash": "^4.17.4", + "md5": "^2.2.1", + "mkdirp": "^0.5.1", + "os-locale": "^3.1.0", + "yamljs": "^0.3.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "strong-remoting": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/strong-remoting/-/strong-remoting-3.14.0.tgz", + "integrity": "sha512-kBOVMBIGW8fCv37G8uyvxBLO+ed0mF9z+gulAgOZfdIXWa0AgXhndpjTqAWvde+2iXt/n6odiyYvCUbXCrfBsQ==", + "requires": { + "async": "^2.0.1", + "body-parser": "^1.12.4", + "debug": "^3.1.0", + "depd": "^1.1.0", + "escape-string-regexp": "^1.0.5", + "eventemitter2": "^5.0.1", + "express": "4.x", + "inflection": "^1.7.1", + "jayson": "^2.0.5", + "js2xmlparser": "^3.0.0", + "loopback-datatype-geopoint": "^1.0.0", + "loopback-phase": "^3.1.0", + "mux-demux": "^3.7.9", + "qs": "^6.2.1", + "request": "^2.83.0", + "sse": "0.0.8", + "strong-error-handler": "^3.0.0", + "strong-globalize": "^4.1.0", + "traverse": "^0.6.6", + "xml2js": "^0.4.8" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "strong-error-handler": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/strong-error-handler/-/strong-error-handler-3.2.0.tgz", + "integrity": "sha512-WBU5itMkVPoEPf1W3ptb0AjtPvRWabDzVO4Lcy8MbJQUbo8vdWngLAcNQptQovdFoMGLgQAgJzZkelm6FRADuQ==", + "requires": { + "@types/express": "^4.16.0", + "accepts": "^1.3.3", + "debug": "^3.1.0", + "ejs": "^2.6.1", + "http-status": "^1.1.2", + "js2xmlparser": "^3.0.0", + "strong-globalize": "^4.1.0" + } + } + } + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=" + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "sumchecker": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz", + "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "es6-promise": "^4.0.5" + } + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=" + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "swagger-client": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.9.0.tgz", + "integrity": "sha512-uyCq2xoaAtmE0oIQ0fCfnsDoy/v97ANnAZywtyk4yumBP74xXp4NFlpZaqZJHN9K9dbPzgs3MH98VocZeM0ExQ==", + "requires": { + "@kyleshockey/js-yaml": "^1.0.1", + "@kyleshockey/object-assign-deep": "^0.4.0", + "babel-runtime": "^6.26.0", + "btoa": "1.1.2", + "buffer": "^5.1.0", + "cookie": "^0.3.1", + "cross-fetch": "0.0.8", + "deep-extend": "^0.5.1", + "encode-3986": "^1.0.0", + "fast-json-patch": "^2.0.6", + "isomorphic-form-data": "0.0.1", + "lodash": "^4.16.2", + "qs": "^6.3.0", + "querystring-browser": "^1.0.4", + "traverse": "^0.6.6", + "url": "^0.11.0", + "utf8-bytes": "0.0.1", + "utfstring": "^2.0.0" + }, + "dependencies": { + "@kyleshockey/js-yaml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@kyleshockey/js-yaml/-/js-yaml-1.0.1.tgz", + "integrity": "sha512-coFyIk1LvTscq1cUU4nCCfYwv+cmG4fCP+wgDKgYZjhM4f++YwZy+g0k+1tUqa4GuUpBTEOGH2KUqKFFWdT73g==", + "requires": { + "argparse": "^1.0.7" + } + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + } + } + }, + "swagger-ui": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/swagger-ui/-/swagger-ui-2.2.10.tgz", + "integrity": "sha1-sl56IWZOXZC/OR2zDbCN5B6FLXs=" + }, + "table": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", + "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", + "dev": true, + "requires": { + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "taskgroup": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/taskgroup/-/taskgroup-4.3.1.tgz", + "integrity": "sha1-feGT/r12gnPEV3MElwJNUSwnkVo=", + "requires": { + "ambi": "^2.2.0", + "csextends": "^1.0.3" + } + }, + "teeny-request": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", + "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", + "requires": { + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.2.0", + "uuid": "^3.3.2" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "terser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.2.tgz", + "integrity": "sha512-IWLuJqTvx97KP3uTYkFVn93cXO+EtlzJu8TdJylq+H0VBDlPMIfQA9MBS5Vc5t3xTEUG1q0hIfHMpAP2R+gWTw==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "dev": true, + "requires": { + "cacache": "^11.3.2", + "find-cache-dir": "^2.0.0", + "is-wsl": "^1.1.0", + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.0.0", + "webpack-sources": "^1.3.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "requires": { + "readable-stream": "2 || 3" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "dev": true + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-iso-string": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "to-utf8": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", + "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", + "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typechecker": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-2.1.0.tgz", + "integrity": "sha1-0cIJOlT/ihn1jP+HfuqlTyJC04M=" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undefsafe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", + "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "undertaker": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=" + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "utf8-bytes": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/utf8-bytes/-/utf8-bytes-0.0.1.tgz", + "integrity": "sha1-EWsCVEjJtQAIHN+/H01sbDfYg30=" + }, + "utfstring": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/utfstring/-/utfstring-2.0.0.tgz", + "integrity": "sha512-/ugBfyvIoLe9xqkFHio3CxXnpUKQ1p2LfTxPr6QTRj6GiwpHo73YGdh03UmAzDQNOWpNIE0J5nLss00L4xlWgg==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-bufferstream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vinyl-bufferstream/-/vinyl-bufferstream-1.0.1.tgz", + "integrity": "sha1-BTeGn1gO/6TKRay0dXnkuf5jCBo=", + "dev": true, + "requires": { + "bufferstreams": "1.0.1" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true + }, + "vn-loopback": { + "version": "file:loopback" + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "watchr": { + "version": "2.4.13", + "resolved": "https://registry.npmjs.org/watchr/-/watchr-2.4.13.tgz", + "integrity": "sha1-10hHu01vkPYf4sdPn2hmKqDgdgE=", + "requires": { + "eachr": "^2.0.2", + "extendr": "^2.1.0", + "extract-opts": "^2.2.0", + "ignorefs": "^1.0.0", + "safefs": "^3.1.2", + "scandirectory": "^2.5.0", + "taskgroup": "^4.2.0", + "typechecker": "^2.0.8" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "4.35.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.35.2.tgz", + "integrity": "sha512-TZAmorNymV4q66gAM/h90cEjG+N3627Q2MnkSgKlX/z3DlNVKUtqy57lz1WmZU2+FUZwzM+qm7cGaO95PyrX5A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.5.tgz", + "integrity": "sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } }, "webpack-dev-middleware": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", - "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", - "dev": true, - "requires": { - "memory-fs": "~0.4.1", - "mime": "^2.3.1", - "range-parser": "^1.0.3", - "webpack-log": "^2.0.0" - } + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-2.0.6.tgz", + "integrity": "sha512-tj5LLD9r4tDuRIDa5Mu9lnY2qBBehAITv6A9irqXhw/HQquZgTx3BCd57zYbU2gMDnncA49ufK2qVQSbaKJwOw==", + "dev": true, + "requires": { + "loud-rejection": "^1.6.0", + "memory-fs": "~0.4.1", + "mime": "^2.1.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "url-join": "^2.0.2", + "webpack-log": "^1.0.1" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "url-join": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", + "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz", + "integrity": "sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.6", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "^0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "killable": "^1.0.1", + "loglevel": "^1.6.3", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.20", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.4", + "semver": "^6.1.1", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "is-path-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", + "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", + "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "webpack-dev-middleware": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", + "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.2", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } }, "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "loglevelnext": "^1.0.1", + "uuid": "^3.1.0" + } + }, + "webpack-merge": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } }, "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "word-count": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/word-count/-/word-count-0.2.2.tgz", + "integrity": "sha1-aZGS/KaCn+k21Byw2V25JIxXBFE=" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "x-xss-protection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.1.0.tgz", + "integrity": "sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg==" + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, + "xml-crypto": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.8.5.tgz", + "integrity": "sha1-K7z7PrM/OoKiGLgiv2craxwg5Tg=", + "requires": { + "xmldom": "=0.1.19", + "xpath.js": ">=0.0.3" + } + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" + }, + "xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xpath.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", + "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==" }, "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, + "xtend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-1.0.3.tgz", + "integrity": "sha1-P12Tc1PM7Y4IU5mlY/2yJUHClgo=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + }, + "yaml-loader": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.5.0.tgz", + "integrity": "sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A==", + "dev": true, + "requires": { + "js-yaml": "^3.5.2" + } + }, + "yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "requires": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } }, "yargs": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", - "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" - } + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - }, - "webpack-log": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", - "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", - "dev": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" - } - }, - "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", - "dev": true, - "requires": { - "lodash": "^4.17.5" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } - } - }, - "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - } - }, - "word-count": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/word-count/-/word-count-0.2.2.tgz", - "integrity": "sha1-aZGS/KaCn+k21Byw2V25JIxXBFE=" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } }, - "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "x-xss-protection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.1.0.tgz", - "integrity": "sha512-rx3GzJlgEeZ08MIcDsU2vY2B1QEriUKJTSiNHHUIem6eg9pzVOr2TL3Y4Pd6TMAM5D5azGjcxqI62piITBDHVg==" - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, - "xml-crypto": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.8.5.tgz", - "integrity": "sha1-K7z7PrM/OoKiGLgiv2craxwg5Tg=", - "requires": { - "xmldom": "=0.1.19", - "xpath.js": ">=0.0.3" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "xmlbuilder": { - "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=" - }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", - "dev": true - }, - "xpath.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", - "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==" - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "yaml-loader": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.5.0.tgz", - "integrity": "sha512-p9QIzcFSNm4mCw/m5NdyMfN4RE4aFZJWRRb01ERVNGCym8VNbKtw3OYZXnvUIkim6U/EjqE/2yIh9F/msShH9A==", - "dev": true, - "requires": { - "js-yaml": "^3.5.2" - } - }, - "yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "requires": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true } - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "requires": { - "fd-slicer": "~1.0.1" - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true } - } } diff --git a/package.json b/package.json index 016053bd5..151eea978 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,10 @@ "fs-extra": "^5.0.0", "helmet": "^3.15.1", "i18n": "^0.8.3", - "loopback": "^3.25.0", + "loopback": "^3.26.0", "loopback-boot": "^2.27.1", "loopback-component-explorer": "^6.3.1", + "loopback-component-storage": "^3.6.1", "loopback-connector-mysql": "^5.3.1", "loopback-connector-remote": "^3.4.1", "loopback-context": "^3.4.0", @@ -59,7 +60,7 @@ "gulp-yaml": "^1.0.1", "html-loader": "^0.4.5", "html-webpack-plugin": "^4.0.0-beta.5", - "jasmine": "^2.99.0", + "jasmine": "^3.4.0", "jasmine-reporters": "^2.3.2", "jasmine-spec-reporter": "^4.2.1", "json-loader": "^0.5.7", @@ -73,7 +74,7 @@ "merge-stream": "^1.0.1", "minimist": "^1.2.0", "mysql2": "^1.6.5", - "nightmare": "^3.0.1", + "nightmare": "^3.0.2", "node-sass": "^4.9.3", "nodemon": "^1.18.10", "plugin-error": "^1.0.1", diff --git a/print/common/css/layout.css b/print/common/css/layout.css index 3e302d675..5914c3587 100644 --- a/print/common/css/layout.css +++ b/print/common/css/layout.css @@ -99,6 +99,12 @@ width: 35.4px } +.emptyField { + border-bottom: 1px dotted grey; + min-height: 1em; + display: block +} + .field.rectangle span { height: 2em; width: 8em @@ -185,20 +191,39 @@ table { color: #888 } - .line { border-bottom: 1px solid #DDD; border-right: 1px solid #DDD; border-left: 1px solid #DDD; + position: relative; + margin-left: -1px; + margin-right: 1px; margin-top: 10px; color: #999; - padding: 5px + padding: 5px 0 +} + +.line .vertical-aligned { + position: absolute; + text-align: center; + width: 100%; + } .line span { background-color: #FFF; - margin: -5px 0 0 50px; - display: block; - padding: 5px; - float: left + padding: 5px +} + +.signature { + width: 100% +} + +.signature section { + height: 150px +} + +.signature p { + margin-right: 50%; + margin-top: 140px } diff --git a/print/config/routes.json b/print/config/routes.json index 69b94a6e4..f4a620ffe 100644 --- a/print/config/routes.json +++ b/print/config/routes.json @@ -6,6 +6,7 @@ {"type": "email", "name": "letter-debtor-nd"}, {"type": "email", "name": "claim-pickup-order"}, {"type": "email", "name": "sepa-core"}, + {"type": "email", "name": "client-lcr"}, {"type": "email", "name": "driver-route"}, {"type": "report", "name": "rpt-delivery-note"}, {"type": "report", "name": "rpt-claim-pickup-order"}, @@ -14,6 +15,7 @@ {"type": "report", "name": "rpt-receipt"}, {"type": "report", "name": "rpt-zone"}, {"type": "report", "name": "rpt-route"}, + {"type": "report", "name": "rpt-lcr"}, {"type": "static", "name": "email-header"}, {"type": "static", "name": "email-footer"}, {"type": "static", "name": "report-header"}, diff --git a/print/report/client-lcr/assets/css/index.js b/print/report/client-lcr/assets/css/index.js new file mode 100644 index 000000000..321c632dc --- /dev/null +++ b/print/report/client-lcr/assets/css/index.js @@ -0,0 +1,7 @@ +const CssReader = require(`${appPath}/lib/cssReader`); + +module.exports = new CssReader([ + `${appPath}/common/css/layout.css`, + `${appPath}/common/css/email.css`, + `${appPath}/common/css/misc.css`]) + .mergeStyles(); diff --git a/print/report/client-lcr/index.html b/print/report/client-lcr/index.html new file mode 100644 index 000000000..91fa67ab5 --- /dev/null +++ b/print/report/client-lcr/index.html @@ -0,0 +1,27 @@ + + + + {{ $t('subject') }} + + +
+ + + +
+ +
+

{{ $t('title') }}

+
+ + +

{{$t('description.dear')}},

+

{{$t('description.instructions')}}

+

{{$t('description.conclusion')}}

+
+ + + +
+ + \ No newline at end of file diff --git a/print/report/client-lcr/index.js b/print/report/client-lcr/index.js new file mode 100755 index 000000000..bb7ba452d --- /dev/null +++ b/print/report/client-lcr/index.js @@ -0,0 +1,49 @@ +const database = require(`${appPath}/lib/database`); +const reportEngine = require(`${appPath}/lib/reportEngine.js`); +const UserException = require(`${appPath}/lib/exceptions/userException`); + +module.exports = { + name: 'client-lcr', + async asyncData(ctx, params) { + const promises = []; + const data = { + isPreview: ctx.method === 'GET', + }; + + if (!params.clientFk) + throw new UserException('No client id specified'); + + promises.push(reportEngine.toPdf('rpt-lcr', ctx)); + promises.push(this.methods.fetchClient(params.clientFk)); + + return Promise.all(promises).then(result => { + const stream = result[0]; + const [[client]] = result[1]; + + Object.assign(data, client); + Object.assign(data, {attachments: [{filename: 'rpt-lcr.pdf', content: stream}]}); + + return data; + }); + }, + created() { + if (this.locale) + this.$i18n.locale = this.locale; + }, + + methods: { + fetchClient(clientFk) { + return database.pool.query(` + SELECT + u.lang locale, + c.email recipient + FROM client c + JOIN account.user u ON u.id = c.id + WHERE c.id = ?`, [clientFk]); + }, + }, + components: { + 'email-header': require('../email-header'), + 'email-footer': require('../email-footer'), + }, +}; diff --git a/print/report/client-lcr/locale.js b/print/report/client-lcr/locale.js new file mode 100644 index 000000000..85a75d778 --- /dev/null +++ b/print/report/client-lcr/locale.js @@ -0,0 +1,64 @@ +module.exports = { + messages: { + es: { + subject: 'Autorisation pour débit', + title: 'Autorisation pour débit', + description: { + dear: 'Messieurs', + instructions: `Étant donné les excellentes relations existantes entre nos + deux sociétés et en vue de faciliter les processus de + paiement de nos factures, nous vous suggérons l'utilisation + du système française de compensation LCR. + Ce service consiste à effectuer des recouvrements + automatiques, de manière électronique, de nos effets - + lettres de change et billets à ordre - tirés sur votre société + en Euro, qui présente comme principal avantage pour vous + la substantielle réduction de coûts dans des termes de frais + et commissions bancaires. + Dans le cas où vous accepteriez notre proposition, à + l’échéance de chaque effet, votre compte sera débité + automatiquement par votre Banque. + Ainsi, nous vous demandons de signer et envoyer à votre + Banque l'original de l'autorisation pour débit en annexe, + dûment remplie, et de nous retourner une photocopie de la + dite autorisation. + Ce système étant basé sur la transmission de données de + manière électronique, le maniement de documents + physiques á été éliminé + En vous remercieront pour votre collaboration, nous vous + prions d’agréer, Messieurs, nos salutations distinguées.`, + conclusion: 'Bien cordialement' + }, + }, + fr: { + subject: 'Autorisation pour débit', + title: 'Autorisation pour débit', + description: { + dear: 'Messieurs', + instructions: `Étant donné les excellentes relations existantes entre nos + deux sociétés et en vue de faciliter les processus de + paiement de nos factures, nous vous suggérons l'utilisation + du système française de compensation LCR. + Ce service consiste à effectuer des recouvrements + automatiques, de manière électronique, de nos effets - + lettres de change et billets à ordre - tirés sur votre société + en Euro, qui présente comme principal avantage pour vous + la substantielle réduction de coûts dans des termes de frais + et commissions bancaires. + Dans le cas où vous accepteriez notre proposition, à + l’échéance de chaque effet, votre compte sera débité + automatiquement par votre Banque. + Ainsi, nous vous demandons de signer et envoyer à votre + Banque l'original de l'autorisation pour débit en annexe, + dûment remplie, et de nous retourner une photocopie de la + dite autorisation. + Ce système étant basé sur la transmission de données de + manière électronique, le maniement de documents + physiques á été éliminé + En vous remercieront pour votre collaboration, nous vous + prions d’agréer, Messieurs, nos salutations distinguées.`, + conclusion: 'Bien cordialement' + }, + }, + }, +}; diff --git a/print/report/report-footer/locale.js b/print/report/report-footer/locale.js index 156d3f988..bf564c731 100644 --- a/print/report/report-footer/locale.js +++ b/print/report/report-footer/locale.js @@ -10,6 +10,14 @@ module.exports = { por escrito al domicilio social de la entidad. La finalidad del fichero es la gestión administrativa, contabilidad, y facturación.`, } }, + fr: { + numPages: 'Page {{page}} de {{pages}}', + law: { + phytosanitary: `VERDNATURA LEVANTE SL - Passeport Phytosanitaire R.P. Generalitat Valenciana - Numéro d'opérateur: ES17462130`, + privacy: `Conformément aux dispositions de la loi organique 15/1999 sur la protection des données personnelles, nous vous informons que les données personnelles que vous fournissez seront incluses dans des dossiers. + VERDNATURA LEVANTE S.L., vous pouvez à tout moment, exercer les droits d'accès, de rectification, d'annulation et d'opposition, en communiquant par écrit au siège social de la société. Le dossier a pour objet la gestion administrative, la comptabilité et la facturation.`, + } + }, pt: { numPages: 'Página {{page}} de {{pages}}', law: { diff --git a/print/report/rpt-claim-pickup-order/locale.js b/print/report/rpt-claim-pickup-order/locale.js index b1533efc9..27b1bc5f4 100644 --- a/print/report/rpt-claim-pickup-order/locale.js +++ b/print/report/rpt-claim-pickup-order/locale.js @@ -15,7 +15,7 @@ module.exports = { sections: { agency: { description: `Para agilizar tu recogida, por favor, pónte en contacto con la oficina de integrados.
- Tlf: 96 166 77 88 - Ana Gómez (agomezf@integra2.es)` + Tlf: 96 166 77 88 - Ana Gómez (Ext. 113) (agomezf@integra2.es) ` } } }, diff --git a/print/report/rpt-lcr/assets/css/index.js b/print/report/rpt-lcr/assets/css/index.js new file mode 100644 index 000000000..515dea750 --- /dev/null +++ b/print/report/rpt-lcr/assets/css/index.js @@ -0,0 +1,8 @@ +const CssReader = require(`${appPath}/lib/cssReader`); + +module.exports = new CssReader([ + `${appPath}/common/css/layout.css`, + `${appPath}/common/css/report.css`, + `${appPath}/common/css/misc.css`, + `${__dirname}/style.css`]) + .mergeStyles(); diff --git a/print/report/rpt-lcr/assets/css/style.css b/print/report/rpt-lcr/assets/css/style.css new file mode 100644 index 000000000..94b93e153 --- /dev/null +++ b/print/report/rpt-lcr/assets/css/style.css @@ -0,0 +1,31 @@ +.payment-type { + width: auto +} + +.payment-type th:nth-child(2), .payment-type th:nth-child(5) { + padding: 10px !important +} + +.payment-type th:nth-child(3){ + padding: 0 50px !important +} + +.table-margin { + margin-top: 20px +} + +.grey-background { + background-color: #DDD +} + +.emptyField { + width: 100%; +} + +.row-oriented.input-table > tbody > tr > td { + width: 10% !important +} + +.row-oriented.input-table > tbody > tr > th { + width: 90% !important +} \ No newline at end of file diff --git a/print/report/rpt-lcr/assets/images/signature.png b/print/report/rpt-lcr/assets/images/signature.png new file mode 100644 index 000000000..c69cc4798 Binary files /dev/null and b/print/report/rpt-lcr/assets/images/signature.png differ diff --git a/print/report/rpt-lcr/index.html b/print/report/rpt-lcr/index.html new file mode 100644 index 000000000..236ace8ed --- /dev/null +++ b/print/report/rpt-lcr/index.html @@ -0,0 +1,189 @@ + + + +
+ + + +
+

{{$t('title')}}

+
+
{{$t('Creditor')}}
+
+ + + + + + + + + + + + + + + + + + + +
{{$t('supplier.name')}}:{{supplierName}}
{{$t('supplier.street')}}:{{supplierStreet}}
{{supplierPostCode}}, {{supplierCity}} ({{supplierProvince}})
{{supplierCountry}}
+
+
+
+
{{$t('Deptor')}}
+
+ + + + + + + + + + + + + + + + + + + + + + + +
{{$t('client.name')}}:{{clientName}}
{{$t('client.street')}}:{{clientStreet}}
{{clientPostCode}}, {{clientCity}} ({{clientProvince}})
{{clientCountry}}
{{$t('client.fi')}}: +
+ {{fi.charAt(i)}} +
+
+
+
+

{{$t('description')}}

+
+
{{$t('Bank')}}
+
+
+ {{$t('client.toCompleteByClient')}} +
+ + + + + + + + + + + +
{{$t('bank.name')}}:
{{$t('bank.street')}}:
+ + + + + + + + + + + + + + + + + + + + +
{{$t('bank.account')}}:
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ {{$t('bank.bankCode')}} +
+
+
+
+
+ {{$t('bank.agencyCode')}} +
+
+
+
+
+ {{$t('bank.accountNumber')}} +
+
+
+
+
+ {{$t('bank.ribKey')}} +
+
+
+ + + + + + + + + + + +
IBAN:
+
+ F + R + +
+
+
+
+

{{$t('authorization')}}

+ + +
+
{{$t('client.sign')}}
+
+
+

{{$t('client.signDate')}}:

+
+
+
+
+ + + + +
+ + \ No newline at end of file diff --git a/print/report/rpt-lcr/index.js b/print/report/rpt-lcr/index.js new file mode 100755 index 000000000..d4342764c --- /dev/null +++ b/print/report/rpt-lcr/index.js @@ -0,0 +1,80 @@ +const strftime = require('strftime'); +const database = require(`${appPath}/lib/database`); +const UserException = require(`${appPath}/lib/exceptions/userException`); + +module.exports = { + name: 'rpt-lcr', + async asyncData(ctx, params) { + if (!params.clientFk) + throw new UserException('No client id specified'); + + if (!params.companyFk) + throw new UserException('No company id specified'); + + return this.methods.fetchClient(params.clientFk, params.companyFk) + .then(([[client]]) => { + if (!client) + throw new UserException('No client data found'); + + return client; + }); + }, + created() { + if (this.locale) + this.$i18n.locale = this.locale; + + const embeded = []; + this.files.map(file => { + embeded[file] = `file://${__dirname + file}`; + }); + this.embeded = embeded; + }, + data() { + return { + files: ['/assets/images/signature.png'] + }; + }, + methods: { + fetchClient(clientFk, companyFk) { + return database.pool.query( + `SELECT + c.id clientId, + u.lang locale, + m.code mandateCode, + c.socialName AS clientName, + c.street AS clientStreet, + c.postcode AS clientPostCode, + c.city AS clientCity, + c.fi, + p.name AS clientProvince, + ct.country AS clientCountry, + s.name AS supplierName, + s.street AS supplierStreet, + sc.country AS supplierCountry, + s.postCode AS supplierPostCode, + s.city AS supplierCity, + sp.name AS supplierProvince + FROM client c + JOIN account.user u ON u.id = c.id + JOIN country ct ON ct.id = c.countryFk + LEFT JOIN mandate m ON m.clientFk = c.id + AND m.companyFk = ? AND m.finished IS NULL + LEFT JOIN supplier s ON s.id = m.companyFk + LEFT JOIN country sc ON sc.id = s.countryFk + LEFT JOIN province sp ON sp.id = s.provinceFk + LEFT JOIN province p ON p.id = c.provinceFk + WHERE (m.companyFk = ? OR m.companyFk IS NULL) AND c.id = ? + ORDER BY m.created DESC LIMIT 1`, [companyFk, companyFk, clientFk]); + }, + dated: () => { + return strftime('%d-%m-%Y', new Date()); + }, + toISOString: date => { + return strftime('%d-%m-%Y', date); + }, + }, + components: { + 'report-header': require('../report-header'), + 'report-footer': require('../report-footer'), + }, +}; diff --git a/print/report/rpt-lcr/locale.js b/print/report/rpt-lcr/locale.js new file mode 100644 index 000000000..740b6d8f2 --- /dev/null +++ b/print/report/rpt-lcr/locale.js @@ -0,0 +1,36 @@ +module.exports = { + messages: { + es: { + title: 'Autorisation pour débit', + Creditor: 'Tireur', + Deptor: 'Tiré', + Bank: 'Banque', + description: `Nous, soussignés, autorisons que tout effet émis par le tireur , susmentionné, et tiré sur notre Société, + soit automatiquement débité dans notre compte selon les suivants détails de domiciliation:`, + authorization: `Cette autorisation maintient sa validité jusqu'à à la réception de + nouvelles instructions.`, + supplier: { + name: 'Nom', + street: 'Adresse' + }, + bank: { + name: 'Nom', + street: 'Adresse', + account: 'RIB', + bankCode: 'Code banque', + agencyCode: 'Code agence', + accountNumber: 'Numero de compte', + ribKey: 'Clé RIB' + }, + client: { + name: 'Nom', + street: 'Adresse', + fi: 'Siren', + sign: 'Signature autorisée du tiré', + signDate: 'Lieu et date', + toCompleteByClient: 'À remplir par le débiteur', + }, + order: 'Ord. domiciliación {0}', + }, + }, +}; diff --git a/print/report/rpt-sepa-core/assets/css/style.css b/print/report/rpt-sepa-core/assets/css/style.css index 056a89b69..89d458332 100644 --- a/print/report/rpt-sepa-core/assets/css/style.css +++ b/print/report/rpt-sepa-core/assets/css/style.css @@ -10,3 +10,6 @@ padding: 0 50px !important } +.wide { + width: 900px !important +} diff --git a/print/report/rpt-sepa-core/index.html b/print/report/rpt-sepa-core/index.html index bc53c305c..db818f14a 100644 --- a/print/report/rpt-sepa-core/index.html +++ b/print/report/rpt-sepa-core/index.html @@ -17,7 +17,7 @@ {{$t('supplier.orderReference')}} - {{mandateCode}} + {{mandateCode}} {{$t('supplier.identifier')}} @@ -62,19 +62,19 @@ {{$t('client.name')}}
{{$t('client.accountHolder')}}
- {{clientName}} + {{clientName}} {{$t('client.street')}} - {{clientStreet}} + {{clientStreet}} {{$t('client.location')}} - {{clientPostCode}}, {{clientCity}} ({{clientProvince}}) + {{clientPostCode}}, {{clientCity}} ({{clientProvince}}) {{$t('client.country')}} - {{clientCountry}} + {{clientCountry}} {{$t('client.swift')}} @@ -82,17 +82,24 @@
- + {{$t('client.accountNumber')}} - +
- E - S - + {{clientCountryCode.substr(0, 1)}} + {{clientCountryCode.substr(1, 1)}} + +
+ + +
+ {{clientCountryCode.substr(0, 1)}} + {{clientCountryCode.substr(1, 1)}} +
@@ -123,15 +130,15 @@ {{$t('client.unique')}} - + {{$t('client.signLocation')}} - {{dated()}}, {{supplierProvince}} + {{dated()}}, {{supplierProvince}} {{$t('client.sign')}} - + diff --git a/print/report/rpt-sepa-core/index.js b/print/report/rpt-sepa-core/index.js index 66b60cf3e..63c54b907 100755 --- a/print/report/rpt-sepa-core/index.js +++ b/print/report/rpt-sepa-core/index.js @@ -1,9 +1,15 @@ +const fs = require('fs'); const strftime = require('strftime'); const database = require(`${appPath}/lib/database`); + +const template = fs.readFileSync(__dirname + '/index.html').toString(); +const lang = require('./locale.js'); + const UserException = require(`${appPath}/lib/exceptions/userException`); -module.exports = { +const rptSepaCore = { name: 'rpt-sepa-core', + async asyncData(ctx, params) { if (!params.clientFk) throw new UserException('No client id specified'); @@ -20,6 +26,7 @@ module.exports = { }); }, created() { + this.clientId = 101; if (this.locale) this.$i18n.locale = this.locale; }, @@ -37,6 +44,8 @@ module.exports = { c.city AS clientCity, p.name AS clientProvince, ct.country AS clientCountry, + ct.code AS clientCountryCode, + ct.ibanLength AS ibanLength, s.name AS supplierName, s.street AS supplierStreet, sc.country AS supplierCountry, @@ -46,13 +55,13 @@ module.exports = { FROM client c JOIN account.user u ON u.id = c.id JOIN country ct ON ct.id = c.countryFk - JOIN mandate m ON m.clientFk = c.id + LEFT JOIN mandate m ON m.clientFk = c.id AND m.companyFk = ? AND m.finished IS NULL - JOIN supplier s ON s.id = m.companyFk - JOIN country sc ON sc.id = s.countryFk - JOIN province sp ON sp.id = s.provinceFk + LEFT JOIN supplier s ON s.id = m.companyFk + LEFT JOIN country sc ON sc.id = s.countryFk + LEFT JOIN province sp ON sp.id = s.provinceFk LEFT JOIN province p ON p.id = c.provinceFk - WHERE m.companyFk = ? AND c.id = ? + WHERE (m.companyFk = ? OR m.companyFk IS NULL) AND c.id = ? ORDER BY m.created DESC LIMIT 1`, [companyFk, companyFk, clientFk]); }, dated: () => { @@ -66,4 +75,10 @@ module.exports = { 'report-header': require('../report-header'), 'report-footer': require('../report-footer'), }, + template: template, + i18n: lang, + props: ['test'] }; + + +module.exports = rptSepaCore; diff --git a/print/report/sepa-core/locale.js b/print/report/sepa-core/locale.js index 3577cb729..1c5f926a1 100644 --- a/print/report/sepa-core/locale.js +++ b/print/report/sepa-core/locale.js @@ -19,6 +19,6 @@ module.exports = { documentos correspondentes à Lei de Pagamentos, que deves preencher e reenviar-nos.`, conclusion: 'Obrigado pela atenção.' }, - }, + } }, };